@plurnk/plurnk-service 1.9.2 → 1.10.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 +3 -5
- package/SPEC.md +69 -32
- package/dist/build-info.json +1 -1
- package/dist/core/BranchReceipt.d.ts.map +1 -1
- package/dist/core/BranchReceipt.js +9 -4
- package/dist/core/BranchReceipt.js.map +1 -1
- package/dist/core/CoreSchemeServices.d.ts +1 -0
- package/dist/core/CoreSchemeServices.d.ts.map +1 -1
- package/dist/core/CoreSchemeServices.js +1 -0
- package/dist/core/CoreSchemeServices.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +2 -1
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +49 -13
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +3 -1
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +18 -17
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/Engine.sql +34 -10
- package/dist/core/LoopPacket.d.ts +3 -0
- package/dist/core/LoopPacket.d.ts.map +1 -0
- package/dist/core/LoopPacket.js +2 -0
- package/dist/core/LoopPacket.js.map +1 -0
- package/dist/core/NoticeChannel.d.ts.map +1 -1
- package/dist/core/NoticeChannel.js +14 -2
- package/dist/core/NoticeChannel.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +9 -2
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/ResourceMutations.d.ts.map +1 -1
- package/dist/core/ResourceMutations.js +21 -3
- package/dist/core/ResourceMutations.js.map +1 -1
- package/dist/core/TerminalResult.d.ts.map +1 -1
- package/dist/core/TerminalResult.js +4 -1
- package/dist/core/TerminalResult.js.map +1 -1
- package/dist/core/ToolResources.js +4 -4
- package/dist/core/ToolResources.js.map +1 -1
- package/dist/core/TurnOps.d.ts.map +1 -1
- package/dist/core/TurnOps.js +3 -0
- package/dist/core/TurnOps.js.map +1 -1
- package/dist/core/TurnRunner.d.ts +3 -1
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +153 -159
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +5 -1
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/core/scheme-types.d.ts +1 -0
- package/dist/core/scheme-types.d.ts.map +1 -1
- package/dist/schemes/Exec.d.ts.map +1 -1
- package/dist/schemes/Exec.js +26 -16
- package/dist/schemes/Exec.js.map +1 -1
- package/dist/schemes/_entry-find.d.ts.map +1 -1
- package/dist/schemes/_entry-find.js +24 -4
- package/dist/schemes/_entry-find.js.map +1 -1
- package/dist/schemes/_entry-graph.js +1 -1
- package/dist/schemes/_entry-graph.js.map +1 -1
- package/dist/schemes/_entry-send.d.ts.map +1 -1
- package/dist/schemes/_entry-send.js +3 -1
- package/dist/schemes/_entry-send.js.map +1 -1
- package/dist/schemes/_search-index.d.ts +1 -1
- package/dist/schemes/_search-index.d.ts.map +1 -1
- package/dist/schemes/_search-index.js +39 -35
- package/dist/schemes/_search-index.js.map +1 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +4 -0
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/branch-batch.sql +4 -2
- package/dist/server/seam-loop.sql +5 -1
- package/migrations/001_schema.sql +4 -1
- package/package.json +32 -32
|
@@ -26,9 +26,7 @@ const invocationRows = (invocation, exactTarget) => {
|
|
|
26
26
|
const target = invocation.target === undefined
|
|
27
27
|
? "unavailable"
|
|
28
28
|
: exactTarget === undefined
|
|
29
|
-
? `${requirement(invocation.target.required)}: ${invocation.target.role}`
|
|
30
|
-
+ (invocation.target.directory === "cwd" ? "; a local directory selects the working directory" : "")
|
|
31
|
-
+ exclusive
|
|
29
|
+
? `${requirement(invocation.target.required)}: ${invocation.target.role}${exclusive}`
|
|
32
30
|
: `${requirement(invocation.target.required)}: exact target ${inlineCode(exactTarget)}; ${invocation.target.role}${exclusive}`;
|
|
33
31
|
const body = `${requirement(invocation.body.required)}: ${invocation.body.role}${exclusive}`;
|
|
34
32
|
return [
|
|
@@ -40,7 +38,9 @@ const invocationRows = (invocation, exactTarget) => {
|
|
|
40
38
|
};
|
|
41
39
|
const exampleSource = (runtime, invocation, exactTarget, annotation) => {
|
|
42
40
|
const target = exactTarget ?? invocation.example?.target;
|
|
43
|
-
|
|
41
|
+
// The default shell is the bare EXEC: `[sh]` stays valid but is the explicit form,
|
|
42
|
+
// like `[bash]` — a shell command is not a tool family ({§exec-target-routing}).
|
|
43
|
+
const heading = `## EXEC0${runtime === "sh" ? "" : ` [${runtime}]`}${target === undefined ? "" : ` (${PathSyntax.escapeTarget(target)})`}`
|
|
44
44
|
+ (annotation === undefined ? "" : ` <!-- ${annotationText(annotation)} -->`);
|
|
45
45
|
return invocation.example?.body === undefined
|
|
46
46
|
? heading
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolResources.js","sourceRoot":"","sources":["../../src/core/ToolResources.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ToolResources.js","sourceRoot":"","sources":["../../src/core/ToolResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnOps.d.ts","sourceRoot":"","sources":["../../src/core/TurnOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAiBpD,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"TurnOps.d.ts","sourceRoot":"","sources":["../../src/core/TurnOps.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,KAAK,eAAe,EACvB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAiBpD,MAAM,CAAC,OAAO,OAAO,OAAO;IACxB,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,GAAG,MAAM,CA0B1E;IAED,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAqBtD;CACJ"}
|
package/dist/core/TurnOps.js
CHANGED
|
@@ -31,6 +31,9 @@ export default class TurnOps {
|
|
|
31
31
|
if (statement.signal !== null) {
|
|
32
32
|
modifiers.push(`[${Array.isArray(statement.signal) ? statement.signal.join(",") : statement.signal}]`);
|
|
33
33
|
}
|
|
34
|
+
if (statement.op === "EXEC" && statement.tags !== undefined && statement.tags !== null && statement.tags.length > 0) {
|
|
35
|
+
modifiers.push(`[${statement.tags.join(",")}]`);
|
|
36
|
+
}
|
|
34
37
|
if (statement.target !== null)
|
|
35
38
|
modifiers.push(`(${statement.target.raw})`);
|
|
36
39
|
if (statement.lineMarker !== null)
|
package/dist/core/TurnOps.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnOps.js","sourceRoot":"","sources":["../../src/core/TurnOps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TurnOps.js","sourceRoot":"","sources":["../../src/core/TurnOps.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import type { PlurnkSchemeContext, WriterTier } from "./scheme-types.ts";
|
|
|
12
12
|
import type ExecutorRegistry from "./ExecutorRegistry.ts";
|
|
13
13
|
import type { StreamEventNotify, WakeWorkerNotify } from "./ChannelWrite.ts";
|
|
14
14
|
import type { ReasoningEventNotify } from "./ReasoningEvent.ts";
|
|
15
|
+
import type { LoopPacketNotify } from "./LoopPacket.ts";
|
|
15
16
|
import LiveSubscriptions from "./LiveSubscriptions.ts";
|
|
16
17
|
export declare const resolveGrammarRailPath: (variant: string) => string;
|
|
17
18
|
import { type SchemeResult } from "./results.ts";
|
|
@@ -62,7 +63,7 @@ type TurnDispatch = (context: DispatchContext) => Promise<DispatchResult>;
|
|
|
62
63
|
type WarmWorkspace = (context: PlurnkSchemeContext, invalidate?: boolean, materialize?: boolean) => Promise<void>;
|
|
63
64
|
export default class TurnRunner {
|
|
64
65
|
#private;
|
|
65
|
-
constructor({ db, schemes, mimetypes, weigh, notices, problems, strikes, packets, dispatcher, liveSubscriptions, streamEventNotify, reasoningEventNotify, wakeWorkerNotify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, }: {
|
|
66
|
+
constructor({ db, schemes, mimetypes, weigh, notices, problems, strikes, packets, dispatcher, liveSubscriptions, streamEventNotify, reasoningEventNotify, loopPacketNotify, wakeWorkerNotify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, }: {
|
|
66
67
|
db: Db;
|
|
67
68
|
schemes: SchemeRegistry;
|
|
68
69
|
mimetypes: Mimetypes;
|
|
@@ -75,6 +76,7 @@ export default class TurnRunner {
|
|
|
75
76
|
liveSubscriptions: LiveSubscriptions;
|
|
76
77
|
streamEventNotify?: StreamEventNotify;
|
|
77
78
|
reasoningEventNotify?: ReasoningEventNotify;
|
|
79
|
+
loopPacketNotify?: LoopPacketNotify;
|
|
78
80
|
wakeWorkerNotify?: WakeWorkerNotify;
|
|
79
81
|
executors: () => ExecutorRegistry | undefined;
|
|
80
82
|
loopSignal: (loopId: number) => AbortSignal | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TurnRunner.d.ts","sourceRoot":"","sources":["../../src/core/TurnRunner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,eAAe,
|
|
1
|
+
{"version":3,"file":"TurnRunner.d.ts","sourceRoot":"","sources":["../../src/core/TurnRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/core/TurnRunner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var _a;
|
|
2
|
-
import {
|
|
2
|
+
import { PlurnkParser, PlurnkParseError, UNKNOWN_POSITION } from "@plurnk/plurnk-contracts";
|
|
3
3
|
const TERMINAL_SEND_SIGNALS = new Set([102, 200, 202, 499]);
|
|
4
4
|
const comparePosition = (a, b) => a.line - b.line || a.column - b.column;
|
|
5
5
|
import Meta from "@plurnk/plurnk-meta";
|
|
@@ -8,7 +8,8 @@ import GitMembership from "./git-membership.js";
|
|
|
8
8
|
import GitState from "./git-state.js";
|
|
9
9
|
import WorkspaceSettings from "./workspace-settings.js";
|
|
10
10
|
import { editedSpan } from "../content/index.js";
|
|
11
|
-
import
|
|
11
|
+
import ReadResolve from "../content/read-resolve.js";
|
|
12
|
+
import { authorityParts, generatedPathname, promptPathname, promptLoopPrefix } from "./plurnk-uri.js";
|
|
12
13
|
import { readFile } from "node:fs/promises";
|
|
13
14
|
// {§grammar-rail-registration} — bare names are the built-in rail namespace;
|
|
14
15
|
// everything else is an import specifier resolved through the Node chain.
|
|
@@ -43,18 +44,6 @@ import { readOptimisticSettlementMs } from "./optimistic-settlement.js";
|
|
|
43
44
|
import ModelCall, { ModelCallPersistenceError, ProviderAccountingIntegrityError, } from "./ModelCall.js";
|
|
44
45
|
import OverflowTurn from "./OverflowTurn.js";
|
|
45
46
|
import TurnOps from "./TurnOps.js";
|
|
46
|
-
const RECORD_STREAM_MIMETYPES = new Set(["application/jsonl", "application/x-ndjson"]);
|
|
47
|
-
const baseMimetype = (mimetype) => mimetype.split(";", 1)[0].trim().toLowerCase();
|
|
48
|
-
// {§exec-stream} Active streams publish only independently meaningful units.
|
|
49
|
-
// Atomic documents wait for close; JSONL stops after its last complete record.
|
|
50
|
-
const streamPublicationEnd = (content, mimetype, cursor, closed) => {
|
|
51
|
-
const type = baseMimetype(mimetype);
|
|
52
|
-
if (closed || type.startsWith("text/"))
|
|
53
|
-
return content.length;
|
|
54
|
-
if (!RECORD_STREAM_MIMETYPES.has(type))
|
|
55
|
-
return cursor;
|
|
56
|
-
return Math.max(cursor, content.lastIndexOf("\n") + 1);
|
|
57
|
-
};
|
|
58
47
|
const ENGINE_PROBLEMS = Object.freeze({
|
|
59
48
|
max_commands_exceeded: {
|
|
60
49
|
status: 429,
|
|
@@ -182,6 +171,7 @@ class TurnRunner {
|
|
|
182
171
|
#liveSubscriptions;
|
|
183
172
|
#streamEventNotify;
|
|
184
173
|
#reasoningEventNotify;
|
|
174
|
+
#loopPacketNotify;
|
|
185
175
|
#wakeWorkerNotify;
|
|
186
176
|
#executors;
|
|
187
177
|
#loopSignal;
|
|
@@ -190,7 +180,7 @@ class TurnRunner {
|
|
|
190
180
|
#dispatch;
|
|
191
181
|
#resolveWorkerProviderIdentity;
|
|
192
182
|
#gbnfCache = new Map();
|
|
193
|
-
constructor({ db, schemes, mimetypes, weigh, notices, problems, strikes, packets, dispatcher, liveSubscriptions, streamEventNotify, reasoningEventNotify, wakeWorkerNotify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, }) {
|
|
183
|
+
constructor({ db, schemes, mimetypes, weigh, notices, problems, strikes, packets, dispatcher, liveSubscriptions, streamEventNotify, reasoningEventNotify, loopPacketNotify, wakeWorkerNotify, executors, loopSignal, interactions, warmWorkspace, dispatch, resolveWorkerProviderIdentity, }) {
|
|
194
184
|
this.#db = db;
|
|
195
185
|
this.#schemes = schemes;
|
|
196
186
|
this.#mimetypes = mimetypes;
|
|
@@ -203,6 +193,7 @@ class TurnRunner {
|
|
|
203
193
|
this.#liveSubscriptions = liveSubscriptions;
|
|
204
194
|
this.#streamEventNotify = streamEventNotify;
|
|
205
195
|
this.#reasoningEventNotify = reasoningEventNotify;
|
|
196
|
+
this.#loopPacketNotify = loopPacketNotify;
|
|
206
197
|
this.#wakeWorkerNotify = wakeWorkerNotify;
|
|
207
198
|
this.#executors = executors;
|
|
208
199
|
this.#loopSignal = loopSignal;
|
|
@@ -211,6 +202,19 @@ class TurnRunner {
|
|
|
211
202
|
this.#dispatch = dispatch;
|
|
212
203
|
this.#resolveWorkerProviderIdentity = resolveWorkerProviderIdentity;
|
|
213
204
|
}
|
|
205
|
+
async #recordInference(args) {
|
|
206
|
+
await Turn.recordInference(this.#db, args.turnId, args.evidence);
|
|
207
|
+
if (this.#loopPacketNotify === undefined)
|
|
208
|
+
return;
|
|
209
|
+
const packetCount = await this.#db.engine_loop_packet_count.get({ loop_id: args.loopId });
|
|
210
|
+
if (packetCount === undefined)
|
|
211
|
+
throw new Error(`loop ${args.loopId}: packet count row missing`);
|
|
212
|
+
this.#loopPacketNotify(args.workspaceId, {
|
|
213
|
+
workerId: args.workerId,
|
|
214
|
+
loopId: args.loopId,
|
|
215
|
+
packetCount: packetCount.count,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
214
218
|
// {§rail-truth-engine-verdict} — the verify GAP (a configured grammar @plurnk/gbnf can't
|
|
215
219
|
// parse): warn once per message, never per turn; the turn records railsVerdict "unverifiable".
|
|
216
220
|
static #railGapWarned = new Set();
|
|
@@ -653,6 +657,29 @@ class TurnRunner {
|
|
|
653
657
|
requestInteraction: (request) => this.#interactions.request(request, { workspaceId, workerId, loopId, turnId: contextTurnId }, this.#loopSignal(loopId)),
|
|
654
658
|
});
|
|
655
659
|
let systemCtx = systemContext(initializationTurn?.id ?? modelTurn.id);
|
|
660
|
+
// {§prompt-entry} — the prompt entry exists before any turn of the loop
|
|
661
|
+
// runs, so the initialization COPY archives a real source; its `prompt`
|
|
662
|
+
// log row is published to the model turn below (one durable publication
|
|
663
|
+
// per loop, decided by that row).
|
|
664
|
+
const promptPublication = turnNumber === 1 && loopRow?.prompt_published === 0
|
|
665
|
+
&& typeof loopRow.prompt === "string" && loopRow.prompt.length > 0
|
|
666
|
+
? {
|
|
667
|
+
content: loopRow.prompt,
|
|
668
|
+
source: loopRow.prompt_source,
|
|
669
|
+
path: promptTarget(loopRow.sequence, 1),
|
|
670
|
+
openPaths: assertOpenPaths(JSON.parse(loopRow.open_paths), `Loop ${loopId} open_paths`),
|
|
671
|
+
}
|
|
672
|
+
: null;
|
|
673
|
+
if (promptPublication !== null) {
|
|
674
|
+
const entry = {
|
|
675
|
+
channels: { body: { content: promptPublication.content, mimetype: "text/markdown" } },
|
|
676
|
+
attributes: {
|
|
677
|
+
openPaths: promptPublication.openPaths,
|
|
678
|
+
...(promptPublication.source === null ? {} : { source: promptPublication.source }),
|
|
679
|
+
},
|
|
680
|
+
};
|
|
681
|
+
await EntryCrud.writeEntry({ authority: "", pathname: promptPublication.path.pathname }, entry, systemCtx, "prompt", workerId);
|
|
682
|
+
}
|
|
656
683
|
const initializationStatements = [];
|
|
657
684
|
// {§worker-initialization-entry} — the worker's first turn is the worked
|
|
658
685
|
// example itself: an ordinary PLAN, the actual orienting operations,
|
|
@@ -668,6 +695,23 @@ class TurnRunner {
|
|
|
668
695
|
position: UNKNOWN_POSITION,
|
|
669
696
|
};
|
|
670
697
|
initializationStatements.push(plan);
|
|
698
|
+
// {§worker-initialization-entry} — the prompt is archived into the
|
|
699
|
+
// worker's private space: the worked COPY specimen, and the private
|
|
700
|
+
// space shown as scratch. An append onto an absent entry creates it.
|
|
701
|
+
// Authored first among the operations because it executes first
|
|
702
|
+
// ({§op-mode-phases}: Mutate precedes Observe).
|
|
703
|
+
if (promptPublication !== null) {
|
|
704
|
+
const archive = {
|
|
705
|
+
op: "COPY", delimiter: "", annotation: "append latest prompt", signal: ["+_plurnk", "+backup"],
|
|
706
|
+
target: promptPublication.path, lineMarker: null,
|
|
707
|
+
body: {
|
|
708
|
+
target: { kind: "url", raw: "worker://~/prompts.md", scheme: "worker", username: null, password: null, hostname: "~", port: null, pathname: "/prompts.md", query: null, fragment: null },
|
|
709
|
+
lineMarker: { marks: [-1] },
|
|
710
|
+
},
|
|
711
|
+
position: UNKNOWN_POSITION,
|
|
712
|
+
};
|
|
713
|
+
initializationStatements.push(archive);
|
|
714
|
+
}
|
|
671
715
|
// {§turn0-agents-stunt} — the project AGENTS.md (materialized by LoopDocs as
|
|
672
716
|
// worker://~/_plurnk/agents.md) gets one foisted READ on the worker's first
|
|
673
717
|
// loop, so local repo guidance is visible turn-0 content. Global policy
|
|
@@ -737,11 +781,11 @@ class TurnRunner {
|
|
|
737
781
|
const catalogSchemes = await this.#db.engine_scheme_catalog_summary.all({ workspace_id: workspaceId });
|
|
738
782
|
const fileItems = catalogSchemes.find(({ scheme }) => scheme === "file")?.shallow_items ?? 0;
|
|
739
783
|
const fileCap = filesItems > 0 && fileItems > 0 ? Math.min(filesItems, fileItems) : null;
|
|
740
|
-
// {§tools-resource-materialization} — PLURNK_MCP_EXPANDED
|
|
741
|
-
//
|
|
742
|
-
//
|
|
743
|
-
//
|
|
744
|
-
//
|
|
784
|
+
// {§tools-resource-materialization} — a PLURNK_MCP_EXPANDED server
|
|
785
|
+
// contributes one FIND over its family document matching the
|
|
786
|
+
// `## EXEC0` headings: one row per tool — heading, annotation,
|
|
787
|
+
// signature — paged like every survey. No document is delivered
|
|
788
|
+
// unasked; per-target child documents do not exist.
|
|
745
789
|
const registry = this.#executors();
|
|
746
790
|
const toolExpansions = [];
|
|
747
791
|
for (const tag of registry?.availableRuntimes(workerId) ?? []) {
|
|
@@ -750,9 +794,10 @@ class TurnRunner {
|
|
|
750
794
|
continue;
|
|
751
795
|
toolExpansions.push({
|
|
752
796
|
statement: {
|
|
753
|
-
op: "
|
|
797
|
+
op: "FIND", delimiter: "", annotation: `enabled tools: ${tag}`, signal: ["+_plurnk", "+init", "+tools"],
|
|
754
798
|
target: { kind: "url", raw: `worker://~/_plurnk/tools/${tag}.md`, scheme: "worker", username: null, password: null, hostname: "~", port: null, pathname: generatedPathname(`/tools/${tag}.md`), query: null, fragment: null },
|
|
755
|
-
body:
|
|
799
|
+
body: { dialect: "regex", raw: "/^## EXEC0 .*\\n.*$/m", pattern: "^## EXEC0 .*\\n.*$", flags: "m" },
|
|
800
|
+
lineMarker: null, position: UNKNOWN_POSITION,
|
|
756
801
|
},
|
|
757
802
|
});
|
|
758
803
|
}
|
|
@@ -863,32 +908,18 @@ class TurnRunner {
|
|
|
863
908
|
// Model operations continue the same turn sequence after these rows.
|
|
864
909
|
let nextActionIndex = 1;
|
|
865
910
|
const turnOpenPaths = [];
|
|
866
|
-
if (
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
};
|
|
879
|
-
await EntryCrud.writeEntry({ authority: "", pathname: promptPath.pathname }, entry, systemCtx, "prompt", workerId);
|
|
880
|
-
turnOpenPaths.push(...openPaths);
|
|
881
|
-
const promptLogId = await this.#writePromptLog({
|
|
882
|
-
workerId,
|
|
883
|
-
loopId,
|
|
884
|
-
turnId,
|
|
885
|
-
sequence: nextActionIndex++,
|
|
886
|
-
target: promptPath,
|
|
887
|
-
content: promptRow.prompt,
|
|
888
|
-
source: promptRow.prompt_source,
|
|
889
|
-
});
|
|
890
|
-
onDispatch?.(promptLogId);
|
|
891
|
-
}
|
|
911
|
+
if (promptPublication !== null) { // {§prompt-entry} — one durable publication per loop
|
|
912
|
+
turnOpenPaths.push(...promptPublication.openPaths);
|
|
913
|
+
const promptLogId = await this.#writePromptLog({
|
|
914
|
+
workerId,
|
|
915
|
+
loopId,
|
|
916
|
+
turnId,
|
|
917
|
+
sequence: nextActionIndex++,
|
|
918
|
+
target: promptPublication.path,
|
|
919
|
+
content: promptPublication.content,
|
|
920
|
+
source: promptPublication.source,
|
|
921
|
+
});
|
|
922
|
+
onDispatch?.(promptLogId);
|
|
892
923
|
}
|
|
893
924
|
// {§prompt-loop-containment}: the loop contains every prompt that arrived
|
|
894
925
|
// while it ran. Publish each undelivered frame oldest-first exactly once.
|
|
@@ -1269,12 +1300,15 @@ class TurnRunner {
|
|
|
1269
1300
|
// runLoop/Daemon settle the exact 504/499 loop result.
|
|
1270
1301
|
if (providerSignal?.aborted) {
|
|
1271
1302
|
const status = providerSignal.reason === LOOP_TIMEOUT_REASON ? 504 : 499;
|
|
1272
|
-
await
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1303
|
+
await this.#recordInference({
|
|
1304
|
+
workspaceId, workerId, loopId, turnId,
|
|
1305
|
+
evidence: {
|
|
1306
|
+
packet: StoredPacket.stringify(requestPacket),
|
|
1307
|
+
usageCurationBudget: this.#packets.curationBudgetFor(provider),
|
|
1308
|
+
finishReason: splitResponse?.callMetadata.finishReason ?? null,
|
|
1309
|
+
model: splitResponse?.callMetadata.model ?? provider.model,
|
|
1310
|
+
meta: JSON.stringify(response?.meta ?? {}),
|
|
1311
|
+
},
|
|
1278
1312
|
});
|
|
1279
1313
|
await Turn.complete(this.#db, turnId, status);
|
|
1280
1314
|
throw err;
|
|
@@ -1291,12 +1325,15 @@ class TurnRunner {
|
|
|
1291
1325
|
// The provider call was attempted, but no completed exchange exists.
|
|
1292
1326
|
// Persist the exact request half and failure status; omitting assistant
|
|
1293
1327
|
// is materially different from fabricating an empty model turn.
|
|
1294
|
-
await
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1328
|
+
await this.#recordInference({
|
|
1329
|
+
workspaceId, workerId, loopId, turnId,
|
|
1330
|
+
evidence: {
|
|
1331
|
+
packet: StoredPacket.stringify(requestPacket),
|
|
1332
|
+
usageCurationBudget: this.#packets.curationBudgetFor(provider),
|
|
1333
|
+
finishReason: splitResponse?.callMetadata.finishReason ?? null,
|
|
1334
|
+
model: splitResponse?.callMetadata.model ?? provider.model,
|
|
1335
|
+
meta: JSON.stringify(response?.meta ?? {}),
|
|
1336
|
+
},
|
|
1300
1337
|
});
|
|
1301
1338
|
await Turn.complete(this.#db, turnId, recorded.result.status);
|
|
1302
1339
|
if (capacityFailure) {
|
|
@@ -1337,20 +1374,31 @@ class TurnRunner {
|
|
|
1337
1374
|
? { reasoningItems: response.assistant.reasoningEncrypted }
|
|
1338
1375
|
: {}),
|
|
1339
1376
|
});
|
|
1377
|
+
// {§invalid-emission-attempts} — the informed turn carries the parser's own
|
|
1378
|
+
// diagnostic and position: the model sees WHY, not only that it was refused.
|
|
1379
|
+
const diagnostic = splitResponse.parseErrors[0];
|
|
1340
1380
|
this.#notices.push(workspaceId, loopId, {
|
|
1341
1381
|
source: "engine:grammar",
|
|
1342
1382
|
kind: "invalid_emission",
|
|
1343
1383
|
level: "error",
|
|
1344
|
-
message:
|
|
1384
|
+
message: diagnostic === undefined
|
|
1385
|
+
? INVALID_EMISSION_RECOVERY_MESSAGE
|
|
1386
|
+
: `${INVALID_EMISSION_RECOVERY_MESSAGE} Parser: ${diagnostic.message}`,
|
|
1387
|
+
...(diagnostic !== undefined && diagnostic.line > 0
|
|
1388
|
+
? { position: { type: "content-offset", line: diagnostic.line, column: diagnostic.column } }
|
|
1389
|
+
: {}),
|
|
1345
1390
|
});
|
|
1346
1391
|
}
|
|
1347
1392
|
const status = allowInvalidEmissionRecovery ? TURN_STATUS_IMPLICIT_CONTINUE : 500;
|
|
1348
|
-
await
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1393
|
+
await this.#recordInference({
|
|
1394
|
+
workspaceId, workerId, loopId, turnId,
|
|
1395
|
+
evidence: {
|
|
1396
|
+
packet: StoredPacket.stringify(requestPacket),
|
|
1397
|
+
usageCurationBudget: this.#packets.curationBudgetFor(provider),
|
|
1398
|
+
finishReason: splitResponse.callMetadata.finishReason,
|
|
1399
|
+
model: splitResponse.callMetadata.model,
|
|
1400
|
+
meta: JSON.stringify(response.meta ?? {}),
|
|
1401
|
+
},
|
|
1354
1402
|
});
|
|
1355
1403
|
await Turn.complete(this.#db, turnId, status);
|
|
1356
1404
|
return {
|
|
@@ -1435,14 +1483,17 @@ class TurnRunner {
|
|
|
1435
1483
|
// the producer-neutral admitted-turn executor settles every operation
|
|
1436
1484
|
// and its exact source artifact.
|
|
1437
1485
|
const packet = StoredPacket.admit(requestPacket, packetAssistant, response.assistantRaw);
|
|
1438
|
-
await
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1486
|
+
await this.#recordInference({
|
|
1487
|
+
workspaceId, workerId, loopId, turnId,
|
|
1488
|
+
evidence: {
|
|
1489
|
+
packet: StoredPacket.stringify(packet),
|
|
1490
|
+
usageCurationBudget: this.#packets.curationBudgetFor(provider), // {§tokenomics-client-gauge}
|
|
1491
|
+
finishReason: callMetadata.finishReason,
|
|
1492
|
+
model: callMetadata.model,
|
|
1493
|
+
// Opaque provider metadata plus engine-authored rail keys.
|
|
1494
|
+
// {§meta-passthrough}, {§rail-truth-engine-verdict}
|
|
1495
|
+
meta: JSON.stringify({ ...(response.meta ?? {}), ...(railKeys ?? {}) }),
|
|
1496
|
+
},
|
|
1446
1497
|
});
|
|
1447
1498
|
// {§operator-config-workspace-max-commands} — workspace maxCommands
|
|
1448
1499
|
// narrows the operator ceiling before the admitted program reaches the
|
|
@@ -1735,90 +1786,33 @@ class TurnRunner {
|
|
|
1735
1786
|
&& ch.channel === this.#schemes.defaultChannelFor(ch.runtime, workerId)
|
|
1736
1787
|
? null
|
|
1737
1788
|
: ch.channel;
|
|
1738
|
-
const streamBase = renderAddress({
|
|
1739
|
-
scheme: ch.runtime,
|
|
1740
|
-
authority: ch.authority,
|
|
1741
|
-
pathname: ch.coord,
|
|
1742
|
-
});
|
|
1743
|
-
const streamTarget = visibleFragment === null
|
|
1744
|
-
? streamBase
|
|
1745
|
-
: `${streamBase}#${PathSyntax.escapeTarget(visibleFragment)}`;
|
|
1746
1789
|
const targetParts = authorityParts(ch.authority);
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
const terminalResult = async (fields, sequence) => {
|
|
1753
|
-
if (terminal === null)
|
|
1754
|
-
throw new Error(`closed subscription ${ch.subscription_id} has no terminal result`);
|
|
1755
|
-
const result = Results.assert({
|
|
1756
|
-
...terminal,
|
|
1757
|
-
...(terminal.problem === undefined ? {} : { problem: { ...terminal.problem } }),
|
|
1758
|
-
...fields,
|
|
1759
|
-
});
|
|
1760
|
-
if (result.problem !== undefined) {
|
|
1761
|
-
const seqs = await this.#db.engine_loop_turn_seqs.get({
|
|
1762
|
-
loop_id: loopId,
|
|
1763
|
-
turn_id: turnId,
|
|
1764
|
-
});
|
|
1765
|
-
if (seqs === undefined)
|
|
1766
|
-
throw new Error(`stream delta has no log coordinate for loop=${loopId} turn=${turnId}`);
|
|
1767
|
-
Results.attachInstance(result, `log:///${seqs.loop_seq}/${seqs.turn_seq}/${sequence}/READ`);
|
|
1768
|
-
}
|
|
1769
|
-
return result;
|
|
1770
|
-
};
|
|
1771
|
-
const publishEnd = streamPublicationEnd(ch.content, ch.mimetype, cursor, closed);
|
|
1772
|
-
if (publishEnd <= cursor) {
|
|
1773
|
-
// The cursor-terminal race: a channel written in one final
|
|
1774
|
-
// burst gets fully shown FOLDED while still active; the close then has zero new
|
|
1775
|
-
// content and the auto-OPEN terminal observation never fired — the model was never shown
|
|
1776
|
-
// the conclusion of a stream whose result it already holds folded. The same
|
|
1777
|
-
// observation is required when the channel produced no publishable content:
|
|
1778
|
-
// completion is information independently of payload. A text stream that delivered
|
|
1779
|
-
// content retains its terse revisit marker; an empty text stream and every structured
|
|
1780
|
-
// channel emit a bodyless typed conclusion.
|
|
1781
|
-
if (terminal !== null) {
|
|
1782
|
-
const sequence = fromSequence + written;
|
|
1783
|
-
const content = cursor > 0 && baseMimetype(ch.mimetype).startsWith("text/")
|
|
1784
|
-
? `[ stream closed (${terminal.status}) - full output already delivered above; READ ${streamTarget} to revisit ]`
|
|
1785
|
-
: "";
|
|
1786
|
-
const rx = JSON.stringify(await terminalResult({
|
|
1787
|
-
content,
|
|
1788
|
-
mimetype: ch.mimetype,
|
|
1789
|
-
}, sequence));
|
|
1790
|
-
await this.#db.engine_insert_stream_delta.run({
|
|
1791
|
-
worker_id: workerId, loop_id: loopId, turn_id: turnId, sequence,
|
|
1792
|
-
subscription_publication_id: ch.publication_id,
|
|
1793
|
-
scheme: ch.runtime, hostname: targetParts.hostname, port: targetParts.port,
|
|
1794
|
-
pathname: ch.coord, fragment: visibleFragment,
|
|
1795
|
-
rx,
|
|
1796
|
-
weight: LogBody.weight({
|
|
1797
|
-
op: "READ",
|
|
1798
|
-
attrs: {},
|
|
1799
|
-
tx: "",
|
|
1800
|
-
rx,
|
|
1801
|
-
mimetypeTx: "text/plain",
|
|
1802
|
-
mimetypeRx: "application/json",
|
|
1803
|
-
}, this.#weighContent),
|
|
1804
|
-
status: terminal?.status ?? 200,
|
|
1805
|
-
attrs: JSON.stringify({ streamEnd: ch.content.length, terminal: true }),
|
|
1806
|
-
folded: LogVisibility.serialize(LogVisibility.OPEN),
|
|
1807
|
-
});
|
|
1808
|
-
written++;
|
|
1809
|
-
}
|
|
1790
|
+
// {§exec-stream} — nothing publishes while a stream is active: the Child Streams
|
|
1791
|
+
// section reports its size and growth ({§child-orientation}); the model READs any
|
|
1792
|
+
// range it wants. At close, ONE foisted READ that is exactly a markerless READ —
|
|
1793
|
+
// the first page, the extent, the terminal status and Problem — born OPEN. {§exec-stream-page}
|
|
1794
|
+
if (ch.state !== "closed" && ch.state !== "errored")
|
|
1810
1795
|
continue;
|
|
1811
|
-
|
|
1812
|
-
// startLine continues the line count across turns: a multi-turn stream's deltas number
|
|
1813
|
-
// into one sequence (lines N..M, then M+1..), not N independent "1:" restarts. {§exec-stream}
|
|
1814
|
-
const startLine = (ch.content.slice(0, cursor).match(/\n/g)?.length ?? 0) + 1;
|
|
1796
|
+
const terminal = Results.assert(JSON.parse(ch.producer_result ?? "null"));
|
|
1815
1797
|
const sequence = fromSequence + written;
|
|
1816
|
-
const
|
|
1817
|
-
const
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
:
|
|
1798
|
+
const page = await ReadResolve.resolve({ content: ch.content, mimetype: ch.mimetype, lineMarker: null });
|
|
1799
|
+
const result = Results.assert({
|
|
1800
|
+
...terminal,
|
|
1801
|
+
...(terminal.problem === undefined ? {} : { problem: { ...terminal.problem } }),
|
|
1802
|
+
content: page.content ?? "",
|
|
1803
|
+
mimetype: page.mimetype,
|
|
1804
|
+
...(page.startLine === undefined || page.startLine === null ? {} : { startLine: page.startLine }),
|
|
1805
|
+
...(page.range === undefined ? {} : { range: page.range }),
|
|
1806
|
+
});
|
|
1807
|
+
if (result.problem !== undefined) {
|
|
1808
|
+
const seqs = await this.#db.engine_loop_turn_seqs.get({
|
|
1809
|
+
loop_id: loopId,
|
|
1810
|
+
turn_id: turnId,
|
|
1811
|
+
});
|
|
1812
|
+
if (seqs === undefined)
|
|
1813
|
+
throw new Error(`stream delta has no log coordinate for loop=${loopId} turn=${turnId}`);
|
|
1814
|
+
Results.attachInstance(result, `log:///${seqs.loop_seq}/${seqs.turn_seq}/${sequence}/READ`);
|
|
1815
|
+
}
|
|
1822
1816
|
const rx = JSON.stringify(result);
|
|
1823
1817
|
await this.#db.engine_insert_stream_delta.run({
|
|
1824
1818
|
worker_id: workerId, loop_id: loopId, turn_id: turnId, sequence,
|
|
@@ -1834,9 +1828,9 @@ class TurnRunner {
|
|
|
1834
1828
|
mimetypeTx: "text/plain",
|
|
1835
1829
|
mimetypeRx: "application/json",
|
|
1836
1830
|
}, this.#weighContent),
|
|
1837
|
-
status:
|
|
1838
|
-
attrs: JSON.stringify({ streamEnd:
|
|
1839
|
-
folded: LogVisibility.serialize(
|
|
1831
|
+
status: terminal.status,
|
|
1832
|
+
attrs: JSON.stringify({ streamEnd: ch.content.length, terminal: true }),
|
|
1833
|
+
folded: LogVisibility.serialize(LogVisibility.OPEN), // {§exec-stream} — the conclusion is born OPEN
|
|
1840
1834
|
});
|
|
1841
1835
|
written++;
|
|
1842
1836
|
}
|