@plurnk/plurnk-service 1.28.0 → 2.0.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 (253) hide show
  1. package/.env.defaults +7 -18
  2. package/INSTALL.md +65 -15
  3. package/README.md +8 -5
  4. package/SPEC.md +217 -449
  5. package/dist/build-info.json +1 -1
  6. package/dist/content/body-preview.d.ts +5 -0
  7. package/dist/content/body-preview.d.ts.map +1 -1
  8. package/dist/content/body-preview.js +25 -0
  9. package/dist/content/body-preview.js.map +1 -1
  10. package/dist/content/line-marker.js +1 -1
  11. package/dist/content/line-marker.js.map +1 -1
  12. package/dist/content/path-mimetype.js +1 -1
  13. package/dist/content/path-mimetype.js.map +1 -1
  14. package/dist/core/AdmittedTurnExecutor.d.ts +4 -3
  15. package/dist/core/AdmittedTurnExecutor.d.ts.map +1 -1
  16. package/dist/core/AdmittedTurnExecutor.js +19 -17
  17. package/dist/core/AdmittedTurnExecutor.js.map +1 -1
  18. package/dist/core/BareBatchRunner.d.ts +2 -2
  19. package/dist/core/BareBatchRunner.d.ts.map +1 -1
  20. package/dist/core/BareBatchRunner.js.map +1 -1
  21. package/dist/core/ChannelWrite.d.ts +5 -0
  22. package/dist/core/ChannelWrite.d.ts.map +1 -1
  23. package/dist/core/ChannelWrite.js +5 -0
  24. package/dist/core/ChannelWrite.js.map +1 -1
  25. package/dist/core/ChannelWrite.sql +10 -0
  26. package/dist/core/DataStatementRunner.d.ts.map +1 -1
  27. package/dist/core/DataStatementRunner.js +8 -3
  28. package/dist/core/DataStatementRunner.js.map +1 -1
  29. package/dist/core/Dispatcher.d.ts +2 -2
  30. package/dist/core/Dispatcher.d.ts.map +1 -1
  31. package/dist/core/Dispatcher.js +21 -15
  32. package/dist/core/Dispatcher.js.map +1 -1
  33. package/dist/core/Engine.d.ts +1 -1
  34. package/dist/core/Engine.d.ts.map +1 -1
  35. package/dist/core/Engine.js +1 -1
  36. package/dist/core/Engine.js.map +1 -1
  37. package/dist/core/ExecutorRegistry.d.ts +3 -17
  38. package/dist/core/ExecutorRegistry.d.ts.map +1 -1
  39. package/dist/core/ExecutorRegistry.js +6 -6
  40. package/dist/core/ExecutorRegistry.js.map +1 -1
  41. package/dist/core/HostPaths.d.ts +2 -0
  42. package/dist/core/HostPaths.d.ts.map +1 -1
  43. package/dist/core/HostPaths.js +14 -0
  44. package/dist/core/HostPaths.js.map +1 -1
  45. package/dist/core/KillHandler.d.ts.map +1 -1
  46. package/dist/core/KillHandler.js +9 -3
  47. package/dist/core/KillHandler.js.map +1 -1
  48. package/dist/core/PacketBuilder.d.ts.map +1 -1
  49. package/dist/core/PacketBuilder.js +8 -2
  50. package/dist/core/PacketBuilder.js.map +1 -1
  51. package/dist/core/ResourceSelector.d.ts.map +1 -1
  52. package/dist/core/ResourceSelector.js +4 -2
  53. package/dist/core/ResourceSelector.js.map +1 -1
  54. package/dist/core/ResourceTransfers.d.ts.map +1 -1
  55. package/dist/core/ResourceTransfers.js +2 -2
  56. package/dist/core/ResourceTransfers.js.map +1 -1
  57. package/dist/core/SchemeRegistry.d.ts +5 -4
  58. package/dist/core/SchemeRegistry.d.ts.map +1 -1
  59. package/dist/core/SchemeRegistry.js +9 -9
  60. package/dist/core/SchemeRegistry.js.map +1 -1
  61. package/dist/core/ToolResources.js +5 -5
  62. package/dist/core/ToolResources.js.map +1 -1
  63. package/dist/core/Turn.js +1 -1
  64. package/dist/core/Turn.js.map +1 -1
  65. package/dist/core/TurnOps.d.ts +1 -1
  66. package/dist/core/TurnOps.d.ts.map +1 -1
  67. package/dist/core/TurnOps.js +4 -12
  68. package/dist/core/TurnOps.js.map +1 -1
  69. package/dist/core/TurnRunner.d.ts +1 -2
  70. package/dist/core/TurnRunner.d.ts.map +1 -1
  71. package/dist/core/TurnRunner.js +11 -24
  72. package/dist/core/TurnRunner.js.map +1 -1
  73. package/dist/core/WorkerControlHandler.d.ts.map +1 -1
  74. package/dist/core/WorkerControlHandler.js +5 -1
  75. package/dist/core/WorkerControlHandler.js.map +1 -1
  76. package/dist/core/caps/DbNotifyCaps.js +2 -2
  77. package/dist/core/caps/DbNotifyCaps.js.map +1 -1
  78. package/dist/core/caps/DbProjectionCaps.js +1 -1
  79. package/dist/core/caps/DbProjectionCaps.js.map +1 -1
  80. package/dist/core/env-defaults.d.ts +2 -1
  81. package/dist/core/env-defaults.d.ts.map +1 -1
  82. package/dist/core/env-defaults.js +17 -9
  83. package/dist/core/env-defaults.js.map +1 -1
  84. package/dist/core/packet-wire.d.ts +1 -2
  85. package/dist/core/packet-wire.d.ts.map +1 -1
  86. package/dist/core/packet-wire.js +9 -6
  87. package/dist/core/packet-wire.js.map +1 -1
  88. package/dist/core/plurnk-uri.d.ts +7 -0
  89. package/dist/core/plurnk-uri.d.ts.map +1 -1
  90. package/dist/core/plurnk-uri.js +21 -0
  91. package/dist/core/plurnk-uri.js.map +1 -1
  92. package/dist/core/unregistered-scheme.d.ts +4 -0
  93. package/dist/core/unregistered-scheme.d.ts.map +1 -0
  94. package/dist/core/unregistered-scheme.js +14 -0
  95. package/dist/core/unregistered-scheme.js.map +1 -0
  96. package/dist/evidence/EvidenceReader.d.ts +14 -0
  97. package/dist/evidence/EvidenceReader.d.ts.map +1 -0
  98. package/dist/evidence/EvidenceReader.js +134 -0
  99. package/dist/evidence/EvidenceReader.js.map +1 -0
  100. package/dist/index.d.ts +0 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +2 -4
  103. package/dist/index.js.map +1 -1
  104. package/dist/schemes/Exec.d.ts.map +1 -1
  105. package/dist/schemes/Exec.js +17 -6
  106. package/dist/schemes/Exec.js.map +1 -1
  107. package/dist/schemes/ExecOutputScheme.d.ts +1 -1
  108. package/dist/schemes/ExecOutputScheme.d.ts.map +1 -1
  109. package/dist/schemes/File.d.ts.map +1 -1
  110. package/dist/schemes/File.js +11 -6
  111. package/dist/schemes/File.js.map +1 -1
  112. package/dist/schemes/Log.d.ts.map +1 -1
  113. package/dist/schemes/Log.js +49 -5
  114. package/dist/schemes/Log.js.map +1 -1
  115. package/dist/schemes/{Skill.d.ts → ResourceTreeScheme.d.ts} +5 -6
  116. package/dist/schemes/ResourceTreeScheme.d.ts.map +1 -0
  117. package/dist/schemes/{Skill.js → ResourceTreeScheme.js} +63 -43
  118. package/dist/schemes/ResourceTreeScheme.js.map +1 -0
  119. package/dist/schemes/Worker.js +1 -1
  120. package/dist/schemes/Worker.js.map +1 -1
  121. package/dist/schemes/_entry-crud.js +9 -9
  122. package/dist/schemes/_entry-crud.js.map +1 -1
  123. package/dist/schemes/_entry-crud.sql +1 -1
  124. package/dist/schemes/_entry-find.js +5 -5
  125. package/dist/schemes/_entry-find.js.map +1 -1
  126. package/dist/schemes/_entry-find.sql +1 -1
  127. package/dist/schemes/_entry-fts.d.ts.map +1 -1
  128. package/dist/schemes/_entry-fts.js +7 -3
  129. package/dist/schemes/_entry-fts.js.map +1 -1
  130. package/dist/schemes/_entry-manifest.d.ts.map +1 -1
  131. package/dist/schemes/_entry-manifest.js +3 -5
  132. package/dist/schemes/_entry-manifest.js.map +1 -1
  133. package/dist/schemes/_entry-ops.js +4 -4
  134. package/dist/schemes/_entry-ops.js.map +1 -1
  135. package/dist/server/AgentRoots.d.ts +2 -1
  136. package/dist/server/AgentRoots.d.ts.map +1 -1
  137. package/dist/server/AgentRoots.js +13 -10
  138. package/dist/server/AgentRoots.js.map +1 -1
  139. package/dist/server/ConfigurationDiagnostics.d.ts +4 -3
  140. package/dist/server/ConfigurationDiagnostics.d.ts.map +1 -1
  141. package/dist/server/ConfigurationDiagnostics.js +15 -8
  142. package/dist/server/ConfigurationDiagnostics.js.map +1 -1
  143. package/dist/server/Daemon.d.ts +13 -8
  144. package/dist/server/Daemon.d.ts.map +1 -1
  145. package/dist/server/Daemon.js +91 -49
  146. package/dist/server/Daemon.js.map +1 -1
  147. package/dist/server/EnvFunctionality.d.ts +2 -2
  148. package/dist/server/EnvFunctionality.d.ts.map +1 -1
  149. package/dist/server/EnvFunctionality.js +2 -2
  150. package/dist/server/EnvFunctionality.js.map +1 -1
  151. package/dist/server/Functionality.d.ts +3 -2
  152. package/dist/server/Functionality.d.ts.map +1 -1
  153. package/dist/server/Functionality.js +1 -1
  154. package/dist/server/Functionality.js.map +1 -1
  155. package/dist/server/HttpListener.d.ts +2 -0
  156. package/dist/server/HttpListener.d.ts.map +1 -1
  157. package/dist/server/HttpListener.js +17 -9
  158. package/dist/server/HttpListener.js.map +1 -1
  159. package/dist/server/MembersFunctionality.d.ts +1 -1
  160. package/dist/server/MembersFunctionality.d.ts.map +1 -1
  161. package/dist/server/MembersFunctionality.js.map +1 -1
  162. package/dist/server/ModuleHost.d.ts +33 -0
  163. package/dist/server/ModuleHost.d.ts.map +1 -0
  164. package/dist/server/ModuleHost.js +2 -0
  165. package/dist/server/ModuleHost.js.map +1 -0
  166. package/dist/server/PlurnkSkill.d.ts.map +1 -1
  167. package/dist/server/PlurnkSkill.js +54 -6
  168. package/dist/server/PlurnkSkill.js.map +1 -1
  169. package/dist/server/ServiceModules.d.ts +0 -2
  170. package/dist/server/ServiceModules.d.ts.map +1 -1
  171. package/dist/server/ServiceModules.js +5 -9
  172. package/dist/server/ServiceModules.js.map +1 -1
  173. package/dist/server/WorkspacePlugins.d.ts +2 -11
  174. package/dist/server/WorkspacePlugins.d.ts.map +1 -1
  175. package/dist/server/WorkspacePlugins.js.map +1 -1
  176. package/dist/server/WorkspaceResidency.d.ts +2 -1
  177. package/dist/server/WorkspaceResidency.d.ts.map +1 -1
  178. package/dist/server/WorkspaceStorage.d.ts +1 -0
  179. package/dist/server/WorkspaceStorage.d.ts.map +1 -1
  180. package/dist/server/WorkspaceStorage.js +31 -5
  181. package/dist/server/WorkspaceStorage.js.map +1 -1
  182. package/dist/server/module-discovery.d.ts +11 -3
  183. package/dist/server/module-discovery.d.ts.map +1 -1
  184. package/dist/server/module-discovery.js +32 -18
  185. package/dist/server/module-discovery.js.map +1 -1
  186. package/dist/server/workspace-storage.sql +5 -0
  187. package/dist/service.d.ts.map +1 -1
  188. package/dist/service.js +37 -34
  189. package/dist/service.js.map +1 -1
  190. package/migrations/016_selection_statements.sql +43 -0
  191. package/migrations/017_skills_module.sql +5 -0
  192. package/package.json +71 -72
  193. package/dist/core/EmissionHead.d.ts +0 -8
  194. package/dist/core/EmissionHead.d.ts.map +0 -1
  195. package/dist/core/EmissionHead.js +0 -29
  196. package/dist/core/EmissionHead.js.map +0 -1
  197. package/dist/core/operation-target-groups.d.ts +0 -3
  198. package/dist/core/operation-target-groups.d.ts.map +0 -1
  199. package/dist/core/operation-target-groups.js +0 -77
  200. package/dist/core/operation-target-groups.js.map +0 -1
  201. package/dist/digest/Digest.d.ts +0 -10
  202. package/dist/digest/Digest.d.ts.map +0 -1
  203. package/dist/digest/Digest.js +0 -252
  204. package/dist/digest/Digest.js.map +0 -1
  205. package/dist/digest/DigestEvidence.d.ts +0 -11
  206. package/dist/digest/DigestEvidence.d.ts.map +0 -1
  207. package/dist/digest/DigestEvidence.js +0 -66
  208. package/dist/digest/DigestEvidence.js.map +0 -1
  209. package/dist/digest/DigestRender.d.ts +0 -18
  210. package/dist/digest/DigestRender.d.ts.map +0 -1
  211. package/dist/digest/DigestRender.js +0 -1035
  212. package/dist/digest/DigestRender.js.map +0 -1
  213. package/dist/digest/DigestRequiem.d.ts +0 -13
  214. package/dist/digest/DigestRequiem.d.ts.map +0 -1
  215. package/dist/digest/DigestRequiem.js +0 -337
  216. package/dist/digest/DigestRequiem.js.map +0 -1
  217. package/dist/digest/digest-db.d.ts +0 -3
  218. package/dist/digest/digest-db.d.ts.map +0 -1
  219. package/dist/digest/digest-db.js +0 -68
  220. package/dist/digest/digest-db.js.map +0 -1
  221. package/dist/digest/digest-paths.d.ts +0 -6
  222. package/dist/digest/digest-paths.d.ts.map +0 -1
  223. package/dist/digest/digest-paths.js +0 -14
  224. package/dist/digest/digest-paths.js.map +0 -1
  225. package/dist/digest/digest-rows.d.ts +0 -346
  226. package/dist/digest/digest-rows.d.ts.map +0 -1
  227. package/dist/digest/digest-rows.js +0 -2
  228. package/dist/digest/digest-rows.js.map +0 -1
  229. package/dist/schemes/Skill.d.ts.map +0 -1
  230. package/dist/schemes/Skill.js.map +0 -1
  231. package/dist/server/DaemonModule.d.ts +0 -101
  232. package/dist/server/DaemonModule.d.ts.map +0 -1
  233. package/dist/server/DaemonModule.js +0 -2
  234. package/dist/server/DaemonModule.js.map +0 -1
  235. package/dist/server/SkillSource.d.ts +0 -37
  236. package/dist/server/SkillSource.d.ts.map +0 -1
  237. package/dist/server/SkillSource.js +0 -267
  238. package/dist/server/SkillSource.js.map +0 -1
  239. package/dist/server/SkillsFunctionality.d.ts +0 -45
  240. package/dist/server/SkillsFunctionality.d.ts.map +0 -1
  241. package/dist/server/SkillsFunctionality.js +0 -405
  242. package/dist/server/SkillsFunctionality.js.map +0 -1
  243. package/dist/server/skills-problems.d.ts +0 -8
  244. package/dist/server/skills-problems.d.ts.map +0 -1
  245. package/dist/server/skills-problems.js +0 -18
  246. package/dist/server/skills-problems.js.map +0 -1
  247. package/dist/share/Share.d.ts +0 -15
  248. package/dist/share/Share.d.ts.map +0 -1
  249. package/dist/share/Share.js +0 -106
  250. package/dist/share/Share.js.map +0 -1
  251. package/dist/share/share.sql +0 -6
  252. package/docs/skills.md +0 -73
  253. /package/dist/{digest → evidence}/digest.sql +0 -0
@@ -1,252 +0,0 @@
1
- #!/usr/bin/env node
2
- //
3
- // Worker-digest tool for plurnk-service DBs. Reads a sqlite plurnk*.db and
4
- // emits per-worker forensic artifacts to test/digest/. First-order forensic
5
- // surface; read-only; safe to re-run.
6
- //
7
- // test/digest/digest.md Health triage rollup (clean/degenerate-win/failed loops) +
8
- // worker-shape header + waterfall (per-loop health verdict; per-turn:
9
- // status, ⚠ errs=N, source-artifact summary, indented op list)
10
- // test/digest/digest.json Same data, machine-queryable
11
- // test/digest/reasoning.md Every provider attempt's reasoning and admission result
12
- // test/digest/requiem.md Out-of-band model audit
13
- // test/digest/requiem.json Exact audit messages, responses, usage, and cost
14
- // <digest>/<stem>.system.md BYTE-FOR-BYTE the system message sent
15
- // when the turn involved a provider.
16
- // <digest>/<stem>.user.md User text slot; digest.json retains native attachment descriptors.
17
- // <digest>/<stem>.wire.json The request's text messages in order, emissions in place.
18
- // <digest>/<stem>.response.md Request-only note when no response was admitted.
19
- // <digest>/<stem>.assistant.md Exact persisted turnOps, regardless of producer.
20
- // <digest>/<stem>.reasoning.md Exact persisted reasoning, regardless of producer.
21
- // <digest>/<stem>.assistantRaw.json Opaque provider response.
22
- // <digest>/<stem>.packet.raw.txt Exact malformed stored packet text.
23
- // <digest>/<stem>.packet.invalid.json Validation failure for that packet.
24
- // <digest>/<stem>.attemptNNN.rejected.assistant.md
25
- // Rejected provider emission.
26
- // <digest>/<stem>.attemptNNN.rejected.response.json
27
- // Full rejected provider response.
28
- // <digest>/<stem>.attemptNNN.rejected.parse-errors.json
29
- // Admission errors for that attempt.
30
- //
31
- // Provider request slots are byte-identical to what Engine emits because both
32
- // paths project through PacketWire. Assistant files preserve durable turnOps.
33
- //
34
- // SQL lives in the co-located digest.sql; opened the sqlrite way (SqlRiteSync,
35
- // the sync CLI/script facade). Each PREP block is read through its own accessor.
36
- import { closeSync, existsSync, mkdirSync, openSync, readdirSync, renameSync, statSync, writeFileSync } from "node:fs";
37
- import { join, resolve } from "node:path";
38
- import { observedSync } from "../observe/spans.js";
39
- import HostPaths from "../core/HostPaths.js";
40
- import DigestRender from "./DigestRender.js";
41
- import DigestRequiem from "./DigestRequiem.js";
42
- import DigestEvidence from "./DigestEvidence.js";
43
- import { digestPaths } from "./digest-paths.js";
44
- import { readDigestDb } from "./digest-db.js";
45
- export default class Digest {
46
- // Default DB path mirrors the host path contract and an explicit service override.
47
- static defaultDbPath() {
48
- const paths = new HostPaths();
49
- const env = process.env.PLURNK_SERVICE_DB_PATH;
50
- return env !== undefined && env.length > 0
51
- ? resolve(paths.expandUserPath(env))
52
- : paths.databaseFile;
53
- }
54
- // {§digest-requiem} — the out-of-band forensic interview lives in DigestRequiem.
55
- static requiem(opts) {
56
- return DigestRequiem.interview(opts);
57
- }
58
- static run(opts) {
59
- // {§observability-boundary} — the evidence write is observed; the digest
60
- // paths themselves are environment-specific and stay off the boundary.
61
- observedSync("digest.write", {}, () => { Digest.#runSettled(opts); });
62
- }
63
- static #runSettled(opts) {
64
- // {§digest-programmatic-surface}: digest.sql is packaged beside this module
65
- // (src/digest → dist/digest via copy-sql), including in an installed package.
66
- const { dbPath, digestDir } = digestPaths(opts);
67
- // {§share}: the digest never deletes; a caller reusing a folder removes it first.
68
- if (existsSync(digestDir) && (!statSync(digestDir).isDirectory() || readdirSync(digestDir).length > 0)) {
69
- throw new Error(`digest: ${digestDir} already exists and is not an empty folder; remove it first`);
70
- }
71
- readDigestDb(dbPath, (db) => Digest.#write(db, dbPath, digestDir, opts));
72
- }
73
- static #write(db, dbPath, digestDir, opts) {
74
- // Opens without readOnly so WAL-mode DBs (the daemon's normal operating
75
- // mode) inspect cleanly; this tool only reads. The DB is quiescent at
76
- // digest time, so each PREP reads on its own — no cross-query snapshot.
77
- const rows = {
78
- workspaces: db.digest_workspaces.all(),
79
- workers: db.digest_workers.all(),
80
- loops: db.digest_loops.all(),
81
- turns: db.digest_turns.all(),
82
- inferenceCalls: db.digest_inference_calls.all(),
83
- modelCalls: db.digest_model_calls.all(),
84
- turnAttempts: db.digest_turn_attempts.all(),
85
- providerRequests: db.digest_provider_requests.all(),
86
- logEntries: db.digest_log_entries.all(),
87
- editRows: db.digest_edit_statements.all(),
88
- emissionRows: db.digest_emissions.all(),
89
- reasoningRows: db.digest_reasonings.all(),
90
- curationEffects: db.digest_curation_effects.all(),
91
- workerRollupRows: db.digest_worker_rollups.all(),
92
- opMixRows: db.digest_worker_op_mix.all(),
93
- environmentRows: db.digest_execution_environments.all(),
94
- searchState: db.digest_channel_search_state.get(),
95
- derivationState: db.digest_derivation_state.get(),
96
- dispositionCounts: db.digest_channel_disposition_counts.all(),
97
- dispositions: db.digest_channel_dispositions.all(),
98
- storage: db.digest_storage.get(),
99
- storageTables: db.digest_storage_tables.all(),
100
- };
101
- let { workspaces, workers, inferenceCalls, modelCalls, turnAttempts, providerRequests, logEntries, editRows, curationEffects, workerRollupRows, opMixRows } = rows;
102
- const { environmentRows, searchState, derivationState, dispositionCounts, dispositions, storageTables, emissionRows, reasoningRows } = rows;
103
- let loops = rows.loops.map((loop) => ({ ...loop, claimed_at: loop.claimed_at ?? null }));
104
- if (rows.storage === undefined)
105
- throw new Error("digest: the database reported no storage facts");
106
- const storage = { ...rows.storage, tables: storageTables };
107
- let turns = rows.turns;
108
- if (searchState === undefined || derivationState === undefined)
109
- throw new Error("digest: search aggregate returned no row");
110
- const dispositionCount = (value) => dispositionCounts.find(({ disposition }) => disposition === value)?.n ?? 0;
111
- const search = {
112
- ...searchState,
113
- indexed: dispositionCount("indexed"),
114
- excluded: dispositionCount("excluded"),
115
- unsearchable: dispositionCount("unsearchable"),
116
- failed: dispositionCount("failed"),
117
- dispositions,
118
- derivation_artifacts_complete: derivationState.complete,
119
- derivation_artifacts_building: derivationState.building,
120
- };
121
- // {§digest-programmatic-surface} — optional worker/workspace selectors narrow the
122
- // kept worker graph and its dependent evidence rather than emitting the whole DB.
123
- if (opts.workerId !== undefined)
124
- workers = workers.filter((r) => r.id === opts.workerId);
125
- if (opts.workspaceId !== undefined)
126
- workers = workers.filter((r) => r.workspace_id === opts.workspaceId);
127
- if (opts.workerId !== undefined || opts.workspaceId !== undefined) {
128
- const keptWorkerIds = new Set(workers.map((r) => r.id));
129
- const keptWorkspaceIds = new Set(workers.map((r) => r.workspace_id));
130
- workspaces = workspaces.filter((s) => keptWorkspaceIds.has(s.id));
131
- loops = loops.filter((l) => keptWorkerIds.has(l.worker_id));
132
- const keptLoopIds = new Set(loops.map((l) => l.id));
133
- turns = turns.filter((t) => keptLoopIds.has(t.loop_id));
134
- const keptTurnIds = new Set(turns.map((t) => t.id));
135
- inferenceCalls = inferenceCalls.filter((call) => keptTurnIds.has(call.turn_id));
136
- const keptInferenceCallIds = new Set(inferenceCalls.map((call) => call.id));
137
- modelCalls = modelCalls.filter((call) => keptInferenceCallIds.has(call.id));
138
- turnAttempts = turnAttempts.filter((attempt) => keptTurnIds.has(attempt.turn_id));
139
- providerRequests = providerRequests.filter((request) => keptInferenceCallIds.has(request.inference_call_id));
140
- logEntries = logEntries.filter((le) => keptTurnIds.has(le.turn_id));
141
- editRows = editRows.filter((row) => keptTurnIds.has(row.turn_id));
142
- const keptLogEntryIds = new Set(logEntries.map((entry) => entry.id));
143
- curationEffects = curationEffects.filter((effect) => keptLogEntryIds.has(effect.operation_log_entry_id)
144
- && keptLogEntryIds.has(effect.target_log_entry_id));
145
- workerRollupRows = workerRollupRows.filter((r) => keptWorkerIds.has(r.worker_id));
146
- opMixRows = opMixRows.filter((o) => keptWorkerIds.has(o.worker_id));
147
- }
148
- mkdirSync(digestDir, { recursive: true });
149
- const workersByWorkspace = new Map();
150
- for (const r of workers) {
151
- const arr = workersByWorkspace.get(r.workspace_id) ?? [];
152
- arr.push(r);
153
- workersByWorkspace.set(r.workspace_id, arr);
154
- }
155
- const loopsByWorker = new Map();
156
- for (const l of loops) {
157
- const arr = loopsByWorker.get(l.worker_id) ?? [];
158
- arr.push(l);
159
- loopsByWorker.set(l.worker_id, arr);
160
- }
161
- const turnsByLoop = new Map();
162
- for (const t of turns) {
163
- const arr = turnsByLoop.get(t.loop_id) ?? [];
164
- arr.push(t);
165
- turnsByLoop.set(t.loop_id, arr);
166
- }
167
- const attemptsByTurn = new Map();
168
- for (const attempt of turnAttempts) {
169
- const arr = attemptsByTurn.get(attempt.turn_id) ?? [];
170
- arr.push(attempt);
171
- attemptsByTurn.set(attempt.turn_id, arr);
172
- }
173
- const requestsByInferenceCall = new Map();
174
- const requestsByAttempt = new Map();
175
- const requestsByTurn = new Map();
176
- const requestsByLoop = new Map();
177
- const requestsByWorker = new Map();
178
- const requestsByWorkspace = new Map();
179
- const appendRequest = (map, id, request) => {
180
- const rows = map.get(id) ?? [];
181
- rows.push(request);
182
- map.set(id, rows);
183
- };
184
- for (const request of providerRequests) {
185
- appendRequest(requestsByInferenceCall, request.inference_call_id, request);
186
- if (request.turn_attempt_id !== null) {
187
- appendRequest(requestsByAttempt, request.turn_attempt_id, request);
188
- }
189
- if (request.turn_id !== null)
190
- appendRequest(requestsByTurn, request.turn_id, request);
191
- if (request.loop_id !== null)
192
- appendRequest(requestsByLoop, request.loop_id, request);
193
- if (request.worker_id !== null)
194
- appendRequest(requestsByWorker, request.worker_id, request);
195
- appendRequest(requestsByWorkspace, request.workspace_id, request);
196
- }
197
- const editRowsByWorker = new Map();
198
- for (const row of editRows) {
199
- const arr = editRowsByWorker.get(row.worker_id) ?? [];
200
- arr.push(row);
201
- editRowsByWorker.set(row.worker_id, arr);
202
- }
203
- const logEntriesByTurn = new Map();
204
- for (const le of logEntries) {
205
- const arr = logEntriesByTurn.get(le.turn_id) ?? [];
206
- arr.push(le);
207
- logEntriesByTurn.set(le.turn_id, arr);
208
- }
209
- const loopsById = new Map(loops.map((l) => [l.id, l]));
210
- const workersById = new Map(workers.map((r) => [r.id, r]));
211
- const workerRollups = new Map(workerRollupRows.map((r) => [r.worker_id, r]));
212
- const environments = new Map(environmentRows.map((row) => [`${row.workspace_id}:${row.stream}`, JSON.parse(row.env)]));
213
- const emissionsByWorker = new Map();
214
- for (const row of emissionRows) {
215
- const map = emissionsByWorker.get(row.worker_id) ?? new Map();
216
- map.set(row.coordinate, row.content);
217
- emissionsByWorker.set(row.worker_id, map);
218
- }
219
- const opMixByWorker = new Map();
220
- for (const o of opMixRows) {
221
- const arr = opMixByWorker.get(o.worker_id) ?? [];
222
- arr.push(o);
223
- opMixByWorker.set(o.worker_id, arr);
224
- }
225
- const m = {
226
- evidence: new DigestEvidence(db),
227
- dbPath, storage, digestDir, workspaces, workers, loops, turns, inferenceCalls, modelCalls, turnAttempts, providerRequests, logEntries, curationEffects,
228
- workersByWorkspace, loopsByWorker, turnsByLoop, attemptsByTurn,
229
- requestsByInferenceCall, requestsByAttempt, requestsByTurn, requestsByLoop, requestsByWorker, requestsByWorkspace,
230
- logEntriesByTurn, emissionRows, reasoningRows, emissionsByWorker, editRows, editRowsByWorker, environments, loopsById, workersById,
231
- workerRollups, opMixByWorker, search,
232
- };
233
- writeFileSync(join(digestDir, "digest.md"), DigestRender.waterfall(m));
234
- const pending = join(digestDir, "digest.json.partial");
235
- const descriptor = openSync(pending, "w");
236
- try {
237
- for (const chunk of DigestRender.json(m))
238
- writeFileSync(descriptor, chunk);
239
- }
240
- finally {
241
- closeSync(descriptor);
242
- }
243
- writeFileSync(join(digestDir, "reasoning.md"), DigestRender.reasoning(m));
244
- const packetFiles = DigestRender.packetFiles(m);
245
- const packetIds = [...new Set(packetFiles.map((f) => f.slice(0, f.indexOf("."))))];
246
- renameSync(pending, join(digestDir, "digest.json"));
247
- console.log(`digest: wrote ${digestDir}/{digest.md,digest.json,reasoning.md} + ${packetFiles.length} packet artifact files (${packetIds.join(", ") || "none"})`);
248
- console.log(` source: ${dbPath}`);
249
- console.log(` workspaces=${workspaces.length} workers=${workers.length} loops=${loops.length} turns=${turns.length} inference_calls=${inferenceCalls.length} model_calls=${modelCalls.length} turn_attempts=${turnAttempts.length} provider_requests=${providerRequests.length} log_entries=${logEntries.length} log_curation_effects=${curationEffects.length}`);
250
- }
251
- }
252
- //# sourceMappingURL=Digest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Digest.js","sourceRoot":"","sources":["../../src/digest/Digest.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type SqlRiteSync from "@possumtech/sqlrite/sync";
2
- import type { PacketEvidence, TurnRow } from "./digest-rows.ts";
3
- export default class DigestEvidence {
4
- #private;
5
- constructor(db: SqlRiteSync);
6
- packet(turn: TurnRow): PacketEvidence;
7
- response(modelCallId: number): string | null;
8
- request(requestId: number): string | null;
9
- reasoning(turn: TurnRow): string | null;
10
- }
11
- //# sourceMappingURL=DigestEvidence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DigestEvidence.d.ts","sourceRoot":"","sources":["../../src/digest/DigestEvidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,WAAW,MAAM,0BAA0B,CAAC;AAExD,OAAO,KAAK,EAAiB,cAAc,EAAY,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAsBzF,MAAM,CAAC,OAAO,OAAO,cAAc;;IAI/B,YAAY,EAAE,EAAE,WAAW,EAAoB;IAE/C,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAepC;IAED,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE3C;IAED,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxC;IAED,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAKtC;CACJ"}
@@ -1,66 +0,0 @@
1
- import StoredPacket from "../core/StoredPacket.js";
2
- const describeNonError = (value) => {
3
- if (typeof value === "string")
4
- return value;
5
- try {
6
- return JSON.stringify(value) ?? String(value);
7
- }
8
- catch {
9
- return String(value);
10
- }
11
- };
12
- const errorEvidence = (value, seen = new Set()) => {
13
- if (seen.has(value))
14
- return { name: "Error", message: "Circular error cause" };
15
- if (typeof value === "object" && value !== null)
16
- seen.add(value);
17
- if (!(value instanceof Error))
18
- return { name: "NonError", message: describeNonError(value) };
19
- return {
20
- name: value.name, message: value.message,
21
- ...(value.cause === undefined ? {} : { cause: errorEvidence(value.cause, seen) }),
22
- };
23
- };
24
- // {§digest-forensic-fidelity}: heavy evidence is read on demand, never multiplied by graph size.
25
- export default class DigestEvidence {
26
- #db;
27
- #lastPacket;
28
- constructor(db) { this.#db = db; }
29
- packet(turn) {
30
- if (this.#lastPacket?.turnId === turn.id)
31
- return this.#lastPacket.evidence;
32
- this.#lastPacket = undefined;
33
- let evidence = { packet: null, packetFailure: null };
34
- if (turn.has_packet === 1) {
35
- const row = this.#db.digest_turn_packet.get({ turn_id: turn.id });
36
- if (row === undefined)
37
- throw new Error(`digest: turn ${turn.id} packet disappeared`);
38
- try {
39
- evidence = { packet: StoredPacket.parse(row.packet, `digest turn ${turn.id}`), packetFailure: null };
40
- }
41
- catch (cause) {
42
- evidence = { packet: null, packetFailure: { raw: row.packet_bag, error: errorEvidence(cause) } };
43
- }
44
- }
45
- this.#lastPacket = { turnId: turn.id, evidence };
46
- return evidence;
47
- }
48
- response(modelCallId) {
49
- return this.#db.digest_model_response.get({ model_call_id: modelCallId })?.response ?? null;
50
- }
51
- request(requestId) {
52
- const row = this.#db.digest_provider_request_evidence.get({ request_id: requestId });
53
- if (row === undefined)
54
- throw new Error(`digest: provider request ${requestId} disappeared`);
55
- return row.evidence ?? null;
56
- }
57
- reasoning(turn) {
58
- if (turn.has_reasoning === 0)
59
- return null;
60
- const row = this.#db.digest_turn_reasoning.get({ turn_id: turn.id });
61
- if (row === undefined)
62
- throw new Error(`digest: turn ${turn.id} reasoning source disappeared`);
63
- return row.content;
64
- }
65
- }
66
- //# sourceMappingURL=DigestEvidence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DigestEvidence.js","sourceRoot":"","sources":["../../src/digest/DigestEvidence.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { type ProviderAccounting } from "@plurnk/plurnk-providers";
2
- import type { EditRow, EditForm, DigestModel, CacheLedgerEntry } from "./digest-rows.ts";
3
- export default class DigestRender {
4
- #private;
5
- static parseJson(s: unknown, fallback?: unknown): unknown;
6
- static usageSummary(accounting: ProviderAccounting | null): string;
7
- static costSummary(accounting: ProviderAccounting | null): string;
8
- static envLine(env: unknown): string | null;
9
- static editForm(row: Pick<EditRow, "line_marker" | "pattern">): EditForm;
10
- static cacheLedger(m: DigestModel): Map<number, CacheLedgerEntry>;
11
- static wireLine(assistantRaw: unknown): string | null;
12
- static waterfall(m: DigestModel): string;
13
- static reasoning(m: DigestModel): string;
14
- static packetStems(m: DigestModel): Map<number, string>;
15
- static packetFiles(m: DigestModel): string[];
16
- static json(m: DigestModel): Generator<string>;
17
- }
18
- //# sourceMappingURL=DigestRender.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DigestRender.d.ts","sourceRoot":"","sources":["../../src/digest/DigestRender.ts"],"names":[],"mappings":"AASA,OAAO,EAEH,KAAK,kBAAkB,EAE1B,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAMR,OAAO,EAEP,QAAQ,EAER,WAAW,EACX,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,OAAO,OAAO,YAAY;;IAY7B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAE,OAAc,GAAG,OAAO,CAG9D;IAeD,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,GAAG,MAAM,CAYjE;IAED,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI,GAAG,MAAM,CAGhE;IAsCD,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAe1C;IA6HD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG,QAAQ,CAevE;IAyDD,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAuChE;IAqHD,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiBpD;IA2ED,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CA2EvC;IAED,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAuEvC;IASD,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBtD;IAWD,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,EAAE,CAmG3C;IAED,MAAM,CAAE,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CA6J9C;CACJ"}