@agent-native/core 0.45.1 → 0.47.1
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.
- package/README.md +1 -0
- package/dist/agent/production-agent.d.ts +28 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +14 -7
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/skills.d.ts +2 -2
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +33 -0
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/components/LiveCursorOverlay.d.ts +46 -0
- package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -0
- package/dist/client/components/LiveCursorOverlay.js +137 -0
- package/dist/client/components/LiveCursorOverlay.js.map +1 -0
- package/dist/client/components/PresenceBar.d.ts +11 -1
- package/dist/client/components/PresenceBar.d.ts.map +1 -1
- package/dist/client/components/PresenceBar.js +39 -7
- package/dist/client/components/PresenceBar.js.map +1 -1
- package/dist/client/components/RemoteSelectionRings.d.ts +43 -0
- package/dist/client/components/RemoteSelectionRings.d.ts.map +1 -0
- package/dist/client/components/RemoteSelectionRings.js +116 -0
- package/dist/client/components/RemoteSelectionRings.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -1
- package/dist/coding-tools/run-code.d.ts +40 -0
- package/dist/coding-tools/run-code.d.ts.map +1 -0
- package/dist/coding-tools/run-code.js +511 -0
- package/dist/coding-tools/run-code.js.map +1 -0
- package/dist/collab/awareness.d.ts +25 -0
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/awareness.js +42 -5
- package/dist/collab/awareness.js.map +1 -1
- package/dist/collab/client.d.ts +19 -1
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +362 -57
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/follow-mode.d.ts +56 -0
- package/dist/collab/follow-mode.d.ts.map +1 -0
- package/dist/collab/follow-mode.js +54 -0
- package/dist/collab/follow-mode.js.map +1 -0
- package/dist/collab/index.d.ts +3 -1
- package/dist/collab/index.d.ts.map +1 -1
- package/dist/collab/index.js +5 -1
- package/dist/collab/index.js.map +1 -1
- package/dist/collab/presence.d.ts +56 -0
- package/dist/collab/presence.d.ts.map +1 -0
- package/dist/collab/presence.js +98 -0
- package/dist/collab/presence.js.map +1 -0
- package/dist/collab/routes.d.ts.map +1 -1
- package/dist/collab/routes.js +33 -6
- package/dist/collab/routes.js.map +1 -1
- package/dist/collab/struct-routes.d.ts.map +1 -1
- package/dist/collab/struct-routes.js +24 -4
- package/dist/collab/struct-routes.js.map +1 -1
- package/dist/collab/ydoc-manager.d.ts +13 -0
- package/dist/collab/ydoc-manager.d.ts.map +1 -1
- package/dist/collab/ydoc-manager.js +51 -15
- package/dist/collab/ydoc-manager.js.map +1 -1
- package/dist/extensions/fetch-tool.d.ts.map +1 -1
- package/dist/extensions/fetch-tool.js +62 -7
- package/dist/extensions/fetch-tool.js.map +1 -1
- package/dist/extensions/web-search-tool.d.ts +41 -0
- package/dist/extensions/web-search-tool.d.ts.map +1 -0
- package/dist/extensions/web-search-tool.js +200 -0
- package/dist/extensions/web-search-tool.js.map +1 -0
- package/dist/provider-api/custom-registry.d.ts +92 -0
- package/dist/provider-api/custom-registry.d.ts.map +1 -0
- package/dist/provider-api/custom-registry.js +289 -0
- package/dist/provider-api/custom-registry.js.map +1 -0
- package/dist/provider-api/index.d.ts +80 -44
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +569 -18
- package/dist/provider-api/index.js.map +1 -1
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
- package/dist/secrets/register-framework-secrets.js +36 -3
- package/dist/secrets/register-framework-secrets.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +36 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +119 -0
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/collab-plugin.d.ts +6 -0
- package/dist/server/collab-plugin.d.ts.map +1 -1
- package/dist/server/collab-plugin.js +105 -5
- package/dist/server/collab-plugin.js.map +1 -1
- package/dist/server/poll-events.d.ts +5 -0
- package/dist/server/poll-events.d.ts.map +1 -1
- package/dist/server/poll-events.js +27 -4
- package/dist/server/poll-events.js.map +1 -1
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +185 -37
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +12 -2
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +185 -37
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +12 -2
- package/dist/workspace-files/index.d.ts +4 -0
- package/dist/workspace-files/index.d.ts.map +1 -0
- package/dist/workspace-files/index.js +4 -0
- package/dist/workspace-files/index.js.map +1 -0
- package/dist/workspace-files/schema.d.ts +195 -0
- package/dist/workspace-files/schema.d.ts.map +1 -0
- package/dist/workspace-files/schema.js +48 -0
- package/dist/workspace-files/schema.js.map +1 -0
- package/dist/workspace-files/store.d.ts +89 -0
- package/dist/workspace-files/store.d.ts.map +1 -0
- package/dist/workspace-files/store.js +298 -0
- package/dist/workspace-files/store.js.map +1 -0
- package/dist/workspace-files/tool.d.ts +15 -0
- package/dist/workspace-files/tool.d.ts.map +1 -0
- package/dist/workspace-files/tool.js +226 -0
- package/dist/workspace-files/tool.js.map +1 -0
- package/docs/content/real-time-collaboration.md +481 -97
- package/package.json +2 -1
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +185 -37
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +12 -2
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +185 -37
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +12 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-framework-secrets.d.ts","sourceRoot":"","sources":["../../src/secrets/register-framework-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"register-framework-secrets.d.ts","sourceRoot":"","sources":["../../src/secrets/register-framework-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,wBAAgB,wBAAwB,IAAI,IAAI,CA6C/C"}
|
|
@@ -14,9 +14,42 @@
|
|
|
14
14
|
* gateway (or Groq as a BYOK fallback), so the framework no longer registers
|
|
15
15
|
* the OpenAI key. Templates that need it (e.g. Clips) register it themselves.
|
|
16
16
|
*/
|
|
17
|
+
import { getRequiredSecret, registerRequiredSecret } from "./register.js";
|
|
17
18
|
export function registerFrameworkSecrets() {
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
|
|
19
|
+
// Web-search tool backends — optional; the tool selects the first
|
|
20
|
+
// configured key at call time (Brave → Tavily → Exa).
|
|
21
|
+
const webSearchKeys = [
|
|
22
|
+
{
|
|
23
|
+
key: "BRAVE_SEARCH_API_KEY",
|
|
24
|
+
label: "Brave Search API Key",
|
|
25
|
+
description: "Enables the web-search agent tool via Brave Search. At least one of BRAVE_SEARCH_API_KEY, TAVILY_API_KEY, or EXA_API_KEY is needed.",
|
|
26
|
+
docsUrl: "https://brave.com/search/api/",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: "TAVILY_API_KEY",
|
|
30
|
+
label: "Tavily API Key",
|
|
31
|
+
description: "Enables the web-search agent tool via Tavily. Used as fallback when BRAVE_SEARCH_API_KEY is not set.",
|
|
32
|
+
docsUrl: "https://tavily.com/",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
key: "EXA_API_KEY",
|
|
36
|
+
label: "Exa API Key",
|
|
37
|
+
description: "Enables the web-search agent tool via Exa. Used as fallback when neither BRAVE_SEARCH_API_KEY nor TAVILY_API_KEY is set.",
|
|
38
|
+
docsUrl: "https://exa.ai/",
|
|
39
|
+
},
|
|
40
|
+
];
|
|
41
|
+
for (const entry of webSearchKeys) {
|
|
42
|
+
if (!getRequiredSecret(entry.key)) {
|
|
43
|
+
registerRequiredSecret({
|
|
44
|
+
key: entry.key,
|
|
45
|
+
label: entry.label,
|
|
46
|
+
description: entry.description,
|
|
47
|
+
docsUrl: entry.docsUrl,
|
|
48
|
+
scope: "workspace",
|
|
49
|
+
kind: "api-key",
|
|
50
|
+
required: false,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
21
54
|
}
|
|
22
55
|
//# sourceMappingURL=register-framework-secrets.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-framework-secrets.js","sourceRoot":"","sources":["../../src/secrets/register-framework-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,UAAU,wBAAwB;IACtC,
|
|
1
|
+
{"version":3,"file":"register-framework-secrets.js","sourceRoot":"","sources":["../../src/secrets/register-framework-secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,UAAU,wBAAwB;IACtC,kEAAkE;IAClE,sDAAsD;IACtD,MAAM,aAAa,GAKd;QACH;YACE,GAAG,EAAE,sBAAsB;YAC3B,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EACT,qIAAqI;YACvI,OAAO,EAAE,+BAA+B;SACzC;QACD;YACE,GAAG,EAAE,gBAAgB;YACrB,KAAK,EAAE,gBAAgB;YACvB,WAAW,EACT,sGAAsG;YACxG,OAAO,EAAE,qBAAqB;SAC/B;QACD;YACE,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,aAAa;YACpB,WAAW,EACT,0HAA0H;YAC5H,OAAO,EAAE,iBAAiB;SAC3B;KACF,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,sBAAsB,CAAC;gBACrB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["/**\n * Framework-level secret registrations.\n *\n * Side-effect module — imported by the core-routes plugin at boot so the\n * sidebar settings UI and the `/_agent-native/secrets` list route surface the\n * relevant keys in every template.\n *\n * Each call uses a `getRequiredSecret` guard so a template that has already\n * registered the same key (often with stricter settings like `required: true`)\n * wins — the framework registration is a fallback, not an override.\n *\n * NOTE: The framework previously registered OPENAI_API_KEY here for Whisper\n * voice transcription. Voice transcription now routes through the Builder.io\n * gateway (or Groq as a BYOK fallback), so the framework no longer registers\n * the OpenAI key. Templates that need it (e.g. Clips) register it themselves.\n */\n\nimport { getRequiredSecret, registerRequiredSecret } from \"./register.js\";\n\nexport function registerFrameworkSecrets(): void {\n // Web-search tool backends — optional; the tool selects the first\n // configured key at call time (Brave → Tavily → Exa).\n const webSearchKeys: Array<{\n key: string;\n label: string;\n description: string;\n docsUrl: string;\n }> = [\n {\n key: \"BRAVE_SEARCH_API_KEY\",\n label: \"Brave Search API Key\",\n description:\n \"Enables the web-search agent tool via Brave Search. At least one of BRAVE_SEARCH_API_KEY, TAVILY_API_KEY, or EXA_API_KEY is needed.\",\n docsUrl: \"https://brave.com/search/api/\",\n },\n {\n key: \"TAVILY_API_KEY\",\n label: \"Tavily API Key\",\n description:\n \"Enables the web-search agent tool via Tavily. Used as fallback when BRAVE_SEARCH_API_KEY is not set.\",\n docsUrl: \"https://tavily.com/\",\n },\n {\n key: \"EXA_API_KEY\",\n label: \"Exa API Key\",\n description:\n \"Enables the web-search agent tool via Exa. Used as fallback when neither BRAVE_SEARCH_API_KEY nor TAVILY_API_KEY is set.\",\n docsUrl: \"https://exa.ai/\",\n },\n ];\n\n for (const entry of webSearchKeys) {\n if (!getRequiredSecret(entry.key)) {\n registerRequiredSecret({\n key: entry.key,\n label: entry.label,\n description: entry.description,\n docsUrl: entry.docsUrl,\n scope: \"workspace\",\n kind: \"api-key\",\n required: false,\n });\n }\n }\n}\n"]}
|
|
@@ -198,6 +198,42 @@ export interface AgentChatPluginOptions {
|
|
|
198
198
|
context: import("../a2a/types.js").A2AHandlerContext;
|
|
199
199
|
userEmail: string | undefined;
|
|
200
200
|
}) => import("../a2a/types.js").Message | string | null | undefined | Promise<import("../a2a/types.js").Message | string | null | undefined>;
|
|
201
|
+
/**
|
|
202
|
+
* Code-execution capability for the production agent.
|
|
203
|
+
*
|
|
204
|
+
* - `"off"` (default) — no code-execution tools in production.
|
|
205
|
+
* - `"sandboxed"` — registers the `run-code` tool (isolated Node.js sandbox
|
|
206
|
+
* with a bridge to allowlisted registered tools). Safe for shared or
|
|
207
|
+
* hosted deployments.
|
|
208
|
+
* - `"trusted"` — registers both the full coding tool registry
|
|
209
|
+
* (bash / read / edit / write) and the `run-code` sandbox. Only use in
|
|
210
|
+
* single-tenant or operator-controlled deployments where full shell access
|
|
211
|
+
* to the host machine is intentional.
|
|
212
|
+
*
|
|
213
|
+
* The `AGENT_PROD_CODE_EXECUTION` environment variable (`"trusted"`,
|
|
214
|
+
* `"sandboxed"`, or `"off"`) takes precedence over this option, allowing
|
|
215
|
+
* per-deployment overrides without code changes.
|
|
216
|
+
*
|
|
217
|
+
* Dev-mode behavior is unchanged — both the coding tools and `run-code` are
|
|
218
|
+
* always available when the environment allows toggling.
|
|
219
|
+
*/
|
|
220
|
+
codeExecution?: {
|
|
221
|
+
production?: "off" | "sandboxed" | "trusted";
|
|
222
|
+
/**
|
|
223
|
+
* Extra registered-tool names the sandbox bridge may forward (beyond the
|
|
224
|
+
* default allowlist: provider-api-request, provider-api-docs,
|
|
225
|
+
* provider-api-catalog, web-request).
|
|
226
|
+
*/
|
|
227
|
+
bridgeTools?: string[];
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* App-level default tool-call limits. Individual actions override these with
|
|
231
|
+
* their own `timeoutMs` / `maxResultChars` declarations.
|
|
232
|
+
*/
|
|
233
|
+
toolLimits?: {
|
|
234
|
+
timeoutMs?: number;
|
|
235
|
+
maxResultChars?: number;
|
|
236
|
+
};
|
|
201
237
|
}
|
|
202
238
|
export declare const _agentChatPromptSectionsForTests: {
|
|
203
239
|
frameworkCore: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2821,6 +2821,23 @@ export function createAgentChatPlugin(options) {
|
|
|
2821
2821
|
});
|
|
2822
2822
|
}
|
|
2823
2823
|
catch { }
|
|
2824
|
+
let webSearchTool = {};
|
|
2825
|
+
try {
|
|
2826
|
+
const { createWebSearchToolEntry } = await import("../extensions/web-search-tool.js");
|
|
2827
|
+
const { resolveCredential } = await import("../credentials/index.js");
|
|
2828
|
+
const { getCredentialContext: getCredCtx } = await import("./request-context.js");
|
|
2829
|
+
webSearchTool = createWebSearchToolEntry({
|
|
2830
|
+
resolveCredential,
|
|
2831
|
+
getCredentialContext: () => getCredCtx(),
|
|
2832
|
+
});
|
|
2833
|
+
}
|
|
2834
|
+
catch { }
|
|
2835
|
+
let workspaceFilesTool = {};
|
|
2836
|
+
try {
|
|
2837
|
+
const { createWorkspaceFilesTool } = await import("../workspace-files/tool.js");
|
|
2838
|
+
workspaceFilesTool = createWorkspaceFilesTool();
|
|
2839
|
+
}
|
|
2840
|
+
catch { }
|
|
2824
2841
|
let toolActions = {};
|
|
2825
2842
|
try {
|
|
2826
2843
|
const { createExtensionActionEntries } = await import("../extensions/actions.js");
|
|
@@ -2865,6 +2882,7 @@ export function createAgentChatPlugin(options) {
|
|
|
2865
2882
|
...notificationTools,
|
|
2866
2883
|
...progressTools,
|
|
2867
2884
|
...fetchTool,
|
|
2885
|
+
...webSearchTool,
|
|
2868
2886
|
...toolActions,
|
|
2869
2887
|
...browserSessionTools,
|
|
2870
2888
|
...browserTools,
|
|
@@ -2885,6 +2903,7 @@ export function createAgentChatPlugin(options) {
|
|
|
2885
2903
|
...notificationTools,
|
|
2886
2904
|
...progressTools,
|
|
2887
2905
|
...fetchTool,
|
|
2906
|
+
...webSearchTool,
|
|
2888
2907
|
...toolActions,
|
|
2889
2908
|
...browserSessionTools,
|
|
2890
2909
|
...browserTools,
|
|
@@ -2916,6 +2935,7 @@ export function createAgentChatPlugin(options) {
|
|
|
2916
2935
|
...notificationTools,
|
|
2917
2936
|
...progressTools,
|
|
2918
2937
|
...fetchTool,
|
|
2938
|
+
...webSearchTool,
|
|
2919
2939
|
...toolActions,
|
|
2920
2940
|
...browserSessionTools,
|
|
2921
2941
|
...browserTools,
|
|
@@ -3699,6 +3719,77 @@ export function createAgentChatPlugin(options) {
|
|
|
3699
3719
|
// Code-mode toggle), so the agent has the same DB-admin capability the UI
|
|
3700
3720
|
// does whenever it is available — true agent/UI parity, in App or Code mode.
|
|
3701
3721
|
const dbAdminScripts = process.env.NODE_ENV === "development" ? createDbAdminAgentTools() : {};
|
|
3722
|
+
// -----------------------------------------------------------------------
|
|
3723
|
+
// Production code-execution mode resolution.
|
|
3724
|
+
//
|
|
3725
|
+
// Priority (highest → lowest):
|
|
3726
|
+
// 1. AGENT_PROD_CODE_EXECUTION env var ("trusted" | "sandboxed" | "off")
|
|
3727
|
+
// 2. options.codeExecution.production
|
|
3728
|
+
// 3. Default: "off"
|
|
3729
|
+
//
|
|
3730
|
+
// Dev mode ignores this entirely — dev always gets the full coding surface.
|
|
3731
|
+
// -----------------------------------------------------------------------
|
|
3732
|
+
const rawEnvCodeExec = (process.env.AGENT_PROD_CODE_EXECUTION ?? "")
|
|
3733
|
+
.toLowerCase()
|
|
3734
|
+
.trim();
|
|
3735
|
+
const resolvedProdCodeExec = rawEnvCodeExec === "trusted"
|
|
3736
|
+
? "trusted"
|
|
3737
|
+
: rawEnvCodeExec === "sandboxed"
|
|
3738
|
+
? "sandboxed"
|
|
3739
|
+
: rawEnvCodeExec === "off"
|
|
3740
|
+
? "off"
|
|
3741
|
+
: (options?.codeExecution?.production ?? "off");
|
|
3742
|
+
// Forward-declaration for the production run-code bridge supplier.
|
|
3743
|
+
// Must come before createRunCodeEntry so the closure can capture it.
|
|
3744
|
+
let prodRunCodeToolActions = {};
|
|
3745
|
+
// Sandboxed run-code tool — available in "sandboxed" or "trusted" prod
|
|
3746
|
+
// modes and always in dev mode.
|
|
3747
|
+
const runCodeTool = {};
|
|
3748
|
+
try {
|
|
3749
|
+
const { createRunCodeEntry } = await import("../coding-tools/run-code.js");
|
|
3750
|
+
runCodeTool["run-code"] = createRunCodeEntry(
|
|
3751
|
+
// Supplier is evaluated at invocation time so runtime additions to
|
|
3752
|
+
// prodActions (e.g. MCP sync) are visible to the bridge.
|
|
3753
|
+
() => prodRunCodeToolActions, { bridgeTools: options?.codeExecution?.bridgeTools });
|
|
3754
|
+
}
|
|
3755
|
+
catch {
|
|
3756
|
+
// Module unavailable (e.g. bundled browser build) — skip silently.
|
|
3757
|
+
}
|
|
3758
|
+
// Full coding tool registry (bash/read/edit/write) for "trusted" prod.
|
|
3759
|
+
// In dev mode this is handled separately via devHandler below.
|
|
3760
|
+
const prodCodingTools = {};
|
|
3761
|
+
if (resolvedProdCodeExec === "trusted" && !canToggle) {
|
|
3762
|
+
try {
|
|
3763
|
+
const { createCodingToolRegistry } = await import("../coding-tools/index.js");
|
|
3764
|
+
const codingRegistry = createCodingToolRegistry({
|
|
3765
|
+
cwd: process.cwd(),
|
|
3766
|
+
beforeBash: async ({ command }) => {
|
|
3767
|
+
// In plan mode the agent loop blocks via isPlanModeToolCallAllowed;
|
|
3768
|
+
// this hook is a belt-and-suspenders guard inside "trusted" production.
|
|
3769
|
+
return null;
|
|
3770
|
+
},
|
|
3771
|
+
});
|
|
3772
|
+
Object.assign(prodCodingTools, codingRegistry);
|
|
3773
|
+
}
|
|
3774
|
+
catch {
|
|
3775
|
+
// Coding tools unavailable — skip silently.
|
|
3776
|
+
}
|
|
3777
|
+
}
|
|
3778
|
+
// Forward-declaration: populated after devActions is assembled below.
|
|
3779
|
+
// Must be declared BEFORE devRunCodeTool so the closure can close over it.
|
|
3780
|
+
let devRunCodeToolActions = {};
|
|
3781
|
+
// Always register run-code in dev mode (when the coding module loads).
|
|
3782
|
+
const devRunCodeTool = {};
|
|
3783
|
+
if (canToggle) {
|
|
3784
|
+
try {
|
|
3785
|
+
const { createRunCodeEntry } = await import("../coding-tools/run-code.js");
|
|
3786
|
+
// devActions is not yet defined at this point; we use a late-binding
|
|
3787
|
+
// supplier so devRunCodeTool can reference the devActions registry
|
|
3788
|
+
// once it is built below (see devHandler block).
|
|
3789
|
+
devRunCodeTool["run-code"] = createRunCodeEntry(() => devRunCodeToolActions, { bridgeTools: options?.codeExecution?.bridgeTools });
|
|
3790
|
+
}
|
|
3791
|
+
catch { }
|
|
3792
|
+
}
|
|
3702
3793
|
const prodActions = attachToolSearch({
|
|
3703
3794
|
...templateScripts,
|
|
3704
3795
|
...resourceScripts,
|
|
@@ -3716,11 +3807,20 @@ export function createAgentChatPlugin(options) {
|
|
|
3716
3807
|
...notificationTools,
|
|
3717
3808
|
...progressTools,
|
|
3718
3809
|
...fetchTool,
|
|
3810
|
+
...webSearchTool,
|
|
3811
|
+
...workspaceFilesTool,
|
|
3719
3812
|
...toolActions,
|
|
3720
3813
|
...browserSessionTools,
|
|
3721
3814
|
...browserTools,
|
|
3722
3815
|
...mcpActionEntries,
|
|
3816
|
+
// Sandboxed run-code tool in production when mode allows it.
|
|
3817
|
+
...(resolvedProdCodeExec !== "off" && !canToggle ? runCodeTool : {}),
|
|
3818
|
+
// Full coding tools in production when mode is "trusted".
|
|
3819
|
+
...(!canToggle ? prodCodingTools : {}),
|
|
3723
3820
|
});
|
|
3821
|
+
// Wire the prod run-code bridge supplier so it sees the fully-assembled
|
|
3822
|
+
// prodActions registry (including MCP entries added at runtime).
|
|
3823
|
+
prodRunCodeToolActions = prodActions;
|
|
3724
3824
|
// Keep the prod action dict's MCP entries in sync when the manager's
|
|
3725
3825
|
// server set changes at runtime (e.g. a user adds a remote MCP server
|
|
3726
3826
|
// through the settings UI). getEngineTools() in production-agent re-reads
|
|
@@ -3797,6 +3897,12 @@ When the user asks to add a feature, edit a component, fix a bug in the app itse
|
|
|
3797
3897
|
|
|
3798
3898
|
Non-code requests are still fine on this surface: read data, navigate the UI, summarize, search, create/update extensions (sandboxed Alpine.js mini-apps stored in SQL), and call template actions. The restriction is specifically about direct edits to the host app's own source files.
|
|
3799
3899
|
</app-rendered-chat-no-direct-code-edits>`;
|
|
3900
|
+
// System-prompt note appended when production code execution is enabled.
|
|
3901
|
+
const prodCodeExecPromptNote = !canToggle && resolvedProdCodeExec !== "off"
|
|
3902
|
+
? resolvedProdCodeExec === "trusted"
|
|
3903
|
+
? "\n\n<code-execution-mode>Full shell access is enabled (trusted mode). You have bash, read, edit, write, and run-code tools available. Use bash for file discovery, running tests and builds, and project CLIs. Use run-code for sandboxed JavaScript analytics. Use `pnpm action <name>` in bash to invoke registered app actions from the shell.</code-execution-mode>"
|
|
3904
|
+
: "\n\n<code-execution-mode>Sandboxed code execution is enabled. The run-code tool lets you execute isolated JavaScript (ESM, top-level await) to fetch, aggregate, and reduce data. Use providerFetch() and webFetch() inside run-code for authenticated provider calls.</code-execution-mode>"
|
|
3905
|
+
: "";
|
|
3800
3906
|
const prodHandler = createProductionAgentHandler({
|
|
3801
3907
|
actions: leanPrompt ? leanActions : prodActions,
|
|
3802
3908
|
systemPrompt: async (event) => {
|
|
@@ -3809,6 +3915,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3809
3915
|
return setSystemPromptOnContext(leanBasePrompt +
|
|
3810
3916
|
runtimeContext +
|
|
3811
3917
|
codeEditingSurfaceRestriction +
|
|
3918
|
+
prodCodeExecPromptNote +
|
|
3812
3919
|
extra);
|
|
3813
3920
|
}
|
|
3814
3921
|
const resources = await loadResourcesForPrompt(owner, lazyContext, options?.appId);
|
|
@@ -3822,6 +3929,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3822
3929
|
resources +
|
|
3823
3930
|
schemaBlock +
|
|
3824
3931
|
codeEditingSurfaceRestriction +
|
|
3932
|
+
prodCodeExecPromptNote +
|
|
3825
3933
|
extra);
|
|
3826
3934
|
},
|
|
3827
3935
|
model: options?.model,
|
|
@@ -3831,6 +3939,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3831
3939
|
finalResponseGuard: options?.finalResponseGuard,
|
|
3832
3940
|
prepareRequest: options?.prepareRequest,
|
|
3833
3941
|
skipFilesContext: leanPrompt,
|
|
3942
|
+
...(options?.toolLimits ? { toolLimits: options.toolLimits } : {}),
|
|
3834
3943
|
onEngineResolved: (engine, model) => {
|
|
3835
3944
|
const runCtx = ensureRequestRunContext();
|
|
3836
3945
|
if (runCtx) {
|
|
@@ -3923,6 +4032,8 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3923
4032
|
...notificationTools,
|
|
3924
4033
|
...progressTools,
|
|
3925
4034
|
...fetchTool,
|
|
4035
|
+
...webSearchTool,
|
|
4036
|
+
...workspaceFilesTool,
|
|
3926
4037
|
...toolActions,
|
|
3927
4038
|
...browserSessionTools,
|
|
3928
4039
|
...browserTools,
|
|
@@ -3931,7 +4042,12 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3931
4042
|
// Full-database admin tools (NODE_ENV=development gate — see
|
|
3932
4043
|
// dbAdminScripts; also in prodActions so App mode has them too).
|
|
3933
4044
|
...dbAdminScripts,
|
|
4045
|
+
// run-code sandbox is always available in dev mode.
|
|
4046
|
+
...devRunCodeTool,
|
|
3934
4047
|
});
|
|
4048
|
+
// Wire the late-binding supplier for devRunCodeTool so the bridge can
|
|
4049
|
+
// call back into the fully-assembled devActions registry.
|
|
4050
|
+
devRunCodeToolActions = devActions;
|
|
3935
4051
|
// Keep dev action dict in sync with runtime MCP additions. When
|
|
3936
4052
|
// native-actions mode is on (lean or `nativeActionsInDev`), devActions
|
|
3937
4053
|
// === prodActions so the prod listener already covers it.
|
|
@@ -3961,6 +4077,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
3961
4077
|
finalResponseGuard: options?.finalResponseGuard,
|
|
3962
4078
|
prepareRequest: options?.prepareRequest,
|
|
3963
4079
|
skipFilesContext: leanPrompt,
|
|
4080
|
+
...(options?.toolLimits ? { toolLimits: options.toolLimits } : {}),
|
|
3964
4081
|
onEngineResolved: (engine, model) => {
|
|
3965
4082
|
const runCtx = ensureRequestRunContext();
|
|
3966
4083
|
if (runCtx) {
|
|
@@ -5407,6 +5524,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
5407
5524
|
...notificationTools,
|
|
5408
5525
|
...progressTools,
|
|
5409
5526
|
...fetchTool,
|
|
5527
|
+
...webSearchTool,
|
|
5410
5528
|
...toolActions,
|
|
5411
5529
|
}),
|
|
5412
5530
|
getSystemPrompt: async (owner) => {
|
|
@@ -5449,6 +5567,7 @@ Non-code requests are still fine on this surface: read data, navigate the UI, su
|
|
|
5449
5567
|
...notificationTools,
|
|
5450
5568
|
...progressTools,
|
|
5451
5569
|
...fetchTool,
|
|
5570
|
+
...webSearchTool,
|
|
5452
5571
|
...toolActions,
|
|
5453
5572
|
}),
|
|
5454
5573
|
getSystemPrompt: async (owner) => {
|