@goondocks/myco 0.21.0 → 0.21.1

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 (145) hide show
  1. package/bin/myco-run +68 -7
  2. package/dist/{agent-eval-RJSQI5S2.js → agent-eval-YK2VP2S4.js} +7 -6
  3. package/dist/{agent-eval-RJSQI5S2.js.map → agent-eval-YK2VP2S4.js.map} +1 -1
  4. package/dist/{agent-run-2JSYFOKU.js → agent-run-GEJBD2YD.js} +5 -5
  5. package/dist/{agent-tasks-APFJIM2T.js → agent-tasks-5XSRGTRX.js} +5 -5
  6. package/dist/{chunk-R2JIJBCL.js → chunk-6ALVMIB4.js} +3 -3
  7. package/dist/{chunk-JZS6GZ6T.js → chunk-AUIXX33A.js} +10 -3
  8. package/dist/chunk-AUIXX33A.js.map +1 -0
  9. package/dist/{chunk-RL5R4CQU.js → chunk-DTWUHHFI.js} +39 -2
  10. package/dist/{chunk-RL5R4CQU.js.map → chunk-DTWUHHFI.js.map} +1 -1
  11. package/dist/{chunk-CESKJD44.js → chunk-EEOJWLMP.js} +5 -9
  12. package/dist/chunk-EEOJWLMP.js.map +1 -0
  13. package/dist/{chunk-BUTL6IFS.js → chunk-ENZR5NG7.js} +2 -2
  14. package/dist/{chunk-P66DLD6G.js → chunk-KTTSXYEK.js} +2 -2
  15. package/dist/chunk-LQIPXVDH.js +17 -0
  16. package/dist/chunk-LQIPXVDH.js.map +1 -0
  17. package/dist/{chunk-5ZG4RMUH.js → chunk-N2DGFACQ.js} +2 -2
  18. package/dist/{chunk-F3OEQYLS.js → chunk-N7Z3LUEZ.js} +33 -22
  19. package/dist/{chunk-F3OEQYLS.js.map → chunk-N7Z3LUEZ.js.map} +1 -1
  20. package/dist/{chunk-G6QIBNZM.js → chunk-NFO7BRCO.js} +4 -4
  21. package/dist/{chunk-VHNRMM4O.js → chunk-OTQH5KZW.js} +87 -37
  22. package/dist/chunk-OTQH5KZW.js.map +1 -0
  23. package/dist/{chunk-DJ3IHNYO.js → chunk-OZ3FBAK5.js} +2 -2
  24. package/dist/{chunk-6LB7XELY.js → chunk-QATYARI5.js} +15 -13
  25. package/dist/chunk-QATYARI5.js.map +1 -0
  26. package/dist/{chunk-JR54LTPP.js → chunk-QDLVIW2O.js} +3 -3
  27. package/dist/{chunk-LVIY7P35.js → chunk-QLLBJEM7.js} +5 -1
  28. package/dist/chunk-QLLBJEM7.js.map +1 -0
  29. package/dist/chunk-TSM6VESW.js +25 -0
  30. package/dist/chunk-TSM6VESW.js.map +1 -0
  31. package/dist/{chunk-ILJPRYES.js → chunk-USVFEWYL.js} +2 -2
  32. package/dist/{chunk-75Z7UKDY.js → chunk-VRI56337.js} +2 -2
  33. package/dist/{chunk-NGH7U6A3.js → chunk-X2IRGXGF.js} +336 -77
  34. package/dist/chunk-X2IRGXGF.js.map +1 -0
  35. package/dist/{chunk-NGROSFOH.js → chunk-Z66IT5KL.js} +14 -9
  36. package/dist/chunk-Z66IT5KL.js.map +1 -0
  37. package/dist/{cli-LNYSTDQM.js → cli-HSLIG7EX.js} +37 -37
  38. package/dist/{client-NWE4TCNO.js → client-Z43DNLJH.js} +3 -3
  39. package/dist/{detect-PXNM6TA7.js → detect-7NUD5B5R.js} +2 -2
  40. package/dist/{doctor-TI7EZ3RW.js → doctor-HJCWHAU4.js} +6 -6
  41. package/dist/{executor-F2YU7HXJ.js → executor-DO6QFC6G.js} +11 -10
  42. package/dist/{init-KG3TYVGE.js → init-4KVK7W2E.js} +9 -9
  43. package/dist/{installer-UMH7OJ5A.js → installer-N4UTEACX.js} +2 -2
  44. package/dist/{loader-NAVVZK63.js → loader-UDNUMEDA.js} +3 -2
  45. package/dist/{main-5PRQNEEE.js → main-4J4QZZTZ.js} +121 -62
  46. package/dist/main-4J4QZZTZ.js.map +1 -0
  47. package/dist/{open-5A27BCSB.js → open-7TXJQM3H.js} +5 -5
  48. package/dist/{post-compact-USAODKPQ.js → post-compact-7AEFVCZS.js} +7 -7
  49. package/dist/{post-tool-use-GMMSYBII.js → post-tool-use-TZINWWDH.js} +6 -6
  50. package/dist/{post-tool-use-failure-NZVSL2PO.js → post-tool-use-failure-TCFEU2GI.js} +7 -7
  51. package/dist/{pre-compact-LZ57DLUS.js → pre-compact-LO2VZCGR.js} +7 -7
  52. package/dist/{registry-M2Z5QBWH.js → registry-F3THYC5M.js} +4 -3
  53. package/dist/{remove-T3KE6C5N.js → remove-F77AAALE.js} +7 -7
  54. package/dist/{restart-YWDEVZUJ.js → restart-UEFDPMLT.js} +6 -6
  55. package/dist/{search-GKFDGELR.js → search-NHNVUAQQ.js} +6 -6
  56. package/dist/{server-AHUR6CWF.js → server-AZJSTQEK.js} +5 -5
  57. package/dist/{session-2ZEPLWW6.js → session-3HLC5KOD.js} +5 -5
  58. package/dist/{session-end-LWJYQAXX.js → session-end-FS46UARX.js} +6 -6
  59. package/dist/{session-start-WTA6GCOQ.js → session-start-46KPFV2H.js} +10 -10
  60. package/dist/{setup-llm-E7UU5IO7.js → setup-llm-JMWSNQ2C.js} +5 -5
  61. package/dist/src/agent/definitions/tasks/cortex-instructions.yaml +63 -41
  62. package/dist/src/agent/definitions/tasks/skill-evolve.yaml +177 -21
  63. package/dist/src/agent/definitions/tasks/skill-generate.yaml +20 -6
  64. package/dist/src/agent/definitions/tasks/vault-evolve.yaml +65 -55
  65. package/dist/src/cli.js +1 -1
  66. package/dist/src/daemon/main.js +1 -1
  67. package/dist/src/hooks/post-tool-use.js +1 -1
  68. package/dist/src/hooks/session-end.js +1 -1
  69. package/dist/src/hooks/session-start.js +1 -1
  70. package/dist/src/hooks/stop.js +1 -1
  71. package/dist/src/hooks/user-prompt-submit.js +1 -1
  72. package/dist/src/mcp/server.js +1 -1
  73. package/dist/src/symbionts/manifests/opencode.yaml +7 -0
  74. package/dist/src/symbionts/templates/agents-starter.md +1 -1
  75. package/dist/{stats-DFG6S23S.js → stats-MKMETHMA.js} +6 -6
  76. package/dist/{stop-WRBTXEVT.js → stop-OUEX6KA4.js} +6 -6
  77. package/dist/{stop-failure-32MGIG2Q.js → stop-failure-2BWVNZEG.js} +7 -7
  78. package/dist/{subagent-start-VFGHQFVL.js → subagent-start-J4VV6DEE.js} +7 -7
  79. package/dist/{subagent-stop-663FXG3P.js → subagent-stop-JMLVEPIA.js} +7 -7
  80. package/dist/{task-completed-ZCQYEFMZ.js → task-completed-65CHMMKA.js} +7 -7
  81. package/dist/{team-JTI5CDUO.js → team-U2LDKIS4.js} +3 -3
  82. package/dist/ui/assets/{index-DGf1h-Ha.js → index-BUGor9dk.js} +1 -1
  83. package/dist/ui/index.html +1 -1
  84. package/dist/{update-3NBQTG32.js → update-ZSHVXWSQ.js} +7 -7
  85. package/dist/{user-prompt-submit-ME2TBKOS.js → user-prompt-submit-APMO6FVU.js} +6 -6
  86. package/dist/{version-GQAFBBPX.js → version-TXPPS3L5.js} +2 -2
  87. package/package.json +1 -1
  88. package/skills/myco-rules/SKILL.md +94 -0
  89. package/skills/{rules → myco-rules}/references/rules-bad-example.md +1 -1
  90. package/skills/{rules → myco-rules}/references/rules-good-example.md +1 -1
  91. package/dist/chunk-6LB7XELY.js.map +0 -1
  92. package/dist/chunk-CESKJD44.js.map +0 -1
  93. package/dist/chunk-CUDIZJY7.js +0 -36
  94. package/dist/chunk-CUDIZJY7.js.map +0 -1
  95. package/dist/chunk-JZS6GZ6T.js.map +0 -1
  96. package/dist/chunk-LVIY7P35.js.map +0 -1
  97. package/dist/chunk-NGH7U6A3.js.map +0 -1
  98. package/dist/chunk-NGROSFOH.js.map +0 -1
  99. package/dist/chunk-VHNRMM4O.js.map +0 -1
  100. package/dist/main-5PRQNEEE.js.map +0 -1
  101. package/skills/myco-curate/SKILL.md +0 -86
  102. package/skills/rules/SKILL.md +0 -214
  103. /package/dist/{agent-run-2JSYFOKU.js.map → agent-run-GEJBD2YD.js.map} +0 -0
  104. /package/dist/{agent-tasks-APFJIM2T.js.map → agent-tasks-5XSRGTRX.js.map} +0 -0
  105. /package/dist/{chunk-R2JIJBCL.js.map → chunk-6ALVMIB4.js.map} +0 -0
  106. /package/dist/{chunk-BUTL6IFS.js.map → chunk-ENZR5NG7.js.map} +0 -0
  107. /package/dist/{chunk-P66DLD6G.js.map → chunk-KTTSXYEK.js.map} +0 -0
  108. /package/dist/{chunk-5ZG4RMUH.js.map → chunk-N2DGFACQ.js.map} +0 -0
  109. /package/dist/{chunk-G6QIBNZM.js.map → chunk-NFO7BRCO.js.map} +0 -0
  110. /package/dist/{chunk-DJ3IHNYO.js.map → chunk-OZ3FBAK5.js.map} +0 -0
  111. /package/dist/{chunk-JR54LTPP.js.map → chunk-QDLVIW2O.js.map} +0 -0
  112. /package/dist/{chunk-ILJPRYES.js.map → chunk-USVFEWYL.js.map} +0 -0
  113. /package/dist/{chunk-75Z7UKDY.js.map → chunk-VRI56337.js.map} +0 -0
  114. /package/dist/{cli-LNYSTDQM.js.map → cli-HSLIG7EX.js.map} +0 -0
  115. /package/dist/{client-NWE4TCNO.js.map → client-Z43DNLJH.js.map} +0 -0
  116. /package/dist/{detect-PXNM6TA7.js.map → detect-7NUD5B5R.js.map} +0 -0
  117. /package/dist/{doctor-TI7EZ3RW.js.map → doctor-HJCWHAU4.js.map} +0 -0
  118. /package/dist/{executor-F2YU7HXJ.js.map → executor-DO6QFC6G.js.map} +0 -0
  119. /package/dist/{init-KG3TYVGE.js.map → init-4KVK7W2E.js.map} +0 -0
  120. /package/dist/{installer-UMH7OJ5A.js.map → installer-N4UTEACX.js.map} +0 -0
  121. /package/dist/{loader-NAVVZK63.js.map → loader-UDNUMEDA.js.map} +0 -0
  122. /package/dist/{open-5A27BCSB.js.map → open-7TXJQM3H.js.map} +0 -0
  123. /package/dist/{post-compact-USAODKPQ.js.map → post-compact-7AEFVCZS.js.map} +0 -0
  124. /package/dist/{post-tool-use-GMMSYBII.js.map → post-tool-use-TZINWWDH.js.map} +0 -0
  125. /package/dist/{post-tool-use-failure-NZVSL2PO.js.map → post-tool-use-failure-TCFEU2GI.js.map} +0 -0
  126. /package/dist/{pre-compact-LZ57DLUS.js.map → pre-compact-LO2VZCGR.js.map} +0 -0
  127. /package/dist/{registry-M2Z5QBWH.js.map → registry-F3THYC5M.js.map} +0 -0
  128. /package/dist/{remove-T3KE6C5N.js.map → remove-F77AAALE.js.map} +0 -0
  129. /package/dist/{restart-YWDEVZUJ.js.map → restart-UEFDPMLT.js.map} +0 -0
  130. /package/dist/{search-GKFDGELR.js.map → search-NHNVUAQQ.js.map} +0 -0
  131. /package/dist/{server-AHUR6CWF.js.map → server-AZJSTQEK.js.map} +0 -0
  132. /package/dist/{session-2ZEPLWW6.js.map → session-3HLC5KOD.js.map} +0 -0
  133. /package/dist/{session-end-LWJYQAXX.js.map → session-end-FS46UARX.js.map} +0 -0
  134. /package/dist/{session-start-WTA6GCOQ.js.map → session-start-46KPFV2H.js.map} +0 -0
  135. /package/dist/{setup-llm-E7UU5IO7.js.map → setup-llm-JMWSNQ2C.js.map} +0 -0
  136. /package/dist/{stats-DFG6S23S.js.map → stats-MKMETHMA.js.map} +0 -0
  137. /package/dist/{stop-WRBTXEVT.js.map → stop-OUEX6KA4.js.map} +0 -0
  138. /package/dist/{stop-failure-32MGIG2Q.js.map → stop-failure-2BWVNZEG.js.map} +0 -0
  139. /package/dist/{subagent-start-VFGHQFVL.js.map → subagent-start-J4VV6DEE.js.map} +0 -0
  140. /package/dist/{subagent-stop-663FXG3P.js.map → subagent-stop-JMLVEPIA.js.map} +0 -0
  141. /package/dist/{task-completed-ZCQYEFMZ.js.map → task-completed-65CHMMKA.js.map} +0 -0
  142. /package/dist/{team-JTI5CDUO.js.map → team-U2LDKIS4.js.map} +0 -0
  143. /package/dist/{update-3NBQTG32.js.map → update-ZSHVXWSQ.js.map} +0 -0
  144. /package/dist/{user-prompt-submit-ME2TBKOS.js.map → user-prompt-submit-APMO6FVU.js.map} +0 -0
  145. /package/dist/{version-GQAFBBPX.js.map → version-TXPPS3L5.js.map} +0 -0
@@ -18,7 +18,7 @@ import {
18
18
  getEmbeddingQueueDepth,
19
19
  getUnembedded,
20
20
  markEmbedded
21
- } from "./chunk-75Z7UKDY.js";
21
+ } from "./chunk-VRI56337.js";
22
22
  import {
23
23
  deleteSecrets,
24
24
  getTeamPackageVersion,
@@ -27,7 +27,7 @@ import {
27
27
  readSecrets,
28
28
  resolveVaultConfigPath,
29
29
  writeSecret
30
- } from "./chunk-R2JIJBCL.js";
30
+ } from "./chunk-6ALVMIB4.js";
31
31
  import {
32
32
  DEFAULT_OPENAI_URL,
33
33
  DEFAULT_OPENROUTER_URL,
@@ -90,28 +90,31 @@ import {
90
90
  tryParseJson,
91
91
  updateCandidate,
92
92
  updateNotificationStatus
93
- } from "./chunk-NGH7U6A3.js";
93
+ } from "./chunk-X2IRGXGF.js";
94
94
  import {
95
- errorMessage,
96
95
  parseCheckpointState,
97
96
  runDurationMs
98
- } from "./chunk-6LB7XELY.js";
97
+ } from "./chunk-QATYARI5.js";
99
98
  import {
100
99
  fullTextSearch,
101
- hydrateSearchResults
102
- } from "./chunk-LVIY7P35.js";
100
+ hydrateSearchResults,
101
+ sanitizeFtsQuery
102
+ } from "./chunk-QLLBJEM7.js";
103
103
  import {
104
104
  copyTaskToUser,
105
105
  deleteUserTask,
106
106
  loadAllTasks,
107
107
  validateTaskName,
108
108
  writeUserTask
109
- } from "./chunk-ILJPRYES.js";
109
+ } from "./chunk-USVFEWYL.js";
110
110
  import {
111
111
  registerAgent,
112
112
  resolveDefinitionsDir,
113
113
  taskFromParsed
114
- } from "./chunk-JZS6GZ6T.js";
114
+ } from "./chunk-AUIXX33A.js";
115
+ import {
116
+ errorMessage
117
+ } from "./chunk-LQIPXVDH.js";
115
118
  import {
116
119
  listTurnsByRun
117
120
  } from "./chunk-FCJ5JV54.js";
@@ -135,11 +138,11 @@ import {
135
138
  cleanStaleBuffers,
136
139
  listBufferSessionIds
137
140
  } from "./chunk-V7XG6V6C.js";
138
- import "./chunk-JR54LTPP.js";
141
+ import "./chunk-QDLVIW2O.js";
139
142
  import "./chunk-SAKJMNSR.js";
140
143
  import {
141
144
  SymbiontInstaller
142
- } from "./chunk-VHNRMM4O.js";
145
+ } from "./chunk-OTQH5KZW.js";
143
146
  import {
144
147
  checkLocalProvider
145
148
  } from "./chunk-TKAJ3JVF.js";
@@ -150,7 +153,7 @@ import {
150
153
  import {
151
154
  composeSessionStartContext,
152
155
  shouldInjectSessionStartDigest
153
- } from "./chunk-DJ3IHNYO.js";
156
+ } from "./chunk-OZ3FBAK5.js";
154
157
  import {
155
158
  buildCortexInstructionsInput,
156
159
  countSpores,
@@ -170,7 +173,7 @@ import {
170
173
  shouldInjectCortex,
171
174
  updateSporeStatus,
172
175
  upsertPlan
173
- } from "./chunk-F3OEQYLS.js";
176
+ } from "./chunk-N7Z3LUEZ.js";
174
177
  import {
175
178
  backfillUnsynced,
176
179
  closeSession,
@@ -202,7 +205,7 @@ import {
202
205
  } from "./chunk-XL75KZGI.js";
203
206
  import {
204
207
  PLAN_STATUSES
205
- } from "./chunk-CESKJD44.js";
208
+ } from "./chunk-EEOJWLMP.js";
206
209
  import {
207
210
  EMBEDDING_DIMENSIONS,
208
211
  REST_SETTABLE_STATUSES,
@@ -215,7 +218,7 @@ import {
215
218
  createSchema,
216
219
  humanizePlanToken,
217
220
  normalizePlanSourcePath
218
- } from "./chunk-RL5R4CQU.js";
221
+ } from "./chunk-DTWUHHFI.js";
219
222
  import {
220
223
  CONFIG_FILENAME,
221
224
  MycoConfigSchema,
@@ -244,14 +247,14 @@ import {
244
247
  } from "./chunk-ZXZPJJN3.js";
245
248
  import {
246
249
  resolveCliEntryPath
247
- } from "./chunk-P66DLD6G.js";
250
+ } from "./chunk-KTTSXYEK.js";
248
251
  import {
249
252
  getPluginVersion
250
- } from "./chunk-BUTL6IFS.js";
253
+ } from "./chunk-ENZR5NG7.js";
251
254
  import {
252
255
  loadManifests,
253
256
  resolvePackageRoot
254
- } from "./chunk-NGROSFOH.js";
257
+ } from "./chunk-Z66IT5KL.js";
255
258
  import {
256
259
  findPackageRoot
257
260
  } from "./chunk-LPUQPDC2.js";
@@ -2896,13 +2899,17 @@ function createTeamHandlers(deps) {
2896
2899
  try {
2897
2900
  pendingCount = countPending();
2898
2901
  deadLetterCount = countDeadLettered();
2899
- } catch {
2902
+ } catch (err) {
2903
+ const detail = errorMessage(err);
2904
+ logger.warn("team-sync.outbox.count-failed", "team-outbox counts unavailable", { error: detail });
2900
2905
  }
2901
2906
  let collectiveStatus = null;
2902
2907
  if (client && config.team.enabled) {
2903
2908
  try {
2904
2909
  collectiveStatus = await client.getCollectiveStatus();
2905
- } catch {
2910
+ } catch (err) {
2911
+ const detail = errorMessage(err);
2912
+ logger.warn("team-sync.collective.status-failed", "Collective status unavailable", { error: detail });
2906
2913
  collectiveStatus = null;
2907
2914
  }
2908
2915
  }
@@ -2945,7 +2952,7 @@ function createTeamHandlers(deps) {
2945
2952
  return { body: { retried: count } };
2946
2953
  }
2947
2954
  async function handleUpgradeWorker(_req) {
2948
- const { upgradeWorker } = await import("./team-JTI5CDUO.js");
2955
+ const { upgradeWorker } = await import("./team-U2LDKIS4.js");
2949
2956
  logger.info("team-sync.upgrade.start", "Starting worker upgrade");
2950
2957
  const result = upgradeWorker(vaultDir);
2951
2958
  if (!result.success) {
@@ -2983,7 +2990,7 @@ function createTeamHandlers(deps) {
2983
2990
  logger.info("team-sync.mcp-token.rotated", "MCP access token rotated");
2984
2991
  return { body: { token } };
2985
2992
  } catch (err) {
2986
- const message = err instanceof Error ? err.message : String(err);
2993
+ const message = errorMessage(err);
2987
2994
  logger.error("team-sync.mcp-token.rotate-failed", "MCP token rotation failed", { error: message });
2988
2995
  return {
2989
2996
  status: 500,
@@ -3337,7 +3344,7 @@ function createSkillRecordDeleteHandler(deps) {
3337
3344
  logger.warn(LOG_KINDS.PROCESSOR_BATCH, "Failed to remove skill directory", { name: record.name, error: String(err) });
3338
3345
  }
3339
3346
  try {
3340
- const { syncSkillSymlinks } = await import("./installer-UMH7OJ5A.js");
3347
+ const { syncSkillSymlinks } = await import("./installer-N4UTEACX.js");
3341
3348
  syncSkillSymlinks(projectRoot, record.name, { remove: true });
3342
3349
  } catch (err) {
3343
3350
  logger.warn(LOG_KINDS.PROCESSOR_BATCH, "Failed to remove skill symlinks", { name: record.name, error: String(err) });
@@ -3618,7 +3625,7 @@ async function fetchRemoteProviderModels(provider, _baseUrl, timeoutMs = REMOTE_
3618
3625
  const modelIds = (data.data ?? []).map((entry) => entry.id).filter((id) => typeof id === "string" && id.length > 0);
3619
3626
  return filterLlmModels(modelIds);
3620
3627
  }
3621
- async function handleGetModels(req) {
3628
+ async function handleGetModels(req, logger) {
3622
3629
  const provider = req.query.provider;
3623
3630
  const type = req.query.type;
3624
3631
  const localBackend = req.query.local_backend;
@@ -3626,6 +3633,7 @@ async function handleGetModels(req) {
3626
3633
  return { status: 400, body: { error: "provider query parameter required" } };
3627
3634
  }
3628
3635
  let models = [];
3636
+ let fetchError;
3629
3637
  try {
3630
3638
  const localBackendKind = inferLocalOpenAIBackendKind({
3631
3639
  type: provider === "lm-studio" ? "lmstudio" : provider,
@@ -3640,14 +3648,22 @@ async function handleGetModels(req) {
3640
3648
  } else if (provider === "openai" || provider === "openrouter") {
3641
3649
  models = await fetchRemoteProviderModels(provider, void 0, MODEL_LIST_TIMEOUT_MS);
3642
3650
  }
3643
- } catch {
3651
+ } catch (err) {
3652
+ fetchError = errorMessage(err);
3653
+ logger?.warn(`models.${provider}.list-unavailable`, `${provider} model list unavailable`, { error: fetchError });
3644
3654
  }
3645
3655
  if (type === "embedding") {
3646
3656
  models = filterEmbeddingModels(models);
3647
3657
  } else if (type === "llm") {
3648
3658
  models = filterLlmModels(models);
3649
3659
  }
3650
- return { body: { provider, models } };
3660
+ return {
3661
+ body: {
3662
+ provider,
3663
+ models,
3664
+ ...fetchError ? { error: fetchError } : {}
3665
+ }
3666
+ };
3651
3667
  }
3652
3668
 
3653
3669
  // src/daemon/api/stats.ts
@@ -3900,11 +3916,12 @@ async function triggerTitleSummary(sessionId, deps) {
3900
3916
  if (config.agent.summary_batch_interval <= 0) return;
3901
3917
  if (config.agent.event_tasks_enabled === false) return;
3902
3918
  try {
3903
- const { runAgent: runAgent2 } = await import("./executor-F2YU7HXJ.js");
3919
+ const { runAgent: runAgent2 } = await import("./executor-DO6QFC6G.js");
3904
3920
  runAgent2(vaultDir, {
3905
3921
  task: "title-summary",
3906
3922
  instruction: `Process session ${sessionId} only`,
3907
- embeddingManager
3923
+ embeddingManager,
3924
+ logger
3908
3925
  }).catch((err) => {
3909
3926
  logger.warn(LOG_KINDS.AGENT_ERROR, "Title-summary task failed", {
3910
3927
  session_id: sessionId,
@@ -4441,15 +4458,40 @@ function createSearchHandler(deps) {
4441
4458
  const type = req.query.type;
4442
4459
  const limit = Number(req.query.limit) || SEARCH_RESULTS_DEFAULT_LIMIT;
4443
4460
  const namespace = req.query.namespace;
4461
+ const sanitized = sanitizeFtsQuery(query);
4444
4462
  if (mode === "fts") {
4445
- const results = fullTextSearch(query, { type, limit });
4446
- return { body: { mode: "fts", results } };
4463
+ try {
4464
+ const results = fullTextSearch(sanitized, { type, limit });
4465
+ return { body: { mode: "fts", results } };
4466
+ } catch (err) {
4467
+ return {
4468
+ status: 500,
4469
+ body: {
4470
+ error: "fts_query_failed",
4471
+ message: errorMessage(err),
4472
+ query,
4473
+ sanitized_query: sanitized !== query ? sanitized : void 0
4474
+ }
4475
+ };
4476
+ }
4447
4477
  }
4448
4478
  const queryVector = await deps.embeddingManager.embedQuery(query);
4449
4479
  if (queryVector === null) {
4450
4480
  if (mode === "auto") {
4451
- const results = fullTextSearch(query, { type, limit });
4452
- return { body: { mode: "fts", results, fallback: true } };
4481
+ try {
4482
+ const results = fullTextSearch(sanitized, { type, limit });
4483
+ return { body: { mode: "fts", results, fallback: true } };
4484
+ } catch (err) {
4485
+ return {
4486
+ status: 500,
4487
+ body: {
4488
+ error: "fts_fallback_failed",
4489
+ message: errorMessage(err),
4490
+ query,
4491
+ sanitized_query: sanitized !== query ? sanitized : void 0
4492
+ }
4493
+ };
4494
+ }
4453
4495
  }
4454
4496
  return { body: { mode: "semantic", results: [], provider_unavailable: true } };
4455
4497
  }
@@ -4604,7 +4646,8 @@ ${goal.trim()}`,
4604
4646
  task: CORTEX_PROMPT_BUILDER_TASK,
4605
4647
  agentId: DEFAULT_AGENT_ID,
4606
4648
  instruction: builderInstruction,
4607
- embeddingManager: deps.embeddingManager
4649
+ embeddingManager: deps.embeddingManager,
4650
+ logger: deps.logger
4608
4651
  });
4609
4652
  const runId = getLatestRunId(DEFAULT_AGENT_ID, CORTEX_PROMPT_BUILDER_TASK);
4610
4653
  const tracked = resultPromise.catch((err) => {
@@ -4642,7 +4685,7 @@ function getCortexPromptResult(runId) {
4642
4685
  }
4643
4686
  async function triggerCortexInstructions(deps) {
4644
4687
  const { vaultDir, embeddingManager, liveConfig, logger, getTeamClient } = deps;
4645
- const loadExecutor = deps.loadExecutor ?? (() => import("./executor-F2YU7HXJ.js"));
4688
+ const loadExecutor = deps.loadExecutor ?? (() => import("./executor-DO6QFC6G.js"));
4646
4689
  const config = liveConfig.current;
4647
4690
  if (config.agent.event_tasks_enabled === false) {
4648
4691
  return { started: false, reason: "event-tasks-disabled" };
@@ -6693,10 +6736,10 @@ var ANTHROPIC_MODELS_CACHE_TTL_MS = 10 * 60 * 1e3;
6693
6736
  var anthropicModelsCache = null;
6694
6737
  var HTTP_OK2 = 200;
6695
6738
  var HTTP_BAD_REQUEST2 = 400;
6696
- async function handleGetProviders() {
6739
+ async function handleGetProviders(logger) {
6697
6740
  const detectionPlan = [
6698
6741
  {
6699
- detect: () => detectAnthropic(),
6742
+ detect: () => detectAnthropic(logger),
6700
6743
  fallback: { type: "anthropic", runtime: "claude-sdk", available: false, models: [] }
6701
6744
  },
6702
6745
  {
@@ -6708,11 +6751,11 @@ async function handleGetProviders() {
6708
6751
  fallback: { type: "lmstudio", runtime: "claude-sdk", available: false, baseUrl: LmStudioBackend.DEFAULT_BASE_URL, models: [] }
6709
6752
  },
6710
6753
  {
6711
- detect: () => detectRemoteProviderInfo("openai", DEFAULT_OPENAI_URL),
6754
+ detect: () => detectRemoteProviderInfo("openai", DEFAULT_OPENAI_URL, logger),
6712
6755
  fallback: { type: "openai", runtime: "openai-agents", available: false, authConfigured: false, baseUrl: DEFAULT_OPENAI_URL, models: [] }
6713
6756
  },
6714
6757
  {
6715
- detect: () => detectRemoteProviderInfo("openrouter", DEFAULT_OPENROUTER_URL),
6758
+ detect: () => detectRemoteProviderInfo("openrouter", DEFAULT_OPENROUTER_URL, logger),
6716
6759
  fallback: { type: "openrouter", runtime: "openai-agents", available: false, authConfigured: false, baseUrl: DEFAULT_OPENROUTER_URL, models: [] }
6717
6760
  },
6718
6761
  {
@@ -6771,7 +6814,10 @@ async function handleTestProvider(req) {
6771
6814
  result = testAnthropic();
6772
6815
  }
6773
6816
  } catch (err) {
6774
- result = { ok: false, error: String(err) };
6817
+ result = {
6818
+ ok: false,
6819
+ error: errorMessage(err)
6820
+ };
6775
6821
  }
6776
6822
  if (result.ok) {
6777
6823
  result.latency_ms = Math.round(performance.now() - start);
@@ -6790,7 +6836,7 @@ async function detectLocalProviderInfo(type, defaultBaseUrl) {
6790
6836
  models
6791
6837
  };
6792
6838
  }
6793
- async function detectAnthropic() {
6839
+ async function detectAnthropic(logger) {
6794
6840
  const now = Date.now();
6795
6841
  if (anthropicModelsCache && now - anthropicModelsCache.ts < ANTHROPIC_MODELS_CACHE_TTL_MS) {
6796
6842
  return { type: "anthropic", runtime: "claude-sdk", available: true, models: anthropicModelsCache.models };
@@ -6806,12 +6852,14 @@ async function detectAnthropic() {
6806
6852
  if (liveModels.length > 0) {
6807
6853
  models = liveModels;
6808
6854
  }
6809
- } catch {
6855
+ } catch (err) {
6856
+ const detail = errorMessage(err);
6857
+ logger?.warn("providers.anthropic.models-unavailable", "Anthropic model list unavailable", { error: detail });
6810
6858
  }
6811
6859
  anthropicModelsCache = { ts: now, models };
6812
6860
  return { type: "anthropic", runtime: "claude-sdk", available: true, models };
6813
6861
  }
6814
- async function detectRemoteProviderInfo(type, baseUrl) {
6862
+ async function detectRemoteProviderInfo(type, baseUrl, logger) {
6815
6863
  const authConfigured = Boolean(getRemoteProviderApiKey(type));
6816
6864
  let models = [];
6817
6865
  let available = false;
@@ -6819,8 +6867,10 @@ async function detectRemoteProviderInfo(type, baseUrl) {
6819
6867
  try {
6820
6868
  models = await fetchRemoteProviderModels(type, void 0, ANTHROPIC_MODELS_TIMEOUT_MS);
6821
6869
  available = true;
6822
- } catch {
6870
+ } catch (err) {
6823
6871
  available = false;
6872
+ const detail = errorMessage(err);
6873
+ logger?.warn(`providers.${type}.models-unavailable`, `${type} model list unavailable`, { error: detail });
6824
6874
  }
6825
6875
  }
6826
6876
  return {
@@ -7009,7 +7059,7 @@ async function registerScheduledTasks(powerManager, deps) {
7009
7059
  if (!lastEnabled) {
7010
7060
  logger.info(LOG_KINDS.AGENT_RUN, "Scheduled agent tasks disabled (agent.scheduled_tasks_enabled: false) \u2014 jobs registered but will no-op until enabled");
7011
7061
  }
7012
- const { loadAllTasks: loadAllTasks2 } = await import("./registry-M2Z5QBWH.js");
7062
+ const { loadAllTasks: loadAllTasks2 } = await import("./registry-F3THYC5M.js");
7013
7063
  const allTasks = Array.from(loadAllTasks2(definitionsDir, vaultDir).values());
7014
7064
  const taskAgentMap = /* @__PURE__ */ new Map();
7015
7065
  for (const task of allTasks) {
@@ -7045,7 +7095,7 @@ async function registerScheduledTasks(powerManager, deps) {
7045
7095
  lastEnabled = enabled;
7046
7096
  }
7047
7097
  if (!enabled) return;
7048
- const { runAgent: runAgent2 } = await import("./executor-F2YU7HXJ.js");
7098
+ const { runAgent: runAgent2 } = await import("./executor-DO6QFC6G.js");
7049
7099
  const resumableRun = getLatestResumableRunForTask(DEFAULT_AGENT_ID, taskName);
7050
7100
  if (resumableRun) {
7051
7101
  const resumed = await runAgent2(vaultDir, {
@@ -7053,7 +7103,8 @@ async function registerScheduledTasks(powerManager, deps) {
7053
7103
  task: taskName,
7054
7104
  resumeRunId: resumableRun.id,
7055
7105
  resumeMode: "scheduled",
7056
- embeddingManager
7106
+ embeddingManager,
7107
+ logger
7057
7108
  });
7058
7109
  logger.info(LOG_KINDS.AGENT_RUN, `Scheduled task ${taskName} resumed`, {
7059
7110
  status: resumed.status,
@@ -7084,7 +7135,8 @@ async function registerScheduledTasks(powerManager, deps) {
7084
7135
  task: taskName,
7085
7136
  instruction: built?.instruction,
7086
7137
  runContext: built?.context,
7087
- embeddingManager
7138
+ embeddingManager,
7139
+ logger
7088
7140
  });
7089
7141
  logger.info(LOG_KINDS.AGENT_RUN, `Scheduled task ${taskName} completed`, {
7090
7142
  status: result.status,
@@ -7873,7 +7925,7 @@ function isPlainObject(value) {
7873
7925
  }
7874
7926
 
7875
7927
  // src/daemon/api/run-serializer.ts
7876
- function buildPhaseCheckpointSummary(checkpointsRaw) {
7928
+ function buildPhaseCheckpointSummary(checkpointsRaw, logger) {
7877
7929
  if (!checkpointsRaw) return [];
7878
7930
  try {
7879
7931
  const parsed = JSON.parse(checkpointsRaw);
@@ -7885,7 +7937,9 @@ function buildPhaseCheckpointSummary(checkpointsRaw) {
7885
7937
  ...phase.costUsd !== void 0 ? { costUsd: phase.costUsd } : {},
7886
7938
  ...phase.costSource !== void 0 ? { costSource: phase.costSource } : {}
7887
7939
  }));
7888
- } catch {
7940
+ } catch (err) {
7941
+ const detail = errorMessage(err);
7942
+ logger?.warn("run-serializer.checkpoints-parse-failed", "checkpoints JSON parse failed", { error: detail });
7889
7943
  return [];
7890
7944
  }
7891
7945
  }
@@ -7905,7 +7959,8 @@ function serializeRun(run, opts = {}) {
7905
7959
  includeResumeFields = true,
7906
7960
  includePhaseCheckpoints = true,
7907
7961
  writeIntents,
7908
- duration_ms
7962
+ duration_ms,
7963
+ logger
7909
7964
  } = opts;
7910
7965
  const base = {
7911
7966
  id: run.id,
@@ -7944,7 +7999,7 @@ function serializeRun(run, opts = {}) {
7944
7999
  resumed_at: run.resumed_at,
7945
8000
  checkpoints: run.checkpoints
7946
8001
  } : {},
7947
- ...includePhaseCheckpoints ? { phase_checkpoints: buildPhaseCheckpointSummary(run.checkpoints) } : {},
8002
+ ...includePhaseCheckpoints ? { phase_checkpoints: buildPhaseCheckpointSummary(run.checkpoints, logger) } : {},
7948
8003
  ...writeIntents !== void 0 && writeIntents !== null ? { write_intents: writeIntents } : {},
7949
8004
  ...duration_ms !== void 0 ? { duration_ms } : {}
7950
8005
  };
@@ -8033,7 +8088,7 @@ function createAgentRunHandlers(deps) {
8033
8088
  };
8034
8089
  }
8035
8090
  }
8036
- const { runAgent: runAgent2 } = await import("./executor-F2YU7HXJ.js");
8091
+ const { runAgent: runAgent2 } = await import("./executor-DO6QFC6G.js");
8037
8092
  const resultPromise = runAgent2(vaultDir, {
8038
8093
  task,
8039
8094
  instruction,
@@ -8042,7 +8097,8 @@ function createAgentRunHandlers(deps) {
8042
8097
  runContext,
8043
8098
  dryRun,
8044
8099
  evaluationId,
8045
- executionOverrides
8100
+ executionOverrides,
8101
+ logger
8046
8102
  });
8047
8103
  const effectiveAgentId = agentId ?? "myco-agent";
8048
8104
  const runId = getLatestRunId(effectiveAgentId, task);
@@ -8094,7 +8150,7 @@ function createAgentRunHandlers(deps) {
8094
8150
  const filterOpts = { agent_id: agentId, status, task, search };
8095
8151
  const runs = listRuns({ ...filterOpts, limit, offset });
8096
8152
  const total = countRuns(filterOpts);
8097
- return { body: { runs: runs.map((run) => serializeRun(run)), total, offset, limit } };
8153
+ return { body: { runs: runs.map((run) => serializeRun(run, { logger })), total, offset, limit } };
8098
8154
  }
8099
8155
  async function handleGetRun(req) {
8100
8156
  const run = getRun(req.params.id);
@@ -8107,7 +8163,8 @@ function createAgentRunHandlers(deps) {
8107
8163
  body: {
8108
8164
  run: serializeRun(run, {
8109
8165
  writeIntents: { total, by_tool: byTool },
8110
- duration_ms: runDurationMs(run)
8166
+ duration_ms: runDurationMs(run),
8167
+ logger
8111
8168
  })
8112
8169
  }
8113
8170
  };
@@ -8121,14 +8178,15 @@ function createAgentRunHandlers(deps) {
8121
8178
  return { status: 400, body: { error: "Run is not resumable" } };
8122
8179
  }
8123
8180
  const { mode } = ResumeRunBody.parse(req.body ?? {});
8124
- const { runAgent: runAgent2 } = await import("./executor-F2YU7HXJ.js");
8181
+ const { runAgent: runAgent2 } = await import("./executor-DO6QFC6G.js");
8125
8182
  const resultPromise = runAgent2(vaultDir, {
8126
8183
  agentId: run.agent_id,
8127
8184
  task: run.task ?? void 0,
8128
8185
  instruction: run.instruction ?? void 0,
8129
8186
  resumeRunId: run.id,
8130
8187
  resumeMode: mode ?? "manual",
8131
- embeddingManager
8188
+ embeddingManager,
8189
+ logger
8132
8190
  });
8133
8191
  resultPromise.then((result) => {
8134
8192
  logger.info(LOG_KINDS.AGENT_RUN, "Agent run resumed", {
@@ -8351,7 +8409,7 @@ function createAgentEvaluationHandlers(deps) {
8351
8409
  });
8352
8410
  const dryRun = body.matrix.dryRun ?? false;
8353
8411
  void (async () => {
8354
- const { runAgent: runAgent2 } = await import("./executor-F2YU7HXJ.js");
8412
+ const { runAgent: runAgent2 } = await import("./executor-DO6QFC6G.js");
8355
8413
  let anyCompleted = false;
8356
8414
  let transitionedToRunning = false;
8357
8415
  const sharedPhases = body.matrix.phases;
@@ -8361,6 +8419,7 @@ function createAgentEvaluationHandlers(deps) {
8361
8419
  evaluationId: evalId,
8362
8420
  dryRun,
8363
8421
  embeddingManager,
8422
+ logger,
8364
8423
  executionOverrides: {
8365
8424
  ...cell.runtime ? { runtime: cell.runtime } : {},
8366
8425
  ...cell.reasoningLevel ? { reasoningLevel: cell.reasoningLevel } : {},
@@ -10352,7 +10411,7 @@ async function main() {
10352
10411
  const databaseManager = new DatabaseMaintenanceManager(vaultDbPath(vaultDir), vaultDir, logger);
10353
10412
  let definitionsDir;
10354
10413
  try {
10355
- const { registerBuiltInAgentsAndTasks, resolveDefinitionsDir: resolveDefinitionsDir2 } = await import("./loader-NAVVZK63.js");
10414
+ const { registerBuiltInAgentsAndTasks, resolveDefinitionsDir: resolveDefinitionsDir2 } = await import("./loader-UDNUMEDA.js");
10356
10415
  definitionsDir = resolveDefinitionsDir2();
10357
10416
  await registerBuiltInAgentsAndTasks(definitionsDir, vaultDir);
10358
10417
  logger.info(LOG_KINDS.AGENT_TASK, "Built-in agents and tasks registered");
@@ -10584,7 +10643,7 @@ async function main() {
10584
10643
  server.registerRoute("GET", "/api/logs/stream", handleLogStream);
10585
10644
  server.registerRoute("GET", "/api/logs/:id", handleLogDetail);
10586
10645
  server.registerRoute("POST", "/api/log", createLogIngestionHandler(logger));
10587
- server.registerRoute("GET", "/api/models", async (req) => handleGetModels(req));
10646
+ server.registerRoute("GET", "/api/models", async (req) => handleGetModels(req, logger));
10588
10647
  server.registerRoute("POST", "/api/restart", async (req) => handleRestart({ vaultDir, progressTracker }, req.body));
10589
10648
  const updateProjectRoot = path24.dirname(vaultDir);
10590
10649
  const updateHandlers = createUpdateHandlers({
@@ -10690,7 +10749,7 @@ async function main() {
10690
10749
  }
10691
10750
  return result;
10692
10751
  });
10693
- server.registerRoute("GET", "/api/providers", async () => handleGetProviders());
10752
+ server.registerRoute("GET", "/api/providers", async () => handleGetProviders(logger));
10694
10753
  server.registerRoute("POST", "/api/providers/test", async (req) => handleTestProvider(req));
10695
10754
  server.registerRoute("GET", "/api/providers/secrets", async () => handleGetProviderSecrets(vaultDir));
10696
10755
  server.registerRoute("PUT", "/api/providers/secrets/:provider", async (req) => handlePutProviderSecret(vaultDir, req));
@@ -10855,4 +10914,4 @@ export {
10855
10914
  handleUserPrompt,
10856
10915
  main
10857
10916
  };
10858
- //# sourceMappingURL=main-5PRQNEEE.js.map
10917
+ //# sourceMappingURL=main-4J4QZZTZ.js.map