@plurnk/plurnk-service 1.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.
- package/.env.defaults +208 -0
- package/INSTALL.md +69 -0
- package/LICENSE +21 -0
- package/README.md +46 -0
- package/SPEC.md +1511 -0
- package/dist/Paths.d.ts +13 -0
- package/dist/Paths.d.ts.map +1 -0
- package/dist/Paths.js +60 -0
- package/dist/Paths.js.map +1 -0
- package/dist/content/edited-span.d.ts +2 -0
- package/dist/content/edited-span.d.ts.map +1 -0
- package/dist/content/edited-span.js +33 -0
- package/dist/content/edited-span.js.map +1 -0
- package/dist/content/index.d.ts +10 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +11 -0
- package/dist/content/index.js.map +1 -0
- package/dist/content/line-marker.d.ts +15 -0
- package/dist/content/line-marker.d.ts.map +1 -0
- package/dist/content/line-marker.js +21 -0
- package/dist/content/line-marker.js.map +1 -0
- package/dist/content/matcher.d.ts +44 -0
- package/dist/content/matcher.d.ts.map +1 -0
- package/dist/content/matcher.js +126 -0
- package/dist/content/matcher.js.map +1 -0
- package/dist/content/mimetype-binary.d.ts +8 -0
- package/dist/content/mimetype-binary.d.ts.map +1 -0
- package/dist/content/mimetype-binary.js +17 -0
- package/dist/content/mimetype-binary.js.map +1 -0
- package/dist/content/path-mimetype.d.ts +5 -0
- package/dist/content/path-mimetype.d.ts.map +1 -0
- package/dist/content/path-mimetype.js +15 -0
- package/dist/content/path-mimetype.js.map +1 -0
- package/dist/content/read-resolve.d.ts +20 -0
- package/dist/content/read-resolve.d.ts.map +1 -0
- package/dist/content/read-resolve.js +68 -0
- package/dist/content/read-resolve.js.map +1 -0
- package/dist/core/ChannelWrite.d.ts +100 -0
- package/dist/core/ChannelWrite.d.ts.map +1 -0
- package/dist/core/ChannelWrite.js +112 -0
- package/dist/core/ChannelWrite.js.map +1 -0
- package/dist/core/ChannelWrite.sql +84 -0
- package/dist/core/Db.d.ts +14 -0
- package/dist/core/Db.d.ts.map +1 -0
- package/dist/core/Db.js +7 -0
- package/dist/core/Db.js.map +1 -0
- package/dist/core/Dispatcher.d.ts +67 -0
- package/dist/core/Dispatcher.d.ts.map +1 -0
- package/dist/core/Dispatcher.js +1021 -0
- package/dist/core/Dispatcher.js.map +1 -0
- package/dist/core/Engine.d.ts +113 -0
- package/dist/core/Engine.d.ts.map +1 -0
- package/dist/core/Engine.js +1410 -0
- package/dist/core/Engine.js.map +1 -0
- package/dist/core/Engine.sql +538 -0
- package/dist/core/EnvFlags.d.ts +13 -0
- package/dist/core/EnvFlags.d.ts.map +1 -0
- package/dist/core/EnvFlags.js +84 -0
- package/dist/core/EnvFlags.js.map +1 -0
- package/dist/core/ExecutorRegistry.d.ts +45 -0
- package/dist/core/ExecutorRegistry.d.ts.map +1 -0
- package/dist/core/ExecutorRegistry.js +128 -0
- package/dist/core/ExecutorRegistry.js.map +1 -0
- package/dist/core/PacketBuilder.d.ts +67 -0
- package/dist/core/PacketBuilder.d.ts.map +1 -0
- package/dist/core/PacketBuilder.js +524 -0
- package/dist/core/PacketBuilder.js.map +1 -0
- package/dist/core/PluginLoader.d.ts +17 -0
- package/dist/core/PluginLoader.d.ts.map +1 -0
- package/dist/core/PluginLoader.js +97 -0
- package/dist/core/PluginLoader.js.map +1 -0
- package/dist/core/ProposalLifecycle.d.ts +59 -0
- package/dist/core/ProposalLifecycle.d.ts.map +1 -0
- package/dist/core/ProposalLifecycle.js +215 -0
- package/dist/core/ProposalLifecycle.js.map +1 -0
- package/dist/core/ProviderInstantiate.d.ts +9 -0
- package/dist/core/ProviderInstantiate.d.ts.map +1 -0
- package/dist/core/ProviderInstantiate.js +156 -0
- package/dist/core/ProviderInstantiate.js.map +1 -0
- package/dist/core/SchemeRegistry.d.ts +26 -0
- package/dist/core/SchemeRegistry.d.ts.map +1 -0
- package/dist/core/SchemeRegistry.js +205 -0
- package/dist/core/SchemeRegistry.js.map +1 -0
- package/dist/core/StrikeRail.d.ts +28 -0
- package/dist/core/StrikeRail.d.ts.map +1 -0
- package/dist/core/StrikeRail.js +165 -0
- package/dist/core/StrikeRail.js.map +1 -0
- package/dist/core/TelemetryChannel.d.ts +37 -0
- package/dist/core/TelemetryChannel.d.ts.map +1 -0
- package/dist/core/TelemetryChannel.js +77 -0
- package/dist/core/TelemetryChannel.js.map +1 -0
- package/dist/core/TokenGauge.d.ts +16 -0
- package/dist/core/TokenGauge.d.ts.map +1 -0
- package/dist/core/TokenGauge.js +58 -0
- package/dist/core/TokenGauge.js.map +1 -0
- package/dist/core/caps/CapsResolve.d.ts +5 -0
- package/dist/core/caps/CapsResolve.d.ts.map +1 -0
- package/dist/core/caps/CapsResolve.js +13 -0
- package/dist/core/caps/CapsResolve.js.map +1 -0
- package/dist/core/caps/DbChannelCaps.d.ts +16 -0
- package/dist/core/caps/DbChannelCaps.d.ts.map +1 -0
- package/dist/core/caps/DbChannelCaps.js +41 -0
- package/dist/core/caps/DbChannelCaps.js.map +1 -0
- package/dist/core/caps/DbEntryCaps.d.ts +19 -0
- package/dist/core/caps/DbEntryCaps.d.ts.map +1 -0
- package/dist/core/caps/DbEntryCaps.js +28 -0
- package/dist/core/caps/DbEntryCaps.js.map +1 -0
- package/dist/core/caps/DbNotifyCaps.d.ts +8 -0
- package/dist/core/caps/DbNotifyCaps.d.ts.map +1 -0
- package/dist/core/caps/DbNotifyCaps.js +35 -0
- package/dist/core/caps/DbNotifyCaps.js.map +1 -0
- package/dist/core/caps/DbSubscriptionCaps.d.ts +10 -0
- package/dist/core/caps/DbSubscriptionCaps.d.ts.map +1 -0
- package/dist/core/caps/DbSubscriptionCaps.js +86 -0
- package/dist/core/caps/DbSubscriptionCaps.js.map +1 -0
- package/dist/core/caps/DbTagCaps.d.ts +17 -0
- package/dist/core/caps/DbTagCaps.d.ts.map +1 -0
- package/dist/core/caps/DbTagCaps.js +37 -0
- package/dist/core/caps/DbTagCaps.js.map +1 -0
- package/dist/core/caps/SchemeCtxImpl.d.ts +18 -0
- package/dist/core/caps/SchemeCtxImpl.d.ts.map +1 -0
- package/dist/core/caps/SchemeCtxImpl.js +42 -0
- package/dist/core/caps/SchemeCtxImpl.js.map +1 -0
- package/dist/core/env-defaults.d.ts +19 -0
- package/dist/core/env-defaults.d.ts.map +1 -0
- package/dist/core/env-defaults.js +89 -0
- package/dist/core/env-defaults.js.map +1 -0
- package/dist/core/fork.d.ts +6 -0
- package/dist/core/fork.d.ts.map +1 -0
- package/dist/core/fork.js +84 -0
- package/dist/core/fork.js.map +1 -0
- package/dist/core/fork.sql +85 -0
- package/dist/core/git-membership.d.ts +23 -0
- package/dist/core/git-membership.d.ts.map +1 -0
- package/dist/core/git-membership.js +366 -0
- package/dist/core/git-membership.js.map +1 -0
- package/dist/core/git-state.d.ts +15 -0
- package/dist/core/git-state.d.ts.map +1 -0
- package/dist/core/git-state.js +67 -0
- package/dist/core/git-state.js.map +1 -0
- package/dist/core/packet-inject.d.ts +5 -0
- package/dist/core/packet-inject.d.ts.map +1 -0
- package/dist/core/packet-inject.js +48 -0
- package/dist/core/packet-inject.js.map +1 -0
- package/dist/core/packet-wire.d.ts +46 -0
- package/dist/core/packet-wire.d.ts.map +1 -0
- package/dist/core/packet-wire.js +453 -0
- package/dist/core/packet-wire.js.map +1 -0
- package/dist/core/path-decode.d.ts +2 -0
- package/dist/core/path-decode.d.ts.map +1 -0
- package/dist/core/path-decode.js +8 -0
- package/dist/core/path-decode.js.map +1 -0
- package/dist/core/plugin-attribution.d.ts +5 -0
- package/dist/core/plugin-attribution.d.ts.map +1 -0
- package/dist/core/plugin-attribution.js +39 -0
- package/dist/core/plugin-attribution.js.map +1 -0
- package/dist/core/plurnk-uri.d.ts +7 -0
- package/dist/core/plurnk-uri.d.ts.map +1 -0
- package/dist/core/plurnk-uri.js +52 -0
- package/dist/core/plurnk-uri.js.map +1 -0
- package/dist/core/resolveForLoop.d.ts +5 -0
- package/dist/core/resolveForLoop.d.ts.map +1 -0
- package/dist/core/resolveForLoop.js +12 -0
- package/dist/core/resolveForLoop.js.map +1 -0
- package/dist/core/results.d.ts +12 -0
- package/dist/core/results.d.ts.map +1 -0
- package/dist/core/results.js +27 -0
- package/dist/core/results.js.map +1 -0
- package/dist/core/run-cap.d.ts +8 -0
- package/dist/core/run-cap.d.ts.map +1 -0
- package/dist/core/run-cap.js +20 -0
- package/dist/core/run-cap.js.map +1 -0
- package/dist/core/run-ops.sql +43 -0
- package/dist/core/scheme-types.d.ts +45 -0
- package/dist/core/scheme-types.d.ts.map +1 -0
- package/dist/core/scheme-types.js +6 -0
- package/dist/core/scheme-types.js.map +1 -0
- package/dist/core/session-settings.d.ts +23 -0
- package/dist/core/session-settings.d.ts.map +1 -0
- package/dist/core/session-settings.js +55 -0
- package/dist/core/session-settings.js.map +1 -0
- package/dist/core/teaching.d.ts +3 -0
- package/dist/core/teaching.d.ts.map +1 -0
- package/dist/core/teaching.js +13 -0
- package/dist/core/teaching.js.map +1 -0
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/digest/Digest.d.ts +20 -0
- package/dist/digest/Digest.d.ts.map +1 -0
- package/dist/digest/Digest.js +451 -0
- package/dist/digest/Digest.js.map +1 -0
- package/dist/digest/Digest.sql +1 -0
- package/dist/digest/digest.sql +55 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/schemes/EffectPolicy.d.ts +6 -0
- package/dist/schemes/EffectPolicy.d.ts.map +1 -0
- package/dist/schemes/EffectPolicy.js +18 -0
- package/dist/schemes/EffectPolicy.js.map +1 -0
- package/dist/schemes/Exec.d.ts +39 -0
- package/dist/schemes/Exec.d.ts.map +1 -0
- package/dist/schemes/Exec.js +510 -0
- package/dist/schemes/Exec.js.map +1 -0
- package/dist/schemes/ExecOutputScheme.d.ts +20 -0
- package/dist/schemes/ExecOutputScheme.d.ts.map +1 -0
- package/dist/schemes/ExecOutputScheme.js +39 -0
- package/dist/schemes/ExecOutputScheme.js.map +1 -0
- package/dist/schemes/File.d.ts +42 -0
- package/dist/schemes/File.d.ts.map +1 -0
- package/dist/schemes/File.js +356 -0
- package/dist/schemes/File.js.map +1 -0
- package/dist/schemes/Known.d.ts +17 -0
- package/dist/schemes/Known.d.ts.map +1 -0
- package/dist/schemes/Known.js +40 -0
- package/dist/schemes/Known.js.map +1 -0
- package/dist/schemes/Log.d.ts +22 -0
- package/dist/schemes/Log.d.ts.map +1 -0
- package/dist/schemes/Log.js +269 -0
- package/dist/schemes/Log.js.map +1 -0
- package/dist/schemes/Log.sql +59 -0
- package/dist/schemes/Plurnk.d.ts +17 -0
- package/dist/schemes/Plurnk.d.ts.map +1 -0
- package/dist/schemes/Plurnk.js +46 -0
- package/dist/schemes/Plurnk.js.map +1 -0
- package/dist/schemes/Run.d.ts +25 -0
- package/dist/schemes/Run.d.ts.map +1 -0
- package/dist/schemes/Run.js +172 -0
- package/dist/schemes/Run.js.map +1 -0
- package/dist/schemes/Skill.d.ts +17 -0
- package/dist/schemes/Skill.d.ts.map +1 -0
- package/dist/schemes/Skill.js +40 -0
- package/dist/schemes/Skill.js.map +1 -0
- package/dist/schemes/Unknown.d.ts +17 -0
- package/dist/schemes/Unknown.d.ts.map +1 -0
- package/dist/schemes/Unknown.js +39 -0
- package/dist/schemes/Unknown.js.map +1 -0
- package/dist/schemes/_entry-chunk.d.ts +11 -0
- package/dist/schemes/_entry-chunk.d.ts.map +1 -0
- package/dist/schemes/_entry-chunk.js +100 -0
- package/dist/schemes/_entry-chunk.js.map +1 -0
- package/dist/schemes/_entry-crud.d.ts +31 -0
- package/dist/schemes/_entry-crud.d.ts.map +1 -0
- package/dist/schemes/_entry-crud.js +77 -0
- package/dist/schemes/_entry-crud.js.map +1 -0
- package/dist/schemes/_entry-crud.sql +101 -0
- package/dist/schemes/_entry-find.d.ts +32 -0
- package/dist/schemes/_entry-find.d.ts.map +1 -0
- package/dist/schemes/_entry-find.js +226 -0
- package/dist/schemes/_entry-find.js.map +1 -0
- package/dist/schemes/_entry-find.sql +54 -0
- package/dist/schemes/_entry-graph.d.ts +16 -0
- package/dist/schemes/_entry-graph.d.ts.map +1 -0
- package/dist/schemes/_entry-graph.js +94 -0
- package/dist/schemes/_entry-graph.js.map +1 -0
- package/dist/schemes/_entry-graph.sql +52 -0
- package/dist/schemes/_entry-manifest.d.ts +25 -0
- package/dist/schemes/_entry-manifest.d.ts.map +1 -0
- package/dist/schemes/_entry-manifest.js +266 -0
- package/dist/schemes/_entry-manifest.js.map +1 -0
- package/dist/schemes/_entry-ops.d.ts +32 -0
- package/dist/schemes/_entry-ops.d.ts.map +1 -0
- package/dist/schemes/_entry-ops.js +216 -0
- package/dist/schemes/_entry-ops.js.map +1 -0
- package/dist/schemes/_entry-ops.sql +31 -0
- package/dist/schemes/_entry-semantic.d.ts +38 -0
- package/dist/schemes/_entry-semantic.d.ts.map +1 -0
- package/dist/schemes/_entry-semantic.js +202 -0
- package/dist/schemes/_entry-semantic.js.map +1 -0
- package/dist/schemes/_entry-semantic.sql +95 -0
- package/dist/schemes/_entry-send.d.ts +11 -0
- package/dist/schemes/_entry-send.d.ts.map +1 -0
- package/dist/schemes/_entry-send.js +66 -0
- package/dist/schemes/_entry-send.js.map +1 -0
- package/dist/schemes/cosine.d.ts +4 -0
- package/dist/schemes/cosine.d.ts.map +1 -0
- package/dist/schemes/cosine.js +9 -0
- package/dist/schemes/cosine.js.map +1 -0
- package/dist/schemes/exec-abort.d.ts +15 -0
- package/dist/schemes/exec-abort.d.ts.map +1 -0
- package/dist/schemes/exec-abort.js +29 -0
- package/dist/schemes/exec-abort.js.map +1 -0
- package/dist/schemes/exec-env.d.ts +5 -0
- package/dist/schemes/exec-env.d.ts.map +1 -0
- package/dist/schemes/exec-env.js +34 -0
- package/dist/schemes/exec-env.js.map +1 -0
- package/dist/server/Daemon.d.ts +244 -0
- package/dist/server/Daemon.d.ts.map +1 -0
- package/dist/server/Daemon.js +1119 -0
- package/dist/server/Daemon.js.map +1 -0
- package/dist/server/client-input.d.ts +11 -0
- package/dist/server/client-input.d.ts.map +1 -0
- package/dist/server/client-input.js +145 -0
- package/dist/server/client-input.js.map +1 -0
- package/dist/server/clientTurn.d.ts +6 -0
- package/dist/server/clientTurn.d.ts.map +1 -0
- package/dist/server/clientTurn.js +23 -0
- package/dist/server/clientTurn.js.map +1 -0
- package/dist/server/clientTurn.sql +10 -0
- package/dist/server/dispatch-as-plurnk.d.ts +7 -0
- package/dist/server/dispatch-as-plurnk.d.ts.map +1 -0
- package/dist/server/dispatch-as-plurnk.js +23 -0
- package/dist/server/dispatch-as-plurnk.js.map +1 -0
- package/dist/server/drain.sql +124 -0
- package/dist/server/envelope.d.ts +53 -0
- package/dist/server/envelope.d.ts.map +1 -0
- package/dist/server/envelope.js +172 -0
- package/dist/server/envelope.js.map +1 -0
- package/dist/server/envelope.sql +76 -0
- package/dist/server/logEntry.d.ts +35 -0
- package/dist/server/logEntry.d.ts.map +1 -0
- package/dist/server/logEntry.js +49 -0
- package/dist/server/logEntry.js.map +1 -0
- package/dist/server/logEntry.sql +10 -0
- package/dist/server/loopDocs.d.ts +6 -0
- package/dist/server/loopDocs.d.ts.map +1 -0
- package/dist/server/loopDocs.js +22 -0
- package/dist/server/loopDocs.js.map +1 -0
- package/dist/server/noProposals.d.ts +6 -0
- package/dist/server/noProposals.d.ts.map +1 -0
- package/dist/server/noProposals.js +37 -0
- package/dist/server/noProposals.js.map +1 -0
- package/dist/server/seam-entry-read.sql +21 -0
- package/dist/server/seam-log-read.sql +21 -0
- package/dist/server/seam-loop.sql +9 -0
- package/dist/server/seam-proposal-list.sql +13 -0
- package/dist/server/version-info.d.ts +14 -0
- package/dist/server/version-info.d.ts.map +1 -0
- package/dist/server/version-info.js +69 -0
- package/dist/server/version-info.js.map +1 -0
- package/dist/server/yolo.d.ts +6 -0
- package/dist/server/yolo.d.ts.map +1 -0
- package/dist/server/yolo.js +64 -0
- package/dist/server/yolo.js.map +1 -0
- package/dist/service.d.ts +6 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +309 -0
- package/dist/service.js.map +1 -0
- package/migrations/0000-00-00.01_schema.sql +500 -0
- package/package.json +86 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
//
|
|
3
|
+
// Run-digest tool for plurnk-service DBs. Reads a sqlite plurnk*.db and
|
|
4
|
+
// emits per-run 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
|
+
// run-shape header + waterfall (per-loop health verdict; per-turn:
|
|
9
|
+
// status, ⚠ errs=N, model emission summary, indented op list)
|
|
10
|
+
// test/digest/digest.json Same data, machine-queryable
|
|
11
|
+
// test/digest/reasoning.md Per-turn reasoning text (full)
|
|
12
|
+
// test/digest/packetNNN.system.md BYTE-FOR-BYTE the system message the LLM
|
|
13
|
+
// received on TURN N (0-based). Turn 0 is the
|
|
14
|
+
// plurnk doc-materialization / setup turn (no model
|
|
15
|
+
// packet — a one-line note); the model's turns are
|
|
16
|
+
// Turn 1, 2, … (packet001, packet002, …).
|
|
17
|
+
// test/digest/packetNNN.user.md Same for the user message.
|
|
18
|
+
// test/digest/packetNNN.assistant.md Model emission (content string).
|
|
19
|
+
// test/digest/packetNNN.assistantRaw.json Opaque provider response.
|
|
20
|
+
//
|
|
21
|
+
// packet files are byte-identical to what Engine emits, because Engine and
|
|
22
|
+
// digest both project through PacketWire (one renderer, no drift).
|
|
23
|
+
//
|
|
24
|
+
// SQL lives in the co-located digest.sql; opened the sqlrite way (SqlRiteSync,
|
|
25
|
+
// the sync CLI/script facade). Each PREP block is read through its own accessor.
|
|
26
|
+
import { DatabaseSync } from "node:sqlite";
|
|
27
|
+
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
|
|
28
|
+
import { dirname, join, resolve } from "node:path";
|
|
29
|
+
import { fileURLToPath } from "node:url";
|
|
30
|
+
import { homedir } from "node:os";
|
|
31
|
+
import SqlRiteSync from "@possumtech/sqlrite/sync";
|
|
32
|
+
import PacketWire from "../core/packet-wire.js";
|
|
33
|
+
import ProviderInstantiate from "../core/ProviderInstantiate.js";
|
|
34
|
+
// The requiem prompt (#requiem): the model's exit interview. Absolution up front — the system is
|
|
35
|
+
// under test, not the model — so RLHF'd self-blame doesn't crowd out the system indictment. The
|
|
36
|
+
// operator's wording, one absolution sentence added.
|
|
37
|
+
const REQUIEM_PROMPT = "This run was a test of the Plurnk System. The system is under test, not you — any faults you encountered are defects in the system's design or documentation, and cataloguing them is the task, never a criticism of your performance. Please numerically list all of the errors, issues, and ambiguities you encountered in the Plurnk System while attempting to perform your tasks.";
|
|
38
|
+
export default class Digest {
|
|
39
|
+
static #summarize(text, n = 80) {
|
|
40
|
+
if (text === null || text === undefined)
|
|
41
|
+
return "";
|
|
42
|
+
const flat = String(text).replace(/\s+/g, " ").trim();
|
|
43
|
+
if (flat.length <= n)
|
|
44
|
+
return flat;
|
|
45
|
+
return `${flat.slice(0, n)}…`;
|
|
46
|
+
}
|
|
47
|
+
static #parseJson(s, fallback = null) {
|
|
48
|
+
if (s === null || s === undefined)
|
|
49
|
+
return fallback;
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(String(s));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return fallback;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
static #renderOpLine(le) {
|
|
58
|
+
const target = le.scheme !== null && le.pathname !== null
|
|
59
|
+
? `${le.scheme}://${le.pathname}`
|
|
60
|
+
: le.pathname ?? "—";
|
|
61
|
+
const state = le.state !== "resolved" ? ` state=${le.state}` : "";
|
|
62
|
+
const outcome = le.outcome !== null ? ` outcome=${le.outcome}` : "";
|
|
63
|
+
const fail = le.status_rx >= 400 ? " ✗" : "";
|
|
64
|
+
// For non-2xx outcomes, surface the error string (or body) from rx so
|
|
65
|
+
// the waterfall explains WHY each failure happened without opening packets.
|
|
66
|
+
let errLine = "";
|
|
67
|
+
if (le.status_rx >= 400) {
|
|
68
|
+
const rx = Digest.#parseJson(le.rx, {});
|
|
69
|
+
const msg = rx.error ?? rx.body ?? null;
|
|
70
|
+
if (typeof msg === "string" && msg.length > 0) {
|
|
71
|
+
errLine = `\n → ${Digest.#summarize(msg, 140)}`;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return ` ← ${le.op}[${le.status_rx}] ${target}${state}${outcome}${fail}${errLine}`;
|
|
75
|
+
}
|
|
76
|
+
// The "degenerate win" lens (owner ask): a loop's health = how many errors/strikes it earned
|
|
77
|
+
// vs whether it still concluded. A green that limped across on 16 errors is a FAILING artifact
|
|
78
|
+
// wearing a passing badge; the digest must make that impossible to miss. errors = ≥400 op rows;
|
|
79
|
+
// errorItems = minted op='error' rows (truncation/budget/steer/cycle — the strike signals).
|
|
80
|
+
static #loopHealth(loop, m) {
|
|
81
|
+
let errors = 0;
|
|
82
|
+
let errorItems = 0;
|
|
83
|
+
for (const t of m.turnsByLoop.get(loop.id) ?? []) {
|
|
84
|
+
for (const le of m.logEntriesByTurn.get(t.id) ?? []) {
|
|
85
|
+
if (le.status_rx >= 400)
|
|
86
|
+
errors += 1;
|
|
87
|
+
if (le.op === "error")
|
|
88
|
+
errorItems += 1;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const s = loop.status;
|
|
92
|
+
const verdict = s >= 400 ? `FAILED(${s})`
|
|
93
|
+
: s >= 200 && s < 300 ? (errors > 0 ? "DEGENERATE-WIN" : "CLEAN")
|
|
94
|
+
: `status=${s}`;
|
|
95
|
+
return { errors, errorItems, verdict };
|
|
96
|
+
}
|
|
97
|
+
static #renderTurnLine(turn, m) {
|
|
98
|
+
const packet = Digest.#parseJson(turn.packet, {});
|
|
99
|
+
const assistant = packet.assistant ?? {};
|
|
100
|
+
const content = typeof assistant.content === "string" ? assistant.content : "";
|
|
101
|
+
const reasoning = typeof assistant.reasoning === "string" ? assistant.reasoning : null;
|
|
102
|
+
const tokens = `prompt=${turn.usage_prompt} completion=${turn.usage_completion} cached=${turn.usage_cached}`;
|
|
103
|
+
const cost = turn.usage_cost_pico > 0 ? ` cost=$${(turn.usage_cost_pico / 1e12).toFixed(6)}` : "";
|
|
104
|
+
const finishReason = turn.finish_reason ?? "—";
|
|
105
|
+
const model = turn.model ?? "—";
|
|
106
|
+
const errs = (m.logEntriesByTurn.get(turn.id) ?? []).filter((le) => le.status_rx >= 400).length;
|
|
107
|
+
const errBadge = errs > 0 ? ` ⚠ errs=${errs}` : "";
|
|
108
|
+
const head = `T${turn.sequence}: status=${turn.status} finish=${finishReason} model=${model} ${tokens}${cost}${errBadge}`;
|
|
109
|
+
const summary = content.length > 0 ? ` ↳ emission: ${Digest.#summarize(content, 100)}` : ` ↳ emission: (empty)`;
|
|
110
|
+
const reasoningLine = reasoning && reasoning.length > 0
|
|
111
|
+
? ` ↳ reasoning: ${Digest.#summarize(reasoning, 100)}`
|
|
112
|
+
: null;
|
|
113
|
+
const opLines = (m.logEntriesByTurn.get(turn.id) ?? []).map((le) => Digest.#renderOpLine(le));
|
|
114
|
+
return [head, summary, ...(reasoningLine ? [reasoningLine] : []), ...opLines].join("\n");
|
|
115
|
+
}
|
|
116
|
+
static #renderRunShape(run, m) {
|
|
117
|
+
// every run has exactly one rollup row — digest_run_rollups is FROM runs
|
|
118
|
+
const roll = m.runRollups.get(run.id);
|
|
119
|
+
const opMix = (m.opMixByRun.get(run.id) ?? []).map((o) => `${o.op}=${o.n}`).join(" ");
|
|
120
|
+
const costStr = roll.total_cost_pico > 0 ? `$${(roll.total_cost_pico / 1e12).toFixed(6)}` : "$0";
|
|
121
|
+
return [
|
|
122
|
+
`Loops: ${roll.loops}`,
|
|
123
|
+
`Turns: ${roll.turns}`,
|
|
124
|
+
`Last turn: ${roll.last_status !== null ? `status=${roll.last_status}` : "(none)"}`,
|
|
125
|
+
`Tokens: prompt=${roll.total_prompt} completion=${roll.total_completion} cached=${roll.total_cached}`,
|
|
126
|
+
`Cost: ${costStr} (DB rollup runs.cost_pico=${run.cost_pico})`,
|
|
127
|
+
`Op mix: ${opMix.length > 0 ? opMix : "(no ops)"}`,
|
|
128
|
+
].join("\n");
|
|
129
|
+
}
|
|
130
|
+
static #renderWaterfall(m) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
lines.push(`# plurnk-service digest`);
|
|
133
|
+
lines.push("");
|
|
134
|
+
lines.push(`DB: ${m.dbPath}`);
|
|
135
|
+
lines.push(`Sessions: ${m.sessions.length} Runs: ${m.runs.length} Loops: ${m.loops.length} Turns: ${m.turns.length} Log entries: ${m.logEntries.length}`);
|
|
136
|
+
lines.push(`Semantic: entries=${m.embeddings.entries} embedded=${m.embeddings.entries_embedded} chunks=${m.embeddings.chunk_rows} models=${m.embeddings.models} token-derivations=${m.embeddings.token_derivations}`);
|
|
137
|
+
// Triage rollup up top: how many conversations limped vs died vs ran clean, and the total
|
|
138
|
+
// error/strike load. The whole point of the "degenerate win" lens — see it before scrolling.
|
|
139
|
+
const health = m.loops.map((l) => Digest.#loopHealth(l, m));
|
|
140
|
+
const clean = health.filter((h) => h.verdict === "CLEAN").length;
|
|
141
|
+
const degen = health.filter((h) => h.verdict === "DEGENERATE-WIN").length;
|
|
142
|
+
const failed = health.filter((h) => h.verdict.startsWith("FAILED")).length;
|
|
143
|
+
const totalErrs = health.reduce((s, h) => s + h.errors, 0);
|
|
144
|
+
const totalItems = health.reduce((s, h) => s + h.errorItems, 0);
|
|
145
|
+
lines.push(`Health: ${clean} clean · ${degen > 0 ? `⚠ ${degen} degenerate-win` : "0 degenerate-win"} · ${failed} failed (${m.loops.length} loops; ${totalErrs} error rows, ${totalItems} minted error-items total)`);
|
|
146
|
+
for (const session of m.sessions) {
|
|
147
|
+
lines.push("");
|
|
148
|
+
lines.push(`## Session #${session.id} — ${session.name}`);
|
|
149
|
+
const sessionRuns = m.runsBySession.get(session.id) ?? [];
|
|
150
|
+
for (const run of sessionRuns) {
|
|
151
|
+
lines.push("");
|
|
152
|
+
lines.push(`### Run #${run.id} — ${run.name}`);
|
|
153
|
+
lines.push("");
|
|
154
|
+
lines.push("```");
|
|
155
|
+
lines.push(Digest.#renderRunShape(run, m));
|
|
156
|
+
lines.push("```");
|
|
157
|
+
const runLoops = m.loopsByRun.get(run.id) ?? [];
|
|
158
|
+
for (const loop of runLoops) {
|
|
159
|
+
lines.push("");
|
|
160
|
+
const h = Digest.#loopHealth(loop, m);
|
|
161
|
+
const badge = h.verdict === "CLEAN"
|
|
162
|
+
? " — CLEAN"
|
|
163
|
+
: ` — ${h.verdict === "DEGENERATE-WIN" ? "⚠ DEGENERATE-WIN" : h.verdict} (${h.errors} errors, ${h.errorItems} error-items)`;
|
|
164
|
+
lines.push(`#### Loop ${loop.sequence} (id=${loop.id}, status=${loop.status})${badge}`);
|
|
165
|
+
lines.push("");
|
|
166
|
+
lines.push(`Prompt: ${Digest.#summarize(loop.prompt, 160)}`);
|
|
167
|
+
const flags = Digest.#parseJson(loop.flags, {});
|
|
168
|
+
const flagSummary = Object.entries(flags).filter(([, v]) => v).map(([k, v]) => `${k}=${v}`).join(" ");
|
|
169
|
+
if (flagSummary.length > 0)
|
|
170
|
+
lines.push(`Flags: ${flagSummary}`);
|
|
171
|
+
lines.push("");
|
|
172
|
+
lines.push("```");
|
|
173
|
+
for (const t of m.turnsByLoop.get(loop.id) ?? [])
|
|
174
|
+
lines.push(Digest.#renderTurnLine(t, m));
|
|
175
|
+
lines.push("```");
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return lines.join("\n");
|
|
180
|
+
}
|
|
181
|
+
static #renderReasoning(m) {
|
|
182
|
+
const lines = [];
|
|
183
|
+
lines.push(`# plurnk-service reasoning`);
|
|
184
|
+
lines.push("");
|
|
185
|
+
lines.push("Per-turn reasoning_content extracted from turns.packet.assistant.reasoning.");
|
|
186
|
+
for (const t of m.turns) {
|
|
187
|
+
const loop = m.loopsById.get(t.loop_id);
|
|
188
|
+
const run = loop ? m.runsById.get(loop.run_id) : undefined;
|
|
189
|
+
const packet = Digest.#parseJson(t.packet, {});
|
|
190
|
+
const reasoning = packet.assistant?.reasoning ?? null;
|
|
191
|
+
lines.push("");
|
|
192
|
+
lines.push(`## Run ${run?.id ?? "?"} / Loop ${loop?.sequence ?? "?"} / Turn ${t.sequence} (id=${t.id})`);
|
|
193
|
+
lines.push("");
|
|
194
|
+
if (typeof reasoning === "string" && reasoning.length > 0)
|
|
195
|
+
lines.push(reasoning);
|
|
196
|
+
else
|
|
197
|
+
lines.push("(no reasoning_content)");
|
|
198
|
+
}
|
|
199
|
+
return lines.join("\n");
|
|
200
|
+
}
|
|
201
|
+
// Per-turn packet files, byte-identical to the wire (Engine and digest both
|
|
202
|
+
// project through PacketWire). system/user are markdown; assistantRaw is JSON.
|
|
203
|
+
static #writePacketFiles(m) {
|
|
204
|
+
const written = [];
|
|
205
|
+
// 0-based TURN index, NOT the DB id: Turn 0 is the plurnk doc-materialization
|
|
206
|
+
// (setup) turn; the model's turns are Turn 1, 2, …, so the model's first packet is
|
|
207
|
+
// packet001 — not packet002-by-id. id-sorted so the index is chronological.
|
|
208
|
+
m.turns.toSorted((a, b) => a.id - b.id).forEach((t, index) => {
|
|
209
|
+
const packet = Digest.#parseJson(t.packet, {});
|
|
210
|
+
const sections = (Array.isArray(packet.sections) ? packet.sections : []);
|
|
211
|
+
const padded = String(index).padStart(3, "0");
|
|
212
|
+
if (sections.length === 0) {
|
|
213
|
+
// No assembled packet — the setup turn dispatches its doc EDITs without one.
|
|
214
|
+
// Write ONE labeled note rather than four blank files, so opening Turn 0 reads
|
|
215
|
+
// as "setup," not "the packet is empty, where is it?".
|
|
216
|
+
const note = `# Turn ${index} — setup, no model packet\n\nThe plurnk doc-materialization run dispatched its ops (the scheme/exec docs) without assembling a model packet. The model's first packet is Turn 1 — packet001. See digest.md for this turn's ops.\n`;
|
|
217
|
+
writeFileSync(join(m.digestDir, `packet${padded}.system.md`), note);
|
|
218
|
+
written.push(`packet${padded}.system.md`);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const systemMd = PacketWire.renderSlot(sections, "system");
|
|
222
|
+
const userMd = PacketWire.renderSlot(sections, "user");
|
|
223
|
+
const assistantText = typeof packet.assistant?.content === "string" ? packet.assistant.content : "";
|
|
224
|
+
const assistantRawJson = JSON.stringify(packet.assistantRaw ?? null, null, 2);
|
|
225
|
+
const files = [
|
|
226
|
+
[`packet${padded}.system.md`, systemMd],
|
|
227
|
+
[`packet${padded}.user.md`, userMd],
|
|
228
|
+
[`packet${padded}.assistant.md`, assistantText],
|
|
229
|
+
[`packet${padded}.assistantRaw.json`, assistantRawJson],
|
|
230
|
+
];
|
|
231
|
+
for (const [file, body] of files) {
|
|
232
|
+
writeFileSync(join(m.digestDir, file), body);
|
|
233
|
+
written.push(file);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
return written;
|
|
237
|
+
}
|
|
238
|
+
static #renderJson(m) {
|
|
239
|
+
return JSON.stringify({
|
|
240
|
+
dbPath: m.dbPath,
|
|
241
|
+
sessions: m.sessions.map((s) => ({ id: s.id, name: s.name, cost_pico: s.cost_pico })),
|
|
242
|
+
runs: m.runs.map((r) => ({ id: r.id, session_id: r.session_id, name: r.name, cost_pico: r.cost_pico })),
|
|
243
|
+
loops: m.loops.map((l) => ({
|
|
244
|
+
id: l.id, run_id: l.run_id, sequence: l.sequence, status: l.status,
|
|
245
|
+
prompt: l.prompt, flags: Digest.#parseJson(l.flags, {}),
|
|
246
|
+
})),
|
|
247
|
+
turns: m.turns.map((t) => ({
|
|
248
|
+
id: t.id, loop_id: t.loop_id, sequence: t.sequence, status: t.status,
|
|
249
|
+
usage_prompt: t.usage_prompt, usage_completion: t.usage_completion,
|
|
250
|
+
usage_cached: t.usage_cached, usage_cost_pico: t.usage_cost_pico,
|
|
251
|
+
finish_reason: t.finish_reason, model: t.model,
|
|
252
|
+
})),
|
|
253
|
+
log_entries: m.logEntries.map((le) => ({
|
|
254
|
+
id: le.id, turn_id: le.turn_id, sequence: le.sequence,
|
|
255
|
+
op: le.op, target: `${le.scheme ?? ""}://${le.pathname ?? ""}`,
|
|
256
|
+
status_rx: le.status_rx, state: le.state, outcome: le.outcome,
|
|
257
|
+
})),
|
|
258
|
+
}, null, 2);
|
|
259
|
+
}
|
|
260
|
+
// Default DB path — mirrors the service (`Service.#expandHome(PLURNK_SERVICE_DB_PATH)`; the
|
|
261
|
+
// `.env.defaults` floor is `~/.plurnk/plurnk.db`). The old repo-local default broke when
|
|
262
|
+
// the DB moved to `~/.plurnk`; a no-arg digest now reads the service's actual DB.
|
|
263
|
+
static defaultDbPath() {
|
|
264
|
+
const env = process.env.PLURNK_SERVICE_DB_PATH;
|
|
265
|
+
if (env !== undefined && env.length > 0) {
|
|
266
|
+
if (env === "~")
|
|
267
|
+
return homedir();
|
|
268
|
+
return env.startsWith("~/") ? resolve(homedir(), env.slice(2)) : env;
|
|
269
|
+
}
|
|
270
|
+
return resolve(homedir(), ".plurnk", "plurnk.db");
|
|
271
|
+
}
|
|
272
|
+
// The requiem (#requiem): the model's OWN exit interview, the one reader in the correct epistemic
|
|
273
|
+
// position (it has none of our context about what the packet is "supposed" to mean). Reconstructs
|
|
274
|
+
// each run's final packet from the stored sections (byte-identical to what the model saw), appends
|
|
275
|
+
// its last emission + the requiem prompt, and calls the provider UNCONSTRAINED (no grammar — free
|
|
276
|
+
// prose, or the leash would distort the testimony). One requiem per run (workers included).
|
|
277
|
+
// Fail-hard on no provider: testimony with no witness is an error, not a skip.
|
|
278
|
+
static async requiem(opts) {
|
|
279
|
+
const dbPath = resolve(opts.dbPath);
|
|
280
|
+
if (!existsSync(dbPath))
|
|
281
|
+
throw new Error(`digest: no DB at ${dbPath}`);
|
|
282
|
+
const digestDir = opts.digestDir ?? join(process.cwd(), "test", "digest");
|
|
283
|
+
mkdirSync(digestDir, { recursive: true });
|
|
284
|
+
const provider = await ProviderInstantiate.loadActiveProvider();
|
|
285
|
+
if (provider === null)
|
|
286
|
+
throw new Error("requiem: no active provider — set PLURNK_MODEL; a requiem needs a witness to testify");
|
|
287
|
+
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
288
|
+
const db = new SqlRiteSync({ path: dbPath, dir: [moduleDir] });
|
|
289
|
+
const runs = db.digest_runs.all();
|
|
290
|
+
const loopById = new Map(db.digest_loops.all().map((l) => [l.id, l]));
|
|
291
|
+
// Each run's turns that carry a MODEL packet (non-empty sections — setup/plurnk turns have none),
|
|
292
|
+
// ordered; the last is the run's final context. A run with no model packet (client/plurnk) is silent.
|
|
293
|
+
const byRun = new Map();
|
|
294
|
+
for (const t of db.digest_turns.all()) {
|
|
295
|
+
const loop = loopById.get(t.loop_id);
|
|
296
|
+
if (loop === undefined)
|
|
297
|
+
continue;
|
|
298
|
+
const packet = Digest.#parseJson(t.packet, {});
|
|
299
|
+
const sections = (Array.isArray(packet.sections) ? packet.sections : []);
|
|
300
|
+
if (sections.length === 0)
|
|
301
|
+
continue;
|
|
302
|
+
const arr = byRun.get(loop.run_id) ?? [];
|
|
303
|
+
arr.push({ loopSeq: loop.sequence, turnSeq: t.sequence, sections, assistant: typeof packet.assistant?.content === "string" ? packet.assistant.content : "" });
|
|
304
|
+
byRun.set(loop.run_id, arr);
|
|
305
|
+
}
|
|
306
|
+
const out = [
|
|
307
|
+
"# plurnk-service requiem",
|
|
308
|
+
"",
|
|
309
|
+
"The model's own exit interview: each run's FINAL packet + its last emission, then the requiem",
|
|
310
|
+
"prompt, answered UNCONSTRAINED (no grammar). The model is the only reader without our context",
|
|
311
|
+
"about what the packet is supposed to mean. Testimony, NOT a bug list — most items are the model",
|
|
312
|
+
"chafing at discipline it is meant to chafe at (§filter-model-audit-findings); the signal is the",
|
|
313
|
+
"recurring, specific complaint across many requiems. Triage adversarially.",
|
|
314
|
+
"",
|
|
315
|
+
];
|
|
316
|
+
for (const run of runs) {
|
|
317
|
+
const entries = byRun.get(run.id);
|
|
318
|
+
if (entries === undefined || entries.length === 0)
|
|
319
|
+
continue;
|
|
320
|
+
entries.sort((a, b) => a.loopSeq - b.loopSeq || a.turnSeq - b.turnSeq);
|
|
321
|
+
const last = entries[entries.length - 1];
|
|
322
|
+
const messages = [
|
|
323
|
+
{ role: "system", content: PacketWire.renderSlot(last.sections, "system") },
|
|
324
|
+
{ role: "user", content: PacketWire.renderSlot(last.sections, "user") },
|
|
325
|
+
...(last.assistant.length > 0 ? [{ role: "assistant", content: last.assistant }] : []),
|
|
326
|
+
{ role: "user", content: REQUIEM_PROMPT },
|
|
327
|
+
];
|
|
328
|
+
// Generous budget: a thinking model spends the reasoning channel BEFORE emitting content;
|
|
329
|
+
// 4096 total left content empty (finish=length) on ~40% of a real sweep, and 16384 still
|
|
330
|
+
// starved a heavy thinker (#373). One escalation retry doubles the room; a run whose
|
|
331
|
+
// testimony is STILL empty records the reasoning spend honestly instead of a bare shrug.
|
|
332
|
+
let resp = await provider.generate({ messages, runId: String(run.id), maxTokens: 16384, ...(opts.signal !== undefined ? { signal: opts.signal } : {}) });
|
|
333
|
+
if (resp.assistant.content.trim() === "" && resp.assistant.finishReason === "length") {
|
|
334
|
+
resp = await provider.generate({ messages, runId: String(run.id), maxTokens: 32768, ...(opts.signal !== undefined ? { signal: opts.signal } : {}) });
|
|
335
|
+
}
|
|
336
|
+
const testimony = resp.assistant.content.trim()
|
|
337
|
+
|| `(no testimony — ${resp.assistant.usage.completion} tokens consumed entirely by reasoning, even after the 32768-token retry)`;
|
|
338
|
+
out.push(`## Run #${run.id} — ${run.name}`, "", `_(${resp.assistant.finishReason ?? "?"}, ${resp.assistant.usage.completion} tok)_`, "", testimony, "");
|
|
339
|
+
}
|
|
340
|
+
const path = join(digestDir, "requiem.md");
|
|
341
|
+
writeFileSync(path, out.join("\n"));
|
|
342
|
+
return { path, runs: byRun.size };
|
|
343
|
+
}
|
|
344
|
+
static run(opts) {
|
|
345
|
+
// digest.sql is packaged beside this module (src/digest → dist/digest via copy-sql),
|
|
346
|
+
// so SqlRiteSync resolves it from node_modules in a published install too (#303).
|
|
347
|
+
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
348
|
+
const dbPath = resolve(opts.dbPath);
|
|
349
|
+
if (!existsSync(dbPath))
|
|
350
|
+
throw new Error(`digest: no DB at ${dbPath}`);
|
|
351
|
+
// A consumer (plurnk-bench) passes an explicit per-trial digestDir; the CLI default is cwd/test/digest.
|
|
352
|
+
const digestDir = opts.digestDir ?? join(process.cwd(), "test", "digest");
|
|
353
|
+
// Opens without readOnly so WAL-mode DBs (the daemon's normal operating
|
|
354
|
+
// mode) inspect cleanly; this tool only reads. The DB is quiescent at
|
|
355
|
+
// digest time, so each PREP reads on its own — no cross-query snapshot.
|
|
356
|
+
const db = new SqlRiteSync({ path: dbPath, dir: [moduleDir] });
|
|
357
|
+
let sessions = db.digest_sessions.all();
|
|
358
|
+
let runs = db.digest_runs.all();
|
|
359
|
+
let loops = db.digest_loops.all();
|
|
360
|
+
let turns = db.digest_turns.all();
|
|
361
|
+
let logEntries = db.digest_log_entries.all();
|
|
362
|
+
let runRollupRows = db.digest_run_rollups.all();
|
|
363
|
+
let opMixRows = db.digest_run_op_mix.all();
|
|
364
|
+
// The semantic-state analytic (owner ask), feature-detected per table: a HISTORICAL
|
|
365
|
+
// specimen may predate token_counts/entry_embeddings — an old db is a fact to read,
|
|
366
|
+
// not a contract violation. Absent tables read as -1. node:sqlite directly (SqlRite's
|
|
367
|
+
// eager prepare would refuse the whole open over one missing optional table).
|
|
368
|
+
const probe = new DatabaseSync(dbPath, { readOnly: true });
|
|
369
|
+
const has = (t) => probe.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name=?").get(t) !== undefined;
|
|
370
|
+
const one = (q) => Number(probe.prepare(q).get().n);
|
|
371
|
+
const embeddings = {
|
|
372
|
+
entries: has("entries") ? one("SELECT count(*) n FROM entries") : -1,
|
|
373
|
+
entries_embedded: has("entry_embeddings") ? one("SELECT count(DISTINCT entry_id) n FROM entry_embeddings") : -1,
|
|
374
|
+
chunk_rows: has("entry_embeddings") ? one("SELECT count(*) n FROM entry_embeddings") : -1,
|
|
375
|
+
models: has("entry_embeddings") ? one("SELECT count(DISTINCT embedding_model) n FROM entry_embeddings") : -1,
|
|
376
|
+
token_derivations: has("token_counts") ? one("SELECT count(*) n FROM token_counts") : -1,
|
|
377
|
+
};
|
|
378
|
+
probe.close();
|
|
379
|
+
db.close();
|
|
380
|
+
// Optional run/session selector — narrow to one run or session; everything
|
|
381
|
+
// cascades from the kept runs (loops→turns→log entries→rollups), so a consumer
|
|
382
|
+
// (plurnk-bench) digests just the scope it cares about, not the whole DB. #264.
|
|
383
|
+
if (opts.runId !== undefined)
|
|
384
|
+
runs = runs.filter((r) => r.id === opts.runId);
|
|
385
|
+
if (opts.sessionId !== undefined)
|
|
386
|
+
runs = runs.filter((r) => r.session_id === opts.sessionId);
|
|
387
|
+
if (opts.runId !== undefined || opts.sessionId !== undefined) {
|
|
388
|
+
const keptRunIds = new Set(runs.map((r) => r.id));
|
|
389
|
+
const keptSessionIds = new Set(runs.map((r) => r.session_id));
|
|
390
|
+
sessions = sessions.filter((s) => keptSessionIds.has(s.id));
|
|
391
|
+
loops = loops.filter((l) => keptRunIds.has(l.run_id));
|
|
392
|
+
const keptLoopIds = new Set(loops.map((l) => l.id));
|
|
393
|
+
turns = turns.filter((t) => keptLoopIds.has(t.loop_id));
|
|
394
|
+
const keptTurnIds = new Set(turns.map((t) => t.id));
|
|
395
|
+
logEntries = logEntries.filter((le) => keptTurnIds.has(le.turn_id));
|
|
396
|
+
runRollupRows = runRollupRows.filter((r) => keptRunIds.has(r.run_id));
|
|
397
|
+
opMixRows = opMixRows.filter((o) => keptRunIds.has(o.run_id));
|
|
398
|
+
}
|
|
399
|
+
// Wipe-then-recreate the digest dir so each run is a clean snapshot —
|
|
400
|
+
// orphaned packet*.* files from a prior run don't linger.
|
|
401
|
+
rmSync(digestDir, { recursive: true, force: true });
|
|
402
|
+
mkdirSync(digestDir, { recursive: true });
|
|
403
|
+
const runsBySession = new Map();
|
|
404
|
+
for (const r of runs) {
|
|
405
|
+
const arr = runsBySession.get(r.session_id) ?? [];
|
|
406
|
+
arr.push(r);
|
|
407
|
+
runsBySession.set(r.session_id, arr);
|
|
408
|
+
}
|
|
409
|
+
const loopsByRun = new Map();
|
|
410
|
+
for (const l of loops) {
|
|
411
|
+
const arr = loopsByRun.get(l.run_id) ?? [];
|
|
412
|
+
arr.push(l);
|
|
413
|
+
loopsByRun.set(l.run_id, arr);
|
|
414
|
+
}
|
|
415
|
+
const turnsByLoop = new Map();
|
|
416
|
+
for (const t of turns) {
|
|
417
|
+
const arr = turnsByLoop.get(t.loop_id) ?? [];
|
|
418
|
+
arr.push(t);
|
|
419
|
+
turnsByLoop.set(t.loop_id, arr);
|
|
420
|
+
}
|
|
421
|
+
const logEntriesByTurn = new Map();
|
|
422
|
+
for (const le of logEntries) {
|
|
423
|
+
const arr = logEntriesByTurn.get(le.turn_id) ?? [];
|
|
424
|
+
arr.push(le);
|
|
425
|
+
logEntriesByTurn.set(le.turn_id, arr);
|
|
426
|
+
}
|
|
427
|
+
const loopsById = new Map(loops.map((l) => [l.id, l]));
|
|
428
|
+
const runsById = new Map(runs.map((r) => [r.id, r]));
|
|
429
|
+
const runRollups = new Map(runRollupRows.map((r) => [r.run_id, r]));
|
|
430
|
+
const opMixByRun = new Map();
|
|
431
|
+
for (const o of opMixRows) {
|
|
432
|
+
const arr = opMixByRun.get(o.run_id) ?? [];
|
|
433
|
+
arr.push(o);
|
|
434
|
+
opMixByRun.set(o.run_id, arr);
|
|
435
|
+
}
|
|
436
|
+
const m = {
|
|
437
|
+
dbPath, digestDir, sessions, runs, loops, turns, logEntries,
|
|
438
|
+
runsBySession, loopsByRun, turnsByLoop, logEntriesByTurn, loopsById, runsById,
|
|
439
|
+
runRollups, opMixByRun, embeddings,
|
|
440
|
+
};
|
|
441
|
+
writeFileSync(join(digestDir, "digest.md"), Digest.#renderWaterfall(m));
|
|
442
|
+
writeFileSync(join(digestDir, "digest.json"), Digest.#renderJson(m));
|
|
443
|
+
writeFileSync(join(digestDir, "reasoning.md"), Digest.#renderReasoning(m));
|
|
444
|
+
const packetFiles = Digest.#writePacketFiles(m);
|
|
445
|
+
const packetIds = [...new Set(packetFiles.map((f) => f.slice(0, f.indexOf("."))))];
|
|
446
|
+
console.log(`digest: wrote ${digestDir}/{digest.md,digest.json,reasoning.md} + ${packetFiles.length} packet section files (${packetIds.join(", ") || "none"})`);
|
|
447
|
+
console.log(` source: ${dbPath}`);
|
|
448
|
+
console.log(` sessions=${sessions.length} runs=${runs.length} loops=${loops.length} turns=${turns.length} log_entries=${logEntries.length}`);
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
//# sourceMappingURL=Digest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Digest.js","sourceRoot":"","sources":["../../src/digest/Digest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
-- Forensic read queries for bin/digest.ts. Opened via SqlRiteSync against an
|
|
2
|
+
-- existing plurnk*.db the daemon already migrated — NO `-- INIT:` blocks, these
|
|
3
|
+
-- compile against its schema and never alter it. The digest reads a quiescent
|
|
4
|
+
-- DB (a kept test .db or a post-session plurnk.db), so each PREP is its own read
|
|
5
|
+
-- — sqlrite 5 dropped the JS transaction composer and these never needed it.
|
|
6
|
+
|
|
7
|
+
-- PREP: digest_sessions
|
|
8
|
+
SELECT * FROM sessions ORDER BY id;
|
|
9
|
+
|
|
10
|
+
-- PREP: digest_runs
|
|
11
|
+
SELECT * FROM runs ORDER BY id;
|
|
12
|
+
|
|
13
|
+
-- PREP: digest_loops
|
|
14
|
+
SELECT id, run_id, sequence, status, prompt, flags
|
|
15
|
+
FROM loops ORDER BY run_id, sequence;
|
|
16
|
+
|
|
17
|
+
-- PREP: digest_turns
|
|
18
|
+
SELECT id, loop_id, sequence, status, packet,
|
|
19
|
+
usage_prompt, usage_completion, usage_cached, usage_cost_pico,
|
|
20
|
+
finish_reason, model, timestamp
|
|
21
|
+
FROM turns ORDER BY loop_id, sequence;
|
|
22
|
+
|
|
23
|
+
-- PREP: digest_log_entries
|
|
24
|
+
SELECT id, run_id, loop_id, turn_id, sequence, at, origin,
|
|
25
|
+
op, suffix, signal,
|
|
26
|
+
scheme, pathname,
|
|
27
|
+
tx, rx, status_rx, mimetype_rx,
|
|
28
|
+
state, outcome, attrs
|
|
29
|
+
FROM log_entries ORDER BY loop_id, turn_id, sequence;
|
|
30
|
+
|
|
31
|
+
-- PREP: digest_run_rollups
|
|
32
|
+
-- Per-run aggregates (token/cost SUMs, loop/turn COUNTs, last-turn status) —
|
|
33
|
+
-- the run-summary data-ops, computed in SQL rather than rolled up in JS.
|
|
34
|
+
SELECT
|
|
35
|
+
r.id AS run_id,
|
|
36
|
+
COUNT(DISTINCT l.id) AS loops,
|
|
37
|
+
COUNT(t.id) AS turns,
|
|
38
|
+
COALESCE(SUM(t.usage_prompt), 0) AS total_prompt,
|
|
39
|
+
COALESCE(SUM(t.usage_completion), 0) AS total_completion,
|
|
40
|
+
COALESCE(SUM(t.usage_cached), 0) AS total_cached,
|
|
41
|
+
COALESCE(SUM(t.usage_cost_pico), 0) AS total_cost_pico,
|
|
42
|
+
(SELECT t2.status FROM turns t2 JOIN loops l2 ON t2.loop_id = l2.id
|
|
43
|
+
WHERE l2.run_id = r.id ORDER BY l2.sequence DESC, t2.sequence DESC LIMIT 1) AS last_status
|
|
44
|
+
FROM runs r
|
|
45
|
+
LEFT JOIN loops l ON l.run_id = r.id
|
|
46
|
+
LEFT JOIN turns t ON t.loop_id = l.id
|
|
47
|
+
GROUP BY r.id
|
|
48
|
+
ORDER BY r.id;
|
|
49
|
+
|
|
50
|
+
-- PREP: digest_run_op_mix
|
|
51
|
+
-- Per-run op histogram (GROUP BY run, op), pre-sorted by frequency.
|
|
52
|
+
SELECT run_id, op, COUNT(*) AS n
|
|
53
|
+
FROM log_entries
|
|
54
|
+
GROUP BY run_id, op
|
|
55
|
+
ORDER BY run_id, n DESC, op;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { default as Engine } from "./core/Engine.ts";
|
|
2
|
+
export { default as SchemeRegistry } from "./core/SchemeRegistry.ts";
|
|
3
|
+
export { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
4
|
+
export { default as Daemon } from "./server/Daemon.ts";
|
|
5
|
+
export { default as Known } from "./schemes/Known.ts";
|
|
6
|
+
export { default as Unknown } from "./schemes/Unknown.ts";
|
|
7
|
+
export { default as Skill } from "./schemes/Skill.ts";
|
|
8
|
+
export { default as Log } from "./schemes/Log.ts";
|
|
9
|
+
export { default as Plurnk } from "./schemes/Plurnk.ts";
|
|
10
|
+
export { default as Exec } from "./schemes/Exec.ts";
|
|
11
|
+
export { default as File } from "./schemes/File.ts";
|
|
12
|
+
export { Mock } from "@plurnk/plurnk-providers";
|
|
13
|
+
export type { MockResponse, MockAssistant, ChatMessage } from "@plurnk/plurnk-providers";
|
|
14
|
+
export type { EditResult, ReadResult, OpenFoldResult, } from "./schemes/_entry-ops.ts";
|
|
15
|
+
export { default as Paths } from "./Paths.ts";
|
|
16
|
+
export { default as EnvFlags } from "./core/EnvFlags.ts";
|
|
17
|
+
export type { FlagDescriptor } from "./core/EnvFlags.ts";
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEzF,YAAY,EACR,UAAU,EACV,UAAU,EACV,cAAc,GACjB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAK9C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Public library API for @plurnk/plurnk-service.
|
|
2
|
+
//
|
|
3
|
+
// Consumers (plurnk CLI/TUI, future web app, etc.) import from here.
|
|
4
|
+
// Internal modules and tests reach into src/ paths directly; this file
|
|
5
|
+
// is the contract for external use.
|
|
6
|
+
export { default as Engine } from "./core/Engine.js";
|
|
7
|
+
export { default as SchemeRegistry } from "./core/SchemeRegistry.js";
|
|
8
|
+
// Mimetype handling is owned by @plurnk/plurnk-mimetypes. Consumers needing
|
|
9
|
+
// the orchestrator import directly from there.
|
|
10
|
+
export { Mimetypes } from "@plurnk/plurnk-mimetypes";
|
|
11
|
+
export { default as Daemon } from "./server/Daemon.js";
|
|
12
|
+
export { default as Known } from "./schemes/Known.js";
|
|
13
|
+
export { default as Unknown } from "./schemes/Unknown.js";
|
|
14
|
+
export { default as Skill } from "./schemes/Skill.js";
|
|
15
|
+
export { default as Log } from "./schemes/Log.js";
|
|
16
|
+
export { default as Plurnk } from "./schemes/Plurnk.js";
|
|
17
|
+
export { default as Exec } from "./schemes/Exec.js";
|
|
18
|
+
export { default as File } from "./schemes/File.js";
|
|
19
|
+
export { Mock } from "@plurnk/plurnk-providers";
|
|
20
|
+
// Package-relative paths to non-code artifacts (migrations, the upstream
|
|
21
|
+
// grammar's plurnk.md, default requirements). Resolution lives in the
|
|
22
|
+
// Paths class so this entry stays a pure re-export barrel.
|
|
23
|
+
export { default as Paths } from "./Paths.js";
|
|
24
|
+
// CLI-flag derivation from .env.defaults (PLURNK_X → --x, the comment above
|
|
25
|
+
// becomes help text, flags top the cascade) — the shared lib both the service
|
|
26
|
+
// CLI and the client TUI consume, so a flag set stays single-sourced.
|
|
27
|
+
export { default as EnvFlags } from "./core/EnvFlags.js";
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,qEAAqE;AACrE,uEAAuE;AACvE,oCAAoC;AAEpC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,4EAA4E;AAC5E,+CAA+C;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAShD,yEAAyE;AACzE,sEAAsE;AACtE,2DAA2D;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAE9C,4EAA4E;AAC5E,8EAA8E;AAC9E,sEAAsE;AACtE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectPolicy.d.ts","sourceRoot":"","sources":["../../src/schemes/EffectPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;AAc5C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAExC;CACJ"}
|