@burtson-labs/agent-core 1.6.13

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 (195) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +88 -0
  3. package/dist/index.d.ts +16 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +52 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/mcp/activation.d.ts +60 -0
  8. package/dist/mcp/activation.d.ts.map +1 -0
  9. package/dist/mcp/activation.js +139 -0
  10. package/dist/mcp/activation.js.map +1 -0
  11. package/dist/mcp/clientPool.d.ts +202 -0
  12. package/dist/mcp/clientPool.d.ts.map +1 -0
  13. package/dist/mcp/clientPool.js +469 -0
  14. package/dist/mcp/clientPool.js.map +1 -0
  15. package/dist/mcp/index.d.ts +18 -0
  16. package/dist/mcp/index.d.ts.map +1 -0
  17. package/dist/mcp/index.js +28 -0
  18. package/dist/mcp/index.js.map +1 -0
  19. package/dist/mcp/server.d.ts +43 -0
  20. package/dist/mcp/server.d.ts.map +1 -0
  21. package/dist/mcp/server.js +130 -0
  22. package/dist/mcp/server.js.map +1 -0
  23. package/dist/mcp/toolAdapter.d.ts +57 -0
  24. package/dist/mcp/toolAdapter.d.ts.map +1 -0
  25. package/dist/mcp/toolAdapter.js +223 -0
  26. package/dist/mcp/toolAdapter.js.map +1 -0
  27. package/dist/mcp/types.d.ts +122 -0
  28. package/dist/mcp/types.d.ts.map +1 -0
  29. package/dist/mcp/types.js +15 -0
  30. package/dist/mcp/types.js.map +1 -0
  31. package/dist/providers/deterministic-provider.d.ts +21 -0
  32. package/dist/providers/deterministic-provider.d.ts.map +1 -0
  33. package/dist/providers/deterministic-provider.js +80 -0
  34. package/dist/providers/deterministic-provider.js.map +1 -0
  35. package/dist/providers/provider-client.d.ts +12 -0
  36. package/dist/providers/provider-client.d.ts.map +1 -0
  37. package/dist/providers/provider-client.js +11 -0
  38. package/dist/providers/provider-client.js.map +1 -0
  39. package/dist/runtime/AgentRuntime.d.ts +67 -0
  40. package/dist/runtime/AgentRuntime.d.ts.map +1 -0
  41. package/dist/runtime/AgentRuntime.js +382 -0
  42. package/dist/runtime/AgentRuntime.js.map +1 -0
  43. package/dist/security/secretPatterns.d.ts +76 -0
  44. package/dist/security/secretPatterns.d.ts.map +1 -0
  45. package/dist/security/secretPatterns.js +290 -0
  46. package/dist/security/secretPatterns.js.map +1 -0
  47. package/dist/tools/ask-user-tool.d.ts +19 -0
  48. package/dist/tools/ask-user-tool.d.ts.map +1 -0
  49. package/dist/tools/ask-user-tool.js +148 -0
  50. package/dist/tools/ask-user-tool.js.map +1 -0
  51. package/dist/tools/compactMessages.d.ts +52 -0
  52. package/dist/tools/compactMessages.d.ts.map +1 -0
  53. package/dist/tools/compactMessages.js +158 -0
  54. package/dist/tools/compactMessages.js.map +1 -0
  55. package/dist/tools/core-tools.d.ts +29 -0
  56. package/dist/tools/core-tools.d.ts.map +1 -0
  57. package/dist/tools/core-tools.js +2214 -0
  58. package/dist/tools/core-tools.js.map +1 -0
  59. package/dist/tools/git-tools.d.ts +32 -0
  60. package/dist/tools/git-tools.d.ts.map +1 -0
  61. package/dist/tools/git-tools.js +330 -0
  62. package/dist/tools/git-tools.js.map +1 -0
  63. package/dist/tools/index.d.ts +15 -0
  64. package/dist/tools/index.d.ts.map +1 -0
  65. package/dist/tools/index.js +31 -0
  66. package/dist/tools/index.js.map +1 -0
  67. package/dist/tools/language-adapters.d.ts +48 -0
  68. package/dist/tools/language-adapters.d.ts.map +1 -0
  69. package/dist/tools/language-adapters.js +299 -0
  70. package/dist/tools/language-adapters.js.map +1 -0
  71. package/dist/tools/loop/compactionTrigger.d.ts +47 -0
  72. package/dist/tools/loop/compactionTrigger.d.ts.map +1 -0
  73. package/dist/tools/loop/compactionTrigger.js +32 -0
  74. package/dist/tools/loop/compactionTrigger.js.map +1 -0
  75. package/dist/tools/loop/finalAnswerNudges.d.ts +68 -0
  76. package/dist/tools/loop/finalAnswerNudges.d.ts.map +1 -0
  77. package/dist/tools/loop/finalAnswerNudges.js +87 -0
  78. package/dist/tools/loop/finalAnswerNudges.js.map +1 -0
  79. package/dist/tools/loop/goalAnchor.d.ts +72 -0
  80. package/dist/tools/loop/goalAnchor.d.ts.map +1 -0
  81. package/dist/tools/loop/goalAnchor.js +76 -0
  82. package/dist/tools/loop/goalAnchor.js.map +1 -0
  83. package/dist/tools/loop/llmStream.d.ts +70 -0
  84. package/dist/tools/loop/llmStream.d.ts.map +1 -0
  85. package/dist/tools/loop/llmStream.js +181 -0
  86. package/dist/tools/loop/llmStream.js.map +1 -0
  87. package/dist/tools/loop/parallelExecute.d.ts +57 -0
  88. package/dist/tools/loop/parallelExecute.d.ts.map +1 -0
  89. package/dist/tools/loop/parallelExecute.js +54 -0
  90. package/dist/tools/loop/parallelExecute.js.map +1 -0
  91. package/dist/tools/loop/singleToolExecute.d.ts +71 -0
  92. package/dist/tools/loop/singleToolExecute.d.ts.map +1 -0
  93. package/dist/tools/loop/singleToolExecute.js +139 -0
  94. package/dist/tools/loop/singleToolExecute.js.map +1 -0
  95. package/dist/tools/loop/toolCallNormalize.d.ts +57 -0
  96. package/dist/tools/loop/toolCallNormalize.d.ts.map +1 -0
  97. package/dist/tools/loop/toolCallNormalize.js +99 -0
  98. package/dist/tools/loop/toolCallNormalize.js.map +1 -0
  99. package/dist/tools/loop/turnSetup.d.ts +43 -0
  100. package/dist/tools/loop/turnSetup.d.ts.map +1 -0
  101. package/dist/tools/loop/turnSetup.js +48 -0
  102. package/dist/tools/loop/turnSetup.js.map +1 -0
  103. package/dist/tools/ocr.d.ts +52 -0
  104. package/dist/tools/ocr.d.ts.map +1 -0
  105. package/dist/tools/ocr.js +238 -0
  106. package/dist/tools/ocr.js.map +1 -0
  107. package/dist/tools/post-edit-checks.d.ts +46 -0
  108. package/dist/tools/post-edit-checks.d.ts.map +1 -0
  109. package/dist/tools/post-edit-checks.js +236 -0
  110. package/dist/tools/post-edit-checks.js.map +1 -0
  111. package/dist/tools/skill-loader.d.ts +94 -0
  112. package/dist/tools/skill-loader.d.ts.map +1 -0
  113. package/dist/tools/skill-loader.js +422 -0
  114. package/dist/tools/skill-loader.js.map +1 -0
  115. package/dist/tools/skill-registry.d.ts +44 -0
  116. package/dist/tools/skill-registry.d.ts.map +1 -0
  117. package/dist/tools/skill-registry.js +118 -0
  118. package/dist/tools/skill-registry.js.map +1 -0
  119. package/dist/tools/skill-types.d.ts +38 -0
  120. package/dist/tools/skill-types.d.ts.map +1 -0
  121. package/dist/tools/skill-types.js +10 -0
  122. package/dist/tools/skill-types.js.map +1 -0
  123. package/dist/tools/skills/code-review-skill.d.ts +9 -0
  124. package/dist/tools/skills/code-review-skill.d.ts.map +1 -0
  125. package/dist/tools/skills/code-review-skill.js +66 -0
  126. package/dist/tools/skills/code-review-skill.js.map +1 -0
  127. package/dist/tools/skills/core-skill.d.ts +13 -0
  128. package/dist/tools/skills/core-skill.d.ts.map +1 -0
  129. package/dist/tools/skills/core-skill.js +23 -0
  130. package/dist/tools/skills/core-skill.js.map +1 -0
  131. package/dist/tools/skills/git-skill.d.ts +10 -0
  132. package/dist/tools/skills/git-skill.d.ts.map +1 -0
  133. package/dist/tools/skills/git-skill.js +30 -0
  134. package/dist/tools/skills/git-skill.js.map +1 -0
  135. package/dist/tools/skills/index.d.ts +17 -0
  136. package/dist/tools/skills/index.d.ts.map +1 -0
  137. package/dist/tools/skills/index.js +49 -0
  138. package/dist/tools/skills/index.js.map +1 -0
  139. package/dist/tools/skills/interaction-skill.d.ts +14 -0
  140. package/dist/tools/skills/interaction-skill.d.ts.map +1 -0
  141. package/dist/tools/skills/interaction-skill.js +24 -0
  142. package/dist/tools/skills/interaction-skill.js.map +1 -0
  143. package/dist/tools/skills/mail-search-skill.d.ts +25 -0
  144. package/dist/tools/skills/mail-search-skill.d.ts.map +1 -0
  145. package/dist/tools/skills/mail-search-skill.js +343 -0
  146. package/dist/tools/skills/mail-search-skill.js.map +1 -0
  147. package/dist/tools/skills/plan-skill.d.ts +10 -0
  148. package/dist/tools/skills/plan-skill.d.ts.map +1 -0
  149. package/dist/tools/skills/plan-skill.js +126 -0
  150. package/dist/tools/skills/plan-skill.js.map +1 -0
  151. package/dist/tools/skills/semantic-search-skill.d.ts +22 -0
  152. package/dist/tools/skills/semantic-search-skill.d.ts.map +1 -0
  153. package/dist/tools/skills/semantic-search-skill.js +244 -0
  154. package/dist/tools/skills/semantic-search-skill.js.map +1 -0
  155. package/dist/tools/skills/test-gen-skill.d.ts +9 -0
  156. package/dist/tools/skills/test-gen-skill.d.ts.map +1 -0
  157. package/dist/tools/skills/test-gen-skill.js +123 -0
  158. package/dist/tools/skills/test-gen-skill.js.map +1 -0
  159. package/dist/tools/tool-registry.d.ts +60 -0
  160. package/dist/tools/tool-registry.d.ts.map +1 -0
  161. package/dist/tools/tool-registry.js +200 -0
  162. package/dist/tools/tool-registry.js.map +1 -0
  163. package/dist/tools/tool-types.d.ts +281 -0
  164. package/dist/tools/tool-types.d.ts.map +1 -0
  165. package/dist/tools/tool-types.js +10 -0
  166. package/dist/tools/tool-types.js.map +1 -0
  167. package/dist/tools/tool-use-loop.d.ts +231 -0
  168. package/dist/tools/tool-use-loop.d.ts.map +1 -0
  169. package/dist/tools/tool-use-loop.js +2057 -0
  170. package/dist/tools/tool-use-loop.js.map +1 -0
  171. package/dist/tools/tool-use-parser.d.ts +78 -0
  172. package/dist/tools/tool-use-parser.d.ts.map +1 -0
  173. package/dist/tools/tool-use-parser.js +427 -0
  174. package/dist/tools/tool-use-parser.js.map +1 -0
  175. package/dist/tools/toolAvailabilityDetector.d.ts +48 -0
  176. package/dist/tools/toolAvailabilityDetector.d.ts.map +1 -0
  177. package/dist/tools/toolAvailabilityDetector.js +156 -0
  178. package/dist/tools/toolAvailabilityDetector.js.map +1 -0
  179. package/dist/tools/unified-patch.d.ts +87 -0
  180. package/dist/tools/unified-patch.d.ts.map +1 -0
  181. package/dist/tools/unified-patch.js +217 -0
  182. package/dist/tools/unified-patch.js.map +1 -0
  183. package/dist/types/agent.d.ts +69 -0
  184. package/dist/types/agent.d.ts.map +1 -0
  185. package/dist/types/agent.js +54 -0
  186. package/dist/types/agent.js.map +1 -0
  187. package/dist/types/tasks.d.ts +22 -0
  188. package/dist/types/tasks.d.ts.map +1 -0
  189. package/dist/types/tasks.js +3 -0
  190. package/dist/types/tasks.js.map +1 -0
  191. package/dist/utils/event-emitter.d.ts +13 -0
  192. package/dist/utils/event-emitter.d.ts.map +1 -0
  193. package/dist/utils/event-emitter.js +54 -0
  194. package/dist/utils/event-emitter.js.map +1 -0
  195. package/package.json +33 -0
@@ -0,0 +1,122 @@
1
+ /**
2
+ * MCP — Model Context Protocol — types.
3
+ *
4
+ * Bandit speaks MCP as a CLIENT. Each configured server runs as a
5
+ * separate child process; we open a JSON-RPC channel over stdio,
6
+ * enumerate the server's tools, and register them in the existing
7
+ * AgentTool registry with namespaced names (`<server>.<tool>`).
8
+ *
9
+ * Config shape uses the standard MCP `mcpServers` schema so users can
10
+ * port a working config to / from other MCP-speaking clients without
11
+ * rewriting it.
12
+ */
13
+ /**
14
+ * Auth strategy for remote (URL-based) MCP servers. Stdio servers don't
15
+ * use this — they're trusted via fingerprint + the trust gate.
16
+ *
17
+ * - `'bandit'` (string shorthand) → equivalent to `{ type: 'bandit-api-key' }`,
18
+ * resolves to the host's configured Bandit Cloud API key at request time.
19
+ * Sent as `X-API-Key: <key>`.
20
+ * - `{ type: 'bandit-api-key' }` → explicit form of the above.
21
+ * - `{ type: 'bearer'; token: '...' }` → static bearer token. Sent as
22
+ * `Authorization: Bearer <token>`.
23
+ * - `{ type: 'header'; name: 'X-Foo'; value: '...' }` → arbitrary custom
24
+ * header. Use for connectors with bespoke auth headers.
25
+ *
26
+ * The pool resolves a string token from the host via
27
+ * McpClientPoolOptions.resolveAuthToken when the type is bandit-api-key.
28
+ */
29
+ export type McpAuthConfig = 'bandit' | {
30
+ type: 'bandit-api-key';
31
+ } | {
32
+ type: 'bearer';
33
+ token: string;
34
+ } | {
35
+ type: 'header';
36
+ name: string;
37
+ value: string;
38
+ };
39
+ /**
40
+ * One server entry in the user's mcp-servers.json. Matches the standard
41
+ * MCP config schema for stdio servers AND the emerging Streamable HTTP
42
+ * remote-server shape for URL-based servers. An entry is one OR the
43
+ * other — `command` and `url` are mutually exclusive. `url` wins when
44
+ * both are set.
45
+ */
46
+ export interface McpServerConfig {
47
+ /** Stdio mode: executable name or absolute path. e.g. "npx", "node",
48
+ * "/usr/local/bin/mcp-server". Mutually exclusive with `url`. */
49
+ command?: string;
50
+ /** Stdio mode arguments. */
51
+ args?: string[];
52
+ /** Stdio mode environment variables merged into the child process. NOT logged. */
53
+ env?: Record<string, string>;
54
+ /** Remote mode: full URL of the MCP endpoint (Streamable HTTP), e.g.
55
+ * `https://mcp.burtson.ai/mcp`. When set, this entry uses the remote
56
+ * transport — command/args/env are ignored. The Bandit MCP client
57
+ * speaks Streamable HTTP via @modelcontextprotocol/sdk's
58
+ * StreamableHTTPClientTransport. */
59
+ url?: string;
60
+ /** Auth for the remote URL — see McpAuthConfig. Omit for public URLs.
61
+ * Most user-facing entries will be `auth: 'bandit'` (Bandit Cloud key)
62
+ * since that's how `mcp.burtson.ai` and similar hosted servers
63
+ * authenticate. */
64
+ auth?: McpAuthConfig;
65
+ /**
66
+ * Optional disable flag — set to true to keep the server in the
67
+ * config (so the user doesn't lose their tokens) without spawning
68
+ * it. Mirrors the standard MCP `disabled` field.
69
+ */
70
+ disabled?: boolean;
71
+ /**
72
+ * Activation mode. Defaults to "always" (current behavior — every
73
+ * configured server's tools are registered every turn). When set
74
+ * to "on-mention", the server's tools are only registered when
75
+ * the user's prompt mentions one of the server's triggers (the
76
+ * server name itself + any explicit `triggers` + auto-derived
77
+ * triggers for well-known providers like slack/github/gmail/etc).
78
+ *
79
+ * Use "on-mention" to keep the system prompt small when you have
80
+ * many servers configured. A user with 10 servers using "always"
81
+ * pays for 60+ tool definitions in every prompt; "on-mention"
82
+ * lets you summon Slack tools by typing "slack" without bloating
83
+ * your code-review prompts.
84
+ */
85
+ activation?: 'always' | 'on-mention';
86
+ /**
87
+ * Extra keywords that activate this server when activation is
88
+ * "on-mention". The server name is always a trigger; explicit
89
+ * triggers stack on top. For well-known servers (slack, github,
90
+ * gmail, drive, calendar, outlook, teams) Bandit auto-supplies
91
+ * sensible defaults so users don't need to think about it.
92
+ */
93
+ triggers?: string[];
94
+ }
95
+ /**
96
+ * The full mcp-servers.json file. Loaded from `~/.bandit/mcp-servers.json`
97
+ * (global) and `.bandit/mcp-servers.json` (workspace, takes precedence).
98
+ */
99
+ export interface McpServersFile {
100
+ mcpServers: Record<string, McpServerConfig>;
101
+ }
102
+ /** Per-server runtime status. Surfaced in the CLI `/mcp` listing and the IDE Connections tab. */
103
+ export type McpServerStatus = {
104
+ state: 'idle';
105
+ } | {
106
+ state: 'connecting';
107
+ } | {
108
+ state: 'connected';
109
+ toolCount: number;
110
+ } | {
111
+ state: 'error';
112
+ message: string;
113
+ } | {
114
+ state: 'disabled';
115
+ };
116
+ /** Snapshot of one server for status views (CLI and IDE). */
117
+ export interface McpServerSnapshot {
118
+ name: string;
119
+ config: McpServerConfig;
120
+ status: McpServerStatus;
121
+ }
122
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B;sEACkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;;yCAIqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;wBAGoB;IACpB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,iGAAiG;AACjG,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,YAAY,CAAA;CAAE,GACvB;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,UAAU,CAAA;CAAE,CAAC;AAE1B,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;CACzB"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ /**
3
+ * MCP — Model Context Protocol — types.
4
+ *
5
+ * Bandit speaks MCP as a CLIENT. Each configured server runs as a
6
+ * separate child process; we open a JSON-RPC channel over stdio,
7
+ * enumerate the server's tools, and register them in the existing
8
+ * AgentTool registry with namespaced names (`<server>.<tool>`).
9
+ *
10
+ * Config shape uses the standard MCP `mcpServers` schema so users can
11
+ * port a working config to / from other MCP-speaking clients without
12
+ * rewriting it.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,21 @@
1
+ import { ProviderChatOptions, ProviderClient } from "./provider-client";
2
+ export interface DeterministicProviderConfig {
3
+ /**
4
+ * Optional seed to influence deterministic outputs.
5
+ */
6
+ seed?: number;
7
+ }
8
+ /**
9
+ * A lightweight provider implementation that produces deterministic,
10
+ * heuristic outputs for planning and execution without invoking a model.
11
+ */
12
+ export declare class DeterministicProviderClient implements ProviderClient {
13
+ private readonly config;
14
+ readonly name = "deterministic-provider";
15
+ constructor(config?: DeterministicProviderConfig);
16
+ chat(prompt: string, options?: ProviderChatOptions): AsyncIterable<string>;
17
+ private generatePlan;
18
+ private generateReport;
19
+ private generateEcho;
20
+ }
21
+ //# sourceMappingURL=deterministic-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic-provider.d.ts","sourceRoot":"","sources":["../../src/providers/deterministic-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExE,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,cAAc;IAGpD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,QAAQ,CAAC,IAAI,4BAA4B;gBAEZ,MAAM,GAAE,2BAAgC;IAE9D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC;IAgBjF,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;CAUrB"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeterministicProviderClient = void 0;
4
+ /**
5
+ * A lightweight provider implementation that produces deterministic,
6
+ * heuristic outputs for planning and execution without invoking a model.
7
+ */
8
+ class DeterministicProviderClient {
9
+ constructor(config = {}) {
10
+ this.config = config;
11
+ this.name = "deterministic-provider";
12
+ }
13
+ async *chat(prompt, options) {
14
+ const mode = options?.mode ?? "plan";
15
+ if (mode === "plan") {
16
+ yield this.generatePlan(prompt);
17
+ return;
18
+ }
19
+ if (mode === "report") {
20
+ yield this.generateReport(prompt, options);
21
+ return;
22
+ }
23
+ yield this.generateEcho(prompt, options);
24
+ }
25
+ generatePlan(prompt) {
26
+ const goal = extractGoal(prompt);
27
+ const steps = heuristicallyBreakGoal(goal);
28
+ return JSON.stringify({
29
+ goal,
30
+ summary: `Plan generated from goal: ${goal}`,
31
+ steps: steps.map((text, index) => ({
32
+ id: `step-${index + 1}`,
33
+ title: titleCase(text),
34
+ description: text
35
+ }))
36
+ }, null, 2);
37
+ }
38
+ generateReport(prompt, options) {
39
+ return JSON.stringify({
40
+ summary: "Execution completed using deterministic provider.",
41
+ prompt,
42
+ metadata: options?.metadata ?? {}
43
+ }, null, 2);
44
+ }
45
+ generateEcho(prompt, options) {
46
+ return JSON.stringify({
47
+ prompt,
48
+ options: options ?? {}
49
+ }, null, 2);
50
+ }
51
+ }
52
+ exports.DeterministicProviderClient = DeterministicProviderClient;
53
+ function extractGoal(prompt) {
54
+ const cleaned = prompt.trim();
55
+ const match = cleaned.match(/goal:(.*)/i);
56
+ if (match) {
57
+ return match[1].trim();
58
+ }
59
+ return cleaned;
60
+ }
61
+ function heuristicallyBreakGoal(goal) {
62
+ const delimiters = [/ and /i, / then /i, /, /];
63
+ for (const delimiter of delimiters) {
64
+ if (delimiter.test(goal)) {
65
+ return goal.split(delimiter).map((part) => part.trim()).filter(Boolean);
66
+ }
67
+ }
68
+ if (goal.length < 80) {
69
+ return [goal];
70
+ }
71
+ const midpoint = Math.floor(goal.length / 2);
72
+ return [goal.slice(0, midpoint).trim(), goal.slice(midpoint).trim()];
73
+ }
74
+ function titleCase(input) {
75
+ return input
76
+ .split(" ")
77
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
78
+ .join(" ");
79
+ }
80
+ //# sourceMappingURL=deterministic-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deterministic-provider.js","sourceRoot":"","sources":["../../src/providers/deterministic-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export interface ProviderChatOptions {
2
+ mode?: "plan" | "execute" | "report" | string;
3
+ metadata?: Record<string, unknown>;
4
+ context?: unknown;
5
+ [key: string]: unknown;
6
+ }
7
+ export interface ProviderClient {
8
+ readonly name: string;
9
+ chat(prompt: string, options?: ProviderChatOptions): AsyncIterable<string>;
10
+ }
11
+ export declare function collectFromStream(stream: AsyncIterable<string>): Promise<string>;
12
+ //# sourceMappingURL=provider-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-client.d.ts","sourceRoot":"","sources":["../../src/providers/provider-client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;CAC5E;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAQtF"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectFromStream = collectFromStream;
4
+ async function collectFromStream(stream) {
5
+ let result = "";
6
+ for await (const chunk of stream) {
7
+ result += chunk;
8
+ }
9
+ return result;
10
+ }
11
+ //# sourceMappingURL=provider-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-client.js","sourceRoot":"","sources":["../../src/providers/provider-client.ts"],"names":[],"mappings":";;AAYA,8CAQC;AARM,KAAK,UAAU,iBAAiB,CAAC,MAA6B;IACnE,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { AgentContext, AgentEvent, AgentExecutionResult, AgentPlan, AgentStep, AgentStepStatus, AgentReport, AgentDiff } from "../types/agent";
2
+ import { ProviderClient } from "../providers/provider-client";
3
+ import { AgentEventEmitter } from "../utils/event-emitter";
4
+ export interface AgentTelemetry {
5
+ track(event: AgentEvent): void | Promise<void>;
6
+ }
7
+ export interface AgentLogger {
8
+ debug(...args: unknown[]): void;
9
+ info(...args: unknown[]): void;
10
+ warn(...args: unknown[]): void;
11
+ error(...args: unknown[]): void;
12
+ }
13
+ export interface AgentRuntimeOptions {
14
+ provider: ProviderClient;
15
+ context?: AgentContext;
16
+ logger?: AgentLogger;
17
+ telemetry?: AgentTelemetry;
18
+ clock?: () => number;
19
+ stepExecutor?: StepExecutor;
20
+ }
21
+ export interface PlanOptions {
22
+ context?: Partial<AgentContext>;
23
+ metadata?: Record<string, unknown>;
24
+ }
25
+ export interface ExecuteOptions {
26
+ stepExecutor?: StepExecutor;
27
+ metadata?: Record<string, unknown>;
28
+ }
29
+ export interface StepExecutorContext {
30
+ step: AgentStep;
31
+ plan: AgentPlan;
32
+ context: AgentContext;
33
+ metadata?: Record<string, unknown>;
34
+ emitEvent: (type: string, payload?: unknown) => void;
35
+ logger: AgentLogger;
36
+ }
37
+ export interface StepExecutorOutput {
38
+ status?: AgentStepStatus;
39
+ diff?: AgentDiff[];
40
+ logs?: string[];
41
+ metadata?: Record<string, unknown>;
42
+ }
43
+ export type StepExecutor = (context: StepExecutorContext) => Promise<StepExecutorOutput>;
44
+ export declare class AgentRuntime extends AgentEventEmitter {
45
+ private context;
46
+ private activePlan;
47
+ private executionResults;
48
+ private planStartedAt;
49
+ private executeStartedAt;
50
+ private readonly telemetry?;
51
+ private readonly logger;
52
+ private readonly clock;
53
+ private readonly provider;
54
+ private readonly configuredStepExecutor?;
55
+ constructor(options: AgentRuntimeOptions);
56
+ getContext(): AgentContext;
57
+ setContext(context: AgentContext): void;
58
+ updateContext(patch: Partial<AgentContext>): void;
59
+ getPlan(): AgentPlan | null;
60
+ getExecutionResults(): AgentExecutionResult[];
61
+ plan(goal: string, options?: PlanOptions): Promise<AgentPlan>;
62
+ execute(options?: ExecuteOptions): Promise<AgentExecutionResult[]>;
63
+ report(metadata?: Record<string, unknown>): Promise<AgentReport>;
64
+ private emitAgentEvent;
65
+ private trackTelemetry;
66
+ }
67
+ //# sourceMappingURL=AgentRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/AgentRuntime.ts"],"names":[],"mappings":"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"}