@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.
Files changed (71) hide show
  1. package/.env.defaults +3 -5
  2. package/SPEC.md +69 -32
  3. package/dist/build-info.json +1 -1
  4. package/dist/core/BranchReceipt.d.ts.map +1 -1
  5. package/dist/core/BranchReceipt.js +9 -4
  6. package/dist/core/BranchReceipt.js.map +1 -1
  7. package/dist/core/CoreSchemeServices.d.ts +1 -0
  8. package/dist/core/CoreSchemeServices.d.ts.map +1 -1
  9. package/dist/core/CoreSchemeServices.js +1 -0
  10. package/dist/core/CoreSchemeServices.js.map +1 -1
  11. package/dist/core/Dispatcher.d.ts +2 -1
  12. package/dist/core/Dispatcher.d.ts.map +1 -1
  13. package/dist/core/Dispatcher.js +49 -13
  14. package/dist/core/Dispatcher.js.map +1 -1
  15. package/dist/core/Engine.d.ts +3 -1
  16. package/dist/core/Engine.d.ts.map +1 -1
  17. package/dist/core/Engine.js +18 -17
  18. package/dist/core/Engine.js.map +1 -1
  19. package/dist/core/Engine.sql +34 -10
  20. package/dist/core/LoopPacket.d.ts +3 -0
  21. package/dist/core/LoopPacket.d.ts.map +1 -0
  22. package/dist/core/LoopPacket.js +2 -0
  23. package/dist/core/LoopPacket.js.map +1 -0
  24. package/dist/core/NoticeChannel.d.ts.map +1 -1
  25. package/dist/core/NoticeChannel.js +14 -2
  26. package/dist/core/NoticeChannel.js.map +1 -1
  27. package/dist/core/PacketBuilder.d.ts.map +1 -1
  28. package/dist/core/PacketBuilder.js +9 -2
  29. package/dist/core/PacketBuilder.js.map +1 -1
  30. package/dist/core/ResourceMutations.d.ts.map +1 -1
  31. package/dist/core/ResourceMutations.js +21 -3
  32. package/dist/core/ResourceMutations.js.map +1 -1
  33. package/dist/core/TerminalResult.d.ts.map +1 -1
  34. package/dist/core/TerminalResult.js +4 -1
  35. package/dist/core/TerminalResult.js.map +1 -1
  36. package/dist/core/ToolResources.js +4 -4
  37. package/dist/core/ToolResources.js.map +1 -1
  38. package/dist/core/TurnOps.d.ts.map +1 -1
  39. package/dist/core/TurnOps.js +3 -0
  40. package/dist/core/TurnOps.js.map +1 -1
  41. package/dist/core/TurnRunner.d.ts +3 -1
  42. package/dist/core/TurnRunner.d.ts.map +1 -1
  43. package/dist/core/TurnRunner.js +153 -159
  44. package/dist/core/TurnRunner.js.map +1 -1
  45. package/dist/core/packet-wire.d.ts.map +1 -1
  46. package/dist/core/packet-wire.js +5 -1
  47. package/dist/core/packet-wire.js.map +1 -1
  48. package/dist/core/scheme-types.d.ts +1 -0
  49. package/dist/core/scheme-types.d.ts.map +1 -1
  50. package/dist/schemes/Exec.d.ts.map +1 -1
  51. package/dist/schemes/Exec.js +26 -16
  52. package/dist/schemes/Exec.js.map +1 -1
  53. package/dist/schemes/_entry-find.d.ts.map +1 -1
  54. package/dist/schemes/_entry-find.js +24 -4
  55. package/dist/schemes/_entry-find.js.map +1 -1
  56. package/dist/schemes/_entry-graph.js +1 -1
  57. package/dist/schemes/_entry-graph.js.map +1 -1
  58. package/dist/schemes/_entry-send.d.ts.map +1 -1
  59. package/dist/schemes/_entry-send.js +3 -1
  60. package/dist/schemes/_entry-send.js.map +1 -1
  61. package/dist/schemes/_search-index.d.ts +1 -1
  62. package/dist/schemes/_search-index.d.ts.map +1 -1
  63. package/dist/schemes/_search-index.js +39 -35
  64. package/dist/schemes/_search-index.js.map +1 -1
  65. package/dist/server/Daemon.d.ts.map +1 -1
  66. package/dist/server/Daemon.js +4 -0
  67. package/dist/server/Daemon.js.map +1 -1
  68. package/dist/server/branch-batch.sql +4 -2
  69. package/dist/server/seam-loop.sql +5 -1
  70. package/migrations/001_schema.sql +4 -1
  71. 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
- const heading = `## EXEC0 [${runtime}]${target === undefined ? "" : ` (${PathSyntax.escapeTarget(target)})`}`
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,CAuB1E;IAED,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAqBtD;CACJ"}
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"}
@@ -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)
@@ -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,EAAsF,MAAM,0BAA0B,CAAC;AAKnK,KAAK,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAMxF,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAMlC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAIvD,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,MAKsB,CAAC;AAOhF,OAAgB,EAAyB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjF,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAC;AAK9D,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAC/C,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,UAAU,EAAE,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,aAAa,EAAE,EAAE,KAAK,WAAW,EAAyB,MAAM,oBAAoB,CAAC;AAE5F,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAiHvE,OAAO,KAAK,EAER,QAAQ,EAGR,8BAA8B,EAEjC,MAAM,0BAA0B,CAAC;AAsDlC,KAAK,gBAAgB,GAAG;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,eAAe,CAAC,EAAE,YAAY,CAAC;CAClC,GAAG,CACE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GACxC;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAC9C,CAAC;AAQF,KAAK,aAAa,GAAG;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CAC5C,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CACjC,CAAC;AAiCF,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAC1E,KAAK,aAAa,GAAG,CACjB,OAAO,EAAE,mBAAmB,EAC5B,UAAU,CAAC,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,OAAO,KACpB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,MAAM,CAAC,OAAO,OAAO,UAAU;;IAyB3B,YAAY,EACR,EAAE,EACF,OAAO,EACP,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,6BAA6B,GAChC,EAAE;QACC,EAAE,EAAE,EAAE,CAAC;QACP,OAAO,EAAE,cAAc,CAAC;QACxB,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;QAChC,OAAO,EAAE,aAAa,CAAC;QACvB,QAAQ,EAAE,UAAU,CAAC;QACrB,OAAO,EAAE,UAAU,CAAC;QACpB,OAAO,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,UAAU,CAAC;QACvB,iBAAiB,EAAE,iBAAiB,CAAC;QACrC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;QACtC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;QAC5C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,SAAS,EAAE,MAAM,gBAAgB,GAAG,SAAS,CAAC;QAC9C,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;QACxD,YAAY,EAAE,kBAAkB,CAAC;QACjC,aAAa,EAAE,aAAa,CAAC;QAC7B,QAAQ,EAAE,YAAY,CAAC;QACvB,6BAA6B,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;YACzD,QAAQ,EAAE,MAAM,CAAC;YACjB,eAAe,EAAE,MAAM,CAAC;SAC3B,CAAC,CAAC;KACN,EAoBA;IA6PK,mBAAmB,CAAC,EACtB,UAAU,EACV,MAAM,EACN,YAAY,EACZ,iBAAwB,EACxB,oBAAoB,EACpB,MAAM,EACN,WAAW,EACX,QAAQ,EACR,MAAM,EACN,MAAM,EACN,YAAY,EACZ,WAAsC,EACtC,WAAmB,EACnB,oBAA4B,EAC5B,sBAA2B,EAC3B,IAAI,EACJ,MAAM,EACN,UAAU,GACb,EAAE;QACC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;QACvC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,oBAAoB,CAAC,EAAE,aAAa,CAAC,8BAA8B,CAAC,CAAC;QACrE,MAAM,EAAE,UAAU,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,sBAAsB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,EAAE,aAAa,CAAC;QACrB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;KAC7C,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiO9B;IAGK,OAAO,CAAC,EACV,QAAQ,EAAE,aAAwB,EAAE,QAAQ,EAAE,YAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAClH,UAAc,EAAE,QAAa,EAAE,8BAA8B,GAChE,EAAE;QACC,QAAQ,EAAE,QAAQ,CAAC;QACnB,aAAa,CAAC,EAAE,QAAQ,CAAC;QACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;QAExB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QACtD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;QAG1C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAGlB,8BAA8B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAClD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAy7B5B;CAugBJ"}
1
+ {"version":3,"file":"TurnRunner.d.ts","sourceRoot":"","sources":["../../src/core/TurnRunner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  var _a;
2
- import { PathSyntax, PlurnkParser, PlurnkParseError, UNKNOWN_POSITION } from "@plurnk/plurnk-contracts";
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 { authorityParts, generatedPathname, promptPathname, promptLoopPrefix, renderAddress } from "./plurnk-uri.js";
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 servers
741
- // contribute one complete family-document READ each, directly
742
- // after the family survey, so turn 0 names every tool they
743
- // expose in order. (The family document is the whole tool
744
- // teaching — per-target child documents do not exist.)
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: "READ", delimiter: "", annotation: `enabled tools: ${tag}`, signal: ["+_plurnk", "+init", "+tools"],
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: null, lineMarker: { marks: [1, -1] }, position: UNKNOWN_POSITION,
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 (turnNumber === 1 && loopRow?.prompt_published === 0) {
867
- const promptRow = loopRow; // {§prompt-entry} — one durable publication per loop
868
- if (promptRow !== undefined && typeof promptRow.prompt === "string" && promptRow.prompt.length > 0) {
869
- const openPaths = assertOpenPaths(JSON.parse(promptRow.open_paths), `Loop ${loopId} open_paths`);
870
- const promptLoopSeq = promptRow.sequence;
871
- const promptPath = promptTarget(promptLoopSeq, 1);
872
- const entry = {
873
- channels: { body: { content: promptRow.prompt, mimetype: "text/markdown" } },
874
- attributes: {
875
- openPaths,
876
- ...(promptRow.prompt_source === null ? {} : { source: promptRow.prompt_source }),
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 Turn.recordInference(this.#db, turnId, {
1273
- packet: StoredPacket.stringify(requestPacket),
1274
- usageCurationBudget: this.#packets.curationBudgetFor(provider),
1275
- finishReason: splitResponse?.callMetadata.finishReason ?? null,
1276
- model: splitResponse?.callMetadata.model ?? provider.model,
1277
- meta: JSON.stringify(response?.meta ?? {}),
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 Turn.recordInference(this.#db, turnId, {
1295
- packet: StoredPacket.stringify(requestPacket),
1296
- usageCurationBudget: this.#packets.curationBudgetFor(provider),
1297
- finishReason: splitResponse?.callMetadata.finishReason ?? null,
1298
- model: splitResponse?.callMetadata.model ?? provider.model,
1299
- meta: JSON.stringify(response?.meta ?? {}),
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: INVALID_EMISSION_RECOVERY_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 Turn.recordInference(this.#db, turnId, {
1349
- packet: StoredPacket.stringify(requestPacket),
1350
- usageCurationBudget: this.#packets.curationBudgetFor(provider),
1351
- finishReason: splitResponse.callMetadata.finishReason,
1352
- model: splitResponse.callMetadata.model,
1353
- meta: JSON.stringify(response.meta ?? {}),
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 Turn.recordInference(this.#db, turnId, {
1439
- packet: StoredPacket.stringify(packet),
1440
- usageCurationBudget: this.#packets.curationBudgetFor(provider), // {§tokenomics-client-gauge}
1441
- finishReason: callMetadata.finishReason,
1442
- model: callMetadata.model,
1443
- // Opaque provider metadata plus engine-authored rail keys.
1444
- // {§meta-passthrough}, {§rail-truth-engine-verdict}
1445
- meta: JSON.stringify({ ...(response.meta ?? {}), ...(railKeys ?? {}) }),
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
- const cursor = ch.published_end;
1748
- const closed = ch.state === "closed" || ch.state === "errored";
1749
- const terminal = closed
1750
- ? Results.assert(JSON.parse(ch.producer_result ?? "null"))
1751
- : null;
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 content = ch.content.slice(cursor, publishEnd);
1817
- const terminalDelivery = closed && publishEnd === ch.content.length;
1818
- const fields = { content, mimetype: ch.mimetype, startLine };
1819
- const result = terminalDelivery
1820
- ? await terminalResult(fields, sequence)
1821
- : { status: 200, ...fields };
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: result.status,
1838
- attrs: JSON.stringify({ streamEnd: publishEnd, terminal: terminalDelivery }),
1839
- folded: LogVisibility.serialize(terminalDelivery ? LogVisibility.OPEN : LogVisibility.FOLDED), // {§exec-stream} — terminal observation auto-OPENs; ongoing folds
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
  }