@runfusion/fusion 0.14.1 → 0.14.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.
Files changed (38) hide show
  1. package/dist/bin.js +195 -99
  2. package/dist/client/assets/{AgentDetailView-B3KAsP2O.js → AgentDetailView-C2Iik3Qf.js} +1 -1
  3. package/dist/client/assets/{AgentsView-DoXb_amw.js → AgentsView-DkX0tzrN.js} +3 -3
  4. package/dist/client/assets/ChatView-CEm2Hw6m.js +1 -0
  5. package/dist/client/assets/{DevServerView-DbgM4tlT.js → DevServerView-Bumvo_ge.js} +1 -1
  6. package/dist/client/assets/{DirectoryPicker-DfmtfMiu.js → DirectoryPicker-CXN11cBp.js} +1 -1
  7. package/dist/client/assets/{DocumentsView-_-Efkx_W.js → DocumentsView-B71IqAxA.js} +1 -1
  8. package/dist/client/assets/{InsightsView-DUjcfW53.js → InsightsView-Bs4Rldu6.js} +1 -1
  9. package/dist/client/assets/{MemoryView-DxMPBb0q.js → MemoryView-Bs7b_L2Q.js} +1 -1
  10. package/dist/client/assets/{NodesView-BEBTI15s.js → NodesView-BvAGTXbO.js} +1 -1
  11. package/dist/client/assets/{PiExtensionsManager-BpMYhHH_.js → PiExtensionsManager-3Kcc4uhA.js} +2 -2
  12. package/dist/client/assets/{PluginManager-CPv7yQd3.js → PluginManager-Ch-Xynlm.js} +1 -1
  13. package/dist/client/assets/{ResearchView-BrFvdyXT.js → ResearchView-Bj6Saqf6.js} +1 -1
  14. package/dist/client/assets/{RoadmapsView-BDjLrtcj.js → RoadmapsView-9qT8Vwd0.js} +1 -1
  15. package/dist/client/assets/{SettingsModal-CxDxiTRy.js → SettingsModal-D4ERGQNQ.js} +1 -1
  16. package/dist/client/assets/SettingsModal-Zo5qDGOq.js +31 -0
  17. package/dist/client/assets/{SetupWizardModal-DFUA4X3z.js → SetupWizardModal-Dv0rX2_o.js} +1 -1
  18. package/dist/client/assets/{SkillMultiselect-BUWe5ujb.js → SkillMultiselect-CSkXQzdv.js} +1 -1
  19. package/dist/client/assets/{SkillsView-RAkqGX3y.js → SkillsView-2srXMOzj.js} +1 -1
  20. package/dist/client/assets/{TodoView-Ceb0wrg1.js → TodoView-CxPPIvw2.js} +1 -1
  21. package/dist/client/assets/{folder-open-DcM-Vd6r.js → folder-open-FA1PwpXV.js} +1 -1
  22. package/dist/client/assets/{index-DH3aprf6.js → index-CEavim6l.js} +150 -149
  23. package/dist/client/assets/index-D1gTSlYB.css +1 -0
  24. package/dist/client/assets/{list-checks-ByGHVQpZ.js → list-checks-6EktkUso.js} +1 -1
  25. package/dist/client/assets/{star-DlEYI8GL.js → star-B6Th07jw.js} +1 -1
  26. package/dist/client/assets/{upload-DKshabz-.js → upload-BJwuErhV.js} +1 -1
  27. package/dist/client/assets/{users-X6tYPPBV.js → users-BrnPTF8H.js} +1 -1
  28. package/dist/client/index.html +2 -2
  29. package/dist/client/version.json +1 -1
  30. package/dist/extension.js +191 -95
  31. package/dist/pi-claude-cli/package.json +1 -1
  32. package/dist/pi-claude-cli/src/__tests__/event-bridge.test.ts +107 -0
  33. package/dist/pi-claude-cli/src/event-bridge.ts +48 -4
  34. package/package.json +1 -1
  35. package/skill/fusion/references/engine-tools.md +0 -1
  36. package/dist/client/assets/ChatView-BJ2c7wvd.js +0 -1
  37. package/dist/client/assets/SettingsModal-Cd-QGB0C.js +0 -31
  38. package/dist/client/assets/index-C1prPuSl.css +0 -1
package/dist/bin.js CHANGED
@@ -37493,6 +37493,60 @@ var init_plugin_loader = __esm({
37493
37493
  }
37494
37494
  return runtimes2;
37495
37495
  }
37496
+ /**
37497
+ * Get all skill contributions from loaded plugins.
37498
+ */
37499
+ getPluginSkills() {
37500
+ const skills = [];
37501
+ for (const [pluginId, plugin4] of this.plugins) {
37502
+ if (plugin4.skills) {
37503
+ for (const skill of plugin4.skills) {
37504
+ skills.push({ pluginId, skill });
37505
+ }
37506
+ }
37507
+ }
37508
+ return skills;
37509
+ }
37510
+ /**
37511
+ * Get all workflow step contributions from loaded plugins.
37512
+ */
37513
+ getPluginWorkflowSteps() {
37514
+ const steps = [];
37515
+ for (const [pluginId, plugin4] of this.plugins) {
37516
+ if (plugin4.workflowSteps) {
37517
+ for (const step of plugin4.workflowSteps) {
37518
+ steps.push({ pluginId, step });
37519
+ }
37520
+ }
37521
+ }
37522
+ return steps;
37523
+ }
37524
+ /**
37525
+ * Get all prompt contributions from loaded plugins.
37526
+ */
37527
+ getPluginPromptContributions() {
37528
+ const contributions = [];
37529
+ for (const [pluginId, plugin4] of this.plugins) {
37530
+ if (plugin4.promptContributions) {
37531
+ for (const contribution of plugin4.promptContributions.contributions) {
37532
+ contributions.push({ pluginId, contribution, config: plugin4.promptContributions });
37533
+ }
37534
+ }
37535
+ }
37536
+ return contributions;
37537
+ }
37538
+ /**
37539
+ * Get all setup metadata and hooks from loaded plugins.
37540
+ */
37541
+ getPluginSetupInfo() {
37542
+ const setups = [];
37543
+ for (const [pluginId, plugin4] of this.plugins) {
37544
+ if (plugin4.setup) {
37545
+ setups.push({ pluginId, manifest: plugin4.setup.manifest, hooks: plugin4.setup.hooks });
37546
+ }
37547
+ }
37548
+ return setups;
37549
+ }
37496
37550
  /**
37497
37551
  * Get all loaded plugin instances.
37498
37552
  */
@@ -56178,65 +56232,6 @@ ${lines.join("\n")}`
56178
56232
  }
56179
56233
  };
56180
56234
  }
56181
- function createIdentityTool({ agent, resolvedInstructions }) {
56182
- const identityParams = Type.Object({});
56183
- return {
56184
- name: "fn_identity",
56185
- label: "Identity Check",
56186
- description: "Return a structured summary of which soul, instructions, and memory are loaded for this heartbeat tick. Call this FIRST before any other tool.",
56187
- parameters: identityParams,
56188
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
56189
- execute: async (_id, _params, _signal, _onUpdate, _ctx) => {
56190
- const PREVIEW_CHARS = 500;
56191
- const INSTRUCTIONS_PREVIEW_CHARS = 1e3;
56192
- const MEMORY_PREVIEW_CHARS = 1e3;
56193
- const soulPresent = typeof agent.soul === "string" && agent.soul.trim().length > 0;
56194
- const instructionsPresent = resolvedInstructions.trim().length > 0;
56195
- const memoryPresent = typeof agent.memory === "string" && agent.memory.trim().length > 0;
56196
- const soulPreview = soulPresent ? agent.soul.slice(0, PREVIEW_CHARS) : "";
56197
- const instructionsPreview = instructionsPresent ? resolvedInstructions.slice(0, INSTRUCTIONS_PREVIEW_CHARS) : "";
56198
- const memoryPreview = memoryPresent ? agent.memory.slice(0, MEMORY_PREVIEW_CHARS) : "";
56199
- const result = {
56200
- agentId: agent.id,
56201
- name: agent.name,
56202
- role: agent.role,
56203
- soulPresent,
56204
- instructionsPresent,
56205
- memoryPresent,
56206
- soulPreview,
56207
- instructionsPreview,
56208
- memoryPreview
56209
- };
56210
- const lines = [
56211
- `agentId: ${result.agentId}`,
56212
- `name: ${result.name}`,
56213
- `role: ${result.role}`,
56214
- `soul: ${result.soulPresent ? "loaded" : "absent"}`,
56215
- `instructions: ${result.instructionsPresent ? "loaded" : "absent"}`,
56216
- `memory: ${result.memoryPresent ? "loaded" : "absent"}`
56217
- ];
56218
- if (result.soulPresent && result.soulPreview) {
56219
- lines.push(`
56220
- Soul preview (first ${PREVIEW_CHARS} chars):
56221
- ${result.soulPreview}`);
56222
- }
56223
- if (result.instructionsPresent && result.instructionsPreview) {
56224
- lines.push(`
56225
- Instructions preview (first ${INSTRUCTIONS_PREVIEW_CHARS} chars):
56226
- ${result.instructionsPreview}`);
56227
- }
56228
- if (result.memoryPresent && result.memoryPreview) {
56229
- lines.push(`
56230
- Memory preview (first ${MEMORY_PREVIEW_CHARS} chars):
56231
- ${result.memoryPreview}`);
56232
- }
56233
- return {
56234
- content: [{ type: "text", text: lines.join("\n") }],
56235
- details: result
56236
- };
56237
- }
56238
- };
56239
- }
56240
56235
  var taskCreateParams, taskLogParams, taskDocumentWriteParams, taskDocumentReadParams, reflectOnPerformanceParams, listAgentsParams, delegateTaskParams, sendMessageParams, readMessagesParams, memorySearchParams, memoryGetParams, researchRunParams, researchListParams, researchGetParams, researchCancelParams, memoryAppendParams, log10, AGENT_MEMORY_ROOT2, AGENT_MEMORY_FILENAME2, AGENT_DREAMS_FILENAME2, agentQmdRefreshState, AGENT_QMD_REFRESH_INTERVAL_MS, DAILY_AGENT_MEMORY_RE2;
56241
56236
  var init_agent_tools = __esm({
56242
56237
  "../engine/src/agent-tools.ts"() {
@@ -72742,6 +72737,7 @@ Rules:
72742
72737
 
72743
72738
  // ../engine/src/agent-heartbeat.ts
72744
72739
  import { Type as Type6 } from "@mariozechner/pi-ai";
72740
+ import { createHash as createHash5 } from "node:crypto";
72745
72741
  function isBlockedStateDuplicate(current, previous) {
72746
72742
  return current.blockedBy === previous.blockedBy && current.contextHash === previous.contextHash;
72747
72743
  }
@@ -72751,39 +72747,30 @@ function truncatePrompt(text, maxChars) {
72751
72747
 
72752
72748
  ... (truncated, ${text.length} chars)`;
72753
72749
  }
72750
+ function shortContentHash(value) {
72751
+ return createHash5("sha256").update(value).digest("hex").slice(0, 8);
72752
+ }
72754
72753
  function buildIdentitySnapshot(args) {
72755
72754
  const { agent, resolvedInstructions } = args;
72756
- const SOUL_PREVIEW = 500;
72757
- const INSTR_PREVIEW = 1e3;
72758
- const MEM_PREVIEW = 1e3;
72759
- const soulPresent = typeof agent.soul === "string" && agent.soul.trim().length > 0;
72760
- const instrPresent = resolvedInstructions.trim().length > 0;
72761
- const memPresent = typeof agent.memory === "string" && agent.memory.trim().length > 0;
72762
- const lines = [
72755
+ const soulTrimmed = typeof agent.soul === "string" ? agent.soul.trim() : "";
72756
+ const instrTrimmed = resolvedInstructions.trim();
72757
+ const memTrimmed = typeof agent.memory === "string" ? agent.memory.trim() : "";
72758
+ const formatField = (trimmed) => {
72759
+ if (!trimmed) return "absent";
72760
+ return `loaded (${trimmed.length} chars, sha256:${shortContentHash(trimmed)})`;
72761
+ };
72762
+ return [
72763
72763
  "## Identity Snapshot",
72764
72764
  "",
72765
- "Verify these match what you expect. Surface any anomalies in your first text output before acting.",
72765
+ "Full content is in the Custom Instructions section of your system prompt. Surface anomalies in your first text output before acting.",
72766
72766
  "",
72767
72767
  `- agentId: ${agent.id}`,
72768
72768
  `- name: ${agent.name}`,
72769
72769
  `- role: ${agent.role}`,
72770
- `- soul: ${soulPresent ? "loaded" : "absent"}`,
72771
- `- instructions: ${instrPresent ? "loaded" : "absent"}`,
72772
- `- memory: ${memPresent ? "loaded" : "absent"}`
72773
- ];
72774
- if (soulPresent) {
72775
- const preview = agent.soul.trim().slice(0, SOUL_PREVIEW);
72776
- lines.push("", `### Soul (first ${SOUL_PREVIEW} chars)`, preview);
72777
- }
72778
- if (instrPresent) {
72779
- const preview = resolvedInstructions.trim().slice(0, INSTR_PREVIEW);
72780
- lines.push("", `### Instructions (first ${INSTR_PREVIEW} chars)`, preview);
72781
- }
72782
- if (memPresent) {
72783
- const preview = agent.memory.trim().slice(0, MEM_PREVIEW);
72784
- lines.push("", `### Memory (first ${MEM_PREVIEW} chars)`, preview);
72785
- }
72786
- return lines.join("\n");
72770
+ `- soul: ${formatField(soulTrimmed)}`,
72771
+ `- instructions: ${formatField(instrTrimmed)}`,
72772
+ `- memory: ${formatField(memTrimmed)}`
72773
+ ].join("\n");
72787
72774
  }
72788
72775
  async function getHeartbeatMemorySettings(taskStore) {
72789
72776
  const maybeGetSettings = taskStore.getSettings;
@@ -72965,9 +72952,8 @@ When sending messages:
72965
72952
  1. **Identity & context** \u2014 review the **Identity Snapshot** at the top of
72966
72953
  this prompt. Confirm your role, soul, instructions, and memory match what
72967
72954
  you expect, and surface any anomalies in your first text output before
72968
- doing anything else. (If fn_identity is available in your runtime you may
72969
- also call it for full structured detail; the snapshot above is the
72970
- authoritative source.)
72955
+ doing anything else. The full content is in the Custom Instructions
72956
+ section of your system prompt.
72971
72957
  2. **Inbox** \u2014 when fn_read_messages is available, call it. Process any pending
72972
72958
  messages first; reply with reply_to_message_id when answering.
72973
72959
  3. **Wake delta** \u2014 read the Wake Delta block above. The wake reason is the
@@ -72993,9 +72979,8 @@ a bug. Do not loop on the same plan across heartbeats without recording why.`;
72993
72979
  1. **Identity & context** \u2014 review the **Identity Snapshot** at the top of
72994
72980
  this prompt. Confirm your role, soul, instructions, and memory match what
72995
72981
  you expect, and surface any anomalies in your first text output before
72996
- doing anything else. (If fn_identity is available in your runtime you may
72997
- also call it for full structured detail; the snapshot above is the
72998
- authoritative source.)
72982
+ doing anything else. The full content is in the Custom Instructions
72983
+ section of your system prompt.
72999
72984
  2. **Inbox** \u2014 when fn_read_messages is available, call it. Process any pending
73000
72985
  messages first; reply with reply_to_message_id when answering.
73001
72986
  3. **Wake delta** \u2014 read the Wake Delta block above. The wake reason is the
@@ -73797,7 +73782,6 @@ not loop on the same plan across heartbeats without recording why.`;
73797
73782
  baseHeartbeatSystemPrompt,
73798
73783
  [resolvedInstructionsForIdentity, memoryInstructions].filter((part) => part.trim()).join("\n\n")
73799
73784
  );
73800
- heartbeatTools.push(createIdentityTool({ agent, resolvedInstructions: resolvedInstructionsForIdentity }));
73801
73785
  heartbeatTools.push(heartbeatDoneTool);
73802
73786
  if (isNoTaskRun) {
73803
73787
  agentLogger = new AgentLogger({
@@ -78651,10 +78635,18 @@ var init_plugin_runner = __esm({
78651
78635
  cachedRoutes = null;
78652
78636
  cachedUiSlots = null;
78653
78637
  cachedRuntimes = null;
78638
+ cachedSkills = null;
78639
+ cachedWorkflowSteps = null;
78640
+ cachedPromptContributions = null;
78641
+ cachedSetupInfo = null;
78654
78642
  toolsCacheVersion = 0;
78655
78643
  routesCacheVersion = 0;
78656
78644
  uiSlotsCacheVersion = 0;
78657
78645
  runtimesCacheVersion = 0;
78646
+ skillsCacheVersion = 0;
78647
+ workflowStepsCacheVersion = 0;
78648
+ promptContributionsCacheVersion = 0;
78649
+ setupCacheVersion = 0;
78658
78650
  hookTimeoutMs;
78659
78651
  // Event handler references for cleanup
78660
78652
  handlePluginEnabled;
@@ -78686,6 +78678,10 @@ var init_plugin_runner = __esm({
78686
78678
  this.invalidateRoutesCache();
78687
78679
  this.invalidateUiSlotsCache();
78688
78680
  this.invalidateRuntimesCache();
78681
+ this.invalidateSkillsCache();
78682
+ this.invalidateWorkflowStepsCache();
78683
+ this.invalidatePromptContributionsCache();
78684
+ this.invalidateSetupCache();
78689
78685
  }
78690
78686
  /**
78691
78687
  * Shutdown the plugin runner.
@@ -78766,6 +78762,54 @@ var init_plugin_runner = __esm({
78766
78762
  }
78767
78763
  return this.cachedRuntimes.runtimes;
78768
78764
  }
78765
+ getPluginSkills() {
78766
+ if (!this.cachedSkills || this.cachedSkills.version !== this.skillsCacheVersion) {
78767
+ this.cachedSkills = {
78768
+ skills: this.options.pluginLoader.getPluginSkills(),
78769
+ version: this.skillsCacheVersion
78770
+ };
78771
+ }
78772
+ return this.cachedSkills.skills;
78773
+ }
78774
+ getPluginWorkflowSteps() {
78775
+ if (!this.cachedWorkflowSteps || this.cachedWorkflowSteps.version !== this.workflowStepsCacheVersion) {
78776
+ this.cachedWorkflowSteps = {
78777
+ steps: this.options.pluginLoader.getPluginWorkflowSteps(),
78778
+ version: this.workflowStepsCacheVersion
78779
+ };
78780
+ }
78781
+ return this.cachedWorkflowSteps.steps;
78782
+ }
78783
+ getPluginPromptContributions() {
78784
+ if (!this.cachedPromptContributions || this.cachedPromptContributions.version !== this.promptContributionsCacheVersion) {
78785
+ this.cachedPromptContributions = {
78786
+ contributions: this.options.pluginLoader.getPluginPromptContributions(),
78787
+ version: this.promptContributionsCacheVersion
78788
+ };
78789
+ }
78790
+ return this.cachedPromptContributions.contributions;
78791
+ }
78792
+ getPluginSetupInfo() {
78793
+ if (!this.cachedSetupInfo || this.cachedSetupInfo.version !== this.setupCacheVersion) {
78794
+ this.cachedSetupInfo = {
78795
+ setups: this.options.pluginLoader.getPluginSetupInfo(),
78796
+ version: this.setupCacheVersion
78797
+ };
78798
+ }
78799
+ return this.cachedSetupInfo.setups;
78800
+ }
78801
+ getPromptContributionsForSurface(surface) {
78802
+ return this.getPluginPromptContributions().filter(({ pluginId, contribution, config }) => {
78803
+ const plugin4 = this.options.pluginLoader.getPlugin(pluginId);
78804
+ if (!plugin4 || plugin4.state !== "started") {
78805
+ return false;
78806
+ }
78807
+ if (contribution.surface !== surface) {
78808
+ return false;
78809
+ }
78810
+ return config.enabledByDefault !== false;
78811
+ });
78812
+ }
78769
78813
  /**
78770
78814
  * Get a specific runtime registration by its runtimeId.
78771
78815
  *
@@ -78799,6 +78843,10 @@ var init_plugin_runner = __esm({
78799
78843
  this.invalidateRoutesCache();
78800
78844
  this.invalidateUiSlotsCache();
78801
78845
  this.invalidateRuntimesCache();
78846
+ this.invalidateSkillsCache();
78847
+ this.invalidateWorkflowStepsCache();
78848
+ this.invalidatePromptContributionsCache();
78849
+ this.invalidateSetupCache();
78802
78850
  executorLog.log(`Plugin ${pluginId} reloaded`);
78803
78851
  }
78804
78852
  // ── Event Handlers for Hot-Load/Unload ─────────────────────────
@@ -78810,6 +78858,10 @@ var init_plugin_runner = __esm({
78810
78858
  this.invalidateRoutesCache();
78811
78859
  this.invalidateUiSlotsCache();
78812
78860
  this.invalidateRuntimesCache();
78861
+ this.invalidateSkillsCache();
78862
+ this.invalidateWorkflowStepsCache();
78863
+ this.invalidatePromptContributionsCache();
78864
+ this.invalidateSetupCache();
78813
78865
  try {
78814
78866
  executorLog.log(`Auto-loading enabled plugin: ${plugin4.id}`);
78815
78867
  await this.options.pluginLoader.loadPlugin(plugin4.id);
@@ -78825,6 +78877,10 @@ var init_plugin_runner = __esm({
78825
78877
  this.invalidateRoutesCache();
78826
78878
  this.invalidateUiSlotsCache();
78827
78879
  this.invalidateRuntimesCache();
78880
+ this.invalidateSkillsCache();
78881
+ this.invalidateWorkflowStepsCache();
78882
+ this.invalidatePromptContributionsCache();
78883
+ this.invalidateSetupCache();
78828
78884
  try {
78829
78885
  executorLog.log(`Auto-stopping disabled plugin: ${plugin4.id}`);
78830
78886
  await this.options.pluginLoader.stopPlugin(plugin4.id);
@@ -78840,6 +78896,10 @@ var init_plugin_runner = __esm({
78840
78896
  this.invalidateRoutesCache();
78841
78897
  this.invalidateUiSlotsCache();
78842
78898
  this.invalidateRuntimesCache();
78899
+ this.invalidateSkillsCache();
78900
+ this.invalidateWorkflowStepsCache();
78901
+ this.invalidatePromptContributionsCache();
78902
+ this.invalidateSetupCache();
78843
78903
  try {
78844
78904
  executorLog.log(`Stopping unregistered plugin: ${plugin4.id}`);
78845
78905
  await this.options.pluginLoader.stopPlugin(plugin4.id);
@@ -78856,6 +78916,10 @@ var init_plugin_runner = __esm({
78856
78916
  this.invalidateRoutesCache();
78857
78917
  this.invalidateUiSlotsCache();
78858
78918
  this.invalidateRuntimesCache();
78919
+ this.invalidateSkillsCache();
78920
+ this.invalidateWorkflowStepsCache();
78921
+ this.invalidatePromptContributionsCache();
78922
+ this.invalidateSetupCache();
78859
78923
  }
78860
78924
  /**
78861
78925
  * Handle plugin updates - invalidate caches.
@@ -78865,6 +78929,10 @@ var init_plugin_runner = __esm({
78865
78929
  this.invalidateRoutesCache();
78866
78930
  this.invalidateUiSlotsCache();
78867
78931
  this.invalidateRuntimesCache();
78932
+ this.invalidateSkillsCache();
78933
+ this.invalidateWorkflowStepsCache();
78934
+ this.invalidatePromptContributionsCache();
78935
+ this.invalidateSetupCache();
78868
78936
  }
78869
78937
  /**
78870
78938
  * Handle plugin:loaded event from loader - invalidate caches.
@@ -78874,6 +78942,10 @@ var init_plugin_runner = __esm({
78874
78942
  this.invalidateRoutesCache();
78875
78943
  this.invalidateUiSlotsCache();
78876
78944
  this.invalidateRuntimesCache();
78945
+ this.invalidateSkillsCache();
78946
+ this.invalidateWorkflowStepsCache();
78947
+ this.invalidatePromptContributionsCache();
78948
+ this.invalidateSetupCache();
78877
78949
  }
78878
78950
  /**
78879
78951
  * Handle plugin:unloaded event from loader - invalidate caches.
@@ -78883,6 +78955,10 @@ var init_plugin_runner = __esm({
78883
78955
  this.invalidateRoutesCache();
78884
78956
  this.invalidateUiSlotsCache();
78885
78957
  this.invalidateRuntimesCache();
78958
+ this.invalidateSkillsCache();
78959
+ this.invalidateWorkflowStepsCache();
78960
+ this.invalidatePromptContributionsCache();
78961
+ this.invalidateSetupCache();
78886
78962
  }
78887
78963
  /**
78888
78964
  * Handle plugin:reloaded event from loader - invalidate caches.
@@ -78892,6 +78968,10 @@ var init_plugin_runner = __esm({
78892
78968
  this.invalidateRoutesCache();
78893
78969
  this.invalidateUiSlotsCache();
78894
78970
  this.invalidateRuntimesCache();
78971
+ this.invalidateSkillsCache();
78972
+ this.invalidateWorkflowStepsCache();
78973
+ this.invalidatePromptContributionsCache();
78974
+ this.invalidateSetupCache();
78895
78975
  }
78896
78976
  // ── Tool Conversion ───────────────────────────────────────────────
78897
78977
  /**
@@ -79063,6 +79143,22 @@ var init_plugin_runner = __esm({
79063
79143
  this.runtimesCacheVersion++;
79064
79144
  this.log.log(`Runtimes cache invalidated (version: ${this.runtimesCacheVersion})`);
79065
79145
  }
79146
+ invalidateSkillsCache() {
79147
+ this.skillsCacheVersion++;
79148
+ this.log.log(`Skills cache invalidated (version: ${this.skillsCacheVersion})`);
79149
+ }
79150
+ invalidateWorkflowStepsCache() {
79151
+ this.workflowStepsCacheVersion++;
79152
+ this.log.log(`Workflow steps cache invalidated (version: ${this.workflowStepsCacheVersion})`);
79153
+ }
79154
+ invalidatePromptContributionsCache() {
79155
+ this.promptContributionsCacheVersion++;
79156
+ this.log.log(`Prompt contributions cache invalidated (version: ${this.promptContributionsCacheVersion})`);
79157
+ }
79158
+ invalidateSetupCache() {
79159
+ this.setupCacheVersion++;
79160
+ this.log.log(`Setup cache invalidated (version: ${this.setupCacheVersion})`);
79161
+ }
79066
79162
  // ── Store Event Subscriptions ────────────────────────────────────
79067
79163
  /**
79068
79164
  * Subscribe to TaskStore events for task lifecycle hooks.
@@ -133416,8 +133512,8 @@ var init_register_settings_sync_routes = __esm({
133416
133512
  exportedAt: (/* @__PURE__ */ new Date()).toISOString(),
133417
133513
  version: 1
133418
133514
  };
133419
- const { createHash: createHash5 } = await import("node:crypto");
133420
- const checksum = createHash5("sha256").update(JSON.stringify(payload)).digest("hex");
133515
+ const { createHash: createHash6 } = await import("node:crypto");
133516
+ const checksum = createHash6("sha256").update(JSON.stringify(payload)).digest("hex");
133421
133517
  await fetchFromRemoteNode(node, "/api/settings/sync-receive", {
133422
133518
  method: "POST",
133423
133519
  body: { ...payload, checksum }
@@ -133476,7 +133572,7 @@ var init_register_settings_sync_routes = __esm({
133476
133572
  });
133477
133573
  return;
133478
133574
  }
133479
- const { createHash: createHash5 } = await import("node:crypto");
133575
+ const { createHash: createHash6 } = await import("node:crypto");
133480
133576
  const exportedAt = (/* @__PURE__ */ new Date()).toISOString();
133481
133577
  const payloadWithoutChecksum = {
133482
133578
  global: remoteSettings.global,
@@ -133484,7 +133580,7 @@ var init_register_settings_sync_routes = __esm({
133484
133580
  exportedAt,
133485
133581
  version: 1
133486
133582
  };
133487
- const checksum = createHash5("sha256").update(JSON.stringify(payloadWithoutChecksum)).digest("hex");
133583
+ const checksum = createHash6("sha256").update(JSON.stringify(payloadWithoutChecksum)).digest("hex");
133488
133584
  const result = await central.applyRemoteSettings({
133489
133585
  ...payloadWithoutChecksum,
133490
133586
  checksum
@@ -153257,7 +153353,7 @@ var require_websocket = __commonJS({
153257
153353
  var http = __require("http");
153258
153354
  var net = __require("net");
153259
153355
  var tls = __require("tls");
153260
- var { randomBytes: randomBytes4, createHash: createHash5 } = __require("crypto");
153356
+ var { randomBytes: randomBytes4, createHash: createHash6 } = __require("crypto");
153261
153357
  var { Duplex, Readable: Readable2 } = __require("stream");
153262
153358
  var { URL: URL2 } = __require("url");
153263
153359
  var PerMessageDeflate2 = require_permessage_deflate();
@@ -153917,7 +154013,7 @@ var require_websocket = __commonJS({
153917
154013
  abortHandshake(websocket, socket, "Invalid Upgrade header");
153918
154014
  return;
153919
154015
  }
153920
- const digest = createHash5("sha1").update(key + GUID).digest("base64");
154016
+ const digest = createHash6("sha1").update(key + GUID).digest("base64");
153921
154017
  if (res.headers["sec-websocket-accept"] !== digest) {
153922
154018
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
153923
154019
  return;
@@ -154284,7 +154380,7 @@ var require_websocket_server = __commonJS({
154284
154380
  var EventEmitter37 = __require("events");
154285
154381
  var http = __require("http");
154286
154382
  var { Duplex } = __require("stream");
154287
- var { createHash: createHash5 } = __require("crypto");
154383
+ var { createHash: createHash6 } = __require("crypto");
154288
154384
  var extension2 = require_extension();
154289
154385
  var PerMessageDeflate2 = require_permessage_deflate();
154290
154386
  var subprotocol2 = require_subprotocol();
@@ -154585,7 +154681,7 @@ var require_websocket_server = __commonJS({
154585
154681
  );
154586
154682
  }
154587
154683
  if (this._state > RUNNING) return abortHandshake(socket, 503);
154588
- const digest = createHash5("sha1").update(key + GUID).digest("base64");
154684
+ const digest = createHash6("sha1").update(key + GUID).digest("base64");
154589
154685
  const headers = [
154590
154686
  "HTTP/1.1 101 Switching Protocols",
154591
154687
  "Upgrade: websocket",
@@ -1,4 +1,4 @@
1
- import{r as t,j as e}from"./vendor-react-K0fH_qHe.js";import{c as Ge,dj as zs,dk as Bs,dl as Hs,dm as Is,L as _,R as We,al as ms,Z as Os,am as _e,V as Te,W as Ss,N as ks,dn as _s,dp as Vs,dq as Us,w as Cs,cx as Js,dr as Gs,z as q,ds as Ws,s as hs,B as gs,Q as Me,U as fs,a$ as ve,X as qs,F as be,A as Fe,I as qe,dt as Ys,cr as Ks,aF as Zs,bn as Qs,an as ws,Y as Xs,a1 as et,a3 as st,du as Ue,j as Rs,dv as tt,r as at,dw as nt,dx as it,dy as rt,dz as lt,dA as ct,dB as Ee,a9 as Le,ab as De,ac as $e,C as Q,a7 as Ms,dC as ot,dD as dt,i as ut,h as mt,k as ht,dE as Je,a2 as gt,dF as ft,dG as xt,dH as pt,dI as vt,dJ as bt,dK as Fs,dL as jt,dM as Nt,a0 as yt,dN as St,_ as kt,dO as Ct}from"./index-DH3aprf6.js";import{S as As}from"./star-DlEYI8GL.js";import{S as wt}from"./SkillMultiselect-BUWe5ujb.js";import{L as Ts}from"./list-checks-ByGHVQpZ.js";import"./vendor-xterm-DzcZoU0P.js";/**
1
+ import{r as t,j as e}from"./vendor-react-K0fH_qHe.js";import{c as Ge,dk as zs,dl as Bs,dm as Hs,dn as Is,L as _,R as We,al as ms,Z as Os,am as _e,V as Te,W as Ss,N as ks,dp as _s,dq as Vs,dr as Us,w as Cs,cx as Js,ds as Gs,z as q,dt as Ws,s as hs,B as gs,Q as Me,U as fs,a$ as ve,X as qs,F as be,A as Fe,I as qe,du as Ys,cr as Ks,aF as Zs,bn as Qs,an as ws,Y as Xs,a1 as et,a3 as st,dv as Ue,j as Rs,dw as tt,r as at,dx as nt,dy as it,dz as rt,dA as lt,dB as ct,dC as Ee,a9 as Le,ab as De,ac as $e,C as Q,a7 as Ms,dD as ot,dE as dt,i as ut,h as mt,k as ht,dF as Je,a2 as gt,dG as ft,dH as xt,dI as pt,dJ as vt,dK as bt,dL as Fs,dM as jt,dN as Nt,a0 as yt,dO as St,_ as kt,dP as Ct}from"./index-CEavim6l.js";import{S as As}from"./star-B6Th07jw.js";import{S as wt}from"./SkillMultiselect-CSkXQzdv.js";import{L as Ts}from"./list-checks-6EktkUso.js";import"./vendor-xterm-DzcZoU0P.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.