From 4491690107870849e2dd70fe6a411fa904fba8f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Aug 2026 03:20:50 +0000 Subject: [PATCH] chore(release): version packages --- .changeset/agent-lane-retrieval-0415.md | 31 --- .changeset/agent-substrate-0416.md | 39 ---- .changeset/agent-tools-service-registry.md | 7 - .changeset/ai-harness-agent-frames.md | 20 -- .changeset/ai-in-app-tool-loop.md | 14 -- .changeset/ai-search-fts5.md | 10 - .changeset/ai-search-schema-scoping.md | 17 -- .changeset/atproto-projection-and-snapshot.md | 17 -- .changeset/attachment-previews.md | 5 - .changeset/billing-read-only-0418.md | 35 ---- .changeset/blob-transfer-queue.md | 5 - .changeset/brain-published-0415.md | 16 -- .changeset/bridge-origin-xnet-fyi.md | 9 - .changeset/bridge-write-consent.md | 10 - .changeset/chunked-blob-transfer.md | 6 - .changeset/connect-npx-launcher.md | 5 - .changeset/daily-driver-bridge-streaming.md | 15 -- .changeset/late-ontology-promotion.md | 8 - .changeset/mcp-query-schema-filter.md | 13 -- .changeset/olive-donkeys-smile.md | 9 - .changeset/olive-lions-shake.md | 31 --- .changeset/point-and-change-lanes.md | 16 -- .changeset/relationship-primitives-0422.md | 25 --- .changeset/screen-recording-schemas.md | 20 -- .changeset/social-graph-atlas-0419.md | 22 -- .changeset/tenant-roster-and-seats.md | 5 - .changeset/tidy-moons-shake.md | 27 --- .changeset/tidy-pugs-shake.md | 8 - .changeset/wild-moons-search.md | 20 -- .changeset/xnet-from-inside-coding-agent.md | 24 --- apps/cloud/CHANGELOG.md | 11 + apps/cloud/package.json | 2 +- apps/demos/CHANGELOG.md | 10 + apps/demos/package.json | 2 +- apps/electron/CHANGELOG.md | 4 + apps/electron/package.json | 2 +- packages/abuse/CHANGELOG.md | 8 + packages/abuse/package.json | 2 +- packages/brain/CHANGELOG.md | 35 ++++ packages/brain/package.json | 2 +- packages/cli/CHANGELOG.md | 139 +++++++++++++ packages/cli/package.json | 2 +- packages/comms/CHANGELOG.md | 9 + packages/comms/package.json | 2 +- packages/core/CHANGELOG.md | 2 + packages/core/package.json | 2 +- packages/crypto/CHANGELOG.md | 7 + packages/crypto/package.json | 2 +- packages/dashboard/CHANGELOG.md | 10 + packages/dashboard/package.json | 2 +- packages/data-bridge/CHANGELOG.md | 10 + packages/data-bridge/package.json | 2 +- packages/data/CHANGELOG.md | 179 ++++++++++++++++ packages/data/package.json | 2 +- packages/devkit/CHANGELOG.md | 87 ++++++++ packages/devkit/package.json | 2 +- packages/entitlements/CHANGELOG.md | 39 ++++ packages/entitlements/package.json | 2 +- packages/history/CHANGELOG.md | 9 + packages/history/package.json | 2 +- packages/identity/CHANGELOG.md | 42 ++++ packages/identity/package.json | 2 +- packages/labs/CHANGELOG.md | 8 + packages/labs/package.json | 2 +- packages/licenses/CHANGELOG.md | 7 + packages/licenses/package.json | 2 +- packages/maps/CHANGELOG.md | 7 + packages/maps/package.json | 2 +- packages/meetings/CHANGELOG.md | 8 + packages/meetings/package.json | 2 +- packages/plugins/CHANGELOG.md | 196 ++++++++++++++++++ packages/plugins/package.json | 2 +- packages/react/CHANGELOG.md | 58 ++++++ packages/react/package.json | 2 +- packages/recordings/CHANGELOG.md | 10 + packages/recordings/package.json | 2 +- packages/runtime/CHANGELOG.md | 38 ++++ packages/runtime/package.json | 2 +- packages/server/CHANGELOG.md | 10 + packages/server/package.json | 2 +- packages/social/CHANGELOG.md | 8 + packages/social/package.json | 2 +- packages/sqlite/CHANGELOG.md | 34 +++ packages/sqlite/package.json | 2 +- packages/storage/CHANGELOG.md | 13 ++ packages/storage/package.json | 2 +- packages/sync/CHANGELOG.md | 24 +++ packages/sync/package.json | 2 +- packages/unreal/CHANGELOG.md | 7 + packages/unreal/package.json | 2 +- packages/workbench/CHANGELOG.md | 20 ++ packages/workbench/package.json | 2 +- 92 files changed, 1080 insertions(+), 520 deletions(-) delete mode 100644 .changeset/agent-lane-retrieval-0415.md delete mode 100644 .changeset/agent-substrate-0416.md delete mode 100644 .changeset/agent-tools-service-registry.md delete mode 100644 .changeset/ai-harness-agent-frames.md delete mode 100644 .changeset/ai-in-app-tool-loop.md delete mode 100644 .changeset/ai-search-fts5.md delete mode 100644 .changeset/ai-search-schema-scoping.md delete mode 100644 .changeset/atproto-projection-and-snapshot.md delete mode 100644 .changeset/attachment-previews.md delete mode 100644 .changeset/billing-read-only-0418.md delete mode 100644 .changeset/blob-transfer-queue.md delete mode 100644 .changeset/brain-published-0415.md delete mode 100644 .changeset/bridge-origin-xnet-fyi.md delete mode 100644 .changeset/bridge-write-consent.md delete mode 100644 .changeset/chunked-blob-transfer.md delete mode 100644 .changeset/connect-npx-launcher.md delete mode 100644 .changeset/daily-driver-bridge-streaming.md delete mode 100644 .changeset/late-ontology-promotion.md delete mode 100644 .changeset/mcp-query-schema-filter.md delete mode 100644 .changeset/olive-donkeys-smile.md delete mode 100644 .changeset/olive-lions-shake.md delete mode 100644 .changeset/point-and-change-lanes.md delete mode 100644 .changeset/relationship-primitives-0422.md delete mode 100644 .changeset/screen-recording-schemas.md delete mode 100644 .changeset/social-graph-atlas-0419.md delete mode 100644 .changeset/tenant-roster-and-seats.md delete mode 100644 .changeset/tidy-moons-shake.md delete mode 100644 .changeset/tidy-pugs-shake.md delete mode 100644 .changeset/wild-moons-search.md delete mode 100644 .changeset/xnet-from-inside-coding-agent.md create mode 100644 packages/recordings/CHANGELOG.md create mode 100644 packages/workbench/CHANGELOG.md diff --git a/.changeset/agent-lane-retrieval-0415.md b/.changeset/agent-lane-retrieval-0415.md deleted file mode 100644 index 82864499e..000000000 --- a/.changeset/agent-lane-retrieval-0415.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@xnetjs/plugins': major -'@xnetjs/data': minor -'@xnetjs/cli': major ---- - -Coding agents now get xNet's real retrieval, and a search that admits when it -couldn't do its job. - -Every agent lane — the `xnet` CLI, `xnet mcp serve`, and the bridged agent -inside the desktop app — previously built its AI surface with no retriever and -fell back to a substring scan over the first 500 nodes, then rendered that -result identically to an exhaustive search. All three now go through one -`createAgentRetrieval()` construction path (enforced by a build guard), and -`xnet search` leads with the tier it actually ran at, warning on stderr when it -degraded. - -New: `xnet recall` and the `xnet_recall` MCP tool return a budgeted context pack -where each hit carries the graph path it was reached by; `xnet serve` keeps the -read path warm behind a unix socket; `xnet remember` / `forget` / `memories` / -`distill` give the agent memory across sessions; and `api.recall` / `api.graph` -let a sandboxed `xnet run` script reach past its loaded slice. - -**Breaking (`@xnetjs/plugins`)**: `AgentApi` gains required `recall` and `graph` -methods and `AgentScriptSession` gains `getRequestedContext()` — implementors of -those interfaces must update. `MCP_CORE_TOOL_NAMES` gains `xnet_recall`, and -`XNET_AGENT_SKILL_MD` has been rewritten. - -**Breaking (`@xnetjs/cli`)**: `AgentCliServices` gains a required `retrieval` -field, and `runSearch` output now begins with a `tier` provenance line — anything -parsing its first line as the column header must skip it. diff --git a/.changeset/agent-substrate-0416.md b/.changeset/agent-substrate-0416.md deleted file mode 100644 index c2ca21157..000000000 --- a/.changeset/agent-substrate-0416.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -'@xnetjs/identity': minor -'@xnetjs/data': minor -'@xnetjs/plugins': minor -'@xnetjs/devkit': minor -'@xnetjs/cli': minor ---- - -Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). - -**`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport -from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the -proof verifier injected so no ecosystem-specific dependency enters the package. -Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a -denylist entry and `verifyAgentPassport()` consults one via the new -`revocations` option. - -**`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize -and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the -passport, every change's hash and signature, the unbroken per-author chain (which -is what catches a _removed_ action), and that every high/critical action carries -an operator-signed approval. - -**`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent -reads and raises a typed `EgressBudgetError` rather than returning a silently -truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the -bridge lane speaks, via the new `onFrame` runtime option. - -**`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive -Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport -(`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread -instead of replaying history. `createPermissionBroker()` plus -`POST /v1/agent/permission` give the bridge a real answer channel, so a -permission request can be approved in-app instead of only displayed. - -**`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit -bundle offline and exits non-zero on any problem. - -All additions are additive; no existing export changed shape. diff --git a/.changeset/agent-tools-service-registry.md b/.changeset/agent-tools-service-registry.md deleted file mode 100644 index 920d7c985..000000000 --- a/.changeset/agent-tools-service-registry.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@xnetjs/plugins': minor -'@xnetjs/react': patch -'@xnetjs/cli': patch ---- - -Plugin composition runtime (exploration 0455): new `EffectScope` (nested, reverse-order, awaited disposal — `ExtensionContext.scope` backs `subscriptions`, and deactivation now awaits teardown) and `ServiceRegistry` (`provide`/`get`/`watch`/`inject` with availability semantics). `AiSurfaceService` and the MCP server resolve `agent-tools` providers live from a registry, so plugin-, connector-, and workspace-plugin-contributed tools reach every host — a plugin activating mid-session adds its tools to `tools/list` without a restart. `xnet mcp serve` (and the desktop agent bridge) now expose the `plugin_*` workspace-plugin tools. Manifests gain validated optional `provides`/`inject` service-name declarations; `Disposable.dispose` may now return a promise. diff --git a/.changeset/ai-harness-agent-frames.md b/.changeset/ai-harness-agent-frames.md deleted file mode 100644 index a09d2ddc9..000000000 --- a/.changeset/ai-harness-agent-frames.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@xnetjs/devkit': minor -'@xnetjs/plugins': minor -'@xnetjs/cli': patch ---- - -Structured agent frames for the bridge (exploration 0392). The agent bridge can -now stream a turn as structured `AgentFrame`s — tool calls, tool results, -permission requests, cost, and session id — over a new framed endpoint -(`POST /v1/agent/stream`) instead of only text. `@xnetjs/devkit` exports the -`AgentFrame` vocabulary, `foldStreamJsonFrames`, and `streamTurnFrames` on the -Claude streaming agent; the existing OpenAI-compatible `/v1/chat/completions` -endpoint is unchanged. The bridge session map can now be made durable -(`fileSessionPersistence`) so `--resume` sessions survive a daemon restart, and -`xnet bridge serve --agent claude` wires this automatically. - -`@xnetjs/plugins` adds a models.dev catalog consumer (`fetchModelsDevCatalog`, -with a vendored snapshot fallback for offline/outage) for cloud-key and local -model pickers, and now sends OpenRouter app-attribution headers -(`HTTP-Referer` / `X-Title`) on OpenRouter-bound requests. diff --git a/.changeset/ai-in-app-tool-loop.md b/.changeset/ai-in-app-tool-loop.md deleted file mode 100644 index 33d231e53..000000000 --- a/.changeset/ai-in-app-tool-loop.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -'@xnetjs/plugins': minor ---- - -The in-app AI runtime can execute tools. `AiAgentRuntime` gains `tools`, -`executeTool`, `allowedTools` and `maxToolSteps`: when a model asks for a tool -the runtime runs it, feeds the result back as a `role: 'tool'` message, and -asks again, bounded by `maxToolSteps`. The allow-list is enforced in code — a -call outside it is refused before execution and reported back to the model — -and a throwing tool becomes an error message the model can recover from rather -than a failed turn. A new `tool.result` event carries each outcome. - -Without an `executeTool` the runtime behaves exactly as before: tool calls are -recorded and never run. diff --git a/.changeset/ai-search-fts5.md b/.changeset/ai-search-fts5.md deleted file mode 100644 index 2f08863f3..000000000 --- a/.changeset/ai-search-fts5.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@xnetjs/data': minor -'@xnetjs/plugins': minor ---- - -AI retrieval now uses the FTS5 index instead of scanning. `NodeStore` (and -the storage adapter contract) gain an optional `searchText(query, limit)` -that runs a cross-schema BM25 search over `nodes_fts`; the AI surface's -`search` tool prefers it and falls back to the substring scan only when the -storage has no FTS support. diff --git a/.changeset/ai-search-schema-scoping.md b/.changeset/ai-search-schema-scoping.md deleted file mode 100644 index 2cc2edeac..000000000 --- a/.changeset/ai-search-schema-scoping.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@xnetjs/sqlite': minor -'@xnetjs/data': minor -'@xnetjs/plugins': minor ---- - -Schema-scoped AI search now returns a full page of results. `searchNodes` and -`NodeStore.searchText` accept an optional `schemaId` that is pushed into the -FTS5 query (joining `nodes`, excluding soft-deleted rows) instead of being -applied to a cross-schema BM25 window afterwards — previously a scoped search -could come back nearly empty whenever that schema's matches ranked below the -window. - -The AI `search` tool also reports how it matched: results carry `index` -(`'fts5'` or `'scan'`), `degraded`, and a `notice` when the full-text index was -unavailable, so an agent can tell a substring scan over a truncated window from -an exhaustive search rather than concluding a node does not exist. diff --git a/.changeset/atproto-projection-and-snapshot.md b/.changeset/atproto-projection-and-snapshot.md deleted file mode 100644 index ce849619f..000000000 --- a/.changeset/atproto-projection-and-snapshot.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -'@xnetjs/data': minor -'@xnetjs/sync': minor ---- - -Play well with the ATmosphere (exploration 0389). `@xnetjs/data` gains -`RecordLens` — a node↔lexicon mapping that preserves foreign fields another app -wrote (unlike `SchemaLens`, whose one-way `backward` would eat them under -`putRecord`'s whole-object replace) — a concrete `pageToDocumentLens` projecting -a Page onto the adopted `site.standard.document` lexicon with one minted -`fyi.xnet.richBody` block, an authoring-time `publish` guard that flags -unprojectable properties (floats, formulas) at `defineSchema` time, and an -`AtmospherePublishState` machine encoding the publish one-way door (Withdraw, -never make-private; gated content never crosses to the public rail). -`@xnetjs/sync` gains signed `SpaceSnapshot` — an order-independent, verifiable -checkpoint over a Space frontier — the shared primitive that bounded replay, -anti-entropy, and encrypted atmosphere backup all needed. diff --git a/.changeset/attachment-previews.md b/.changeset/attachment-previews.md deleted file mode 100644 index 20a2b9a9b..000000000 --- a/.changeset/attachment-previews.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Richer attachment previews. Images and video get a small preview generated when they are attached, stored alongside the file and synced ahead of it, so cells show a thumbnail before the full file arrives. The lightbox now plays video and audio inline and displays PDFs in the browser's viewer. `FileRef` gained optional `width`, `height`, and `thumbCid` fields, and the SQLite devtools panel reports how much space attachments are using. diff --git a/.changeset/billing-read-only-0418.md b/.changeset/billing-read-only-0418.md deleted file mode 100644 index b3041648e..000000000 --- a/.changeset/billing-read-only-0418.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -'@xnetjs/entitlements': major ---- - -Billing read-only mode (exploration 0418). - -**`@xnetjs/entitlements`** — `PlanEntitlements` gains a required `writesEnabled` -field. This is a **wire-contract change**: the entitlement token is signed by the -control plane and verified by the hub, so the shape both sides agree on has -changed and the bump is major even though the field is additive in practice. - -The field is not a plan feature — every entry in `PLAN_CATALOG` sets it to -`true`. It is the lever the non-payment lifecycle pulls: when a managed tenant's -payment grace window lapses, the control plane re-issues the entitlement with -`writesEnabled: false` and the hub stops accepting new data while keeping every -byte readable and exportable. - -`verifyEntitlements` normalizes a **missing** `writesEnabled` to `true`, so -tokens signed before this field existed keep working across the rollover. Only an -explicit `false` blocks writes. - -**`@xnetjs/hub`** — `HubConfig` gains an optional `writesEnabled`, resolved from -the signed entitlement by the new `resolveWritesEnabled` config resolver. Two -enforcement points: - -- a Hono middleware refusing mutating HTTP verbs with - `507 { code: 'billing_read_only' }`, with an allowlist so billing, auth, export - and POST-shaped reads (`/query`, `/search`) keep working — a customer must - never be locked out of the checkout page that ends their read-only state; -- `NodeRelayService`, which raises `NodeRelayError('BILLING_READ_ONLY', …)`, - because the change log arrives over the sync socket and an HTTP-only guard - would stop nothing. - -A self-hosted hub has no `HUB_PLAN` token, never resolves `writesEnabled: false`, -and is unaffected — the anti-lock-in invariant from exploration 0174. diff --git a/.changeset/blob-transfer-queue.md b/.changeset/blob-transfer-queue.md deleted file mode 100644 index 29be9fa5a..000000000 --- a/.changeset/blob-transfer-queue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Database attachments now sync between devices. Previously a file cell synced its reference but not the bytes, so teammates saw an attachment that could never open. Uploads are now sent to the hub in the background after attaching, and peers fetch the bytes on first view — verified against the content hash before being stored. Files that cannot be fetched say "on another device" instead of rendering blank. Workspaces without a hub keep working exactly as before. diff --git a/.changeset/brain-published-0415.md b/.changeset/brain-published-0415.md deleted file mode 100644 index edcac9007..000000000 --- a/.changeset/brain-published-0415.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@xnetjs/brain': minor ---- - -`@xnetjs/brain` is now published. - -It was private because nothing outside the monorepo used it. `@xnetjs/plugins` -and `@xnetjs/cli` now do, and a published package cannot depend on an -unpublished one. - -The package is unchanged by this: it has **zero runtime dependencies** and is -structural over whatever store, index and schema registry you hand it — which is -what makes it safe to publish rather than a new transitive burden. Its two -previous `dependencies` (`@xnetjs/data`, `@xnetjs/vectors`) were vestigial; the -source imports neither, and `@xnetjs/vectors` is now a devDependency used only -by a test. diff --git a/.changeset/bridge-origin-xnet-fyi.md b/.changeset/bridge-origin-xnet-fyi.md deleted file mode 100644 index b8833f15a..000000000 --- a/.changeset/bridge-origin-xnet-fyi.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@xnetjs/cli': patch -'@xnetjs/plugins': patch ---- - -Correct the deployed web app's origin in the agent-bridge origin examples: the -PWA lives at `https://xnet.fyi/app`, so the origin to allow is -`https://xnet.fyi` — not the nonexistent `app.xnet.fyi`. Updates `xnet bridge -serve|install --allow-origin` help text and the `appOrigin` doc example. diff --git a/.changeset/bridge-write-consent.md b/.changeset/bridge-write-consent.md deleted file mode 100644 index 03f79821c..000000000 --- a/.changeset/bridge-write-consent.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -'@xnetjs/devkit': minor -'@xnetjs/cli': minor ---- - -Workspace writes from the bridged agent are now consent-gated. The devkit -exports a read-only MCP tool tier (`XNET_READONLY_ALLOWED_TOOLS`) and -`buildAgentArgs`/`buildStreamingAgentArgs` accept multiple allowed-tool -patterns; `xnet bridge serve` defaults the agent to read-only workspace -tools and requires `--allow-writes` to enable create/update/delete. diff --git a/.changeset/chunked-blob-transfer.md b/.changeset/chunked-blob-transfer.md deleted file mode 100644 index c4f68bd86..000000000 --- a/.changeset/chunked-blob-transfer.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@xnetjs/data': minor -'@xnetjs/storage': minor ---- - -Fix attachments over 1 MB failing to sync. Large files are stored as chunks behind a manifest, and the manifest's identifier is what the file reference carries — so uploading the reassembled file was rejected by the hub's content check, and every attachment above 1 MB silently failed to reach other devices. Transfers now send each stored blob under its own content hash, chunks before the manifest, and verify each one on the way back down. diff --git a/.changeset/connect-npx-launcher.md b/.changeset/connect-npx-launcher.md deleted file mode 100644 index 5d4f56863..000000000 --- a/.changeset/connect-npx-launcher.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@xnetjs/cli': patch ---- - -`xnet connect` now registers an `npx -y @xnetjs/cli` MCP server launcher when the `xnet` bin is not on PATH, so the zero-install `npx @xnetjs/cli connect claude-code` on-ramp produces a registration that still works after the npx cache is gone. diff --git a/.changeset/daily-driver-bridge-streaming.md b/.changeset/daily-driver-bridge-streaming.md deleted file mode 100644 index 54dc2b416..000000000 --- a/.changeset/daily-driver-bridge-streaming.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -'@xnetjs/devkit': minor -'@xnetjs/cli': minor ---- - -The local agent bridge now streams Claude Code replies live and carries -conversations across turns. `cliStreamingChatAgent` drives Claude's -`stream-json` headless mode with partial deltas forwarded as they arrive, -the bridge maps conversations to CLI sessions (`--resume`) via transcript -fingerprints, timeouts are idle-based instead of a 120s wall-clock cap, and -chat turns run in a dedicated `~/.xnet/agent-home` working directory. -Workspace tools (`--mcp`) are on by default for the Claude agent -(`--no-mcp` opts out). New: `xnet bridge install` / `uninstall` manage a -macOS launchd login item with a stable pairing code, and `xnet doctor` -reports bridge daemon health. diff --git a/.changeset/late-ontology-promotion.md b/.changeset/late-ontology-promotion.md deleted file mode 100644 index b7d72c59b..000000000 --- a/.changeset/late-ontology-promotion.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Add `proposePromotion`/`proposePromotions` — propose graduating an accumulated -`ext:` overlay key into a core schema property once enough rows carry it. Both -return a proposal carrying a reversible `SchemaLens`, so accepting a promotion -can be undone; nothing mutates and nothing is inferred silently. diff --git a/.changeset/mcp-query-schema-filter.md b/.changeset/mcp-query-schema-filter.md deleted file mode 100644 index 043b27806..000000000 --- a/.changeset/mcp-query-schema-filter.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@xnetjs/plugins': minor ---- - -`xnet_query` and `xnet_create` now honour the `schemaId` argument. Both tools -read `schemaId` first and keep `schema` as a deprecated alias — previously they -read only `schema`, so an MCP client that passed `schemaId` (the field name -every node carries) had its filter dropped: `xnet_query` fell through to an -unfiltered `store.list` and answered "my pages" with nodes of every schema, -while `xnet_create` could mint a node with no schema at all. - -A call that supplies neither spelling now fails with a clear error instead of -widening to every node. diff --git a/.changeset/olive-donkeys-smile.md b/.changeset/olive-donkeys-smile.md deleted file mode 100644 index 7da7e1519..000000000 --- a/.changeset/olive-donkeys-smile.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@xnetjs/devkit': minor ---- - -Add `mcpHttpConfigFor` for pointing a coding agent at an already-running MCP -server over Streamable HTTP, alongside the existing `mcpConfigFor` for servers -the agent spawns itself. This is how a host application hands the agent its -tools without shipping a CLI for it to launch: the app serves the workspace from -its own process and passes the URL plus a pairing header. diff --git a/.changeset/olive-lions-shake.md b/.changeset/olive-lions-shake.md deleted file mode 100644 index 353bc9217..000000000 --- a/.changeset/olive-lions-shake.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -'@xnetjs/plugins': minor ---- - -Parked agent approvals are now reachable by the host. - -`AgentAuditRecorder` decides whether a call needs a human but does not hold the -call open while one is found, and `approveFromApp` had no caller outside the -in-app AI panel. A high or critical action from any other surface — a bridged -coding agent, an MCP client — therefore parked where nothing could release it -and expired silently. - -- New `createApprovalBroker(recorder, options)` (exported from the root barrel): - headless park/settle over a recorder, with a change subscription. `maxWaitMs` - bounds how long a caller waits without un-parking the action, so a transport - timeout never looks like a decision. -- `MCPServer` configured with `agentAudit` now **parks** medium+ risk tool - calls instead of returning a pending payload, so an approval resumes the - agent's turn with the real result. New `listParkedApprovals()`, - `onParkedApprovalsChanged()`, `approveParkedApproval(actionId, approverDID)` - and `denyParkedApproval(actionId)` give the host the release path that - high/critical actions require by design. -- `agentAudit` accepts `approvalWaitMs` (default 55s) alongside `approvalTtlMs`. -- `createAgentCeremonyTools(recorder, broker?)` takes the broker so a relayed - `APPROVE ` settles the parked call rather than applying the action - beside a caller still waiting. - -Behaviour change for embedders: with `agentAudit` configured, a medium+ risk -`tools/call` no longer resolves immediately with `{ pending: true }`. It -resolves when the operator decides, or — after `approvalWaitMs` — with a -still-pending payload that leaves the action parked. diff --git a/.changeset/point-and-change-lanes.md b/.changeset/point-and-change-lanes.md deleted file mode 100644 index e7cfae09c..000000000 --- a/.changeset/point-and-change-lanes.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -'@xnetjs/devkit': minor ---- - -Add the point-and-change substrate from exploration 0399. - -`@xnetjs/devkit` gains `resolveLane()` (plus `workspaceOf`, `isKernel`, -`lane3Prompt`) on a new browser-safe `./blast-radius` subpath, and the Lane 3 -preconditions `probeDevEnvironment`, `assertEditable`, `previewWorktree`, and -`reviewWorktree`. `openPullRequest()` now opens a **draft** by default — pass -`draft: false` for the previous behaviour. - -`@xnetjs/ui` exposes the theme token-override contract (`setThemeToken`, -`clearThemeToken`, `clearThemeTokens`, `readTokenOverrides`, -`applyTokenOverrides`) as plain functions usable outside `ThemeProvider`, and -`useTheme()` gains `tokenOverrides` / `setToken` / `clearToken` / `clearTokens`. diff --git a/.changeset/relationship-primitives-0422.md b/.changeset/relationship-primitives-0422.md deleted file mode 100644 index c952737a5..000000000 --- a/.changeset/relationship-primitives-0422.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Relationships can now record what two people actually do together, instead of -just what you call them. - -Words like "spouse", "friend" and "coworker" are shorthand for a bundle of -typical activities, and `Relationship.kind` only ever stored the shorthand. Two -new schemas capture the part it was dropping: `RelationshipPrimitive` is one -term in an open, user-extensible vocabulary of shared activities ("make things", -"have hard conversations", "cohabitate"), and `Practice` records one such -activity between a pair. - -The label is now derived rather than stored. `deriveBundle()` in `@xnetjs/crm` -reads which bundle a pair resembles from the activities they share, and returns -the **set difference** — activities common to that kind of relationship they -don't share — as possibilities to consider. It never grades the relationship -itself; a new `scored intimacy` CI rule and Charter §6 clause keep it that way. - -`Practice` defaults to `private` visibility rather than `inherit`, because a -practice is a claim about a pair authored by one side. Erasing a contact deletes -their practices outright (`practiceErasureIds()`) rather than anonymizing them — -for this record the claim is the payload, so a blanked practice would still -disclose through the other end of the edge. diff --git a/.changeset/screen-recording-schemas.md b/.changeset/screen-recording-schemas.md deleted file mode 100644 index b86080a1a..000000000 --- a/.changeset/screen-recording-schemas.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Add the `Recording` and `RecordingTranscript` schemas for local-first screen -recording (exploration 0414). - -A `Recording` holds immutable screen and camera track references plus the -_edit_ — a `cuts` list, `chapters`, and a `cameraLayout` — so trimming a -recording is a field write rather than a re-encode, and every cut stays -reversible. `RecordingTranscript` carries timed segments with optional -word-level timings, and a `verbatim` flag that gates filler-word editing on -engines which actually preserve disfluencies. - -New exports: `RecordingSchema`, `RecordingTranscriptSchema`, -`RECORDING_SCHEMA_IRI`, `RECORDING_TRANSCRIPT_SCHEMA_IRI`, `CUT_REASONS`, -`CAMERA_CORNERS`, `CAMERA_SHAPES`, `CAPTURE_PATHS`, `DEFAULT_CAMERA_LAYOUT`, -and the `Recording`, `RecordingTranscript`, `RecordingSegment`, `Cut`, -`CutReason`, `Chapter`, `CameraLayout`, `CameraCorner`, `CameraShape` and -`CapturePathId` types. Purely additive — no existing export changed. diff --git a/.changeset/social-graph-atlas-0419.md b/.changeset/social-graph-atlas-0419.md deleted file mode 100644 index 7b86ff5ef..000000000 --- a/.changeset/social-graph-atlas-0419.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -'@xnetjs/sqlite': minor -'@xnetjs/react': minor ---- - -Imported social content is now actually in the full-text index, and a saved -lens can be projected onto a canvas with its relationships. - -`extractSearchableContent` read `content`, `description`, `body`, `name` and -`note` — but not `searchText`, the property imported social records -denormalize their full text into precisely so it can be searched. Every -imported post, comment and video transcript was therefore absent from -`nodes_fts` while the pipeline reported it as indexed: search returned a clean -empty result rather than an error. `searchText` is now indexed, with -`textPreview` as the fallback for records that carry no full text. **Existing -databases need `rebuildFTS()` to pick up already-imported rows** — new writes -are indexed correctly from here on. - -`SavedViewVisualCanvasProjectionRequest` gains an `edges` array (filtered to -relationships whose endpoints both survived the projection cap), and the new -`SavedViewCanvasProjectionEdge` type is exported. This is what lets a consumer -lay a saved view out as a graph rather than an unconnected grid of cards. diff --git a/.changeset/tenant-roster-and-seats.md b/.changeset/tenant-roster-and-seats.md deleted file mode 100644 index f84f58943..000000000 --- a/.changeset/tenant-roster-and-seats.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@xnetjs/entitlements': minor ---- - -Seat helpers for tenant rosters: `seatsUsed()` and `canAdmitMember()`, plus a `TenantMemberRole` in which `guest` is admitted but never billed. A seat is capacity provisioned for a collaborator, not an audience member the customer brought — so a flat-billed plan is never capped, and enforcement refuses admission rather than evicting anyone already connected. diff --git a/.changeset/tidy-moons-shake.md b/.changeset/tidy-moons-shake.md deleted file mode 100644 index c7676ef4f..000000000 --- a/.changeset/tidy-moons-shake.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -'@xnetjs/runtime': minor -'@xnetjs/react': minor -'@xnetjs/data': minor ---- - -Resolve a hub's address from a stable name instead of hard-coding its URL. - -A managed hub's URL belongs to whoever hosts it today, so moving it between -regions or substrates silently misconfigured every device that had stored it. -`XNetConfig.hubAddress` now takes a name and a resolver: the client resolves -once, caches the answer, and connects to the hub **directly** — nothing proxies -your traffic. `hubUrl` still works unchanged and is used as the fallback until -resolution succeeds, so a resolver outage costs freshness, never reachability. - -- `@xnetjs/runtime` adds `resolveHubUrl`, `httpResolver`, and the - `HubAddressRecord` types. Records are signed by the hub itself, so a resolver - can cache one but cannot change where you connect. -- `@xnetjs/react` adds `useResolvedHubUrl` and the `hubAddress` config option. - A hub that is waking from cold now reports as waking, with a retry hint, - instead of looking like an outage. -- `@xnetjs/data` records the last-known hub address inside `.xnetpack` - manifests, under the signature, so an export on its own is enough to - reconnect. - -All three additions are additive; existing configuration and bundles are -unaffected. diff --git a/.changeset/tidy-pugs-shake.md b/.changeset/tidy-pugs-shake.md deleted file mode 100644 index b1f1ec611..000000000 --- a/.changeset/tidy-pugs-shake.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -'@xnetjs/data': minor ---- - -Export the `NodeProperties` type from the root barrel. It was already exported -from `@xnetjs/data/schema` and is the parameter type of every `RecordLens` -`forward`/`backward`, so anyone writing a lens against the root entry point had -no way to name it. diff --git a/.changeset/wild-moons-search.md b/.changeset/wild-moons-search.md deleted file mode 100644 index 841868373..000000000 --- a/.changeset/wild-moons-search.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -'@xnetjs/brain': major -'@xnetjs/plugins': minor ---- - -Retrieval now reports how it searched, not just what it found. - -`WorkspaceRetrieval.retrieveContext` returns `{ nodes, provenance }` instead of -a bare node array — a **breaking** change for direct callers, who previously -got the nodes and no way to learn that the search had fallen back to a bounded -substring scan. Use `result.nodes` where you used the array, and -`result.provenance` for the tier, the `degraded` flag and a printable notice. - -On the `@xnetjs/plugins` side everything is additive: `AiContextRetriever` -accepts either shape, `AiContextPack` gained an optional `retrieval` field, and -a resource's `citation` gained the optional `path` the retriever had always -computed and the pack had always dropped. - -`SCAN_NOTICE` is now exported from `@xnetjs/brain` so every lane warns in the -same words. diff --git a/.changeset/xnet-from-inside-coding-agent.md b/.changeset/xnet-from-inside-coding-agent.md deleted file mode 100644 index 393a27282..000000000 --- a/.changeset/xnet-from-inside-coding-agent.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -'@xnetjs/cli': minor -'@xnetjs/plugins': patch ---- - -Use xNet from inside a coding agent (exploration 0393). A new -`xnet connect claude-code|codex` command wires a coding agent to the workspace -in one idempotent step: it installs the agent skill, registers the `xnet` MCP -server (read-only by default, `--writes` to enable), writes a `CLAUDE.md`/ -`AGENTS.md` contract, and can bootstrap a scoped vault checkout. It ships a -first-party Claude Code plugin (`packages/cli/plugin/`) whose bundled skill is -kept byte-identical to `xnet skill` by a CI guard. - -The agent verbs (`checkout`/`status`/`commit`/`search`/`query`/`db`/`daemon`) -now resolve a backend automatically instead of hard-requiring the running app: -they probe the local API and otherwise fall back to a standalone SQLite store -via `--db`/`$XNET_DB` or a discovered data directory. New `--db`/`--agent`/ -`--key` flags select the store and signing identity; local writes refuse a -silent ephemeral identity. `xnet doctor --agent-access` reports backend, -full-text search, and identity reachability, and `xnet mcp serve` gains a -`--read-only` mode (also `$XNET_READONLY=1`). - -`@xnetjs/plugins` refreshes the agent `SKILL.md` with an explicit CLI-first lane -hierarchy, scoped-checkout guidance, and write-consent rules. diff --git a/apps/cloud/CHANGELOG.md b/apps/cloud/CHANGELOG.md index 2d6e54316..14caac5ff 100644 --- a/apps/cloud/CHANGELOG.md +++ b/apps/cloud/CHANGELOG.md @@ -1,5 +1,16 @@ # xnet-cloud +## 0.0.25 + +### Patch Changes + +- Updated dependencies [[`0a0dff5`](https://github.com/crs48/xNet/commit/0a0dff533b209f533aa104de0cea731fd707aab9), [`a8318a6`](https://github.com/crs48/xNet/commit/a8318a691bd0501006b9fba5e94fea19eadefd0b)]: + - @xnetjs/entitlements@1.0.0 + - @xnetjs/telemetry@0.0.1 + - @xnetjs/cloud@0.0.1 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 0.0.24 ### Patch Changes diff --git a/apps/cloud/package.json b/apps/cloud/package.json index 2d95b116a..2ffde552f 100644 --- a/apps/cloud/package.json +++ b/apps/cloud/package.json @@ -1,6 +1,6 @@ { "name": "xnet-cloud", - "version": "0.0.24", + "version": "0.0.25", "description": "xNet Cloud control plane — billing, provisioning, and fleet management (explorations 0174/0175).", "license": "FSL-1.1-Apache-2.0", "type": "module", diff --git a/apps/demos/CHANGELOG.md b/apps/demos/CHANGELOG.md index 1b57f6722..75f6d6ed4 100644 --- a/apps/demos/CHANGELOG.md +++ b/apps/demos/CHANGELOG.md @@ -1,5 +1,15 @@ # xnet-demos +## 0.1.9 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/react@4.0.0 + - @xnetjs/devtools@0.1.0 + ## 0.1.8 ### Patch Changes diff --git a/apps/demos/package.json b/apps/demos/package.json index 754bcd2f0..6c73892cc 100644 --- a/apps/demos/package.json +++ b/apps/demos/package.json @@ -1,6 +1,6 @@ { "name": "xnet-demos", - "version": "0.1.8", + "version": "0.1.9", "private": true, "description": "xNet live demos — cursor party, Connect Four, collaborative todo (exploration 0314)", "type": "module", diff --git a/apps/electron/CHANGELOG.md b/apps/electron/CHANGELOG.md index f6ddc35df..acbdf3add 100644 --- a/apps/electron/CHANGELOG.md +++ b/apps/electron/CHANGELOG.md @@ -1,5 +1,9 @@ # xnet-desktop +## 4.0.0 + +Desktop shell release riding the @xnetjs/core 4.0.0 train. Desktop-specific changes are not tracked here; see the core packages' changelogs for what shipped. + ## 3.0.0 Desktop shell release riding the @xnetjs/core 3.0.0 train. Desktop-specific changes are not tracked here; see the core packages' changelogs for what shipped. diff --git a/apps/electron/package.json b/apps/electron/package.json index 12d9da521..e03b9f4ca 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,6 +1,6 @@ { "name": "xnet-desktop", - "version": "3.0.0", + "version": "4.0.0", "description": "xNet Desktop - Local-first data platform for macOS/Windows/Linux", "author": { "name": "xNet", diff --git a/packages/abuse/CHANGELOG.md b/packages/abuse/CHANGELOG.md index e5f52517c..923123bae 100644 --- a/packages/abuse/CHANGELOG.md +++ b/packages/abuse/CHANGELOG.md @@ -1,5 +1,13 @@ # @xnetjs/abuse +## 4.0.0 + +### Patch Changes + +- Updated dependencies [[`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91)]: + - @xnetjs/identity@4.0.0 + - @xnetjs/crypto@4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/abuse/package.json b/packages/abuse/package.json index 8f8abeaf1..a0e524a4c 100644 --- a/packages/abuse/package.json +++ b/packages/abuse/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/abuse", - "version": "3.0.0", + "version": "4.0.0", "description": "Composable abuse, moderation, and reach policy decisions for xNet", "license": "MIT", "repository": { diff --git a/packages/brain/CHANGELOG.md b/packages/brain/CHANGELOG.md index 536d077c9..f00097c33 100644 --- a/packages/brain/CHANGELOG.md +++ b/packages/brain/CHANGELOG.md @@ -1,5 +1,40 @@ # @xnetjs/brain +## 1.0.0 + +### Major Changes + +- [#687](https://github.com/crs48/xNet/pull/687) [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d) Thanks [@crs48](https://github.com/crs48)! - Retrieval now reports how it searched, not just what it found. + + `WorkspaceRetrieval.retrieveContext` returns `{ nodes, provenance }` instead of + a bare node array — a **breaking** change for direct callers, who previously + got the nodes and no way to learn that the search had fallen back to a bounded + substring scan. Use `result.nodes` where you used the array, and + `result.provenance` for the tier, the `degraded` flag and a printable notice. + + On the `@xnetjs/plugins` side everything is additive: `AiContextRetriever` + accepts either shape, `AiContextPack` gained an optional `retrieval` field, and + a resource's `citation` gained the optional `path` the retriever had always + computed and the pack had always dropped. + + `SCAN_NOTICE` is now exported from `@xnetjs/brain` so every lane warns in the + same words. + +### Minor Changes + +- [#667](https://github.com/crs48/xNet/pull/667) [`f357971`](https://github.com/crs48/xNet/commit/f357971de9d325aeb31520631cec8339dfc94e7c) Thanks [@crs48](https://github.com/crs48)! - `@xnetjs/brain` is now published. + + It was private because nothing outside the monorepo used it. `@xnetjs/plugins` + and `@xnetjs/cli` now do, and a published package cannot depend on an + unpublished one. + + The package is unchanged by this: it has **zero runtime dependencies** and is + structural over whatever store, index and schema registry you hand it — which is + what makes it safe to publish rather than a new transitive burden. Its two + previous `dependencies` (`@xnetjs/data`, `@xnetjs/vectors`) were vestigial; the + source imports neither, and `@xnetjs/vectors` is now a devDependency used only + by a test. + ## 0.0.25 ### Patch Changes diff --git a/packages/brain/package.json b/packages/brain/package.json index 69d7d6ff5..5c07baf17 100644 --- a/packages/brain/package.json +++ b/packages/brain/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/brain", - "version": "0.0.25", + "version": "1.0.0", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 7aa02566c..ab3447ab4 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,144 @@ # @xnetjs/cli +## 1.0.0 + +### Major Changes + +- [#667](https://github.com/crs48/xNet/pull/667) [`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf) Thanks [@crs48](https://github.com/crs48)! - Coding agents now get xNet's real retrieval, and a search that admits when it + couldn't do its job. + + Every agent lane — the `xnet` CLI, `xnet mcp serve`, and the bridged agent + inside the desktop app — previously built its AI surface with no retriever and + fell back to a substring scan over the first 500 nodes, then rendered that + result identically to an exhaustive search. All three now go through one + `createAgentRetrieval()` construction path (enforced by a build guard), and + `xnet search` leads with the tier it actually ran at, warning on stderr when it + degraded. + + New: `xnet recall` and the `xnet_recall` MCP tool return a budgeted context pack + where each hit carries the graph path it was reached by; `xnet serve` keeps the + read path warm behind a unix socket; `xnet remember` / `forget` / `memories` / + `distill` give the agent memory across sessions; and `api.recall` / `api.graph` + let a sandboxed `xnet run` script reach past its loaded slice. + + **Breaking (`@xnetjs/plugins`)**: `AgentApi` gains required `recall` and `graph` + methods and `AgentScriptSession` gains `getRequestedContext()` — implementors of + those interfaces must update. `MCP_CORE_TOOL_NAMES` gains `xnet_recall`, and + `XNET_AGENT_SKILL_MD` has been rewritten. + + **Breaking (`@xnetjs/cli`)**: `AgentCliServices` gains a required `retrieval` + field, and `runSearch` output now begins with a `tier` provenance line — anything + parsing its first line as the column header must skip it. + +### Minor Changes + +- [#668](https://github.com/crs48/xNet/pull/668) [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91) Thanks [@crs48](https://github.com/crs48)! - Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). + + **`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport + from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the + proof verifier injected so no ecosystem-specific dependency enters the package. + Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a + denylist entry and `verifyAgentPassport()` consults one via the new + `revocations` option. + + **`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize + and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the + passport, every change's hash and signature, the unbroken per-author chain (which + is what catches a _removed_ action), and that every high/critical action carries + an operator-signed approval. + + **`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent + reads and raises a typed `EgressBudgetError` rather than returning a silently + truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the + bridge lane speaks, via the new `onFrame` runtime option. + + **`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive + Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport + (`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread + instead of replaying history. `createPermissionBroker()` plus + `POST /v1/agent/permission` give the bridge a real answer channel, so a + permission request can be approved in-app instead of only displayed. + + **`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit + bundle offline and exits non-zero on any problem. + + All additions are additive; no existing export changed shape. + +- [#620](https://github.com/crs48/xNet/pull/620) [`3aac04b`](https://github.com/crs48/xNet/commit/3aac04bd1de08d7cf7208eee47810f3973ffb2ff) Thanks [@crs48](https://github.com/crs48)! - Workspace writes from the bridged agent are now consent-gated. The devkit + exports a read-only MCP tool tier (`XNET_READONLY_ALLOWED_TOOLS`) and + `buildAgentArgs`/`buildStreamingAgentArgs` accept multiple allowed-tool + patterns; `xnet bridge serve` defaults the agent to read-only workspace + tools and requires `--allow-writes` to enable create/update/delete. + +- [#620](https://github.com/crs48/xNet/pull/620) [`cd87b4d`](https://github.com/crs48/xNet/commit/cd87b4d5a462d2cee0eeea57b62df7147b0abe18) Thanks [@crs48](https://github.com/crs48)! - The local agent bridge now streams Claude Code replies live and carries + conversations across turns. `cliStreamingChatAgent` drives Claude's + `stream-json` headless mode with partial deltas forwarded as they arrive, + the bridge maps conversations to CLI sessions (`--resume`) via transcript + fingerprints, timeouts are idle-based instead of a 120s wall-clock cap, and + chat turns run in a dedicated `~/.xnet/agent-home` working directory. + Workspace tools (`--mcp`) are on by default for the Claude agent + (`--no-mcp` opts out). New: `xnet bridge install` / `uninstall` manage a + macOS launchd login item with a stable pairing code, and `xnet doctor` + reports bridge daemon health. + +- [#627](https://github.com/crs48/xNet/pull/627) [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310) Thanks [@crs48](https://github.com/crs48)! - Use xNet from inside a coding agent (exploration 0393). A new + `xnet connect claude-code|codex` command wires a coding agent to the workspace + in one idempotent step: it installs the agent skill, registers the `xnet` MCP + server (read-only by default, `--writes` to enable), writes a `CLAUDE.md`/ + `AGENTS.md` contract, and can bootstrap a scoped vault checkout. It ships a + first-party Claude Code plugin (`packages/cli/plugin/`) whose bundled skill is + kept byte-identical to `xnet skill` by a CI guard. + + The agent verbs (`checkout`/`status`/`commit`/`search`/`query`/`db`/`daemon`) + now resolve a backend automatically instead of hard-requiring the running app: + they probe the local API and otherwise fall back to a standalone SQLite store + via `--db`/`$XNET_DB` or a discovered data directory. New `--db`/`--agent`/ + `--key` flags select the store and signing identity; local writes refuse a + silent ephemeral identity. `xnet doctor --agent-access` reports backend, + full-text search, and identity reachability, and `xnet mcp serve` gains a + `--read-only` mode (also `$XNET_READONLY=1`). + + `@xnetjs/plugins` refreshes the agent `SKILL.md` with an explicit CLI-first lane + hierarchy, scoped-checkout guidance, and write-consent rules. + +### Patch Changes + +- [#712](https://github.com/crs48/xNet/pull/712) [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc) Thanks [@crs48](https://github.com/crs48)! - Plugin composition runtime (exploration 0455): new `EffectScope` (nested, reverse-order, awaited disposal — `ExtensionContext.scope` backs `subscriptions`, and deactivation now awaits teardown) and `ServiceRegistry` (`provide`/`get`/`watch`/`inject` with availability semantics). `AiSurfaceService` and the MCP server resolve `agent-tools` providers live from a registry, so plugin-, connector-, and workspace-plugin-contributed tools reach every host — a plugin activating mid-session adds its tools to `tools/list` without a restart. `xnet mcp serve` (and the desktop agent bridge) now expose the `plugin_*` workspace-plugin tools. Manifests gain validated optional `provides`/`inject` service-name declarations; `Disposable.dispose` may now return a promise. + +- [#623](https://github.com/crs48/xNet/pull/623) [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504) Thanks [@crs48](https://github.com/crs48)! - Structured agent frames for the bridge (exploration 0392). The agent bridge can + now stream a turn as structured `AgentFrame`s — tool calls, tool results, + permission requests, cost, and session id — over a new framed endpoint + (`POST /v1/agent/stream`) instead of only text. `@xnetjs/devkit` exports the + `AgentFrame` vocabulary, `foldStreamJsonFrames`, and `streamTurnFrames` on the + Claude streaming agent; the existing OpenAI-compatible `/v1/chat/completions` + endpoint is unchanged. The bridge session map can now be made durable + (`fileSessionPersistence`) so `--resume` sessions survive a daemon restart, and + `xnet bridge serve --agent claude` wires this automatically. + + `@xnetjs/plugins` adds a models.dev catalog consumer (`fetchModelsDevCatalog`, + with a vendored snapshot fallback for offline/outage) for cloud-key and local + model pickers, and now sends OpenRouter app-attribution headers + (`HTTP-Referer` / `X-Title`) on OpenRouter-bound requests. + +- [#621](https://github.com/crs48/xNet/pull/621) [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62) Thanks [@crs48](https://github.com/crs48)! - Correct the deployed web app's origin in the agent-bridge origin examples: the + PWA lives at `https://xnet.fyi/app`, so the origin to allow is + `https://xnet.fyi` — not the nonexistent `app.xnet.fyi`. Updates `xnet bridge +serve|install --allow-origin` help text and the `appOrigin` doc example. + +- [#711](https://github.com/crs48/xNet/pull/711) [`14cc9e0`](https://github.com/crs48/xNet/commit/14cc9e0d8955ac5be96163e527878d66eb5767d6) Thanks [@crs48](https://github.com/crs48)! - `xnet connect` now registers an `npx -y @xnetjs/cli` MCP server launcher when the `xnet` bin is not on PATH, so the zero-install `npx @xnetjs/cli connect claude-code` on-ramp produces a registration that still works after the npx cache is gone. + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`f357971`](https://github.com/crs48/xNet/commit/f357971de9d325aeb31520631cec8339dfc94e7c), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`3aac04b`](https://github.com/crs48/xNet/commit/3aac04bd1de08d7cf7208eee47810f3973ffb2ff), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`cd87b4d`](https://github.com/crs48/xNet/commit/cd87b4d5a462d2cee0eeea57b62df7147b0abe18), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`77e2ac5`](https://github.com/crs48/xNet/commit/77e2ac5c7c3a3f7994d478277d2babb1e0c20607), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`6737116`](https://github.com/crs48/xNet/commit/67371169d213f0ac9388af9ae78e9ece8726b069), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/devkit@1.1.0 + - @xnetjs/sqlite@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/brain@1.0.0 + - @xnetjs/runtime@0.7.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 0.4.0 ### Minor Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index ce687af2c..1bbf0650a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/cli", - "version": "0.4.0", + "version": "1.0.0", "description": "xNet CLI - Schema migrations, diagnostics, and development tools", "license": "MIT", "repository": { diff --git a/packages/comms/CHANGELOG.md b/packages/comms/CHANGELOG.md index 7853e06c1..7841744ea 100644 --- a/packages/comms/CHANGELOG.md +++ b/packages/comms/CHANGELOG.md @@ -1,5 +1,14 @@ # @xnetjs/comms +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/crypto@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/comms/package.json b/packages/comms/package.json index 6a48cf525..233257448 100644 --- a/packages/comms/package.json +++ b/packages/comms/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/comms", - "version": "0.0.25", + "version": "0.0.26", "description": "Real-time communications for xNet: presence rooms, chat, calls, and the notification inbox (explorations 0167/0168)", "type": "module", "main": "./src/index.ts", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 90da8fd54..44137d529 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,7 @@ # @xnetjs/core +## 4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 0d46f8972..bd33b6b44 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/core", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/crypto/CHANGELOG.md b/packages/crypto/CHANGELOG.md index 46c8c79d1..9174b294c 100644 --- a/packages/crypto/CHANGELOG.md +++ b/packages/crypto/CHANGELOG.md @@ -1,5 +1,12 @@ # @xnetjs/crypto +## 4.0.0 + +### Patch Changes + +- Updated dependencies []: + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Minor Changes diff --git a/packages/crypto/package.json b/packages/crypto/package.json index 46611d839..b4fd4553f 100644 --- a/packages/crypto/package.json +++ b/packages/crypto/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/crypto", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/dashboard/CHANGELOG.md b/packages/dashboard/CHANGELOG.md index b5c0019b1..3ff50017d 100644 --- a/packages/dashboard/CHANGELOG.md +++ b/packages/dashboard/CHANGELOG.md @@ -1,5 +1,15 @@ # @xnetjs/dashboard +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/react@4.0.0 + - @xnetjs/social@0.0.26 + ## 0.0.25 ### Patch Changes diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index c58ae0b6f..144bae85d 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/dashboard", - "version": "0.0.25", + "version": "0.0.26", "type": "module", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/data-bridge/CHANGELOG.md b/packages/data-bridge/CHANGELOG.md index 0056a60ad..ec62e4281 100644 --- a/packages/data-bridge/CHANGELOG.md +++ b/packages/data-bridge/CHANGELOG.md @@ -1,5 +1,15 @@ # @xnetjs/data-bridge +## 4.0.0 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/sqlite@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/data-bridge/package.json b/packages/data-bridge/package.json index 0968c472d..a88ca4698 100644 --- a/packages/data-bridge/package.json +++ b/packages/data-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/data-bridge", - "version": "3.0.0", + "version": "4.0.0", "description": "DataBridge abstraction for off-main-thread data access in xNet", "license": "MIT", "repository": { diff --git a/packages/data/CHANGELOG.md b/packages/data/CHANGELOG.md index 80f057cd1..c1649cb7c 100644 --- a/packages/data/CHANGELOG.md +++ b/packages/data/CHANGELOG.md @@ -1,5 +1,184 @@ # @xnetjs/data +## 4.0.0 + +### Minor Changes + +- [#667](https://github.com/crs48/xNet/pull/667) [`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf) Thanks [@crs48](https://github.com/crs48)! - Coding agents now get xNet's real retrieval, and a search that admits when it + couldn't do its job. + + Every agent lane — the `xnet` CLI, `xnet mcp serve`, and the bridged agent + inside the desktop app — previously built its AI surface with no retriever and + fell back to a substring scan over the first 500 nodes, then rendered that + result identically to an exhaustive search. All three now go through one + `createAgentRetrieval()` construction path (enforced by a build guard), and + `xnet search` leads with the tier it actually ran at, warning on stderr when it + degraded. + + New: `xnet recall` and the `xnet_recall` MCP tool return a budgeted context pack + where each hit carries the graph path it was reached by; `xnet serve` keeps the + read path warm behind a unix socket; `xnet remember` / `forget` / `memories` / + `distill` give the agent memory across sessions; and `api.recall` / `api.graph` + let a sandboxed `xnet run` script reach past its loaded slice. + + **Breaking (`@xnetjs/plugins`)**: `AgentApi` gains required `recall` and `graph` + methods and `AgentScriptSession` gains `getRequestedContext()` — implementors of + those interfaces must update. `MCP_CORE_TOOL_NAMES` gains `xnet_recall`, and + `XNET_AGENT_SKILL_MD` has been rewritten. + + **Breaking (`@xnetjs/cli`)**: `AgentCliServices` gains a required `retrieval` + field, and `runSearch` output now begins with a `tier` provenance line — anything + parsing its first line as the column header must skip it. + +- [#668](https://github.com/crs48/xNet/pull/668) [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91) Thanks [@crs48](https://github.com/crs48)! - Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). + + **`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport + from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the + proof verifier injected so no ecosystem-specific dependency enters the package. + Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a + denylist entry and `verifyAgentPassport()` consults one via the new + `revocations` option. + + **`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize + and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the + passport, every change's hash and signature, the unbroken per-author chain (which + is what catches a _removed_ action), and that every high/critical action carries + an operator-signed approval. + + **`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent + reads and raises a typed `EgressBudgetError` rather than returning a silently + truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the + bridge lane speaks, via the new `onFrame` runtime option. + + **`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive + Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport + (`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread + instead of replaying history. `createPermissionBroker()` plus + `POST /v1/agent/permission` give the bridge a real answer channel, so a + permission request can be approved in-app instead of only displayed. + + **`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit + bundle offline and exits non-zero on any problem. + + All additions are additive; no existing export changed shape. + +- [#620](https://github.com/crs48/xNet/pull/620) [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61) Thanks [@crs48](https://github.com/crs48)! - AI retrieval now uses the FTS5 index instead of scanning. `NodeStore` (and + the storage adapter contract) gain an optional `searchText(query, limit)` + that runs a cross-schema BM25 search over `nodes_fts`; the AI surface's + `search` tool prefers it and falls back to the substring scan only when the + storage has no FTS support. + +- [#629](https://github.com/crs48/xNet/pull/629) [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d) Thanks [@crs48](https://github.com/crs48)! - Schema-scoped AI search now returns a full page of results. `searchNodes` and + `NodeStore.searchText` accept an optional `schemaId` that is pushed into the + FTS5 query (joining `nodes`, excluding soft-deleted rows) instead of being + applied to a cross-schema BM25 window afterwards — previously a scoped search + could come back nearly empty whenever that schema's matches ranked below the + window. + + The AI `search` tool also reports how it matched: results carry `index` + (`'fts5'` or `'scan'`), `degraded`, and a `notice` when the full-text index was + unavailable, so an agent can tell a substring scan over a truncated window from + an exhaustive search rather than concluding a node does not exist. + +- [#619](https://github.com/crs48/xNet/pull/619) [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c) Thanks [@crs48](https://github.com/crs48)! - Play well with the ATmosphere (exploration 0389). `@xnetjs/data` gains + `RecordLens` — a node↔lexicon mapping that preserves foreign fields another app + wrote (unlike `SchemaLens`, whose one-way `backward` would eat them under + `putRecord`'s whole-object replace) — a concrete `pageToDocumentLens` projecting + a Page onto the adopted `site.standard.document` lexicon with one minted + `fyi.xnet.richBody` block, an authoring-time `publish` guard that flags + unprojectable properties (floats, formulas) at `defineSchema` time, and an + `AtmospherePublishState` machine encoding the publish one-way door (Withdraw, + never make-private; gated content never crosses to the public rail). + `@xnetjs/sync` gains signed `SpaceSnapshot` — an order-independent, verifiable + checkpoint over a Space frontier — the shared primitive that bounded replay, + anti-entropy, and encrypted atmosphere backup all needed. + +- [#614](https://github.com/crs48/xNet/pull/614) [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614) Thanks [@crs48](https://github.com/crs48)! - Richer attachment previews. Images and video get a small preview generated when they are attached, stored alongside the file and synced ahead of it, so cells show a thumbnail before the full file arrives. The lightbox now plays video and audio inline and displays PDFs in the browser's viewer. `FileRef` gained optional `width`, `height`, and `thumbCid` fields, and the SQLite devtools panel reports how much space attachments are using. + +- [#614](https://github.com/crs48/xNet/pull/614) [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39) Thanks [@crs48](https://github.com/crs48)! - Database attachments now sync between devices. Previously a file cell synced its reference but not the bytes, so teammates saw an attachment that could never open. Uploads are now sent to the hub in the background after attaching, and peers fetch the bytes on first view — verified against the content hash before being stored. Files that cannot be fetched say "on another device" instead of rendering blank. Workspaces without a hub keep working exactly as before. + +- [#614](https://github.com/crs48/xNet/pull/614) [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7) Thanks [@crs48](https://github.com/crs48)! - Fix attachments over 1 MB failing to sync. Large files are stored as chunks behind a manifest, and the manifest's identifier is what the file reference carries — so uploading the reassembled file was rejected by the hub's content check, and every attachment above 1 MB silently failed to reach other devices. Transfers now send each stored blob under its own content hash, chunks before the manifest, and verify each one on the way back down. + +- [#680](https://github.com/crs48/xNet/pull/680) [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d) Thanks [@crs48](https://github.com/crs48)! - Add `proposePromotion`/`proposePromotions` — propose graduating an accumulated + `ext:` overlay key into a core schema property once enough rows carry it. Both + return a proposal carrying a reversible `SchemaLens`, so accepting a promotion + can be undone; nothing mutates and nothing is inferred silently. + +- [#679](https://github.com/crs48/xNet/pull/679) [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8) Thanks [@crs48](https://github.com/crs48)! - Relationships can now record what two people actually do together, instead of + just what you call them. + + Words like "spouse", "friend" and "coworker" are shorthand for a bundle of + typical activities, and `Relationship.kind` only ever stored the shorthand. Two + new schemas capture the part it was dropping: `RelationshipPrimitive` is one + term in an open, user-extensible vocabulary of shared activities ("make things", + "have hard conversations", "cohabitate"), and `Practice` records one such + activity between a pair. + + The label is now derived rather than stored. `deriveBundle()` in `@xnetjs/crm` + reads which bundle a pair resembles from the activities they share, and returns + the **set difference** — activities common to that kind of relationship they + don't share — as possibilities to consider. It never grades the relationship + itself; a new `scored intimacy` CI rule and Charter §6 clause keep it that way. + + `Practice` defaults to `private` visibility rather than `inherit`, because a + practice is a claim about a pair authored by one side. Erasing a contact deletes + their practices outright (`practiceErasureIds()`) rather than anonymizing them — + for this record the claim is the payload, so a blanked practice would still + disclose through the other end of the edge. + +- [#666](https://github.com/crs48/xNet/pull/666) [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf) Thanks [@crs48](https://github.com/crs48)! - Add the `Recording` and `RecordingTranscript` schemas for local-first screen + recording (exploration 0414). + + A `Recording` holds immutable screen and camera track references plus the + _edit_ — a `cuts` list, `chapters`, and a `cameraLayout` — so trimming a + recording is a field write rather than a re-encode, and every cut stays + reversible. `RecordingTranscript` carries timed segments with optional + word-level timings, and a `verbatim` flag that gates filler-word editing on + engines which actually preserve disfluencies. + + New exports: `RecordingSchema`, `RecordingTranscriptSchema`, + `RECORDING_SCHEMA_IRI`, `RECORDING_TRANSCRIPT_SCHEMA_IRI`, `CUT_REASONS`, + `CAMERA_CORNERS`, `CAMERA_SHAPES`, `CAPTURE_PATHS`, `DEFAULT_CAMERA_LAYOUT`, + and the `Recording`, `RecordingTranscript`, `RecordingSegment`, `Cut`, + `CutReason`, `Chapter`, `CameraLayout`, `CameraCorner`, `CameraShape` and + `CapturePathId` types. Purely additive — no existing export changed. + +- [#678](https://github.com/crs48/xNet/pull/678) [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84) Thanks [@crs48](https://github.com/crs48)! - Resolve a hub's address from a stable name instead of hard-coding its URL. + + A managed hub's URL belongs to whoever hosts it today, so moving it between + regions or substrates silently misconfigured every device that had stored it. + `XNetConfig.hubAddress` now takes a name and a resolver: the client resolves + once, caches the answer, and connects to the hub **directly** — nothing proxies + your traffic. `hubUrl` still works unchanged and is used as the fallback until + resolution succeeds, so a resolver outage costs freshness, never reachability. + - `@xnetjs/runtime` adds `resolveHubUrl`, `httpResolver`, and the + `HubAddressRecord` types. Records are signed by the hub itself, so a resolver + can cache one but cannot change where you connect. + - `@xnetjs/react` adds `useResolvedHubUrl` and the `hubAddress` config option. + A hub that is waking from cold now reports as waking, with a retry hint, + instead of looking like an outage. + - `@xnetjs/data` records the last-known hub address inside `.xnetpack` + manifests, under the signature, so an export on its own is enough to + reconnect. + + All three additions are additive; existing configuration and bundles are + unaffected. + +- [#676](https://github.com/crs48/xNet/pull/676) [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4) Thanks [@crs48](https://github.com/crs48)! - Export the `NodeProperties` type from the root barrel. It was already exported + from `@xnetjs/data/schema` and is the parameter type of every `RecordLens` + `forward`/`backward`, so anyone writing a lens against the root entry point had + no way to name it. + +### Patch Changes + +- Updated dependencies [[`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171)]: + - @xnetjs/identity@4.0.0 + - @xnetjs/sqlite@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/storage@4.0.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Minor Changes diff --git a/packages/data/package.json b/packages/data/package.json index f2c90e87a..e89c31d97 100644 --- a/packages/data/package.json +++ b/packages/data/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/data", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/devkit/CHANGELOG.md b/packages/devkit/CHANGELOG.md index 0e2b500be..a8559d9c8 100644 --- a/packages/devkit/CHANGELOG.md +++ b/packages/devkit/CHANGELOG.md @@ -1,5 +1,92 @@ # @xnetjs/devkit +## 1.1.0 + +### Minor Changes + +- [#668](https://github.com/crs48/xNet/pull/668) [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91) Thanks [@crs48](https://github.com/crs48)! - Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). + + **`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport + from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the + proof verifier injected so no ecosystem-specific dependency enters the package. + Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a + denylist entry and `verifyAgentPassport()` consults one via the new + `revocations` option. + + **`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize + and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the + passport, every change's hash and signature, the unbroken per-author chain (which + is what catches a _removed_ action), and that every high/critical action carries + an operator-signed approval. + + **`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent + reads and raises a typed `EgressBudgetError` rather than returning a silently + truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the + bridge lane speaks, via the new `onFrame` runtime option. + + **`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive + Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport + (`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread + instead of replaying history. `createPermissionBroker()` plus + `POST /v1/agent/permission` give the bridge a real answer channel, so a + permission request can be approved in-app instead of only displayed. + + **`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit + bundle offline and exits non-zero on any problem. + + All additions are additive; no existing export changed shape. + +- [#623](https://github.com/crs48/xNet/pull/623) [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504) Thanks [@crs48](https://github.com/crs48)! - Structured agent frames for the bridge (exploration 0392). The agent bridge can + now stream a turn as structured `AgentFrame`s — tool calls, tool results, + permission requests, cost, and session id — over a new framed endpoint + (`POST /v1/agent/stream`) instead of only text. `@xnetjs/devkit` exports the + `AgentFrame` vocabulary, `foldStreamJsonFrames`, and `streamTurnFrames` on the + Claude streaming agent; the existing OpenAI-compatible `/v1/chat/completions` + endpoint is unchanged. The bridge session map can now be made durable + (`fileSessionPersistence`) so `--resume` sessions survive a daemon restart, and + `xnet bridge serve --agent claude` wires this automatically. + + `@xnetjs/plugins` adds a models.dev catalog consumer (`fetchModelsDevCatalog`, + with a vendored snapshot fallback for offline/outage) for cloud-key and local + model pickers, and now sends OpenRouter app-attribution headers + (`HTTP-Referer` / `X-Title`) on OpenRouter-bound requests. + +- [#620](https://github.com/crs48/xNet/pull/620) [`3aac04b`](https://github.com/crs48/xNet/commit/3aac04bd1de08d7cf7208eee47810f3973ffb2ff) Thanks [@crs48](https://github.com/crs48)! - Workspace writes from the bridged agent are now consent-gated. The devkit + exports a read-only MCP tool tier (`XNET_READONLY_ALLOWED_TOOLS`) and + `buildAgentArgs`/`buildStreamingAgentArgs` accept multiple allowed-tool + patterns; `xnet bridge serve` defaults the agent to read-only workspace + tools and requires `--allow-writes` to enable create/update/delete. + +- [#620](https://github.com/crs48/xNet/pull/620) [`cd87b4d`](https://github.com/crs48/xNet/commit/cd87b4d5a462d2cee0eeea57b62df7147b0abe18) Thanks [@crs48](https://github.com/crs48)! - The local agent bridge now streams Claude Code replies live and carries + conversations across turns. `cliStreamingChatAgent` drives Claude's + `stream-json` headless mode with partial deltas forwarded as they arrive, + the bridge maps conversations to CLI sessions (`--resume`) via transcript + fingerprints, timeouts are idle-based instead of a 120s wall-clock cap, and + chat turns run in a dedicated `~/.xnet/agent-home` working directory. + Workspace tools (`--mcp`) are on by default for the Claude agent + (`--no-mcp` opts out). New: `xnet bridge install` / `uninstall` manage a + macOS launchd login item with a stable pairing code, and `xnet doctor` + reports bridge daemon health. + +- [#638](https://github.com/crs48/xNet/pull/638) [`77e2ac5`](https://github.com/crs48/xNet/commit/77e2ac5c7c3a3f7994d478277d2babb1e0c20607) Thanks [@crs48](https://github.com/crs48)! - Add `mcpHttpConfigFor` for pointing a coding agent at an already-running MCP + server over Streamable HTTP, alongside the existing `mcpConfigFor` for servers + the agent spawns itself. This is how a host application hands the agent its + tools without shipping a CLI for it to launch: the app serves the workspace from + its own process and passes the URL plus a pairing header. + +- [#631](https://github.com/crs48/xNet/pull/631) [`6737116`](https://github.com/crs48/xNet/commit/67371169d213f0ac9388af9ae78e9ece8726b069) Thanks [@crs48](https://github.com/crs48)! - Add the point-and-change substrate from exploration 0399. + + `@xnetjs/devkit` gains `resolveLane()` (plus `workspaceOf`, `isKernel`, + `lane3Prompt`) on a new browser-safe `./blast-radius` subpath, and the Lane 3 + preconditions `probeDevEnvironment`, `assertEditable`, `previewWorktree`, and + `reviewWorktree`. `openPullRequest()` now opens a **draft** by default — pass + `draft: false` for the previous behaviour. + + `@xnetjs/ui` exposes the theme token-override contract (`setThemeToken`, + `clearThemeToken`, `clearThemeTokens`, `readTokenOverrides`, + `applyTokenOverrides`) as plain functions usable outside `ThemeProvider`, and + `useTheme()` gains `tokenOverrides` / `setToken` / `clearToken` / `clearTokens`. + ## 1.0.1 ### Patch Changes diff --git a/packages/devkit/package.json b/packages/devkit/package.json index c651f857a..86813c2d7 100644 --- a/packages/devkit/package.json +++ b/packages/devkit/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/devkit", - "version": "1.0.1", + "version": "1.1.0", "description": "The agentic dev-loop core (exploration 0190): isolate in a git worktree, let a bring-your-own coding agent edit, run a validation gate, then checkpoint or roll back. Injectable command runner; zero runtime dependencies.", "license": "MIT", "type": "module", diff --git a/packages/entitlements/CHANGELOG.md b/packages/entitlements/CHANGELOG.md index a37860e6e..313f68106 100644 --- a/packages/entitlements/CHANGELOG.md +++ b/packages/entitlements/CHANGELOG.md @@ -1,5 +1,44 @@ # @xnetjs/entitlements +## 1.0.0 + +### Major Changes + +- [#673](https://github.com/crs48/xNet/pull/673) [`0a0dff5`](https://github.com/crs48/xNet/commit/0a0dff533b209f533aa104de0cea731fd707aab9) Thanks [@crs48](https://github.com/crs48)! - Billing read-only mode (exploration 0418). + + **`@xnetjs/entitlements`** — `PlanEntitlements` gains a required `writesEnabled` + field. This is a **wire-contract change**: the entitlement token is signed by the + control plane and verified by the hub, so the shape both sides agree on has + changed and the bump is major even though the field is additive in practice. + + The field is not a plan feature — every entry in `PLAN_CATALOG` sets it to + `true`. It is the lever the non-payment lifecycle pulls: when a managed tenant's + payment grace window lapses, the control plane re-issues the entitlement with + `writesEnabled: false` and the hub stops accepting new data while keeping every + byte readable and exportable. + + `verifyEntitlements` normalizes a **missing** `writesEnabled` to `true`, so + tokens signed before this field existed keep working across the rollover. Only an + explicit `false` blocks writes. + + **`@xnetjs/hub`** — `HubConfig` gains an optional `writesEnabled`, resolved from + the signed entitlement by the new `resolveWritesEnabled` config resolver. Two + enforcement points: + - a Hono middleware refusing mutating HTTP verbs with + `507 { code: 'billing_read_only' }`, with an allowlist so billing, auth, export + and POST-shaped reads (`/query`, `/search`) keep working — a customer must + never be locked out of the checkout page that ends their read-only state; + - `NodeRelayService`, which raises `NodeRelayError('BILLING_READ_ONLY', …)`, + because the change log arrives over the sync socket and an HTTP-only guard + would stop nothing. + + A self-hosted hub has no `HUB_PLAN` token, never resolves `writesEnabled: false`, + and is unaffected — the anti-lock-in invariant from exploration 0174. + +### Minor Changes + +- [#699](https://github.com/crs48/xNet/pull/699) [`a8318a6`](https://github.com/crs48/xNet/commit/a8318a691bd0501006b9fba5e94fea19eadefd0b) Thanks [@crs48](https://github.com/crs48)! - Seat helpers for tenant rosters: `seatsUsed()` and `canAdmitMember()`, plus a `TenantMemberRole` in which `guest` is admitted but never billed. A seat is capacity provisioned for a collaborator, not an audience member the customer brought — so a flat-billed plan is never capped, and enforcement refuses admission rather than evicting anyone already connected. + ## 0.0.2 ### Patch Changes diff --git a/packages/entitlements/package.json b/packages/entitlements/package.json index dc9c5eaff..c7215c3a8 100644 --- a/packages/entitlements/package.json +++ b/packages/entitlements/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/entitlements", - "version": "0.0.2", + "version": "1.0.0", "description": "Plan catalog + signed HUB_PLAN entitlement tokens — the contract shared by the self-hostable hub and the xNet Cloud control plane.", "license": "MIT", "type": "module", diff --git a/packages/history/CHANGELOG.md b/packages/history/CHANGELOG.md index 316e8ab27..1a9605662 100644 --- a/packages/history/CHANGELOG.md +++ b/packages/history/CHANGELOG.md @@ -1,5 +1,14 @@ # @xnetjs/history +## 4.0.0 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/history/package.json b/packages/history/package.json index 68c7151d7..0ba128a05 100644 --- a/packages/history/package.json +++ b/packages/history/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/history", - "version": "3.0.0", + "version": "4.0.0", "description": "History, audit & time travel for xNet (point-in-time reconstruction, undo/redo, diffs, blame, verification)", "license": "MIT", "repository": { diff --git a/packages/identity/CHANGELOG.md b/packages/identity/CHANGELOG.md index 5cef7b7d7..3dc9ba134 100644 --- a/packages/identity/CHANGELOG.md +++ b/packages/identity/CHANGELOG.md @@ -1,5 +1,47 @@ # @xnetjs/identity +## 4.0.0 + +### Minor Changes + +- [#668](https://github.com/crs48/xNet/pull/668) [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91) Thanks [@crs48](https://github.com/crs48)! - Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). + + **`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport + from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the + proof verifier injected so no ecosystem-specific dependency enters the package. + Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a + denylist entry and `verifyAgentPassport()` consults one via the new + `revocations` option. + + **`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize + and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the + passport, every change's hash and signature, the unbroken per-author chain (which + is what catches a _removed_ action), and that every high/critical action carries + an operator-signed approval. + + **`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent + reads and raises a typed `EgressBudgetError` rather than returning a silently + truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the + bridge lane speaks, via the new `onFrame` runtime option. + + **`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive + Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport + (`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread + instead of replaying history. `createPermissionBroker()` plus + `POST /v1/agent/permission` give the bridge a real answer channel, so a + permission request can be approved in-app instead of only displayed. + + **`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit + bundle offline and exits non-zero on any problem. + + All additions are additive; no existing export changed shape. + +### Patch Changes + +- Updated dependencies []: + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Major Changes diff --git a/packages/identity/package.json b/packages/identity/package.json index f2ac0251c..b040faa04 100644 --- a/packages/identity/package.json +++ b/packages/identity/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/identity", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/labs/CHANGELOG.md b/packages/labs/CHANGELOG.md index 643b51279..8b1176a9c 100644 --- a/packages/labs/CHANGELOG.md +++ b/packages/labs/CHANGELOG.md @@ -1,5 +1,13 @@ # @xnetjs/labs +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/labs/package.json b/packages/labs/package.json index 607601a89..96521e48d 100644 --- a/packages/labs/package.json +++ b/packages/labs/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/labs", - "version": "0.0.25", + "version": "0.0.26", "license": "MIT", "repository": { "type": "git", diff --git a/packages/licenses/CHANGELOG.md b/packages/licenses/CHANGELOG.md index 2ec41bc0c..dac11db78 100644 --- a/packages/licenses/CHANGELOG.md +++ b/packages/licenses/CHANGELOG.md @@ -1,5 +1,12 @@ # @xnetjs/licenses +## 0.0.26 + +### Patch Changes + +- Updated dependencies []: + - @xnetjs/crypto@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/licenses/package.json b/packages/licenses/package.json index 2089c0b4c..8ba355e39 100644 --- a/packages/licenses/package.json +++ b/packages/licenses/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/licenses", - "version": "0.0.25", + "version": "0.0.26", "description": "Ed25519-signed, DID-bound plugin license tokens — the offline-verifiable entitlement spine for the paid plugin marketplace (exploration 0196).", "license": "MIT", "type": "module", diff --git a/packages/maps/CHANGELOG.md b/packages/maps/CHANGELOG.md index 62589de5f..3ca7e8b6b 100644 --- a/packages/maps/CHANGELOG.md +++ b/packages/maps/CHANGELOG.md @@ -1,5 +1,12 @@ # @xnetjs/maps +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/maps/package.json b/packages/maps/package.json index 9b3959f11..196b45bd2 100644 --- a/packages/maps/package.json +++ b/packages/maps/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/maps", - "version": "0.0.25", + "version": "0.0.26", "type": "module", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/meetings/CHANGELOG.md b/packages/meetings/CHANGELOG.md index 5ea2577b7..ca1fd422f 100644 --- a/packages/meetings/CHANGELOG.md +++ b/packages/meetings/CHANGELOG.md @@ -1,5 +1,13 @@ # @xnetjs/meetings +## 0.0.19 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + ## 0.0.18 ### Patch Changes diff --git a/packages/meetings/package.json b/packages/meetings/package.json index 672527a49..a90f8467f 100644 --- a/packages/meetings/package.json +++ b/packages/meetings/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/meetings", - "version": "0.0.18", + "version": "0.0.19", "description": "Botless meeting transcription + AI notes (exploration 0279). Platform-agnostic capture session (VAD chunking, Me/Them channel attribution, batched segment upserts), swappable-engine selection over @xnetjs/dictation, and the enhancement/template/chat logic. Audio capture itself is platform code (Electron/web); this package is the pure core.", "license": "MIT", "type": "module", diff --git a/packages/plugins/CHANGELOG.md b/packages/plugins/CHANGELOG.md index 75ae05da6..0e1856b22 100644 --- a/packages/plugins/CHANGELOG.md +++ b/packages/plugins/CHANGELOG.md @@ -1,5 +1,201 @@ # @xnetjs/plugins +## 4.0.0 + +### Major Changes + +- [#667](https://github.com/crs48/xNet/pull/667) [`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf) Thanks [@crs48](https://github.com/crs48)! - Coding agents now get xNet's real retrieval, and a search that admits when it + couldn't do its job. + + Every agent lane — the `xnet` CLI, `xnet mcp serve`, and the bridged agent + inside the desktop app — previously built its AI surface with no retriever and + fell back to a substring scan over the first 500 nodes, then rendered that + result identically to an exhaustive search. All three now go through one + `createAgentRetrieval()` construction path (enforced by a build guard), and + `xnet search` leads with the tier it actually ran at, warning on stderr when it + degraded. + + New: `xnet recall` and the `xnet_recall` MCP tool return a budgeted context pack + where each hit carries the graph path it was reached by; `xnet serve` keeps the + read path warm behind a unix socket; `xnet remember` / `forget` / `memories` / + `distill` give the agent memory across sessions; and `api.recall` / `api.graph` + let a sandboxed `xnet run` script reach past its loaded slice. + + **Breaking (`@xnetjs/plugins`)**: `AgentApi` gains required `recall` and `graph` + methods and `AgentScriptSession` gains `getRequestedContext()` — implementors of + those interfaces must update. `MCP_CORE_TOOL_NAMES` gains `xnet_recall`, and + `XNET_AGENT_SKILL_MD` has been rewritten. + + **Breaking (`@xnetjs/cli`)**: `AgentCliServices` gains a required `retrieval` + field, and `runSearch` output now begins with a `tier` provenance line — anything + parsing its first line as the column header must skip it. + +### Minor Changes + +- [#668](https://github.com/crs48/xNet/pull/668) [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91) Thanks [@crs48](https://github.com/crs48)! - Agent accountability substrate and JSON-RPC agent adapters (exploration 0416). + + **`@xnetjs/identity`** — `enrollForeignAgent()` mints a scoped Agent Passport + from a verified foreign credential (a Buzz `npub`, an A2A agent card), with the + proof verifier injected so no ecosystem-specific dependency enters the package. + Passport revocation is no longer expiry-only: `revokeAgentPassport()` signs a + denylist entry and `verifyAgentPassport()` consults one via the new + `revocations` option. + + **`@xnetjs/data`** — new `@xnetjs/data/agent-audit` sub-entry: build, serialize + and **offline-verify** an `AgentAuditBundle`. `verifyAgentAudit()` checks the + passport, every change's hash and signature, the unbroken per-author chain (which + is what catches a _removed_ action), and that every high/critical action carries + an operator-signed approval. + + **`@xnetjs/plugins`** — a per-session egress budget (`EgressMeter`) meters agent + reads and raises a typed `EgressBudgetError` rather than returning a silently + truncated result. The model lane now emits the same `AiAgentFrame` vocabulary the + bridge lane speaks, via the new `onFrame` runtime option. + + **`@xnetjs/devkit`** — `codexAppServerChatAgent()` and `acpChatAgent()` drive + Codex `app-server` and any ACP agent over a new JSON-RPC-over-stdio transport + (`JsonRpcSession`, `NodeDuplexRunner`), so conversations resume on a thread + instead of replaying history. `createPermissionBroker()` plus + `POST /v1/agent/permission` give the bridge a real answer channel, so a + permission request can be approved in-app instead of only displayed. + + **`@xnetjs/cli`** — `xnet audit verify ` verifies an exported audit + bundle offline and exits non-zero on any problem. + + All additions are additive; no existing export changed shape. + +- [#712](https://github.com/crs48/xNet/pull/712) [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc) Thanks [@crs48](https://github.com/crs48)! - Plugin composition runtime (exploration 0455): new `EffectScope` (nested, reverse-order, awaited disposal — `ExtensionContext.scope` backs `subscriptions`, and deactivation now awaits teardown) and `ServiceRegistry` (`provide`/`get`/`watch`/`inject` with availability semantics). `AiSurfaceService` and the MCP server resolve `agent-tools` providers live from a registry, so plugin-, connector-, and workspace-plugin-contributed tools reach every host — a plugin activating mid-session adds its tools to `tools/list` without a restart. `xnet mcp serve` (and the desktop agent bridge) now expose the `plugin_*` workspace-plugin tools. Manifests gain validated optional `provides`/`inject` service-name declarations; `Disposable.dispose` may now return a promise. + +- [#623](https://github.com/crs48/xNet/pull/623) [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504) Thanks [@crs48](https://github.com/crs48)! - Structured agent frames for the bridge (exploration 0392). The agent bridge can + now stream a turn as structured `AgentFrame`s — tool calls, tool results, + permission requests, cost, and session id — over a new framed endpoint + (`POST /v1/agent/stream`) instead of only text. `@xnetjs/devkit` exports the + `AgentFrame` vocabulary, `foldStreamJsonFrames`, and `streamTurnFrames` on the + Claude streaming agent; the existing OpenAI-compatible `/v1/chat/completions` + endpoint is unchanged. The bridge session map can now be made durable + (`fileSessionPersistence`) so `--resume` sessions survive a daemon restart, and + `xnet bridge serve --agent claude` wires this automatically. + + `@xnetjs/plugins` adds a models.dev catalog consumer (`fetchModelsDevCatalog`, + with a vendored snapshot fallback for offline/outage) for cloud-key and local + model pickers, and now sends OpenRouter app-attribution headers + (`HTTP-Referer` / `X-Title`) on OpenRouter-bound requests. + +- [#629](https://github.com/crs48/xNet/pull/629) [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867) Thanks [@crs48](https://github.com/crs48)! - The in-app AI runtime can execute tools. `AiAgentRuntime` gains `tools`, + `executeTool`, `allowedTools` and `maxToolSteps`: when a model asks for a tool + the runtime runs it, feeds the result back as a `role: 'tool'` message, and + asks again, bounded by `maxToolSteps`. The allow-list is enforced in code — a + call outside it is refused before execution and reported back to the model — + and a throwing tool becomes an error message the model can recover from rather + than a failed turn. A new `tool.result` event carries each outcome. + + Without an `executeTool` the runtime behaves exactly as before: tool calls are + recorded and never run. + +- [#620](https://github.com/crs48/xNet/pull/620) [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61) Thanks [@crs48](https://github.com/crs48)! - AI retrieval now uses the FTS5 index instead of scanning. `NodeStore` (and + the storage adapter contract) gain an optional `searchText(query, limit)` + that runs a cross-schema BM25 search over `nodes_fts`; the AI surface's + `search` tool prefers it and falls back to the substring scan only when the + storage has no FTS support. + +- [#629](https://github.com/crs48/xNet/pull/629) [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d) Thanks [@crs48](https://github.com/crs48)! - Schema-scoped AI search now returns a full page of results. `searchNodes` and + `NodeStore.searchText` accept an optional `schemaId` that is pushed into the + FTS5 query (joining `nodes`, excluding soft-deleted rows) instead of being + applied to a cross-schema BM25 window afterwards — previously a scoped search + could come back nearly empty whenever that schema's matches ranked below the + window. + + The AI `search` tool also reports how it matched: results carry `index` + (`'fts5'` or `'scan'`), `degraded`, and a `notice` when the full-text index was + unavailable, so an agent can tell a substring scan over a truncated window from + an exhaustive search rather than concluding a node does not exist. + +- [#637](https://github.com/crs48/xNet/pull/637) [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa) Thanks [@crs48](https://github.com/crs48)! - `xnet_query` and `xnet_create` now honour the `schemaId` argument. Both tools + read `schemaId` first and keep `schema` as a deprecated alias — previously they + read only `schema`, so an MCP client that passed `schemaId` (the field name + every node carries) had its filter dropped: `xnet_query` fell through to an + unfiltered `store.list` and answered "my pages" with nodes of every schema, + while `xnet_create` could mint a node with no schema at all. + + A call that supplies neither spelling now fails with a clear error instead of + widening to every node. + +- [#665](https://github.com/crs48/xNet/pull/665) [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36) Thanks [@crs48](https://github.com/crs48)! - Parked agent approvals are now reachable by the host. + + `AgentAuditRecorder` decides whether a call needs a human but does not hold the + call open while one is found, and `approveFromApp` had no caller outside the + in-app AI panel. A high or critical action from any other surface — a bridged + coding agent, an MCP client — therefore parked where nothing could release it + and expired silently. + - New `createApprovalBroker(recorder, options)` (exported from the root barrel): + headless park/settle over a recorder, with a change subscription. `maxWaitMs` + bounds how long a caller waits without un-parking the action, so a transport + timeout never looks like a decision. + - `MCPServer` configured with `agentAudit` now **parks** medium+ risk tool + calls instead of returning a pending payload, so an approval resumes the + agent's turn with the real result. New `listParkedApprovals()`, + `onParkedApprovalsChanged()`, `approveParkedApproval(actionId, approverDID)` + and `denyParkedApproval(actionId)` give the host the release path that + high/critical actions require by design. + - `agentAudit` accepts `approvalWaitMs` (default 55s) alongside `approvalTtlMs`. + - `createAgentCeremonyTools(recorder, broker?)` takes the broker so a relayed + `APPROVE ` settles the parked call rather than applying the action + beside a caller still waiting. + + Behaviour change for embedders: with `agentAudit` configured, a medium+ risk + `tools/call` no longer resolves immediately with `{ pending: true }`. It + resolves when the operator decides, or — after `approvalWaitMs` — with a + still-pending payload that leaves the action parked. + +- [#687](https://github.com/crs48/xNet/pull/687) [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d) Thanks [@crs48](https://github.com/crs48)! - Retrieval now reports how it searched, not just what it found. + + `WorkspaceRetrieval.retrieveContext` returns `{ nodes, provenance }` instead of + a bare node array — a **breaking** change for direct callers, who previously + got the nodes and no way to learn that the search had fallen back to a bounded + substring scan. Use `result.nodes` where you used the array, and + `result.provenance` for the tier, the `degraded` flag and a printable notice. + + On the `@xnetjs/plugins` side everything is additive: `AiContextRetriever` + accepts either shape, `AiContextPack` gained an optional `retrieval` field, and + a resource's `citation` gained the optional `path` the retriever had always + computed and the pack had always dropped. + + `SCAN_NOTICE` is now exported from `@xnetjs/brain` so every lane warns in the + same words. + +### Patch Changes + +- [#621](https://github.com/crs48/xNet/pull/621) [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62) Thanks [@crs48](https://github.com/crs48)! - Correct the deployed web app's origin in the agent-bridge origin examples: the + PWA lives at `https://xnet.fyi/app`, so the origin to allow is + `https://xnet.fyi` — not the nonexistent `app.xnet.fyi`. Updates `xnet bridge +serve|install --allow-origin` help text and the `appOrigin` doc example. + +- [#627](https://github.com/crs48/xNet/pull/627) [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310) Thanks [@crs48](https://github.com/crs48)! - Use xNet from inside a coding agent (exploration 0393). A new + `xnet connect claude-code|codex` command wires a coding agent to the workspace + in one idempotent step: it installs the agent skill, registers the `xnet` MCP + server (read-only by default, `--writes` to enable), writes a `CLAUDE.md`/ + `AGENTS.md` contract, and can bootstrap a scoped vault checkout. It ships a + first-party Claude Code plugin (`packages/cli/plugin/`) whose bundled skill is + kept byte-identical to `xnet skill` by a CI guard. + + The agent verbs (`checkout`/`status`/`commit`/`search`/`query`/`db`/`daemon`) + now resolve a backend automatically instead of hard-requiring the running app: + they probe the local API and otherwise fall back to a standalone SQLite store + via `--db`/`$XNET_DB` or a discovered data directory. New `--db`/`--agent`/ + `--key` flags select the store and signing identity; local writes refuse a + silent ephemeral identity. `xnet doctor --agent-access` reports backend, + full-text search, and identity reachability, and `xnet mcp serve` gains a + `--read-only` mode (also `$XNET_READONLY=1`). + + `@xnetjs/plugins` refreshes the agent `SKILL.md` with an explicit CLI-first lane + hierarchy, scoped-checkout guidance, and write-consent rules. + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`f357971`](https://github.com/crs48/xNet/commit/f357971de9d325aeb31520631cec8339dfc94e7c), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d)]: + - @xnetjs/data@4.0.0 + - @xnetjs/brain@1.0.0 + - @xnetjs/abuse@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Minor Changes diff --git a/packages/plugins/package.json b/packages/plugins/package.json index b6ccc344b..97a0ec6f4 100644 --- a/packages/plugins/package.json +++ b/packages/plugins/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/plugins", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md index dd1f25325..954f2da3d 100644 --- a/packages/react/CHANGELOG.md +++ b/packages/react/CHANGELOG.md @@ -1,5 +1,63 @@ # @xnetjs/react +## 4.0.0 + +### Minor Changes + +- [#674](https://github.com/crs48/xNet/pull/674) [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171) Thanks [@crs48](https://github.com/crs48)! - Imported social content is now actually in the full-text index, and a saved + lens can be projected onto a canvas with its relationships. + + `extractSearchableContent` read `content`, `description`, `body`, `name` and + `note` — but not `searchText`, the property imported social records + denormalize their full text into precisely so it can be searched. Every + imported post, comment and video transcript was therefore absent from + `nodes_fts` while the pipeline reported it as indexed: search returned a clean + empty result rather than an error. `searchText` is now indexed, with + `textPreview` as the fallback for records that carry no full text. **Existing + databases need `rebuildFTS()` to pick up already-imported rows** — new writes + are indexed correctly from here on. + + `SavedViewVisualCanvasProjectionRequest` gains an `edges` array (filtered to + relationships whose endpoints both survived the projection cap), and the new + `SavedViewCanvasProjectionEdge` type is exported. This is what lets a consumer + lay a saved view out as a graph rather than an unconnected grid of cards. + +- [#678](https://github.com/crs48/xNet/pull/678) [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84) Thanks [@crs48](https://github.com/crs48)! - Resolve a hub's address from a stable name instead of hard-coding its URL. + + A managed hub's URL belongs to whoever hosts it today, so moving it between + regions or substrates silently misconfigured every device that had stored it. + `XNetConfig.hubAddress` now takes a name and a resolver: the client resolves + once, caches the answer, and connects to the hub **directly** — nothing proxies + your traffic. `hubUrl` still works unchanged and is used as the fallback until + resolution succeeds, so a resolver outage costs freshness, never reachability. + - `@xnetjs/runtime` adds `resolveHubUrl`, `httpResolver`, and the + `HubAddressRecord` types. Records are signed by the hub itself, so a resolver + can cache one but cannot change where you connect. + - `@xnetjs/react` adds `useResolvedHubUrl` and the `hubAddress` config option. + A hub that is waking from cold now reports as waking, with a retry hint, + instead of looking like an outage. + - `@xnetjs/data` records the last-known hub address inside `.xnetpack` + manifests, under the signature, so an export on its own is enough to + reconnect. + + All three additions are additive; existing configuration and bundles are + unaffected. + +### Patch Changes + +- [#712](https://github.com/crs48/xNet/pull/712) [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc) Thanks [@crs48](https://github.com/crs48)! - Plugin composition runtime (exploration 0455): new `EffectScope` (nested, reverse-order, awaited disposal — `ExtensionContext.scope` backs `subscriptions`, and deactivation now awaits teardown) and `ServiceRegistry` (`provide`/`get`/`watch`/`inject` with availability semantics). `AiSurfaceService` and the MCP server resolve `agent-tools` providers live from a registry, so plugin-, connector-, and workspace-plugin-contributed tools reach every host — a plugin activating mid-session adds its tools to `tools/list` without a restart. `xnet mcp serve` (and the desktop agent bridge) now expose the `plugin_*` workspace-plugin tools. Manifests gain validated optional `provides`/`inject` service-name declarations; `Disposable.dispose` may now return a promise. + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/runtime@0.7.0 + - @xnetjs/data-bridge@4.0.0 + - @xnetjs/history@4.0.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/react/package.json b/packages/react/package.json index 2fffb0ef0..d207566b4 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/react", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/recordings/CHANGELOG.md b/packages/recordings/CHANGELOG.md new file mode 100644 index 000000000..12c98eeac --- /dev/null +++ b/packages/recordings/CHANGELOG.md @@ -0,0 +1,10 @@ +# @xnetjs/recordings + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/meetings@0.0.19 diff --git a/packages/recordings/package.json b/packages/recordings/package.json index 12138ba4f..5eecb28a3 100644 --- a/packages/recordings/package.json +++ b/packages/recordings/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/recordings", - "version": "0.0.1", + "version": "0.0.2", "description": "Local-first screen recording core (exploration 0414). Pure, platform-agnostic logic: the edit decision list (cut maths, source/edited timeline mapping), auto-edit proposers (silence from a VAD envelope, filler words when the engine is verbatim), capture-path resolution, WebVTT captions, chapter prompting, camera-layout compositing maths, and the resumable-upload manifest. Capture itself is platform code (Electron helper / browser); this package never touches a frame.", "license": "MIT", "type": "module", diff --git a/packages/runtime/CHANGELOG.md b/packages/runtime/CHANGELOG.md index b41edab66..bd10ba544 100644 --- a/packages/runtime/CHANGELOG.md +++ b/packages/runtime/CHANGELOG.md @@ -1,5 +1,43 @@ # @xnetjs/runtime +## 0.7.0 + +### Minor Changes + +- [#678](https://github.com/crs48/xNet/pull/678) [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84) Thanks [@crs48](https://github.com/crs48)! - Resolve a hub's address from a stable name instead of hard-coding its URL. + + A managed hub's URL belongs to whoever hosts it today, so moving it between + regions or substrates silently misconfigured every device that had stored it. + `XNetConfig.hubAddress` now takes a name and a resolver: the client resolves + once, caches the answer, and connects to the hub **directly** — nothing proxies + your traffic. `hubUrl` still works unchanged and is used as the fallback until + resolution succeeds, so a resolver outage costs freshness, never reachability. + - `@xnetjs/runtime` adds `resolveHubUrl`, `httpResolver`, and the + `HubAddressRecord` types. Records are signed by the hub itself, so a resolver + can cache one but cannot change where you connect. + - `@xnetjs/react` adds `useResolvedHubUrl` and the `hubAddress` config option. + A hub that is waking from cold now reports as waking, with a retry hint, + instead of looking like an outage. + - `@xnetjs/data` records the last-known hub address inside `.xnetpack` + manifests, under the signature, so an export on its own is enough to + reconnect. + + All three additions are additive; existing configuration and bundles are + unaffected. + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/sync@4.0.0 + - @xnetjs/storage@4.0.0 + - @xnetjs/data-bridge@4.0.0 + - @xnetjs/history@4.0.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 0.6.0 ### Minor Changes diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 94bc9b3a1..616d13f19 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/runtime", - "version": "0.6.0", + "version": "0.7.0", "description": "Framework-agnostic xNet runtime: createXNetClient() and sync orchestration, usable from any framework, a CLI, a worker, or a Node service", "license": "MIT", "repository": { diff --git a/packages/server/CHANGELOG.md b/packages/server/CHANGELOG.md index 83568093d..3b46f72bd 100644 --- a/packages/server/CHANGELOG.md +++ b/packages/server/CHANGELOG.md @@ -1,5 +1,15 @@ # @xnetjs/server +## 0.0.25 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/identity@4.0.0 + - @xnetjs/data-bridge@4.0.0 + - @xnetjs/crypto@4.0.0 + ## 0.0.24 ### Patch Changes diff --git a/packages/server/package.json b/packages/server/package.json index 75f15059f..6996ee8d9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/server", - "version": "0.0.24", + "version": "0.0.25", "description": "Bring-your-own-backend server kit for xNet React: a framework-agnostic structured-query executor + mutation engine over a server-side NodeStore, with developer auth hooks (authenticate / authorizeRead / authorizeWrite) replacing UCAN/DID, and a trust spectrum (server | custodial | signed) for how end-user identity maps onto signed changes (exploration 0223).", "license": "MIT", "type": "module", diff --git a/packages/social/CHANGELOG.md b/packages/social/CHANGELOG.md index a52b6b59c..0f54bdf84 100644 --- a/packages/social/CHANGELOG.md +++ b/packages/social/CHANGELOG.md @@ -1,5 +1,13 @@ # @xnetjs/social +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + - @xnetjs/crypto@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/social/package.json b/packages/social/package.json index 58779d57f..ada6dd614 100644 --- a/packages/social/package.json +++ b/packages/social/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/social", - "version": "0.0.25", + "version": "0.0.26", "type": "module", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/sqlite/CHANGELOG.md b/packages/sqlite/CHANGELOG.md index e6f10ab34..7bf1273bf 100644 --- a/packages/sqlite/CHANGELOG.md +++ b/packages/sqlite/CHANGELOG.md @@ -1,5 +1,39 @@ # @xnetjs/sqlite +## 4.0.0 + +### Minor Changes + +- [#629](https://github.com/crs48/xNet/pull/629) [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d) Thanks [@crs48](https://github.com/crs48)! - Schema-scoped AI search now returns a full page of results. `searchNodes` and + `NodeStore.searchText` accept an optional `schemaId` that is pushed into the + FTS5 query (joining `nodes`, excluding soft-deleted rows) instead of being + applied to a cross-schema BM25 window afterwards — previously a scoped search + could come back nearly empty whenever that schema's matches ranked below the + window. + + The AI `search` tool also reports how it matched: results carry `index` + (`'fts5'` or `'scan'`), `degraded`, and a `notice` when the full-text index was + unavailable, so an agent can tell a substring scan over a truncated window from + an exhaustive search rather than concluding a node does not exist. + +- [#674](https://github.com/crs48/xNet/pull/674) [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171) Thanks [@crs48](https://github.com/crs48)! - Imported social content is now actually in the full-text index, and a saved + lens can be projected onto a canvas with its relationships. + + `extractSearchableContent` read `content`, `description`, `body`, `name` and + `note` — but not `searchText`, the property imported social records + denormalize their full text into precisely so it can be searched. Every + imported post, comment and video transcript was therefore absent from + `nodes_fts` while the pipeline reported it as indexed: search returned a clean + empty result rather than an error. `searchText` is now indexed, with + `textPreview` as the fallback for records that carry no full text. **Existing + databases need `rebuildFTS()` to pick up already-imported rows** — new writes + are indexed correctly from here on. + + `SavedViewVisualCanvasProjectionRequest` gains an `edges` array (filtered to + relationships whose endpoints both survived the projection cap), and the new + `SavedViewCanvasProjectionEdge` type is exported. This is what lets a consumer + lay a saved view out as a graph rather than an unconnected grid of cards. + ## 3.0.0 ### Patch Changes diff --git a/packages/sqlite/package.json b/packages/sqlite/package.json index 63ed54f23..30d3983ff 100644 --- a/packages/sqlite/package.json +++ b/packages/sqlite/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/sqlite", - "version": "3.0.0", + "version": "4.0.0", "description": "Unified SQLite adapter for xNet across all platforms", "license": "MIT", "repository": { diff --git a/packages/storage/CHANGELOG.md b/packages/storage/CHANGELOG.md index 2391bb43a..c5c319c70 100644 --- a/packages/storage/CHANGELOG.md +++ b/packages/storage/CHANGELOG.md @@ -1,5 +1,18 @@ # @xnetjs/storage +## 4.0.0 + +### Minor Changes + +- [#614](https://github.com/crs48/xNet/pull/614) [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7) Thanks [@crs48](https://github.com/crs48)! - Fix attachments over 1 MB failing to sync. Large files are stored as chunks behind a manifest, and the manifest's identifier is what the file reference carries — so uploading the reassembled file was rejected by the hub's content check, and every attachment above 1 MB silently failed to reach other devices. Transfers now send each stored blob under its own content hash, chunks before the manifest, and verify each one on the way back down. + +### Patch Changes + +- Updated dependencies [[`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171)]: + - @xnetjs/sqlite@4.0.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Patch Changes diff --git a/packages/storage/package.json b/packages/storage/package.json index 84a1ee408..b1966c9e9 100644 --- a/packages/storage/package.json +++ b/packages/storage/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/storage", - "version": "3.0.0", + "version": "4.0.0", "license": "MIT", "repository": { "type": "git", diff --git a/packages/sync/CHANGELOG.md b/packages/sync/CHANGELOG.md index 96d8f6477..241ec7574 100644 --- a/packages/sync/CHANGELOG.md +++ b/packages/sync/CHANGELOG.md @@ -1,5 +1,29 @@ # @xnetjs/sync +## 4.0.0 + +### Minor Changes + +- [#619](https://github.com/crs48/xNet/pull/619) [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c) Thanks [@crs48](https://github.com/crs48)! - Play well with the ATmosphere (exploration 0389). `@xnetjs/data` gains + `RecordLens` — a node↔lexicon mapping that preserves foreign fields another app + wrote (unlike `SchemaLens`, whose one-way `backward` would eat them under + `putRecord`'s whole-object replace) — a concrete `pageToDocumentLens` projecting + a Page onto the adopted `site.standard.document` lexicon with one minted + `fyi.xnet.richBody` block, an authoring-time `publish` guard that flags + unprojectable properties (floats, formulas) at `defineSchema` time, and an + `AtmospherePublishState` machine encoding the publish one-way door (Withdraw, + never make-private; gated content never crosses to the public rail). + `@xnetjs/sync` gains signed `SpaceSnapshot` — an order-independent, verifiable + checkpoint over a Space frontier — the shared primitive that bounded replay, + anti-entropy, and encrypted atmosphere backup all needed. + +### Patch Changes + +- Updated dependencies [[`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91)]: + - @xnetjs/identity@4.0.0 + - @xnetjs/crypto@4.0.0 + - @xnetjs/core@4.0.0 + ## 3.0.0 ### Minor Changes diff --git a/packages/sync/package.json b/packages/sync/package.json index 6a3b3e2af..f96cb166c 100644 --- a/packages/sync/package.json +++ b/packages/sync/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/sync", - "version": "3.0.0", + "version": "4.0.0", "description": "Unified sync primitives for xNet (Change, vector clocks, hash chains)", "license": "MIT", "repository": { diff --git a/packages/unreal/CHANGELOG.md b/packages/unreal/CHANGELOG.md index 0a6c61278..0914deed1 100644 --- a/packages/unreal/CHANGELOG.md +++ b/packages/unreal/CHANGELOG.md @@ -1,5 +1,12 @@ # @xnetjs/unreal +## 0.0.26 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4)]: + - @xnetjs/data@4.0.0 + ## 0.0.25 ### Patch Changes diff --git a/packages/unreal/package.json b/packages/unreal/package.json index 8a8b5eafb..886460432 100644 --- a/packages/unreal/package.json +++ b/packages/unreal/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/unreal", - "version": "0.0.25", + "version": "0.0.26", "description": "Unreal Engine 6 interop — the governed game connector (durable player data → xNet nodes), the save-file-not-netcode granularity guardrail, and the game-event → node mapping over the @xnetjs/data game-interop schema pack (exploration 0200).", "license": "MIT", "type": "module", diff --git a/packages/workbench/CHANGELOG.md b/packages/workbench/CHANGELOG.md new file mode 100644 index 000000000..ed8261d90 --- /dev/null +++ b/packages/workbench/CHANGELOG.md @@ -0,0 +1,20 @@ +# @xnetjs/workbench + +## 0.0.2 + +### Patch Changes + +- Updated dependencies [[`e8843ef`](https://github.com/crs48/xNet/commit/e8843ef392fbc649cea796917ceb0ee0b57f06cf), [`2c148e8`](https://github.com/crs48/xNet/commit/2c148e8f134b0062ea9bca7af888710834f1ad91), [`9c3db9c`](https://github.com/crs48/xNet/commit/9c3db9c0304c7585ab1163988ee8e8b6ab4875fc), [`380385c`](https://github.com/crs48/xNet/commit/380385cfdf006e91a8d6ca04424ddd2d2eedd504), [`8a5fff7`](https://github.com/crs48/xNet/commit/8a5fff73e9a2dc44362193013ba6a84224894867), [`705e9b7`](https://github.com/crs48/xNet/commit/705e9b7610b97b5f84c6329db5acf9bb04d11b61), [`8f46d59`](https://github.com/crs48/xNet/commit/8f46d59e4bf00629803a56a86407c977a7a7162d), [`06fb240`](https://github.com/crs48/xNet/commit/06fb240fc7ecf55b6364395602c1d906d4e2255c), [`c021369`](https://github.com/crs48/xNet/commit/c0213690a1342b8b5fc1605c9b4f3b7c1057b614), [`cd22c25`](https://github.com/crs48/xNet/commit/cd22c2530fb75cf7c16387e3e56abc9d2a8b5c39), [`f357971`](https://github.com/crs48/xNet/commit/f357971de9d325aeb31520631cec8339dfc94e7c), [`ff622ad`](https://github.com/crs48/xNet/commit/ff622adf3cc8abe844850d39dbe77ef7f111cb62), [`44a4ce0`](https://github.com/crs48/xNet/commit/44a4ce0f4423a74e230e17e01eb00232afccdcd7), [`921d2c8`](https://github.com/crs48/xNet/commit/921d2c81f96a983bf8f26445a235e63024498c2d), [`4d85c64`](https://github.com/crs48/xNet/commit/4d85c6435e55f6729f51621612e467be37eb70aa), [`730d30a`](https://github.com/crs48/xNet/commit/730d30a117ff20192a6e1a257ba544a8945cfe36), [`e5a940c`](https://github.com/crs48/xNet/commit/e5a940c5acaf94c98492e48d2a142f47a754b8a8), [`561e8e5`](https://github.com/crs48/xNet/commit/561e8e55dbbf44040b817d65a316a8dd39ee76cf), [`7111047`](https://github.com/crs48/xNet/commit/71110478d908ffdbdadad0ecf1f4090acc231171), [`5c9112f`](https://github.com/crs48/xNet/commit/5c9112fb56a524106d3081f042ef7ea658cdbb84), [`184709a`](https://github.com/crs48/xNet/commit/184709af1ddb235b32130f45ab6d859aa4a882e4), [`2bf556b`](https://github.com/crs48/xNet/commit/2bf556b48264f129230b5b7bd99969c03c37141d), [`63a417b`](https://github.com/crs48/xNet/commit/63a417b21a94224eb33e0c3cbac45aa74004d310)]: + - @xnetjs/plugins@4.0.0 + - @xnetjs/data@4.0.0 + - @xnetjs/react@4.0.0 + - @xnetjs/sqlite@4.0.0 + - @xnetjs/brain@1.0.0 + - @xnetjs/devtools@0.1.0 + - @xnetjs/labs@0.0.26 + - @xnetjs/views@0.0.1 + - @xnetjs/canvas@0.0.1 + - @xnetjs/comms@0.0.26 + - @xnetjs/sdk@0.0.1 + - @xnetjs/social@0.0.26 + - @xnetjs/vectors@0.0.1 diff --git a/packages/workbench/package.json b/packages/workbench/package.json index f0e91c39d..51ede4e99 100644 --- a/packages/workbench/package.json +++ b/packages/workbench/package.json @@ -1,6 +1,6 @@ { "name": "@xnetjs/workbench", - "version": "0.0.1", + "version": "0.0.2", "description": "xNet workbench core — the host-agnostic shell state, tabs, navigation intent, and PlatformPort shared by the web and desktop surfaces (exploration 0406)", "type": "module", "main": "./src/index.ts",