@agent-native/core 0.22.8 → 0.22.10
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/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +8 -12
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +7 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +106 -23
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts +5 -1
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +20 -3
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts +10 -0
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +6 -19
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/analytics.d.ts +1 -1
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js +2 -40
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/clipboard.d.ts +2 -0
- package/dist/client/clipboard.d.ts.map +1 -0
- package/dist/client/clipboard.js +51 -0
- package/dist/client/clipboard.js.map +1 -0
- package/dist/client/feedback-context.d.ts +11 -0
- package/dist/client/feedback-context.d.ts.map +1 -0
- package/dist/client/feedback-context.js +73 -0
- package/dist/client/feedback-context.js.map +1 -0
- package/dist/client/url-scrub.d.ts +2 -0
- package/dist/client/url-scrub.d.ts.map +1 -0
- package/dist/client/url-scrub.js +41 -0
- package/dist/client/url-scrub.js.map +1 -0
- package/dist/mcp/build-server.d.ts.map +1 -1
- package/dist/mcp/build-server.js +7 -3
- package/dist/mcp/build-server.js.map +1 -1
- package/dist/mcp/builtin-tools.js +3 -3
- package/dist/mcp/builtin-tools.js.map +1 -1
- package/dist/mcp/embed-app.js +3 -3
- package/dist/mcp/embed-app.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +5 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +74 -59
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"AAaA,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,8BAA8B,CAAC;AAqBtC,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAElB,eAAe,EAEhB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,gBAAgB,EAYjB,MAAM,wBAAwB,CAAC;AA4DhC,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AA+SrC,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACnC,KAAK,CAAC;IACP,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CACzC,CAAC,CASD;AAmBD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,cAAc,EAAE,EACjC,WAAW,EAAE,SAAS,oBAAoB,EAAE,EAC5C,OAAO,GAAE,0BAA0B,GAAG;IAAE,KAAK,CAAC,EAAE,GAAG,CAAA;CAAO,GACzD;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAO7C;AAkzCD,KAAK,cAAc,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC3B,CAAC,MACG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC3B,CAAC,MACG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9C,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;sDAGkD;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EACH,OAAO,0BAA0B,EAAE,WAAW,GAC9C,MAAM,GACN;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IACtD,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,gBAAgB,CAAC,EACb,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAC/B,CAAC,MACG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAClD,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtE;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxE;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;;;;;;;;OAcG;IACH,YAAY,CAAC,EAAE,CACb,KAAK,EAAE,GAAG,EACV,KAAK,EAAE,MAAM,KACV,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,8BAA8B,EAAE,2BAA2B,CAAC;IACxF;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QACzB,KAAK,EAAE,GAAG,CAAC;QACX,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,mBAAmB,EAAE,CAAC;QACnC,UAAU,EAAE,kBAAkB,EAAE,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;KACtB,KACG,IAAI,GACJ;QACE,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACrC,GACD,OAAO,CAAC,IAAI,GAAG;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;KACrC,CAAC,CAAC;IACP;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC7B,OAAO,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAC;QAC3C,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,iBAAiB,EAAE,iBAAiB,CAAC;QACrD,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,KACG,OAAO,iBAAiB,EAAE,OAAO,GACjC,MAAM,GACN,IAAI,GACJ,SAAS,GACT,OAAO,CAAC,OAAO,iBAAiB,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CAC5E;AAsiBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,OAAO,UAAQ,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAoJjB;
|
|
1
|
+
{"version":3,"file":"agent-chat-plugin.d.ts","sourceRoot":"","sources":["../../src/server/agent-chat-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -2256,6 +2256,46 @@ function isLocalhost(event) {
|
|
|
2256
2256
|
return false;
|
|
2257
2257
|
}
|
|
2258
2258
|
}
|
|
2259
|
+
function normalizeAgentChatRequestSurface(value) {
|
|
2260
|
+
const normalized = (value ?? "").trim().toLowerCase();
|
|
2261
|
+
if (normalized === "app" ||
|
|
2262
|
+
normalized === "dev-frame" ||
|
|
2263
|
+
normalized === "desktop") {
|
|
2264
|
+
return normalized;
|
|
2265
|
+
}
|
|
2266
|
+
return null;
|
|
2267
|
+
}
|
|
2268
|
+
function isBrowserUserAgent(userAgent) {
|
|
2269
|
+
return /Mozilla\/|Chrome\/|Safari\/|Firefox\/|Edg\//i.test(userAgent ?? "");
|
|
2270
|
+
}
|
|
2271
|
+
export function shouldBlockInProductCodeEditingSurface(input) {
|
|
2272
|
+
const surface = normalizeAgentChatRequestSurface(input.surface);
|
|
2273
|
+
if (surface === "dev-frame")
|
|
2274
|
+
return false;
|
|
2275
|
+
if (surface === "desktop")
|
|
2276
|
+
return false;
|
|
2277
|
+
if (surface === "app")
|
|
2278
|
+
return true;
|
|
2279
|
+
// Legacy clients used to send `frame` for any iframe, which includes the
|
|
2280
|
+
// app-rendered sidebar inside preview frames. Treat unknown explicit surface
|
|
2281
|
+
// values as app-owned so they cannot accidentally receive dev code tools.
|
|
2282
|
+
if (input.surface && input.surface.trim())
|
|
2283
|
+
return true;
|
|
2284
|
+
const userAgent = input.userAgent ?? "";
|
|
2285
|
+
if (/AgentNativeDesktop/i.test(userAgent))
|
|
2286
|
+
return false;
|
|
2287
|
+
// Missing header from an older browser client. Be conservative for browser
|
|
2288
|
+
// UAs on any host, because preview URLs can be non-local while still running
|
|
2289
|
+
// a dev-mode app whose in-product chat would be reloaded by source edits.
|
|
2290
|
+
if (isBrowserUserAgent(userAgent))
|
|
2291
|
+
return true;
|
|
2292
|
+
const host = (input.host ?? "").toLowerCase();
|
|
2293
|
+
const hostname = host.split(":")[0] ?? "";
|
|
2294
|
+
return (hostname === "localhost" ||
|
|
2295
|
+
hostname === "127.0.0.1" ||
|
|
2296
|
+
hostname === "::1" ||
|
|
2297
|
+
hostname === "[::1]");
|
|
2298
|
+
}
|
|
2259
2299
|
export function createAgentChatPlugin(options) {
|
|
2260
2300
|
return (nitroApp) => {
|
|
2261
2301
|
markDefaultPluginProvided(nitroApp, "agent-chat");
|
|
@@ -3536,68 +3576,43 @@ export function createAgentChatPlugin(options) {
|
|
|
3536
3576
|
: undefined;
|
|
3537
3577
|
return buildRuntimeContextPrompt({ timezone });
|
|
3538
3578
|
};
|
|
3539
|
-
//
|
|
3540
|
-
//
|
|
3541
|
-
//
|
|
3542
|
-
//
|
|
3543
|
-
//
|
|
3544
|
-
//
|
|
3545
|
-
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
|
|
3549
|
-
|
|
3550
|
-
|
|
3551
|
-
if (isDesktop)
|
|
3552
|
-
return false;
|
|
3553
|
-
if (surface === "frame")
|
|
3554
|
-
return false;
|
|
3555
|
-
const host = (getHeader(event, "host") || "").toLowerCase();
|
|
3556
|
-
const hostname = host.split(":")[0] ?? "";
|
|
3557
|
-
const isLocal = hostname === "localhost" ||
|
|
3558
|
-
hostname === "127.0.0.1" ||
|
|
3559
|
-
hostname === "::1" ||
|
|
3560
|
-
hostname === "[::1]";
|
|
3561
|
-
if (!isLocal)
|
|
3562
|
-
return false;
|
|
3563
|
-
// No header from an older client + non-desktop UA: be conservative and
|
|
3564
|
-
// only trip on plain browser UAs. Treat unknown clients as safe (frame
|
|
3565
|
-
// / desktop / scripting) so we don't break their tool access.
|
|
3566
|
-
if (!surface) {
|
|
3567
|
-
return /Mozilla\/|Chrome\/|Safari\/|Firefox\/|Edg\//i.test(ua);
|
|
3568
|
-
}
|
|
3569
|
-
return surface === "browser";
|
|
3570
|
-
};
|
|
3571
|
-
const CHAT_IN_BROWSER_LOCAL_DEV_PROMPT = `
|
|
3572
|
-
|
|
3573
|
-
<chat-in-browser-on-localdev>
|
|
3574
|
-
This chat is running in a plain browser tab on localhost. Source-code edits would trigger Vite HMR or a full page reload, which kills the chat session mid-run, so source-code work cannot happen on this surface.
|
|
3579
|
+
// The app-rendered sidebar must never edit the app's source code
|
|
3580
|
+
// directly. Source-file edits can trigger HMR or full reloads of the
|
|
3581
|
+
// same React tree that is hosting the chat, interrupting the run and
|
|
3582
|
+
// losing in-progress UI state. Code edits are allowed only from the
|
|
3583
|
+
// outer dev frame (x-agent-native-surface: dev-frame) or from separate
|
|
3584
|
+
// agent surfaces such as Builder/A2A/MCP handoffs.
|
|
3585
|
+
const shouldBlockInProductCodeEditing = (event) => shouldBlockInProductCodeEditingSurface({
|
|
3586
|
+
surface: getHeader(event, "x-agent-native-surface"),
|
|
3587
|
+
userAgent: getHeader(event, "user-agent"),
|
|
3588
|
+
host: getHeader(event, "host"),
|
|
3589
|
+
});
|
|
3590
|
+
const APP_RENDERED_CHAT_NO_DIRECT_CODE_PROMPT = `
|
|
3575
3591
|
|
|
3576
|
-
|
|
3592
|
+
<app-rendered-chat-no-direct-code-edits>
|
|
3593
|
+
This chat is rendered by the app itself. It must never edit this app's source files directly, because source edits can hot-reload or replace the same UI that is hosting the chat.
|
|
3577
3594
|
|
|
3578
|
-
|
|
3579
|
-
2. Do NOT write code, list files, propose patches, or describe what you would change.
|
|
3580
|
-
3. Reply with one short message saying chat-in-browser on localhost can't edit code (page reloads kill the session). If — and only if — the request is specifically to **add or scaffold a new workspace app**, lead with the CLI option since it runs in the same terminal the user is already using:
|
|
3581
|
-
- **Agent Native CLI** — \`npx @agent-native/core add-app\` in this workspace directory (best for template apps like Mail/Calendar/Slides; the workspace gateway picks them up automatically)
|
|
3595
|
+
When the user asks to add a feature, edit a component, fix a bug in the app itself, change styles, add a route, scaffold a new app, run shell commands that modify code, or do anything else that requires touching source files:
|
|
3582
3596
|
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
|
|
3586
|
-
- **Codex** — \`codex\` in the project directory
|
|
3587
|
-
- **Builder.io** — open the project in Builder for cloud-based code changes
|
|
3597
|
+
1. Do NOT use dev shell/filesystem tools, write code inline, list source files, propose patches, or describe file-level implementation steps from this chat.
|
|
3598
|
+
2. For host-app source changes in Act mode, call \`connect-builder\` when that tool is available so a separate Builder/cloud agent can do the work. If Builder is unavailable, give a short handoff to the outer dev frame, Agent Native Desktop, Claude Code, or Codex in the project directory.
|
|
3599
|
+
3. If the request is specifically to add or scaffold a new workspace app and no Builder handoff is available, mention \`npx @agent-native/core add-app\` in this workspace directory as the CLI path.
|
|
3588
3600
|
|
|
3589
|
-
Non-code requests are still fine on this surface
|
|
3590
|
-
</chat-
|
|
3601
|
+
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.
|
|
3602
|
+
</app-rendered-chat-no-direct-code-edits>`;
|
|
3591
3603
|
const prodHandler = createProductionAgentHandler({
|
|
3592
3604
|
actions: leanPrompt ? leanActions : prodActions,
|
|
3593
3605
|
systemPrompt: async (event) => {
|
|
3594
3606
|
const { owner, extra } = await prepareRun(event);
|
|
3595
3607
|
const runtimeContext = runtimeContextForEvent(event);
|
|
3596
|
-
const
|
|
3597
|
-
?
|
|
3608
|
+
const codeEditingSurfaceRestriction = shouldBlockInProductCodeEditing(event)
|
|
3609
|
+
? APP_RENDERED_CHAT_NO_DIRECT_CODE_PROMPT
|
|
3598
3610
|
: "";
|
|
3599
3611
|
if (leanPrompt) {
|
|
3600
|
-
return setSystemPromptOnContext(leanBasePrompt +
|
|
3612
|
+
return setSystemPromptOnContext(leanBasePrompt +
|
|
3613
|
+
runtimeContext +
|
|
3614
|
+
codeEditingSurfaceRestriction +
|
|
3615
|
+
extra);
|
|
3601
3616
|
}
|
|
3602
3617
|
const resources = await loadResourcesForPrompt(owner, lazyContext, options?.appId);
|
|
3603
3618
|
// In lazy context mode, skip embedding the full schema — the agent
|
|
@@ -3609,7 +3624,7 @@ Non-code requests are still fine on this surface — read data, navigate the UI,
|
|
|
3609
3624
|
runtimeContext +
|
|
3610
3625
|
resources +
|
|
3611
3626
|
schemaBlock +
|
|
3612
|
-
|
|
3627
|
+
codeEditingSurfaceRestriction +
|
|
3613
3628
|
extra);
|
|
3614
3629
|
},
|
|
3615
3630
|
model: options?.model,
|
|
@@ -4927,15 +4942,15 @@ Non-code requests are still fine on this surface — read data, navigate the UI,
|
|
|
4927
4942
|
orgId: resolvedOrgId,
|
|
4928
4943
|
timezone,
|
|
4929
4944
|
}, () => {
|
|
4930
|
-
//
|
|
4931
|
-
//
|
|
4932
|
-
// handler (no shell / no fs); the prompt block injected by
|
|
4933
|
-
// `prodHandler.systemPrompt` then steers
|
|
4934
|
-
//
|
|
4935
|
-
const
|
|
4945
|
+
// App-rendered chat can't host direct code edits — HMR/full
|
|
4946
|
+
// reloads would kill the same chat surface mid-run. Force the
|
|
4947
|
+
// prod handler (no shell / no fs); the prompt block injected by
|
|
4948
|
+
// `prodHandler.systemPrompt` then steers source changes to a
|
|
4949
|
+
// separate agent surface such as Builder or the dev frame.
|
|
4950
|
+
const blockInProductCodeEditing = shouldBlockInProductCodeEditing(event);
|
|
4936
4951
|
const handler = ownerContext.anonymous && anonymousHandler
|
|
4937
4952
|
? anonymousHandler
|
|
4938
|
-
: !
|
|
4953
|
+
: !blockInProductCodeEditing && currentDevMode && devHandler
|
|
4939
4954
|
? devHandler
|
|
4940
4955
|
: prodHandler;
|
|
4941
4956
|
return handler(event);
|