-
83e8f7d: feat(mcp): decouple the stdio auto-start switch from the HTTP surface + surface the MCP endpoint on
os devboot (#3167)The MCP HTTP surface (
/api/v1/mcp) and the long-lived stdio transport used to share one env var:OS_MCP_SERVER_ENABLED=trueturned the HTTP surface on and silently auto-started the stdio transport — which bridges the raw metadata service- data engine with no per-request principal (unscoped). An operator setting it to "make sure MCP is on" got an unscoped transport as a side effect.
@objectstack/types— newresolveMcpStdioAutoStart(). Stdio auto-start is now its own switch,OS_MCP_STDIO_ENABLED(default off);OS_MCP_SERVER_ENABLEDgoverns only the HTTP surface. The legacyOS_MCP_SERVER_ENABLED=truetrigger still starts stdio for one release, flagged as deprecated.=falseis unchanged (it only ever gated HTTP).@objectstack/mcp—MCPServerPlugin.start()gates stdio on the new switch and logs a one-time deprecation warning when started via the legacy alias.@objectstack/cli—os devnow prints the MCP endpoint, the agent-skill URL, and a ready-to-pasteclaude mcp addcommand on boot (gated on the HTTP surface being on), so the "an agent operates the app it's building" loop is discoverable at dev time.create-objectstack— the blank scaffold README documents that the app is itself an MCP server (the serve side), distinct from the consume-side connector.
-
92f5f19: feat(runtime): sandbox budget is script CPU-time, not wall clock (ADR-0102 D1, #3295)
The QuickJS sandbox now meters each hook/action invocation against how much VM-active (CPU) time the body burns, not wall clock. Idle host-await time and a nested hook's own execution (which runs host-side while the caller's VM is parked) are no longer charged to the caller — so a slow/loaded host or a deep nested-write chain can't trip the budget while a script is merely waiting (the root cause of the #3259 CI flake). A separate, generous wall-clock ceiling (default 30s,
max(ceiling, cpuBudget)) remains as the backstop for a body stuck on a host call that never settles.What changes for consumers (behaviour, not API signatures):
- Meaning of the timeout knobs.
body.timeoutMs, thehookTimeoutMs/actionTimeoutMsrunner options, andOS_SANDBOX_HOOK_TIMEOUT_MS/OS_SANDBOX_ACTION_TIMEOUT_MSkeep their names, defaults (250ms / 5000ms), and precedence — but now bound CPU-time instead of wall-clock. In practice this only loosens legitimate slow/nested work; a runaway synchronous script is still cut at the same budget. - Error messages.
exceeded timeout of Nms→ eitherexceeded CPU budget of Nms(script burned its CPU budget) orexceeded wall-clock ceiling of Nms while awaiting host calls(stuck on a never-settling host call). Update any code/tests matching the old string.
New knobs (additive):
QuickJSScriptRunneroptionwallCeilingMsand envOS_SANDBOX_WALL_CEILING_MS— tune the wall ceiling (explicit option › env › 30s).resolveSandboxTimeoutMs(@objectstack/types) gains a'wallCeiling'kind.
Also fixes a latent init bug in the new accounting where the interrupt handler could fire during
installCtxand corrupt ctx marshalling. The nested-write integration suites now run at the stock 250ms budget (previously forced to 10s), which is itself the regression guard for the nested-charging fix. - Meaning of the timeout knobs.
-
32899e6: feat(runtime): env-overridable sandbox hook/action timeout default (#3259)
The QuickJS sandbox enforces a wall-clock deadline on every hook/action invocation (250ms hooks / 5000ms actions). Each invocation compiles a fresh WASM module, and a nested hook compiles ANOTHER one inside the parent's budget, so on a heavily loaded or slow host — an oversubscribed CI runner, constrained production hardware — that fixed VM-creation cost alone can trip the hook default even while the VM is still making progress. On CI this surfaced as an intermittent
hook '…' exceeded timeout of 250msflake on PRs that never touched the sandbox path.The per-invocation timeout DEFAULT is now resolvable from the environment via
resolveSandboxTimeoutMs(@objectstack/types), whichQuickJSScriptRunnerconsults, so an operator can raise the floor once, deployment-wide, instead of re-tuning every call site:OS_SANDBOX_HOOK_TIMEOUT_MS— default hook budget (ms)OS_SANDBOX_ACTION_TIMEOUT_MS— default action budget (ms)
Precedence is unchanged: an explicit
hookTimeoutMs/actionTimeoutMspassed to the runner still wins over the env var, and a body's own declaredtimeoutMsstill wins over the resolved default (the smaller of the explicit values). Only a positive integer is honored; unset / empty / non-numeric / non-positive keeps the built-in 250ms / 5000ms defaults, so behaviour is byte-for-byte unchanged when the vars are absent — production is unaffected unless it opts in.CI's Test Core now sets
OS_SANDBOX_HOOK_TIMEOUT_MS=10000so the shared-runner load flake can't recur; genuine hangs stay bounded by each test's own timeout.
- Updated dependencies [f972574]
- Updated dependencies [6289ec3]
- Updated dependencies [22013aa]
- Updated dependencies [3ad3dd5]
- Updated dependencies [8efa395]
- Updated dependencies [3a18b60]
- Updated dependencies [a8aa34c]
- Updated dependencies [a3823b2]
- Updated dependencies [43a3efb]
- Updated dependencies [524696a]
- Updated dependencies [bfa3c3f]
- Updated dependencies [5e3301d]
- Updated dependencies [46e876c]
- Updated dependencies [158aa14]
- Updated dependencies [62a2117]
- Updated dependencies [d2723e2]
- Updated dependencies [fefcd54]
- Updated dependencies [beaf2de]
- Updated dependencies [369eb6e]
- Updated dependencies [06ff734]
- Updated dependencies [b659111]
- Updated dependencies [5754a23]
- Updated dependencies [6c270a6]
- Updated dependencies [668dd17]
- Updated dependencies [8abf133]
- Updated dependencies [e0859b1]
- Updated dependencies [04ecd4e]
- Updated dependencies [4d5a892]
- Updated dependencies [16cebeb]
- Updated dependencies [86d30af]
- Updated dependencies [8923843]
- Updated dependencies [a2795f6]
- Updated dependencies [f16b492]
- Updated dependencies [4b6fde8]
- Updated dependencies [2018df9]
- Updated dependencies [fc5a3a2]
- Updated dependencies [8ff9210]
- @objectstack/spec@16.0.0
- Updated dependencies [6289ec3]
- Updated dependencies [8efa395]
- Updated dependencies [bfa3c3f]
- Updated dependencies [62a2117]
- Updated dependencies [06ff734]
- @objectstack/spec@16.0.0-rc.1
-
83e8f7d: feat(mcp): decouple the stdio auto-start switch from the HTTP surface + surface the MCP endpoint on
os devboot (#3167)The MCP HTTP surface (
/api/v1/mcp) and the long-lived stdio transport used to share one env var:OS_MCP_SERVER_ENABLED=trueturned the HTTP surface on and silently auto-started the stdio transport — which bridges the raw metadata service- data engine with no per-request principal (unscoped). An operator setting it to "make sure MCP is on" got an unscoped transport as a side effect.
@objectstack/types— newresolveMcpStdioAutoStart(). Stdio auto-start is now its own switch,OS_MCP_STDIO_ENABLED(default off);OS_MCP_SERVER_ENABLEDgoverns only the HTTP surface. The legacyOS_MCP_SERVER_ENABLED=truetrigger still starts stdio for one release, flagged as deprecated.=falseis unchanged (it only ever gated HTTP).@objectstack/mcp—MCPServerPlugin.start()gates stdio on the new switch and logs a one-time deprecation warning when started via the legacy alias.@objectstack/cli—os devnow prints the MCP endpoint, the agent-skill URL, and a ready-to-pasteclaude mcp addcommand on boot (gated on the HTTP surface being on), so the "an agent operates the app it's building" loop is discoverable at dev time.create-objectstack— the blank scaffold README documents that the app is itself an MCP server (the serve side), distinct from the consume-side connector.
-
92f5f19: feat(runtime): sandbox budget is script CPU-time, not wall clock (ADR-0102 D1, #3295)
The QuickJS sandbox now meters each hook/action invocation against how much VM-active (CPU) time the body burns, not wall clock. Idle host-await time and a nested hook's own execution (which runs host-side while the caller's VM is parked) are no longer charged to the caller — so a slow/loaded host or a deep nested-write chain can't trip the budget while a script is merely waiting (the root cause of the #3259 CI flake). A separate, generous wall-clock ceiling (default 30s,
max(ceiling, cpuBudget)) remains as the backstop for a body stuck on a host call that never settles.What changes for consumers (behaviour, not API signatures):
- Meaning of the timeout knobs.
body.timeoutMs, thehookTimeoutMs/actionTimeoutMsrunner options, andOS_SANDBOX_HOOK_TIMEOUT_MS/OS_SANDBOX_ACTION_TIMEOUT_MSkeep their names, defaults (250ms / 5000ms), and precedence — but now bound CPU-time instead of wall-clock. In practice this only loosens legitimate slow/nested work; a runaway synchronous script is still cut at the same budget. - Error messages.
exceeded timeout of Nms→ eitherexceeded CPU budget of Nms(script burned its CPU budget) orexceeded wall-clock ceiling of Nms while awaiting host calls(stuck on a never-settling host call). Update any code/tests matching the old string.
New knobs (additive):
QuickJSScriptRunneroptionwallCeilingMsand envOS_SANDBOX_WALL_CEILING_MS— tune the wall ceiling (explicit option › env › 30s).resolveSandboxTimeoutMs(@objectstack/types) gains a'wallCeiling'kind.
Also fixes a latent init bug in the new accounting where the interrupt handler could fire during
installCtxand corrupt ctx marshalling. The nested-write integration suites now run at the stock 250ms budget (previously forced to 10s), which is itself the regression guard for the nested-charging fix. - Meaning of the timeout knobs.
-
32899e6: feat(runtime): env-overridable sandbox hook/action timeout default (#3259)
The QuickJS sandbox enforces a wall-clock deadline on every hook/action invocation (250ms hooks / 5000ms actions). Each invocation compiles a fresh WASM module, and a nested hook compiles ANOTHER one inside the parent's budget, so on a heavily loaded or slow host — an oversubscribed CI runner, constrained production hardware — that fixed VM-creation cost alone can trip the hook default even while the VM is still making progress. On CI this surfaced as an intermittent
hook '…' exceeded timeout of 250msflake on PRs that never touched the sandbox path.The per-invocation timeout DEFAULT is now resolvable from the environment via
resolveSandboxTimeoutMs(@objectstack/types), whichQuickJSScriptRunnerconsults, so an operator can raise the floor once, deployment-wide, instead of re-tuning every call site:OS_SANDBOX_HOOK_TIMEOUT_MS— default hook budget (ms)OS_SANDBOX_ACTION_TIMEOUT_MS— default action budget (ms)
Precedence is unchanged: an explicit
hookTimeoutMs/actionTimeoutMspassed to the runner still wins over the env var, and a body's own declaredtimeoutMsstill wins over the resolved default (the smaller of the explicit values). Only a positive integer is honored; unset / empty / non-numeric / non-positive keeps the built-in 250ms / 5000ms defaults, so behaviour is byte-for-byte unchanged when the vars are absent — production is unaffected unless it opts in.CI's Test Core now sets
OS_SANDBOX_HOOK_TIMEOUT_MS=10000so the shared-runner load flake can't recur; genuine hangs stay bounded by each test's own timeout.
- Updated dependencies [f972574]
- Updated dependencies [22013aa]
- Updated dependencies [3ad3dd5]
- Updated dependencies [3a18b60]
- Updated dependencies [a8aa34c]
- Updated dependencies [a3823b2]
- Updated dependencies [43a3efb]
- Updated dependencies [524696a]
- Updated dependencies [5e3301d]
- Updated dependencies [46e876c]
- Updated dependencies [158aa14]
- Updated dependencies [d2723e2]
- Updated dependencies [fefcd54]
- Updated dependencies [beaf2de]
- Updated dependencies [369eb6e]
- Updated dependencies [b659111]
- Updated dependencies [5754a23]
- Updated dependencies [6c270a6]
- Updated dependencies [668dd17]
- Updated dependencies [8abf133]
- Updated dependencies [e0859b1]
- Updated dependencies [04ecd4e]
- Updated dependencies [4d5a892]
- Updated dependencies [16cebeb]
- Updated dependencies [86d30af]
- Updated dependencies [8923843]
- Updated dependencies [a2795f6]
- Updated dependencies [f16b492]
- Updated dependencies [4b6fde8]
- Updated dependencies [2018df9]
- Updated dependencies [fc5a3a2]
- @objectstack/spec@16.0.0-rc.0
- @objectstack/spec@15.1.1
- f531a26: Generic pinyin search recall (#2486, ADR-0098): a locale-gated
OS_SEARCH_PINYIN_ENABLEDswitch (auto-on when the stack configures anyzh-*locale) provisions a hidden__searchcompanion column for each object's display/name field at compile time, the new@objectstack/plugin-pinyin-searchfills it with full pinyin + initials ("张伟" → "zhangwei zw") on before-save (plus boot backfill and arebuildSearchCompanionreconcile entry), and$searchORs the column in at query time — so lookup pickers, list quick-search and ⌘K transparently matchzhangwei/zwagainst CJK names. Purely additive:resolveSearchFields,searchableFields, drivers and non-Chinese deployments are untouched; FLS restricted / secret / PII fields never feed the companion.
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [3fe9df1]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [4109153]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [627f225]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- Updated dependencies [f531a26]
- @objectstack/spec@15.1.0
- Updated dependencies [28b7c28]
- Updated dependencies [13749ec]
- Updated dependencies [e62c233]
- Updated dependencies [ed61c9b]
- Updated dependencies [31d04d4]
- @objectstack/spec@15.0.0
- Updated dependencies [16b4bf6]
- Updated dependencies [16b4bf6]
- Updated dependencies [10e8983]
- Updated dependencies [607aaf4]
- Updated dependencies [bb71321]
- @objectstack/spec@14.8.0
-
824a395: Tenancy mode as a first-class capability + a single owner for the user→membership lifecycle (ADR-0093, Phases 1–3).
Tenancy service (
@objectstack/types,@objectstack/plugin-auth). plugin-auth registers atenancyservice — the single source of truth for tenancy mode (mode,isolationActive,requested,degraded,defaultOrgId()). It derivesisolationActivefrom the presence of theorg-scopingservice, so the enterprise@objectstack/organizationspackage lights it up with no change. SecurityPlugin's RLS-strip gate and/auth/config(features.multiOrgEnabled, newfeatures.degradedTenancy) now consume it instead of re-deriving the fact.Fail-fast on degraded tenancy (
@objectstack/cli, ADR-0093 D5).OS_MULTI_ORG_ENABLED=truewithout a working@objectstack/organizationsnow refuses to boot — a deployment that requested tenant isolation must not serve traffic without it (tenant RLS would be silently stripped). Escape hatch:OS_ALLOW_DEGRADED_TENANCY=1boots in an explicitly branded degraded state (features.degradedTenancy). This may halt upgrades for deployments that were silently degraded — intentionally; install the enterprise package or set the escape hatch.Membership reconciler (
@objectstack/plugin-auth, ADR-0093 D1–D3, D6). A single reconciler composed into better-auth'suser.create.afterhook owns the "every new user gets a membership" invariant across all creation paths (signup, admin create-user, import, SSO JIT). It yields to any existing membership (host hooks win), honors a newmembershipPolicy: 'auto' | 'invite-only'auth option (defaultauto), and binds only to an unambiguous target org (single-org default; multi-org binds nothing). A bounded, idempotentkernel:readybackfill covers pre-existing member-less users in single-org/auto deployments (OS_SKIP_MEMBERSHIP_BACKFILL=1to opt out). The endpoint-level create-user bind from #2882 now delegates to this shared reconciler.New env vars:
OS_ALLOW_DEGRADED_TENANCY,OS_SKIP_MEMBERSHIP_BACKFILL. New docs: Deployment → Tenancy Modes & Membership.
- Updated dependencies [d6a72eb]
- @objectstack/spec@14.7.0
- Updated dependencies [609cb13]
- Updated dependencies [ce6d151]
- @objectstack/spec@14.6.0
- Updated dependencies [526805e]
- Updated dependencies [d79ca07]
- Updated dependencies [33ebd34]
- Updated dependencies [c044f08]
- Updated dependencies [01274eb]
- @objectstack/spec@14.5.0
- Updated dependencies [7953832]
- Updated dependencies [82e745e]
- Updated dependencies [f3035bd]
- Updated dependencies [82c0d94]
- Updated dependencies [7449476]
- @objectstack/spec@14.4.0
- Updated dependencies [2a71f48]
- Updated dependencies [02f6af4]
- Updated dependencies [c1064f1]
- @objectstack/spec@14.3.0
- Updated dependencies [ac8f029]
- Updated dependencies [4ab9958]
- @objectstack/spec@14.2.0
- Updated dependencies [5a8465f]
- Updated dependencies [7f8620b]
- Updated dependencies [82ba3a6]
- @objectstack/spec@14.1.0
- Updated dependencies [0a8e685]
- Updated dependencies [afa8115]
- Updated dependencies [80f12ca]
- Updated dependencies [e2fa074]
- Updated dependencies [23c8668]
- Updated dependencies [29f017d]
- Updated dependencies [216fa9a]
- Updated dependencies [6c22b12]
- @objectstack/spec@14.0.0
-
57b89b4: feat(mcp): the MCP surface is now default-on — a core platform capability (#2698)
/api/v1/mcpis served (and advertised in/discovery) out of the box; the OAuth 2.1 authorization track and Dynamic Client Registration follow it, so a fresh deployment is connectable by any MCP client with zero configuration. Operators opt OUT withOS_MCP_SERVER_ENABLED=false.- New single decision point
isMcpServerEnabled()in@objectstack/types(default on; explicitfalse/0/off/nodisables). The runtime dispatcher's/mcproute gate, the CLI's MCP plugin auto-load, the REST/discoveryadvertisement, and the auth service's OAuth/DCR follow-defaults all delegate to it — the served route, the advertised route, and the authorization track can never disagree. - The env var is now effectively tri-state: unset → HTTP surface on;
explicit
true→ additionally auto-start the long-lived stdio transport at boot (unchanged, still opt-in — a default must not claim the process's stdin/stdout); explicitfalse→ everything off, fail-closed (404, no metadata, no DCR). - The OAuth 2.1 TLS rule is unaffected: on a plain-HTTP non-loopback origin the OAuth track stays dark and the default-on surface remains API-key-only.
- New single decision point
- Updated dependencies [6d83431]
- Updated dependencies [01917c2]
- Updated dependencies [b271691]
- Updated dependencies [a5a1e41]
- Updated dependencies [466adf6]
- Updated dependencies [5be00c3]
- Updated dependencies [466adf6]
- Updated dependencies [2bee609]
- Updated dependencies [fc7e7f7]
- @objectstack/spec@13.0.0
- Updated dependencies [6cebf22]
- @objectstack/spec@12.6.0
- Updated dependencies [8b3d363]
- @objectstack/spec@12.5.0
- Updated dependencies [60dc3ba]
- @objectstack/spec@12.4.0
- Updated dependencies [e7eceec]
- @objectstack/spec@12.3.0
- Updated dependencies [fce8ff4]
- Updated dependencies [3962023]
- Updated dependencies [2bb193d]
- Updated dependencies [0426d27]
- Updated dependencies [da807f7]
- @objectstack/spec@12.2.0
- Updated dependencies [93e6d02]
- @objectstack/spec@12.1.0
- Updated dependencies [a8df396]
- Updated dependencies [e695fe0]
- Updated dependencies [7c09621]
- Updated dependencies [7709db4]
- Updated dependencies [2082109]
- Updated dependencies [7c09621]
- Updated dependencies [9860de4]
- Updated dependencies [069c205]
- @objectstack/spec@12.0.0
- Updated dependencies [6a9397e]
- Updated dependencies [c0efe5d]
- @objectstack/spec@11.10.0
- Updated dependencies [d3595d9]
- @objectstack/spec@11.9.0
- @objectstack/spec@11.8.0
- Updated dependencies [5178906]
- @objectstack/spec@11.7.0
- @objectstack/spec@11.6.0
- Updated dependencies [6ee4f04]
- Updated dependencies [c1e3a65]
- @objectstack/spec@11.5.0
- Updated dependencies [5821c51]
- Updated dependencies [a0fce3f]
- @objectstack/spec@11.4.0
- Updated dependencies [58e8e31]
- Updated dependencies [b4a5df0]
- @objectstack/spec@11.3.0
- Updated dependencies [d0f4b13]
- Updated dependencies [302bdab]
- @objectstack/spec@11.2.0
-
fdb41c0: Remove ObjectStack's own legacy env-var aliases (11.0); ecosystem-standard names stay.
The framework's renamed env vars no longer accept their old ObjectStack names — rename them:
removed legacy name use OS_MULTI_TENANTOS_MULTI_ORG_ENABLEDOBJECTSTACK_METADATA_WRITABLEOS_METADATA_WRITABLEOS_AUTH_BASE_URL,AUTH_BASE_URLOS_AUTH_URLEcosystem-standard names are NOT removed — they remain accepted (and no longer emit a deprecation warning, since they are permanent conventions, not legacy):
DATABASE_URL,AUTH_SECRET,BETTER_AUTH_SECRET,BETTER_AUTH_URL,PORT,CORS_*,LOG_LEVEL,ROOT_DOMAIN,MCP_SERVER_*. The genericreadEnvWithDeprecationhelper is unchanged.
- Updated dependencies [ecf193f]
- Updated dependencies [51bec81]
- Updated dependencies [3e593a7]
- Updated dependencies [63d5403]
- @objectstack/spec@11.1.0
-
795b6d1: refactor: single-source the multi-org (
OS_MULTI_ORG_ENABLED) flag resolution"Is this deployment multi-org?" was resolved in 10 places across 8 packages with three subtly different inline expressions:
- the canonical
String(readEnvWithDeprecation('OS_MULTI_ORG_ENABLED', 'OS_MULTI_TENANT') ?? 'false').toLowerCase() !== 'false'(objectql registry, plugin-dev, runtime app-plugin, cli serve/verify, cloud-connection), - a redundant
env.OS_MULTI_ORG_ENABLED !== undefined ? … : …variant in plugin-auth (auth-manager/auth/configfeatures +beforeCreateOrganizationguard), - and a bare
process.env.OS_MULTI_ORG_ENABLED ?? process.env.OS_MULTI_TENANTread in the SQL driver'sisMultiTenantMode()— which skipped theOS_MULTI_TENANTdeprecation warning every other site emits.
Because the SQL driver computed the mode independently of the auth/security layer, the driver's tenant-audit gate and the rest of the system could in principle disagree about whether tenant isolation is active.
Introduces
resolveMultiOrgEnabled()in@objectstack/types(next toreadEnvWithDeprecation, the natural leaf dependency) as the single source of truth, and routes all 10 sites through it.@objectstack/driver-sqlgains a direct@objectstack/typesdependency (previously it readprocess.envdirectly).Behaviour is unchanged everywhere except the SQL driver, which now also emits the one-shot
OS_MULTI_TENANT-is-deprecated warning — consistent with every other site. This mirrors theresolveAuthzContextsingle-source pattern in@objectstack/core. Follow-up (not in this change): a lint gate forbidding new inline reads of these env vars outside the helper. - the canonical
-
Updated dependencies [ab5718a]
-
Updated dependencies [4845c12]
-
Updated dependencies [c1a754a]
-
Updated dependencies [6fbe91f]
-
Updated dependencies [715d667]
-
Updated dependencies [5eef4cf]
-
Updated dependencies [72759e1]
-
Updated dependencies [6c4fbd9]
-
Updated dependencies [ef3ed67]
-
Updated dependencies [cd51229]
-
Updated dependencies [7697a0e]
-
Updated dependencies [e7e04f1]
-
Updated dependencies [cfd5ac4]
-
Updated dependencies [2be5c1f]
-
Updated dependencies [ad143ce]
-
Updated dependencies [5c4a8c8]
-
Updated dependencies [3afaeed]
-
Updated dependencies [8801c02]
-
Updated dependencies [3d04e06]
-
Updated dependencies [4a84c98]
-
Updated dependencies [d980f0d]
-
Updated dependencies [a658523]
-
Updated dependencies [82ff91c]
-
Updated dependencies [638f472]
- @objectstack/spec@11.0.0
- @objectstack/spec@10.3.0
- Updated dependencies [b496498]
- @objectstack/spec@10.2.0
- Updated dependencies [49da36e]
- Updated dependencies [ac79f16]
- @objectstack/spec@10.1.0
- Updated dependencies [d7ff626]
- Updated dependencies [2a1b16b]
- Updated dependencies [e16f2a8]
- Updated dependencies [e411a82]
- Updated dependencies [a581385]
- Updated dependencies [220ce5b]
- Updated dependencies [3efe334]
- Updated dependencies [feead7e]
- Updated dependencies [6ca20b3]
- Updated dependencies [5f875fe]
- Updated dependencies [b469950]
- @objectstack/spec@10.0.0
- Updated dependencies [e7f6539]
- Updated dependencies [2365d07]
- Updated dependencies [6595b53]
- Updated dependencies [fa8964d]
- Updated dependencies [36138c7]
- Updated dependencies [a8e4f3b]
- Updated dependencies [4c213c2]
- Updated dependencies [2afb612]
- @objectstack/spec@9.11.0
- Updated dependencies [db02bd5]
- Updated dependencies [641675d]
- Updated dependencies [94e9040]
- Updated dependencies [1f88fd9]
- Updated dependencies [1f88fd9]
- @objectstack/spec@9.10.0
- @objectstack/spec@9.9.1
- Updated dependencies [84249a4]
- Updated dependencies [11af299]
- Updated dependencies [d5774b5]
- Updated dependencies [134043a]
- Updated dependencies [90108e0]
- Updated dependencies [9afeb2d]
- Updated dependencies [6bec07e]
- Updated dependencies [601cc11]
- Updated dependencies [575448d]
- @objectstack/spec@9.9.0
- Updated dependencies [97c55b3]
- Updated dependencies [1b1f490]
- @objectstack/spec@9.8.0
- @objectstack/spec@9.7.0
- Updated dependencies [d1e930a]
- Updated dependencies [71578f2]
- Updated dependencies [5e3a301]
- Updated dependencies [5db2742]
- @objectstack/spec@9.6.0
- Updated dependencies [ee72aae]
- @objectstack/spec@9.5.1
- Updated dependencies [d08551c]
- Updated dependencies [707aeed]
- Updated dependencies [7a103d4]
- Updated dependencies [4b01250]
- @objectstack/spec@9.5.0
- Updated dependencies [060467a]
- Updated dependencies [0856476]
- Updated dependencies [b678d8c]
- Updated dependencies [b678d8c]
- Updated dependencies [b678d8c]
- @objectstack/spec@9.4.0
- Updated dependencies [1ada658]
- Updated dependencies [3219191]
- Updated dependencies [290f631]
- Updated dependencies [50b7b47]
- Updated dependencies [f15d6f6]
- Updated dependencies [f8684ea]
- Updated dependencies [b4765be]
- @objectstack/spec@9.3.0
- Updated dependencies [2f57b75]
- Updated dependencies [2f57b75]
- @objectstack/spec@9.2.0
- Updated dependencies [b9062c9]
- @objectstack/spec@9.1.0
- Updated dependencies [1817845]
- @objectstack/spec@9.0.1
- Updated dependencies [4c3f693]
- Updated dependencies [0bf39f1]
- Updated dependencies [f533f42]
- Updated dependencies [1c83ee8]
- @objectstack/spec@9.0.0
- @objectstack/spec@8.0.1
- Updated dependencies [a46c017]
- Updated dependencies [b990b89]
- Updated dependencies [99111ec]
- Updated dependencies [d5a8161]
- Updated dependencies [5cf1f1b]
- Updated dependencies [9ef89d4]
- Updated dependencies [3306d2f]
- Updated dependencies [bc44195]
- Updated dependencies [9e2e229]
- @objectstack/spec@8.0.0
- @objectstack/spec@7.9.0
- Updated dependencies [06f2bbb]
- Updated dependencies [36719db]
- Updated dependencies [424ab26]
- @objectstack/spec@7.8.0
- Updated dependencies [b391955]
- Updated dependencies [f06b64e]
- Updated dependencies [023bf93]
- @objectstack/spec@7.7.0
- Updated dependencies [955d4c8]
- Updated dependencies [c4a4cbd]
- Updated dependencies [b046ec2]
- Updated dependencies [2170ad9]
- Updated dependencies [02d6359]
- Updated dependencies [7648242]
- Updated dependencies [8fa1e7f]
- Updated dependencies [55866f5]
- Updated dependencies [60f9c45]
- @objectstack/spec@7.6.0
- @objectstack/spec@7.5.0
- @objectstack/spec@7.4.1
- Updated dependencies [23c7107]
- Updated dependencies [c72daad]
- Updated dependencies [f115182]
- Updated dependencies [2faf9f2]
- Updated dependencies [2faf9f2]
- Updated dependencies [2faf9f2]
- Updated dependencies [58b450b]
- Updated dependencies [82eb6cf]
- Updated dependencies [13d8653]
- Updated dependencies [ff3d006]
- Updated dependencies [5e831de]
- @objectstack/spec@7.4.0
- Updated dependencies [5e7c554]
- @objectstack/spec@7.3.0
-
9096dfe:
OS_env-var prefix migration (issue #1382).All ObjectStack-owned environment variables now use the
OS_prefix. Legacy names still work for one release and emit a one-shot deprecation warning via the newreadEnvWithDeprecation()helper in@objectstack/types.Renamed (with legacy fallback):
New Legacy (deprecated) OS_AUTH_SECRETAUTH_SECRET,BETTER_AUTH_SECRETOS_AUTH_URLAUTH_BASE_URL,BETTER_AUTH_URL,OS_AUTH_BASE_URLOS_PORTPORTOS_DATABASE_URLDATABASE_URLOS_ROOT_DOMAINROOT_DOMAINOS_MULTI_ORG_ENABLEDOS_MULTI_TENANTOS_CORS_ENABLEDCORS_ENABLEDOS_CORS_ORIGINCORS_ORIGINOS_CORS_CREDENTIALSCORS_CREDENTIALSOS_CORS_MAX_AGECORS_MAX_AGEOS_AI_MODELAI_MODELOS_MCP_SERVER_ENABLEDMCP_SERVER_ENABLEDOS_MCP_SERVER_NAMEMCP_SERVER_NAMEOS_MCP_SERVER_TRANSPORTMCP_SERVER_TRANSPORTOS_NODE_IDOBJECTSTACK_NODE_IDOS_METADATA_WRITABLEOBJECTSTACK_METADATA_WRITABLEOS_DEV_CRYPTO_KEYOBJECTSTACK_DEV_CRYPTO_KEYOS_HOMEOBJECTSTACK_HOMEMigration: rename in your
.env. Legacy names continue to work this release and will be removed in a future major. Industry-standard names (NODE_ENV,HOME,OPENAI_API_KEY,TURSO_*, OAuth*_CLIENT_ID/SECRET,RESEND_API_KEY,POSTMARK_TOKEN,AI_GATEWAY_*,SMTP_*) are NOT renamed.- @objectstack/spec@7.2.1
- @objectstack/spec@7.2.0
- Updated dependencies [47a92f4]
- @objectstack/spec@7.1.0
- Updated dependencies [74470ad]
- Updated dependencies [d29617e]
- Updated dependencies [dc72172]
- @objectstack/spec@7.0.0
- @objectstack/spec@6.9.0
- @objectstack/spec@6.8.1
- Updated dependencies [6e88f77]
- Updated dependencies [c8b9f57]
- @objectstack/spec@6.8.0
- @objectstack/spec@6.7.1
- Updated dependencies [430067b]
- Updated dependencies [4f9e9d4]
- @objectstack/spec@6.7.0
- Updated dependencies [a49cfc2]
- @objectstack/spec@6.6.0
- @objectstack/spec@6.5.1
- @objectstack/spec@6.5.0
- Updated dependencies [f8651cc]
- Updated dependencies [f8651cc]
- Updated dependencies [0bf6f9a]
- @objectstack/spec@6.4.0
- @objectstack/spec@6.3.0
- Updated dependencies [b4c74a9]
- @objectstack/spec@6.2.0
- @objectstack/spec@6.1.1
- Updated dependencies [93c0589]
- @objectstack/spec@6.1.0
- Updated dependencies [629a716]
- Updated dependencies [dbc4f7d]
- Updated dependencies [944f187]
- @objectstack/spec@6.0.0
- Updated dependencies [bab2b20]
- Updated dependencies [fa011d8]
- Updated dependencies [b806f58]
- @objectstack/spec@5.2.0
- Updated dependencies [75f4ee6]
- Updated dependencies [823d559]
- @objectstack/spec@5.1.0
- Updated dependencies [2f9073a]
- @objectstack/spec@5.0.0
- Updated dependencies [2869891]
- @objectstack/spec@4.2.0
- @objectstack/spec@4.1.1
- Updated dependencies [2108c30]
- Updated dependencies [23db640]
- @objectstack/spec@4.1.0
- 15e0df6: chore: unify all package versions to a single patch release
- Updated dependencies [15e0df6]
- @objectstack/spec@4.0.5
- Updated dependencies [326b66b]
- @objectstack/spec@4.0.4
- @objectstack/spec@4.0.3
- Updated dependencies [5f659e9]
- @objectstack/spec@4.0.2
- Updated dependencies [f08ffc3]
- Updated dependencies [e0b0a78]
- @objectstack/spec@4.0.0
- @objectstack/spec@3.3.1
- @objectstack/spec@3.3.0
- @objectstack/spec@3.2.9
- @objectstack/spec@3.2.8
- @objectstack/spec@3.2.7
- @objectstack/spec@3.2.6
- @objectstack/spec@3.2.5
- @objectstack/spec@3.2.4
- @objectstack/spec@3.2.3
- Updated dependencies [46defbb]
- @objectstack/spec@3.2.2
- Updated dependencies [850b546]
- @objectstack/spec@3.2.1
- Updated dependencies [5901c29]
- @objectstack/spec@3.2.0
- Updated dependencies [953d667]
- @objectstack/spec@3.1.1
- Updated dependencies [0088830]
- @objectstack/spec@3.1.0
- Updated dependencies [92d9d99]
- @objectstack/spec@3.0.11
- Updated dependencies [d1e5d31]
- @objectstack/spec@3.0.10
- Updated dependencies [15e0df6]
- @objectstack/spec@3.0.9
- Updated dependencies [5a968a2]
- @objectstack/spec@3.0.8
- Updated dependencies [0119bd7]
- Updated dependencies [5426bdf]
- @objectstack/spec@3.0.7
- Updated dependencies [5df254c]
- @objectstack/spec@3.0.6
- Updated dependencies [23a4a68]
- @objectstack/spec@3.0.5
- Updated dependencies [d738987]
- @objectstack/spec@3.0.4
- c7267f6: Patch release for maintenance updates and improvements.
- Updated dependencies [c7267f6]
- @objectstack/spec@3.0.3
- Updated dependencies [28985f5]
- @objectstack/spec@3.0.2
- Updated dependencies [389725a]
- @objectstack/spec@3.0.1
- Release v3.0.0 — unified version bump for all ObjectStack packages.
- Updated dependencies
- @objectstack/spec@3.0.0
- Updated dependencies
- @objectstack/spec@2.0.7
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@2.0.6
- Updated dependencies
- @objectstack/spec@2.0.5
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@2.0.4
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@2.0.3
- Updated dependencies [1db8559]
- @objectstack/spec@2.0.2
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@2.0.1
- Updated dependencies [38e5dd5]
- Updated dependencies [38e5dd5]
- @objectstack/spec@2.0.0
- Updated dependencies
- @objectstack/spec@1.0.12
- @objectstack/spec@1.0.11
- @objectstack/spec@1.0.10
- @objectstack/spec@1.0.9
- @objectstack/spec@1.0.8
- @objectstack/spec@1.0.7
- Updated dependencies [a7f7b9d]
- @objectstack/spec@1.0.6
- b1d24bd: refactor: migrate build system from tsc to tsup for faster builds
- Replaced
tscwithtsup(using esbuild) across all packages - Added shared
tsup.config.tsin workspace root - Added
tsupas workspace dev dependency - significantly improved build performance
- Replaced
- Updated dependencies [b1d24bd]
- @objectstack/spec@1.0.5
- @objectstack/spec@1.0.4
- @objectstack/spec@1.0.3
-
a0a6c85: Infrastructure and development tooling improvements
- Add changeset configuration for automated version management
- Add comprehensive GitHub Actions workflows (CI, CodeQL, linting, releases)
- Add development configuration files (.cursorrules, .github/prompts)
- Add documentation files (ARCHITECTURE.md, CONTRIBUTING.md, workflows docs)
- Update test script configuration in package.json
- Add @objectstack/cli to devDependencies for better development experience
-
109fc5b: Unified patch release to align all package versions.
-
Updated dependencies [a0a6c85]
-
Updated dependencies [109fc5b]
- @objectstack/spec@1.0.2
- @objectstack/spec@1.0.1
- Major version release for ObjectStack Protocol v1.0.
- Stabilized Protocol Definitions
- Enhanced Runtime Plugin Support
- Fixed Type Compliance across Monorepo
- Updated dependencies
- @objectstack/spec@1.0.0
- Updated dependencies
- @objectstack/spec@0.9.2
- Patch release for maintenance and stability improvements. All packages updated with unified versioning.
- Updated dependencies
- @objectstack/spec@0.9.1
- Updated dependencies [555e6a7]
- @objectstack/spec@0.8.2
- @objectstack/spec@0.8.1
-
This release includes a major upgrade to the core validation engine (Zod v4) and aligns all protocol definitions with stricter type safety.
- Updated dependencies
- @objectstack/spec@1.0.0
- fb41cc0: Patch release: Updated documentation and JSON schemas
- Updated dependencies [fb41cc0]
- @objectstack/spec@0.7.2
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@0.7.1
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@0.6.1
-
b2df5f7: Unified version bump to 0.5.0
- Standardized all package versions to 0.5.0 across the monorepo
- Fixed driver-memory package.json paths for proper module resolution
- Ensured all packages are in sync for the 0.5.0 release
- Updated dependencies [b2df5f7]
- @objectstack/spec@0.6.0
- Unify all package versions to 0.4.2
- Updated dependencies
- @objectstack/spec@0.4.2
-
Version synchronization and dependency updates
- Synchronized plugin-msw version to 0.4.1
- Updated runtime peer dependency versions to ^0.4.1
- Fixed internal dependency version mismatches
-
Updated dependencies
- @objectstack/spec@0.4.1
- Release version 0.4.0
-
Workflow and configuration improvements
- Enhanced GitHub workflows for CI, release, and PR automation
- Added comprehensive prompt templates for different protocol areas
- Improved project documentation and automation guides
- Updated changeset configuration
- Added cursor rules for better development experience
-
Updated dependencies
- @objectstack/spec@0.3.3
- Patch release for maintenance and stability improvements
- Updated dependencies
- @objectstack/spec@0.3.2
- @objectstack/spec@0.3.1
- Updated dependencies
- @objectstack/spec@1.0.0
-
Initial release of ObjectStack Protocol & Specification packages
This is the first public release of the ObjectStack ecosystem, providing:
- Core protocol definitions and TypeScript types
- ObjectQL query language and runtime
- Memory driver for in-memory data storage
- Client library for interacting with ObjectStack
- Hono server plugin for REST API endpoints
- Complete JSON schema generation for all specifications
- Updated dependencies
- @objectstack/spec@0.2.0
- Remove debug logs from registry and protocol modules
- Updated dependencies
- @objectstack/spec@0.1.2