@agent-native/core 0.22.45 → 0.24.0

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 (138) hide show
  1. package/dist/a2a/artifact-response.js +1 -1
  2. package/dist/a2a/artifact-response.js.map +1 -1
  3. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  4. package/dist/agent/engine/builder-engine.js +5 -6
  5. package/dist/agent/engine/builder-engine.js.map +1 -1
  6. package/dist/agent/production-agent.d.ts.map +1 -1
  7. package/dist/agent/production-agent.js +12 -4
  8. package/dist/agent/production-agent.js.map +1 -1
  9. package/dist/agent/run-manager.d.ts +9 -2
  10. package/dist/agent/run-manager.d.ts.map +1 -1
  11. package/dist/agent/run-manager.js +9 -2
  12. package/dist/agent/run-manager.js.map +1 -1
  13. package/dist/cli/app-skill.d.ts +139 -0
  14. package/dist/cli/app-skill.d.ts.map +1 -0
  15. package/dist/cli/app-skill.js +960 -0
  16. package/dist/cli/app-skill.js.map +1 -0
  17. package/dist/cli/create.d.ts.map +1 -1
  18. package/dist/cli/create.js +13 -4
  19. package/dist/cli/create.js.map +1 -1
  20. package/dist/cli/index.js +24 -0
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/skills.d.ts +39 -0
  23. package/dist/cli/skills.d.ts.map +1 -0
  24. package/dist/cli/skills.js +363 -0
  25. package/dist/cli/skills.js.map +1 -0
  26. package/dist/cli/templates-meta.d.ts.map +1 -1
  27. package/dist/cli/templates-meta.js +9 -6
  28. package/dist/cli/templates-meta.js.map +1 -1
  29. package/dist/cli/workspace-dev.d.ts.map +1 -1
  30. package/dist/cli/workspace-dev.js +103 -9
  31. package/dist/cli/workspace-dev.js.map +1 -1
  32. package/dist/client/AgentPanel.d.ts +2 -0
  33. package/dist/client/AgentPanel.d.ts.map +1 -1
  34. package/dist/client/AgentPanel.js +2 -2
  35. package/dist/client/AgentPanel.js.map +1 -1
  36. package/dist/client/AssistantChat.d.ts +13 -0
  37. package/dist/client/AssistantChat.d.ts.map +1 -1
  38. package/dist/client/AssistantChat.js +66 -22
  39. package/dist/client/AssistantChat.js.map +1 -1
  40. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  41. package/dist/client/MultiTabAssistantChat.js +17 -1
  42. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  43. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  44. package/dist/client/agent-chat-adapter.js +70 -10
  45. package/dist/client/agent-chat-adapter.js.map +1 -1
  46. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  47. package/dist/client/extensions/ExtensionViewer.js +157 -2
  48. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  49. package/dist/client/index.d.ts +1 -1
  50. package/dist/client/index.d.ts.map +1 -1
  51. package/dist/client/index.js.map +1 -1
  52. package/dist/client/sse-event-processor.d.ts +6 -0
  53. package/dist/client/sse-event-processor.d.ts.map +1 -1
  54. package/dist/client/sse-event-processor.js +9 -2
  55. package/dist/client/sse-event-processor.js.map +1 -1
  56. package/dist/client/use-chat-threads.d.ts +8 -1
  57. package/dist/client/use-chat-threads.d.ts.map +1 -1
  58. package/dist/client/use-chat-threads.js +37 -7
  59. package/dist/client/use-chat-threads.js.map +1 -1
  60. package/dist/client/use-chat-threads.spec.js +59 -0
  61. package/dist/client/use-chat-threads.spec.js.map +1 -1
  62. package/dist/deploy/workspace-deploy.js +6 -0
  63. package/dist/deploy/workspace-deploy.js.map +1 -1
  64. package/dist/extensions/actions.d.ts.map +1 -1
  65. package/dist/extensions/actions.js +112 -2
  66. package/dist/extensions/actions.js.map +1 -1
  67. package/dist/extensions/routes.d.ts.map +1 -1
  68. package/dist/extensions/routes.js +37 -2
  69. package/dist/extensions/routes.js.map +1 -1
  70. package/dist/extensions/schema.d.ts +275 -0
  71. package/dist/extensions/schema.d.ts.map +1 -1
  72. package/dist/extensions/schema.js +53 -1
  73. package/dist/extensions/schema.js.map +1 -1
  74. package/dist/extensions/store.d.ts +40 -0
  75. package/dist/extensions/store.d.ts.map +1 -1
  76. package/dist/extensions/store.js +367 -3
  77. package/dist/extensions/store.js.map +1 -1
  78. package/dist/mcp-client/index.d.ts +1 -1
  79. package/dist/mcp-client/index.d.ts.map +1 -1
  80. package/dist/mcp-client/index.js +1 -1
  81. package/dist/mcp-client/index.js.map +1 -1
  82. package/dist/mcp-client/routes.d.ts +1 -0
  83. package/dist/mcp-client/routes.d.ts.map +1 -1
  84. package/dist/mcp-client/routes.js +52 -0
  85. package/dist/mcp-client/routes.js.map +1 -1
  86. package/dist/mcp-client/workspace-servers.d.ts +15 -0
  87. package/dist/mcp-client/workspace-servers.d.ts.map +1 -0
  88. package/dist/mcp-client/workspace-servers.js +297 -0
  89. package/dist/mcp-client/workspace-servers.js.map +1 -0
  90. package/dist/resources/handlers.d.ts.map +1 -1
  91. package/dist/resources/handlers.js +38 -25
  92. package/dist/resources/handlers.js.map +1 -1
  93. package/dist/resources/store.d.ts +11 -3
  94. package/dist/resources/store.d.ts.map +1 -1
  95. package/dist/resources/store.js +220 -9
  96. package/dist/resources/store.js.map +1 -1
  97. package/dist/scripts/call-agent.js +1 -1
  98. package/dist/scripts/call-agent.js.map +1 -1
  99. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  100. package/dist/server/agent-chat-plugin.js +25 -6
  101. package/dist/server/agent-chat-plugin.js.map +1 -1
  102. package/dist/server/agent-discovery.d.ts.map +1 -1
  103. package/dist/server/agent-discovery.js +34 -9
  104. package/dist/server/agent-discovery.js.map +1 -1
  105. package/dist/server/auth-marketing.d.ts.map +1 -1
  106. package/dist/server/auth-marketing.js +8 -5
  107. package/dist/server/auth-marketing.js.map +1 -1
  108. package/dist/server/auth.d.ts.map +1 -1
  109. package/dist/server/auth.js +6 -2
  110. package/dist/server/auth.js.map +1 -1
  111. package/dist/templates/default/AGENTS.md +12 -4
  112. package/dist/templates/default/DEVELOPING.md +7 -5
  113. package/dist/templates/workspace-core/AGENTS.md +7 -0
  114. package/dist/templates/workspace-root/AGENTS.md +6 -0
  115. package/docs/content/creating-templates.md +14 -9
  116. package/docs/content/database.md +44 -17
  117. package/docs/content/deployment.md +15 -7
  118. package/docs/content/dispatch.md +7 -1
  119. package/docs/content/embedding-sdk.md +79 -0
  120. package/docs/content/extensions.md +5 -0
  121. package/docs/content/key-concepts.md +15 -17
  122. package/docs/content/mcp-clients.md +30 -0
  123. package/docs/content/multi-app-workspace.md +3 -2
  124. package/docs/content/multi-tenancy.md +4 -4
  125. package/docs/content/server.md +10 -7
  126. package/docs/content/skills-guide.md +75 -0
  127. package/docs/content/template-analytics.md +1 -1
  128. package/docs/content/template-assets.md +130 -0
  129. package/docs/content/template-dispatch.md +3 -2
  130. package/docs/content/template-slides.md +2 -2
  131. package/docs/content/workspace-management.md +2 -2
  132. package/docs/content/workspace.md +11 -9
  133. package/package.json +1 -1
  134. package/src/templates/default/AGENTS.md +12 -4
  135. package/src/templates/default/DEVELOPING.md +7 -5
  136. package/src/templates/workspace-core/AGENTS.md +7 -0
  137. package/src/templates/workspace-root/AGENTS.md +6 -0
  138. package/docs/content/template-images.md +0 -55
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAehF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,oBAAoB;AAC9B;;;;GAIG;AACD,KAAK;AACP,0EAA0E;GACxE,WAAW,CAAC;AAovBhB;;;;GAIG;AACH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACrD,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,gBAAgB,CAu9BnB"}
1
+ {"version":3,"file":"agent-chat-adapter.d.ts","sourceRoot":"","sources":["../../src/client/agent-chat-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,qBAAqB,CAAC;AAgBhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAKrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,MAAM,oBAAoB;AAC9B;;;;GAIG;AACD,KAAK;AACP,0EAA0E;GACxE,WAAW,CAAC;AAmzBhB;;;;GAIG;AACH;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,SAAS,CAAA;KAAE,CAAC;IACrD,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IAC3D,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,gBAAgB,CAg/BnB"}
@@ -220,6 +220,36 @@ function messageTextForHistory(message) {
220
220
  .filter((part) => !!part && part.trim().length > 0);
221
221
  return truncateForHistory([text, ...attachments].filter((part) => part.trim()).join("\n\n"), MAX_HISTORY_MESSAGE_CHARS, "Message");
222
222
  }
223
+ const RECOVERY_USER_MESSAGE_PREFIXES = [
224
+ "Continue from where you left off",
225
+ "Continue from where you stopped",
226
+ "Retry the previous request from a clean approach",
227
+ ];
228
+ function recoveryActionFromMessage(message) {
229
+ const meta = message?.metadata;
230
+ const action = meta?.custom?.agentNativeRecoveryAction;
231
+ return action === "continue" || action === "retry" ? action : null;
232
+ }
233
+ function isRecoveryUserMessage(message) {
234
+ if (recoveryActionFromMessage(message))
235
+ return true;
236
+ const text = messageTextFromContentRaw(message.content).trim();
237
+ return RECOVERY_USER_MESSAGE_PREFIXES.some((prefix) => text.startsWith(prefix));
238
+ }
239
+ function latestUserMessage(messages, options) {
240
+ const start = typeof options?.beforeIndex === "number"
241
+ ? Math.min(options.beforeIndex, messages.length)
242
+ : messages.length;
243
+ for (let i = start - 1; i >= 0; i--) {
244
+ const message = messages[i];
245
+ if (message.role !== "user")
246
+ continue;
247
+ if (options?.skipRecovery && isRecoveryUserMessage(message))
248
+ continue;
249
+ return message;
250
+ }
251
+ return undefined;
252
+ }
223
253
  function isToolCallContentPart(part) {
224
254
  return Boolean(part && typeof part === "object" && part.type === "tool-call");
225
255
  }
@@ -391,10 +421,19 @@ function hasContinuationProgress(content) {
391
421
  ? part.text.trim().length > 0
392
422
  : part.result !== undefined);
393
423
  }
424
+ function lastActivityTool(trail) {
425
+ for (let i = trail.length - 1; i >= 0; i--) {
426
+ const tool = trail[i]?.tool?.trim();
427
+ if (tool)
428
+ return tool;
429
+ }
430
+ return undefined;
431
+ }
394
432
  function snapshotContent(content) {
395
433
  return content.map((part) => part.type === "text" ? { ...part } : { ...part, args: { ...part.args } });
396
434
  }
397
435
  function autoContinueMessage(signal) {
436
+ const tool = lastActivityTool(signal.activityTrail);
398
437
  const reason = signal.reason === "loop_limit"
399
438
  ? "The previous run reached an internal step budget."
400
439
  : signal.reason === "stale_run"
@@ -404,7 +443,10 @@ function autoContinueMessage(signal) {
404
443
  : signal.reason === "stream_ended"
405
444
  ? "The previous stream ended before the agent sent a final completion signal."
406
445
  : "The previous run reached an internal execution budget.";
407
- return `${AUTO_CONTINUE_PROMPT}\n\nInternal note: ${reason}`;
446
+ const actionInputNote = signal.reason === "run_timeout" && tool
447
+ ? `\n\nThe previous run timed out while preparing the \`${tool}\` action input before the action could run. Avoid spending another whole run assembling one large tool payload. If this is \`create-extension\`, create a compact working v1 first, then use focused \`update-extension\` edits for refinements.`
448
+ : "";
449
+ return `${AUTO_CONTINUE_PROMPT}\n\nInternal note: ${reason}${actionInputNote}`;
408
450
  }
409
451
  function delay(ms, abortSignal) {
410
452
  if (abortSignal.aborted)
@@ -602,13 +644,27 @@ export function createAgentChatAdapter(options) {
602
644
  return {
603
645
  async *run({ messages, abortSignal, runConfig }) {
604
646
  // Extract latest user message and build history from prior messages
605
- let lastUserMsg;
606
- for (let i = messages.length - 1; i >= 0; i--) {
607
- if (messages[i].role === "user") {
608
- lastUserMsg = messages[i];
609
- break;
647
+ const adapterMessages = messages;
648
+ const latestUserIndex = (() => {
649
+ for (let i = adapterMessages.length - 1; i >= 0; i--) {
650
+ if (adapterMessages[i].role === "user")
651
+ return i;
610
652
  }
611
- }
653
+ return -1;
654
+ })();
655
+ const latestUserMsg = latestUserIndex >= 0 ? adapterMessages[latestUserIndex] : undefined;
656
+ const latestUserIsRecovery = latestUserMsg
657
+ ? isRecoveryUserMessage(latestUserMsg)
658
+ : false;
659
+ const lastUserMsg = latestUserIsRecovery && latestUserIndex >= 0
660
+ ? (latestUserMessage(adapterMessages, {
661
+ skipRecovery: true,
662
+ beforeIndex: latestUserIndex,
663
+ }) ?? latestUserMsg)
664
+ : latestUserMsg;
665
+ const recoveryMessageText = latestUserIsRecovery && latestUserMsg
666
+ ? messageTextFromContentRaw(latestUserMsg.content)
667
+ : "";
612
668
  const rawMessageText = lastUserMsg?.content
613
669
  .filter((p) => p.type === "text")
614
670
  .map((p) => p.text)
@@ -649,7 +705,7 @@ export function createAgentChatAdapter(options) {
649
705
  const userMessageText = rawMessageText.trim() || attachments.length === 0
650
706
  ? rawMessageText
651
707
  : "Use the attached context.";
652
- const priorMessages = limitPriorMessagesForRequest(messages.slice(0, -1)); // exclude latest user message and cap resend size
708
+ const priorMessages = limitPriorMessagesForRequest(messages.slice(0, latestUserIndex >= 0 ? latestUserIndex : -1)); // exclude latest user/recovery message and cap resend size
653
709
  const history = priorMessages
654
710
  .filter((m) => m.role === "user" || m.role === "assistant")
655
711
  .map((m) => ({
@@ -670,7 +726,7 @@ export function createAgentChatAdapter(options) {
670
726
  const toolCallCounter = { value: 0 };
671
727
  let runId = null;
672
728
  let lastSeq = -1;
673
- let currentMessageText = normalizeMentions(userMessageText);
729
+ let currentMessageText = normalizeMentions(recoveryMessageText.trim() || userMessageText);
674
730
  let currentHistory = history;
675
731
  let currentStructuredHistory = structuredHistory;
676
732
  let includeAttachments = attachments.length > 0;
@@ -934,7 +990,11 @@ export function createAgentChatAdapter(options) {
934
990
  }
935
991
  else {
936
992
  totalTransientContinuationAttempts += 1;
937
- if (!madeVisibleProgress && signal.reason === "run_timeout") {
993
+ const madeActivityProgress = signal.activityTrail.length > 0 ||
994
+ Boolean(lastActivityTool(signal.activityTrail));
995
+ if (!madeVisibleProgress &&
996
+ signal.reason === "run_timeout" &&
997
+ !madeActivityProgress) {
938
998
  return { ok: false, resetVisibleContent: false };
939
999
  }
940
1000
  if (!madeVisibleProgress) {