@goondocks/myco 0.19.5 → 0.19.6

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-run-3IQXE5PI.js → agent-run-WK5NKBYA.js} +6 -6
  2. package/dist/{agent-tasks-5DIA3CE5.js → agent-tasks-2E73GG3A.js} +6 -6
  3. package/dist/{chunk-QLCD77AN.js → chunk-6RFZWV4R.js} +18 -1
  4. package/dist/chunk-6RFZWV4R.js.map +1 -0
  5. package/dist/{chunk-KABTXALI.js → chunk-FKBPXCH3.js} +2 -2
  6. package/dist/{chunk-5WPTS6A4.js → chunk-NCBLB2C6.js} +3 -3
  7. package/dist/{chunk-UTSCRMJE.js → chunk-NKQZ73LL.js} +2 -2
  8. package/dist/chunk-NKQZ73LL.js.map +1 -0
  9. package/dist/{chunk-5OXBT5MD.js → chunk-P5VNHGVZ.js} +3 -3
  10. package/dist/chunk-P5VNHGVZ.js.map +1 -0
  11. package/dist/{chunk-2QJCV3UL.js → chunk-QH5HS54N.js} +2 -2
  12. package/dist/{chunk-VH7XYQFL.js → chunk-ST2D3SGM.js} +2 -2
  13. package/dist/{chunk-27ZDDWIA.js → chunk-TMNFCUAD.js} +2 -2
  14. package/dist/{chunk-K2QX43GC.js → chunk-VLGBWOBY.js} +3 -3
  15. package/dist/{chunk-IQ5LQTV7.js → chunk-W3JUH5S3.js} +2 -2
  16. package/dist/{cli-RTUSGLTM.js → cli-LCTXK7N6.js} +38 -38
  17. package/dist/{client-YWE5YJB7.js → client-S47ENM76.js} +3 -3
  18. package/dist/{config-I5MJ6RXI.js → config-IO5WALOD.js} +2 -2
  19. package/dist/{doctor-FIG7VEYV.js → doctor-EE6GAC54.js} +8 -8
  20. package/dist/{executor-2TMGOVEA.js → executor-NXNSUEMQ.js} +102 -63
  21. package/dist/executor-NXNSUEMQ.js.map +1 -0
  22. package/dist/{init-3536BYDC.js → init-IPL3XV6F.js} +9 -9
  23. package/dist/{installer-YH3WQISI.js → installer-WMTB4NCX.js} +3 -3
  24. package/dist/{loader-K4WF4EEJ.js → loader-V774GZU4.js} +2 -2
  25. package/dist/{main-R5ZD5OIZ.js → main-RPJSS7PT.js} +149 -34
  26. package/dist/main-RPJSS7PT.js.map +1 -0
  27. package/dist/{open-5UD5JQIM.js → open-OYBKVBYX.js} +6 -6
  28. package/dist/{post-compact-ZJFE66O3.js → post-compact-E2OVMNGQ.js} +4 -4
  29. package/dist/{post-tool-use-CAR2USJP.js → post-tool-use-FGQE26GJ.js} +3 -3
  30. package/dist/{post-tool-use-failure-OMIKVEVR.js → post-tool-use-failure-3CITJYQK.js} +4 -4
  31. package/dist/{pre-compact-6SXYI5CD.js → pre-compact-GYMHCXII.js} +4 -4
  32. package/dist/{remove-NJSFVZXW.js → remove-72ER3TG5.js} +6 -6
  33. package/dist/{restart-U5ZGJON7.js → restart-EQHEJCGT.js} +7 -7
  34. package/dist/{search-HO7CXV6H.js → search-JOBYIW43.js} +6 -6
  35. package/dist/{server-BUSZIUZV.js → server-PZCWYWZL.js} +3 -3
  36. package/dist/{session-RVT2QELH.js → session-APO4A2C7.js} +6 -6
  37. package/dist/{session-end-4W6SZVGH.js → session-end-4V4VHAOQ.js} +3 -3
  38. package/dist/{session-start-PMPKAST4.js → session-start-K6ESRZU7.js} +4 -4
  39. package/dist/{setup-llm-6UAJUHQE.js → setup-llm-QUWOSB7A.js} +6 -6
  40. package/dist/src/agent/definitions/tasks/full-intelligence.yaml +37 -8
  41. package/dist/src/agent/prompts/agent.md +2 -2
  42. package/dist/src/cli.js +1 -1
  43. package/dist/src/daemon/main.js +1 -1
  44. package/dist/src/hooks/post-tool-use.js +1 -1
  45. package/dist/src/hooks/session-end.js +1 -1
  46. package/dist/src/hooks/session-start.js +1 -1
  47. package/dist/src/hooks/stop.js +1 -1
  48. package/dist/src/hooks/user-prompt-submit.js +1 -1
  49. package/dist/src/mcp/server.js +1 -1
  50. package/dist/{stats-W47FF6RD.js → stats-TYOZAOP2.js} +7 -7
  51. package/dist/{stop-6TAO2UU2.js → stop-2COOWEYG.js} +3 -3
  52. package/dist/{stop-failure-R76SULCV.js → stop-failure-UQ33GZLE.js} +4 -4
  53. package/dist/{subagent-start-TJMUZLP2.js → subagent-start-YENEY6VF.js} +4 -4
  54. package/dist/{subagent-stop-M3DAFJWQ.js → subagent-stop-W2757YDB.js} +4 -4
  55. package/dist/{task-completed-2KVR5JV6.js → task-completed-KU6GWMWV.js} +4 -4
  56. package/dist/{team-2IAT6MKD.js → team-SNLC6FZM.js} +3 -3
  57. package/dist/{turns-3ZQAF6HF.js → turns-YFNI5CQC.js} +6 -4
  58. package/dist/ui/assets/index-816yFmz_.js +842 -0
  59. package/dist/ui/assets/index-Dj6vQpFd.css +1 -0
  60. package/dist/ui/index.html +2 -2
  61. package/dist/{update-TB34JEB7.js → update-5VYNQZJ4.js} +6 -6
  62. package/dist/{user-prompt-submit-O4TP7NJ6.js → user-prompt-submit-KATLHAKA.js} +3 -3
  63. package/dist/{verify-SESZXGVY.js → verify-BGJVB3K2.js} +2 -2
  64. package/dist/{version-QBORV23E.js → version-MKNN5GYM.js} +2 -2
  65. package/package.json +1 -1
  66. package/dist/chunk-5OXBT5MD.js.map +0 -1
  67. package/dist/chunk-QLCD77AN.js.map +0 -1
  68. package/dist/chunk-UTSCRMJE.js.map +0 -1
  69. package/dist/executor-2TMGOVEA.js.map +0 -1
  70. package/dist/main-R5ZD5OIZ.js.map +0 -1
  71. package/dist/ui/assets/index-C-6W8e3m.js +0 -842
  72. package/dist/ui/assets/index-CRmkSi63.css +0 -1
  73. /package/dist/{agent-run-3IQXE5PI.js.map → agent-run-WK5NKBYA.js.map} +0 -0
  74. /package/dist/{agent-tasks-5DIA3CE5.js.map → agent-tasks-2E73GG3A.js.map} +0 -0
  75. /package/dist/{chunk-KABTXALI.js.map → chunk-FKBPXCH3.js.map} +0 -0
  76. /package/dist/{chunk-5WPTS6A4.js.map → chunk-NCBLB2C6.js.map} +0 -0
  77. /package/dist/{chunk-2QJCV3UL.js.map → chunk-QH5HS54N.js.map} +0 -0
  78. /package/dist/{chunk-VH7XYQFL.js.map → chunk-ST2D3SGM.js.map} +0 -0
  79. /package/dist/{chunk-27ZDDWIA.js.map → chunk-TMNFCUAD.js.map} +0 -0
  80. /package/dist/{chunk-K2QX43GC.js.map → chunk-VLGBWOBY.js.map} +0 -0
  81. /package/dist/{chunk-IQ5LQTV7.js.map → chunk-W3JUH5S3.js.map} +0 -0
  82. /package/dist/{cli-RTUSGLTM.js.map → cli-LCTXK7N6.js.map} +0 -0
  83. /package/dist/{client-YWE5YJB7.js.map → client-S47ENM76.js.map} +0 -0
  84. /package/dist/{config-I5MJ6RXI.js.map → config-IO5WALOD.js.map} +0 -0
  85. /package/dist/{doctor-FIG7VEYV.js.map → doctor-EE6GAC54.js.map} +0 -0
  86. /package/dist/{init-3536BYDC.js.map → init-IPL3XV6F.js.map} +0 -0
  87. /package/dist/{installer-YH3WQISI.js.map → installer-WMTB4NCX.js.map} +0 -0
  88. /package/dist/{loader-K4WF4EEJ.js.map → loader-V774GZU4.js.map} +0 -0
  89. /package/dist/{open-5UD5JQIM.js.map → open-OYBKVBYX.js.map} +0 -0
  90. /package/dist/{post-compact-ZJFE66O3.js.map → post-compact-E2OVMNGQ.js.map} +0 -0
  91. /package/dist/{post-tool-use-CAR2USJP.js.map → post-tool-use-FGQE26GJ.js.map} +0 -0
  92. /package/dist/{post-tool-use-failure-OMIKVEVR.js.map → post-tool-use-failure-3CITJYQK.js.map} +0 -0
  93. /package/dist/{pre-compact-6SXYI5CD.js.map → pre-compact-GYMHCXII.js.map} +0 -0
  94. /package/dist/{remove-NJSFVZXW.js.map → remove-72ER3TG5.js.map} +0 -0
  95. /package/dist/{restart-U5ZGJON7.js.map → restart-EQHEJCGT.js.map} +0 -0
  96. /package/dist/{search-HO7CXV6H.js.map → search-JOBYIW43.js.map} +0 -0
  97. /package/dist/{server-BUSZIUZV.js.map → server-PZCWYWZL.js.map} +0 -0
  98. /package/dist/{session-RVT2QELH.js.map → session-APO4A2C7.js.map} +0 -0
  99. /package/dist/{session-end-4W6SZVGH.js.map → session-end-4V4VHAOQ.js.map} +0 -0
  100. /package/dist/{session-start-PMPKAST4.js.map → session-start-K6ESRZU7.js.map} +0 -0
  101. /package/dist/{setup-llm-6UAJUHQE.js.map → setup-llm-QUWOSB7A.js.map} +0 -0
  102. /package/dist/{stats-W47FF6RD.js.map → stats-TYOZAOP2.js.map} +0 -0
  103. /package/dist/{stop-6TAO2UU2.js.map → stop-2COOWEYG.js.map} +0 -0
  104. /package/dist/{stop-failure-R76SULCV.js.map → stop-failure-UQ33GZLE.js.map} +0 -0
  105. /package/dist/{subagent-start-TJMUZLP2.js.map → subagent-start-YENEY6VF.js.map} +0 -0
  106. /package/dist/{subagent-stop-M3DAFJWQ.js.map → subagent-stop-W2757YDB.js.map} +0 -0
  107. /package/dist/{task-completed-2KVR5JV6.js.map → task-completed-KU6GWMWV.js.map} +0 -0
  108. /package/dist/{team-2IAT6MKD.js.map → team-SNLC6FZM.js.map} +0 -0
  109. /package/dist/{turns-3ZQAF6HF.js.map → turns-YFNI5CQC.js.map} +0 -0
  110. /package/dist/{update-TB34JEB7.js.map → update-5VYNQZJ4.js.map} +0 -0
  111. /package/dist/{user-prompt-submit-O4TP7NJ6.js.map → user-prompt-submit-KATLHAKA.js.map} +0 -0
  112. /package/dist/{verify-SESZXGVY.js.map → verify-BGJVB3K2.js.map} +0 -0
  113. /package/dist/{version-QBORV23E.js.map → version-MKNN5GYM.js.map} +0 -0
@@ -15,7 +15,7 @@ import {
15
15
  getEmbeddingQueueDepth,
16
16
  getUnembedded,
17
17
  markEmbedded
18
- } from "./chunk-K2QX43GC.js";
18
+ } from "./chunk-VLGBWOBY.js";
19
19
  import {
20
20
  getTeamPackageVersion,
21
21
  loadSecrets,
@@ -23,7 +23,7 @@ import {
23
23
  readSecrets,
24
24
  resolveVaultConfigPath,
25
25
  writeSecret
26
- } from "./chunk-KABTXALI.js";
26
+ } from "./chunk-FKBPXCH3.js";
27
27
  import {
28
28
  buildTaskInstruction,
29
29
  closeOpenBatches,
@@ -71,7 +71,7 @@ import {
71
71
  setResponseSummary,
72
72
  updateCandidate,
73
73
  updateNotificationStatus
74
- } from "./chunk-5OXBT5MD.js";
74
+ } from "./chunk-P5VNHGVZ.js";
75
75
  import {
76
76
  fullTextSearch,
77
77
  hydrateSearchResults
@@ -91,7 +91,7 @@ import {
91
91
  } from "./chunk-Q4QD6LJT.js";
92
92
  import {
93
93
  listTurnsByRun
94
- } from "./chunk-QLCD77AN.js";
94
+ } from "./chunk-6RFZWV4R.js";
95
95
  import {
96
96
  cleanupStagedSkill,
97
97
  listStaleStagingDirs
@@ -109,11 +109,11 @@ import {
109
109
  listBufferSessionIds
110
110
  } from "./chunk-V7XG6V6C.js";
111
111
  import "./chunk-POEPHBQK.js";
112
- import "./chunk-5WPTS6A4.js";
112
+ import "./chunk-NCBLB2C6.js";
113
113
  import "./chunk-SAKJMNSR.js";
114
114
  import {
115
115
  SymbiontInstaller
116
- } from "./chunk-27ZDDWIA.js";
116
+ } from "./chunk-TMNFCUAD.js";
117
117
  import {
118
118
  checkLocalProvider
119
119
  } from "./chunk-6ZDJXSEO.js";
@@ -170,7 +170,7 @@ import {
170
170
  updateBackupConfig,
171
171
  updateConfig,
172
172
  updateTeamConfig
173
- } from "./chunk-UTSCRMJE.js";
173
+ } from "./chunk-NKQZ73LL.js";
174
174
  import {
175
175
  closeDatabase,
176
176
  getDatabase,
@@ -179,10 +179,10 @@ import {
179
179
  } from "./chunk-MYX5NCRH.js";
180
180
  import {
181
181
  resolveCliEntryPath
182
- } from "./chunk-2QJCV3UL.js";
182
+ } from "./chunk-QH5HS54N.js";
183
183
  import {
184
184
  getPluginVersion
185
- } from "./chunk-VH7XYQFL.js";
185
+ } from "./chunk-ST2D3SGM.js";
186
186
  import {
187
187
  loadManifests,
188
188
  resolvePackageRoot
@@ -2772,7 +2772,7 @@ function createTeamHandlers(deps) {
2772
2772
  return { body: { retried: count } };
2773
2773
  }
2774
2774
  async function handleUpgradeWorker(_req) {
2775
- const { upgradeWorker } = await import("./team-2IAT6MKD.js");
2775
+ const { upgradeWorker } = await import("./team-SNLC6FZM.js");
2776
2776
  logger.info("team-sync.upgrade.start", "Starting worker upgrade");
2777
2777
  const result = upgradeWorker(vaultDir);
2778
2778
  if (!result.success) {
@@ -3164,7 +3164,7 @@ function createSkillRecordDeleteHandler(deps) {
3164
3164
  logger.warn(LOG_KINDS.PROCESSOR_BATCH, "Failed to remove skill directory", { name: record.name, error: String(err) });
3165
3165
  }
3166
3166
  try {
3167
- const { syncSkillSymlinks } = await import("./installer-YH3WQISI.js");
3167
+ const { syncSkillSymlinks } = await import("./installer-WMTB4NCX.js");
3168
3168
  syncSkillSymlinks(projectRoot, record.name, { remove: true });
3169
3169
  } catch (err) {
3170
3170
  logger.warn(LOG_KINDS.PROCESSOR_BATCH, "Failed to remove skill symlinks", { name: record.name, error: String(err) });
@@ -3788,7 +3788,7 @@ async function triggerTitleSummary(sessionId, deps) {
3788
3788
  if (config.agent.summary_batch_interval <= 0) return;
3789
3789
  if (config.agent.event_tasks_enabled === false) return;
3790
3790
  try {
3791
- const { runAgent } = await import("./executor-2TMGOVEA.js");
3791
+ const { runAgent } = await import("./executor-NXNSUEMQ.js");
3792
3792
  runAgent(vaultDir, {
3793
3793
  task: "title-summary",
3794
3794
  instruction: `Process session ${sessionId} only`,
@@ -3900,6 +3900,9 @@ var DEFAULT_LIST_OFFSET3 = 0;
3900
3900
  var DEFAULT_GRAPH_DEPTH = 1;
3901
3901
  var MAX_GRAPH_DEPTH = 3;
3902
3902
  var SPORE_NAME_PREVIEW_CHARS = 60;
3903
+ var GRAPH_SEED_ENTITY_LIMIT = 4;
3904
+ var GRAPH_SEED_SPORE_LIMIT = 4;
3905
+ var GRAPH_SEED_SESSION_LIMIT = 4;
3903
3906
  var EXCLUDED_GRAPH_EDGE_TYPES = /* @__PURE__ */ new Set(["HAS_BATCH", "EXTRACTED_FROM"]);
3904
3907
  async function handleListSpores(req) {
3905
3908
  const agentId = req.query.agent_id;
@@ -3940,11 +3943,93 @@ async function handleListEntities(req) {
3940
3943
  });
3941
3944
  return { body: { entities } };
3942
3945
  }
3946
+ async function handleGetGraphSeeds(_req) {
3947
+ const db = getDatabase();
3948
+ const sporeRows = db.prepare(
3949
+ `SELECT id, observation_type, status, content, created_at
3950
+ FROM spores
3951
+ WHERE agent_id = ? AND status = 'active'
3952
+ ORDER BY created_at DESC
3953
+ LIMIT ?`
3954
+ ).all(DEFAULT_AGENT_ID, GRAPH_SEED_SPORE_LIMIT);
3955
+ const sessionRows = db.prepare(
3956
+ `SELECT id, title, summary, status, started_at as created_at
3957
+ FROM sessions
3958
+ WHERE status != 'active'
3959
+ ORDER BY started_at DESC
3960
+ LIMIT ?`
3961
+ ).all(GRAPH_SEED_SESSION_LIMIT);
3962
+ const entityRows = db.prepare(
3963
+ `SELECT e.id, e.type, e.name, e.status, e.first_seen as created_at, COUNT(em.entity_id) as mention_count
3964
+ FROM entities e
3965
+ LEFT JOIN entity_mentions em ON em.entity_id = e.id
3966
+ WHERE e.agent_id = ? AND e.status = 'active'
3967
+ GROUP BY e.id
3968
+ ORDER BY mention_count DESC, e.last_seen DESC
3969
+ LIMIT ?`
3970
+ ).all(DEFAULT_AGENT_ID, GRAPH_SEED_ENTITY_LIMIT);
3971
+ const sporeSeeds = sporeRows.map((row) => ({
3972
+ id: row.id,
3973
+ name: (row.content ?? "").slice(0, SPORE_NAME_PREVIEW_CHARS),
3974
+ type: "spore",
3975
+ status: row.status ?? void 0,
3976
+ created_at: row.created_at,
3977
+ content: row.content,
3978
+ observation_type: row.observation_type
3979
+ }));
3980
+ const sessionSeeds = sessionRows.map((row) => ({
3981
+ id: row.id,
3982
+ name: row.title ?? `Session ${row.id.slice(-6)}`,
3983
+ type: "session",
3984
+ status: row.status ?? void 0,
3985
+ created_at: row.created_at,
3986
+ content: row.summary ?? void 0
3987
+ }));
3988
+ const entitySeeds = entityRows.map((row) => ({
3989
+ id: row.id,
3990
+ name: row.name,
3991
+ type: row.type,
3992
+ status: row.status ?? void 0,
3993
+ created_at: row.created_at,
3994
+ mention_count: Number(row.mention_count) || 0
3995
+ }));
3996
+ const seeds = [
3997
+ ...entitySeeds,
3998
+ ...sessionSeeds,
3999
+ ...sporeSeeds
4000
+ ];
4001
+ const recommendedId = entitySeeds[0]?.id ?? sessionSeeds[0]?.id ?? sporeSeeds[0]?.id ?? null;
4002
+ return {
4003
+ body: {
4004
+ seeds,
4005
+ recommended_id: recommendedId
4006
+ }
4007
+ };
4008
+ }
3943
4009
  async function handleGetGraph(req) {
3944
4010
  const depth = Math.min(Number(req.query.depth) || DEFAULT_GRAPH_DEPTH, MAX_GRAPH_DEPTH);
3945
- const center = getEntity(req.params.id);
3946
- if (!center) return { status: 404, body: { error: "not_found" } };
3947
- const graph = getGraphForNode(req.params.id, "entity", { depth });
4011
+ const id = req.params.id;
4012
+ let centerNode = null;
4013
+ let centerType = "entity";
4014
+ const entity = getEntity(id);
4015
+ if (entity) {
4016
+ centerNode = entity;
4017
+ centerType = "entity";
4018
+ } else {
4019
+ const spore = getSpore(id);
4020
+ if (spore) {
4021
+ centerNode = spore;
4022
+ centerType = "spore";
4023
+ } else {
4024
+ const session = getSession(id);
4025
+ if (session) {
4026
+ centerNode = session;
4027
+ centerType = "session";
4028
+ }
4029
+ }
4030
+ }
4031
+ if (!centerNode) return { status: 404, body: { error: "not_found" } };
4032
+ const graph = getGraphForNode(id, centerType, { depth });
3948
4033
  const filteredEdges = graph.edges.filter(
3949
4034
  (e) => !EXCLUDED_GRAPH_EDGE_TYPES.has(e.type)
3950
4035
  );
@@ -3953,24 +4038,26 @@ async function handleGetGraph(req) {
3953
4038
  const sporeIds = /* @__PURE__ */ new Set();
3954
4039
  const sessionIds = /* @__PURE__ */ new Set();
3955
4040
  for (const edge of filteredEdges) {
3956
- for (const [id, type] of [
4041
+ for (const [nodeId, type] of [
3957
4042
  [edge.source_id, edge.source_type],
3958
4043
  [edge.target_id, edge.target_type]
3959
4044
  ]) {
3960
4045
  switch (type) {
3961
4046
  case "entity":
3962
- entityIds.add(id);
4047
+ entityIds.add(nodeId);
3963
4048
  break;
3964
4049
  case "spore":
3965
- sporeIds.add(id);
4050
+ sporeIds.add(nodeId);
3966
4051
  break;
3967
4052
  case "session":
3968
- sessionIds.add(id);
4053
+ sessionIds.add(nodeId);
3969
4054
  break;
3970
4055
  }
3971
4056
  }
3972
4057
  }
3973
- entityIds.add(center.id);
4058
+ if (centerType === "entity") entityIds.add(id);
4059
+ if (centerType === "spore") sporeIds.add(id);
4060
+ if (centerType === "session") sessionIds.add(id);
3974
4061
  const entityIdArray = Array.from(entityIds);
3975
4062
  let entityNodes = [];
3976
4063
  if (entityIdArray.length > 0) {
@@ -4038,17 +4125,17 @@ async function handleGetGraph(req) {
4038
4125
  content: n.summary ?? void 0
4039
4126
  }))
4040
4127
  ];
4041
- const centerNode = allNodes.find((n) => n.id === center.id);
4042
4128
  const uiEdges = filteredEdges.map((e) => ({
4043
4129
  source_id: e.source_id,
4044
4130
  target_id: e.target_id,
4045
4131
  label: e.type,
4046
4132
  weight: e.confidence
4047
4133
  }));
4134
+ const centerResponseNode = allNodes.find((n) => n.id === id);
4048
4135
  return {
4049
4136
  body: {
4050
- center: centerNode ?? { ...center, mention_count: mentionCounts.get(center.id) ?? 0 },
4051
- nodes: allNodes.filter((n) => n.id !== center.id),
4137
+ center: centerResponseNode,
4138
+ nodes: allNodes.filter((n) => n.id !== id),
4052
4139
  edges: uiEdges,
4053
4140
  depth
4054
4141
  }
@@ -5818,8 +5905,8 @@ function registerBuiltinDomains() {
5818
5905
  domain: "agents",
5819
5906
  label: "Agent Tasks",
5820
5907
  types: [
5821
- { id: "agent.task.success", label: "Task completed", defaultMode: "banner", defaultLevel: "success" },
5822
- { id: "agent.task.failure", label: "Task failed", defaultMode: "banner", defaultLevel: "error" }
5908
+ { id: "agent.task.success", label: "Task completed", defaultMode: "summary", defaultLevel: "success" },
5909
+ { id: "agent.task.failure", label: "Task failed", defaultMode: "summary", defaultLevel: "error" }
5823
5910
  ]
5824
5911
  });
5825
5912
  register({
@@ -5835,8 +5922,8 @@ function registerBuiltinDomains() {
5835
5922
  label: "Skills",
5836
5923
  types: [
5837
5924
  { id: "skill.surveyed", label: "Skill candidate surveyed", defaultMode: "summary", defaultLevel: "info" },
5838
- { id: "skill.created", label: "Skill created", defaultMode: "banner", defaultLevel: "success" },
5839
- { id: "skill.evolved", label: "Skill evolved", defaultMode: "banner", defaultLevel: "info" }
5925
+ { id: "skill.created", label: "Skill created", defaultMode: "summary", defaultLevel: "success" },
5926
+ { id: "skill.evolved", label: "Skill evolved", defaultMode: "summary", defaultLevel: "info" }
5840
5927
  ]
5841
5928
  });
5842
5929
  register({
@@ -5851,7 +5938,7 @@ function registerBuiltinDomains() {
5851
5938
  domain: "daemon",
5852
5939
  label: "Daemon",
5853
5940
  types: [
5854
- { id: "daemon.version_sync", label: "Version sync restart", defaultMode: "banner", defaultLevel: "info" }
5941
+ { id: "daemon.version_sync", label: "Version sync restart", defaultMode: "summary", defaultLevel: "info" }
5855
5942
  ]
5856
5943
  });
5857
5944
  }
@@ -6284,7 +6371,7 @@ async function registerScheduledTasks(powerManager, deps) {
6284
6371
  else runningTasks.delete(name);
6285
6372
  },
6286
6373
  runTask: async (taskName) => {
6287
- const { runAgent } = await import("./executor-2TMGOVEA.js");
6374
+ const { runAgent } = await import("./executor-NXNSUEMQ.js");
6288
6375
  const taskConfig = config.agent.tasks?.[taskName];
6289
6376
  const projectRoot = resolve(vaultDir, "..");
6290
6377
  const built = buildTaskInstruction(taskName, taskConfig?.params, taskAgentMap.get(taskName), projectRoot, embeddingManager);
@@ -6323,7 +6410,7 @@ async function registerScheduledTasks(powerManager, deps) {
6323
6410
  link: `/agent?run=${result.runId}`,
6324
6411
  metadata: { taskName, runId: result.runId }
6325
6412
  }, config);
6326
- const { countToolCallsByRun } = await import("./turns-3ZQAF6HF.js");
6413
+ const { countToolCallsByRun } = await import("./turns-YFNI5CQC.js");
6327
6414
  const counts = countToolCallsByRun(result.runId, ["vault_create_spore", "vault_write_digest"]);
6328
6415
  const sporeCount = counts["vault_create_spore"] ?? 0;
6329
6416
  const digestCount = counts["vault_write_digest"] ?? 0;
@@ -6588,7 +6675,7 @@ function createAgentRunHandlers(deps) {
6588
6675
  };
6589
6676
  }
6590
6677
  }
6591
- const { runAgent } = await import("./executor-2TMGOVEA.js");
6678
+ const { runAgent } = await import("./executor-NXNSUEMQ.js");
6592
6679
  const resultPromise = runAgent(vaultDir, {
6593
6680
  task,
6594
6681
  instruction,
@@ -6599,13 +6686,29 @@ function createAgentRunHandlers(deps) {
6599
6686
  const effectiveAgentId = agentId ?? "myco-agent";
6600
6687
  const runId = getLatestRunId(effectiveAgentId, task);
6601
6688
  resultPromise.then((result) => {
6689
+ const taskName = task ?? "agent run";
6602
6690
  if (result.status === "failed") {
6691
+ notify(vaultDir, {
6692
+ domain: "agents",
6693
+ type: "agent.task.failure",
6694
+ title: `Task failed: ${taskName}`,
6695
+ message: result.error ?? "Unknown error",
6696
+ link: `/agent?run=${result.runId}`,
6697
+ metadata: { taskName: task ?? null, runId: result.runId }
6698
+ }, mycoConfig);
6603
6699
  logger.error(LOG_KINDS.AGENT_ERROR, "Agent run failed", {
6604
6700
  runId: result.runId,
6605
6701
  error: result.error ?? "No error message",
6606
6702
  phases: result.phases?.map((p) => `${p.name}:${p.status}`) ?? []
6607
6703
  });
6608
6704
  } else {
6705
+ notify(vaultDir, {
6706
+ domain: "agents",
6707
+ type: "agent.task.success",
6708
+ title: `Task completed: ${taskName}`,
6709
+ link: `/agent?run=${result.runId}`,
6710
+ metadata: { taskName: task ?? null, runId: result.runId }
6711
+ }, mycoConfig);
6609
6712
  logger.info(LOG_KINDS.AGENT_RUN, "Agent run completed", {
6610
6713
  runId: result.runId,
6611
6714
  status: result.status,
@@ -8020,12 +8123,23 @@ async function main() {
8020
8123
  try {
8021
8124
  const staleDb = getDatabase();
8022
8125
  const staleRows = staleDb.prepare(
8023
- `SELECT id FROM agent_runs WHERE status = 'running'`
8126
+ `SELECT id, task FROM agent_runs WHERE status = 'running'`
8024
8127
  ).all();
8025
8128
  if (staleRows.length > 0) {
8129
+ const completedAt = epochSeconds();
8026
8130
  staleDb.prepare(
8027
8131
  `UPDATE agent_runs SET status = 'failed', completed_at = ?, error = 'Daemon restarted while run was in progress' WHERE status = 'running'`
8028
- ).run(epochSeconds());
8132
+ ).run(completedAt);
8133
+ for (const row of staleRows) {
8134
+ notify(vaultDir, {
8135
+ domain: "agents",
8136
+ type: "agent.task.failure",
8137
+ title: `Task failed: ${row.task ?? "agent run"}`,
8138
+ message: "Daemon restarted while run was in progress",
8139
+ link: `/agent?run=${row.id}`,
8140
+ metadata: { taskName: row.task, runId: row.id, reason: "daemon_restart" }
8141
+ }, config);
8142
+ }
8029
8143
  logger.info(LOG_KINDS.AGENT_RUN, "Cleaned stale running agent runs", {
8030
8144
  count: staleRows.length,
8031
8145
  ids: staleRows.map((r) => r.id)
@@ -8206,6 +8320,7 @@ async function main() {
8206
8320
  server.registerRoute("GET", "/api/spores", handleListSpores);
8207
8321
  server.registerRoute("GET", "/api/spores/:id", handleGetSpore);
8208
8322
  server.registerRoute("GET", "/api/entities", handleListEntities);
8323
+ server.registerRoute("GET", "/api/graph/seeds", handleGetGraphSeeds);
8209
8324
  server.registerRoute("GET", "/api/graph", handleGetFullGraph);
8210
8325
  server.registerRoute("GET", "/api/graph/:id", handleGetGraph);
8211
8326
  server.registerRoute("GET", "/api/digest", handleGetDigest);
@@ -8339,4 +8454,4 @@ export {
8339
8454
  handleUserPrompt,
8340
8455
  main
8341
8456
  };
8342
- //# sourceMappingURL=main-R5ZD5OIZ.js.map
8457
+ //# sourceMappingURL=main-RPJSS7PT.js.map