@plurnk/plurnk-service 1.2.0 → 1.3.1

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 (168) hide show
  1. package/.env.defaults +7 -5
  2. package/README.md +16 -13
  3. package/SPEC.md +72 -130
  4. package/dist/build-info.d.ts +11 -0
  5. package/dist/build-info.d.ts.map +1 -0
  6. package/dist/build-info.js +45 -0
  7. package/dist/build-info.js.map +1 -0
  8. package/dist/build-info.json +1 -0
  9. package/dist/content/index.js +1 -1
  10. package/dist/content/index.js.map +1 -1
  11. package/dist/content/line-marker.js +1 -1
  12. package/dist/content/line-marker.js.map +1 -1
  13. package/dist/content/matcher.js +4 -4
  14. package/dist/content/matcher.js.map +1 -1
  15. package/dist/content/mimetype-binary.js +1 -1
  16. package/dist/content/mimetype-binary.js.map +1 -1
  17. package/dist/content/path-mimetype.js +1 -1
  18. package/dist/content/path-mimetype.js.map +1 -1
  19. package/dist/core/ChannelWrite.d.ts +2 -1
  20. package/dist/core/ChannelWrite.d.ts.map +1 -1
  21. package/dist/core/ChannelWrite.js +6 -19
  22. package/dist/core/ChannelWrite.js.map +1 -1
  23. package/dist/core/ChannelWrite.sql +2 -7
  24. package/dist/core/Dispatcher.d.ts.map +1 -1
  25. package/dist/core/Dispatcher.js +92 -23
  26. package/dist/core/Dispatcher.js.map +1 -1
  27. package/dist/core/Engine.d.ts +9 -0
  28. package/dist/core/Engine.d.ts.map +1 -1
  29. package/dist/core/Engine.js +126 -30
  30. package/dist/core/Engine.js.map +1 -1
  31. package/dist/core/Engine.sql +8 -6
  32. package/dist/core/PacketBuilder.js +1 -1
  33. package/dist/core/PacketBuilder.js.map +1 -1
  34. package/dist/core/PluginLoader.d.ts +1 -0
  35. package/dist/core/PluginLoader.d.ts.map +1 -1
  36. package/dist/core/PluginLoader.js +30 -11
  37. package/dist/core/PluginLoader.js.map +1 -1
  38. package/dist/core/ProposalLifecycle.d.ts.map +1 -1
  39. package/dist/core/ProposalLifecycle.js +11 -6
  40. package/dist/core/ProposalLifecycle.js.map +1 -1
  41. package/dist/core/ProviderInstantiate.d.ts +1 -0
  42. package/dist/core/ProviderInstantiate.d.ts.map +1 -1
  43. package/dist/core/ProviderInstantiate.js +8 -0
  44. package/dist/core/ProviderInstantiate.js.map +1 -1
  45. package/dist/core/SchemeRegistry.d.ts +3 -1
  46. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  47. package/dist/core/SchemeRegistry.js +18 -11
  48. package/dist/core/SchemeRegistry.js.map +1 -1
  49. package/dist/core/caps/DbEntryCaps.d.ts +6 -5
  50. package/dist/core/caps/DbEntryCaps.d.ts.map +1 -1
  51. package/dist/core/caps/DbEntryCaps.js +36 -14
  52. package/dist/core/caps/DbEntryCaps.js.map +1 -1
  53. package/dist/core/caps/DbProjectionCaps.d.ts +11 -0
  54. package/dist/core/caps/DbProjectionCaps.d.ts.map +1 -0
  55. package/dist/core/caps/DbProjectionCaps.js +19 -0
  56. package/dist/core/caps/DbProjectionCaps.js.map +1 -0
  57. package/dist/core/caps/DbSubscriptionCaps.d.ts +3 -1
  58. package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -1
  59. package/dist/core/caps/DbSubscriptionCaps.js +12 -3
  60. package/dist/core/caps/DbSubscriptionCaps.js.map +1 -1
  61. package/dist/core/caps/SchemeCtxImpl.d.ts +18 -4
  62. package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -1
  63. package/dist/core/caps/SchemeCtxImpl.js +26 -12
  64. package/dist/core/caps/SchemeCtxImpl.js.map +1 -1
  65. package/dist/core/fork.sql +4 -4
  66. package/dist/core/git-membership.d.ts.map +1 -1
  67. package/dist/core/git-membership.js +23 -0
  68. package/dist/core/git-membership.js.map +1 -1
  69. package/dist/core/packet-wire.d.ts.map +1 -1
  70. package/dist/core/packet-wire.js +3 -2
  71. package/dist/core/packet-wire.js.map +1 -1
  72. package/dist/core/path-decode.d.ts +1 -0
  73. package/dist/core/path-decode.d.ts.map +1 -1
  74. package/dist/core/path-decode.js +1 -0
  75. package/dist/core/path-decode.js.map +1 -1
  76. package/dist/core/plurnk-uri.d.ts.map +1 -1
  77. package/dist/core/plurnk-uri.js +5 -3
  78. package/dist/core/plurnk-uri.js.map +1 -1
  79. package/dist/core/resolveForLoop.js +1 -1
  80. package/dist/core/resolveForLoop.js.map +1 -1
  81. package/dist/core/results.js +2 -2
  82. package/dist/core/results.js.map +1 -1
  83. package/dist/core/scheme-types.d.ts.map +1 -1
  84. package/dist/core/scheme-types.js +1 -1
  85. package/dist/core/scheme-types.js.map +1 -1
  86. package/dist/core/search-gate.js +2 -2
  87. package/dist/core/search-gate.js.map +1 -1
  88. package/dist/digest/Digest.d.ts.map +1 -1
  89. package/dist/digest/Digest.js +79 -8
  90. package/dist/digest/Digest.js.map +1 -1
  91. package/dist/digest/digest.sql +1 -1
  92. package/dist/schemes/Exec.d.ts +2 -4
  93. package/dist/schemes/Exec.d.ts.map +1 -1
  94. package/dist/schemes/Exec.js +41 -11
  95. package/dist/schemes/Exec.js.map +1 -1
  96. package/dist/schemes/File.d.ts.map +1 -1
  97. package/dist/schemes/File.js +1 -0
  98. package/dist/schemes/File.js.map +1 -1
  99. package/dist/schemes/Log.d.ts.map +1 -1
  100. package/dist/schemes/Log.js +20 -0
  101. package/dist/schemes/Log.js.map +1 -1
  102. package/dist/schemes/Prompt.d.ts +6 -7
  103. package/dist/schemes/Prompt.d.ts.map +1 -1
  104. package/dist/schemes/Prompt.js +4 -5
  105. package/dist/schemes/Prompt.js.map +1 -1
  106. package/dist/schemes/Skill.d.ts +7 -9
  107. package/dist/schemes/Skill.d.ts.map +1 -1
  108. package/dist/schemes/Skill.js +5 -7
  109. package/dist/schemes/Skill.js.map +1 -1
  110. package/dist/schemes/Worker.d.ts.map +1 -1
  111. package/dist/schemes/Worker.js +1 -0
  112. package/dist/schemes/Worker.js.map +1 -1
  113. package/dist/schemes/_entry-chunk.d.ts +4 -1
  114. package/dist/schemes/_entry-chunk.d.ts.map +1 -1
  115. package/dist/schemes/_entry-chunk.js +76 -22
  116. package/dist/schemes/_entry-chunk.js.map +1 -1
  117. package/dist/schemes/_entry-crud.d.ts.map +1 -1
  118. package/dist/schemes/_entry-crud.js +0 -10
  119. package/dist/schemes/_entry-crud.js.map +1 -1
  120. package/dist/schemes/_entry-find.d.ts.map +1 -1
  121. package/dist/schemes/_entry-find.js +9 -8
  122. package/dist/schemes/_entry-find.js.map +1 -1
  123. package/dist/schemes/_entry-find.sql +1 -1
  124. package/dist/schemes/_entry-graph.d.ts +1 -1
  125. package/dist/schemes/_entry-graph.d.ts.map +1 -1
  126. package/dist/schemes/_entry-graph.js +13 -12
  127. package/dist/schemes/_entry-graph.js.map +1 -1
  128. package/dist/schemes/_entry-graph.sql +49 -13
  129. package/dist/schemes/_entry-manifest.d.ts +5 -2
  130. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  131. package/dist/schemes/_entry-manifest.js +135 -123
  132. package/dist/schemes/_entry-manifest.js.map +1 -1
  133. package/dist/schemes/_entry-ops.d.ts.map +1 -1
  134. package/dist/schemes/_entry-ops.js +0 -4
  135. package/dist/schemes/_entry-ops.js.map +1 -1
  136. package/dist/schemes/_entry-semantic.d.ts +12 -5
  137. package/dist/schemes/_entry-semantic.d.ts.map +1 -1
  138. package/dist/schemes/_entry-semantic.js +57 -70
  139. package/dist/schemes/_entry-semantic.js.map +1 -1
  140. package/dist/schemes/_entry-semantic.sql +22 -53
  141. package/dist/server/Daemon.d.ts +4 -3
  142. package/dist/server/Daemon.d.ts.map +1 -1
  143. package/dist/server/Daemon.js +109 -44
  144. package/dist/server/Daemon.js.map +1 -1
  145. package/dist/server/auto.d.ts +6 -0
  146. package/dist/server/auto.d.ts.map +1 -0
  147. package/dist/server/{yolo.js → auto.js} +15 -16
  148. package/dist/server/auto.js.map +1 -0
  149. package/dist/server/client-input.d.ts +1 -1
  150. package/dist/server/client-input.d.ts.map +1 -1
  151. package/dist/server/client-input.js +11 -4
  152. package/dist/server/client-input.js.map +1 -1
  153. package/dist/server/drain.sql +6 -3
  154. package/dist/server/loopDocs.d.ts.map +1 -1
  155. package/dist/server/loopDocs.js +2 -2
  156. package/dist/server/loopDocs.js.map +1 -1
  157. package/dist/server/noProposals.js +5 -5
  158. package/dist/server/noProposals.js.map +1 -1
  159. package/dist/service.d.ts.map +1 -1
  160. package/dist/service.js +18 -5
  161. package/dist/service.js.map +1 -1
  162. package/migrations/0000-00-00.01_schema.sql +55 -48
  163. package/migrations/0004_loop-provider.sql +3 -0
  164. package/migrations/0005_subscription-published-channel.sql +3 -0
  165. package/package.json +27 -22
  166. package/dist/server/yolo.d.ts +0 -6
  167. package/dist/server/yolo.d.ts.map +0 -1
  168. package/dist/server/yolo.js.map +0 -1
package/.env.defaults CHANGED
@@ -223,6 +223,9 @@ PLURNK_SERVICE_SEMANTIC_CHUNK_TOKENS=
223
223
  # Overlap fraction [0,1): trailing context re-covered at each chunk boundary so a
224
224
  # concept split across a cut still matches in both. ~0.15 is a standard RAG default.
225
225
  PLURNK_SERVICE_SEMANTIC_CHUNK_OVERLAP=0.15
226
+ # Optional maximum UTF-8 body size eligible for vectors. Oversized entries remain
227
+ # readable, graph-derived, and FTS-indexed. 0 = unlimited (the shipped default).
228
+ PLURNK_SERVICE_MAX_EMBED_SIZE=0
226
229
  # =1 forces the FTS-only path even with the embeddings package installed — the ~query
227
230
  # degrades to keyword ranking and no vectors are derived (no MiniLM pool spun up). For
228
231
  # hosts/runs that don't want vector search; the fast test lane sets it in .env.test.
@@ -238,8 +241,7 @@ PLURNK_SERVICE_SEARCH_MAX_PER_TURN=3
238
241
  # steer instead of enumerating every match (§find-count-not-contents) — a repo-scale FIND(**) over
239
242
  # a 19k-entry workspace grinds clean instead of overflowing the window. 0/unset = no gate.
240
243
  PLURNK_SERVICE_FIND_MAX_MATCHES=500
241
- # Derivation-pump concurrency: how many entries' embeds run at once. The embedder's worker pool is
242
- # data-parallel but starves on sequential per-entry calls (#416) overlapping K embeds saturates
243
- # it (a large-workspace ingest goes from a single-core minutes-long grind to a fast multi-core
244
- # pass). 1 = sequential (default, safe). Set to ~cores for repo-scale ingest.
245
- PLURNK_SERVICE_DERIVE_CONCURRENCY=1
244
+ # Derivation producer concurrency: how many entries may materialize graphs/chunk plans at once.
245
+ # Unset uses a host-relative square-root fan-out; the separate embedding pool uses the available
246
+ # cores. A positive integer is an exact operator budget; -1 explicitly claims every available core.
247
+ PLURNK_SERVICE_DERIVE_CONCURRENCY=
package/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # plurnk-service
2
2
 
3
- LLM agent runtime engine. Consumes [plurnk-grammar](https://github.com/plurnk/plurnk-grammar); exposes WebSocket JSON-RPC. User-facing CLI: [plurnk](https://github.com/plurnk/plurnk). Provider-agnostic, MIT — no vendor or model lock-in.
3
+ The PLURNK daemon: persistent agent state, model loops, packet assembly, and
4
+ operation dispatch. Its client surface is AG-UI over HTTP/SSE through
5
+ `@plurnk/plurnk-agui`. The user-facing CLI lives in
6
+ [plurnk](https://github.com/plurnk/plurnk).
4
7
 
5
8
  ## What an agent can do
6
9
 
@@ -12,16 +15,11 @@ Over schemes: `file://` project files · `exec://` command output · `http(s)://
12
15
 
13
16
  Workspace = the shared world (one filesystem + membership overlay). Run = one agent's private log. Loop = one `prompt → ops → SEND[terminal]` cycle; every turn leads with `PLAN`. Runs fork and message each other — many clients, many runs, one workspace.
14
17
 
15
- ## Integration (WebSocket JSON-RPC)
18
+ ## Integration
16
19
 
17
- Methods: `workspace.*` (create / attach / constrain / list…) · `loop.run` / `loop.inject` / `loop.resolve` · `op.*` (read / edit / find / exec / send…) · `log.read` · `run.fork`. Streams: `log/entry` → … → `loop/terminated`, plus `loop/proposal`, `telemetry/event`. Full live catalog: the `discover` RPC.
18
-
19
- ```
20
- ws connect → workspace.create({ projectRoot }) → loop.run({ prompt })
21
- → read log/entry notifications until loop/terminated
22
- ```
23
-
24
- The human CLI over this surface is [plurnk](https://github.com/plurnk/plurnk).
20
+ Clients use AG-UI management actions and run streams exposed by
21
+ `@plurnk/plurnk-agui`. Core supplies an in-process daemon seam; it does not open
22
+ a second client transport.
25
23
 
26
24
  ## Run
27
25
 
@@ -34,8 +32,11 @@ Config + state live in `~/.plurnk/` (created on first run): put your config in `
34
32
 
35
33
  ## Contract & siblings
36
34
 
37
- - [`SPEC.md`](./SPEC.md) — canonical specification. One `§<tag>` namespace; anchors `{§<tag>}` bind 1:1 to `test/intg/spec-anchors.test.ts`.
38
- - [plurnk-providers](https://github.com/plurnk/plurnk-providers) §provider · [plurnk-schemes](https://github.com/plurnk/plurnk-schemes) §scheme-surface · [plurnk-mimetypes](https://github.com/plurnk/plurnk-mimetypes) §mimetype-surface · [plurnk-execs](https://github.com/plurnk/plurnk-execs) §bundled-set.
35
+ - [`SPEC.md`](./SPEC.md) — detailed behavioral reference.
36
+ - `@plurnk/plurnk-providers` model endpoint contract.
37
+ - `@plurnk/plurnk-schemes` — addressable resource contract.
38
+ - `@plurnk/plurnk-mimetypes` — content handling contract.
39
+ - `@plurnk/plurnk-execs` — executable capability contract.
39
40
 
40
41
  ## Semantic search
41
42
 
@@ -47,4 +48,6 @@ Plurnk sees what git sees. The model's file surface is defined by three external
47
48
 
48
49
  ## Tests
49
50
 
50
- `test:lint`, `test:unit`, `test:intg`, `test:live`, `test:demo`; off-hot-path `test:installation`.
51
+ Run the root monorepo commands for deterministic lint, unit, and integration
52
+ coverage. Live-model, demo, and installation tests declare their external
53
+ requirements separately.