@a5c-ai/agent-core 0.1.0 → 5.0.1-staging.00fa5317c493

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 (86) hide show
  1. package/README.md +13 -0
  2. package/dist/agenticTools/background/state.d.ts +5 -0
  3. package/dist/agenticTools/background/state.d.ts.map +1 -0
  4. package/dist/agenticTools/background/state.js +25 -0
  5. package/dist/agenticTools/background/tools.d.ts +3 -0
  6. package/dist/agenticTools/background/tools.d.ts.map +1 -0
  7. package/dist/agenticTools/background/tools.js +37 -0
  8. package/dist/agenticTools/browser/tool.d.ts +3 -0
  9. package/dist/agenticTools/browser/tool.d.ts.map +1 -0
  10. package/dist/agenticTools/browser/tool.js +64 -0
  11. package/dist/agenticTools/config/state.d.ts +10 -0
  12. package/dist/agenticTools/config/state.d.ts.map +1 -0
  13. package/dist/agenticTools/config/state.js +127 -0
  14. package/dist/agenticTools/config/tool.d.ts +3 -0
  15. package/dist/agenticTools/config/tool.d.ts.map +1 -0
  16. package/dist/agenticTools/config/tool.js +87 -0
  17. package/dist/agenticTools/discovery/tools.d.ts +3 -0
  18. package/dist/agenticTools/discovery/tools.d.ts.map +1 -0
  19. package/dist/agenticTools/discovery/tools.js +71 -0
  20. package/dist/agenticTools/index.d.ts +5 -0
  21. package/dist/agenticTools/index.d.ts.map +1 -0
  22. package/dist/agenticTools/index.js +48 -0
  23. package/dist/agenticTools/shared/paths.d.ts +5 -0
  24. package/dist/agenticTools/shared/paths.d.ts.map +1 -0
  25. package/dist/agenticTools/shared/paths.js +116 -0
  26. package/dist/agenticTools/shared/process.d.ts +15 -0
  27. package/dist/agenticTools/shared/process.d.ts.map +1 -0
  28. package/dist/agenticTools/shared/process.js +122 -0
  29. package/dist/agenticTools/shared/results.d.ts +9 -0
  30. package/dist/agenticTools/shared/results.d.ts.map +1 -0
  31. package/dist/agenticTools/shared/results.js +50 -0
  32. package/dist/agenticTools/tools/code.d.ts +3 -0
  33. package/dist/agenticTools/tools/code.d.ts.map +1 -0
  34. package/dist/agenticTools/tools/code.js +305 -0
  35. package/dist/agenticTools/tools/delegation.d.ts +3 -0
  36. package/dist/agenticTools/tools/delegation.d.ts.map +1 -0
  37. package/dist/agenticTools/tools/delegation.js +131 -0
  38. package/dist/agenticTools/tools/execution.d.ts +3 -0
  39. package/dist/agenticTools/tools/execution.d.ts.map +1 -0
  40. package/dist/agenticTools/tools/execution.js +132 -0
  41. package/dist/agenticTools/tools/fileSystem.d.ts +3 -0
  42. package/dist/agenticTools/tools/fileSystem.d.ts.map +1 -0
  43. package/dist/agenticTools/tools/fileSystem.js +210 -0
  44. package/dist/agenticTools/tools/programmaticToolCalling.d.ts +4 -0
  45. package/dist/agenticTools/tools/programmaticToolCalling.d.ts.map +1 -0
  46. package/dist/agenticTools/tools/programmaticToolCalling.js +137 -0
  47. package/dist/agenticTools/types.d.ts +3 -0
  48. package/dist/agenticTools/types.d.ts.map +1 -0
  49. package/dist/agenticTools/types.js +5 -0
  50. package/dist/agenticTools/web/content.d.ts +3 -0
  51. package/dist/agenticTools/web/content.d.ts.map +1 -0
  52. package/dist/agenticTools/web/content.js +54 -0
  53. package/dist/agenticTools/web/searchHelpers.d.ts +8 -0
  54. package/dist/agenticTools/web/searchHelpers.d.ts.map +1 -0
  55. package/dist/agenticTools/web/searchHelpers.js +50 -0
  56. package/dist/agenticTools/web/tools.d.ts +3 -0
  57. package/dist/agenticTools/web/tools.d.ts.map +1 -0
  58. package/dist/agenticTools/web/tools.js +119 -0
  59. package/dist/backgroundProcessRegistry.d.ts +63 -0
  60. package/dist/backgroundProcessRegistry.d.ts.map +1 -0
  61. package/dist/backgroundProcessRegistry.js +200 -0
  62. package/dist/deferredToolRegistry.d.ts +76 -0
  63. package/dist/deferredToolRegistry.d.ts.map +1 -0
  64. package/dist/deferredToolRegistry.js +150 -0
  65. package/dist/deferredToolRegistry.test.d.ts +2 -0
  66. package/dist/deferredToolRegistry.test.d.ts.map +1 -0
  67. package/dist/deferredToolRegistry.test.js +64 -0
  68. package/dist/index.d.ts +7 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +20 -0
  71. package/dist/session.d.ts +32 -0
  72. package/dist/session.d.ts.map +1 -0
  73. package/dist/session.js +252 -0
  74. package/dist/session.test.d.ts +2 -0
  75. package/dist/session.test.d.ts.map +1 -0
  76. package/dist/session.test.js +116 -0
  77. package/dist/tools.d.ts +9 -0
  78. package/dist/tools.d.ts.map +1 -0
  79. package/dist/tools.js +18 -0
  80. package/dist/tools.test.d.ts +2 -0
  81. package/dist/tools.test.d.ts.map +1 -0
  82. package/dist/tools.test.js +591 -0
  83. package/dist/types.d.ts +122 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +31 -0
  86. package/package.json +4 -4
package/README.md CHANGED
@@ -118,6 +118,7 @@ If you still need the PI-era controls above, use the PI wrapper exposed from `@a
118
118
  - delegation tools: `AskUserQuestion`, `task`, `skill`
119
119
  - code tools: `calc`, `ast_grep`, `ast_edit`, `render_mermaid`, `notebook`
120
120
  - background/discovery/web tools: `background_status`, `background_list`, `tool_search`, `tool_fetch`, `web_search`, `fetch_process`
121
+ - optional programmatic tool calling: `code_executor` when `programmaticToolCalling` is enabled
121
122
 
122
123
  `AgentCoreToolOptions` controls how those definitions are wired into a host runtime:
123
124
 
@@ -127,6 +128,18 @@ If you still need the PI-era controls above, use the PI wrapper exposed from `@a
127
128
  - `onToolUse`: observer callback fired after tool wrapping.
128
129
  - `onBackgroundComplete`, `maxBackgroundProcesses`, `backgroundRegistry`: background-process lifecycle hooks and limits.
129
130
  - `deferredToolRegistry`: enables `tool_search` and `tool_fetch`.
131
+ - `programmaticToolCalling`: opt-in Code Mode / Programmatic Tool Calling surface. When enabled, `code_executor` runs a bounded JavaScript async body with `tools.<name>(params)` and `callTool(name, params)` helpers for batching existing agent-core tools behind one model-level tool call.
132
+
133
+ Example:
134
+
135
+ ```ts
136
+ const tools = createAgentCoreToolDefinitions({
137
+ workspace: process.cwd(),
138
+ interactive: false,
139
+ deferredToolRegistry,
140
+ programmaticToolCalling: { maxToolCalls: 10, timeout: 60_000 },
141
+ });
142
+ ```
130
143
 
131
144
  ### Interactive and cancellation contract
132
145
 
@@ -0,0 +1,5 @@
1
+ import { BackgroundProcessRegistry } from "../../backgroundProcessRegistry";
2
+ import type { AgenticToolOptions } from "../types";
3
+ export declare function getBackgroundRegistry(options: AgenticToolOptions): BackgroundProcessRegistry;
4
+ export declare function disposeBackgroundRegistry(options: AgenticToolOptions): void;
5
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/background/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,yBAAyB,CAW5F;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAO3E"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBackgroundRegistry = getBackgroundRegistry;
4
+ exports.disposeBackgroundRegistry = disposeBackgroundRegistry;
5
+ const backgroundProcessRegistry_1 = require("../../backgroundProcessRegistry");
6
+ const scopedRegistries = new WeakMap();
7
+ function getBackgroundRegistry(options) {
8
+ if (options.backgroundRegistry) {
9
+ return options.backgroundRegistry;
10
+ }
11
+ let registry = scopedRegistries.get(options);
12
+ if (!registry) {
13
+ registry = new backgroundProcessRegistry_1.BackgroundProcessRegistry({ maxConcurrent: options.maxBackgroundProcesses });
14
+ scopedRegistries.set(options, registry);
15
+ }
16
+ return registry;
17
+ }
18
+ function disposeBackgroundRegistry(options) {
19
+ const registry = scopedRegistries.get(options);
20
+ if (!registry) {
21
+ return;
22
+ }
23
+ registry.dispose();
24
+ scopedRegistries.delete(options);
25
+ }
@@ -0,0 +1,3 @@
1
+ import type { AgenticToolOptions, CustomToolDefinition } from "../types";
2
+ export declare function createBackgroundTools(options: AgenticToolOptions): CustomToolDefinition[];
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/background/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAIzE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CA+BzF"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBackgroundTools = createBackgroundTools;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const results_1 = require("../shared/results");
6
+ const state_1 = require("./state");
7
+ function createBackgroundTools(options) {
8
+ return [
9
+ {
10
+ name: "background_status",
11
+ label: "Background Task Status",
12
+ description: "Query the status of a background task by its backgroundTaskId. Returns the task record including status, stdout, stderr, and exit code.",
13
+ parameters: typebox_1.Type.Object({
14
+ backgroundTaskId: typebox_1.Type.String({
15
+ description: "The backgroundTaskId returned when launching a background task",
16
+ }),
17
+ }),
18
+ execute: (_toolCallId, params) => {
19
+ const backgroundTaskId = String(params.backgroundTaskId);
20
+ const record = (0, state_1.getBackgroundRegistry)(options).get(backgroundTaskId);
21
+ if (!record) {
22
+ return (0, results_1.errorResult)(`Background task not found: ${backgroundTaskId}`);
23
+ }
24
+ return (0, results_1.jsonResult)(record);
25
+ },
26
+ },
27
+ {
28
+ name: "background_list",
29
+ label: "List Background Tasks",
30
+ description: "List all tracked background tasks with their current status.",
31
+ parameters: typebox_1.Type.Object({}),
32
+ execute: () => (0, results_1.jsonResult)({
33
+ tasks: (0, state_1.getBackgroundRegistry)(options).list(),
34
+ }),
35
+ },
36
+ ];
37
+ }
@@ -0,0 +1,3 @@
1
+ import type { CustomToolDefinition } from "../types";
2
+ export declare function createBrowserTool(): CustomToolDefinition;
3
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/browser/tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAoBrD,wBAAgB,iBAAiB,IAAI,oBAAoB,CA+DxD"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBrowserTool = createBrowserTool;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const results_1 = require("../shared/results");
6
+ let browserInstance = null;
7
+ function createBrowserTool() {
8
+ return {
9
+ name: "browser",
10
+ label: "Headless Browser",
11
+ description: "Interact with a headless browser. Actions: navigate, click, type, evaluate, screenshot, close.",
12
+ parameters: typebox_1.Type.Object({
13
+ action: typebox_1.Type.String({
14
+ description: "Action: navigate | click | type | evaluate | screenshot | close",
15
+ }),
16
+ url: typebox_1.Type.Optional(typebox_1.Type.String({ description: "URL to navigate to" })),
17
+ selector: typebox_1.Type.Optional(typebox_1.Type.String({ description: "CSS selector for click/type" })),
18
+ text: typebox_1.Type.Optional(typebox_1.Type.String({ description: "Text to type" })),
19
+ script: typebox_1.Type.Optional(typebox_1.Type.String({ description: "JavaScript to evaluate in page" })),
20
+ options: typebox_1.Type.Optional(typebox_1.Type.Object({}, { additionalProperties: true })),
21
+ }),
22
+ execute: async (_toolCallId, params) => {
23
+ let puppeteer;
24
+ try {
25
+ // eslint-disable-next-line @typescript-eslint/no-implied-eval, @typescript-eslint/no-unsafe-assignment
26
+ puppeteer = await new Function("id", "return import(id)")("puppeteer");
27
+ }
28
+ catch {
29
+ return (0, results_1.errorResult)("puppeteer is not installed. Install it with: npm install puppeteer");
30
+ }
31
+ if (!browserInstance) {
32
+ browserInstance = await puppeteer.launch({
33
+ headless: true,
34
+ args: ["--no-sandbox", "--disable-setuid-sandbox"],
35
+ });
36
+ }
37
+ const browser = browserInstance;
38
+ const page = (await browser.pages())[0] ?? await browser.newPage();
39
+ switch (String(params.action)) {
40
+ case "navigate":
41
+ await page.goto(String(params.url), { waitUntil: "domcontentloaded" });
42
+ return (0, results_1.ok)(`Navigated to ${String(params.url)} — title: ${await page.title()}`);
43
+ case "click":
44
+ await page.click(String(params.selector));
45
+ return (0, results_1.ok)(`Clicked ${String(params.selector)}`);
46
+ case "type":
47
+ await page.type(String(params.selector), String(params.text));
48
+ return (0, results_1.ok)(`Typed into ${String(params.selector)}`);
49
+ case "evaluate":
50
+ return (0, results_1.jsonResult)(await page.evaluate(String(params.script)));
51
+ case "screenshot": {
52
+ const buffer = await page.screenshot({ encoding: "base64" });
53
+ return (0, results_1.ok)(`Screenshot captured (${buffer.length} base64 chars).`);
54
+ }
55
+ case "close":
56
+ await browser.close();
57
+ browserInstance = null;
58
+ return (0, results_1.ok)("Browser closed.");
59
+ default:
60
+ return (0, results_1.errorResult)(`Unknown browser action: ${String(params.action)}`);
61
+ }
62
+ },
63
+ };
64
+ }
@@ -0,0 +1,10 @@
1
+ export declare function resetRunScopedConfig(): void;
2
+ export declare function isValidConfigKey(key: string): boolean;
3
+ export declare function validateConfigValue(key: string, value: unknown): string | null;
4
+ export declare function getConfigValue(key: string): unknown;
5
+ export declare function getConfigDefault(key: string): unknown;
6
+ export declare function listConfigKeys(): string[];
7
+ export declare function getRunScopedConfigEntries(): IterableIterator<[string, unknown]>;
8
+ export declare function setConfigValue(key: string, value: unknown, scope: string): void;
9
+ export declare function resetConfigValue(key?: string): void;
10
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/config/state.ts"],"names":[],"mappings":"AAwDA,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKrD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY9E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CASnD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKrD;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAMzC;AAED,wBAAgB,yBAAyB,IAAI,gBAAgB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAE/E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAU/E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAMnD"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetRunScopedConfig = resetRunScopedConfig;
4
+ exports.isValidConfigKey = isValidConfigKey;
5
+ exports.validateConfigValue = validateConfigValue;
6
+ exports.getConfigValue = getConfigValue;
7
+ exports.getConfigDefault = getConfigDefault;
8
+ exports.listConfigKeys = listConfigKeys;
9
+ exports.getRunScopedConfigEntries = getRunScopedConfigEntries;
10
+ exports.setConfigValue = setConfigValue;
11
+ exports.resetConfigValue = resetConfigValue;
12
+ const babysitter_sdk_1 = require("@a5c-ai/babysitter-sdk");
13
+ const EXTENDED_CONFIG_KEYS = new Set([
14
+ "model",
15
+ "provider",
16
+ "breakpoint.autoApproveAfterN",
17
+ "breakpoint.presentAlwaysApprove",
18
+ ]);
19
+ const BABYSITTER_CONFIG_KEYS = new Set([
20
+ "runsDir",
21
+ "maxIterations",
22
+ "qualityThreshold",
23
+ "timeout",
24
+ "logLevel",
25
+ "allowSecretLogs",
26
+ "hookTimeout",
27
+ "nodeTaskTimeout",
28
+ "clockStepMs",
29
+ "clockStartMs",
30
+ "layoutVersion",
31
+ "largeResultPreviewLimit",
32
+ ]);
33
+ const CONFIG_KEY_TYPES = {
34
+ runsDir: "string",
35
+ maxIterations: "number",
36
+ qualityThreshold: "number",
37
+ timeout: "number",
38
+ logLevel: "string",
39
+ allowSecretLogs: "boolean",
40
+ hookTimeout: "number",
41
+ nodeTaskTimeout: "number",
42
+ clockStepMs: "number",
43
+ clockStartMs: "number",
44
+ layoutVersion: "string",
45
+ largeResultPreviewLimit: "number",
46
+ model: "string",
47
+ provider: "string",
48
+ };
49
+ const VALID_LOG_LEVELS = new Set(["debug", "info", "warn", "error", "silent"]);
50
+ const CONFIG_KEY_TO_ENV = {
51
+ runsDir: babysitter_sdk_1.CONFIG_ENV_VARS.RUNS_DIR,
52
+ maxIterations: babysitter_sdk_1.CONFIG_ENV_VARS.MAX_ITERATIONS,
53
+ qualityThreshold: babysitter_sdk_1.CONFIG_ENV_VARS.QUALITY_THRESHOLD,
54
+ timeout: babysitter_sdk_1.CONFIG_ENV_VARS.TIMEOUT,
55
+ logLevel: babysitter_sdk_1.CONFIG_ENV_VARS.LOG_LEVEL,
56
+ allowSecretLogs: babysitter_sdk_1.CONFIG_ENV_VARS.ALLOW_SECRET_LOGS,
57
+ hookTimeout: babysitter_sdk_1.CONFIG_ENV_VARS.HOOK_TIMEOUT,
58
+ nodeTaskTimeout: babysitter_sdk_1.CONFIG_ENV_VARS.NODE_TASK_TIMEOUT,
59
+ };
60
+ const runScopedConfig = new Map();
61
+ function resetRunScopedConfig() {
62
+ runScopedConfig.clear();
63
+ }
64
+ function isValidConfigKey(key) {
65
+ return BABYSITTER_CONFIG_KEYS.has(key)
66
+ || EXTENDED_CONFIG_KEYS.has(key)
67
+ || key.startsWith("compression.")
68
+ || key.startsWith("breakpoint.");
69
+ }
70
+ function validateConfigValue(key, value) {
71
+ const expectedType = CONFIG_KEY_TYPES[key];
72
+ if (expectedType && typeof value !== expectedType) {
73
+ return `Expected '${key}' to be ${expectedType}, got ${typeof value}.`;
74
+ }
75
+ if (key === "logLevel" && typeof value === "string" && !VALID_LOG_LEVELS.has(value)) {
76
+ return `Invalid logLevel '${value}'. Must be one of: ${[...VALID_LOG_LEVELS].join(", ")}.`;
77
+ }
78
+ if (expectedType === "number" && typeof value === "number" && key !== "clockStartMs" && value <= 0) {
79
+ return `'${key}' must be a positive number.`;
80
+ }
81
+ return null;
82
+ }
83
+ function getConfigValue(key) {
84
+ if (runScopedConfig.has(key)) {
85
+ return runScopedConfig.get(key);
86
+ }
87
+ if (BABYSITTER_CONFIG_KEYS.has(key)) {
88
+ const config = (0, babysitter_sdk_1.getConfig)();
89
+ return config[key];
90
+ }
91
+ return undefined;
92
+ }
93
+ function getConfigDefault(key) {
94
+ if (BABYSITTER_CONFIG_KEYS.has(key)) {
95
+ return babysitter_sdk_1.DEFAULTS[key];
96
+ }
97
+ return undefined;
98
+ }
99
+ function listConfigKeys() {
100
+ return [...new Set([
101
+ ...BABYSITTER_CONFIG_KEYS,
102
+ ...EXTENDED_CONFIG_KEYS,
103
+ ...runScopedConfig.keys(),
104
+ ])];
105
+ }
106
+ function getRunScopedConfigEntries() {
107
+ return runScopedConfig.entries();
108
+ }
109
+ function setConfigValue(key, value, scope) {
110
+ if (scope === "global") {
111
+ const envKey = CONFIG_KEY_TO_ENV[key];
112
+ if (envKey) {
113
+ process.env[envKey] = String(value);
114
+ }
115
+ else {
116
+ process.env[`BABYSITTER_${key.replace(/\./g, "_").toUpperCase()}`] = String(value);
117
+ }
118
+ }
119
+ runScopedConfig.set(key, value);
120
+ }
121
+ function resetConfigValue(key) {
122
+ if (key) {
123
+ runScopedConfig.delete(key);
124
+ return;
125
+ }
126
+ runScopedConfig.clear();
127
+ }
@@ -0,0 +1,3 @@
1
+ import type { CustomToolDefinition } from "../types";
2
+ export declare function createConfigTool(): CustomToolDefinition;
3
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/config/tool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAarD,wBAAgB,gBAAgB,IAAI,oBAAoB,CAuFvD"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createConfigTool = createConfigTool;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const results_1 = require("../shared/results");
6
+ const state_1 = require("./state");
7
+ function createConfigTool() {
8
+ return {
9
+ name: "config",
10
+ label: "Runtime Config",
11
+ description: "Read and modify babysitter configuration at runtime. Supports get/set/list/reset actions for standard config keys, model/provider selection, and compression settings.",
12
+ parameters: typebox_1.Type.Object({
13
+ action: typebox_1.Type.Union([
14
+ typebox_1.Type.Literal("get"),
15
+ typebox_1.Type.Literal("set"),
16
+ typebox_1.Type.Literal("list"),
17
+ typebox_1.Type.Literal("reset"),
18
+ ], { description: "Action to perform: get, set, list, or reset" }),
19
+ key: typebox_1.Type.Optional(typebox_1.Type.String({ description: "Config key path (dot notation for nested, e.g. 'compression.enabled')" })),
20
+ value: typebox_1.Type.Optional(typebox_1.Type.Unknown({ description: "New value for set action" })),
21
+ scope: typebox_1.Type.Optional(typebox_1.Type.Union([typebox_1.Type.Literal("run"), typebox_1.Type.Literal("global")], {
22
+ description: "Scope: 'run' (default, in-memory) or 'global' (env vars)",
23
+ })),
24
+ }),
25
+ execute: (_toolCallId, params) => {
26
+ const action = params.action;
27
+ if (!action) {
28
+ return (0, results_1.errorResult)("'action' parameter is required (get, set, list, reset).");
29
+ }
30
+ const key = params.key;
31
+ const value = params.value;
32
+ const scope = params.scope ?? "run";
33
+ switch (action) {
34
+ case "get":
35
+ if (!key) {
36
+ const merged = {};
37
+ for (const configKey of (0, state_1.listConfigKeys)()) {
38
+ merged[configKey] = (0, state_1.getConfigValue)(configKey);
39
+ }
40
+ return (0, results_1.jsonResult)(merged);
41
+ }
42
+ if (!(0, state_1.isValidConfigKey)(key)) {
43
+ return (0, results_1.errorResult)(`Error: Unknown config key '${key}'.`);
44
+ }
45
+ return (0, results_1.jsonResult)({ key, value: (0, state_1.getConfigValue)(key) });
46
+ case "set":
47
+ if (!key) {
48
+ return (0, results_1.errorResult)("Error: 'key' parameter is required for set action.");
49
+ }
50
+ if (value === undefined) {
51
+ return (0, results_1.errorResult)("Error: 'value' parameter is required for set action.");
52
+ }
53
+ if (!(0, state_1.isValidConfigKey)(key)) {
54
+ return (0, results_1.errorResult)(`Error: Unknown config key '${key}'.`);
55
+ }
56
+ {
57
+ const validationError = (0, state_1.validateConfigValue)(key, value);
58
+ if (validationError) {
59
+ return (0, results_1.errorResult)(`Error: ${validationError}`);
60
+ }
61
+ }
62
+ (0, state_1.setConfigValue)(key, value, scope);
63
+ return (0, results_1.ok)(`Set '${key}' to ${JSON.stringify(value)} (scope: ${scope}).`);
64
+ case "list": {
65
+ const entries = {};
66
+ for (const configKey of (0, state_1.listConfigKeys)()) {
67
+ entries[configKey] = {
68
+ current: (0, state_1.getConfigValue)(configKey),
69
+ default: (0, state_1.getConfigDefault)(configKey),
70
+ };
71
+ }
72
+ for (const [configKey, configValue] of (0, state_1.getRunScopedConfigEntries)()) {
73
+ if (!entries[configKey]) {
74
+ entries[configKey] = { current: configValue, default: undefined };
75
+ }
76
+ }
77
+ return (0, results_1.jsonResult)(entries);
78
+ }
79
+ case "reset":
80
+ (0, state_1.resetConfigValue)(key);
81
+ return (0, results_1.ok)(key ? `Reset '${key}' to default.` : "Reset all config to defaults.");
82
+ default:
83
+ return (0, results_1.errorResult)(`Error: Unknown action '${action}'. Use get, set, list, or reset.`);
84
+ }
85
+ },
86
+ };
87
+ }
@@ -0,0 +1,3 @@
1
+ import type { AgenticToolOptions, CustomToolDefinition } from "../types";
2
+ export declare function createDiscoveryTools(options: AgenticToolOptions): CustomToolDefinition[];
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/discovery/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGzE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CA0ExF"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createDiscoveryTools = createDiscoveryTools;
4
+ const typebox_1 = require("@sinclair/typebox");
5
+ const results_1 = require("../shared/results");
6
+ function createDiscoveryTools(options) {
7
+ return [
8
+ {
9
+ name: "tool_search",
10
+ label: "Search Tools",
11
+ description: "Search available tools by name or description. Returns lightweight entries. Use tool_fetch to get full schema for a specific tool.",
12
+ parameters: typebox_1.Type.Object({
13
+ query: typebox_1.Type.String({ description: "Search query (matched against tool names and descriptions)" }),
14
+ max_results: typebox_1.Type.Optional(typebox_1.Type.Number({ description: "Maximum results to return (default 20)" })),
15
+ }),
16
+ execute: (_toolCallId, params) => {
17
+ const registry = options.deferredToolRegistry;
18
+ if (!registry) {
19
+ return (0, results_1.errorResult)("Tool search is not available — no deferred tool registry configured.");
20
+ }
21
+ const query = String(params.query ?? "");
22
+ const maxResults = typeof params.max_results === "number" ? params.max_results : 20;
23
+ const results = registry.searchTools(query, maxResults);
24
+ return (0, results_1.jsonResult)({
25
+ query,
26
+ resultCount: results.length,
27
+ tools: results.map((tool) => ({
28
+ name: tool.name,
29
+ description: tool.description,
30
+ source: tool.source,
31
+ sourceQualifier: tool.sourceQualifier,
32
+ })),
33
+ });
34
+ },
35
+ },
36
+ {
37
+ name: "tool_fetch",
38
+ label: "Fetch Tool Schema",
39
+ description: "Fetch the full JSON Schema for a tool by name. Returns the complete input/output schema needed to invoke the tool.",
40
+ parameters: typebox_1.Type.Object({
41
+ name: typebox_1.Type.String({ description: "Tool name to fetch schema for" }),
42
+ source: typebox_1.Type.Optional(typebox_1.Type.String({ description: "Source filter: builtin, mcp, plugin, custom" })),
43
+ source_qualifier: typebox_1.Type.Optional(typebox_1.Type.String({ description: "Source qualifier (e.g. MCP server name)" })),
44
+ }),
45
+ execute: async (_toolCallId, params) => {
46
+ const registry = options.deferredToolRegistry;
47
+ if (!registry) {
48
+ return (0, results_1.errorResult)("Tool fetch is not available — no deferred tool registry configured.");
49
+ }
50
+ const toolName = String(params.name ?? "");
51
+ const validSources = new Set(["builtin", "mcp", "plugin", "custom"]);
52
+ const rawSource = typeof params.source === "string" ? params.source : undefined;
53
+ if (rawSource && !validSources.has(rawSource)) {
54
+ return (0, results_1.errorResult)(`Invalid source "${rawSource}". Valid sources: builtin, mcp, plugin, custom.`);
55
+ }
56
+ const resolved = await registry.fetchSchema(toolName, rawSource, typeof params.source_qualifier === "string" ? params.source_qualifier : undefined);
57
+ if (!resolved) {
58
+ return (0, results_1.errorResult)(`Tool "${toolName}" not found or schema could not be loaded.`);
59
+ }
60
+ return (0, results_1.jsonResult)({
61
+ name: resolved.name,
62
+ description: resolved.description,
63
+ source: resolved.source,
64
+ sourceQualifier: resolved.sourceQualifier,
65
+ inputSchema: resolved.schema.inputSchema,
66
+ outputSchema: resolved.schema.outputSchema,
67
+ });
68
+ },
69
+ },
70
+ ];
71
+ }
@@ -0,0 +1,5 @@
1
+ import type { AgenticToolOptions, CustomToolDefinition } from "./types";
2
+ export declare function createAgentCoreToolDefinitions(options: AgenticToolOptions): CustomToolDefinition[];
3
+ export declare function disposeAgentCoreToolDefinitions(definitions: CustomToolDefinition[]): void;
4
+ export declare const createAgenticToolDefinitions: typeof createAgentCoreToolDefinitions;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agenticTools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAmBxE,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAsBlG;AAED,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAOzF;AAED,eAAO,MAAM,4BAA4B,uCAAiC,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createAgenticToolDefinitions = void 0;
4
+ exports.createAgentCoreToolDefinitions = createAgentCoreToolDefinitions;
5
+ exports.disposeAgentCoreToolDefinitions = disposeAgentCoreToolDefinitions;
6
+ const state_1 = require("./background/state");
7
+ const tools_1 = require("./background/tools");
8
+ const tool_1 = require("./browser/tool");
9
+ const tool_2 = require("./config/tool");
10
+ const tools_2 = require("./discovery/tools");
11
+ const results_1 = require("./shared/results");
12
+ const tools_3 = require("./web/tools");
13
+ const code_1 = require("./tools/code");
14
+ const delegation_1 = require("./tools/delegation");
15
+ const execution_1 = require("./tools/execution");
16
+ const fileSystem_1 = require("./tools/fileSystem");
17
+ const programmaticToolCalling_1 = require("./tools/programmaticToolCalling");
18
+ const toolDefinitionScopes = new WeakMap();
19
+ function createAgentCoreToolDefinitions(options) {
20
+ const baseTools = [
21
+ ...(0, fileSystem_1.createFileSystemTools)(options),
22
+ ...(0, execution_1.createExecutionTools)(options),
23
+ (0, tool_1.createBrowserTool)(),
24
+ ...(0, delegation_1.createDelegationTools)(options),
25
+ ...(0, code_1.createCodeTools)(options),
26
+ (0, tool_2.createConfigTool)(),
27
+ ...(0, tools_1.createBackgroundTools)(options),
28
+ ...(0, tools_2.createDiscoveryTools)(options),
29
+ ...(0, tools_3.createWebTools)(),
30
+ ].map((tool) => (0, results_1.wrapToolDefinition)(tool, options.onToolUse));
31
+ const tools = (0, programmaticToolCalling_1.shouldEnableProgrammaticToolCalling)(options)
32
+ ? [
33
+ ...baseTools,
34
+ (0, results_1.wrapToolDefinition)((0, programmaticToolCalling_1.createProgrammaticToolCallingTool)(options, baseTools), options.onToolUse),
35
+ ]
36
+ : baseTools;
37
+ toolDefinitionScopes.set(tools, options);
38
+ return tools;
39
+ }
40
+ function disposeAgentCoreToolDefinitions(definitions) {
41
+ const options = toolDefinitionScopes.get(definitions);
42
+ if (!options) {
43
+ return;
44
+ }
45
+ (0, state_1.disposeBackgroundRegistry)(options);
46
+ toolDefinitionScopes.delete(definitions);
47
+ }
48
+ exports.createAgenticToolDefinitions = createAgentCoreToolDefinitions;
@@ -0,0 +1,5 @@
1
+ export declare function assertInsideWorkspace(target: string, workspace: string): void;
2
+ export declare function resolveSafe(workspace: string, filePath: string): string;
3
+ export declare function globToRegex(pattern: string): RegExp;
4
+ export declare function walkDir(directory: string, includeHidden: boolean, limit: number, results: string[]): void;
5
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/agenticTools/shared/paths.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAU7E;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2BnD;AAED,wBAAgB,OAAO,CACrB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EAAE,GAChB,IAAI,CA2BN"}