@gmickel/gno 1.28.0 → 1.29.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.
Files changed (143) hide show
  1. package/README.md +46 -20
  2. package/assets/skill/SKILL.md +33 -0
  3. package/browser-extension/artifacts/gno-browser-clipper-v1.29.0.zip +0 -0
  4. package/browser-extension/artifacts/gno-browser-clipper-v1.29.0.zip.sha256 +1 -0
  5. package/browser-extension/dist/chunk-b2zm0jjd.js +50 -0
  6. package/browser-extension/dist/manifest.json +1 -1
  7. package/browser-extension/dist/preview.html +1 -1
  8. package/browser-extension/dist/service-worker.js +6 -6
  9. package/package.json +1 -1
  10. package/spec/cli.md +41 -1
  11. package/spec/db/schema.sql +19 -0
  12. package/spec/mcp.md +66 -0
  13. package/spec/output-schemas/ask.schema.json +31 -1
  14. package/spec/output-schemas/browser-clip-preview.schema.json +30 -0
  15. package/spec/output-schemas/collection-egress-check.schema.json +91 -0
  16. package/spec/output-schemas/collection-egress-policy-set.schema.json +56 -0
  17. package/spec/output-schemas/collection-egress-policy.schema.json +41 -0
  18. package/spec/output-schemas/context-capsule-v1.schema.json +89 -2
  19. package/spec/output-schemas/context-capsule-verification.schema.json +1 -1
  20. package/spec/output-schemas/egress-audit-management.schema.json +88 -0
  21. package/spec/output-schemas/mcp-http-error.schema.json +113 -2
  22. package/spec/output-schemas/publish-artifact.schema.json +32 -0
  23. package/spec/output-schemas/record-import.schema.json +30 -0
  24. package/spec/output-schemas/retrieval-trace-common.schema.json +31 -0
  25. package/spec/output-schemas/retrieval-trace-export.schema.json +3 -0
  26. package/spec/output-schemas/retrieval-trace-qrels.schema.json +3 -0
  27. package/spec/output-schemas/retrieval-trace-summary.schema.json +4 -0
  28. package/spec/output-schemas/search-results.schema.json +30 -0
  29. package/src/app/context-runtime-contract.ts +16 -7
  30. package/src/cli/commands/ask.ts +7 -0
  31. package/src/cli/commands/collection/index.ts +5 -0
  32. package/src/cli/commands/collection/policy.ts +126 -0
  33. package/src/cli/commands/context-build.ts +5 -0
  34. package/src/cli/commands/daemon.ts +45 -3
  35. package/src/cli/commands/egress-audit.ts +68 -0
  36. package/src/cli/commands/embed.ts +2 -0
  37. package/src/cli/commands/query.ts +12 -0
  38. package/src/cli/commands/replay.ts +13 -3
  39. package/src/cli/commands/vsearch.ts +3 -1
  40. package/src/cli/program.ts +123 -0
  41. package/src/config/index.ts +9 -0
  42. package/src/config/types.ts +50 -0
  43. package/src/core/browser-clip.ts +16 -1
  44. package/src/core/collection-egress-policy-projection.ts +28 -0
  45. package/src/core/collection-egress-policy-service.ts +443 -0
  46. package/src/core/collection-egress-policy-validation.ts +242 -0
  47. package/src/core/config-mutation.ts +31 -19
  48. package/src/core/context-capsule-schema.ts +111 -1
  49. package/src/core/context-capsule-validation.ts +4 -4
  50. package/src/core/context-capsule-verification.ts +5 -1
  51. package/src/core/context-capsule.ts +177 -132
  52. package/src/core/context-evidence.ts +86 -14
  53. package/src/core/destination-classifier.ts +402 -0
  54. package/src/core/egress-audit.ts +239 -0
  55. package/src/core/egress-authorization.ts +50 -0
  56. package/src/core/egress-enforcement.ts +264 -0
  57. package/src/core/egress-policy.ts +440 -0
  58. package/src/core/egress-provenance.ts +336 -0
  59. package/src/core/job-manager.ts +37 -0
  60. package/src/core/network-boundary-inventory.ts +261 -0
  61. package/src/core/retrieval-qrels.ts +6 -0
  62. package/src/core/retrieval-replay.ts +18 -4
  63. package/src/core/retrieval-trace-export.ts +23 -4
  64. package/src/core/retrieval-trace-management-helpers.ts +1 -0
  65. package/src/core/retrieval-trace-management-types.ts +3 -0
  66. package/src/core/retrieval-trace-management.ts +9 -1
  67. package/src/core/retrieval-trace-session.ts +94 -0
  68. package/src/core/retrieval-trace.ts +22 -0
  69. package/src/ingestion/record-adapter.ts +12 -1
  70. package/src/ingestion/record-container.ts +38 -22
  71. package/src/ingestion/sync.ts +15 -0
  72. package/src/ingestion/types.ts +2 -0
  73. package/src/llm/errors.ts +10 -0
  74. package/src/llm/http-inference.ts +175 -0
  75. package/src/llm/http-policy.ts +537 -0
  76. package/src/llm/httpEmbedding.ts +47 -28
  77. package/src/llm/httpGeneration.ts +31 -18
  78. package/src/llm/httpRerank.ts +30 -18
  79. package/src/llm/index.ts +1 -0
  80. package/src/llm/nodeLlamaCpp/adapter.ts +55 -20
  81. package/src/llm/pinned-http-connection.ts +177 -0
  82. package/src/mcp/context.ts +53 -1
  83. package/src/mcp/http-egress.ts +220 -0
  84. package/src/mcp/http-security.ts +32 -21
  85. package/src/mcp/http-session.ts +13 -2
  86. package/src/mcp/http-transport.ts +96 -6
  87. package/src/mcp/sync-egress.ts +24 -0
  88. package/src/mcp/tools/add-collection.ts +4 -0
  89. package/src/mcp/tools/ask.ts +1 -1
  90. package/src/mcp/tools/context.ts +9 -2
  91. package/src/mcp/tools/egress.ts +247 -0
  92. package/src/mcp/tools/embed.ts +1 -0
  93. package/src/mcp/tools/index-cmd.ts +7 -0
  94. package/src/mcp/tools/index.ts +98 -0
  95. package/src/mcp/tools/query.ts +10 -0
  96. package/src/mcp/tools/remove-collection.ts +4 -0
  97. package/src/mcp/tools/sync.ts +6 -0
  98. package/src/mcp/tools/trace.ts +7 -1
  99. package/src/mcp/tools/vsearch.ts +1 -0
  100. package/src/pipeline/egress-lineage.ts +124 -0
  101. package/src/pipeline/hybrid.ts +14 -0
  102. package/src/pipeline/search.ts +12 -0
  103. package/src/pipeline/types.ts +3 -0
  104. package/src/pipeline/vsearch.ts +41 -20
  105. package/src/publish/artifact.ts +31 -3
  106. package/src/publish/export-service.ts +25 -0
  107. package/src/sdk/client.ts +119 -2
  108. package/src/sdk/embed.ts +1 -0
  109. package/src/sdk/types.ts +33 -0
  110. package/src/serve/clipper-capture.ts +5 -1
  111. package/src/serve/closed-json.ts +61 -0
  112. package/src/serve/config-sync.ts +4 -1
  113. package/src/serve/context.ts +1 -0
  114. package/src/serve/doc-events.ts +110 -39
  115. package/src/serve/public/components/CollectionEgressCheckPanel.tsx +411 -0
  116. package/src/serve/public/components/CollectionEgressPolicyEditor.tsx +78 -0
  117. package/src/serve/public/components/CollectionModelDialog.tsx +93 -9
  118. package/src/serve/public/components/EgressAuditPanel.tsx +278 -0
  119. package/src/serve/public/globals.built.css +1 -1
  120. package/src/serve/public/pages/Collections.tsx +3 -0
  121. package/src/serve/resident-request.ts +80 -3
  122. package/src/serve/resident-runtime.ts +63 -1
  123. package/src/serve/routes/api.ts +174 -0
  124. package/src/serve/routes/clipper.ts +64 -1
  125. package/src/serve/routes/mcp.ts +6 -0
  126. package/src/serve/routes/traces.ts +27 -4
  127. package/src/serve/server.ts +118 -7
  128. package/src/store/migrations/023-collection-egress-policy.ts +61 -0
  129. package/src/store/migrations/024-egress-derived-lineage.ts +121 -0
  130. package/src/store/migrations/025-collection-egress-policy-revision.ts +40 -0
  131. package/src/store/migrations/index.ts +6 -0
  132. package/src/store/retrieval-trace-codec.ts +15 -0
  133. package/src/store/sqlite/adapter.ts +170 -7
  134. package/src/store/sqlite/change-journal-store.ts +41 -2
  135. package/src/store/sqlite/egress-audit-store.ts +485 -0
  136. package/src/store/sqlite/retrieval-trace-management-store.ts +47 -6
  137. package/src/store/sqlite/retrieval-trace-retention.ts +2 -0
  138. package/src/store/sqlite/retrieval-trace-rows.ts +8 -1
  139. package/src/store/sqlite/retrieval-trace-store.ts +104 -5
  140. package/src/store/types.ts +126 -1
  141. package/browser-extension/artifacts/gno-browser-clipper-v1.28.0.zip +0 -0
  142. package/browser-extension/artifacts/gno-browser-clipper-v1.28.0.zip.sha256 +0 -1
  143. package/browser-extension/dist/chunk-vn5f663b.js +0 -50
package/README.md CHANGED
@@ -112,12 +112,22 @@ gno daemon --detach # headless continuous indexing (background; --status / --st
112
112
 
113
113
  <!-- public-truth:current-version -->
114
114
 
115
- > Current release: **v1.27.1** — see [CHANGELOG.md](./CHANGELOG.md)
115
+ > Current release: **v1.29.0** — see [CHANGELOG.md](./CHANGELOG.md)
116
116
 
117
117
  <!-- /public-truth -->
118
118
 
119
119
  > Full release history: [CHANGELOG.md](./CHANGELOG.md)
120
120
 
121
+ - **Trustworthy local context compiler**: deterministic Context Capsules replace
122
+ repeated agent `query → get → multi-get` orchestration with one bounded,
123
+ citation-complete evidence handoff. The promoted benchmark retained 100%
124
+ completion accuracy while reducing retrieval calls by 48.94% and
125
+ model-visible context by 44.12%, with 100% exact claim-span linkage.
126
+ - **Verified answers and private quality learning**: opt-in verified Ask checks
127
+ every substantive claim against one closed Capsule and abstains below complete
128
+ support. Local traces, explicit judgments, content-free qrels export, and
129
+ read-only replay turn real misses into regression evidence without automatic
130
+ personalization.
121
131
  - **Project-aware retrieval affinity**: trusted local CLI searches can use the
122
132
  current workspace or explicit `--project-root` values as a transparent,
123
133
  explainable `+0.03` soft ranking signal. Filters remain hard, and untrusted
@@ -147,6 +157,18 @@ gno daemon --detach # headless continuous indexing (background; --status / --st
147
157
  capture. A loopback `gno serve` pairing, server-owned preview, exact
148
158
  provenance, and idempotent recovery protect every write; no history, cookies,
149
159
  remote fetch, store listing, or Firefox parity is claimed.
160
+ - **Verified setup and portable project profiles**: `gno setup <folder>` proves
161
+ an exact lexical result before success; optional `.gno/index.yml` profiles
162
+ carry explicit collection, context, model, content-type, and project-affinity
163
+ intent without storing the index in the repository.
164
+ - **Portable export adapters**: JSONL/NDJSON, EML/MBOX, ICS, WebVTT/SRT,
165
+ explicit browser exports, and configured transcript exports become bounded,
166
+ read-only logical records with exact file provenance—never live-account
167
+ connectors.
168
+ - **Collection-owned egress policy**: every collection has an effective
169
+ `local_only`, `lan`, or `remote` boundary that follows mixed and derived
170
+ evidence through resident serving, inference, publishing, exports, Capsules,
171
+ and traces. Authentication never overrides policy.
150
172
  - **Schema-lite content types**: optional `contentTypes` rules map configured
151
173
  frontmatter `type` values or path prefixes to canonical `contentType` metadata
152
174
  in JSON search/query results and can apply one bounded, explainable
@@ -898,25 +920,29 @@ graph TD
898
920
 
899
921
  ## Features
900
922
 
901
- | Feature | Description |
902
- | :------------------- | :----------------------------------------------------------------------------- |
903
- | **Hybrid Search** | BM25 + vector + RRF fusion + cross-encoder reranking |
904
- | **Document Editor** | Create, edit, delete docs with live markdown preview |
905
- | **Web UI** | Visual dashboard for search, browse, edit, and AI Q&A |
906
- | **REST API** | HTTP API for custom tools and integrations |
907
- | **Multi-Format** | Markdown, PDF, Office, JSONL, EML/MBOX, ICS, transcript, and browser exports |
908
- | **Local LLM** | AI answers via llama.cpp, no API keys |
909
- | **Remote Inference** | Optional HTTP endpoints for embedding, reranking, expansion, and generation |
910
- | **Privacy First** | Local by default; no telemetry; network use is explicit or model provisioning |
911
- | **MCP Server** | 10 automatic client targets; 25 read-only tools, 40 with writes enabled |
912
- | **Knowledge Delta** | Bounded metadata history, structural diffs, and dependency impact paths |
913
- | **Context Capsules** | Deterministic evidence bundles plus saved-file freshness reverification |
914
- | **Collections** | Organize sources with patterns, excludes, contexts |
915
- | **Tag Filtering** | Frontmatter tags with hierarchical paths, filter via `--tags-any`/`--tags-all` |
916
- | **Note Linking** | Wiki links, backlinks, related notes, cross-collection navigation |
917
- | **Multilingual** | Query classification, 7-language document detection, multilingual embeddings |
918
- | **Incremental** | SHA-256 tracking, only changed files re-indexed |
919
- | **Keyboard First** | ⌘N capture, ⌘K search, ⌘/ shortcuts, ⌘S save |
923
+ | Feature | Description |
924
+ | :------------------- | :------------------------------------------------------------------------------------------ |
925
+ | **Hybrid Search** | BM25 + vector + RRF fusion + cross-encoder reranking |
926
+ | **Document Editor** | Create, edit, delete docs with live markdown preview |
927
+ | **Web UI** | Visual dashboard for search, browse, edit, and AI Q&A |
928
+ | **REST API** | HTTP API for custom tools and integrations |
929
+ | **Multi-Format** | Markdown, PDF, Office, JSONL, EML/MBOX, ICS, transcript, and browser exports |
930
+ | **Local LLM** | AI answers via llama.cpp, no API keys |
931
+ | **Remote Inference** | Optional HTTP endpoints for embedding, reranking, expansion, and generation |
932
+ | **Privacy First** | Fail-closed per-collection egress policy; no telemetry; explicit network use |
933
+ | **MCP Server** | 10 automatic client targets; 25 read-only tools, 40 with writes enabled |
934
+ | **Knowledge Delta** | Bounded metadata history, structural diffs, and dependency impact paths |
935
+ | **Context Capsules** | Deterministic evidence bundles plus saved-file freshness reverification |
936
+ | **Verified Ask** | Claim-by-claim evidence checks with explicit abstention |
937
+ | **Private Replay** | Opt-in local traces, explicit qrels, and read-only ranking comparison |
938
+ | **Verified Setup** | Exact lexical activation proof plus portable project-local profiles |
939
+ | **Browser Clipper** | Explicit selection/Reader capture through visible loopback pairing |
940
+ | **Collections** | Organize sources with patterns, contexts, and <code>local_only / lan / remote</code> policy |
941
+ | **Tag Filtering** | Frontmatter tags with hierarchical paths, filter via `--tags-any`/`--tags-all` |
942
+ | **Note Linking** | Wiki links, backlinks, related notes, cross-collection navigation |
943
+ | **Multilingual** | Query classification, 7-language document detection, multilingual embeddings |
944
+ | **Incremental** | SHA-256 tracking, only changed files re-indexed |
945
+ | **Keyboard First** | ⌘N capture, ⌘K search, ⌘/ shortcuts, ⌘S save |
920
946
 
921
947
  ---
922
948
 
@@ -269,6 +269,39 @@ Treat replay as evidence for a human promotion decision. It always reports
269
269
  `applied: false`; never claim that replay changed boosts, prompts, models,
270
270
  configuration, traces, or source files.
271
271
 
272
+ ## Collection Egress Boundaries
273
+
274
+ Before any non-loopback serving, remote model call, network export, or publish
275
+ handoff, inspect the participating collections instead of inferring permission
276
+ from authentication:
277
+
278
+ ```bash
279
+ gno collection policy get <collection>
280
+ gno collection policy check --action <action> \
281
+ --destination <local_process|loopback|lan|remote> \
282
+ --content-class <class> -c <collection> --explain-egress
283
+ ```
284
+
285
+ Absent and migrated policies are `local_only`. Mixed evidence and derived
286
+ artifacts inherit the most restrictive source policy. Do not silently omit a
287
+ restricted collection; use explicit partial mode only when the user asks for
288
+ it, then report every omitted collection and reason.
289
+
290
+ Relaxing to `lan` or `remote` is a visible user-authorized write. Read the
291
+ current revision with `get`, then use
292
+ `gno collection policy set <collection> <policy> --confirm-relaxation <revision>`.
293
+ Never invent or reuse a revision. Tightening to `local_only` needs no
294
+ confirmation and invalidates active sessions, streams, and queued work.
295
+
296
+ Bearer authentication, MCP write enablement, and collection policy are
297
+ independent gates. `EGRESS_DENIED` is not permission to retry through another
298
+ surface. Audit output is local and content-free via
299
+ `gno egress-audit list|show|status`; deletion/purge must be explicit. A local
300
+ policy change cannot retract data already uploaded—tell the user to remove it
301
+ at the remote service. For gno.sh, supported private links can be revoked or
302
+ expired in Studio; public-space deletion is not yet self-service, so request
303
+ takedown. Encrypted gno.sh shares are client-encrypted and never server-decrypted.
304
+
272
305
  ## MCP Retrieval Strategy
273
306
 
274
307
  For a long-lived client that supports Streamable HTTP, start one resident owner
@@ -0,0 +1 @@
1
+ 3ea69fe6de5e72a28f8e7f500edc351c53802639ac320806ca5588070cb7e1c1 gno-browser-clipper-v1.29.0.zip