@agent-native/core 0.39.1 → 0.39.2
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/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts +5 -6
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +430 -723
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +2 -5
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +1 -1
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +11 -19
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/use-chat-models.d.ts.map +1 -1
- package/dist/client/use-chat-models.js +2 -5
- package/dist/client/use-chat-models.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +2 -1
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +29 -0
- package/dist/deploy/route-discovery.d.ts.map +1 -1
- package/dist/deploy/route-discovery.js +158 -11
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/server/auth.d.ts +2 -0
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +9 -0
- package/dist/server/auth.js.map +1 -1
- package/dist/templates/default/.agents/skills/actions/SKILL.md +96 -11
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +126 -26
- package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +56 -30
- package/dist/templates/default/.agents/skills/create-skill/SKILL.md +28 -0
- package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +75 -5
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +17 -0
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +99 -124
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +43 -10
- package/dist/templates/default/.agents/skills/security/SKILL.md +162 -144
- package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +5 -3
- package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +15 -0
- package/dist/templates/default/.agents/skills/storing-data/SKILL.md +116 -83
- package/dist/templates/default/DEVELOPING.md +10 -13
- package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +9 -0
- package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +27 -0
- package/docs/content/template-plan.md +5 -3
- package/docs/content/visual-plans.md +5 -2
- package/package.json +1 -1
- package/src/templates/default/.agents/skills/actions/SKILL.md +96 -11
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +126 -26
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +56 -30
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +28 -0
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +75 -5
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +17 -0
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +99 -124
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +43 -10
- package/src/templates/default/.agents/skills/security/SKILL.md +162 -144
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +5 -3
- package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +15 -0
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +116 -83
- package/src/templates/default/DEVELOPING.md +10 -13
- package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +9 -0
- package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +27 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-models.d.ts","sourceRoot":"","sources":["../../src/client/use-chat-models.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-chat-models.d.ts","sourceRoot":"","sources":["../../src/client/use-chat-models.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AAEvC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,eAAe,CAAC;IAChC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAClD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,UAAU,OAAO;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2BD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,UAAgC,EAChC,OAAc,GACf,GAAE,OAAY,GAAG,mBAAmB,CAyQpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
2
|
import { agentNativePath } from "./api-path.js";
|
|
3
|
+
import { callAction } from "./use-action.js";
|
|
3
4
|
import { DEFAULT_MODEL } from "../agent/default-model.js";
|
|
4
5
|
import { getReasoningEffortOptionsForModel, } from "../shared/reasoning-effort.js";
|
|
5
6
|
const DEFAULT_STORAGE_KEY = "agent-native:chat-models:selection";
|
|
@@ -74,11 +75,7 @@ export function useChatModels({ storageKey = DEFAULT_STORAGE_KEY, enabled = true
|
|
|
74
75
|
if (!enabled)
|
|
75
76
|
return;
|
|
76
77
|
Promise.all([
|
|
77
|
-
|
|
78
|
-
method: "POST",
|
|
79
|
-
headers: { "Content-Type": "application/json" },
|
|
80
|
-
body: JSON.stringify({ action: "list" }),
|
|
81
|
-
}).then((r) => (r.ok ? r.json() : null)),
|
|
78
|
+
callAction("manage-agent-engine", { action: "list" }).catch(() => null),
|
|
82
79
|
fetch(agentNativePath("/_agent-native/env-status"))
|
|
83
80
|
.then((r) => (r.ok ? r.json() : []))
|
|
84
81
|
.catch(() => []),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-chat-models.js","sourceRoot":"","sources":["../../src/client/use-chat-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EACL,iCAAiC,GAElC,MAAM,+BAA+B,CAAC;AAiCvC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AAQjE,SAAS,aAAa,CAAC,GAAkB;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAwB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAkB,EAAE,KAAyB;IACnE,IAAI,CAAC,GAAG,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAClD,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,UAAU,GAAG,mBAAmB,EAChC,OAAO,GAAG,IAAI,MACH,EAAE;IACb,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CACpD,EAAE,CACH,CAAC;IACF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAS,aAAa,CAAC,CAAC;IAExE,MAAM,gBAAgB,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAChD,gBAAgB,CAAC,KAAK,IAAI,aAAa,CACxC,CAAC;IACF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAC9B,CAAC;IACF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAClD,gBAAgB,CAAC,MAAM,IAAI,MAAM,CAClC,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,CAAC;QAC1B,aAAa;QACb,cAAc;QACd,cAAc;KACf,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,OAAO,GAAG;YACrB,aAAa;YACb,cAAc;YACd,cAAc;SACf,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAa,EAAE,MAAc,EAAE,EAAE;QAChC,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,MAAM,aAAa,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC;QAC/D,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,iBAAiB,CAAC,CAAC,UAAU,EAAE,EAAE;YAC/B,MAAM,IAAI,GACR,UAAU,KAAK,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzD,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,MAAM,CAAC;YACb,cAAc,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,EACD,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,MAAuB,EAAE,EAAE;QAC1B,uBAAuB,CAAC,OAAO,GAAG,IAAI,CAAC;QACvC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1B,cAAc,CAAC,UAAU,EAAE;YACzB,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,cAAc;YACtB,MAAM;SACP,CAAC,CAAC;IACL,CAAC,EACD,CAAC,cAAc,EAAE,aAAa,EAAE,UAAU,CAAC,CAC5C,CAAC;IAEF,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,OAAO,CAAC,GAAG,CAAC;YACV,KAAK,CAAC,eAAe,CAAC,4CAA4C,CAAC,EAAE;gBACnE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;aACzC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;iBAChD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;iBACnC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YAClB,KAAK,CAAC,eAAe,CAAC,+BAA+B,CAAC,CAAC;iBACpD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACrC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SACrB,CAAC;aACC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE;YAC9C,IAAI,CAAC,WAAW,EAAE,OAAO;gBAAE,OAAO;YAClC,MAAM,cAAc,GAAG,IAAI,GAAG,CAC3B,OAAuD;iBACrD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;iBAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CACrB,CAAC;YACF,MAAM,gBAAgB,GAAG,aAAa,EAAE,UAAU,KAAK,IAAI,CAAC;YAC5D,MAAM,iBAAiB,GACrB,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;YAC9B,MAAM,YAAY,GAAuB,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC;YAEpE,IAAI,MAA0B,CAAC;YAE/B,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAC5C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CACjC,CAAC;gBACF,MAAM,aAAa,GAAa,aAAa,EAAE,eAAe,IAAI,EAAE,CAAC;gBACrE,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAChD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CACxB,CAAC;gBACF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAChD,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CACrB,CAAC;gBACF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAChD,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CACxB,CAAC;gBACF,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAChC,CAAC,CAAS,EAAE,EAAE,CACZ,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;oBACxB,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;oBACrB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAC;gBAEF,MAAM,GAAG;oBACP,GAAG,CAAC,MAAM,CAAC,MAAM;wBACf,CAAC,CAAC;4BACE;gCACE,MAAM,EAAE,SAAS;gCACjB,KAAK,EAAE,QAAQ;gCACf,MAAM,EAAE,MAAM;gCACd,UAAU,EAAE,IAAI;6BACjB;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,MAAM;wBACf,CAAC,CAAC;4BACE;gCACE,MAAM,EAAE,SAAS;gCACjB,KAAK,EAAE,QAAQ;gCACf,MAAM,EAAE,MAAM;gCACd,UAAU,EAAE,IAAI;6BACjB;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,MAAM,CAAC,MAAM;wBACf,CAAC,CAAC;4BACE;gCACE,MAAM,EAAE,SAAS;gCACjB,KAAK,EAAE,QAAQ;gCACf,MAAM,EAAE,MAAM;gCACd,UAAU,EAAE,IAAI;6BACjB;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;oBACP,GAAG,CAAC,KAAK,CAAC,MAAM;wBACd,CAAC,CAAC;4BACE;gCACE,MAAM,EAAE,SAAS;gCACjB,KAAK,EAAE,MAAM;gCACb,MAAM,EAAE,KAAK;gCACb,UAAU,EAAE,IAAI;6BACjB;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC;gBAEF,IAAI,YAAY,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC7B,IAAI,UAAU;wBAAE,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;oBAC7B,WAAW;oBACX,eAAe;oBACf,eAAe;iBAChB,CAAC,CAAC;gBACH,MAAM,GAAG,WAAW,CAAC,OAAO;qBACzB,MAAM,CACL,CAAC,CAAM,EAAE,EAAE,CACT,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,KAAK,KAAK,CAC7D;qBACA,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;oBACd,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;oBACtC,IACE,CAAC,CAAC,IAAI,KAAK,iBAAiB;wBAC5B,YAAY;wBACZ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC9B,CAAC;wBACD,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC/B,CAAC;oBACD,OAAO;wBACL,MAAM,EAAE,CAAC,CAAC,IAAI;wBACd,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,MAAM;wBACN,UAAU,EACR,CAAC,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;4BAC9B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CACnC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CACtB;4BACD,CAAC,CAAC,IAAI,KAAK,iBAAiB;qBAC/B,CAAC;gBACJ,CAAC,CAAC,CAAC;YACP,CAAC;YACD,MAAM,gBAAgB,GAAG,YAAY,IAAI,aAAa,CAAC;YACvD,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAC3B,eAAe,CAAC,gBAAgB,CAAC,CAAC;YAElC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;gBACrC,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GACb,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC;oBAChE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;oBACvB,gBAAgB,CAAC;gBACnB,MAAM,UAAU,GAAG,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC9C,MAAM,aAAa,GAAG,iCAAiC,CAAC,SAAS,CAAC,CAAC;gBACnE,MAAM,UAAU,GACd,SAAS,CAAC,cAAc,KAAK,MAAM;oBACnC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;oBAC9C,CAAC,CAAC,SAAS,CAAC,cAAc;oBAC1B,CAAC,CAAC,MAAM,CAAC;gBACb,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC5B,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAC/B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC,cAAc;oBACxB,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,cAAc,CAAC,CAC/C,CAAC;YACF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,YAAY,GAChB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;oBAC/D,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,MAAM,SAAS,GACb,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC;oBAChE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;oBACvB,gBAAgB,CAAC;gBACnB,MAAM,UAAU,GAAG,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC9C,MAAM,aAAa,GAAG,iCAAiC,CAAC,SAAS,CAAC,CAAC;gBACnE,MAAM,UAAU,GACd,SAAS,CAAC,cAAc,KAAK,MAAM;oBACnC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC;oBAC9C,CAAC,CAAC,SAAS,CAAC,cAAc;oBAC1B,CAAC,CAAC,MAAM,CAAC;gBACb,gBAAgB,CAAC,SAAS,CAAC,CAAC;gBAC5B,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,cAAc,CAAC,UAAU,EAAE;oBACzB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,UAAU;oBAClB,MAAM,EAAE,UAAU;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAE9B,OAAO;QACL,eAAe;QACf,YAAY;QACZ,aAAa;QACb,cAAc;QACd,cAAc;QACd,aAAa;QACb,cAAc;QACd,cAAc;KACf,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { agentNativePath } from \"./api-path.js\";\nimport { DEFAULT_MODEL } from \"../agent/default-model.js\";\nimport {\n getReasoningEffortOptionsForModel,\n type ReasoningEffort,\n} from \"../shared/reasoning-effort.js\";\n\nexport interface EngineModelGroup {\n engine: string;\n label: string;\n models: string[];\n configured: boolean;\n}\n\nexport interface UseChatModelsResult {\n availableModels: EngineModelGroup[];\n defaultModel: string;\n selectedModel: string;\n selectedEngine: string;\n selectedEffort: ReasoningEffort;\n onModelChange: (model: string, engine: string) => void;\n onEffortChange: (effort: ReasoningEffort) => void;\n refreshEngines: () => void;\n}\n\ninterface Options {\n /**\n * localStorage key used to persist the user's model + effort selection across\n * page loads. Pass `null` to disable persistence.\n */\n storageKey?: string | null;\n /**\n * Disable server-backed model discovery for hosts that provide their own\n * model list/state, such as Electron Code.\n */\n enabled?: boolean;\n}\n\nconst DEFAULT_STORAGE_KEY = \"agent-native:chat-models:selection\";\n\ninterface PersistedSelection {\n model?: string;\n engine?: string;\n effort?: ReasoningEffort;\n}\n\nfunction readPersisted(key: string | null): PersistedSelection {\n if (!key || typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? (JSON.parse(raw) as PersistedSelection) : {};\n } catch {\n return {};\n }\n}\n\nfunction writePersisted(key: string | null, value: PersistedSelection) {\n if (!key || typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {}\n}\n\n/**\n * Fetches available engines/models from the agent server and exposes the same\n * model picker state that `MultiTabAssistantChat` wires up — for surfaces like\n * the Dispatch homepage hero composer that need an identical model picker\n * without mounting the full tabbed chat.\n */\nexport function useChatModels({\n storageKey = DEFAULT_STORAGE_KEY,\n enabled = true,\n}: Options = {}): UseChatModelsResult {\n const [availableModels, setAvailableModels] = useState<EngineModelGroup[]>(\n [],\n );\n const [defaultModel, setDefaultModel] = useState<string>(DEFAULT_MODEL);\n\n const initialPersisted = readPersisted(storageKey);\n const hasExplicitSelectionRef = useRef(Boolean(initialPersisted.model));\n const [selectedModel, setSelectedModel] = useState<string>(\n initialPersisted.model ?? DEFAULT_MODEL,\n );\n const [selectedEngine, setSelectedEngine] = useState<string>(\n initialPersisted.engine ?? \"\",\n );\n const [selectedEffort, setSelectedEffort] = useState<ReasoningEffort>(\n initialPersisted.effort ?? \"auto\",\n );\n const selectionRef = useRef({\n selectedModel,\n selectedEngine,\n selectedEffort,\n });\n\n useEffect(() => {\n selectionRef.current = {\n selectedModel,\n selectedEngine,\n selectedEffort,\n };\n }, [selectedEffort, selectedEngine, selectedModel]);\n\n const onModelChange = useCallback(\n (model: string, engine: string) => {\n hasExplicitSelectionRef.current = true;\n const effortOptions = getReasoningEffortOptionsForModel(model);\n setSelectedModel(model);\n setSelectedEngine(engine);\n setSelectedEffort((prevEffort) => {\n const next =\n prevEffort === \"auto\" || effortOptions.includes(prevEffort)\n ? prevEffort\n : \"auto\";\n writePersisted(storageKey, { model, engine, effort: next });\n return next;\n });\n },\n [storageKey],\n );\n\n const onEffortChange = useCallback(\n (effort: ReasoningEffort) => {\n hasExplicitSelectionRef.current = true;\n setSelectedEffort(effort);\n writePersisted(storageKey, {\n model: selectedModel,\n engine: selectedEngine,\n effort,\n });\n },\n [selectedEngine, selectedModel, storageKey],\n );\n\n const refreshEngines = useCallback(() => {\n if (!enabled) return;\n Promise.all([\n fetch(agentNativePath(\"/_agent-native/actions/manage-agent-engine\"), {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ action: \"list\" }),\n }).then((r) => (r.ok ? r.json() : null)),\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .catch(() => []),\n fetch(agentNativePath(\"/_agent-native/builder/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .catch(() => null),\n ])\n .then(([enginesData, envKeys, builderStatus]) => {\n if (!enginesData?.engines) return;\n const configuredKeys = new Set(\n (envKeys as Array<{ key: string; configured: boolean }>)\n .filter((k) => k.configured)\n .map((k) => k.key),\n );\n const builderConnected = builderStatus?.configured === true;\n const currentEngineName: string | undefined =\n enginesData.current?.engine;\n const currentModel: string | undefined = enginesData.current?.model;\n\n let groups: EngineModelGroup[];\n\n if (builderConnected) {\n const builderEngine = enginesData.engines.find(\n (e: any) => e.name === \"builder\",\n );\n const builderModels: string[] = builderEngine?.supportedModels ?? [];\n const claude = builderModels.filter((m: string) =>\n m.startsWith(\"claude-\"),\n );\n const openai = builderModels.filter((m: string) =>\n m.startsWith(\"gpt-\"),\n );\n const gemini = builderModels.filter((m: string) =>\n m.startsWith(\"gemini-\"),\n );\n const other = builderModels.filter(\n (m: string) =>\n !m.startsWith(\"claude-\") &&\n !m.startsWith(\"gpt-\") &&\n !m.startsWith(\"gemini-\"),\n );\n\n groups = [\n ...(claude.length\n ? [\n {\n engine: \"builder\",\n label: \"Claude\",\n models: claude,\n configured: true,\n },\n ]\n : []),\n ...(openai.length\n ? [\n {\n engine: \"builder\",\n label: \"OpenAI\",\n models: openai,\n configured: true,\n },\n ]\n : []),\n ...(gemini.length\n ? [\n {\n engine: \"builder\",\n label: \"Gemini\",\n models: gemini,\n configured: true,\n },\n ]\n : []),\n ...(other.length\n ? [\n {\n engine: \"builder\",\n label: \"More\",\n models: other,\n configured: true,\n },\n ]\n : []),\n ];\n\n if (currentModel && !builderModels.includes(currentModel)) {\n const firstGroup = groups[0];\n if (firstGroup) firstGroup.models.unshift(currentModel);\n }\n } else {\n const allowedEngines = new Set([\n \"anthropic\",\n \"ai-sdk:openai\",\n \"ai-sdk:google\",\n ]);\n groups = enginesData.engines\n .filter(\n (e: any) =>\n allowedEngines.has(e.name) && e.packageInstalled !== false,\n )\n .map((e: any) => {\n const models = [...e.supportedModels];\n if (\n e.name === currentEngineName &&\n currentModel &&\n !models.includes(currentModel)\n ) {\n models.unshift(currentModel);\n }\n return {\n engine: e.name,\n label: e.label,\n models,\n configured:\n e.requiredEnvVars.length === 0 ||\n e.requiredEnvVars.some((v: string) =>\n configuredKeys.has(v),\n ) ||\n e.name === currentEngineName,\n };\n });\n }\n const nextDefaultModel = currentModel ?? DEFAULT_MODEL;\n setAvailableModels(groups);\n setDefaultModel(nextDefaultModel);\n\n const selection = selectionRef.current;\n if (!hasExplicitSelectionRef.current) {\n const defaultGroup =\n groups.find((group) => group.models.includes(nextDefaultModel)) ??\n groups[0];\n const nextModel =\n defaultGroup?.models.find((model) => model === nextDefaultModel) ??\n defaultGroup?.models[0] ??\n nextDefaultModel;\n const nextEngine = defaultGroup?.engine ?? \"\";\n const effortOptions = getReasoningEffortOptionsForModel(nextModel);\n const nextEffort =\n selection.selectedEffort === \"auto\" ||\n effortOptions.includes(selection.selectedEffort)\n ? selection.selectedEffort\n : \"auto\";\n setSelectedModel(nextModel);\n setSelectedEngine(nextEngine);\n setSelectedEffort(nextEffort);\n return;\n }\n\n const selectedGroup = groups.find(\n (group) =>\n group.models.includes(selection.selectedModel) &&\n (!selection.selectedEngine ||\n group.engine === selection.selectedEngine),\n );\n if (!selectedGroup) {\n const defaultGroup =\n groups.find((group) => group.models.includes(nextDefaultModel)) ??\n groups[0];\n const nextModel =\n defaultGroup?.models.find((model) => model === nextDefaultModel) ??\n defaultGroup?.models[0] ??\n nextDefaultModel;\n const nextEngine = defaultGroup?.engine ?? \"\";\n const effortOptions = getReasoningEffortOptionsForModel(nextModel);\n const nextEffort =\n selection.selectedEffort === \"auto\" ||\n effortOptions.includes(selection.selectedEffort)\n ? selection.selectedEffort\n : \"auto\";\n setSelectedModel(nextModel);\n setSelectedEngine(nextEngine);\n setSelectedEffort(nextEffort);\n writePersisted(storageKey, {\n model: nextModel,\n engine: nextEngine,\n effort: nextEffort,\n });\n }\n })\n .catch(() => {});\n }, [enabled, storageKey]);\n\n useEffect(() => {\n if (!enabled) return;\n refreshEngines();\n }, [enabled, refreshEngines]);\n\n return {\n availableModels,\n defaultModel,\n selectedModel,\n selectedEngine,\n selectedEffort,\n onModelChange,\n onEffortChange,\n refreshEngines,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"use-chat-models.js","sourceRoot":"","sources":["../../src/client/use-chat-models.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { agentNativePath } from \"./api-path.js\";\nimport { callAction } from \"./use-action.js\";\nimport { DEFAULT_MODEL } from \"../agent/default-model.js\";\nimport {\n getReasoningEffortOptionsForModel,\n type ReasoningEffort,\n} from \"../shared/reasoning-effort.js\";\n\nexport interface EngineModelGroup {\n engine: string;\n label: string;\n models: string[];\n configured: boolean;\n}\n\nexport interface UseChatModelsResult {\n availableModels: EngineModelGroup[];\n defaultModel: string;\n selectedModel: string;\n selectedEngine: string;\n selectedEffort: ReasoningEffort;\n onModelChange: (model: string, engine: string) => void;\n onEffortChange: (effort: ReasoningEffort) => void;\n refreshEngines: () => void;\n}\n\ninterface Options {\n /**\n * localStorage key used to persist the user's model + effort selection across\n * page loads. Pass `null` to disable persistence.\n */\n storageKey?: string | null;\n /**\n * Disable server-backed model discovery for hosts that provide their own\n * model list/state, such as Electron Code.\n */\n enabled?: boolean;\n}\n\nconst DEFAULT_STORAGE_KEY = \"agent-native:chat-models:selection\";\n\ninterface PersistedSelection {\n model?: string;\n engine?: string;\n effort?: ReasoningEffort;\n}\n\nfunction readPersisted(key: string | null): PersistedSelection {\n if (!key || typeof window === \"undefined\") return {};\n try {\n const raw = window.localStorage.getItem(key);\n return raw ? (JSON.parse(raw) as PersistedSelection) : {};\n } catch {\n return {};\n }\n}\n\nfunction writePersisted(key: string | null, value: PersistedSelection) {\n if (!key || typeof window === \"undefined\") return;\n try {\n window.localStorage.setItem(key, JSON.stringify(value));\n } catch {}\n}\n\n/**\n * Fetches available engines/models from the agent server and exposes the same\n * model picker state that `MultiTabAssistantChat` wires up — for surfaces like\n * the Dispatch homepage hero composer that need an identical model picker\n * without mounting the full tabbed chat.\n */\nexport function useChatModels({\n storageKey = DEFAULT_STORAGE_KEY,\n enabled = true,\n}: Options = {}): UseChatModelsResult {\n const [availableModels, setAvailableModels] = useState<EngineModelGroup[]>(\n [],\n );\n const [defaultModel, setDefaultModel] = useState<string>(DEFAULT_MODEL);\n\n const initialPersisted = readPersisted(storageKey);\n const hasExplicitSelectionRef = useRef(Boolean(initialPersisted.model));\n const [selectedModel, setSelectedModel] = useState<string>(\n initialPersisted.model ?? DEFAULT_MODEL,\n );\n const [selectedEngine, setSelectedEngine] = useState<string>(\n initialPersisted.engine ?? \"\",\n );\n const [selectedEffort, setSelectedEffort] = useState<ReasoningEffort>(\n initialPersisted.effort ?? \"auto\",\n );\n const selectionRef = useRef({\n selectedModel,\n selectedEngine,\n selectedEffort,\n });\n\n useEffect(() => {\n selectionRef.current = {\n selectedModel,\n selectedEngine,\n selectedEffort,\n };\n }, [selectedEffort, selectedEngine, selectedModel]);\n\n const onModelChange = useCallback(\n (model: string, engine: string) => {\n hasExplicitSelectionRef.current = true;\n const effortOptions = getReasoningEffortOptionsForModel(model);\n setSelectedModel(model);\n setSelectedEngine(engine);\n setSelectedEffort((prevEffort) => {\n const next =\n prevEffort === \"auto\" || effortOptions.includes(prevEffort)\n ? prevEffort\n : \"auto\";\n writePersisted(storageKey, { model, engine, effort: next });\n return next;\n });\n },\n [storageKey],\n );\n\n const onEffortChange = useCallback(\n (effort: ReasoningEffort) => {\n hasExplicitSelectionRef.current = true;\n setSelectedEffort(effort);\n writePersisted(storageKey, {\n model: selectedModel,\n engine: selectedEngine,\n effort,\n });\n },\n [selectedEngine, selectedModel, storageKey],\n );\n\n const refreshEngines = useCallback(() => {\n if (!enabled) return;\n Promise.all([\n callAction(\"manage-agent-engine\" as any, { action: \"list\" } as any).catch(\n () => null,\n ),\n fetch(agentNativePath(\"/_agent-native/env-status\"))\n .then((r) => (r.ok ? r.json() : []))\n .catch(() => []),\n fetch(agentNativePath(\"/_agent-native/builder/status\"))\n .then((r) => (r.ok ? r.json() : null))\n .catch(() => null),\n ])\n .then(([enginesData, envKeys, builderStatus]) => {\n if (!enginesData?.engines) return;\n const configuredKeys = new Set(\n (envKeys as Array<{ key: string; configured: boolean }>)\n .filter((k) => k.configured)\n .map((k) => k.key),\n );\n const builderConnected = builderStatus?.configured === true;\n const currentEngineName: string | undefined =\n enginesData.current?.engine;\n const currentModel: string | undefined = enginesData.current?.model;\n\n let groups: EngineModelGroup[];\n\n if (builderConnected) {\n const builderEngine = enginesData.engines.find(\n (e: any) => e.name === \"builder\",\n );\n const builderModels: string[] = builderEngine?.supportedModels ?? [];\n const claude = builderModels.filter((m: string) =>\n m.startsWith(\"claude-\"),\n );\n const openai = builderModels.filter((m: string) =>\n m.startsWith(\"gpt-\"),\n );\n const gemini = builderModels.filter((m: string) =>\n m.startsWith(\"gemini-\"),\n );\n const other = builderModels.filter(\n (m: string) =>\n !m.startsWith(\"claude-\") &&\n !m.startsWith(\"gpt-\") &&\n !m.startsWith(\"gemini-\"),\n );\n\n groups = [\n ...(claude.length\n ? [\n {\n engine: \"builder\",\n label: \"Claude\",\n models: claude,\n configured: true,\n },\n ]\n : []),\n ...(openai.length\n ? [\n {\n engine: \"builder\",\n label: \"OpenAI\",\n models: openai,\n configured: true,\n },\n ]\n : []),\n ...(gemini.length\n ? [\n {\n engine: \"builder\",\n label: \"Gemini\",\n models: gemini,\n configured: true,\n },\n ]\n : []),\n ...(other.length\n ? [\n {\n engine: \"builder\",\n label: \"More\",\n models: other,\n configured: true,\n },\n ]\n : []),\n ];\n\n if (currentModel && !builderModels.includes(currentModel)) {\n const firstGroup = groups[0];\n if (firstGroup) firstGroup.models.unshift(currentModel);\n }\n } else {\n const allowedEngines = new Set([\n \"anthropic\",\n \"ai-sdk:openai\",\n \"ai-sdk:google\",\n ]);\n groups = enginesData.engines\n .filter(\n (e: any) =>\n allowedEngines.has(e.name) && e.packageInstalled !== false,\n )\n .map((e: any) => {\n const models = [...e.supportedModels];\n if (\n e.name === currentEngineName &&\n currentModel &&\n !models.includes(currentModel)\n ) {\n models.unshift(currentModel);\n }\n return {\n engine: e.name,\n label: e.label,\n models,\n configured:\n e.requiredEnvVars.length === 0 ||\n e.requiredEnvVars.some((v: string) =>\n configuredKeys.has(v),\n ) ||\n e.name === currentEngineName,\n };\n });\n }\n const nextDefaultModel = currentModel ?? DEFAULT_MODEL;\n setAvailableModels(groups);\n setDefaultModel(nextDefaultModel);\n\n const selection = selectionRef.current;\n if (!hasExplicitSelectionRef.current) {\n const defaultGroup =\n groups.find((group) => group.models.includes(nextDefaultModel)) ??\n groups[0];\n const nextModel =\n defaultGroup?.models.find((model) => model === nextDefaultModel) ??\n defaultGroup?.models[0] ??\n nextDefaultModel;\n const nextEngine = defaultGroup?.engine ?? \"\";\n const effortOptions = getReasoningEffortOptionsForModel(nextModel);\n const nextEffort =\n selection.selectedEffort === \"auto\" ||\n effortOptions.includes(selection.selectedEffort)\n ? selection.selectedEffort\n : \"auto\";\n setSelectedModel(nextModel);\n setSelectedEngine(nextEngine);\n setSelectedEffort(nextEffort);\n return;\n }\n\n const selectedGroup = groups.find(\n (group) =>\n group.models.includes(selection.selectedModel) &&\n (!selection.selectedEngine ||\n group.engine === selection.selectedEngine),\n );\n if (!selectedGroup) {\n const defaultGroup =\n groups.find((group) => group.models.includes(nextDefaultModel)) ??\n groups[0];\n const nextModel =\n defaultGroup?.models.find((model) => model === nextDefaultModel) ??\n defaultGroup?.models[0] ??\n nextDefaultModel;\n const nextEngine = defaultGroup?.engine ?? \"\";\n const effortOptions = getReasoningEffortOptionsForModel(nextModel);\n const nextEffort =\n selection.selectedEffort === \"auto\" ||\n effortOptions.includes(selection.selectedEffort)\n ? selection.selectedEffort\n : \"auto\";\n setSelectedModel(nextModel);\n setSelectedEngine(nextEngine);\n setSelectedEffort(nextEffort);\n writePersisted(storageKey, {\n model: nextModel,\n engine: nextEngine,\n effort: nextEffort,\n });\n }\n })\n .catch(() => {});\n }, [enabled, storageKey]);\n\n useEffect(() => {\n if (!enabled) return;\n refreshEngines();\n }, [enabled, refreshEngines]);\n\n return {\n availableModels,\n defaultModel,\n selectedModel,\n selectedEngine,\n selectedEffort,\n onModelChange,\n onEffortChange,\n refreshEngines,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAyB7B,eAAO,MAAM,6BAA6B,UAiBzC,CAAC;AA0BF,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAaR;AAgBD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAgBvE,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,GAAE,MAAM,EAAO,EACjC,OAAO,GAAE,gBAAgB,EAAO,EAChC,aAAa,GAAE,oBAAoB,GAAG,IAAW,EACjD,mBAAmB,GAAE,MAAM,EAAO,EAClC,gBAAgB,SAAmC,GAClD,MAAM,
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/deploy/build.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAOH,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAyB7B,eAAO,MAAM,6BAA6B,UAiBzC,CAAC;AA0BF,wBAAgB,wCAAwC,CACtD,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,CAaR;AAgBD,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAC;AAgBvE,wBAAgB,yCAAyC,CACvD,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAK,GACf,IAAI,CAQN;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EAAE,EACzB,WAAW,EAAE,MAAM,EAAE,EACrB,kBAAkB,GAAE,MAAM,EAAO,EACjC,OAAO,GAAE,gBAAgB,EAAO,EAChC,aAAa,GAAE,oBAAoB,GAAG,IAAW,EACjD,mBAAmB,GAAE,MAAM,EAAO,EAClC,gBAAgB,SAAmC,GAClD,MAAM,CAqkBR;AA4VD,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAkHD,wBAAgB,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,iBAAiB,cAAoB,QAoCtC;AAuBD,KAAK,0BAA0B,GAAG,OAAO,GAAG,KAAK,CAAC;AAQlD,wBAAgB,qCAAqC,CACnD,YAAY,GAAE,MAAM,CAAC,QAA2B,EAChD,QAAQ,GAAE,MAAM,CAAC,YAA2B,EAC5C,UAAU,GAAE,0BAA0B,GAAG,IAAgD,GACxF,OAAO,CAOT;AAqED,wBAAgB,gCAAgC,CAC9C,gBAAgB,EAAE,MAAM,EAAE,GACzB,MAAM,GAAG,IAAI,CA8Bf;AAED,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EAAE,GACzB,KAAK,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAqCpD;AAkND;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,eAAe,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
package/dist/deploy/build.js
CHANGED
|
@@ -153,7 +153,8 @@ export function generateWorkerEntry(routes, pluginPaths, defaultPluginStems = []
|
|
|
153
153
|
const a = actions[i];
|
|
154
154
|
const varName = `action_${i}`;
|
|
155
155
|
actionImports.push(`import ${varName} from ${JSON.stringify(a.absPath)};`);
|
|
156
|
-
|
|
156
|
+
// Mirror the runtime mount (action-routes.ts): `path = http?.path ?? name`.
|
|
157
|
+
const routePath = `/_agent-native/actions/${a.path ?? a.name}`;
|
|
157
158
|
actionRegistrations.push(` app.on(${JSON.stringify(a.method.toUpperCase())}, ${JSON.stringify(routePath)}, defineEventHandler(async (event) => {
|
|
158
159
|
const params = ${a.method === "get" ? "parseActionSearchParams(event.url.searchParams)" : "(await readBody(event)) ?? {}"};
|
|
159
160
|
try {
|