@corenel/harness 0.2.0 → 0.4.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 (163) hide show
  1. package/dist/acp/agentMap.d.ts +34 -0
  2. package/dist/acp/agentMap.d.ts.map +1 -0
  3. package/dist/acp/agentMap.js +110 -0
  4. package/dist/acp/agentMap.js.map +1 -0
  5. package/dist/acp/index.d.ts +4 -0
  6. package/dist/acp/index.d.ts.map +1 -0
  7. package/dist/acp/index.js +6 -0
  8. package/dist/acp/index.js.map +1 -0
  9. package/dist/acp/policyMap.d.ts +55 -0
  10. package/dist/acp/policyMap.d.ts.map +1 -0
  11. package/dist/acp/policyMap.js +121 -0
  12. package/dist/acp/policyMap.js.map +1 -0
  13. package/dist/acp/types.d.ts +41 -0
  14. package/dist/acp/types.d.ts.map +1 -0
  15. package/dist/acp/types.js +14 -0
  16. package/dist/acp/types.js.map +1 -0
  17. package/dist/api/backend.d.ts +39 -0
  18. package/dist/api/backend.d.ts.map +1 -0
  19. package/dist/api/backend.js +126 -0
  20. package/dist/api/backend.js.map +1 -0
  21. package/dist/api/client.d.ts +95 -0
  22. package/dist/api/client.d.ts.map +1 -0
  23. package/dist/api/client.js +212 -0
  24. package/dist/api/client.js.map +1 -0
  25. package/dist/api/fileMirrorSource.d.ts +24 -0
  26. package/dist/api/fileMirrorSource.d.ts.map +1 -0
  27. package/dist/api/fileMirrorSource.js +59 -0
  28. package/dist/api/fileMirrorSource.js.map +1 -0
  29. package/dist/api/mirror.d.ts +102 -0
  30. package/dist/api/mirror.d.ts.map +1 -0
  31. package/dist/api/mirror.js +204 -0
  32. package/dist/api/mirror.js.map +1 -0
  33. package/dist/api/mirrorScheduler.d.ts +56 -0
  34. package/dist/api/mirrorScheduler.d.ts.map +1 -0
  35. package/dist/api/mirrorScheduler.js +167 -0
  36. package/dist/api/mirrorScheduler.js.map +1 -0
  37. package/dist/compression.d.ts +15 -1
  38. package/dist/compression.d.ts.map +1 -1
  39. package/dist/compression.js +32 -1
  40. package/dist/compression.js.map +1 -1
  41. package/dist/core/loop.d.ts +12 -0
  42. package/dist/core/loop.d.ts.map +1 -1
  43. package/dist/core/loop.js +138 -14
  44. package/dist/core/loop.js.map +1 -1
  45. package/dist/core/spawn.d.ts +54 -0
  46. package/dist/core/spawn.d.ts.map +1 -0
  47. package/dist/core/spawn.js +58 -0
  48. package/dist/core/spawn.js.map +1 -0
  49. package/dist/dag/executeNode.js +2 -2
  50. package/dist/fileSchema.js +1 -1
  51. package/dist/guardrail/guardrail.js +1 -1
  52. package/dist/guardrail/index.js +7 -7
  53. package/dist/guardrail/permission-service.js +1 -1
  54. package/dist/guardrail/serialize.js +1 -1
  55. package/dist/guardrail/store.js +2 -2
  56. package/dist/install/lockfile.d.ts +79 -0
  57. package/dist/install/lockfile.d.ts.map +1 -0
  58. package/dist/install/lockfile.js +155 -0
  59. package/dist/install/lockfile.js.map +1 -0
  60. package/dist/install/store.d.ts +13 -0
  61. package/dist/install/store.d.ts.map +1 -0
  62. package/dist/install/store.js +38 -0
  63. package/dist/install/store.js.map +1 -0
  64. package/dist/log.d.ts.map +1 -1
  65. package/dist/log.js +6 -1
  66. package/dist/log.js.map +1 -1
  67. package/dist/prompts/config.js +2 -2
  68. package/dist/prompts/host.d.ts +4 -0
  69. package/dist/prompts/host.d.ts.map +1 -1
  70. package/dist/prompts/host.js.map +1 -1
  71. package/dist/prompts/index.d.ts.map +1 -1
  72. package/dist/prompts/index.js +13 -6
  73. package/dist/prompts/index.js.map +1 -1
  74. package/dist/prompts/library/defaults.generated.js +2 -2
  75. package/dist/prompts/library/defaults.generated.js.map +1 -1
  76. package/dist/prompts/library/index.js +1 -1
  77. package/dist/providers/contextWindow.d.ts +19 -0
  78. package/dist/providers/contextWindow.d.ts.map +1 -0
  79. package/dist/providers/contextWindow.js +68 -0
  80. package/dist/providers/contextWindow.js.map +1 -0
  81. package/dist/providers/gateway.d.ts +3 -0
  82. package/dist/providers/gateway.d.ts.map +1 -1
  83. package/dist/providers/gateway.js +4 -1
  84. package/dist/providers/gateway.js.map +1 -1
  85. package/dist/sessions/apiLeaseStore.d.ts +10 -0
  86. package/dist/sessions/apiLeaseStore.d.ts.map +1 -0
  87. package/dist/sessions/apiLeaseStore.js +41 -0
  88. package/dist/sessions/apiLeaseStore.js.map +1 -0
  89. package/dist/sessions/blobGc.d.ts +62 -0
  90. package/dist/sessions/blobGc.d.ts.map +1 -0
  91. package/dist/sessions/blobGc.js +154 -0
  92. package/dist/sessions/blobGc.js.map +1 -0
  93. package/dist/sessions/fileRecallStore.js +1 -1
  94. package/dist/sessions/fileSessionStore.js +1 -1
  95. package/dist/sessions/head.d.ts +90 -0
  96. package/dist/sessions/head.d.ts.map +1 -0
  97. package/dist/sessions/head.js +82 -0
  98. package/dist/sessions/head.js.map +1 -0
  99. package/dist/sessions/inflight.d.ts +58 -0
  100. package/dist/sessions/inflight.d.ts.map +1 -0
  101. package/dist/sessions/inflight.js +0 -0
  102. package/dist/sessions/inflight.js.map +1 -0
  103. package/dist/sessions/lease.d.ts +59 -0
  104. package/dist/sessions/lease.d.ts.map +1 -0
  105. package/dist/sessions/lease.js +115 -0
  106. package/dist/sessions/lease.js.map +1 -0
  107. package/dist/sessions/leaseStore.d.ts +46 -0
  108. package/dist/sessions/leaseStore.d.ts.map +1 -0
  109. package/dist/sessions/leaseStore.js +58 -0
  110. package/dist/sessions/leaseStore.js.map +1 -0
  111. package/dist/sessions/timeline.d.ts +134 -0
  112. package/dist/sessions/timeline.d.ts.map +1 -0
  113. package/dist/sessions/timeline.js +127 -0
  114. package/dist/sessions/timeline.js.map +1 -0
  115. package/dist/sidecar/host.d.ts +241 -5
  116. package/dist/sidecar/host.d.ts.map +1 -1
  117. package/dist/sidecar/host.js +630 -5
  118. package/dist/sidecar/host.js.map +1 -1
  119. package/dist/sidecar/server.d.ts +124 -2
  120. package/dist/sidecar/server.d.ts.map +1 -1
  121. package/dist/sidecar/server.js +620 -9
  122. package/dist/sidecar/server.js.map +1 -1
  123. package/dist/sidecar/wsChannel.d.ts +4 -0
  124. package/dist/sidecar/wsChannel.d.ts.map +1 -0
  125. package/dist/sidecar/wsChannel.js +62 -0
  126. package/dist/sidecar/wsChannel.js.map +1 -0
  127. package/dist/skills.js +2 -2
  128. package/dist/snapshot/effects.d.ts +69 -0
  129. package/dist/snapshot/effects.d.ts.map +1 -0
  130. package/dist/snapshot/effects.js +67 -0
  131. package/dist/snapshot/effects.js.map +1 -0
  132. package/dist/snapshot/manifest.d.ts +73 -0
  133. package/dist/snapshot/manifest.d.ts.map +1 -0
  134. package/dist/snapshot/manifest.js +141 -0
  135. package/dist/snapshot/manifest.js.map +1 -0
  136. package/dist/snapshot/tree.d.ts +62 -0
  137. package/dist/snapshot/tree.d.ts.map +1 -0
  138. package/dist/snapshot/tree.js +147 -0
  139. package/dist/snapshot/tree.js.map +1 -0
  140. package/dist/tools/builtins.d.ts.map +1 -1
  141. package/dist/tools/builtins.js +67 -8
  142. package/dist/tools/builtins.js.map +1 -1
  143. package/dist/tools/callAgent.d.ts +16 -0
  144. package/dist/tools/callAgent.d.ts.map +1 -0
  145. package/dist/tools/callAgent.js +53 -0
  146. package/dist/tools/callAgent.js.map +1 -0
  147. package/dist/tools/files.d.ts +10 -0
  148. package/dist/tools/files.d.ts.map +1 -1
  149. package/dist/tools/files.js +159 -8
  150. package/dist/tools/files.js.map +1 -1
  151. package/dist/tools/http.js +1 -1
  152. package/dist/tools/namespaces.d.ts +1 -1
  153. package/dist/tools/namespaces.d.ts.map +1 -1
  154. package/dist/tools/namespaces.js +40 -2
  155. package/dist/tools/namespaces.js.map +1 -1
  156. package/dist/tools/procs.d.ts +18 -0
  157. package/dist/tools/procs.d.ts.map +1 -0
  158. package/dist/tools/procs.js +281 -0
  159. package/dist/tools/procs.js.map +1 -0
  160. package/dist/tools/todo.d.ts.map +1 -1
  161. package/dist/tools/todo.js +12 -0
  162. package/dist/tools/todo.js.map +1 -1
  163. package/package.json +18 -7
@@ -0,0 +1,62 @@
1
+ /** path -> content hash. Sorted on serialize, so the same tree is the same text. */
2
+ export type Tree = Record<string, string>;
3
+ export interface TreeDelta {
4
+ /** Paths present now and absent from the parent. */
5
+ added: string[];
6
+ /** Paths in both, with different content. */
7
+ modified: string[];
8
+ /** Paths in the parent and gone now. A snapshot that cannot express deletion
9
+ * silently resurrects files on restore. */
10
+ removed: string[];
11
+ }
12
+ /** Canonical text form of a tree — sorted paths, trailing newline. */
13
+ export declare function serializeTree(tree: Tree): string;
14
+ export declare function parseTree(text: string): Tree | null;
15
+ /** What changed between two trees. Deterministic: every list is sorted. */
16
+ export declare function diffTrees(parent: Tree, current: Tree): TreeDelta;
17
+ /** True when nothing changed — worth checking before writing a snapshot nobody
18
+ * needs, and before shipping bytes across a wire. */
19
+ export declare function isEmptyDelta(d: TreeDelta): boolean;
20
+ /**
21
+ * The blob hashes a delta actually needs shipped.
22
+ *
23
+ * DEDUPED, which is the point of content addressing: two paths with identical
24
+ * content share one blob, so a copied file or a repeated boilerplate header costs
25
+ * nothing extra. Removals need no blob at all.
26
+ */
27
+ export declare function blobsForDelta(delta: TreeDelta, current: Tree): string[];
28
+ /**
29
+ * Apply a delta to a parent tree, producing the child tree.
30
+ *
31
+ * The inverse of diffTrees, and the restore path's core step. `hashes` supplies
32
+ * the content hash for every added/modified path — a delta alone does not carry
33
+ * them, because the tree it came from already did.
34
+ */
35
+ export declare function applyDelta(parent: Tree, delta: TreeDelta, hashes: Tree): Tree;
36
+ /**
37
+ * Collapse a lineage into one effective tree.
38
+ *
39
+ * `chain` runs oldest-first: a full snapshot's tree, then each descendant's
40
+ * delta. Restoring walks it forward rather than resolving parents recursively at
41
+ * read time, so a long chain costs one pass.
42
+ */
43
+ export declare function collapseChain(base: Tree, steps: readonly {
44
+ delta: TreeDelta;
45
+ hashes: Tree;
46
+ }[]): Tree;
47
+ /** Paths in a tree whose blobs are absent from `have` — what a restore must
48
+ * fetch before it can write anything. */
49
+ export declare function missingBlobs(tree: Tree, have: ReadonlySet<string>): string[];
50
+ /**
51
+ * Paths a snapshot must NOT capture.
52
+ *
53
+ * Session and run logs are Layer 3 and travel by reference (spec s4), so
54
+ * capturing them here would duplicate them and, worse, let a stale copy overwrite
55
+ * the live append-only log on restore — the exact clobber the single-writer rule
56
+ * exists to prevent. Blobs are the session's own offloaded outputs, referenced
57
+ * the same way.
58
+ */
59
+ export declare function isLayer3Path(path: string, stateDir: string): boolean;
60
+ /** Drop Layer 3 paths from a tree before diffing it. */
61
+ export declare function withoutLayer3(tree: Tree, stateDir: string): Tree;
62
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../snapshot/tree.ts"],"names":[],"mappings":"AAiBA,oFAAoF;AACpF,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1C,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;+CAC2C;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKhD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CASnD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,SAAS,CAahE;AAED;qDACqD;AACrD,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM,EAAE,CAOvE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,CAW7E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,EAAE,GAAG,IAAI,CAEpG;AAED;yCACyC;AACzC,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAM5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMpE;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMhE"}
@@ -0,0 +1,147 @@
1
+ /* Snapshot Layer 2 — the content-addressed file tree and the delta between two.
2
+ *
3
+ * A snapshot ships a DIFF, not a disk image. Spec s4: a raw microVM memory dump
4
+ * does not move between an Apple Silicon laptop and a Linux host, but a file diff
5
+ * does, and because the base is pinned by digest both ends provably start from
6
+ * identical ground. Typically megabytes, not gigabytes.
7
+ *
8
+ * This module is pure — no I/O, no crypto, no node. Hashing is the caller's
9
+ * (node:crypto server-side, SubtleCrypto in a browser), which is also what keeps
10
+ * one implementation serving both.
11
+ *
12
+ * It also gives `parent` a job. An earlier review flagged the manifest's lineage
13
+ * field as unused and asked whether to cut it; incremental snapshots are the use.
14
+ * The first snapshot of a session is full; each later one records only what
15
+ * changed since its parent, and a restore walks the chain back to a full one.
16
+ */
17
+ /** Canonical text form of a tree — sorted paths, trailing newline. */
18
+ export function serializeTree(tree) {
19
+ const keys = Object.keys(tree).sort();
20
+ const out = {};
21
+ for (const k of keys)
22
+ out[k] = tree[k];
23
+ return JSON.stringify(out, null, 2) + '\n';
24
+ }
25
+ export function parseTree(text) {
26
+ let parsed;
27
+ try {
28
+ parsed = JSON.parse(text);
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
34
+ return null;
35
+ const out = {};
36
+ for (const [k, v] of Object.entries(parsed)) {
37
+ if (typeof v === 'string' && v)
38
+ out[k] = v;
39
+ }
40
+ return out;
41
+ }
42
+ /** What changed between two trees. Deterministic: every list is sorted. */
43
+ export function diffTrees(parent, current) {
44
+ const added = [];
45
+ const modified = [];
46
+ const removed = [];
47
+ for (const [path, hash] of Object.entries(current)) {
48
+ const before = parent[path];
49
+ if (before === undefined)
50
+ added.push(path);
51
+ else if (before !== hash)
52
+ modified.push(path);
53
+ }
54
+ for (const path of Object.keys(parent)) {
55
+ if (current[path] === undefined)
56
+ removed.push(path);
57
+ }
58
+ return { added: added.sort(), modified: modified.sort(), removed: removed.sort() };
59
+ }
60
+ /** True when nothing changed — worth checking before writing a snapshot nobody
61
+ * needs, and before shipping bytes across a wire. */
62
+ export function isEmptyDelta(d) {
63
+ return d.added.length === 0 && d.modified.length === 0 && d.removed.length === 0;
64
+ }
65
+ /**
66
+ * The blob hashes a delta actually needs shipped.
67
+ *
68
+ * DEDUPED, which is the point of content addressing: two paths with identical
69
+ * content share one blob, so a copied file or a repeated boilerplate header costs
70
+ * nothing extra. Removals need no blob at all.
71
+ */
72
+ export function blobsForDelta(delta, current) {
73
+ const needed = new Set();
74
+ for (const path of [...delta.added, ...delta.modified]) {
75
+ const hash = current[path];
76
+ if (hash)
77
+ needed.add(hash);
78
+ }
79
+ return [...needed].sort();
80
+ }
81
+ /**
82
+ * Apply a delta to a parent tree, producing the child tree.
83
+ *
84
+ * The inverse of diffTrees, and the restore path's core step. `hashes` supplies
85
+ * the content hash for every added/modified path — a delta alone does not carry
86
+ * them, because the tree it came from already did.
87
+ */
88
+ export function applyDelta(parent, delta, hashes) {
89
+ const out = { ...parent };
90
+ for (const path of delta.removed)
91
+ delete out[path];
92
+ for (const path of [...delta.added, ...delta.modified]) {
93
+ const hash = hashes[path];
94
+ // A delta naming a path with no hash is corrupt; skipping it would silently
95
+ // produce a tree that does not match the snapshot's own tree hash, which the
96
+ // caller can then detect. Better a detectable mismatch than invented content.
97
+ if (hash)
98
+ out[path] = hash;
99
+ }
100
+ return out;
101
+ }
102
+ /**
103
+ * Collapse a lineage into one effective tree.
104
+ *
105
+ * `chain` runs oldest-first: a full snapshot's tree, then each descendant's
106
+ * delta. Restoring walks it forward rather than resolving parents recursively at
107
+ * read time, so a long chain costs one pass.
108
+ */
109
+ export function collapseChain(base, steps) {
110
+ return steps.reduce((acc, step) => applyDelta(acc, step.delta, step.hashes), { ...base });
111
+ }
112
+ /** Paths in a tree whose blobs are absent from `have` — what a restore must
113
+ * fetch before it can write anything. */
114
+ export function missingBlobs(tree, have) {
115
+ const missing = new Set();
116
+ for (const hash of Object.values(tree)) {
117
+ if (!have.has(hash))
118
+ missing.add(hash);
119
+ }
120
+ return [...missing].sort();
121
+ }
122
+ /**
123
+ * Paths a snapshot must NOT capture.
124
+ *
125
+ * Session and run logs are Layer 3 and travel by reference (spec s4), so
126
+ * capturing them here would duplicate them and, worse, let a stale copy overwrite
127
+ * the live append-only log on restore — the exact clobber the single-writer rule
128
+ * exists to prevent. Blobs are the session's own offloaded outputs, referenced
129
+ * the same way.
130
+ */
131
+ export function isLayer3Path(path, stateDir) {
132
+ const p = path.replace(/^\.\//, '');
133
+ return p.startsWith(`${stateDir}/sessions/`)
134
+ || p.startsWith(`${stateDir}/runs/`)
135
+ || p === `${stateDir}/blobs`
136
+ || p.startsWith(`${stateDir}/blobs/`);
137
+ }
138
+ /** Drop Layer 3 paths from a tree before diffing it. */
139
+ export function withoutLayer3(tree, stateDir) {
140
+ const out = {};
141
+ for (const [path, hash] of Object.entries(tree)) {
142
+ if (!isLayer3Path(path, stateDir))
143
+ out[path] = hash;
144
+ }
145
+ return out;
146
+ }
147
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../../snapshot/tree.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../tools/builtins.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAwDhE,eAAO,MAAM,eAAe,EAAE,SA2D7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAyB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAa9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAWvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAkBvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAgB9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAiDzB,CAAC;AAiBF,eAAO,MAAM,cAAc,EAAE,SA6B5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SA6C7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAoB3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAgC/B,CAAC;AAEF;gFACgF;AAChF,eAAO,MAAM,YAAY,EAAE,SAAS,EAgBnC,CAAC;AAEF;;;+DAG+D;AAC/D,wBAAgB,QAAQ,IAAI,SAAS,EAAE,CAEtC"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../tools/builtins.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAwDhE,eAAO,MAAM,eAAe,EAAE,SA0F7B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAyB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAa9B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAWvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAkBvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SA6B9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAgEzB,CAAC;AAiBF,eAAO,MAAM,cAAc,EAAE,SA6B5B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SA6C7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAoB3B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,SAgC/B,CAAC;AAEF;gFACgF;AAChF,eAAO,MAAM,YAAY,EAAE,SAAS,EAgBnC,CAAC;AAEF;;;+DAG+D;AAC/D,wBAAgB,QAAQ,IAAI,SAAS,EAAE,CAEtC"}
@@ -1,9 +1,9 @@
1
- import { extensionTools } from './registry';
2
- import { fileTools } from './files';
3
- import { webSearchTool } from './web';
4
- import { todoWriteTool } from './todo';
5
- import { searchSessionsTool } from './sessions';
6
- import { compilePrompt } from '../promptCompiler';
1
+ import { extensionTools } from './registry.js';
2
+ import { fileTools } from './files.js';
3
+ import { webSearchTool } from './web.js';
4
+ import { todoWriteTool } from './todo.js';
5
+ import { searchSessionsTool } from './sessions.js';
6
+ import { compilePrompt } from '../promptCompiler.js';
7
7
  function str(args, key) {
8
8
  const v = args[key];
9
9
  return typeof v === 'string' ? v : v == null ? '' : String(v);
@@ -54,7 +54,9 @@ async function prmdCompileError(content, ctx) {
54
54
  }
55
55
  export const proposeEditTool = {
56
56
  name: 'propose_edit',
57
- description: 'Propose a replacement for the current editor file. The user reviews a diff and applies or rejects it — ' +
57
+ description: 'Propose a replacement for the CURRENTLY OPEN editor file. It takes no path and can only ever replace that '
58
+ + 'one file, so never use it to create a new file or to edit a different one — use create_file or write_file '
59
+ + 'for those. The user reviews a diff and applies or rejects it — ' +
58
60
  'this does NOT write the file directly. Provide the COMPLETE new file content (not a patch) plus a short ' +
59
61
  'explanation. Use the editor file shown in the system context as the basis. This call WAITS for the review ' +
60
62
  'and returns the outcome: applied, partially applied (with the rejected changes), or rejected — rely on ' +
@@ -64,11 +66,40 @@ export const proposeEditTool = {
64
66
  properties: {
65
67
  explanation: { type: 'string', description: 'One line describing the change.' },
66
68
  new_content: { type: 'string', description: 'The full proposed file content.' },
69
+ path: { type: 'string', description: 'The file being replaced. Must be the file currently open in the editor.' },
67
70
  },
68
- required: ['explanation', 'new_content'],
71
+ required: ['explanation', 'new_content', 'path'],
69
72
  },
70
73
  async run(args, ctx) {
71
74
  const explanation = str(args, 'explanation') || 'Proposed an edit';
75
+ // Fail closed with no open file. This tool carries NO target path -- it replaces
76
+ // whatever the editor has open -- so without one there is nothing to diff
77
+ // against. Proposing anyway showed the user an empty diff, and (worse) content
78
+ // meant for a NEW file got diffed against an unrelated open document, where
79
+ // accepting would have overwritten it. Point the model at the tools that take
80
+ // an explicit path instead.
81
+ if (!ctx.editorFile) {
82
+ return 'Cannot propose an edit: no file is open in the editor, and propose_edit only replaces the open file. '
83
+ + 'To create a new file use create_file, and to overwrite an existing one use write_file — both take an explicit path.';
84
+ }
85
+ // The target is explicit and must be the open file. Before `path` existed this
86
+ // tool meant "the open file" implicitly, so a proposal authored for some OTHER
87
+ // file was silently diffed against whatever was open -- and accepting wrote the
88
+ // wrong content into it. Stating the target makes that mismatch impossible
89
+ // rather than merely unlikely.
90
+ const target = str(args, 'path');
91
+ if (!target) {
92
+ return `Cannot propose an edit: propose_edit needs a path, and it must be the open file (${ctx.editorFile}). `
93
+ + 'To create a new file use create_file, or to overwrite a different one use write_file.';
94
+ }
95
+ // Compare on a normalized form so a Windows path or a leading ./ is not a false
96
+ // mismatch — but nothing looser than that: matching on the basename alone would
97
+ // accept a/welcome.prmd for b/welcome.prmd, which is the very confusion this guards.
98
+ const norm = (p) => p.trim().replace(/\\/g, '/').replace(/^\.\//, '');
99
+ if (norm(target) !== norm(ctx.editorFile)) {
100
+ return `Cannot propose an edit: the open file is ${ctx.editorFile}, but this proposal targets ${target}. `
101
+ + 'propose_edit can only replace the open file. Use create_file for a new file, or write_file to overwrite a different one.';
102
+ }
72
103
  // The diff + apply happen on the main thread (the panel renders the proposal
73
104
  // from this tool call). Block until the user decides so later turns can rely
74
105
  // on the outcome. Without a reviewer (sub-agents, DAG nodes, headless runs)
@@ -180,6 +211,19 @@ export const kvSetTool = {
180
211
  export const recallResultTool = {
181
212
  name: 'recall_result',
182
213
  noOffload: true, // recalling a large result must never re-offload itself
214
+ /* DECLARED, like todo_write's and ask_user's. This one grants no new access at
215
+ * all: it reads back a tool result THIS SESSION ALREADY PRODUCED, which means
216
+ * the original call already passed the policy check that produced it. The
217
+ * store is session-scoped (`<root>/<sessionId>/blobs/<id>.json`) and the id
218
+ * shape is validated, so it cannot reach another session's data or escape the
219
+ * directory.
220
+ *
221
+ * The deciding argument is that offloading is a CONTEXT-MANAGEMENT detail,
222
+ * triggered by size. Gating recall means the same information costs an
223
+ * approval prompt depending on how large it happened to be - a performance
224
+ * heuristic leaking into governance, and an approval the user cannot act on
225
+ * meaningfully because they already approved the thing that produced it. */
226
+ permission: 'allow',
183
227
  description: 'Fetch the full content of a tool result that was offloaded to save context. ' +
184
228
  'You saw an "[offloaded tool result … recall_result({ id })]" reference — pass that id.',
185
229
  parameters: {
@@ -196,6 +240,21 @@ export const recallResultTool = {
196
240
  export const askUserTool = {
197
241
  name: 'ask_user',
198
242
  noOffload: true,
243
+ /* DECLARED, like todo_write's. Gating this behind an approval prompt is asking
244
+ * the user for permission to ask the user a question — two dialogs for one
245
+ * decision, the first of which carries no information.
246
+ *
247
+ * It changes nothing outside the run: no file, no network, no state. Its whole
248
+ * effect is to put a question in front of a person who is already there.
249
+ *
250
+ * Nothing depended on its previous `ask` tier. The case that looks like it
251
+ * might — an unattended run parking forever on a question nobody will answer —
252
+ * is handled by EXCLUSION rather than by permission: CREW_EXCLUDED_TOOLS drops
253
+ * ask_user from every crew agent (see @corenel/crew's capabilities.ts), and the
254
+ * daemon's executor honours the same set. On a surface where it IS offered,
255
+ * someone is by definition attending. And with no `ask` handler wired, `run`
256
+ * already returns "unavailable in this environment" rather than hanging. */
257
+ permission: 'allow',
199
258
  description: 'Ask the user one or more questions when you need a decision you cannot make from context — to choose ' +
200
259
  'between approaches, get a missing requirement, or confirm direction. Prefer this over guessing. Give each ' +
201
260
  'question a short `header` (a chip label), the `question` text, and 2–4 distinct `options` (each with a ' +
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../tools/builtins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../tools/builtins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { AgentTool } from '@corenel/protocol';
2
+ export interface CallAgentOpts {
3
+ canCall: string[];
4
+ /** The callee's composed system prompt, or null if there is no such agent.
5
+ *
6
+ * Deliberately the SYSTEM STRING rather than the definition, so both hosts
7
+ * satisfy it: the sidecar reads the definition off disk and composes it, while
8
+ * the browser worker (which cannot see a global agent's config workspace) is
9
+ * handed identities the main thread already resolved. */
10
+ resolveSystem: (name: string) => Promise<string | null>;
11
+ /** The tool names the callee may use, from the CALLER's live registry — so a
12
+ * callee inherits MCP and sidecar tools. `call_agent` is dropped from it. */
13
+ calleeTools: () => string[];
14
+ }
15
+ export declare function makeCallAgentTool(opts: CallAgentOpts): AgentTool;
16
+ //# sourceMappingURL=callAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callAgent.d.ts","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;6DAKyD;IACzD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;iFAC6E;IAC7E,WAAW,EAAE,MAAM,MAAM,EAAE,CAAC;CAC7B;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,CA6ChE"}
@@ -0,0 +1,53 @@
1
+ function str(v) { return typeof v === 'string' ? v.trim() : ''; }
2
+ export function makeCallAgentTool(opts) {
3
+ const allowed = opts.canCall.filter(Boolean);
4
+ const list = allowed.join(', ') || '(none)';
5
+ return {
6
+ name: 'call_agent',
7
+ mutates: true,
8
+ noOffload: true,
9
+ description: 'Delegate a self-contained task to one of the named agents you may call, and get its result. ' +
10
+ `You may call: ${list}. The callee runs with its own role and persona, using a standard tool ` +
11
+ 'surface within your governed envelope, and returns its final answer.',
12
+ parameters: {
13
+ type: 'object',
14
+ properties: {
15
+ agent: { type: 'string', description: `The agent to call. One of: ${list}.` },
16
+ message: { type: 'string', description: 'The self-contained task for the callee.' },
17
+ },
18
+ required: ['agent', 'message'],
19
+ },
20
+ async run(args, ctx) {
21
+ const agent = str(args.agent);
22
+ const message = str(args.message);
23
+ if (!agent)
24
+ return 'Provide the `agent` to call.';
25
+ if (!allowed.includes(agent))
26
+ return `You may not call "${agent}". Allowed: ${list}.`;
27
+ if (!message)
28
+ return 'Provide a non-empty `message` (the task for the callee).';
29
+ if (!ctx.spawn)
30
+ return 'Cannot delegate to another agent here (delegation depth limit reached).';
31
+ const system = await opts.resolveSystem(agent);
32
+ if (system == null)
33
+ return `Agent "${agent}" was not found.`;
34
+ const req = {
35
+ task: message,
36
+ system,
37
+ // The callee's governed surface, minus call_agent. The caller supplies
38
+ // names from the already deny-filtered registry, so spawn_agent /
39
+ // spawn_agents are gone too — the callee has no delegation tool at all,
40
+ // making delegation genuinely one level, not just "no call_agent".
41
+ tools: opts.calleeTools().filter((n) => n !== 'call_agent'),
42
+ };
43
+ try {
44
+ const r = await ctx.spawn(req);
45
+ return `${r.text}\n\n[${agent}: ${r.turns} turn(s), ${r.stopReason}]`;
46
+ }
47
+ catch (e) {
48
+ return `call_agent(${agent}) failed. Error: ${e instanceof Error ? e.message : String(e)}`;
49
+ }
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=callAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callAgent.js","sourceRoot":"","sources":["../../tools/callAgent.ts"],"names":[],"mappings":"AAkCA,SAAS,GAAG,CAAC,CAAU,IAAY,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAElF,MAAM,UAAU,iBAAiB,CAAC,IAAmB;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAC5C,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAI;QACf,WAAW,EACT,8FAA8F;YAC9F,iBAAiB,IAAI,yEAAyE;YAC9F,sEAAsE;QACxE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,IAAI,GAAG,EAAE;gBAC7E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;aACpF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;SAC/B;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG;YACjB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,OAAO,8BAA8B,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,qBAAqB,KAAK,eAAe,IAAI,GAAG,CAAC;YACtF,IAAI,CAAC,OAAO;gBAAE,OAAO,0DAA0D,CAAC;YAChF,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,OAAO,yEAAyE,CAAC;YACjG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,IAAI,IAAI;gBAAE,OAAO,UAAU,KAAK,kBAAkB,CAAC;YAC7D,MAAM,GAAG,GAAoB;gBAC3B,IAAI,EAAE,OAAO;gBACb,MAAM;gBACN,uEAAuE;gBACvE,kEAAkE;gBAClE,wEAAwE;gBACxE,mEAAmE;gBACnE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC;aAC5D,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,GAAG,CAAC,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,UAAU,GAAG,CAAC;YACxE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,cAAc,KAAK,oBAAoB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,14 @@
1
1
  import type { AgentTool } from '@corenel/protocol';
2
+ /** Cap on entries a single `list_files` call returns. A stranger typing `ls` in
3
+ * a large repo (no `dir`) got the WHOLE tree back — 4,369 entries in one real
4
+ * run, an 87K-token prompt on the very next model call. A few hundred entries
5
+ * is plenty to orient in a repo (see any file's immediate siblings, spot the
6
+ * top-level layout) without paying for the whole thing; 300 is that number —
7
+ * generous enough that an ordinary project's top few levels fit whole, small
8
+ * enough that a monorepo's `node_modules`-scale sprawl can't leak through
9
+ * uncapped. Every host (browser, node CLI, sidecar) shares this file, so the
10
+ * cap applies uniformly rather than per-host. */
11
+ export declare const LIST_FILES_MAX_ENTRIES = 300;
2
12
  export declare const listFilesTool: AgentTool;
3
13
  export declare const readFileTool: AgentTool;
4
14
  export declare const statFileTool: AgentTool;
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../tools/files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AA8BhE,eAAO,MAAM,aAAa,EAAE,SAe3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAY1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAc1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAa7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAqB3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAmB5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAgB5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAqB5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,EAShC,CAAC"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../tools/files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AA8DhE;;;;;;;;iDAQiD;AACjD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAuG1C,eAAO,MAAM,aAAa,EAAE,SA+B3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAY1B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,SAc1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,SAa7B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAqB3B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAmB5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAgB5B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAqB5B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAAS,EAShC,CAAC"}