@gmickel/gno 2.5.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -5
- package/assets/skill/README.md +5 -1
- package/assets/skill/SKILL.md +80 -4
- package/assets/skill/cli-reference.md +132 -2
- package/assets/skill/examples.md +30 -0
- package/assets/skill/mcp-reference.md +54 -1
- package/assets/skill/recipes/capture-and-file.md +6 -0
- package/assets/skill/recipes/memory-file-decision.md +6 -0
- package/assets/skill/recipes/memory-supersede-fact.md +5 -0
- package/assets/skill/recipes/session-evidence-lookup.md +98 -0
- package/assets/spa-production.json.gz +0 -0
- package/browser-extension/artifacts/{gno-browser-clipper-v2.5.1.zip → gno-browser-clipper-v2.7.0.zip} +0 -0
- package/browser-extension/artifacts/gno-browser-clipper-v2.7.0.zip.sha256 +1 -0
- package/browser-extension/dist/manifest.json +1 -1
- package/package.json +2 -1
- package/spec/cli.md +449 -35
- package/spec/mcp.md +234 -4
- package/spec/output-schemas/ask.schema.json +1 -1
- package/spec/output-schemas/capture-receipt.schema.json +4 -1
- package/spec/output-schemas/doctor.schema.json +88 -0
- package/spec/output-schemas/error.schema.json +11 -2
- package/spec/output-schemas/get.schema.json +1 -1
- package/spec/output-schemas/mcp-capture-result.schema.json +4 -2
- package/spec/output-schemas/memory-remember.schema.json +10 -4
- package/spec/output-schemas/multi-get.schema.json +4 -1
- package/spec/output-schemas/peek.schema.json +2 -9
- package/spec/output-schemas/request-status.schema.json +113 -0
- package/spec/output-schemas/resident-status.schema.json +22 -0
- package/spec/output-schemas/search-result.schema.json +1 -1
- package/spec/output-schemas/search-results.schema.json +1 -1
- package/spec/output-schemas/sessions-automation-run.schema.json +46 -0
- package/spec/output-schemas/sessions-discovery.schema.json +38 -0
- package/spec/output-schemas/sessions-import-receipt.schema.json +156 -0
- package/spec/output-schemas/sessions-status.schema.json +432 -0
- package/spec/output-schemas/status.schema.json +98 -0
- package/src/cli/commands/ask.ts +14 -2
- package/src/cli/commands/capture.ts +55 -96
- package/src/cli/commands/daemon.ts +41 -0
- package/src/cli/commands/doctor.ts +54 -20
- package/src/cli/commands/embed.ts +41 -3
- package/src/cli/commands/ls.ts +3 -0
- package/src/cli/commands/memory.ts +12 -3
- package/src/cli/commands/query.ts +5 -0
- package/src/cli/commands/request-status.ts +59 -0
- package/src/cli/commands/reset.ts +39 -5
- package/src/cli/commands/sessions.ts +713 -0
- package/src/cli/commands/shared.ts +14 -1
- package/src/cli/commands/status.ts +63 -5
- package/src/cli/commands/vec.ts +54 -0
- package/src/cli/detach.ts +29 -1
- package/src/cli/errors.ts +13 -9
- package/src/cli/program.ts +441 -2
- package/src/cli/session-binding.ts +49 -0
- package/src/config/types.ts +8 -0
- package/src/core/capture-publish.ts +239 -0
- package/src/core/capture-sync.ts +12 -2
- package/src/core/host-paths.ts +31 -0
- package/src/core/memory-remember.ts +234 -122
- package/src/core/memory-types.ts +11 -0
- package/src/core/network-boundary-inventory.ts +8 -0
- package/src/core/request-receipts.ts +671 -0
- package/src/core/shutdown-budget.ts +6 -0
- package/src/core/vector-partition-status.ts +52 -0
- package/src/embed/backlog.ts +124 -18
- package/src/embed/fingerprint.ts +6 -3
- package/src/embed/retry.ts +66 -27
- package/src/embed/variant-backlog.ts +15 -10
- package/src/embed/variant-retry.ts +31 -22
- package/src/index.ts +30 -2
- package/src/llm/native-worker/dispatcher.ts +2 -0
- package/src/llm/native-worker/embedding-identity.ts +42 -0
- package/src/llm/native-worker/protocol.ts +1 -0
- package/src/llm/types.ts +3 -0
- package/src/mcp/context.ts +17 -0
- package/src/mcp/http-egress.ts +4 -0
- package/src/mcp/http-transport.ts +2 -0
- package/src/mcp/resources/index.ts +6 -5
- package/src/mcp/tool-descriptions-core.ts +1 -1
- package/src/mcp/tools/capture.ts +87 -85
- package/src/mcp/tools/index.ts +77 -4
- package/src/mcp/tools/memory-remember.ts +8 -1
- package/src/mcp/tools/memory-shared.ts +7 -1
- package/src/mcp/tools/request-status.ts +73 -0
- package/src/mcp/tools/sessions.ts +208 -0
- package/src/mcp/tools/status.ts +4 -0
- package/src/pipeline/hybrid.ts +37 -7
- package/src/pipeline/vsearch.ts +14 -2
- package/src/sdk/client.ts +180 -84
- package/src/sdk/index.ts +6 -0
- package/src/sdk/types.ts +54 -2
- package/src/serve/capture-service.ts +98 -32
- package/src/serve/config-sync.ts +3 -2
- package/src/serve/embed-scheduler.ts +133 -19
- package/src/serve/host-path-redaction.ts +79 -0
- package/src/serve/public/app.tsx +4 -1
- package/src/serve/public/components/CaptureModal.tsx +26 -8
- package/src/serve/public/components/sessions/AutomationPanel.tsx +800 -0
- package/src/serve/public/components/sessions/ImportReceipt.tsx +238 -0
- package/src/serve/public/components/sessions/SessionSearch.tsx +286 -0
- package/src/serve/public/components/sessions/SourcesPanel.tsx +541 -0
- package/src/serve/public/components/sessions/api.ts +40 -0
- package/src/serve/public/globals.built.css +1 -1
- package/src/serve/public/hooks/use-api.ts +26 -3
- package/src/serve/public/lib/request-intent.ts +77 -0
- package/src/serve/public/lib/snippet.tsx +52 -0
- package/src/serve/public/lib/workspace-actions.ts +12 -1
- package/src/serve/public/lib/workspace-tabs.ts +2 -0
- package/src/serve/public/pages/Dashboard.tsx +22 -9
- package/src/serve/public/pages/DocView.tsx +25 -6
- package/src/serve/public/pages/DocumentEditor.tsx +224 -104
- package/src/serve/public/pages/Search.tsx +1 -41
- package/src/serve/public/pages/Sessions.tsx +350 -0
- package/src/serve/resident-runtime.ts +69 -4
- package/src/serve/resident-status.ts +13 -1
- package/src/serve/routes/api.ts +476 -147
- package/src/serve/routes/sessions.ts +766 -0
- package/src/serve/security.ts +9 -0
- package/src/serve/server.ts +215 -10
- package/src/serve/session-automation.ts +146 -0
- package/src/serve/status-model.ts +16 -0
- package/src/serve/status.ts +2 -0
- package/src/serve/watch-reconciliation-shared.ts +3 -0
- package/src/serve/watch-service-events.ts +3 -2
- package/src/serve/watch-service-run-flush.ts +35 -2
- package/src/serve/watch-service.ts +5 -0
- package/src/sessions/archive.ts +348 -0
- package/src/sessions/automation-state.ts +444 -0
- package/src/sessions/automation-status.ts +239 -0
- package/src/sessions/automation.ts +1169 -0
- package/src/sessions/binding.ts +105 -0
- package/src/sessions/claude-hook.ts +240 -0
- package/src/sessions/config.ts +176 -0
- package/src/sessions/format.ts +191 -0
- package/src/sessions/import-child-env.ts +8 -0
- package/src/sessions/import-child.ts +152 -0
- package/src/sessions/parsers/claude-code.ts +259 -0
- package/src/sessions/parsers/codex.ts +303 -0
- package/src/sessions/parsers/hermes.ts +248 -0
- package/src/sessions/parsers/openclaw.ts +496 -0
- package/src/sessions/parsers/shared.ts +184 -0
- package/src/sessions/sanitize.ts +222 -0
- package/src/sessions/service.ts +1533 -0
- package/src/sessions/setup.ts +477 -0
- package/src/sessions/sources.ts +518 -0
- package/src/sessions/state.ts +118 -0
- package/src/sessions/types.ts +457 -0
- package/src/store/migrations/031-runtime-independent-vectors.ts +29 -0
- package/src/store/migrations/032-vector-runtime-callers.ts +17 -0
- package/src/store/migrations/index.ts +4 -0
- package/src/store/sqlite/adapter.ts +76 -16
- package/src/store/sqlite/scoped-index.ts +9 -0
- package/src/store/types.ts +11 -1
- package/src/store/vector/lazy.ts +46 -43
- package/src/store/vector/runtime-compat.ts +651 -0
- package/src/store/vector/sqlite-vec.ts +20 -2
- package/src/store/vector/status.ts +276 -35
- package/src/store/vector/types.ts +2 -0
- package/src/store/vector/variant-search.ts +71 -23
- package/src/store/vector/variants.ts +49 -14
- package/browser-extension/artifacts/gno-browser-clipper-v2.5.1.zip.sha256 +0 -1
package/spec/mcp.md
CHANGED
|
@@ -153,7 +153,7 @@ the resident gateway applies one profile to every connected client.
|
|
|
153
153
|
|
|
154
154
|
| Profile | Without `--enable-write` | With `--enable-write` |
|
|
155
155
|
| ---------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
|
156
|
-
| `full` (default) | Every read tool below (
|
|
156
|
+
| `full` (default) | Every read tool below (37) | Every read tool plus every write tool (59) |
|
|
157
157
|
| `core` | `gno_query`, `gno_search`, `gno_get`, `gno_multi_get`, `gno_context`, `gno_changes`, `gno_recall` (7) | The 7 read tools plus `gno_capture`, `gno_remember` (9) |
|
|
158
158
|
|
|
159
159
|
Both lists are exact: `core` advertises nothing else, and `full` is byte-for-byte
|
|
@@ -232,6 +232,10 @@ the core memory service acquires the same `.mcp-write.lock` lease for every
|
|
|
232
232
|
memory write, so an MCP remember and a CLI writer serialise on one lease. A
|
|
233
233
|
lease that stays busy past the wait window returns `MEMORY_WRITE_LEASE_BUSY`.
|
|
234
234
|
|
|
235
|
+
With a `requestId`, `gno_capture` and `gno_remember` admit the request under
|
|
236
|
+
this same lease; there is no second lock. A request whose earlier attempt
|
|
237
|
+
still holds the lease past the wait window returns `REQUEST_PENDING`.
|
|
238
|
+
|
|
235
239
|
### Resident Streamable HTTP boundary
|
|
236
240
|
|
|
237
241
|
`gno serve` and `gno daemon` mount the same stateful MCP surface at `/mcp`.
|
|
@@ -263,6 +267,15 @@ Because `gno serve` shares this listener with its Web UI and REST API, it
|
|
|
263
267
|
remains loopback-only. Use the headless `gno daemon` command for an explicitly
|
|
264
268
|
authenticated non-loopback MCP listener.
|
|
265
269
|
|
|
270
|
+
HTTP MCP results never carry a host absolute path, whatever the peer zone:
|
|
271
|
+
every `absPath` field (`source.absPath` on search/query/ask/get/multi-get
|
|
272
|
+
results, top-level `absPath` on `gno_capture` and `gno_remember` receipts,
|
|
273
|
+
`similar[].absPath`, peek `recent[].absPath`) is removed from both
|
|
274
|
+
`structuredContent` and the text content, and a resource header's `source:`
|
|
275
|
+
line names the collection-relative path. Callers address documents by `uri`
|
|
276
|
+
and `relPath`. Stdio callers keep host paths. The field inventory lives in
|
|
277
|
+
[docs/API.md](../docs/API.md#host-paths-and-remote-callers).
|
|
278
|
+
|
|
266
279
|
HTTP MCP remains read-only unless `gateway.enableWrite: true` or
|
|
267
280
|
`--mcp-enable-write` is explicitly set. Bearer authentication alone does not
|
|
268
281
|
authorize mutation. Unauthorized calls to write tools fail with HTTP 403 before
|
|
@@ -1339,6 +1352,21 @@ counters; it never claims attachment to another process.
|
|
|
1339
1352
|
"totalDocuments": 150,
|
|
1340
1353
|
"totalChunks": 800,
|
|
1341
1354
|
"embeddingBacklog": 0,
|
|
1355
|
+
"vectorPartitions": [
|
|
1356
|
+
{
|
|
1357
|
+
"id": "3f2a9c1b2d4e...",
|
|
1358
|
+
"model": "hf:Qwen/Qwen3-Embedding-0.6B-GGUF/Qwen3-Embedding-0.6B-Q8_0.gguf",
|
|
1359
|
+
"dimensions": 1024,
|
|
1360
|
+
"state": "active",
|
|
1361
|
+
"legacy": false,
|
|
1362
|
+
"retrieval": true,
|
|
1363
|
+
"droppable": false,
|
|
1364
|
+
"owners": 500,
|
|
1365
|
+
"provenance": "CUDA, Bun 1.4.2",
|
|
1366
|
+
"compatibleRuntimes": ["CUDA, Bun 1.4.2", "CPU, Bun 1.3.14"],
|
|
1367
|
+
"incompatibleRuntimes": []
|
|
1368
|
+
}
|
|
1369
|
+
],
|
|
1342
1370
|
"contentTypeBoost": {
|
|
1343
1371
|
"rulesFingerprint": "<sha256>",
|
|
1344
1372
|
"rules": [{ "id": "decision", "searchBoost": 2 }]
|
|
@@ -1348,6 +1376,16 @@ counters; it never claims attachment to another process.
|
|
|
1348
1376
|
}
|
|
1349
1377
|
```
|
|
1350
1378
|
|
|
1379
|
+
`vectorPartitions` (omitted when none exist) lists the embedding model's
|
|
1380
|
+
vector partitions; `embeddingBacklog` and per-collection embedded counts use
|
|
1381
|
+
the one with `retrieval: true`, the partition this server process's queries
|
|
1382
|
+
read under the same selection rule as retrieval (`vectorRuntime` reports
|
|
1383
|
+
`vectors`, `unavailable` with a reason, or `unresolved` before its first query
|
|
1384
|
+
or embed). `droppable` marks what `gno vec drop` accepts. Other partitions carry `state`, `owners` and a
|
|
1385
|
+
readable `provenance`; `compatibleRuntimes` names the runtimes that read a
|
|
1386
|
+
partition and `incompatibleRuntimes` names runtimes measured unable to
|
|
1387
|
+
reproduce the stored vectors, whose queries use lexical retrieval only.
|
|
1388
|
+
|
|
1351
1389
|
`contentTypeBoost` is a redacted ranking-status projection. It exposes only
|
|
1352
1390
|
normalized IDs/factors plus the rules fingerprint; path prefixes are never
|
|
1353
1391
|
returned.
|
|
@@ -1531,6 +1569,10 @@ Create a new document in a collection (write-enabled).
|
|
|
1531
1569
|
"capturedAt": { "type": "string", "format": "date-time" },
|
|
1532
1570
|
"externalId": { "type": "string" }
|
|
1533
1571
|
}
|
|
1572
|
+
},
|
|
1573
|
+
"requestId": {
|
|
1574
|
+
"type": "string",
|
|
1575
|
+
"description": "Optional caller request ID (1-128 of A-Z a-z 0-9 . _ : -). Reuse the same ID when retrying the same write after a lost response; a new intent needs a new ID"
|
|
1534
1576
|
}
|
|
1535
1577
|
},
|
|
1536
1578
|
"required": ["collection"]
|
|
@@ -1585,6 +1627,13 @@ Create a new document in a collection (write-enabled).
|
|
|
1585
1627
|
writing
|
|
1586
1628
|
- Writes run under the MCP write lock and are only registered when the server
|
|
1587
1629
|
starts with `--enable-write` or `GNO_MCP_ENABLE_WRITE=1`
|
|
1630
|
+
- `requestId` (optional) makes a retry of the same call safe; look it up with
|
|
1631
|
+
[`gno_request_status`](#gno_request_status). Semantics:
|
|
1632
|
+
`docs/guides/retries-and-request-ids.md`
|
|
1633
|
+
- With a `requestId`, the result adds
|
|
1634
|
+
`request: { requestId, status: "committed", replayed, committedAt }` and the
|
|
1635
|
+
text output adds `Request: <id> committed` (`(replayed)` on a replay). The
|
|
1636
|
+
field is absent when no `requestId` was sent
|
|
1588
1637
|
|
|
1589
1638
|
**Output Schema:** `gno://schemas/mcp-capture-result@1.0`, compatible with the
|
|
1590
1639
|
shared `gno://schemas/capture-receipt@1.0` contract.
|
|
@@ -1651,6 +1700,10 @@ file edits update existing notes, `gno_remember` upserts a fact.
|
|
|
1651
1700
|
"source": {
|
|
1652
1701
|
"type": "string",
|
|
1653
1702
|
"description": "Free-text evidence for the fact"
|
|
1703
|
+
},
|
|
1704
|
+
"requestId": {
|
|
1705
|
+
"type": "string",
|
|
1706
|
+
"description": "Optional caller request ID (1-128 of A-Z a-z 0-9 . _ : -). Reuse the same ID when retrying the same write after a lost response; a new intent needs a new ID"
|
|
1654
1707
|
}
|
|
1655
1708
|
},
|
|
1656
1709
|
"required": ["text", "collection", "scopes"]
|
|
@@ -1663,11 +1716,14 @@ file edits update existing notes, `gno_remember` upserts a fact.
|
|
|
1663
1716
|
fact, nothing written
|
|
1664
1717
|
- `outcome: "candidates"` — likely matches and no `decision`; `candidates[]`
|
|
1665
1718
|
carry `similarity` and `match` (`exact` | `likely` | `weak`), nothing written
|
|
1666
|
-
- `outcome: "added" | "superseded"` — `record`, `absPath
|
|
1719
|
+
- `outcome: "added" | "superseded"` — `record`, `absPath` (stdio only), and
|
|
1667
1720
|
`sync.status` (`completed` before the call returns; the fact is lexically
|
|
1668
1721
|
searchable)
|
|
1669
1722
|
- `matching` — `mode` (`semantic` | `lexical`), `threshold`, and
|
|
1670
1723
|
`semanticUnavailable` when lexical matching was used
|
|
1724
|
+
- `request` — present on `existing`, `added`, and `superseded` results when a
|
|
1725
|
+
`requestId` was sent: `{ requestId, status: "committed", replayed,
|
|
1726
|
+
committedAt }`
|
|
1671
1727
|
|
|
1672
1728
|
**Notes:**
|
|
1673
1729
|
|
|
@@ -1682,6 +1738,10 @@ file edits update existing notes, `gno_remember` upserts a fact.
|
|
|
1682
1738
|
- The core service holds the shared write lease for the write and lexical
|
|
1683
1739
|
sync; the MCP adapter takes no lock of its own
|
|
1684
1740
|
- Identity mapping is the same as `gno_recall`
|
|
1741
|
+
- `requestId` requires `decision` (`add` or `supersede`); a candidates-only
|
|
1742
|
+
call with a `requestId` returns `REQUEST_ID_INVALID`. `caller`, `session`,
|
|
1743
|
+
and the MCP session are not part of the request identity. Semantics:
|
|
1744
|
+
`docs/guides/retries-and-request-ids.md`
|
|
1685
1745
|
- Annotations: `readOnlyHint: false`, `destructiveHint: false`,
|
|
1686
1746
|
`idempotentHint: false`
|
|
1687
1747
|
|
|
@@ -1693,10 +1753,178 @@ file edits update existing notes, `gno_remember` upserts a fact.
|
|
|
1693
1753
|
`MEMORY_PREDECESSOR_NOT_FOUND`, `MEMORY_PREDECESSOR_HASH_MISMATCH`,
|
|
1694
1754
|
`MEMORY_SUPERSEDE_CONFLICT`, `MEMORY_FENCED_REPLAY`, `MEMORY_FENCED_DERIVED`,
|
|
1695
1755
|
`MEMORY_WRITE_LEASE_BUSY`, `MEMORY_SYNC_FAILED`,
|
|
1696
|
-
`MEMORY_SUPERSEDE_PROJECTION_FAILED`, `MEMORY_QUERY_FAILED
|
|
1756
|
+
`MEMORY_SUPERSEDE_PROJECTION_FAILED`, `MEMORY_QUERY_FAILED`, and the
|
|
1757
|
+
`REQUEST_*` codes listed under [`gno_request_status`](#gno_request_status).
|
|
1697
1758
|
|
|
1698
1759
|
---
|
|
1699
1760
|
|
|
1761
|
+
### gno_request_status
|
|
1762
|
+
|
|
1763
|
+
Look up a `requestId` sent with `gno_capture` or `gno_remember` before retrying
|
|
1764
|
+
the write (write-enabled server).
|
|
1765
|
+
|
|
1766
|
+
The tool is read-only but registered only when the server starts with
|
|
1767
|
+
`--enable-write` (or `GNO_MCP_ENABLE_WRITE=1`), and only on the `full` tool
|
|
1768
|
+
profile; `core` does not advertise it.
|
|
1769
|
+
|
|
1770
|
+
**Input Schema:**
|
|
1771
|
+
|
|
1772
|
+
```json
|
|
1773
|
+
{
|
|
1774
|
+
"type": "object",
|
|
1775
|
+
"properties": {
|
|
1776
|
+
"requestId": {
|
|
1777
|
+
"type": "string",
|
|
1778
|
+
"description": "Request ID previously sent with gno_capture or gno_remember"
|
|
1779
|
+
}
|
|
1780
|
+
},
|
|
1781
|
+
"required": ["requestId"]
|
|
1782
|
+
}
|
|
1783
|
+
```
|
|
1784
|
+
|
|
1785
|
+
**Response (`structuredContent`):** `gno://schemas/request-status@1.0`
|
|
1786
|
+
|
|
1787
|
+
```json
|
|
1788
|
+
{
|
|
1789
|
+
"requestId": "0f8e5c1a-3c1e-4d0b-9a57-2f4f3b8f2c11",
|
|
1790
|
+
"status": "committed",
|
|
1791
|
+
"operation": "capture",
|
|
1792
|
+
"createdAt": "2026-09-24T08:00:00.000Z",
|
|
1793
|
+
"updatedAt": "2026-09-24T08:00:00.120Z",
|
|
1794
|
+
"result": {
|
|
1795
|
+
"uri": "gno://notes/inbox/2026-09-24/capture-3f9c.md",
|
|
1796
|
+
"docid": "#a1b2c3",
|
|
1797
|
+
"contentHash": "<sha256>"
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
```
|
|
1801
|
+
|
|
1802
|
+
- `status`: `pending` | `committed` | `expired` | `not_found`.
|
|
1803
|
+
- `operation`: `capture` | `remember` | `document.update`. `result` appears
|
|
1804
|
+
only for `committed` and carries `uri`, `docid`, and `contentHash` (or
|
|
1805
|
+
`sourceHash` for a document update). Never note or fact content. A
|
|
1806
|
+
`not_found` result has only `requestId` and `status`.
|
|
1807
|
+
- Text output: `Request:`, `Status:`, and, when present, `Operation:`,
|
|
1808
|
+
`Updated:`, `URI:` lines.
|
|
1809
|
+
|
|
1810
|
+
**Namespaces:** stdio uses the local-owner namespace shared with the CLI, SDK,
|
|
1811
|
+
and `gno serve` REST; resident Streamable HTTP uses the authorized identity
|
|
1812
|
+
(loopback, or the configured bearer token), not the MCP session. Visibility
|
|
1813
|
+
and token-rotation rules: `docs/guides/retries-and-request-ids.md`.
|
|
1814
|
+
|
|
1815
|
+
**Annotations:** `readOnlyHint: true`, `destructiveHint: false`,
|
|
1816
|
+
`idempotentHint: true`, `openWorldHint: false`.
|
|
1817
|
+
|
|
1818
|
+
**Request error codes** (on `gno_capture`, `gno_remember`, and this tool; tool
|
|
1819
|
+
error text `CODE: message`, `structuredContent.error` = `CODE`):
|
|
1820
|
+
`REQUEST_ID_INVALID`, `REQUEST_ID_CONFLICT`, `REQUEST_EXPIRED`,
|
|
1821
|
+
`REQUEST_PENDING`, `REQUEST_RECOVERY_CONFLICT`, `REQUEST_CAPACITY_EXHAUSTED`,
|
|
1822
|
+
`REQUEST_LEDGER_UNAVAILABLE`. Meanings:
|
|
1823
|
+
`docs/guides/retries-and-request-ids.md#errors`.
|
|
1824
|
+
|
|
1825
|
+
---
|
|
1826
|
+
|
|
1827
|
+
### gno_sessions_status
|
|
1828
|
+
|
|
1829
|
+
Read-only status of a session-archive server (a server started with the
|
|
1830
|
+
dedicated archive `--config` and `--index`). Registered with the `full`
|
|
1831
|
+
profile only; not part of `core`.
|
|
1832
|
+
|
|
1833
|
+
**Input Schema:** `{}` (no arguments).
|
|
1834
|
+
|
|
1835
|
+
**Output:** the shared `sessions-status` schema
|
|
1836
|
+
(`spec/output-schemas/sessions-status.schema.json`): archive collections with
|
|
1837
|
+
thread counts and, per owner-registered source, its ID, harness, destination
|
|
1838
|
+
collection, availability, unit counts (complete, incomplete, failed,
|
|
1839
|
+
pending), `sourceUnavailable`, `staleParser` and last import time, and the
|
|
1840
|
+
`automation` block (daemon state, per-profile state, hook and schedule
|
|
1841
|
+
switches, pending and running work, last run, last success, next due time,
|
|
1842
|
+
recovery action). The result contains no host paths.
|
|
1843
|
+
|
|
1844
|
+
**Errors:** `SESSIONS_NOT_CONFIGURED` when the server's config has no
|
|
1845
|
+
`sessions` block.
|
|
1846
|
+
|
|
1847
|
+
### gno_sessions_import
|
|
1848
|
+
|
|
1849
|
+
Manually import one owner-registered session source into the archive and sync
|
|
1850
|
+
the changed archive files (write-enabled; `full` profile only). There is no
|
|
1851
|
+
MCP discovery tool: remote clients never learn host directories.
|
|
1852
|
+
|
|
1853
|
+
**Input Schema:**
|
|
1854
|
+
|
|
1855
|
+
```json
|
|
1856
|
+
{
|
|
1857
|
+
"type": "object",
|
|
1858
|
+
"additionalProperties": false,
|
|
1859
|
+
"required": ["sourceId"],
|
|
1860
|
+
"properties": {
|
|
1861
|
+
"sourceId": {
|
|
1862
|
+
"type": "string",
|
|
1863
|
+
"description": "ID of an owner-registered session source (see gno_sessions_status)"
|
|
1864
|
+
},
|
|
1865
|
+
"dryRun": {
|
|
1866
|
+
"type": "boolean",
|
|
1867
|
+
"description": "Parse and report without writing archive or index state"
|
|
1868
|
+
},
|
|
1869
|
+
"limit": {
|
|
1870
|
+
"type": "integer",
|
|
1871
|
+
"minimum": 1,
|
|
1872
|
+
"maximum": 100000,
|
|
1873
|
+
"description": "Maximum changed units processed this call; the rest are deferred"
|
|
1874
|
+
}
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
```
|
|
1878
|
+
|
|
1879
|
+
Unknown keys (for example `paths`) are rejected: MCP imports name a
|
|
1880
|
+
registered source ID only.
|
|
1881
|
+
|
|
1882
|
+
**Output:** the shared `sessions-import-receipt` schema. Partial imports
|
|
1883
|
+
(`status: "partial"`) stay visible and are retried by the next call; the
|
|
1884
|
+
receipt carries no host paths or session content.
|
|
1885
|
+
|
|
1886
|
+
Registered only with `--enable-write` (like `gno_capture` and
|
|
1887
|
+
`gno_remember`); without it the tool is not advertised. A dispatch while
|
|
1888
|
+
writes are disabled returns `WRITE_DISABLED`.
|
|
1889
|
+
|
|
1890
|
+
### gno_sessions_automation_run
|
|
1891
|
+
|
|
1892
|
+
Run one owner-configured automation profile now through the manual importer
|
|
1893
|
+
and record the outcome in automation status (write-enabled; `full` profile
|
|
1894
|
+
only). It cannot enable hooks or schedules, add sources, or change
|
|
1895
|
+
destinations; those stay local-owner operations.
|
|
1896
|
+
|
|
1897
|
+
**Input Schema:**
|
|
1898
|
+
|
|
1899
|
+
```json
|
|
1900
|
+
{
|
|
1901
|
+
"type": "object",
|
|
1902
|
+
"additionalProperties": false,
|
|
1903
|
+
"required": ["profileId"],
|
|
1904
|
+
"properties": {
|
|
1905
|
+
"profileId": {
|
|
1906
|
+
"type": "string",
|
|
1907
|
+
"description": "ID of an owner-configured automation profile (see gno_sessions_status)"
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
```
|
|
1912
|
+
|
|
1913
|
+
**Output:** the shared `sessions-automation-run` schema
|
|
1914
|
+
(`spec/output-schemas/sessions-automation-run.schema.json`): `ran`,
|
|
1915
|
+
`outcome` (`complete`, `up_to_date`, `partial`, `failed`, or `not_started`),
|
|
1916
|
+
`reason`, `pending`, and one `sessions-import-receipt` per source. No host
|
|
1917
|
+
paths or session content.
|
|
1918
|
+
|
|
1919
|
+
**Errors:** `SESSIONS_UNKNOWN_PROFILE`, `SESSIONS_NOT_CONFIGURED`,
|
|
1920
|
+
`WRITE_DISABLED`; unknown keys are rejected.
|
|
1921
|
+
|
|
1922
|
+
**Errors:** `SESSIONS_UNKNOWN_SOURCE`, `SESSIONS_SOURCE_UNAVAILABLE`,
|
|
1923
|
+
`SESSIONS_UNKNOWN_COLLECTION`, `SESSIONS_INVALID_INPUT`,
|
|
1924
|
+
`SESSIONS_NOT_CONFIGURED`; `SESSIONS_BUSY` when another import holds the
|
|
1925
|
+
archive lock; `SESSIONS_RUNTIME_FAILURE` (fixed, path-free message) for filesystem or
|
|
1926
|
+
index failures.
|
|
1927
|
+
|
|
1700
1928
|
### gno_list_tags
|
|
1701
1929
|
|
|
1702
1930
|
List all tags with document counts.
|
|
@@ -2721,7 +2949,7 @@ Content includes optional header comment:
|
|
|
2721
2949
|
|-------|-------------|
|
|
2722
2950
|
| URI | Full gno:// URI |
|
|
2723
2951
|
| docid | Document ID |
|
|
2724
|
-
| source | Absolute path to source file |
|
|
2952
|
+
| source | Absolute path to source file (stdio); collection-relative path over HTTP |
|
|
2725
2953
|
| mime | Source file MIME type |
|
|
2726
2954
|
| language | Document language hint (if available) |
|
|
2727
2955
|
|
|
@@ -2793,6 +3021,8 @@ Resource errors use standard MCP error responses.
|
|
|
2793
3021
|
- `MEMORY_*` — Memory contract errors from `gno_recall` / `gno_remember`;
|
|
2794
3022
|
the stable code set is `MemoryErrorCode` in `src/core/memory.ts` and each
|
|
2795
3023
|
tool section above lists the codes it returns
|
|
3024
|
+
- `REQUEST_*` — Request ID errors from `gno_capture`, `gno_remember`, and
|
|
3025
|
+
`gno_request_status`; see [`gno_request_status`](#gno_request_status)
|
|
2796
3026
|
|
|
2797
3027
|
---
|
|
2798
3028
|
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"properties": {
|
|
323
323
|
"absPath": {
|
|
324
324
|
"type": "string",
|
|
325
|
-
"description": "Absolute path (
|
|
325
|
+
"description": "Absolute source path. Host path: local callers only (CLI, stdio MCP, same-host Web UI/REST); omitted for remote REST and HTTP MCP callers, which identify the document by uri + relPath."
|
|
326
326
|
},
|
|
327
327
|
"relPath": {
|
|
328
328
|
"type": "string",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
},
|
|
44
44
|
"absPath": {
|
|
45
45
|
"type": "string",
|
|
46
|
-
"description": "Absolute path
|
|
46
|
+
"description": "Absolute path of the written file. Host path: local callers only (CLI, stdio MCP, same-host Web UI/REST); omitted for remote REST and HTTP MCP callers, which identify the document by uri + relPath."
|
|
47
47
|
},
|
|
48
48
|
"serverInstanceId": {
|
|
49
49
|
"type": "string"
|
|
@@ -129,6 +129,9 @@
|
|
|
129
129
|
"overwritten",
|
|
130
130
|
"conflict"
|
|
131
131
|
]
|
|
132
|
+
},
|
|
133
|
+
"request": {
|
|
134
|
+
"$ref": "gno://schemas/request-status@1.0#/$defs/requestReceipt"
|
|
132
135
|
}
|
|
133
136
|
},
|
|
134
137
|
"definitions": {
|
|
@@ -243,6 +243,94 @@
|
|
|
243
243
|
"type": "string"
|
|
244
244
|
}
|
|
245
245
|
},
|
|
246
|
+
"vectorPartitions": {
|
|
247
|
+
"type": "array",
|
|
248
|
+
"description": "Vector partitions (vector-partitions check); `retrieval` marks the one status and search use",
|
|
249
|
+
"items": {
|
|
250
|
+
"type": "object",
|
|
251
|
+
"additionalProperties": false,
|
|
252
|
+
"required": [
|
|
253
|
+
"id",
|
|
254
|
+
"model",
|
|
255
|
+
"dimensions",
|
|
256
|
+
"state",
|
|
257
|
+
"legacy",
|
|
258
|
+
"retrieval",
|
|
259
|
+
"droppable",
|
|
260
|
+
"owners",
|
|
261
|
+
"provenance",
|
|
262
|
+
"compatibleRuntimes",
|
|
263
|
+
"incompatibleRuntimes"
|
|
264
|
+
],
|
|
265
|
+
"properties": {
|
|
266
|
+
"id": {
|
|
267
|
+
"type": "string"
|
|
268
|
+
},
|
|
269
|
+
"model": {
|
|
270
|
+
"type": "string"
|
|
271
|
+
},
|
|
272
|
+
"dimensions": {
|
|
273
|
+
"type": "integer",
|
|
274
|
+
"minimum": 1
|
|
275
|
+
},
|
|
276
|
+
"state": {
|
|
277
|
+
"type": "string",
|
|
278
|
+
"enum": ["active", "shadow"]
|
|
279
|
+
},
|
|
280
|
+
"legacy": {
|
|
281
|
+
"type": "boolean"
|
|
282
|
+
},
|
|
283
|
+
"retrieval": {
|
|
284
|
+
"type": "boolean"
|
|
285
|
+
},
|
|
286
|
+
"droppable": {
|
|
287
|
+
"type": "boolean"
|
|
288
|
+
},
|
|
289
|
+
"owners": {
|
|
290
|
+
"type": "integer",
|
|
291
|
+
"minimum": 0
|
|
292
|
+
},
|
|
293
|
+
"provenance": {
|
|
294
|
+
"type": "string"
|
|
295
|
+
},
|
|
296
|
+
"compatibleRuntimes": {
|
|
297
|
+
"type": "array",
|
|
298
|
+
"items": {
|
|
299
|
+
"type": "string"
|
|
300
|
+
}
|
|
301
|
+
},
|
|
302
|
+
"incompatibleRuntimes": {
|
|
303
|
+
"type": "array",
|
|
304
|
+
"items": {
|
|
305
|
+
"type": "string"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"vectorRuntime": {
|
|
312
|
+
"type": "object",
|
|
313
|
+
"additionalProperties": false,
|
|
314
|
+
"required": ["label", "state", "partition"],
|
|
315
|
+
"description": "This process's runtime, resolved by the same selection rule its queries use",
|
|
316
|
+
"properties": {
|
|
317
|
+
"label": {
|
|
318
|
+
"type": ["string", "null"],
|
|
319
|
+
"description": "Runtime recorded by this caller's last query or embed"
|
|
320
|
+
},
|
|
321
|
+
"state": {
|
|
322
|
+
"type": "string",
|
|
323
|
+
"enum": ["vectors", "unavailable", "unresolved"],
|
|
324
|
+
"description": "vectors: queries read `partition`; unavailable: lexical retrieval only; unresolved: no query or embed has resolved this caller yet"
|
|
325
|
+
},
|
|
326
|
+
"partition": {
|
|
327
|
+
"type": ["string", "null"]
|
|
328
|
+
},
|
|
329
|
+
"reason": {
|
|
330
|
+
"type": "string"
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
},
|
|
246
334
|
"embeddingFingerprint": {
|
|
247
335
|
"type": "object",
|
|
248
336
|
"description": "Embedding freshness fingerprint diagnostics",
|
|
@@ -12,8 +12,17 @@
|
|
|
12
12
|
"properties": {
|
|
13
13
|
"code": {
|
|
14
14
|
"type": "string",
|
|
15
|
-
"description": "
|
|
16
|
-
"enum": [
|
|
15
|
+
"description": "CLI error code; each maps to one exit code (see spec/cli.md Error Output)",
|
|
16
|
+
"enum": [
|
|
17
|
+
"VALIDATION",
|
|
18
|
+
"RUNTIME",
|
|
19
|
+
"NOT_RUNNING",
|
|
20
|
+
"BUSY",
|
|
21
|
+
"AUDIT_FINDINGS",
|
|
22
|
+
"AUDIT_PARTIAL",
|
|
23
|
+
"CONTEXT_STALE",
|
|
24
|
+
"CONTEXT_CONFLICT"
|
|
25
|
+
]
|
|
17
26
|
},
|
|
18
27
|
"message": {
|
|
19
28
|
"type": "string",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"properties": {
|
|
63
63
|
"absPath": {
|
|
64
64
|
"type": "string",
|
|
65
|
-
"description": "Absolute path to source file"
|
|
65
|
+
"description": "Absolute path to source file. Host path: local callers only (CLI, stdio MCP, same-host Web UI/REST); omitted for remote REST and HTTP MCP callers, which identify the document by uri + relPath."
|
|
66
66
|
},
|
|
67
67
|
"relPath": {
|
|
68
68
|
"type": "string",
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
"required": [
|
|
8
8
|
"docid",
|
|
9
9
|
"uri",
|
|
10
|
-
"absPath",
|
|
11
10
|
"collection",
|
|
12
11
|
"relPath",
|
|
13
12
|
"created",
|
|
@@ -34,7 +33,7 @@
|
|
|
34
33
|
},
|
|
35
34
|
"absPath": {
|
|
36
35
|
"type": "string",
|
|
37
|
-
"description": "Absolute path to the created file"
|
|
36
|
+
"description": "Absolute path to the created file. Stdio callers only; omitted for HTTP MCP callers, which identify the file by uri + relPath."
|
|
38
37
|
},
|
|
39
38
|
"collection": {
|
|
40
39
|
"type": "string",
|
|
@@ -129,6 +128,9 @@
|
|
|
129
128
|
"type": "string",
|
|
130
129
|
"description": "Server instance UUID",
|
|
131
130
|
"format": "uuid"
|
|
131
|
+
},
|
|
132
|
+
"request": {
|
|
133
|
+
"$ref": "gno://schemas/request-status@1.0#/$defs/requestReceipt"
|
|
132
134
|
}
|
|
133
135
|
},
|
|
134
136
|
"definitions": {
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
"properties": {
|
|
13
13
|
"outcome": { "const": "existing" },
|
|
14
14
|
"record": { "$ref": "#/$defs/fact" },
|
|
15
|
-
"matching": { "$ref": "#/$defs/matching" }
|
|
15
|
+
"matching": { "$ref": "#/$defs/matching" },
|
|
16
|
+
"request": {
|
|
17
|
+
"$ref": "gno://schemas/request-status@1.0#/$defs/requestReceipt"
|
|
18
|
+
}
|
|
16
19
|
}
|
|
17
20
|
},
|
|
18
21
|
{
|
|
@@ -31,16 +34,19 @@
|
|
|
31
34
|
{
|
|
32
35
|
"type": "object",
|
|
33
36
|
"additionalProperties": false,
|
|
34
|
-
"required": ["outcome", "record", "
|
|
37
|
+
"required": ["outcome", "record", "sync", "matching"],
|
|
35
38
|
"properties": {
|
|
36
39
|
"outcome": { "enum": ["added", "superseded"] },
|
|
37
40
|
"record": { "$ref": "#/$defs/fact" },
|
|
38
41
|
"absPath": {
|
|
39
42
|
"type": "string",
|
|
40
|
-
"description": "Absolute path of the fact file that was written."
|
|
43
|
+
"description": "Absolute path of the fact file that was written. Host path: local callers only (CLI, stdio MCP, same-host Web UI/REST); omitted for remote REST and HTTP MCP callers, which identify the document by uri + relPath."
|
|
41
44
|
},
|
|
42
45
|
"sync": { "$ref": "#/$defs/sync" },
|
|
43
|
-
"matching": { "$ref": "#/$defs/matching" }
|
|
46
|
+
"matching": { "$ref": "#/$defs/matching" },
|
|
47
|
+
"request": {
|
|
48
|
+
"$ref": "gno://schemas/request-status@1.0#/$defs/requestReceipt"
|
|
49
|
+
}
|
|
44
50
|
}
|
|
45
51
|
}
|
|
46
52
|
],
|
|
@@ -40,7 +40,10 @@
|
|
|
40
40
|
"type": "object",
|
|
41
41
|
"required": ["relPath", "mime", "ext"],
|
|
42
42
|
"properties": {
|
|
43
|
-
"absPath": {
|
|
43
|
+
"absPath": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Absolute path to source file. Host path: local callers only (CLI, stdio MCP, same-host Web UI/REST); omitted for remote REST and HTTP MCP callers, which identify the document by uri + relPath."
|
|
46
|
+
},
|
|
44
47
|
"relPath": { "type": "string" },
|
|
45
48
|
"mime": { "type": "string" },
|
|
46
49
|
"ext": { "type": "string", "pattern": "^\\.[a-zA-Z0-9]+$" }
|
|
@@ -99,14 +99,7 @@
|
|
|
99
99
|
"items": {
|
|
100
100
|
"type": "object",
|
|
101
101
|
"additionalProperties": false,
|
|
102
|
-
"required": [
|
|
103
|
-
"docid",
|
|
104
|
-
"uri",
|
|
105
|
-
"title",
|
|
106
|
-
"collection",
|
|
107
|
-
"absPath",
|
|
108
|
-
"modifiedAt"
|
|
109
|
-
],
|
|
102
|
+
"required": ["docid", "uri", "title", "collection", "modifiedAt"],
|
|
110
103
|
"properties": {
|
|
111
104
|
"docid": {
|
|
112
105
|
"type": "string",
|
|
@@ -129,7 +122,7 @@
|
|
|
129
122
|
"absPath": {
|
|
130
123
|
"type": "string",
|
|
131
124
|
"minLength": 1,
|
|
132
|
-
"description": "Absolute source path (collection root + relative path)"
|
|
125
|
+
"description": "Absolute source path (collection root + relative path). CLI and stdio MCP only; omitted for HTTP MCP callers."
|
|
133
126
|
},
|
|
134
127
|
"modifiedAt": {
|
|
135
128
|
"type": "string",
|