@corenel/harness 0.10.0 → 0.12.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 (251) hide show
  1. package/dist/approvals/decisionLog.d.ts +21 -0
  2. package/dist/approvals/decisionLog.d.ts.map +1 -0
  3. package/dist/approvals/decisionLog.js +129 -0
  4. package/dist/approvals/decisionLog.js.map +1 -0
  5. package/dist/approvals/hooks.d.ts +18 -0
  6. package/dist/approvals/hooks.d.ts.map +1 -0
  7. package/dist/approvals/hooks.js +34 -0
  8. package/dist/approvals/hooks.js.map +1 -0
  9. package/dist/approvals/index.d.ts +10 -0
  10. package/dist/approvals/index.d.ts.map +1 -0
  11. package/dist/approvals/index.js +10 -0
  12. package/dist/approvals/index.js.map +1 -0
  13. package/dist/approvals/service.d.ts +46 -0
  14. package/dist/approvals/service.d.ts.map +1 -0
  15. package/dist/approvals/service.js +181 -0
  16. package/dist/approvals/service.js.map +1 -0
  17. package/dist/approvals/settings.d.ts +20 -0
  18. package/dist/approvals/settings.d.ts.map +1 -0
  19. package/dist/approvals/settings.js +32 -0
  20. package/dist/approvals/settings.js.map +1 -0
  21. package/dist/approvals/shellTools.d.ts +10 -0
  22. package/dist/approvals/shellTools.d.ts.map +1 -0
  23. package/dist/approvals/shellTools.js +17 -0
  24. package/dist/approvals/shellTools.js.map +1 -0
  25. package/dist/approvals/standingStore.d.ts +15 -0
  26. package/dist/approvals/standingStore.d.ts.map +1 -0
  27. package/dist/approvals/standingStore.js +50 -0
  28. package/dist/approvals/standingStore.js.map +1 -0
  29. package/dist/approvals/suggest.d.ts +15 -0
  30. package/dist/approvals/suggest.d.ts.map +1 -0
  31. package/dist/approvals/suggest.js +23 -0
  32. package/dist/approvals/suggest.js.map +1 -0
  33. package/dist/approvals/summarize.d.ts +7 -0
  34. package/dist/approvals/summarize.d.ts.map +1 -0
  35. package/dist/approvals/summarize.js +70 -0
  36. package/dist/approvals/summarize.js.map +1 -0
  37. package/dist/approvals/testTextStore.d.ts +6 -0
  38. package/dist/approvals/testTextStore.d.ts.map +1 -0
  39. package/dist/approvals/testTextStore.js +11 -0
  40. package/dist/approvals/testTextStore.js.map +1 -0
  41. package/dist/approvals/textStore.d.ts +9 -0
  42. package/dist/approvals/textStore.d.ts.map +1 -0
  43. package/dist/approvals/textStore.js +2 -0
  44. package/dist/approvals/textStore.js.map +1 -0
  45. package/dist/audit/canonical.d.ts +5 -0
  46. package/dist/audit/canonical.d.ts.map +1 -0
  47. package/dist/audit/canonical.js +15 -0
  48. package/dist/audit/canonical.js.map +1 -0
  49. package/dist/audit/ids.d.ts +3 -0
  50. package/dist/audit/ids.d.ts.map +1 -0
  51. package/dist/audit/ids.js +11 -0
  52. package/dist/audit/ids.js.map +1 -0
  53. package/dist/audit/index.d.ts +7 -0
  54. package/dist/audit/index.d.ts.map +1 -0
  55. package/dist/audit/index.js +7 -0
  56. package/dist/audit/index.js.map +1 -0
  57. package/dist/audit/log.d.ts +64 -0
  58. package/dist/audit/log.d.ts.map +1 -0
  59. package/dist/audit/log.js +457 -0
  60. package/dist/audit/log.js.map +1 -0
  61. package/dist/audit/recorder.d.ts +31 -0
  62. package/dist/audit/recorder.d.ts.map +1 -0
  63. package/dist/audit/recorder.js +185 -0
  64. package/dist/audit/recorder.js.map +1 -0
  65. package/dist/audit/runAudit.d.ts +38 -0
  66. package/dist/audit/runAudit.d.ts.map +1 -0
  67. package/dist/audit/runAudit.js +99 -0
  68. package/dist/audit/runAudit.js.map +1 -0
  69. package/dist/audit/verify.d.ts +14 -0
  70. package/dist/audit/verify.d.ts.map +1 -0
  71. package/dist/audit/verify.js +47 -0
  72. package/dist/audit/verify.js.map +1 -0
  73. package/dist/conversation.d.ts +31 -0
  74. package/dist/conversation.d.ts.map +1 -1
  75. package/dist/conversation.js +33 -0
  76. package/dist/conversation.js.map +1 -1
  77. package/dist/core/hash.d.ts +2 -0
  78. package/dist/core/hash.d.ts.map +1 -0
  79. package/dist/core/hash.js +9 -0
  80. package/dist/core/hash.js.map +1 -0
  81. package/dist/core/loop.d.ts +18 -0
  82. package/dist/core/loop.d.ts.map +1 -1
  83. package/dist/core/loop.js +67 -6
  84. package/dist/core/loop.js.map +1 -1
  85. package/dist/core/spawn.d.ts +59 -4
  86. package/dist/core/spawn.d.ts.map +1 -1
  87. package/dist/core/spawn.js +83 -5
  88. package/dist/core/spawn.js.map +1 -1
  89. package/dist/core/turnVerify.d.ts +25 -0
  90. package/dist/core/turnVerify.d.ts.map +1 -0
  91. package/dist/core/turnVerify.js +177 -0
  92. package/dist/core/turnVerify.js.map +1 -0
  93. package/dist/dag/executeNode.d.ts +7 -0
  94. package/dist/dag/executeNode.d.ts.map +1 -1
  95. package/dist/dag/executeNode.js +3 -0
  96. package/dist/dag/executeNode.js.map +1 -1
  97. package/dist/guardrail/guardrail.d.ts +7 -0
  98. package/dist/guardrail/guardrail.d.ts.map +1 -1
  99. package/dist/guardrail/guardrail.js +8 -0
  100. package/dist/guardrail/guardrail.js.map +1 -1
  101. package/dist/guardrail/index.d.ts +2 -2
  102. package/dist/guardrail/index.d.ts.map +1 -1
  103. package/dist/guardrail/index.js +2 -2
  104. package/dist/guardrail/index.js.map +1 -1
  105. package/dist/guardrail/permission-service.d.ts +41 -6
  106. package/dist/guardrail/permission-service.d.ts.map +1 -1
  107. package/dist/guardrail/permission-service.js +118 -11
  108. package/dist/guardrail/permission-service.js.map +1 -1
  109. package/dist/guardrail/serialize.d.ts.map +1 -1
  110. package/dist/guardrail/serialize.js +2 -0
  111. package/dist/guardrail/serialize.js.map +1 -1
  112. package/dist/guardrail/validate.d.ts.map +1 -1
  113. package/dist/guardrail/validate.js +3 -1
  114. package/dist/guardrail/validate.js.map +1 -1
  115. package/dist/install/lockfile.d.ts +13 -5
  116. package/dist/install/lockfile.d.ts.map +1 -1
  117. package/dist/install/lockfile.js +31 -2
  118. package/dist/install/lockfile.js.map +1 -1
  119. package/dist/orchestrator/agentSearch.d.ts +15 -0
  120. package/dist/orchestrator/agentSearch.d.ts.map +1 -0
  121. package/dist/orchestrator/agentSearch.js +112 -0
  122. package/dist/orchestrator/agentSearch.js.map +1 -0
  123. package/dist/orchestrator/agentTags.d.ts +13 -0
  124. package/dist/orchestrator/agentTags.d.ts.map +1 -0
  125. package/dist/orchestrator/agentTags.js +48 -0
  126. package/dist/orchestrator/agentTags.js.map +1 -0
  127. package/dist/orchestrator/branch.d.ts +9 -0
  128. package/dist/orchestrator/branch.d.ts.map +1 -0
  129. package/dist/orchestrator/branch.js +26 -0
  130. package/dist/orchestrator/branch.js.map +1 -0
  131. package/dist/orchestrator/checks.d.ts +16 -0
  132. package/dist/orchestrator/checks.d.ts.map +1 -0
  133. package/dist/orchestrator/checks.js +66 -0
  134. package/dist/orchestrator/checks.js.map +1 -0
  135. package/dist/orchestrator/planDoc.d.ts +41 -0
  136. package/dist/orchestrator/planDoc.d.ts.map +1 -0
  137. package/dist/orchestrator/planDoc.js +181 -0
  138. package/dist/orchestrator/planDoc.js.map +1 -0
  139. package/dist/orchestrator/record.d.ts +110 -0
  140. package/dist/orchestrator/record.d.ts.map +1 -0
  141. package/dist/orchestrator/record.js +221 -0
  142. package/dist/orchestrator/record.js.map +1 -0
  143. package/dist/orchestrator/sidecarTools.d.ts +7 -0
  144. package/dist/orchestrator/sidecarTools.d.ts.map +1 -0
  145. package/dist/orchestrator/sidecarTools.js +141 -0
  146. package/dist/orchestrator/sidecarTools.js.map +1 -0
  147. package/dist/prompts/config.d.ts.map +1 -1
  148. package/dist/prompts/config.js +11 -0
  149. package/dist/prompts/config.js.map +1 -1
  150. package/dist/prompts/index.d.ts +0 -6
  151. package/dist/prompts/index.d.ts.map +1 -1
  152. package/dist/prompts/index.js +10 -17
  153. package/dist/prompts/index.js.map +1 -1
  154. package/dist/prompts/init.d.ts +12 -0
  155. package/dist/prompts/init.d.ts.map +1 -0
  156. package/dist/prompts/init.js +48 -0
  157. package/dist/prompts/init.js.map +1 -0
  158. package/dist/prompts/library/defaults.generated.d.ts.map +1 -1
  159. package/dist/prompts/library/defaults.generated.js +29 -12
  160. package/dist/prompts/library/defaults.generated.js.map +1 -1
  161. package/dist/redact.d.ts.map +1 -1
  162. package/dist/redact.js +1 -0
  163. package/dist/redact.js.map +1 -1
  164. package/dist/rooms/findings.d.ts +14 -0
  165. package/dist/rooms/findings.d.ts.map +1 -1
  166. package/dist/rooms/findings.js +37 -0
  167. package/dist/rooms/findings.js.map +1 -1
  168. package/dist/sessions/blobGc.d.ts.map +1 -1
  169. package/dist/sessions/blobGc.js +2 -5
  170. package/dist/sessions/blobGc.js.map +1 -1
  171. package/dist/sessions/childSessions.d.ts +12 -0
  172. package/dist/sessions/childSessions.d.ts.map +1 -0
  173. package/dist/sessions/childSessions.js +43 -0
  174. package/dist/sessions/childSessions.js.map +1 -0
  175. package/dist/sessions/fileRecallStore.d.ts.map +1 -1
  176. package/dist/sessions/fileRecallStore.js +1 -3
  177. package/dist/sessions/fileRecallStore.js.map +1 -1
  178. package/dist/sessions/fileSessionStore.d.ts +11 -7
  179. package/dist/sessions/fileSessionStore.d.ts.map +1 -1
  180. package/dist/sessions/fileSessionStore.js +27 -16
  181. package/dist/sessions/fileSessionStore.js.map +1 -1
  182. package/dist/sessions/inflight.js +0 -0
  183. package/dist/sessions/inflight.js.map +1 -1
  184. package/dist/sessions/jsonl.d.ts +4 -0
  185. package/dist/sessions/jsonl.d.ts.map +1 -1
  186. package/dist/sessions/jsonl.js +1 -0
  187. package/dist/sessions/jsonl.js.map +1 -1
  188. package/dist/sessions/testFs.d.ts.map +1 -1
  189. package/dist/sessions/testFs.js +1 -1
  190. package/dist/sessions/testFs.js.map +1 -1
  191. package/dist/sidecar/host.d.ts +194 -3
  192. package/dist/sidecar/host.d.ts.map +1 -1
  193. package/dist/sidecar/host.js +401 -6
  194. package/dist/sidecar/host.js.map +1 -1
  195. package/dist/sidecar/identity.d.ts +44 -0
  196. package/dist/sidecar/identity.d.ts.map +1 -0
  197. package/dist/sidecar/identity.js +45 -0
  198. package/dist/sidecar/identity.js.map +1 -0
  199. package/dist/sidecar/server.d.ts +250 -4
  200. package/dist/sidecar/server.d.ts.map +1 -1
  201. package/dist/sidecar/server.js +866 -46
  202. package/dist/sidecar/server.js.map +1 -1
  203. package/dist/skillSource.js +1 -1
  204. package/dist/skillSource.js.map +1 -1
  205. package/dist/skills.d.ts +23 -7
  206. package/dist/skills.d.ts.map +1 -1
  207. package/dist/skills.js +62 -37
  208. package/dist/skills.js.map +1 -1
  209. package/dist/tools/callAgent.d.ts +29 -12
  210. package/dist/tools/callAgent.d.ts.map +1 -1
  211. package/dist/tools/callAgent.js +120 -14
  212. package/dist/tools/callAgent.js.map +1 -1
  213. package/dist/tools/crewList.d.ts +33 -0
  214. package/dist/tools/crewList.d.ts.map +1 -0
  215. package/dist/tools/crewList.js +66 -0
  216. package/dist/tools/crewList.js.map +1 -0
  217. package/dist/tools/files.d.ts.map +1 -1
  218. package/dist/tools/files.js +11 -5
  219. package/dist/tools/files.js.map +1 -1
  220. package/dist/tools/findAgent.d.ts +23 -0
  221. package/dist/tools/findAgent.d.ts.map +1 -0
  222. package/dist/tools/findAgent.js +58 -0
  223. package/dist/tools/findAgent.js.map +1 -0
  224. package/dist/tools/namespaces.d.ts.map +1 -1
  225. package/dist/tools/namespaces.js +7 -0
  226. package/dist/tools/namespaces.js.map +1 -1
  227. package/dist/tools/orchestrate.d.ts +4 -0
  228. package/dist/tools/orchestrate.d.ts.map +1 -0
  229. package/dist/tools/orchestrate.js +38 -0
  230. package/dist/tools/orchestrate.js.map +1 -0
  231. package/dist/tools/orchestration.d.ts +24 -0
  232. package/dist/tools/orchestration.d.ts.map +1 -0
  233. package/dist/tools/orchestration.js +173 -0
  234. package/dist/tools/orchestration.js.map +1 -0
  235. package/dist/tools/orchestrationSet.d.ts +6 -0
  236. package/dist/tools/orchestrationSet.d.ts.map +1 -0
  237. package/dist/tools/orchestrationSet.js +12 -0
  238. package/dist/tools/orchestrationSet.js.map +1 -0
  239. package/dist/tools/roomTools.d.ts +6 -0
  240. package/dist/tools/roomTools.d.ts.map +1 -1
  241. package/dist/tools/roomTools.js +26 -2
  242. package/dist/tools/roomTools.js.map +1 -1
  243. package/dist/tools/skillTool.d.ts +15 -0
  244. package/dist/tools/skillTool.d.ts.map +1 -0
  245. package/dist/tools/skillTool.js +39 -0
  246. package/dist/tools/skillTool.js.map +1 -0
  247. package/dist/tools/urlGuard.d.ts +7 -0
  248. package/dist/tools/urlGuard.d.ts.map +1 -1
  249. package/dist/tools/urlGuard.js +54 -18
  250. package/dist/tools/urlGuard.js.map +1 -1
  251. package/package.json +6 -2
@@ -1,4 +1,4 @@
1
- import { isProtectedPath, PROMPD_INSTALL_DIR } from '@corenel/protocol';
1
+ import { isProtectedPath, protectedPathReason, isForeignPrompdPath, stateDirName } from '@corenel/protocol';
2
2
  function str(args, key) {
3
3
  const v = args[key];
4
4
  return typeof v === 'string' ? v : v == null ? '' : String(v);
@@ -8,12 +8,18 @@ function requireFiles(ctx) {
8
8
  throw new Error('No file workspace is connected.');
9
9
  return ctx.files;
10
10
  }
11
- /** The .prompd install dir is managed by package install/uninstall — read-only to
12
- * the agent. Throwing here surfaces to the model as the tool result so it adjusts. */
11
+ /** install-managed dirs are managed by package install/uninstall — read-only to
12
+ * the agent; a foreign `.prompd/` fallback dir is another product's state,
13
+ * read here but never written. Throwing here surfaces to the model as the
14
+ * tool result so it adjusts, and the advice differs by which case applies. */
13
15
  function ensureWritable(path) {
14
- if (isProtectedPath(path)) {
15
- throw new Error(`${PROMPD_INSTALL_DIR}/ install dirs are read-only (managed by package install). Refusing to modify "${path}". Install or remove packages instead of editing them directly.`);
16
+ if (!isProtectedPath(path))
17
+ return;
18
+ const reason = protectedPathReason(path);
19
+ if (isForeignPrompdPath(path)) {
20
+ throw new Error(`${reason} Refusing to modify it. New files belong under this host's own ${stateDirName()} folder instead.`);
16
21
  }
22
+ throw new Error(`${reason} Refusing to modify it. Install or remove packages instead of editing them directly.`);
17
23
  }
18
24
  function describe(n) {
19
25
  return `${n.kind === 'directory' ? '[dir] ' : ''}${n.path}${n.kind === 'file' && n.size != null ? ` (${n.size}b)` : ''}`;
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../tools/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../tools/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { AgentTool } from '@corenel/protocol';
2
+ export declare const FIND_AGENT_TOOL = "find_agent";
3
+ /** One suggested agent, exactly as the model sees it. */
4
+ export interface FindAgentEntry {
5
+ name: string;
6
+ /** The agent's job title, or its name when it has none. */
7
+ role: string;
8
+ description: string;
9
+ tags: string[];
10
+ scope: string;
11
+ /** false = a shipped agent the person has not added yet. */
12
+ installed: boolean;
13
+ }
14
+ /** The host port: every agent that could be suggested, installed or shipped.
15
+ * `enabled` is read here to exclude disabled installed agents and never
16
+ * reaches the output. */
17
+ export interface AgentFinder {
18
+ candidates(): Promise<Array<FindAgentEntry & {
19
+ enabled: boolean;
20
+ }>>;
21
+ }
22
+ export declare function createFindAgentTool(finder: AgentFinder): AgentTool;
23
+ //# sourceMappingURL=findAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findAgent.d.ts","sourceRoot":"","sources":["../../tools/findAgent.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,eAAO,MAAM,eAAe,eAAe,CAAC;AAI5C,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;yBAEyB;AACzB,MAAM,WAAW,WAAW;IAC1B,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CACrE;AAmBD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAsClE"}
@@ -0,0 +1,58 @@
1
+ import { rankAgents } from '../orchestrator/agentSearch.js';
2
+ export const FIND_AGENT_TOOL = 'find_agent';
3
+ const MAX_RESULTS = 5;
4
+ /** The fields, in a fixed order, copied one by one: whatever else a host's
5
+ * object carries (a body, a policy, the enabled flag) cannot ride along. */
6
+ function row(e) {
7
+ return {
8
+ name: e.name,
9
+ role: e.role,
10
+ description: e.description,
11
+ tags: [...e.tags],
12
+ scope: e.scope,
13
+ installed: e.installed,
14
+ };
15
+ }
16
+ function stringList(v) {
17
+ return Array.isArray(v) ? v.filter((x) => typeof x === 'string') : [];
18
+ }
19
+ export function createFindAgentTool(finder) {
20
+ return {
21
+ name: FIND_AGENT_TOOL,
22
+ description: 'Find crew agents suited to a job, by their role, description and tags. '
23
+ + 'Read-only: it never adds, runs or changes an agent. '
24
+ + 'Suggest a match and let the person start the work (the orchestrate card, or running the agent). '
25
+ + 'Shipped agents not yet added are marked installed:false.',
26
+ mutates: false,
27
+ permission: 'allow',
28
+ parameters: {
29
+ type: 'object',
30
+ properties: {
31
+ job: { type: 'string', description: 'What the work is, in a few words.' },
32
+ tags: { type: 'array', items: { type: 'string' }, description: 'Optional tags the agent should carry.' },
33
+ },
34
+ required: ['job'],
35
+ },
36
+ async run(args) {
37
+ const job = typeof args.job === 'string' ? args.job.trim() : '';
38
+ if (!job)
39
+ return 'Error: find_agent needs a job to match agents against.';
40
+ let all;
41
+ try {
42
+ all = await finder.candidates();
43
+ }
44
+ catch (e) {
45
+ return `Could not read the crew: ${e instanceof Error ? e.message : String(e)}`;
46
+ }
47
+ const offerable = all.filter((a) => !(a.installed && !a.enabled));
48
+ if (offerable.length === 0)
49
+ return 'No agents are available here.';
50
+ const query = `${job} ${stringList(args.tags).join(' ')}`;
51
+ const ranked = rankAgents(offerable.map((a) => ({ ...a, jobTitle: a.role })), query).slice(0, MAX_RESULTS);
52
+ if (ranked.length === 0)
53
+ return 'No agent matches that job.';
54
+ return JSON.stringify(ranked.map(row));
55
+ },
56
+ };
57
+ }
58
+ //# sourceMappingURL=findAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findAgent.js","sourceRoot":"","sources":["../../tools/findAgent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../tools/namespaces.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,aAAa,GACrB,IAAI,GASJ,SAAS,GACT,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,KAAK,GACL,OAAO,GACP,OAAO,CAAC;AAEZ,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAYlE,CAAC;AAoCF,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAgBpE;AAED;;;;;;;;;;;;;;;;;;;;;0EAqB0E;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CA2BxD;AAED;6EAC6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAI1F;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAEvD"}
1
+ {"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../../tools/namespaces.ts"],"names":[],"mappings":"AAsBA,MAAM,MAAM,aAAa,GACrB,IAAI,GASJ,SAAS,GACT,QAAQ,GACR,KAAK,GACL,QAAQ,GACR,OAAO,GACP,OAAO,GACP,QAAQ,GACR,KAAK,GACL,OAAO,GACP,OAAO,CAAC;AAEZ,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE;IAAE,EAAE,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAYlE,CAAC;AA2CF,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAgBpE;AAED;;;;;;;;;;;;;;;;;;;;;0EAqB0E;AAC1E,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CA2BxD;AAED;6EAC6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAI1F;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,MAAM,CAEvD"}
@@ -52,11 +52,18 @@ const BUILTIN_NAMESPACES = {
52
52
  sidecar_fs_read_file: 'sidecar', sidecar_fs_write_file: 'sidecar',
53
53
  sidecar_fs_read_bytes: 'sidecar', sidecar_fs_write_bytes: 'sidecar', sidecar_fs_list_dir: 'sidecar',
54
54
  sidecar_fs_delete: 'sidecar', sidecar_shell_exec: 'sidecar',
55
+ sidecar_run_check: 'sidecar', sidecar_git_branch: 'sidecar', sidecar_git_commit: 'sidecar',
56
+ sidecar_git_push: 'sidecar', sidecar_open_pr: 'sidecar',
55
57
  // Host-side orchestration tools. They are not in allTools() - they reach the
56
58
  // agent as remote decls (workerFactory) - but they are still governed by the
57
59
  // policy, so they need a canonical address like everything else.
58
60
  create_strategy: 'agent', edit_strategy: 'agent', view_strategy: 'agent', run_strategy: 'agent',
59
61
  list_strategies: 'agent', list_saved_strategies: 'agent',
62
+ // The user's installed crew (tools/crewList.ts). A read of an agent store,
63
+ // like the two above; `agent:*` governs it with the rest of the agent tools.
64
+ list_crew: 'agent',
65
+ // Crew suggestions for a job (tools/findAgent.ts): a read of the same store.
66
+ find_agent: 'agent',
60
67
  // Long-lived process control (proc_start/proc_stop/proc_list, see tools/procs.ts).
61
68
  // `shell` is its own subject, deliberately distinct from the one-shot exec's
62
69
  // `sidecar:shell_exec`: a process that stays running is a different risk from
@@ -1 +1 @@
1
- {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../tools/namespaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../../tools/namespaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AgentTool } from '@corenel/protocol';
2
+ export declare const ORCHESTRATE_SHOWN = "Shown the user a task card. They review it and start it themselves; do not start it again or repeat its contents.";
3
+ export declare function makeOrchestrateTool(): AgentTool;
4
+ //# sourceMappingURL=orchestrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../../tools/orchestrate.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,eAAO,MAAM,iBAAiB,sHAAsH,CAAC;AAErJ,wBAAgB,mBAAmB,IAAI,SAAS,CAmC/C"}
@@ -0,0 +1,38 @@
1
+ export const ORCHESTRATE_SHOWN = 'Shown the user a task card. They review it and start it themselves; do not start it again or repeat its contents.';
2
+ export function makeOrchestrateTool() {
3
+ return {
4
+ name: 'orchestrate',
5
+ description: 'Prepare an orchestration task for the user to start: a title, the ticket or request text as body, an optional ticket reference, and acceptance criteria. '
6
+ + "Mark each criterion source 'ticket' if it came from the ticket, 'proposed' if you wrote it. Never present proposed criteria as the ticket's. "
7
+ + "Infer autonomy: 'interactive' or 'hitl' freely. Only propose autonomous when the user explicitly asked not to be asked (for example 'don't ask me', 'just open the PR'); anything unclear is 'hitl'. "
8
+ + 'Give autonomyReason in one sentence. Nothing starts until the user presses Start on the card.',
9
+ mutates: false,
10
+ parameters: {
11
+ type: 'object',
12
+ properties: {
13
+ title: { type: 'string', description: 'A short title for the task.' },
14
+ body: { type: 'string', description: 'The ticket or request text, verbatim.' },
15
+ sourceRef: { type: 'string', description: 'The ticket reference, for example PROJ-142.' },
16
+ acceptanceCriteria: {
17
+ type: 'array',
18
+ description: 'One testable statement per item.',
19
+ items: {
20
+ type: 'object',
21
+ properties: {
22
+ text: { type: 'string' },
23
+ source: { type: 'string', enum: ['ticket', 'proposed'] },
24
+ },
25
+ required: ['text', 'source'],
26
+ },
27
+ },
28
+ autonomy: { type: 'string', enum: ['interactive', 'hitl', 'autonomous'] },
29
+ autonomyReason: { type: 'string', description: 'Why this autonomy, in one sentence.' },
30
+ },
31
+ required: ['title', 'acceptanceCriteria'],
32
+ },
33
+ async run() {
34
+ return ORCHESTRATE_SHOWN;
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=orchestrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../tools/orchestrate.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,iBAAiB,GAAG,mHAAmH,CAAC;AAErJ,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,2JAA2J;cACpK,+IAA+I;cAC/I,uMAAuM;cACvM,+FAA+F;QACnG,OAAO,EAAE,KAAK;QACd,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;gBACrE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;gBAC9E,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;gBACzF,kBAAkB,EAAE;oBAClB,IAAI,EAAE,OAAO;oBACb,WAAW,EAAE,kCAAkC;oBAC/C,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;yBACzD;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;qBAC7B;iBACF;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE;gBACzE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;aACvF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC;SAC1C;QACD,KAAK,CAAC,GAAG;YACP,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { AgentTool, CrewDelegate } from '@corenel/protocol';
2
+ import { type OrchestratorTask } from '../orchestrator/record';
3
+ export declare const ORCHESTRATION_ONLY_TOOLS: readonly string[];
4
+ export declare const TASK_FIXED = "The task is fixed once the plan is approved; start a new run to change it.";
5
+ export declare const TASK_CONFIRMED = "The user already confirmed this task and its acceptance criteria; they are fixed for this run. Continue: list_agents, then submit_plan.";
6
+ /** What set_task returns on a confirmed task: TASK_CONFIRMED plus the recorded
7
+ * task itself, so a model that re-reads it gets the title and the exact
8
+ * criteria back rather than a bare refusal. */
9
+ export declare function confirmedTaskEcho(task: OrchestratorTask | undefined): string;
10
+ export declare function makeSetTaskTool(): AgentTool;
11
+ export declare const PLAN_FIXED = "The plan is fixed once approved; start a new run to change it.";
12
+ export declare function makeSubmitPlanTool(opts?: {
13
+ roster?: () => readonly string[];
14
+ planDir?: string;
15
+ now?: () => Date;
16
+ }): AgentTool;
17
+ /** Tool names this policy does not deny. Uses the real resolver so "most
18
+ * specific glob wins" matches enforcement exactly. */
19
+ export declare function nonDeniedTools(policy: CrewDelegate['policy'], names: readonly string[]): string[];
20
+ export declare function makeListAgentsTool(opts: {
21
+ callSet: string[];
22
+ resolve: (n: string) => Promise<CrewDelegate | null>;
23
+ }): AgentTool;
24
+ //# sourceMappingURL=orchestration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.d.ts","sourceRoot":"","sources":["../../tools/orchestration.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9E,OAAO,EAAyD,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGtH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAA+C,CAAC;AAEtG,eAAO,MAAM,UAAU,+EAA+E,CAAC;AAEvG,eAAO,MAAM,cAAc,4IAA4I,CAAC;AAExK;;+CAE+C;AAC/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAG5E;AASD,wBAAgB,eAAe,IAAI,SAAS,CA0C3C;AAED,eAAO,MAAM,UAAU,mEAAmE,CAAC;AAQ3F,wBAAgB,kBAAkB,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAAO,GAAG,SAAS,CAkDjI;AAED;sDACsD;AACtD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAGjG;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAA;CAAE,GAAG,SAAS,CA4B/H"}
@@ -0,0 +1,173 @@
1
+ import { PermissionService } from '../guardrail/permission-service.js';
2
+ import { rankAgents } from '../orchestrator/agentSearch.js';
3
+ import { recordOf, flushRecord, numberedCriteria, NO_RUN_STATE } from '../orchestrator/record.js';
4
+ import { parsePlan, planProblems, planFilePath, planHash, PLAN_DIR } from '../orchestrator/planDoc.js';
5
+ export const ORCHESTRATION_ONLY_TOOLS = ['list_agents', 'set_task', 'submit_plan'];
6
+ export const TASK_FIXED = 'The task is fixed once the plan is approved; start a new run to change it.';
7
+ export const TASK_CONFIRMED = 'The user already confirmed this task and its acceptance criteria; they are fixed for this run. Continue: list_agents, then submit_plan.';
8
+ /** What set_task returns on a confirmed task: TASK_CONFIRMED plus the recorded
9
+ * task itself, so a model that re-reads it gets the title and the exact
10
+ * criteria back rather than a bare refusal. */
11
+ export function confirmedTaskEcho(task) {
12
+ if (!task)
13
+ return TASK_CONFIRMED;
14
+ return [TASK_CONFIRMED, '', `Task: ${task.title}`, 'Acceptance criteria:', numberedCriteria(task.acceptanceCriteria)].join('\n');
15
+ }
16
+ /** An AC line too short to test is treated as missing. */
17
+ const MIN_AC_CHARS = 10;
18
+ function strArr(v) {
19
+ return Array.isArray(v) ? v.map((x) => (typeof x === 'string' ? x.trim() : '')) : [];
20
+ }
21
+ export function makeSetTaskTool() {
22
+ return {
23
+ name: 'set_task',
24
+ description: 'Record the task you are orchestrating: title, body and acceptance criteria (AC). Call this first. '
25
+ + 'It refuses a task without testable AC; when it does, ask the user for the AC and propose some. Never invent AC.',
26
+ mutates: false,
27
+ parameters: {
28
+ type: 'object',
29
+ properties: {
30
+ title: { type: 'string' },
31
+ body: { type: 'string' },
32
+ acceptanceCriteria: { type: 'array', items: { type: 'string' }, description: 'One testable statement per item.' },
33
+ },
34
+ required: ['title', 'acceptanceCriteria'],
35
+ },
36
+ async run(args, ctx) {
37
+ const rec = recordOf(ctx);
38
+ if (!rec)
39
+ return NO_RUN_STATE;
40
+ // The person approved a plan for THIS task: the branch, the PR and the
41
+ // done checks all follow it, so it cannot change under the approval.
42
+ if (rec.planApprovedAt)
43
+ return TASK_FIXED;
44
+ // The user confirmed this task before the run: the ticket body is
45
+ // untrusted and must not be able to rewrite the criteria it is judged by.
46
+ if (rec.taskConfirmed)
47
+ return confirmedTaskEcho(rec.task);
48
+ const title = typeof args.title === 'string' ? args.title.trim() : '';
49
+ const body = typeof args.body === 'string' ? args.body.trim() : '';
50
+ const ac = strArr(args.acceptanceCriteria);
51
+ const weak = ac.filter((a) => a.length < MIN_AC_CHARS);
52
+ if (!title || !ac.length || weak.length) {
53
+ rec.outcome = 'needs-info';
54
+ await flushRecord(ctx);
55
+ return 'The task has no testable acceptance criteria'
56
+ + (weak.length ? ` (${weak.length} item(s) are empty or too short to test)` : '')
57
+ + '. Do not invent AC: end your turn, ask the user for the acceptance criteria, and propose a draft for them to confirm.';
58
+ }
59
+ const task = { title, body, acceptanceCriteria: ac };
60
+ rec.task = task;
61
+ if (rec.outcome === 'needs-info')
62
+ rec.outcome = 'in-progress';
63
+ await flushRecord(ctx);
64
+ return `Task recorded with ${ac.length} acceptance criteria. Next: list_agents, then submit_plan.`;
65
+ },
66
+ };
67
+ }
68
+ export const PLAN_FIXED = 'The plan is fixed once approved; start a new run to change it.';
69
+ function planArg(args) {
70
+ const md = typeof args.markdown === 'string' ? args.markdown.trim() : '';
71
+ if (md)
72
+ return { text: md, structured: true };
73
+ return { text: typeof args.plan === 'string' ? args.plan.trim() : '', structured: false };
74
+ }
75
+ export function makeSubmitPlanTool(opts = {}) {
76
+ return {
77
+ name: 'submit_plan',
78
+ description: 'Submit your plan for approval before any work starts. Write it with the writing-plans skill: `### Task N: <title>` sections, '
79
+ + 'each with `**Agent:** <name from list_agents>` and its steps. Pass it as `markdown`. It is checked before anyone is asked; fix what it '
80
+ + 'reports and submit again. Nothing may be delegated until it is approved. If it is denied, ask the user what to change.',
81
+ mutates: true,
82
+ permission: 'ask',
83
+ parameters: {
84
+ type: 'object',
85
+ properties: {
86
+ markdown: { type: 'string', description: 'The whole plan, in the writing-plans layout.' },
87
+ plan: { type: 'string', description: 'Deprecated: a plain-text plan. Use markdown.' },
88
+ },
89
+ required: [],
90
+ },
91
+ async precheck(args, ctx) {
92
+ const rec = recordOf(ctx);
93
+ if (!rec)
94
+ return NO_RUN_STATE;
95
+ if (rec.planApprovedAt)
96
+ return PLAN_FIXED;
97
+ if (!rec.task)
98
+ return 'No task is recorded. Call set_task first.';
99
+ const { text, structured } = planArg(args);
100
+ if (!text)
101
+ return 'Provide the plan as markdown.';
102
+ if (!structured)
103
+ return null;
104
+ const problems = planProblems(parsePlan(text), opts.roster?.() ?? []);
105
+ return problems.length ? `The plan was not submitted. Fix these, then submit again:\n- ${problems.join('\n- ')}` : null;
106
+ },
107
+ async run(args, ctx) {
108
+ const rec = recordOf(ctx);
109
+ if (!rec)
110
+ return NO_RUN_STATE;
111
+ if (rec.planApprovedAt)
112
+ return PLAN_FIXED;
113
+ if (!rec.task)
114
+ return 'No task is recorded. Call set_task first.';
115
+ const { text, structured } = planArg(args);
116
+ if (!text)
117
+ return 'Provide the plan as markdown.';
118
+ rec.plan = text;
119
+ rec.planHash = await planHash(text);
120
+ if (structured) {
121
+ rec.planPath = planFilePath(opts.planDir ?? PLAN_DIR, (opts.now ?? (() => new Date()))(), rec.task.title);
122
+ rec.planTasks = parsePlan(text).map((t) => ({ ...t, status: 'pending' }));
123
+ }
124
+ else {
125
+ delete rec.planPath;
126
+ delete rec.planTasks;
127
+ }
128
+ rec.planApprovedAt = Date.now();
129
+ await flushRecord(ctx);
130
+ return structured
131
+ ? `Plan approved. It will be written to ${rec.planPath} when the branch is created. Delegate each task with call_agent, passing its number as task.`
132
+ : 'Plan approved. Delegate the steps with call_agent.';
133
+ },
134
+ };
135
+ }
136
+ /** Tool names this policy does not deny. Uses the real resolver so "most
137
+ * specific glob wins" matches enforcement exactly. */
138
+ export function nonDeniedTools(policy, names) {
139
+ const svc = new PermissionService({ policy });
140
+ return names.filter((n) => svc.resolveLevel({ name: n }) !== 'deny');
141
+ }
142
+ export function makeListAgentsTool(opts) {
143
+ return {
144
+ name: 'list_agents',
145
+ description: 'List the agents you may delegate to: name, job title, description, tags, and the tools their policy lets them use. '
146
+ + 'Pass query to rank them for a step.',
147
+ mutates: false,
148
+ parameters: {
149
+ type: 'object',
150
+ properties: { query: { type: 'string', description: 'Optional: words or tags describing the step; ranks agents by fit.' } },
151
+ required: [],
152
+ },
153
+ async run(args) {
154
+ // Rows come ONLY from the call set. The query below reorders and
155
+ // filters these rows; it can never add an agent the caller may not call.
156
+ const rows = [];
157
+ for (const name of opts.callSet) {
158
+ const d = await opts.resolve(name);
159
+ if (!d)
160
+ continue;
161
+ const named = Object.keys(d.policy.permissions ?? {}).filter((k) => !k.includes('*'));
162
+ rows.push({ name: d.name, jobTitle: d.jobTitle, description: d.description, tags: d.tags ?? [], allowed: nonDeniedTools(d.policy, named) });
163
+ }
164
+ const query = typeof args.query === 'string' ? args.query : '';
165
+ if (!query.trim())
166
+ return JSON.stringify(rows);
167
+ // Every callable agent is installed; the flag only feeds the tie-break.
168
+ const ranked = rankAgents(rows.map((r) => ({ ...r, installed: true })), query);
169
+ return JSON.stringify(ranked.map(({ installed: _installed, ...row }) => row));
170
+ },
171
+ };
172
+ }
173
+ //# sourceMappingURL=orchestration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestration.js","sourceRoot":"","sources":["../../tools/orchestration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AgentTool } from '@corenel/protocol';
2
+ import { type CallAgentOpts } from './callAgent';
3
+ /** Everything a delegating agent is offered: call_agent always, and the
4
+ * orchestrator set only when the agent is an orchestrator. */
5
+ export declare function makeOrchestrationTools(opts: CallAgentOpts): AgentTool[];
6
+ //# sourceMappingURL=orchestrationSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrationSet.d.ts","sourceRoot":"","sources":["../../tools/orchestrationSet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAGpE;8DAC8D;AAC9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,CAKvE"}
@@ -0,0 +1,12 @@
1
+ import { makeCallAgentTool } from './callAgent.js';
2
+ import { makeListAgentsTool, makeSetTaskTool, makeSubmitPlanTool } from './orchestration.js';
3
+ /** Everything a delegating agent is offered: call_agent always, and the
4
+ * orchestrator set only when the agent is an orchestrator. */
5
+ export function makeOrchestrationTools(opts) {
6
+ const call = makeCallAgentTool(opts);
7
+ if (!opts.orchestration)
8
+ return [call];
9
+ return [call, makeListAgentsTool({ callSet: opts.callSet, resolve: opts.resolve }), makeSetTaskTool(),
10
+ makeSubmitPlanTool({ roster: () => opts.callSet, ...(opts.planDir ? { planDir: opts.planDir } : {}) })];
11
+ }
12
+ //# sourceMappingURL=orchestrationSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrationSet.js","sourceRoot":"","sources":["../../tools/orchestrationSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1F;8DAC8D;AAC9D,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,aAAa;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE;QACnG,kBAAkB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5G,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import type { AgentTool } from '@corenel/protocol';
2
2
  import { type Finding, type FindingEdit } from '../rooms/findings';
3
3
  export declare const ROOM_RUNSTATE_KEY = "room";
4
+ /** New findings one turn may record. A turn is one participant saying their
5
+ * piece; a real room had one agent emit four "decisions" in a single turn, two
6
+ * of them the same one paraphrased -- wording that different is invisible to
7
+ * the duplicate check (see DUPLICATE_OVERLAP), so the count is what stops it.
8
+ * Corrections (`replaces`) and withdrawals are not counted. */
9
+ export declare const MAX_RECORDS_PER_TURN = 2;
4
10
  /** The tools that exist only inside a room, named once.
5
11
  *
6
12
  * A host offers these CONDITIONALLY -- only to a participant in a room -- which
@@ -1 +1 @@
1
- {"version":3,"file":"roomTools.d.ts","sourceRoot":"","sources":["../../tools/roomTools.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAEL,KAAK,OAAO,EAAE,KAAK,WAAW,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC;;;;;;;;;4DAS4D;AAC5D,eAAO,MAAM,eAAe,sFAElB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iDAAiD;IACjD,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjC;;;8EAG0E;IAC1E,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;yDACyD;AACzD,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE5D;;;;;;mDAMmD;AACnD,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACnD;2DACuD;IACvD,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,SAAS,cAAc,EAAE,EACvC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,iBAAiB,CAiBnB;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAE5E;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;qDAUiD;IACjD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B;;;;;;;;;;;sEAWkE;IAClE,QAAQ,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;CACrC;AAoCD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,eAAe,CAe9F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,CAwL7D"}
1
+ {"version":3,"file":"roomTools.d.ts","sourceRoot":"","sources":["../../tools/roomTools.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAEL,KAAK,OAAO,EAAE,KAAK,WAAW,EAC/B,MAAM,mBAAmB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC;;;;+DAI+D;AAC/D,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC;;;;;;;;;4DAS4D;AAC5D,eAAO,MAAM,eAAe,sFAElB,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iDAAiD;IACjD,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjC;;;8EAG0E;IAC1E,QAAQ,EAAE,WAAW,EAAE,CAAC;CACzB;AAED;yDACyD;AACzD,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAE5D;;;;;;mDAMmD;AACnD,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC;IACA,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IACnD;2DACuD;IACvD,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,SAAS,cAAc,EAAE,EACvC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACV,iBAAiB,CAiBnB;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAE5E;AAED,UAAU,YAAY;IACpB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;qDAUiD;IACjD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B;;;;;;;;;;;sEAWkE;IAClE,QAAQ,CAAC,EAAE,MAAM,SAAS,OAAO,EAAE,CAAC;CACrC;AAoCD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,eAAe,CAe9F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,EAAE,CA0M7D"}
@@ -1,5 +1,11 @@
1
- import { MAX_FINDING_TEXT, activeFindings, planFindingEdits, renderFindings, } from '../rooms/findings.js';
1
+ import { MAX_FINDING_TEXT, activeFindings, nearDuplicateFinding, planFindingEdits, renderFindings, } from '../rooms/findings.js';
2
2
  export const ROOM_RUNSTATE_KEY = 'room';
3
+ /** New findings one turn may record. A turn is one participant saying their
4
+ * piece; a real room had one agent emit four "decisions" in a single turn, two
5
+ * of them the same one paraphrased -- wording that different is invisible to
6
+ * the duplicate check (see DUPLICATE_OVERLAP), so the count is what stops it.
7
+ * Corrections (`replaces`) and withdrawals are not counted. */
8
+ export const MAX_RECORDS_PER_TURN = 2;
3
9
  /** The tools that exist only inside a room, named once.
4
10
  *
5
11
  * A host offers these CONDITIONALLY -- only to a participant in a room -- which
@@ -217,7 +223,7 @@ export function makeRoomTools(opts) {
217
223
  + 'not here could act on it. Do not record discussion, opinions, or things still being '
218
224
  + 'argued. Pass `replaces` with an existing finding id to correct one that is now wrong '
219
225
  + `-- that rewrites it in place rather than adding a near-duplicate. Up to ${MAX_FINDING_TEXT} `
220
- + 'characters.\n\n'
226
+ + `characters, and at most ${MAX_RECORDS_PER_TURN} new findings per turn; a restatement of an existing finding is refused.\n\n`
221
227
  + renderFindings(opts.findings?.() ?? []),
222
228
  parameters: {
223
229
  type: 'object',
@@ -236,6 +242,24 @@ export function makeRoomTools(opts) {
236
242
  async run(args, ctx) {
237
243
  const text = str(args.finding);
238
244
  const replaces = str(args.replaces);
245
+ /* DUPLICATES and the per-turn cap apply to NEW findings only: a
246
+ * `replaces` correction is the remedy they point at, so it must never
247
+ * be refused by them. Checked against the document as this turn has
248
+ * left it, so a restatement of something recorded two calls ago in the
249
+ * SAME turn is caught too -- that is the common case, since a finding
250
+ * only reaches the prompt from the next turn on. */
251
+ if (!replaces && text) {
252
+ const recorded = slot(ctx).findings.filter((e) => e.kind === 'record').length;
253
+ if (recorded >= MAX_RECORDS_PER_TURN) {
254
+ return `This turn has already recorded ${recorded} findings, the most one turn may add. `
255
+ + 'If this is a different decision, raise it on your next turn; if it corrects one already recorded, use `replaces`.';
256
+ }
257
+ const dup = nearDuplicateFinding(projected(ctx), text);
258
+ if (dup) {
259
+ return `That restates finding ${dup.id} ("${dup.text}"), so it was not recorded again. `
260
+ + `If it adds or corrects something, call record_finding with replaces: "${dup.id}" and the full corrected text.`;
261
+ }
262
+ }
239
263
  const edit = replaces
240
264
  ? { kind: 'revise', id: replaces, text }
241
265
  : { kind: 'record', text };