@namzu/sdk 5.1.0 → 5.2.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 (158) hide show
  1. package/CHANGELOG.md +361 -0
  2. package/dist/agents/__tests__/run-agent-forwarding.test.d.ts +2 -0
  3. package/dist/agents/__tests__/run-agent-forwarding.test.d.ts.map +1 -0
  4. package/dist/agents/__tests__/run-agent-forwarding.test.js +76 -0
  5. package/dist/agents/__tests__/run-agent-forwarding.test.js.map +1 -0
  6. package/dist/agents/__tests__/run-completed-stop-reason.test.d.ts +2 -0
  7. package/dist/agents/__tests__/run-completed-stop-reason.test.d.ts.map +1 -0
  8. package/dist/agents/__tests__/run-completed-stop-reason.test.js +50 -0
  9. package/dist/agents/__tests__/run-completed-stop-reason.test.js.map +1 -0
  10. package/dist/agents/index.d.ts +1 -0
  11. package/dist/agents/index.d.ts.map +1 -1
  12. package/dist/agents/index.js +4 -0
  13. package/dist/agents/index.js.map +1 -1
  14. package/dist/agents/runAgent.d.ts +34 -0
  15. package/dist/agents/runAgent.d.ts.map +1 -1
  16. package/dist/agents/runAgent.js +5 -3
  17. package/dist/agents/runAgent.js.map +1 -1
  18. package/dist/config/runtime.d.ts +30 -30
  19. package/dist/constants/tools/__tests__/dangerous-patterns.test.d.ts +2 -0
  20. package/dist/constants/tools/__tests__/dangerous-patterns.test.d.ts.map +1 -0
  21. package/dist/constants/tools/__tests__/dangerous-patterns.test.js +54 -0
  22. package/dist/constants/tools/__tests__/dangerous-patterns.test.js.map +1 -0
  23. package/dist/constants/tools/index.d.ts.map +1 -1
  24. package/dist/constants/tools/index.js +28 -1
  25. package/dist/constants/tools/index.js.map +1 -1
  26. package/dist/contracts/a2a.d.ts +44 -44
  27. package/dist/directory/__tests__/derive.test.d.ts +2 -0
  28. package/dist/directory/__tests__/derive.test.d.ts.map +1 -0
  29. package/dist/directory/__tests__/derive.test.js +111 -0
  30. package/dist/directory/__tests__/derive.test.js.map +1 -0
  31. package/dist/directory/__tests__/load-diagnostics.test.d.ts +2 -0
  32. package/dist/directory/__tests__/load-diagnostics.test.d.ts.map +1 -0
  33. package/dist/directory/__tests__/load-diagnostics.test.js +106 -0
  34. package/dist/directory/__tests__/load-diagnostics.test.js.map +1 -0
  35. package/dist/directory/__tests__/load-directory.test.d.ts +2 -0
  36. package/dist/directory/__tests__/load-directory.test.d.ts.map +1 -0
  37. package/dist/directory/__tests__/load-directory.test.js +196 -0
  38. package/dist/directory/__tests__/load-directory.test.js.map +1 -0
  39. package/dist/directory/__tests__/subagents.test.d.ts +2 -0
  40. package/dist/directory/__tests__/subagents.test.d.ts.map +1 -0
  41. package/dist/directory/__tests__/subagents.test.js +117 -0
  42. package/dist/directory/__tests__/subagents.test.js.map +1 -0
  43. package/dist/directory/__tests__/supervisor-budget.test.d.ts +2 -0
  44. package/dist/directory/__tests__/supervisor-budget.test.d.ts.map +1 -0
  45. package/dist/directory/__tests__/supervisor-budget.test.js +97 -0
  46. package/dist/directory/__tests__/supervisor-budget.test.js.map +1 -0
  47. package/dist/directory/derive-supervisor.d.ts +58 -0
  48. package/dist/directory/derive-supervisor.d.ts.map +1 -0
  49. package/dist/directory/derive-supervisor.js +88 -0
  50. package/dist/directory/derive-supervisor.js.map +1 -0
  51. package/dist/directory/derive.d.ts +12 -0
  52. package/dist/directory/derive.d.ts.map +1 -0
  53. package/dist/directory/derive.js +58 -0
  54. package/dist/directory/derive.js.map +1 -0
  55. package/dist/directory/index.d.ts +7 -0
  56. package/dist/directory/index.d.ts.map +1 -0
  57. package/dist/directory/index.js +5 -0
  58. package/dist/directory/index.js.map +1 -0
  59. package/dist/directory/load.d.ts +14 -0
  60. package/dist/directory/load.d.ts.map +1 -0
  61. package/dist/directory/load.js +488 -0
  62. package/dist/directory/load.js.map +1 -0
  63. package/dist/directory/scan.d.ts +36 -0
  64. package/dist/directory/scan.d.ts.map +1 -0
  65. package/dist/directory/scan.js +136 -0
  66. package/dist/directory/scan.js.map +1 -0
  67. package/dist/directory/types.d.ts +215 -0
  68. package/dist/directory/types.d.ts.map +1 -0
  69. package/dist/directory/types.js +8 -0
  70. package/dist/directory/types.js.map +1 -0
  71. package/dist/plugin/__tests__/path-containment.test.d.ts +2 -0
  72. package/dist/plugin/__tests__/path-containment.test.d.ts.map +1 -0
  73. package/dist/plugin/__tests__/path-containment.test.js +91 -0
  74. package/dist/plugin/__tests__/path-containment.test.js.map +1 -0
  75. package/dist/plugin/lifecycle.d.ts.map +1 -1
  76. package/dist/plugin/lifecycle.js +3 -3
  77. package/dist/plugin/lifecycle.js.map +1 -1
  78. package/dist/plugin/loader.d.ts.map +1 -1
  79. package/dist/plugin/loader.js +12 -2
  80. package/dist/plugin/loader.js.map +1 -1
  81. package/dist/provider/__tests__/model-version.test.d.ts +2 -0
  82. package/dist/provider/__tests__/model-version.test.d.ts.map +1 -0
  83. package/dist/provider/__tests__/model-version.test.js +80 -0
  84. package/dist/provider/__tests__/model-version.test.js.map +1 -0
  85. package/dist/provider/__tests__/strict-schema.test.d.ts +2 -0
  86. package/dist/provider/__tests__/strict-schema.test.d.ts.map +1 -0
  87. package/dist/provider/__tests__/strict-schema.test.js +109 -0
  88. package/dist/provider/__tests__/strict-schema.test.js.map +1 -0
  89. package/dist/provider/model-version.d.ts +60 -0
  90. package/dist/provider/model-version.d.ts.map +1 -0
  91. package/dist/provider/model-version.js +64 -0
  92. package/dist/provider/model-version.js.map +1 -0
  93. package/dist/provider/strict-schema.d.ts +49 -0
  94. package/dist/provider/strict-schema.d.ts.map +1 -0
  95. package/dist/provider/strict-schema.js +112 -0
  96. package/dist/provider/strict-schema.js.map +1 -0
  97. package/dist/public-runtime.d.ts +6 -1
  98. package/dist/public-runtime.d.ts.map +1 -1
  99. package/dist/public-runtime.js +21 -1
  100. package/dist/public-runtime.js.map +1 -1
  101. package/dist/public-types.d.ts +2 -0
  102. package/dist/public-types.d.ts.map +1 -1
  103. package/dist/registry/tool/__tests__/strict-registration.test.d.ts +2 -0
  104. package/dist/registry/tool/__tests__/strict-registration.test.d.ts.map +1 -0
  105. package/dist/registry/tool/__tests__/strict-registration.test.js +82 -0
  106. package/dist/registry/tool/__tests__/strict-registration.test.js.map +1 -0
  107. package/dist/registry/tool/execute.d.ts.map +1 -1
  108. package/dist/registry/tool/execute.js +16 -0
  109. package/dist/registry/tool/execute.js.map +1 -1
  110. package/dist/runtime/query/result.d.ts.map +1 -1
  111. package/dist/runtime/query/result.js +5 -0
  112. package/dist/runtime/query/result.js.map +1 -1
  113. package/dist/tools/builtins/__tests__/edit-insert-reachable.test.js +7 -1
  114. package/dist/tools/builtins/__tests__/edit-insert-reachable.test.js.map +1 -1
  115. package/dist/tools/builtins/__tests__/edit.test.js +1 -1
  116. package/dist/tools/builtins/__tests__/edit.test.js.map +1 -1
  117. package/dist/tools/builtins/edit.d.ts.map +1 -1
  118. package/dist/tools/builtins/edit.js +20 -2
  119. package/dist/tools/builtins/edit.js.map +1 -1
  120. package/dist/types/plugin/index.d.ts +4 -4
  121. package/dist/types/run/events.d.ts +17 -2
  122. package/dist/types/run/events.d.ts.map +1 -1
  123. package/dist/types/run/events.js.map +1 -1
  124. package/dist/types/verification/index.d.ts +6 -6
  125. package/package.json +1 -1
  126. package/src/agents/__tests__/run-agent-forwarding.test.ts +85 -0
  127. package/src/agents/__tests__/run-completed-stop-reason.test.ts +59 -0
  128. package/src/agents/index.ts +8 -0
  129. package/src/agents/runAgent.ts +30 -4
  130. package/src/constants/tools/__tests__/dangerous-patterns.test.ts +62 -0
  131. package/src/constants/tools/index.ts +28 -1
  132. package/src/directory/__tests__/derive.test.ts +135 -0
  133. package/src/directory/__tests__/load-diagnostics.test.ts +126 -0
  134. package/src/directory/__tests__/load-directory.test.ts +243 -0
  135. package/src/directory/__tests__/subagents.test.ts +155 -0
  136. package/src/directory/__tests__/supervisor-budget.test.ts +117 -0
  137. package/src/directory/derive-supervisor.ts +149 -0
  138. package/src/directory/derive.ts +70 -0
  139. package/src/directory/index.ts +27 -0
  140. package/src/directory/load.ts +556 -0
  141. package/src/directory/scan.ts +163 -0
  142. package/src/directory/types.ts +254 -0
  143. package/src/plugin/__tests__/path-containment.test.ts +107 -0
  144. package/src/plugin/lifecycle.ts +3 -3
  145. package/src/plugin/loader.ts +12 -2
  146. package/src/provider/__tests__/model-version.test.ts +93 -0
  147. package/src/provider/__tests__/strict-schema.test.ts +133 -0
  148. package/src/provider/model-version.ts +98 -0
  149. package/src/provider/strict-schema.ts +125 -0
  150. package/src/public-runtime.ts +31 -0
  151. package/src/public-types.ts +8 -0
  152. package/src/registry/tool/__tests__/strict-registration.test.ts +115 -0
  153. package/src/registry/tool/execute.ts +16 -0
  154. package/src/runtime/query/result.ts +5 -0
  155. package/src/tools/builtins/__tests__/edit-insert-reachable.test.ts +8 -2
  156. package/src/tools/builtins/__tests__/edit.test.ts +1 -1
  157. package/src/tools/builtins/edit.ts +20 -2
  158. package/src/types/run/events.ts +15 -2
@@ -0,0 +1,97 @@
1
+ import { mkdirSync, mkdtempSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { describe, expect, it } from 'vitest';
5
+ import { deriveSupervisorOptions } from '../derive-supervisor.js';
6
+ import { loadDirectory } from '../load.js';
7
+ /**
8
+ * `BaseAgentConfig` declares `tokenBudget` and `timeoutMs` as REQUIRED, and
9
+ * `deriveSupervisorOptions` supplied them only when `agent.ts` happened to
10
+ * name them — which is the uncommon case. An `as SupervisorAgentConfig` made
11
+ * that compile, so the returned object was typed `tokenBudget: number` while
12
+ * holding `undefined`.
13
+ *
14
+ * The consequence is not a type-level nicety. `buildLimitConfig` defaults only
15
+ * `maxIterations`, so an undefined budget and timeout disable BOTH hard stops
16
+ * — a project-derived supervisor ran with no token cap and no wall clock. And
17
+ * the child-spawn guard computes a delegate's allocation from the parent
18
+ * budget, so `undefined` became `NaN`, and `NaN <= 0` is false: the refusal
19
+ * that exists to stop an unfunded child let it through.
20
+ *
21
+ * The cast is now `satisfies`, which is what keeps this from recurring — but
22
+ * a type check is not a test, so the values are asserted here too.
23
+ */
24
+ const provider = { id: 'mock', name: 'Mock' };
25
+ const agentManager = { sendMessage: async () => ({}) };
26
+ function tree(files) {
27
+ const root = mkdtempSync(join(tmpdir(), 'namzu-budget-'));
28
+ for (const [relative, body] of Object.entries(files)) {
29
+ const full = join(root, relative);
30
+ mkdirSync(join(full, '..'), { recursive: true });
31
+ writeFileSync(full, body);
32
+ }
33
+ return root;
34
+ }
35
+ const MINIMAL = {
36
+ 'agent.js': 'export default { model: "m" }',
37
+ 'agents/researcher/agent.js': 'export default { model: "m2" }',
38
+ 'agents/researcher/instructions.md': 'Research things.',
39
+ };
40
+ describe('a derived supervisor always has a budget and a clock', () => {
41
+ it('defaults both when agent.ts names neither', async () => {
42
+ const { manifest } = await loadDirectory(tree(MINIMAL));
43
+ const { config } = deriveSupervisorOptions(manifest, { provider, agentManager });
44
+ // The exact numbers matter less than that they are finite: a NaN or an
45
+ // undefined here is what silently disabled the limits.
46
+ expect(Number.isFinite(config.tokenBudget)).toBe(true);
47
+ expect(Number.isFinite(config.timeoutMs)).toBe(true);
48
+ expect(config.tokenBudget).toBeGreaterThan(0);
49
+ expect(config.timeoutMs).toBeGreaterThan(0);
50
+ });
51
+ it('uses the same defaults the SDK front door uses', async () => {
52
+ // Imported from the module that owns them rather than through the
53
+ // package entry: this file now lives inside that package, and a
54
+ // self-import resolves to the built `dist`, not to the source under
55
+ // test — which is how a stale build reads as a passing test.
56
+ const { DEFAULT_TIMEOUT_MS, DEFAULT_TOKEN_BUDGET } = await import('../../agents/runAgent.js');
57
+ const { manifest } = await loadDirectory(tree(MINIMAL));
58
+ const { config } = deriveSupervisorOptions(manifest, { provider, agentManager });
59
+ // Two front doors that default differently is a difference nobody would
60
+ // find until a run behaved unlike its sibling.
61
+ expect(config.tokenBudget).toBe(DEFAULT_TOKEN_BUDGET);
62
+ expect(config.timeoutMs).toBe(DEFAULT_TIMEOUT_MS);
63
+ });
64
+ it('still honours what agent.ts declares', async () => {
65
+ const { manifest } = await loadDirectory(tree({
66
+ ...MINIMAL,
67
+ 'agent.js': 'export default { model: "m", tokenBudget: 1234, timeoutMs: 5678 }',
68
+ }));
69
+ const { config } = deriveSupervisorOptions(manifest, { provider, agentManager });
70
+ expect(config.tokenBudget).toBe(1234);
71
+ expect(config.timeoutMs).toBe(5678);
72
+ });
73
+ it('lets an override win over both', async () => {
74
+ const { manifest } = await loadDirectory(tree(MINIMAL));
75
+ const { config } = deriveSupervisorOptions(manifest, {
76
+ provider,
77
+ agentManager,
78
+ overrides: { tokenBudget: 42 },
79
+ });
80
+ expect(config.tokenBudget).toBe(42);
81
+ });
82
+ });
83
+ describe('a derived supervisor carries the skills it loaded', () => {
84
+ it('passes skills through instead of dropping them', async () => {
85
+ const { manifest } = await loadDirectory(tree({
86
+ ...MINIMAL,
87
+ 'skills/plan-a-trip/SKILL.md': '---\nname: plan-a-trip\ndescription: Plan a trip\n---\n\nAsk for dates.',
88
+ }));
89
+ expect(manifest.skills).toHaveLength(1);
90
+ const { config } = deriveSupervisorOptions(manifest, { provider, agentManager });
91
+ // Loaded from disk, put on the manifest, and then — before this — left
92
+ // out of the config the supervisor actually runs with.
93
+ expect(config.skills).toHaveLength(1);
94
+ expect(config.skills?.[0]?.metadata.name).toBe('plan-a-trip');
95
+ });
96
+ });
97
+ //# sourceMappingURL=supervisor-budget.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor-budget.test.js","sourceRoot":"","sources":["../../../src/directory/__tests__/supervisor-budget.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAW,CAAA;AACtD,MAAM,YAAY,GAAG,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAW,CAAA;AAE/D,SAAS,IAAI,CAAC,KAA6B;IAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAA;IACzD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;QACjC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAChD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,MAAM,OAAO,GAAG;IACf,UAAU,EAAE,+BAA+B;IAC3C,4BAA4B,EAAE,gCAAgC;IAC9D,mCAAmC,EAAE,kBAAkB;CACvD,CAAA;AAED,QAAQ,CAAC,sDAAsD,EAAE,GAAG,EAAE;IACrE,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAEhF,uEAAuE;QACvE,uDAAuD;QACvD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC/D,kEAAkE;QAClE,gEAAgE;QAChE,oEAAoE;QACpE,6DAA6D;QAC7D,MAAM,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;QAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAEhF,wEAAwE;QACxE,+CAA+C;QAC/C,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QACrD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CACvC,IAAI,CAAC;YACJ,GAAG,OAAO;YACV,UAAU,EAAE,mEAAmE;SAC/E,CAAC,CACF,CAAA;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAEhF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,EAAE;YACpD,QAAQ;YACR,YAAY;YACZ,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;SAC9B,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAClE,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,aAAa,CACvC,IAAI,CAAC;YACJ,GAAG,OAAO;YACV,6BAA6B,EAC5B,yEAAyE;SAC1E,CAAC,CACF,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAEvC,MAAM,EAAE,MAAM,EAAE,GAAG,uBAAuB,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAA;QAEhF,uEAAuE;QACvE,uDAAuD;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,58 @@
1
+ import type { AgentIdentity } from '../agents/runAgent.js';
2
+ import { ToolRegistry } from '../registry/tool/execute.js';
3
+ import type { SupervisorAgentConfig } from '../types/agent/supervisor.js';
4
+ import type { LLMProvider } from '../types/provider/index.js';
5
+ import type { DirectoryManifest } from './types.js';
6
+ export interface DeriveSupervisorInput {
7
+ readonly provider: LLMProvider;
8
+ /** Wins over `agent.ts`. Required when `agent.ts` names no model. */
9
+ readonly model?: string;
10
+ readonly identity?: Required<AgentIdentity>;
11
+ /**
12
+ * The lifecycle object that actually spawns delegates.
13
+ *
14
+ * Supplied by the host and never built here. An `AgentManager` owns
15
+ * running processes, budgets and cancellation — it is a thing with a
16
+ * lifetime, not a description of one, and this package's whole boundary is
17
+ * that it describes and does not run. Handing back options that carry a
18
+ * manager we constructed would make it a runner wearing a loader's name.
19
+ */
20
+ readonly agentManager: SupervisorAgentConfig['agentManager'];
21
+ readonly overrides?: Partial<SupervisorAgentConfig>;
22
+ }
23
+ export interface SupervisorPlan {
24
+ /** Ready for `new SupervisorAgent(...).run(input, config)`. */
25
+ readonly config: SupervisorAgentConfig;
26
+ /**
27
+ * What the host must register with its `AgentManager` before running,
28
+ * one per delegate, keyed by the id the supervisor will name.
29
+ *
30
+ * Returned rather than registered: registration is a mutation of the
31
+ * host's manager, and a function that quietly mutates an object it was
32
+ * handed for reference is the kind of surprise this package exists to
33
+ * avoid. The host does it, in one loop it can see.
34
+ */
35
+ readonly delegates: readonly DelegatePlan[];
36
+ }
37
+ export interface DelegatePlan {
38
+ readonly id: string;
39
+ readonly manifest: DirectoryManifest;
40
+ /** The delegate's own instructions, tools and model, already assembled. */
41
+ readonly systemPrompt: string;
42
+ readonly tools: ToolRegistry;
43
+ readonly model: string;
44
+ }
45
+ /**
46
+ * Turn a project that declares delegates into a supervisor configuration.
47
+ *
48
+ * The counterpart to `deriveRunOptions` for the multi-agent shape, and the
49
+ * same contract: it converts, it does not run. `SupervisorAgent` needs an
50
+ * `agentIds` roster and a manager that can spawn them; this supplies the
51
+ * roster from the directory and leaves the manager to the host.
52
+ *
53
+ * The delegates come back as plans rather than registered agents because
54
+ * registration mutates the host's manager. Two lines in the host, and the host
55
+ * can see exactly what it just gained.
56
+ */
57
+ export declare function deriveSupervisorOptions(manifest: DirectoryManifest, input: DeriveSupervisorInput): SupervisorPlan;
58
+ //# sourceMappingURL=derive-supervisor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-supervisor.d.ts","sourceRoot":"","sources":["../../src/directory/derive-supervisor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,KAAK,EAAE,iBAAiB,EAAiB,MAAM,YAAY,CAAA;AAElE,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,qEAAqE;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAA;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,cAAc;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;IACtC;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAA;CAC3C;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAsBD;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,qBAAqB,GAC1B,cAAc,CA+DhB"}
@@ -0,0 +1,88 @@
1
+ import { DEFAULT_TIMEOUT_MS, DEFAULT_TOKEN_BUDGET } from '../agents/runAgent.js';
2
+ import { ToolRegistry } from '../registry/tool/execute.js';
3
+ function toolsOf(manifest) {
4
+ const tools = new ToolRegistry();
5
+ for (const entry of manifest.tools)
6
+ tools.register(entry.definition);
7
+ return tools;
8
+ }
9
+ function delegatePlan(entry, fallbackModel) {
10
+ return {
11
+ id: entry.id,
12
+ manifest: entry.manifest,
13
+ systemPrompt: entry.manifest.instructions,
14
+ tools: toolsOf(entry.manifest),
15
+ // A delegate may name its own model — a cheap one for a narrow job is
16
+ // the common case — and inherits the supervisor's only when it does
17
+ // not. Inheriting unconditionally would silently bill every specialist
18
+ // at the coordinator's rate.
19
+ model: entry.manifest.config.model ?? fallbackModel,
20
+ };
21
+ }
22
+ /**
23
+ * Turn a project that declares delegates into a supervisor configuration.
24
+ *
25
+ * The counterpart to `deriveRunOptions` for the multi-agent shape, and the
26
+ * same contract: it converts, it does not run. `SupervisorAgent` needs an
27
+ * `agentIds` roster and a manager that can spawn them; this supplies the
28
+ * roster from the directory and leaves the manager to the host.
29
+ *
30
+ * The delegates come back as plans rather than registered agents because
31
+ * registration mutates the host's manager. Two lines in the host, and the host
32
+ * can see exactly what it just gained.
33
+ */
34
+ export function deriveSupervisorOptions(manifest, input) {
35
+ if (manifest.modules === 'skip') {
36
+ throw new Error('This manifest was loaded with modules: "skip", so no tool was imported and no delegate was evaluated. Load with modules: "evaluate" before deriving supervisor options.');
37
+ }
38
+ if (manifest.agents.length === 0) {
39
+ // Not a warning that degrades into a supervisor with nobody to call.
40
+ // An empty roster makes `create_task` unmountable by design, so the
41
+ // result would be a coordinator that cannot coordinate — and the
42
+ // caller asked for a supervisor, which means they expected delegates.
43
+ throw new Error(`${manifest.root} declares no delegates, so there is nothing for a supervisor to coordinate. Add directories under agents/, or use deriveRunOptions for a single agent.`);
44
+ }
45
+ const model = input.model ?? manifest.config.model;
46
+ if (!model) {
47
+ throw new Error(`No model. Declare one in ${manifest.root}/agent.ts as \`export default { model: "…" }\`, or pass \`model\` here.`);
48
+ }
49
+ const delegates = manifest.agents.map((entry) => delegatePlan(entry, model));
50
+ const config = {
51
+ provider: input.provider,
52
+ model,
53
+ agentManager: input.agentManager,
54
+ agentIds: delegates.map((d) => d.id),
55
+ systemPrompt: manifest.instructions,
56
+ tools: toolsOf(manifest),
57
+ // Skills were loaded and then dropped. The manifest reads a whole
58
+ // `skills/` directory and `SupervisorAgentConfig` takes them, and the
59
+ // cast that used to close this object meant nobody was told the field
60
+ // had never been supplied.
61
+ ...(manifest.skills.length > 0 ? { skills: manifest.skills.map((s) => s.skill) } : {}),
62
+ // `tokenBudget` and `timeoutMs` are REQUIRED by `BaseAgentConfig`, and
63
+ // this object supplied them only when `agent.ts` happened to declare
64
+ // them — which is the uncommon case. The `as SupervisorAgentConfig`
65
+ // below made that compile, so a directory that named no budget produced
66
+ // a config typed `tokenBudget: number` holding `undefined`, and
67
+ // `buildLimitConfig` then disabled BOTH hard stops: no token cap, no
68
+ // wall clock. Worse, the child-spawn refusal computes its allocation
69
+ // from the parent budget, so `undefined` became `NaN`, and `NaN <= 0`
70
+ // is false — the guard that exists to refuse an unfunded child let it
71
+ // through with a NaN budget.
72
+ //
73
+ // Defaulted to the same numbers `runAgent` uses rather than to a local
74
+ // guess, so the two front doors cannot drift.
75
+ tokenBudget: manifest.config.tokenBudget ?? DEFAULT_TOKEN_BUDGET,
76
+ timeoutMs: manifest.config.timeoutMs ?? DEFAULT_TIMEOUT_MS,
77
+ ...(manifest.config.temperature !== undefined
78
+ ? { temperature: manifest.config.temperature }
79
+ : {}),
80
+ ...(manifest.config.maxIterations !== undefined
81
+ ? { maxIterations: manifest.config.maxIterations }
82
+ : {}),
83
+ ...(input.identity ?? {}),
84
+ ...(input.overrides ?? {}),
85
+ };
86
+ return { config, delegates };
87
+ }
88
+ //# sourceMappingURL=derive-supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive-supervisor.js","sourceRoot":"","sources":["../../src/directory/derive-supervisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { RunAgentOptions } from '../agents/runAgent.js';
2
+ import type { DeriveRunOptionsInput, DirectoryManifest } from './types.js';
3
+ /**
4
+ * Turn a loaded project into the options `runAgent` takes.
5
+ *
6
+ * One direction, no second engine. Everything this produces is an ordinary
7
+ * `RunAgentOptions` field, so a caller who needs something this does not cover
8
+ * spreads `overrides` or stops using this function — there is no behaviour
9
+ * reachable only through the convention.
10
+ */
11
+ export declare function deriveRunOptions(manifest: DirectoryManifest, input: DeriveRunOptionsInput): RunAgentOptions;
12
+ //# sourceMappingURL=derive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.d.ts","sourceRoot":"","sources":["../../src/directory/derive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAG5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE1E;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,qBAAqB,GAC1B,eAAe,CAqDjB"}
@@ -0,0 +1,58 @@
1
+ import { ToolRegistry } from '../registry/tool/execute.js';
2
+ /**
3
+ * Turn a loaded project into the options `runAgent` takes.
4
+ *
5
+ * One direction, no second engine. Everything this produces is an ordinary
6
+ * `RunAgentOptions` field, so a caller who needs something this does not cover
7
+ * spreads `overrides` or stops using this function — there is no behaviour
8
+ * reachable only through the convention.
9
+ */
10
+ export function deriveRunOptions(manifest, input) {
11
+ if (manifest.modules === 'skip') {
12
+ // The manifest is structurally complete and its tools were never
13
+ // imported, so `manifest.tools` is empty for a reason that has nothing
14
+ // to do with the project. Running it would produce an agent with no
15
+ // capabilities and no indication why.
16
+ throw new Error('This manifest was loaded with modules: "skip", so no tool was imported and none can be registered. Load with modules: "evaluate" before deriving run options.');
17
+ }
18
+ const model = input.model ?? manifest.config.model;
19
+ if (!model) {
20
+ throw new Error(`No model. Declare one in ${manifest.root}/agent.ts as \`export default { model: "…" }\`, or pass \`model\` here.`);
21
+ }
22
+ const tools = new ToolRegistry();
23
+ for (const entry of manifest.tools)
24
+ tools.register(entry.definition);
25
+ return {
26
+ provider: input.provider,
27
+ prompt: input.prompt,
28
+ model,
29
+ tools,
30
+ // The one value the project knows and `runAgent` cannot infer. Left
31
+ // unset it would default to the host's own cwd, pointing the file
32
+ // tools' containment at the host's source tree rather than at the
33
+ // project. The root is `agent/` itself, not its parent — narrower is
34
+ // the safe direction, and widening it is the caller's explicit call
35
+ // through `overrides`.
36
+ workingDirectory: manifest.root,
37
+ ...(manifest.instructions ? { instructions: manifest.instructions } : {}),
38
+ ...(manifest.skills.length > 0 ? { skills: manifest.skills.map((s) => s.skill) } : {}),
39
+ // Only when declared. A name guessed from a directory basename becomes
40
+ // the agent id in traces, where two sibling projects called `agent`
41
+ // would silently merge into one attribution bucket — worse than the
42
+ // SDK's own default, which at least does not pretend to be specific.
43
+ ...(manifest.config.name ? { name: manifest.config.name } : {}),
44
+ ...(manifest.config.temperature !== undefined
45
+ ? { temperature: manifest.config.temperature }
46
+ : {}),
47
+ ...(manifest.config.maxIterations !== undefined
48
+ ? { maxIterations: manifest.config.maxIterations }
49
+ : {}),
50
+ ...(manifest.config.tokenBudget !== undefined
51
+ ? { tokenBudget: manifest.config.tokenBudget }
52
+ : {}),
53
+ ...(manifest.config.timeoutMs !== undefined ? { timeoutMs: manifest.config.timeoutMs } : {}),
54
+ ...(input.identity ?? {}),
55
+ ...(input.overrides ?? {}),
56
+ };
57
+ }
58
+ //# sourceMappingURL=derive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"derive.js","sourceRoot":"","sources":["../../src/directory/derive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAI1D;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC/B,QAA2B,EAC3B,KAA4B;IAE5B,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QACjC,iEAAiE;QACjE,uEAAuE;QACvE,oEAAoE;QACpE,sCAAsC;QACtC,MAAM,IAAI,KAAK,CACd,+JAA+J,CAC/J,CAAA;IACF,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAA;IAClD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACd,4BAA4B,QAAQ,CAAC,IAAI,yEAAyE,CAClH,CAAA;IACF,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;IAChC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK;QAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;IAEpE,OAAO;QACN,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK;QACL,KAAK;QACL,oEAAoE;QACpE,kEAAkE;QAClE,kEAAkE;QAClE,qEAAqE;QACrE,oEAAoE;QACpE,uBAAuB;QACvB,gBAAgB,EAAE,QAAQ,CAAC,IAAI;QAC/B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,uEAAuE;QACvE,oEAAoE;QACpE,oEAAoE;QACpE,qEAAqE;QACrE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE;YAC9C,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzB,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;KAC1B,CAAA;AACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { loadDirectory } from './load.js';
2
+ export { deriveRunOptions } from './derive.js';
3
+ export { deriveSupervisorOptions } from './derive-supervisor.js';
4
+ export type { DelegatePlan, DeriveSupervisorInput, SupervisorPlan, } from './derive-supervisor.js';
5
+ export type { DeriveRunOptionsInput, DirectoryDiagnosticCode, DirectoryDiagnosticSeverity, LoadDirectoryOptions, ModuleImporter, ModuleMode, DirectoryConfig, DirectoryDiagnostic, DirectoryLoadResult, DirectoryManifest, DirectorySlot, SkillEntry, SourceOutcome, SourceRef, SubAgentEntry, ToolEntry, } from './types.js';
6
+ export { ALL_SLOTS } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/directory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,YAAY,EACX,YAAY,EACZ,qBAAqB,EACrB,cAAc,GACd,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACX,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACT,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { loadDirectory } from './load.js';
2
+ export { deriveRunOptions } from './derive.js';
3
+ export { deriveSupervisorOptions } from './derive-supervisor.js';
4
+ export { ALL_SLOTS } from './types.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAwBhE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,14 @@
1
+ import type { DirectoryLoadResult, LoadDirectoryOptions } from './types.js';
2
+ /**
3
+ * Read a conventional agent directory into typed, inspectable definitions.
4
+ *
5
+ * A LOADER, not a runner: it produces what is there and hands it back. Running
6
+ * it — a turn, a server, a schedule — is the host's job, which is what keeps
7
+ * this package free of any hosting model.
8
+ *
9
+ * It never throws on authored content. A broken tool, a missing file, a
10
+ * malformed config all come back as diagnostics, because a loader that throws
11
+ * on the first bad file tells you about one problem when you wanted the list.
12
+ */
13
+ export declare function loadDirectory(dir: string, options?: LoadDirectoryOptions): Promise<DirectoryLoadResult>;
14
+ //# sourceMappingURL=load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/directory/load.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGX,mBAAmB,EAEnB,oBAAoB,EAQpB,MAAM,YAAY,CAAA;AA2MnB;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAE9B"}