@symerian/symi 3.5.32 → 3.5.34

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 (113) hide show
  1. package/dist/{agent-BsRYHa15.js → agent-DkwJ_C7T.js} +1 -1
  2. package/dist/{agent-TRt_SsAW.js → agent-Dyqpglpp.js} +1 -1
  3. package/dist/{agents-7qMp2MWu.js → agents-CuwUmffQ.js} +2 -2
  4. package/dist/{auth-choice-DcB72YWZ.js → auth-choice-CbNJI71b.js} +1 -1
  5. package/dist/{auth-choice-C8lwYiEQ.js → auth-choice-Di2NnC96.js} +1 -1
  6. package/dist/{banner-B5Hv4rlk.js → banner-F6EJmEcS.js} +1 -1
  7. package/dist/build-info.json +3 -3
  8. package/dist/bundled/boot-md/handler.js +2 -2
  9. package/dist/bundled/session-memory/handler.js +2 -2
  10. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  11. package/dist/{channel-options-DOzFci6h.js → channel-options-CLEZcALj.js} +1 -1
  12. package/dist/{channel-options-ZkruGuHl.js → channel-options-IVQWWWuc.js} +1 -1
  13. package/dist/{channels-cli-CEz9LILV.js → channels-cli-Bl17If5e.js} +7 -7
  14. package/dist/{channels-cli-DMShhX0d.js → channels-cli-D8d9ok3b.js} +7 -7
  15. package/dist/{chrome-DNssqQJs.js → chrome-3jl2ulOE.js} +7 -7
  16. package/dist/{cli-MDHkESMC.js → cli-BIoLyk88.js} +4 -4
  17. package/dist/{cli-Byovb_j5.js → cli-CbAnYkYs.js} +4 -4
  18. package/dist/{command-registry-Dzj-Uz5N.js → command-registry-C5LOUwKq.js} +10 -10
  19. package/dist/{completion-cli-vAwL_uEK.js → completion-cli-Dcc5-bYY.js} +2 -2
  20. package/dist/{completion-cli-CsJ2f_fk.js → completion-cli-DewJuifK.js} +1 -1
  21. package/dist/{config-cli-cmea_Z-A.js → config-cli-CMsbPGB3.js} +1 -1
  22. package/dist/{config-cli-CqqCDyf0.js → config-cli-DemkhbXj.js} +1 -1
  23. package/dist/{configure-DymrZd1n.js → configure-CW75YbiI.js} +2 -2
  24. package/dist/{configure-BEPKQuJj.js → configure-Dc5xcSyf.js} +2 -2
  25. package/dist/control-ui/css/style.css +162 -0
  26. package/dist/control-ui/js/symframe.js +135 -0
  27. package/dist/{deliver-q23ar_Pm.js → deliver-f3cIWxXT.js} +4 -4
  28. package/dist/{doctor-completion--phnyAqO.js → doctor-completion-BpVYwGK0.js} +1 -1
  29. package/dist/{doctor-completion-BY72G6-l.js → doctor-completion-DQmw1ojx.js} +1 -1
  30. package/dist/entry.js +1 -1
  31. package/dist/extensionAPI.js +4 -4
  32. package/dist/{gateway-cli-Bo80TSkq.js → gateway-cli-Dx6ulSWd.js} +10 -10
  33. package/dist/{gateway-cli-BVpyqk_H.js → gateway-cli-TdnIAl4W.js} +10 -10
  34. package/dist/{glass-ui-ws-CrmnRYxe.js → glass-ui-ws-BF5GGXNz.js} +8 -8
  35. package/dist/{glass-ui-ws-BK5qk7-_.js → glass-ui-ws-CZkskC04.js} +8 -8
  36. package/dist/{hooks-cli-CjklMDuK.js → hooks-cli-DFMpZI4k.js} +5 -5
  37. package/dist/{hooks-cli-CqmTdxT6.js → hooks-cli-Djw7WFoS.js} +5 -5
  38. package/dist/index.js +8 -8
  39. package/dist/llm-slug-generator.js +2 -2
  40. package/dist/{manager-DM2oPS8M.js → manager-BVgukgOu.js} +1 -1
  41. package/dist/{manager-NDn8AFhr.js → manager-CAdF4u2G.js} +1 -1
  42. package/dist/{manager-XfNxjaX5.js → manager-DSXvXUZQ.js} +1 -1
  43. package/dist/{manager-CL767Sv9.js → manager-Dw6j9KTZ.js} +1 -1
  44. package/dist/{memory-CTf9MdBg.js → memory-7DZfwFEz.js} +2 -2
  45. package/dist/{memory-DOl2l2AS.js → memory-CuBkKhKM.js} +2 -2
  46. package/dist/{memory-cli-B9_Vfaow.js → memory-cli-C8h9g8yO.js} +2 -2
  47. package/dist/{memory-cli-CA5PbH9y.js → memory-cli-CGqqpDlw.js} +2 -2
  48. package/dist/{models-DgiBOeVH.js → models-CLJSIS8A.js} +2 -2
  49. package/dist/{models-cli-B7gTrlgn.js → models-cli-CbG4PAoP.js} +5 -5
  50. package/dist/{models-cli-BHN3bt0f.js → models-cli-D9bmuwoB.js} +6 -6
  51. package/dist/{onboard-DGp6mHJD.js → onboard-BY-QnWdl.js} +1 -1
  52. package/dist/{onboard-BNdKimpG.js → onboard-BdPqyQmJ.js} +1 -1
  53. package/dist/{onboard-channels-Dhb-28-_.js → onboard-channels-Bzi2ck6V.js} +1 -1
  54. package/dist/{onboard-channels-DSBWRjSp.js → onboard-channels-C8bsROUq.js} +1 -1
  55. package/dist/{onboarding-BG23DuS1.js → onboarding-Ccnav61g.js} +3 -3
  56. package/dist/{onboarding-MPSU9pXd.js → onboarding-Hbt4RoTz.js} +3 -3
  57. package/dist/{onboarding.finalize-Cv20GyNt.js → onboarding.finalize--xJkztAR.js} +3 -3
  58. package/dist/{onboarding.finalize-B-mxzJ08.js → onboarding.finalize-OpyyTxY1.js} +4 -4
  59. package/dist/{pi-embedded-V-5MAZNb.js → pi-embedded-RgjY3r6K.js} +92 -10
  60. package/dist/{plugin-registry-c3Skr0q9.js → plugin-registry-B_NJFVHQ.js} +1 -1
  61. package/dist/{plugin-registry-CBV_Y6Dj.js → plugin-registry-X13tkCTS.js} +1 -1
  62. package/dist/plugin-sdk/index.js +6 -6
  63. package/dist/{plugins-cli-8Jo1X8SU.js → plugins-cli-C4bJxBRh.js} +5 -5
  64. package/dist/{plugins-cli-Dl7-FSCq.js → plugins-cli-DtdwfV-d.js} +5 -5
  65. package/dist/{program-context-BpeLcVUB.js → program-context-YblB1bz7.js} +18 -18
  66. package/dist/{program-D-LYHEvk.js → program-qzq3Lh15.js} +10 -10
  67. package/dist/{prompt-select-styled-ZWxB2Odf.js → prompt-select-styled-B_ial7p9.js} +4 -4
  68. package/dist/{prompt-select-styled-Ceih9wkY.js → prompt-select-styled-CQDea8e4.js} +4 -4
  69. package/dist/{provider-auth-helpers-BdvW7eau.js → provider-auth-helpers-BcP3qXzm.js} +1 -1
  70. package/dist/{provider-auth-helpers-BCejcf5o.js → provider-auth-helpers-BjVtTJHF.js} +1 -1
  71. package/dist/{push-apns-D4iLNyBo.js → push-apns-BWhqnXlG.js} +1 -1
  72. package/dist/{push-apns-HQd5hCpM.js → push-apns-D5FHZT1S.js} +1 -1
  73. package/dist/{pw-ai-v__CyAlM.js → pw-ai-DOAsQ5NX.js} +1 -1
  74. package/dist/{register.agent-DoUbqZIu.js → register.agent-BDw4ZFQo.js} +9 -9
  75. package/dist/{register.agent-zwVEiCHs.js → register.agent-DBb8ssU_.js} +8 -8
  76. package/dist/{register.configure-jBKvvOnk.js → register.configure-ClTC_gFo.js} +8 -8
  77. package/dist/{register.configure-CSe8Rlda.js → register.configure-DwN6_ucd.js} +8 -8
  78. package/dist/{register.maintenance-BdikNAV1.js → register.maintenance-C4EBdIW-.js} +9 -9
  79. package/dist/{register.maintenance-royLmVA2.js → register.maintenance-J8-7UEyc.js} +8 -8
  80. package/dist/{register.message-C_0uLdYn.js → register.message-CBkdglWp.js} +5 -5
  81. package/dist/{register.message-C1H5Vcnb.js → register.message-DkhnvbOo.js} +5 -5
  82. package/dist/{register.onboard-DTLtb0SN.js → register.onboard-B62sO2YM.js} +2 -2
  83. package/dist/{register.onboard-DnMRUtnl.js → register.onboard-BTM1uWDL.js} +2 -2
  84. package/dist/{register.setup-KA8Cs3HJ.js → register.setup-C7ai_6EG.js} +2 -2
  85. package/dist/{register.setup-B9sjRH7l.js → register.setup-X1z8nL1f.js} +2 -2
  86. package/dist/{register.status-health-sessions-BwiKHLEj.js → register.status-health-sessions-PBqHdGtS.js} +3 -3
  87. package/dist/{register.status-health-sessions-B_jcsH3c.js → register.status-health-sessions-oi4VY1yI.js} +3 -3
  88. package/dist/{register.subclis-B_V8vNI0.js → register.subclis-C1nbYmb-.js} +9 -9
  89. package/dist/{run-main-DhgQtxI0.js → run-main-Dcnq5F34.js} +17 -17
  90. package/dist/{server-methods-Bdz-OwQ4.js → server-methods-B8BrOzmI.js} +7 -7
  91. package/dist/{server-methods-6-10RyMD.js → server-methods-Cb-Z7rAJ.js} +7 -7
  92. package/dist/{server-node-events-C4giIb7q.js → server-node-events-BHcTrVe6.js} +6 -6
  93. package/dist/{server-node-events-B3Yey3h9.js → server-node-events-DnbQWd7e.js} +6 -6
  94. package/dist/{status-BRUIJsUm.js → status-CMnu_ZM8.js} +1 -1
  95. package/dist/{status-D_0593yR.js → status-DtfiqHU9.js} +1 -1
  96. package/dist/{status-B_CQpjQ9.js → status-KQBTdecN.js} +1 -1
  97. package/dist/{status-CCAO6ZHm.js → status-qu-13pDh.js} +1 -1
  98. package/dist/{subagent-registry-D8BIWG9Q.js → subagent-registry-BagjubTG.js} +85 -3
  99. package/dist/{synthesis-qvteT0Ti.js → synthesis-BFginQes.js} +4 -4
  100. package/dist/{synthesis-BfVWACNx.js → synthesis-CNxkpSl0.js} +4 -4
  101. package/dist/{synthesis-CV94EuT_.js → synthesis-CjbRZN2u.js} +4 -4
  102. package/dist/{synthesis-Bfhs-a4F.js → synthesis-CzEJh0zD.js} +2 -2
  103. package/dist/{unified-runner-C7BRCFJF.js → unified-runner-B2uJpfUK.js} +85 -3
  104. package/dist/{unified-runner-CtSJoaGS.js → unified-runner-BoNa4zCp.js} +85 -3
  105. package/dist/{update-cli-CUos9qgT.js → update-cli-D6uHO0yM.js} +9 -9
  106. package/dist/{update-cli-BrryYmFA.js → update-cli-Dj7wVif6.js} +8 -8
  107. package/extensions/memory-core/package.json +1 -1
  108. package/extensions/msteams/CHANGELOG.md +12 -0
  109. package/extensions/msteams/package.json +1 -1
  110. package/extensions/open-prose/package.json +1 -1
  111. package/extensions/outlook/package.json +1 -1
  112. package/extensions/slack/package.json +1 -1
  113. package/package.json +1 -1
@@ -31,7 +31,7 @@ import { t as emitSessionTranscriptUpdate } from "./transcript-events-ChU6IQwp.j
31
31
  import { n as isSilentReplyText, t as SILENT_REPLY_TOKEN } from "./tokens-D_vCJSzF.js";
32
32
  import { a as logMessageProcessed, i as logLaneEnqueue, o as logMessageQueued, r as logLaneDequeue, s as logSessionStateChange, t as diag } from "./diagnostic-BALvP9wI.js";
33
33
  import { n as getDiagnosticSessionState } from "./diagnostic-session-state-BDfanaOY.js";
34
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-DM2oPS8M.js";
34
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, d as requireApiKey, f as resolveApiKeyForProvider, h as resolveModelAuthMode, i as resolveOllamaBaseUrl, l as getApiKeyForModel, m as resolveEnvApiKey, n as retryAsync, o as collectProviderApiKeysForExecution, p as resolveAwsSdkEnvVarName, r as probeOllamaEmbeddingModels, s as executeWithApiKeyRotation, u as getCustomProviderApiKey } from "./manager-BVgukgOu.js";
35
35
  import { r as resolveCopilotApiToken, t as DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token-uhEBNQfj.js";
36
36
  import { t as ensurePiAuthJsonFromAuthProfiles } from "./pi-auth-json-DCGR3yfh.js";
37
37
  import { a as resolveEffectiveMessagesConfig, i as resolveAckReaction, o as resolveHumanDelayConfig, r as resolveResponsePrefixTemplate, t as createReplyPrefixOptions } from "./reply-prefix-D0NzzC4I.js";
@@ -4460,7 +4460,7 @@ async function getMemorySearchManager(params) {
4460
4460
  const wrapper = new FallbackMemoryManager({
4461
4461
  primary,
4462
4462
  fallbackFactory: async () => {
4463
- const { MemoryIndexManager } = await import("./manager-DM2oPS8M.js").then((n) => n.t);
4463
+ const { MemoryIndexManager } = await import("./manager-BVgukgOu.js").then((n) => n.t);
4464
4464
  return await MemoryIndexManager.get(params);
4465
4465
  }
4466
4466
  }, () => QMD_MANAGER_CACHE.delete(cacheKey));
@@ -4473,7 +4473,7 @@ async function getMemorySearchManager(params) {
4473
4473
  }
4474
4474
  }
4475
4475
  try {
4476
- const { MemoryIndexManager } = await import("./manager-DM2oPS8M.js").then((n) => n.t);
4476
+ const { MemoryIndexManager } = await import("./manager-BVgukgOu.js").then((n) => n.t);
4477
4477
  return { manager: await MemoryIndexManager.get(params) };
4478
4478
  } catch (err) {
4479
4479
  return {
@@ -58829,6 +58829,19 @@ async function handleToolExecutionStart(ctx, evt) {
58829
58829
  toolCallId
58830
58830
  }
58831
58831
  });
58832
+ if (toolName !== "display_artifact") emitSymframePush({
58833
+ action: "add",
58834
+ id: `tool-${toolCallId}`,
58835
+ card: {
58836
+ id: `tool-${toolCallId}`,
58837
+ type: "tool",
58838
+ intent: "drafted",
58839
+ title: toolName,
58840
+ toolMeta: meta,
58841
+ toolStatus: "firing",
58842
+ toolStartedAt: Date.now()
58843
+ }
58844
+ });
58832
58845
  if (ctx.params.onToolResult && shouldEmitToolEvents && !ctx.state.toolSummaryById.has(toolCallId)) {
58833
58846
  ctx.state.toolSummaryById.add(toolCallId);
58834
58847
  ctx.emitToolSummary(toolName, meta);
@@ -58957,6 +58970,19 @@ async function handleToolExecutionEnd(ctx, evt) {
58957
58970
  isError: isToolError
58958
58971
  }
58959
58972
  });
58973
+ if (toolName !== "display_artifact") {
58974
+ const durationMs = startData?.startTime != null ? Date.now() - startData.startTime : void 0;
58975
+ emitSymframePush({
58976
+ action: "update",
58977
+ id: `tool-${toolCallId}`,
58978
+ card: {
58979
+ toolStatus: isToolError ? "error" : "done",
58980
+ toolMeta: meta,
58981
+ toolDurationMs: durationMs,
58982
+ releaseAfterMs: 3e3
58983
+ }
58984
+ });
58985
+ }
58960
58986
  ctx.log.debug(`embedded run tool end: runId=${ctx.params.runId} tool=${toolName} toolCallId=${toolCallId}`);
58961
58987
  if (ctx.params.onToolResult && ctx.shouldEmitToolOutput()) {
58962
58988
  const outputText = extractToolResultText(sanitizedResult);
@@ -60763,6 +60789,44 @@ function injectHistoryImagesIntoMessages(messages, historyImagesByIndex) {
60763
60789
  }
60764
60790
  return didMutate;
60765
60791
  }
60792
+ function parseMemorySnippet(path, snippet) {
60793
+ const baseName = (path.split(/[/\\]/).pop() ?? path).replace(/\.md$/i, "");
60794
+ const typeFromPrefix = (() => {
60795
+ const prefix = baseName.split("_")[0]?.toLowerCase() ?? "";
60796
+ if ([
60797
+ "user",
60798
+ "feedback",
60799
+ "project",
60800
+ "reference"
60801
+ ].includes(prefix)) return prefix;
60802
+ return "memory";
60803
+ })();
60804
+ let title = baseName;
60805
+ let type = typeFromPrefix;
60806
+ let description = "";
60807
+ const lines = snippet.split(/\r?\n/);
60808
+ for (const raw of lines) {
60809
+ const line = raw.trim();
60810
+ if (!line || line === "---") continue;
60811
+ const m = line.match(/^([a-z][a-z0-9_-]*)\s*:\s*(.+)$/i);
60812
+ if (!m) {
60813
+ if (!description && line.length > 0 && !line.startsWith("#")) description = line;
60814
+ continue;
60815
+ }
60816
+ const key = m[1].toLowerCase();
60817
+ const value = m[2].trim();
60818
+ if (key === "name" && !title.includes(" ")) title = value;
60819
+ else if (key === "name") title = value;
60820
+ else if (key === "description") description = value;
60821
+ else if (key === "type") type = value.toLowerCase();
60822
+ }
60823
+ if (description.length > 160) description = `${description.slice(0, 157)}…`;
60824
+ return {
60825
+ title,
60826
+ type,
60827
+ description
60828
+ };
60829
+ }
60766
60830
  function summarizeMessagePayload(msg) {
60767
60831
  const content = msg.content;
60768
60832
  if (typeof content === "string") return {
@@ -61465,6 +61529,24 @@ async function runEmbeddedAttempt(params) {
61465
61529
  const recallBlock = `<memory_context>\nThe following memory snippets were automatically retrieved as relevant context:\n\n${recallResults.map((r) => `[${r.path}#L${r.startLine}-L${r.endLine}]\n${r.snippet}`).join("\n---\n")}\n</memory_context>`;
61466
61530
  effectivePrompt = `${recallBlock}\n\n${effectivePrompt}`;
61467
61531
  log$8.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
61532
+ for (const r of recallResults) {
61533
+ const parsed = parseMemorySnippet(r.path, r.snippet);
61534
+ emitSymframePush({
61535
+ action: "add",
61536
+ id: `memory-${r.path}#L${r.startLine}`,
61537
+ card: {
61538
+ id: `memory-${r.path}#L${r.startLine}`,
61539
+ type: "memory",
61540
+ intent: "holding",
61541
+ title: parsed.title,
61542
+ memoryType: parsed.type,
61543
+ memoryDescription: parsed.description,
61544
+ memoryPath: r.path,
61545
+ memoryScore: r.score,
61546
+ releaseAfterMs: 6e4
61547
+ }
61548
+ });
61549
+ }
61468
61550
  }
61469
61551
  }
61470
61552
  } catch (recallErr) {
@@ -52,8 +52,8 @@ import { c as hasNonzeroUsage, l as normalizeUsage, n as loadCostUsageSummary, o
52
52
  import { C as enqueueSystemEvent, E as buildChannelSummary, S as drainSystemEventEntries, _ as loadProviderUsageSummary, a as loadCombinedSessionStoreForGateway, b as resolveUsageProviderId, d as formatDoctorNonInteractiveHint, g as writeRestartSentinel, k as redactIdentifier, x as lookupContextTokens, y as formatUsageWindowSummary } from "./session-utils-Cs1jlD-q.js";
53
53
  import { n as createBrowserRouteDispatcher, r as getMachineDisplayName, t as withTimeout$2 } from "./with-timeout-DPR4A2dx.js";
54
54
  import { i as resolveAckReaction, o as resolveEffectiveMessagesConfig, r as resolveResponsePrefixTemplate, s as resolveHumanDelayConfig, t as createReplyPrefixOptions } from "./reply-prefix-BFNeXT65.js";
55
- import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-DOl2l2AS.js";
56
- import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-CL767Sv9.js";
55
+ import { n as resolveMemoryBackendConfig, t as getMemorySearchManager } from "./memory-CuBkKhKM.js";
56
+ import { a as parseGeminiAuth, c as resolveMemorySearchConfig, n as retryAsync, o as collectProviderApiKeysForExecution, s as executeWithApiKeyRotation } from "./manager-Dw6j9KTZ.js";
57
57
  import { f as runTasksWithConcurrency } from "./internal-DVCddhhN.js";
58
58
  import { a as chunkText, c as resolveChunkMode, d as isSafeFenceBreak, f as parseFenceSpans, i as chunkMarkdownTextWithMode, l as resolveTextChunkLimit, o as chunkTextWithMode, r as chunkMarkdownText, t as chunkByNewline, u as findFenceSpanAt } from "./chunk-BxfKjCUx.js";
59
59
  import { n as resolveMarkdownTableMode } from "./markdown-tables-CS1Tvb3z.js";
@@ -86,7 +86,7 @@ import { t as emitSymframePush } from "./symframe-broadcast-CXo2qoxy.js";
86
86
  import { n as resolveMessageChannelSelection, t as listConfiguredMessageChannels } from "./channel-selection-H1qOf0q-.js";
87
87
  import { n as resolveAgentRoute, t as buildAgentSessionKey } from "./resolve-route-C1IIA6kH.js";
88
88
  import { t as parseTimeoutMs } from "./parse-timeout-DmEcHIsV.js";
89
- import { n as registerMemoryCli } from "./memory-cli-B9_Vfaow.js";
89
+ import { n as registerMemoryCli } from "./memory-cli-C8h9g8yO.js";
90
90
  import { i as resolveSlackThreadTs, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-CbXXjn9X.js";
91
91
  import { a as resolveSubagentToolPolicy, i as resolveGroupToolPolicy, n as isToolAllowedByPolicies, r as resolveEffectiveToolPolicy, t as filterToolsByPolicy } from "./pi-tools.policy-H2t-Xkfc.js";
92
92
  import { a as buildModelAliasLines, n as resolveModel$2 } from "./model-MUMSB_7d.js";
@@ -46163,6 +46163,19 @@ async function handleToolExecutionStart(ctx, evt) {
46163
46163
  toolCallId
46164
46164
  }
46165
46165
  });
46166
+ if (toolName !== "display_artifact") emitSymframePush({
46167
+ action: "add",
46168
+ id: `tool-${toolCallId}`,
46169
+ card: {
46170
+ id: `tool-${toolCallId}`,
46171
+ type: "tool",
46172
+ intent: "drafted",
46173
+ title: toolName,
46174
+ toolMeta: meta,
46175
+ toolStatus: "firing",
46176
+ toolStartedAt: Date.now()
46177
+ }
46178
+ });
46166
46179
  if (ctx.params.onToolResult && shouldEmitToolEvents && !ctx.state.toolSummaryById.has(toolCallId)) {
46167
46180
  ctx.state.toolSummaryById.add(toolCallId);
46168
46181
  ctx.emitToolSummary(toolName, meta);
@@ -46291,6 +46304,19 @@ async function handleToolExecutionEnd(ctx, evt) {
46291
46304
  isError: isToolError
46292
46305
  }
46293
46306
  });
46307
+ if (toolName !== "display_artifact") {
46308
+ const durationMs = startData?.startTime != null ? Date.now() - startData.startTime : void 0;
46309
+ emitSymframePush({
46310
+ action: "update",
46311
+ id: `tool-${toolCallId}`,
46312
+ card: {
46313
+ toolStatus: isToolError ? "error" : "done",
46314
+ toolMeta: meta,
46315
+ toolDurationMs: durationMs,
46316
+ releaseAfterMs: 3e3
46317
+ }
46318
+ });
46319
+ }
46294
46320
  ctx.log.debug(`embedded run tool end: runId=${ctx.params.runId} tool=${toolName} toolCallId=${toolCallId}`);
46295
46321
  if (ctx.params.onToolResult && ctx.shouldEmitToolOutput()) {
46296
46322
  const outputText = extractToolResultText(sanitizedResult);
@@ -48097,6 +48123,44 @@ function injectHistoryImagesIntoMessages(messages, historyImagesByIndex) {
48097
48123
  }
48098
48124
  return didMutate;
48099
48125
  }
48126
+ function parseMemorySnippet(path, snippet) {
48127
+ const baseName = (path.split(/[/\\]/).pop() ?? path).replace(/\.md$/i, "");
48128
+ const typeFromPrefix = (() => {
48129
+ const prefix = baseName.split("_")[0]?.toLowerCase() ?? "";
48130
+ if ([
48131
+ "user",
48132
+ "feedback",
48133
+ "project",
48134
+ "reference"
48135
+ ].includes(prefix)) return prefix;
48136
+ return "memory";
48137
+ })();
48138
+ let title = baseName;
48139
+ let type = typeFromPrefix;
48140
+ let description = "";
48141
+ const lines = snippet.split(/\r?\n/);
48142
+ for (const raw of lines) {
48143
+ const line = raw.trim();
48144
+ if (!line || line === "---") continue;
48145
+ const m = line.match(/^([a-z][a-z0-9_-]*)\s*:\s*(.+)$/i);
48146
+ if (!m) {
48147
+ if (!description && line.length > 0 && !line.startsWith("#")) description = line;
48148
+ continue;
48149
+ }
48150
+ const key = m[1].toLowerCase();
48151
+ const value = m[2].trim();
48152
+ if (key === "name" && !title.includes(" ")) title = value;
48153
+ else if (key === "name") title = value;
48154
+ else if (key === "description") description = value;
48155
+ else if (key === "type") type = value.toLowerCase();
48156
+ }
48157
+ if (description.length > 160) description = `${description.slice(0, 157)}…`;
48158
+ return {
48159
+ title,
48160
+ type,
48161
+ description
48162
+ };
48163
+ }
48100
48164
  function summarizeMessagePayload(msg) {
48101
48165
  const content = msg.content;
48102
48166
  if (typeof content === "string") return {
@@ -48799,6 +48863,24 @@ async function runEmbeddedAttempt(params) {
48799
48863
  const recallBlock = `<memory_context>\nThe following memory snippets were automatically retrieved as relevant context:\n\n${recallResults.map((r) => `[${r.path}#L${r.startLine}-L${r.endLine}]\n${r.snippet}`).join("\n---\n")}\n</memory_context>`;
48800
48864
  effectivePrompt = `${recallBlock}\n\n${effectivePrompt}`;
48801
48865
  log$7.debug(`auto-recall: injected ${recallResults.length} snippets (${recallBlock.length} chars)`);
48866
+ for (const r of recallResults) {
48867
+ const parsed = parseMemorySnippet(r.path, r.snippet);
48868
+ emitSymframePush({
48869
+ action: "add",
48870
+ id: `memory-${r.path}#L${r.startLine}`,
48871
+ card: {
48872
+ id: `memory-${r.path}#L${r.startLine}`,
48873
+ type: "memory",
48874
+ intent: "holding",
48875
+ title: parsed.title,
48876
+ memoryType: parsed.type,
48877
+ memoryDescription: parsed.description,
48878
+ memoryPath: r.path,
48879
+ memoryScore: r.score,
48880
+ releaseAfterMs: 6e4
48881
+ }
48882
+ });
48883
+ }
48802
48884
  }
48803
48885
  }
48804
48886
  } catch (recallErr) {
@@ -21,7 +21,7 @@ import "./client-BOd5o3Kp.js";
21
21
  import "./call-DTshgdlW.js";
22
22
  import "./message-channel-DXToSaWK.js";
23
23
  import "./pairing-token-B-OTYROz.js";
24
- import "./subagent-registry-D8BIWG9Q.js";
24
+ import "./subagent-registry-BagjubTG.js";
25
25
  import "./sessions-Dn6VXn4p.js";
26
26
  import "./plugins-BsEhWvLn.js";
27
27
  import "./send-Dq252-bi.js";
@@ -51,8 +51,8 @@ import "./model-auth-Byr7Gic_.js";
51
51
  import "./github-copilot-token-B5y4__YM.js";
52
52
  import "./models-config-CiR_RUxw.js";
53
53
  import "./reply-prefix-DV3KhOhL.js";
54
- import "./memory-CTf9MdBg.js";
55
- import "./manager-XfNxjaX5.js";
54
+ import "./memory-7DZfwFEz.js";
55
+ import "./manager-DSXvXUZQ.js";
56
56
  import "./sqlite-9jF_eajd.js";
57
57
  import "./chunk-B2lBXhR0.js";
58
58
  import "./markdown-tables-BEdkErjm.js";
@@ -85,7 +85,7 @@ import { t as formatDocsLink } from "./links-Dnmd-RS-.js";
85
85
  import "./cli-utils-DXfA5936.js";
86
86
  import { t as formatHelpExamples } from "./help-format-Dbp8yEhl.js";
87
87
  import "./progress-CI19Xh3z.js";
88
- import "./memory-cli-CA5PbH9y.js";
88
+ import "./memory-cli-CGqqpDlw.js";
89
89
  import "./logging-UO6tk8Em.js";
90
90
  import "./replies-CLREUzzB.js";
91
91
  import "./pi-tools.policy-06k__URR.js";
@@ -99,10 +99,10 @@ import "./npm-registry-spec-BPgK9EL7.js";
99
99
  import "./skill-scanner-BC3PyNso.js";
100
100
  import "./installs-Dunp9UFl.js";
101
101
  import "./channels-status-issues-BTvrA4nx.js";
102
- import "./register.subclis-B_V8vNI0.js";
103
- import "./command-registry-Dzj-Uz5N.js";
102
+ import "./register.subclis-C1nbYmb-.js";
103
+ import "./command-registry-C5LOUwKq.js";
104
104
  import "./program-context-B_0V80zV.js";
105
- import { r as installCompletion } from "./completion-cli-vAwL_uEK.js";
105
+ import { r as installCompletion } from "./completion-cli-Dcc5-bYY.js";
106
106
  import "./daemon-runtime-AkgOtHR6.js";
107
107
  import { r as parseSemver } from "./runtime-guard-LRRZ73eX.js";
108
108
  import "./onboard-helpers-t7tI9KSA.js";
@@ -124,8 +124,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
124
124
  import "./doctor-config-flow-BIBJeoRl.js";
125
125
  import "./systemd-linger-CctFkWNE.js";
126
126
  import "./health-format-6tfMqkNX.js";
127
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-ZWxB2Odf.js";
128
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion--phnyAqO.js";
127
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-B_ial7p9.js";
128
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BpVYwGK0.js";
129
129
  import { spawn, spawnSync } from "node:child_process";
130
130
  import os from "node:os";
131
131
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import "./unified-runner-CtSJoaGS.js";
1
+ import "./unified-runner-BoNa4zCp.js";
2
2
  import { j as theme } from "./registry-Sbac4a4z.js";
3
3
  import { _ as resolveStateDir } from "./paths-By0XjHBk.js";
4
4
  import { f as pathExists } from "./utils-CTPsqyE_.js";
@@ -53,8 +53,8 @@ import "./session-cost-usage-D3mgssM_.js";
53
53
  import { h as trimLogTail } from "./session-utils-Cs1jlD-q.js";
54
54
  import "./with-timeout-DPR4A2dx.js";
55
55
  import "./reply-prefix-BFNeXT65.js";
56
- import "./memory-DOl2l2AS.js";
57
- import "./manager-CL767Sv9.js";
56
+ import "./memory-CuBkKhKM.js";
57
+ import "./manager-Dw6j9KTZ.js";
58
58
  import "./sqlite-Cod7C5ba.js";
59
59
  import "./chunk-BxfKjCUx.js";
60
60
  import "./markdown-tables-CS1Tvb3z.js";
@@ -87,13 +87,13 @@ import { t as formatDocsLink } from "./links-Bqr0FxXx.js";
87
87
  import "./cli-utils-CuyGL3rq.js";
88
88
  import { t as formatHelpExamples } from "./help-format-7hFcsqss.js";
89
89
  import "./progress-swt2y17x.js";
90
- import "./memory-cli-B9_Vfaow.js";
90
+ import "./memory-cli-C8h9g8yO.js";
91
91
  import "./logging-BWknayJl.js";
92
92
  import "./replies-CbXXjn9X.js";
93
93
  import "./pi-tools.policy-H2t-Xkfc.js";
94
94
  import "./model-MUMSB_7d.js";
95
95
  import { r as parseSemver } from "./runtime-guard-CWA00ZXa.js";
96
- import "./program-context-BpeLcVUB.js";
96
+ import "./program-context-YblB1bz7.js";
97
97
  import "./catalog-BptA-dUv.js";
98
98
  import "./skills-status-BKX1PjCc.js";
99
99
  import { n as inheritOptionFromParent } from "./command-options-DDDwkB9t.js";
@@ -105,7 +105,7 @@ import "./npm-registry-spec-DTqn-NXZ.js";
105
105
  import "./skill-scanner-BCgVcIwi.js";
106
106
  import "./installs-D890uIIW.js";
107
107
  import "./channels-status-issues-DLIzUsjR.js";
108
- import { r as installCompletion } from "./completion-cli-CsJ2f_fk.js";
108
+ import { r as installCompletion } from "./completion-cli-DewJuifK.js";
109
109
  import "./daemon-runtime-DlQla_dA.js";
110
110
  import "./onboard-helpers-7IGQ8nAM.js";
111
111
  import "./systemd-CUIM0n5P.js";
@@ -126,8 +126,8 @@ import { n as updateNpmInstalledPlugins, t as syncPluginsForUpdateChannel } from
126
126
  import "./doctor-config-flow-C52W1uUK.js";
127
127
  import "./systemd-linger-BzYk7A6M.js";
128
128
  import "./health-format-Bxg84_f4.js";
129
- import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-Ceih9wkY.js";
130
- import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-BY72G6-l.js";
129
+ import { n as doctorCommand, t as selectStyled } from "./prompt-select-styled-CQDea8e4.js";
130
+ import { r as ensureCompletionCacheExists, t as checkShellCompletionStatus } from "./doctor-completion-DQmw1ojx.js";
131
131
  import path from "node:path";
132
132
  import os from "node:os";
133
133
  import fs from "node:fs/promises";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/memory-core",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "private": true,
5
5
  "description": "Symi core memory search plugin",
6
6
  "type": "module",
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.5.34
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core Symi release numbers.
8
+
9
+ ## 3.5.33
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core Symi release numbers.
14
+
3
15
  ## 3.5.32
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/msteams",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "description": "Symi Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/open-prose",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "private": true,
5
5
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/outlook",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "private": true,
5
5
  "description": "Symi Outlook 365 email integration via Microsoft Graph API",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symi/slack",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "private": true,
5
5
  "description": "Symi Slack channel plugin",
6
6
  "type": "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symerian/symi",
3
- "version": "3.5.32",
3
+ "version": "3.5.34",
4
4
  "description": "Multi-channel AI gateway with extensible messaging integrations",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/jaysteelmind/symi#readme",