@agent-native/core 0.12.21 → 0.12.23

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 (81) hide show
  1. package/dist/agent/engine/ai-sdk-engine.d.ts +2 -0
  2. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  3. package/dist/agent/engine/ai-sdk-engine.js +11 -5
  4. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  5. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  6. package/dist/agent/engine/anthropic-engine.js +2 -1
  7. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  8. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  9. package/dist/agent/engine/builder-engine.js +117 -8
  10. package/dist/agent/engine/builder-engine.js.map +1 -1
  11. package/dist/agent/engine/registry.d.ts.map +1 -1
  12. package/dist/agent/engine/registry.js +24 -13
  13. package/dist/agent/engine/registry.js.map +1 -1
  14. package/dist/agent/production-agent.d.ts +2 -1
  15. package/dist/agent/production-agent.d.ts.map +1 -1
  16. package/dist/agent/production-agent.js +21 -11
  17. package/dist/agent/production-agent.js.map +1 -1
  18. package/dist/checkpoints/service.d.ts +1 -0
  19. package/dist/checkpoints/service.d.ts.map +1 -1
  20. package/dist/checkpoints/service.js +6 -3
  21. package/dist/checkpoints/service.js.map +1 -1
  22. package/dist/client/AgentPanel.js +1 -1
  23. package/dist/client/AgentPanel.js.map +1 -1
  24. package/dist/client/AssistantChat.d.ts.map +1 -1
  25. package/dist/client/AssistantChat.js +133 -6
  26. package/dist/client/AssistantChat.js.map +1 -1
  27. package/dist/client/FeedbackButton.js +1 -1
  28. package/dist/client/FeedbackButton.js.map +1 -1
  29. package/dist/client/analytics.d.ts.map +1 -1
  30. package/dist/client/analytics.js +26 -0
  31. package/dist/client/analytics.js.map +1 -1
  32. package/dist/client/components/ui/tooltip.js +1 -1
  33. package/dist/client/components/ui/tooltip.js.map +1 -1
  34. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  35. package/dist/client/composer/TiptapComposer.js +2 -6
  36. package/dist/client/composer/TiptapComposer.js.map +1 -1
  37. package/dist/client/composer/useVoiceDictation.d.ts +1 -0
  38. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  39. package/dist/client/composer/useVoiceDictation.js +52 -7
  40. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  41. package/dist/client/resources/ResourcesPanel.js +1 -1
  42. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  43. package/dist/client/sse-event-processor.d.ts.map +1 -1
  44. package/dist/client/sse-event-processor.js +3 -0
  45. package/dist/client/sse-event-processor.js.map +1 -1
  46. package/dist/extensions/html-shell.d.ts.map +1 -1
  47. package/dist/extensions/html-shell.js +12 -0
  48. package/dist/extensions/html-shell.js.map +1 -1
  49. package/dist/mcp-client/errors.d.ts +2 -0
  50. package/dist/mcp-client/errors.d.ts.map +1 -0
  51. package/dist/mcp-client/errors.js +47 -0
  52. package/dist/mcp-client/errors.js.map +1 -0
  53. package/dist/mcp-client/manager.d.ts.map +1 -1
  54. package/dist/mcp-client/manager.js +44 -15
  55. package/dist/mcp-client/manager.js.map +1 -1
  56. package/dist/mcp-client/routes.d.ts +1 -2
  57. package/dist/mcp-client/routes.d.ts.map +1 -1
  58. package/dist/mcp-client/routes.js +2 -27
  59. package/dist/mcp-client/routes.js.map +1 -1
  60. package/dist/progress/store.d.ts +2 -0
  61. package/dist/progress/store.d.ts.map +1 -1
  62. package/dist/progress/store.js +44 -0
  63. package/dist/progress/store.js.map +1 -1
  64. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  65. package/dist/server/agent-chat-plugin.js +38 -6
  66. package/dist/server/agent-chat-plugin.js.map +1 -1
  67. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  68. package/dist/server/core-routes-plugin.js +31 -9
  69. package/dist/server/core-routes-plugin.js.map +1 -1
  70. package/dist/server/credential-provider.d.ts +8 -0
  71. package/dist/server/credential-provider.d.ts.map +1 -1
  72. package/dist/server/credential-provider.js +29 -3
  73. package/dist/server/credential-provider.js.map +1 -1
  74. package/dist/server/security-headers.d.ts +5 -4
  75. package/dist/server/security-headers.d.ts.map +1 -1
  76. package/dist/server/security-headers.js +6 -5
  77. package/dist/server/security-headers.js.map +1 -1
  78. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  79. package/dist/terminal/terminal-plugin.js +4 -3
  80. package/dist/terminal/terminal-plugin.js.map +1 -1
  81. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  export declare function isGitRepo(cwd: string): boolean;
2
2
  export declare function hasUncommittedChanges(cwd: string): boolean;
3
+ export declare function getUncommittedStatus(cwd: string): string | null;
3
4
  export declare function createCheckpoint(cwd: string, message: string): string | null;
4
5
  export declare function restoreToCheckpoint(cwd: string, sha: string): boolean;
5
6
  export declare function getChangedFileNames(cwd: string): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"AAcA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW9C;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB5E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA8BrE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzD"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"AAcA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW9C;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG1D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW/D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB5E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA8BrE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAyBzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzD"}
@@ -23,17 +23,20 @@ export function isGitRepo(cwd) {
23
23
  }
24
24
  }
25
25
  export function hasUncommittedChanges(cwd) {
26
+ const output = getUncommittedStatus(cwd);
27
+ return output !== null && output.trim().length > 0;
28
+ }
29
+ export function getUncommittedStatus(cwd) {
26
30
  try {
27
- const output = execFileSync("git", ["status", "--porcelain"], {
31
+ return execFileSync("git", ["status", "--porcelain"], {
28
32
  cwd,
29
33
  stdio: "pipe",
30
34
  timeout: TIMEOUT,
31
35
  encoding: "utf-8",
32
36
  });
33
- return output.trim().length > 0;
34
37
  }
35
38
  catch {
36
- return false;
39
+ return null;
37
40
  }
38
41
  }
39
42
  export function createCheckpoint(cwd, message) {
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nconst TIMEOUT = 10_000;\n\nconst CHECKPOINT_ENV = {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n};\n\nexport function isGitRepo(cwd: string): boolean {\n try {\n execFileSync(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function hasUncommittedChanges(cwd: string): boolean {\n try {\n const output = execFileSync(\"git\", [\"status\", \"--porcelain\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n });\n return output.trim().length > 0;\n } catch {\n return false;\n }\n}\n\nexport function createCheckpoint(cwd: string, message: string): string | null {\n try {\n execFileSync(\"git\", [\"add\", \"-A\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n execFileSync(\"git\", [\"commit\", \"-m\", message], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n env: CHECKPOINT_ENV,\n });\n const sha = execFileSync(\"git\", [\"rev-parse\", \"HEAD\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n return sha || null;\n } catch {\n return null;\n }\n}\n\nexport function restoreToCheckpoint(cwd: string, sha: string): boolean {\n try {\n // Restore all tracked files to the checkpoint state\n execFileSync(\"git\", [\"checkout\", sha, \"--\", \".\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n // Remove files that were added after the checkpoint\n try {\n const added = execFileSync(\n \"git\",\n [\"diff\", \"--name-only\", \"--diff-filter=A\", sha, \"HEAD\"],\n { cwd, stdio: \"pipe\", timeout: TIMEOUT, encoding: \"utf-8\" },\n ).trim();\n if (added) {\n for (const file of added.split(\"\\n\")) {\n const filePath = path.join(cwd, file);\n if (fs.existsSync(filePath)) {\n fs.unlinkSync(filePath);\n }\n }\n }\n } catch {\n // Best-effort cleanup of added files\n }\n return true;\n } catch {\n return false;\n }\n}\n\nexport function getChangedFileNames(cwd: string): string[] {\n try {\n const staged = execFileSync(\"git\", [\"diff\", \"--cached\", \"--name-only\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n const unstaged = execFileSync(\"git\", [\"diff\", \"--name-only\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n const untracked = execFileSync(\n \"git\",\n [\"ls-files\", \"--others\", \"--exclude-standard\"],\n { cwd, stdio: \"pipe\", timeout: TIMEOUT, encoding: \"utf-8\" },\n ).trim();\n const all = [staged, unstaged, untracked].filter(Boolean).join(\"\\n\");\n if (!all) return [];\n return [...new Set(all.split(\"\\n\").map((f) => f.split(\"/\").pop()!))];\n } catch {\n return [];\n }\n}\n\nexport function getCurrentHead(cwd: string): string | null {\n try {\n const sha = execFileSync(\"git\", [\"rev-parse\", \"HEAD\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n return sha || null;\n } catch {\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nconst TIMEOUT = 10_000;\n\nconst CHECKPOINT_ENV = {\n ...process.env,\n GIT_AUTHOR_NAME: \"agent-native\",\n GIT_AUTHOR_EMAIL: \"noreply@agent-native.com\",\n GIT_COMMITTER_NAME: \"agent-native\",\n GIT_COMMITTER_EMAIL: \"noreply@agent-native.com\",\n};\n\nexport function isGitRepo(cwd: string): boolean {\n try {\n execFileSync(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n return true;\n } catch {\n return false;\n }\n}\n\nexport function hasUncommittedChanges(cwd: string): boolean {\n const output = getUncommittedStatus(cwd);\n return output !== null && output.trim().length > 0;\n}\n\nexport function getUncommittedStatus(cwd: string): string | null {\n try {\n return execFileSync(\"git\", [\"status\", \"--porcelain\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n });\n } catch {\n return null;\n }\n}\n\nexport function createCheckpoint(cwd: string, message: string): string | null {\n try {\n execFileSync(\"git\", [\"add\", \"-A\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n execFileSync(\"git\", [\"commit\", \"-m\", message], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n env: CHECKPOINT_ENV,\n });\n const sha = execFileSync(\"git\", [\"rev-parse\", \"HEAD\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n return sha || null;\n } catch {\n return null;\n }\n}\n\nexport function restoreToCheckpoint(cwd: string, sha: string): boolean {\n try {\n // Restore all tracked files to the checkpoint state\n execFileSync(\"git\", [\"checkout\", sha, \"--\", \".\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n });\n // Remove files that were added after the checkpoint\n try {\n const added = execFileSync(\n \"git\",\n [\"diff\", \"--name-only\", \"--diff-filter=A\", sha, \"HEAD\"],\n { cwd, stdio: \"pipe\", timeout: TIMEOUT, encoding: \"utf-8\" },\n ).trim();\n if (added) {\n for (const file of added.split(\"\\n\")) {\n const filePath = path.join(cwd, file);\n if (fs.existsSync(filePath)) {\n fs.unlinkSync(filePath);\n }\n }\n }\n } catch {\n // Best-effort cleanup of added files\n }\n return true;\n } catch {\n return false;\n }\n}\n\nexport function getChangedFileNames(cwd: string): string[] {\n try {\n const staged = execFileSync(\"git\", [\"diff\", \"--cached\", \"--name-only\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n const unstaged = execFileSync(\"git\", [\"diff\", \"--name-only\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n const untracked = execFileSync(\n \"git\",\n [\"ls-files\", \"--others\", \"--exclude-standard\"],\n { cwd, stdio: \"pipe\", timeout: TIMEOUT, encoding: \"utf-8\" },\n ).trim();\n const all = [staged, unstaged, untracked].filter(Boolean).join(\"\\n\");\n if (!all) return [];\n return [...new Set(all.split(\"\\n\").map((f) => f.split(\"/\").pop()!))];\n } catch {\n return [];\n }\n}\n\nexport function getCurrentHead(cwd: string): string | null {\n try {\n const sha = execFileSync(\"git\", [\"rev-parse\", \"HEAD\"], {\n cwd,\n stdio: \"pipe\",\n timeout: TIMEOUT,\n encoding: \"utf-8\",\n }).trim();\n return sha || null;\n } catch {\n return null;\n }\n}\n"]}
@@ -123,7 +123,7 @@ function useCliSelection(keyPrefix) {
123
123
  const IS_DEV = import.meta.env?.DEV === true;
124
124
  // ─── Settings panel components moved to ./settings/ ────────────────────────
125
125
  function IconTooltip({ content, children, }) {
126
- return (_jsx(TooltipPrimitive.Provider, { delayDuration: 250, children: _jsxs(TooltipPrimitive.Root, { children: [_jsx(TooltipPrimitive.Trigger, { asChild: true, children: children }), _jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { side: "bottom", sideOffset: 8, className: "z-[230] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md", children: [normalizeTooltipText(content), _jsx(TooltipPrimitive.Arrow, { className: "fill-popover" })] }) })] }) }));
126
+ return (_jsx(TooltipPrimitive.Provider, { delayDuration: 250, children: _jsxs(TooltipPrimitive.Root, { children: [_jsx(TooltipPrimitive.Trigger, { asChild: true, children: children }), _jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { side: "bottom", sideOffset: 8, className: "z-[300] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md", children: [normalizeTooltipText(content), _jsx(TooltipPrimitive.Arrow, { className: "fill-popover" })] }) })] }) }));
127
127
  }
128
128
  function useBuilderConnectUrl() {
129
129
  const [connectUrl, setConnectUrl] = useState(null);