@goondocks/myco 0.19.1 → 0.19.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 (131) hide show
  1. package/dist/{agent-run-BV3ATBWB.js → agent-run-4QUP3G4V.js} +5 -5
  2. package/dist/{agent-tasks-I5SMLWVL.js → agent-tasks-NVOWYBLB.js} +5 -5
  3. package/dist/{chunk-4NIMDUYW.js → chunk-3C4LT4BW.js} +9 -2
  4. package/dist/chunk-3C4LT4BW.js.map +1 -0
  5. package/dist/{chunk-GVBVHYOT.js → chunk-7ONVLO43.js} +10 -5
  6. package/dist/chunk-7ONVLO43.js.map +1 -0
  7. package/dist/{chunk-VNL7KN4V.js → chunk-D5X4MMKR.js} +2 -2
  8. package/dist/{chunk-46AQ7D23.js → chunk-DDOPAV5O.js} +2 -2
  9. package/dist/{chunk-MVBCON4D.js → chunk-DURKJTVO.js} +2 -2
  10. package/dist/{chunk-PZEAO35P.js → chunk-FGKCE5AE.js} +6 -1
  11. package/dist/chunk-FGKCE5AE.js.map +1 -0
  12. package/dist/{chunk-WGIQOJKJ.js → chunk-IXVAYN3P.js} +3 -3
  13. package/dist/{chunk-OR4XUYBJ.js → chunk-KYH4V4ML.js} +2 -2
  14. package/dist/{chunk-CDM6ZLMZ.js → chunk-PLYWR5D7.js} +3 -3
  15. package/dist/{chunk-YDU3AHSW.js → chunk-Q4QD6LJT.js} +4 -4
  16. package/dist/{chunk-HQLPB346.js → chunk-Q6OEZM3S.js} +25 -1
  17. package/dist/chunk-Q6OEZM3S.js.map +1 -0
  18. package/dist/{chunk-NU74DHV3.js → chunk-QMTXVFA7.js} +2 -2
  19. package/dist/{chunk-ULH667GT.js → chunk-THZKOZ4M.js} +417 -408
  20. package/dist/chunk-THZKOZ4M.js.map +1 -0
  21. package/dist/{chunk-E7NUADTQ.js → chunk-UUHLLQXO.js} +2 -1
  22. package/dist/{chunk-E7NUADTQ.js.map → chunk-UUHLLQXO.js.map} +1 -1
  23. package/dist/{chunk-AOCBCPAP.js → chunk-XMPCB2P2.js} +2 -2
  24. package/dist/{cli-2BW2PZMP.js → cli-GDHPLWS7.js} +39 -39
  25. package/dist/{client-HMGTCKRW.js → client-UCELFVZF.js} +4 -4
  26. package/dist/{config-LVXDVUYY.js → config-2KQ45OC5.js} +3 -3
  27. package/dist/{detect-providers-CDG6BKHU.js → detect-providers-2EY55EHK.js} +2 -2
  28. package/dist/{doctor-AK3W5FMN.js → doctor-7ATZHQIY.js} +9 -9
  29. package/dist/{executor-YLC7DHBY.js → executor-YO4RIKJQ.js} +51 -31
  30. package/dist/executor-YO4RIKJQ.js.map +1 -0
  31. package/dist/{init-4FV7ODOK.js → init-OK5QJISX.js} +9 -9
  32. package/dist/{llm-INLSGEXY.js → llm-SWDDQQWY.js} +2 -2
  33. package/dist/{loader-HEGKUTGI.js → loader-AAZ6VUIA.js} +3 -3
  34. package/dist/{loader-2ULW2FZS.js → loader-JG5OBPB6.js} +3 -3
  35. package/dist/{logs-TMKNLSJY.js → logs-KNKPQE5A.js} +3 -3
  36. package/dist/{main-IV64U72E.js → main-XWJGDDMZ.js} +96 -58
  37. package/dist/main-XWJGDDMZ.js.map +1 -0
  38. package/dist/{open-YSB36HP7.js → open-5WOOLDUZ.js} +5 -5
  39. package/dist/{post-compact-5OB4LRLA.js → post-compact-TLIJUMKZ.js} +5 -5
  40. package/dist/{post-tool-use-2UOTDXXS.js → post-tool-use-TMYBAFL6.js} +4 -4
  41. package/dist/{post-tool-use-failure-ZJQGHBMW.js → post-tool-use-failure-P7YHR3EO.js} +5 -5
  42. package/dist/{pre-compact-WD3FYUZ4.js → pre-compact-7RUNVXOE.js} +5 -5
  43. package/dist/{provider-check-V3NSOLZQ.js → provider-check-WCM3SDTM.js} +2 -2
  44. package/dist/{registry-XGRKLHEK.js → registry-OCM4WAPJ.js} +4 -4
  45. package/dist/{remove-L6T4LMFP.js → remove-ISEIHY5H.js} +6 -6
  46. package/dist/{resolution-events-PZFKMZHM.js → resolution-events-PYLSI6QT.js} +2 -2
  47. package/dist/{restart-4UGLWER2.js → restart-AK24G2ME.js} +6 -6
  48. package/dist/{search-MJGMQZ5N.js → search-RVRUKLEH.js} +6 -6
  49. package/dist/{server-MVBNGXLQ.js → server-GBWW5MBT.js} +4 -4
  50. package/dist/{session-GLKHGGPJ.js → session-L7PGGZTO.js} +6 -6
  51. package/dist/{session-end-ISPUQH3X.js → session-end-YURB7CFB.js} +4 -4
  52. package/dist/{session-start-VF26JMWW.js → session-start-4AMHWOBP.js} +7 -7
  53. package/dist/{setup-llm-7RCROQLP.js → setup-llm-2UOSVGAY.js} +6 -6
  54. package/dist/src/agent/definitions/tasks/title-summary.yaml +9 -8
  55. package/dist/src/cli.js +1 -1
  56. package/dist/src/daemon/main.js +1 -1
  57. package/dist/src/hooks/post-tool-use.js +1 -1
  58. package/dist/src/hooks/session-end.js +1 -1
  59. package/dist/src/hooks/session-start.js +1 -1
  60. package/dist/src/hooks/stop.js +1 -1
  61. package/dist/src/hooks/user-prompt-submit.js +1 -1
  62. package/dist/src/mcp/server.js +1 -1
  63. package/dist/{stats-N7FYQSAY.js → stats-5IEO4KWT.js} +7 -7
  64. package/dist/{stop-LVRFMSGO.js → stop-KRR3EBB2.js} +4 -4
  65. package/dist/{stop-failure-AXU5LOBN.js → stop-failure-6RZAWIDM.js} +5 -5
  66. package/dist/{subagent-start-KDJIQXQC.js → subagent-start-R62O6YPW.js} +5 -5
  67. package/dist/{subagent-stop-2T2H2TYE.js → subagent-stop-MP2YDF6D.js} +5 -5
  68. package/dist/{task-completed-XHQ3XMYJ.js → task-completed-KCMJYZT7.js} +5 -5
  69. package/dist/{team-GM2VZOVM.js → team-M6TC4TFC.js} +4 -4
  70. package/dist/ui/assets/{index-JtMb9fMt.js → index-CwPuGRsJ.js} +102 -102
  71. package/dist/ui/index.html +1 -1
  72. package/dist/{update-R6VHTRQA.js → update-L5JXTKPL.js} +6 -6
  73. package/dist/{user-prompt-submit-EK2MDBLQ.js → user-prompt-submit-L6JNZ7QY.js} +4 -4
  74. package/dist/{verify-NK46D4II.js → verify-CJHF23QH.js} +3 -3
  75. package/dist/{version-LTTJPC4F.js → version-PFOYY6HT.js} +2 -2
  76. package/package.json +1 -1
  77. package/dist/chunk-4NIMDUYW.js.map +0 -1
  78. package/dist/chunk-GVBVHYOT.js.map +0 -1
  79. package/dist/chunk-HQLPB346.js.map +0 -1
  80. package/dist/chunk-PZEAO35P.js.map +0 -1
  81. package/dist/chunk-ULH667GT.js.map +0 -1
  82. package/dist/executor-YLC7DHBY.js.map +0 -1
  83. package/dist/main-IV64U72E.js.map +0 -1
  84. /package/dist/{agent-run-BV3ATBWB.js.map → agent-run-4QUP3G4V.js.map} +0 -0
  85. /package/dist/{agent-tasks-I5SMLWVL.js.map → agent-tasks-NVOWYBLB.js.map} +0 -0
  86. /package/dist/{chunk-VNL7KN4V.js.map → chunk-D5X4MMKR.js.map} +0 -0
  87. /package/dist/{chunk-46AQ7D23.js.map → chunk-DDOPAV5O.js.map} +0 -0
  88. /package/dist/{chunk-MVBCON4D.js.map → chunk-DURKJTVO.js.map} +0 -0
  89. /package/dist/{chunk-WGIQOJKJ.js.map → chunk-IXVAYN3P.js.map} +0 -0
  90. /package/dist/{chunk-OR4XUYBJ.js.map → chunk-KYH4V4ML.js.map} +0 -0
  91. /package/dist/{chunk-CDM6ZLMZ.js.map → chunk-PLYWR5D7.js.map} +0 -0
  92. /package/dist/{chunk-YDU3AHSW.js.map → chunk-Q4QD6LJT.js.map} +0 -0
  93. /package/dist/{chunk-NU74DHV3.js.map → chunk-QMTXVFA7.js.map} +0 -0
  94. /package/dist/{chunk-AOCBCPAP.js.map → chunk-XMPCB2P2.js.map} +0 -0
  95. /package/dist/{cli-2BW2PZMP.js.map → cli-GDHPLWS7.js.map} +0 -0
  96. /package/dist/{client-HMGTCKRW.js.map → client-UCELFVZF.js.map} +0 -0
  97. /package/dist/{config-LVXDVUYY.js.map → config-2KQ45OC5.js.map} +0 -0
  98. /package/dist/{detect-providers-CDG6BKHU.js.map → detect-providers-2EY55EHK.js.map} +0 -0
  99. /package/dist/{doctor-AK3W5FMN.js.map → doctor-7ATZHQIY.js.map} +0 -0
  100. /package/dist/{init-4FV7ODOK.js.map → init-OK5QJISX.js.map} +0 -0
  101. /package/dist/{llm-INLSGEXY.js.map → llm-SWDDQQWY.js.map} +0 -0
  102. /package/dist/{loader-2ULW2FZS.js.map → loader-AAZ6VUIA.js.map} +0 -0
  103. /package/dist/{loader-HEGKUTGI.js.map → loader-JG5OBPB6.js.map} +0 -0
  104. /package/dist/{logs-TMKNLSJY.js.map → logs-KNKPQE5A.js.map} +0 -0
  105. /package/dist/{open-YSB36HP7.js.map → open-5WOOLDUZ.js.map} +0 -0
  106. /package/dist/{post-compact-5OB4LRLA.js.map → post-compact-TLIJUMKZ.js.map} +0 -0
  107. /package/dist/{post-tool-use-2UOTDXXS.js.map → post-tool-use-TMYBAFL6.js.map} +0 -0
  108. /package/dist/{post-tool-use-failure-ZJQGHBMW.js.map → post-tool-use-failure-P7YHR3EO.js.map} +0 -0
  109. /package/dist/{pre-compact-WD3FYUZ4.js.map → pre-compact-7RUNVXOE.js.map} +0 -0
  110. /package/dist/{provider-check-V3NSOLZQ.js.map → provider-check-WCM3SDTM.js.map} +0 -0
  111. /package/dist/{registry-XGRKLHEK.js.map → registry-OCM4WAPJ.js.map} +0 -0
  112. /package/dist/{remove-L6T4LMFP.js.map → remove-ISEIHY5H.js.map} +0 -0
  113. /package/dist/{resolution-events-PZFKMZHM.js.map → resolution-events-PYLSI6QT.js.map} +0 -0
  114. /package/dist/{restart-4UGLWER2.js.map → restart-AK24G2ME.js.map} +0 -0
  115. /package/dist/{search-MJGMQZ5N.js.map → search-RVRUKLEH.js.map} +0 -0
  116. /package/dist/{server-MVBNGXLQ.js.map → server-GBWW5MBT.js.map} +0 -0
  117. /package/dist/{session-GLKHGGPJ.js.map → session-L7PGGZTO.js.map} +0 -0
  118. /package/dist/{session-end-ISPUQH3X.js.map → session-end-YURB7CFB.js.map} +0 -0
  119. /package/dist/{session-start-VF26JMWW.js.map → session-start-4AMHWOBP.js.map} +0 -0
  120. /package/dist/{setup-llm-7RCROQLP.js.map → setup-llm-2UOSVGAY.js.map} +0 -0
  121. /package/dist/{stats-N7FYQSAY.js.map → stats-5IEO4KWT.js.map} +0 -0
  122. /package/dist/{stop-LVRFMSGO.js.map → stop-KRR3EBB2.js.map} +0 -0
  123. /package/dist/{stop-failure-AXU5LOBN.js.map → stop-failure-6RZAWIDM.js.map} +0 -0
  124. /package/dist/{subagent-start-KDJIQXQC.js.map → subagent-start-R62O6YPW.js.map} +0 -0
  125. /package/dist/{subagent-stop-2T2H2TYE.js.map → subagent-stop-MP2YDF6D.js.map} +0 -0
  126. /package/dist/{task-completed-XHQ3XMYJ.js.map → task-completed-KCMJYZT7.js.map} +0 -0
  127. /package/dist/{team-GM2VZOVM.js.map → team-M6TC4TFC.js.map} +0 -0
  128. /package/dist/{update-R6VHTRQA.js.map → update-L5JXTKPL.js.map} +0 -0
  129. /package/dist/{user-prompt-submit-EK2MDBLQ.js.map → user-prompt-submit-L6JNZ7QY.js.map} +0 -0
  130. /package/dist/{verify-NK46D4II.js.map → verify-CJHF23QH.js.map} +0 -0
  131. /package/dist/{version-LTTJPC4F.js.map → version-PFOYY6HT.js.map} +0 -0
@@ -7,9 +7,9 @@ import {
7
7
  updateBackupConfig,
8
8
  updateConfig,
9
9
  updateTeamConfig
10
- } from "./chunk-4NIMDUYW.js";
10
+ } from "./chunk-3C4LT4BW.js";
11
11
  import "./chunk-I54KLC6H.js";
12
- import "./chunk-E7NUADTQ.js";
12
+ import "./chunk-UUHLLQXO.js";
13
13
  import "./chunk-6LQIMRTC.js";
14
14
  import "./chunk-ODXLRR4U.js";
15
15
  import "./chunk-U6PF3YII.js";
@@ -23,4 +23,4 @@ export {
23
23
  updateConfig,
24
24
  updateTeamConfig
25
25
  };
26
- //# sourceMappingURL=loader-2ULW2FZS.js.map
26
+ //# sourceMappingURL=loader-JG5OBPB6.js.map
@@ -1,13 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
2
  import {
3
3
  LEVEL_ORDER
4
- } from "./chunk-MVBCON4D.js";
4
+ } from "./chunk-DURKJTVO.js";
5
5
  import {
6
6
  formatLogLine,
7
7
  parseIntFlag,
8
8
  parseStringFlag
9
9
  } from "./chunk-SAKJMNSR.js";
10
- import "./chunk-E7NUADTQ.js";
10
+ import "./chunk-UUHLLQXO.js";
11
11
  import "./chunk-PZUWP5VK.js";
12
12
 
13
13
  // src/logs/reader.ts
@@ -157,4 +157,4 @@ function run(args, vaultDir) {
157
157
  export {
158
158
  run
159
159
  };
160
- //# sourceMappingURL=logs-TMKNLSJY.js.map
160
+ //# sourceMappingURL=logs-KNKPQE5A.js.map
@@ -2,7 +2,7 @@ import { createRequire as __cr } from 'node:module'; const require = __cr(import
2
2
  import {
3
3
  DaemonLogger,
4
4
  LEVEL_ORDER
5
- } from "./chunk-MVBCON4D.js";
5
+ } from "./chunk-DURKJTVO.js";
6
6
  import {
7
7
  withTaskConfig
8
8
  } from "./chunk-GFR542SM.js";
@@ -15,7 +15,7 @@ import {
15
15
  getEmbeddingQueueDepth,
16
16
  getUnembedded,
17
17
  markEmbedded
18
- } from "./chunk-WGIQOJKJ.js";
18
+ } from "./chunk-IXVAYN3P.js";
19
19
  import {
20
20
  getTeamPackageVersion,
21
21
  loadSecrets,
@@ -23,11 +23,7 @@ import {
23
23
  readSecrets,
24
24
  resolveVaultConfigPath,
25
25
  writeSecret
26
- } from "./chunk-CDM6ZLMZ.js";
27
- import {
28
- Anthropic,
29
- createEmbeddingProvider
30
- } from "./chunk-3J6TUJSV.js";
26
+ } from "./chunk-PLYWR5D7.js";
31
27
  import {
32
28
  buildTaskInstruction,
33
29
  closeOpenBatches,
@@ -75,24 +71,24 @@ import {
75
71
  setResponseSummary,
76
72
  updateCandidate,
77
73
  updateNotificationStatus
78
- } from "./chunk-ULH667GT.js";
74
+ } from "./chunk-THZKOZ4M.js";
79
75
  import {
80
76
  fullTextSearch,
81
77
  hydrateSearchResults
82
- } from "./chunk-GVBVHYOT.js";
78
+ } from "./chunk-7ONVLO43.js";
83
79
  import {
84
80
  copyTaskToUser,
85
81
  deleteUserTask,
86
82
  loadAllTasks,
87
83
  validateTaskName,
88
84
  writeUserTask
89
- } from "./chunk-OR4XUYBJ.js";
85
+ } from "./chunk-KYH4V4ML.js";
90
86
  import {
91
87
  AgentTaskSchema,
92
88
  registerAgent,
93
89
  resolveDefinitionsDir,
94
90
  taskFromParsed
95
- } from "./chunk-YDU3AHSW.js";
91
+ } from "./chunk-Q4QD6LJT.js";
96
92
  import {
97
93
  listTurnsByRun
98
94
  } from "./chunk-QLCD77AN.js";
@@ -100,6 +96,10 @@ import {
100
96
  cleanupStagedSkill,
101
97
  listStaleStagingDirs
102
98
  } from "./chunk-U5EW2VIQ.js";
99
+ import {
100
+ Anthropic,
101
+ createEmbeddingProvider
102
+ } from "./chunk-3J6TUJSV.js";
103
103
  import {
104
104
  getMachineId
105
105
  } from "./chunk-ENWBFX7F.js";
@@ -109,7 +109,7 @@ import {
109
109
  listBufferSessionIds
110
110
  } from "./chunk-V7XG6V6C.js";
111
111
  import "./chunk-POEPHBQK.js";
112
- import "./chunk-AOCBCPAP.js";
112
+ import "./chunk-XMPCB2P2.js";
113
113
  import "./chunk-SAKJMNSR.js";
114
114
  import "./chunk-WYOE4IAX.js";
115
115
  import {
@@ -125,7 +125,7 @@ import {
125
125
  insertSpore,
126
126
  listSpores,
127
127
  updateSporeStatus
128
- } from "./chunk-PZEAO35P.js";
128
+ } from "./chunk-FGKCE5AE.js";
129
129
  import {
130
130
  closeSession,
131
131
  countSessions,
@@ -134,9 +134,10 @@ import {
134
134
  getSessionImpact,
135
135
  incrementSessionToolCount,
136
136
  listSessions,
137
+ reactivateSessionIfCompleted,
137
138
  updateSession,
138
139
  upsertSession
139
- } from "./chunk-HQLPB346.js";
140
+ } from "./chunk-Q6OEZM3S.js";
140
141
  import {
141
142
  backfillUnsynced,
142
143
  countDeadLettered,
@@ -167,7 +168,7 @@ import {
167
168
  updateBackupConfig,
168
169
  updateConfig,
169
170
  updateTeamConfig
170
- } from "./chunk-4NIMDUYW.js";
171
+ } from "./chunk-3C4LT4BW.js";
171
172
  import {
172
173
  closeDatabase,
173
174
  getDatabase,
@@ -176,10 +177,10 @@ import {
176
177
  } from "./chunk-MYX5NCRH.js";
177
178
  import {
178
179
  resolveCliEntryPath
179
- } from "./chunk-NU74DHV3.js";
180
+ } from "./chunk-QMTXVFA7.js";
180
181
  import {
181
182
  getPluginVersion
182
- } from "./chunk-46AQ7D23.js";
183
+ } from "./chunk-DDOPAV5O.js";
183
184
  import {
184
185
  loadManifests
185
186
  } from "./chunk-UVKQ62II.js";
@@ -243,7 +244,7 @@ import {
243
244
  import {
244
245
  LOG_KINDS,
245
246
  kindToComponent
246
- } from "./chunk-E7NUADTQ.js";
247
+ } from "./chunk-UUHLLQXO.js";
247
248
  import {
248
249
  require_dist
249
250
  } from "./chunk-6LQIMRTC.js";
@@ -2729,7 +2730,7 @@ function createTeamHandlers(deps) {
2729
2730
  return { body: { retried: count } };
2730
2731
  }
2731
2732
  async function handleUpgradeWorker(_req) {
2732
- const { upgradeWorker } = await import("./team-GM2VZOVM.js");
2733
+ const { upgradeWorker } = await import("./team-M6TC4TFC.js");
2733
2734
  logger.info("team-sync.upgrade.start", "Starting worker upgrade");
2734
2735
  const result = upgradeWorker(vaultDir);
2735
2736
  if (!result.success) {
@@ -3739,6 +3740,27 @@ async function cleanupAfterSessionCascade(sessionId, result, embeddingManager, v
3739
3740
  }
3740
3741
  }
3741
3742
 
3743
+ // src/daemon/trigger-title-summary.ts
3744
+ async function triggerTitleSummary(sessionId, deps) {
3745
+ const { vaultDir, embeddingManager, config, logger } = deps;
3746
+ if (config.agent.summary_batch_interval <= 0) return;
3747
+ if (config.agent.event_tasks_enabled === false) return;
3748
+ try {
3749
+ const { runAgent } = await import("./executor-YO4RIKJQ.js");
3750
+ runAgent(vaultDir, {
3751
+ task: "title-summary",
3752
+ instruction: `Process session ${sessionId} only`,
3753
+ embeddingManager
3754
+ }).catch((err) => {
3755
+ logger.warn(LOG_KINDS.AGENT_ERROR, "Title-summary task failed", {
3756
+ session_id: sessionId,
3757
+ error: String(err)
3758
+ });
3759
+ });
3760
+ } catch {
3761
+ }
3762
+ }
3763
+
3742
3764
  // src/daemon/api/sessions.ts
3743
3765
  var DEFAULT_LIST_LIMIT3 = 50;
3744
3766
  var DEFAULT_LIST_OFFSET2 = 0;
@@ -3789,7 +3811,7 @@ async function handleGetSessionPlans(req) {
3789
3811
  return { body: plans };
3790
3812
  }
3791
3813
  function createSessionMutationHandlers(deps) {
3792
- const { embeddingManager, vaultDir, logger } = deps;
3814
+ const { embeddingManager, vaultDir, logger, config } = deps;
3793
3815
  async function handleDeleteSession(req) {
3794
3816
  const sessionId = req.params.id;
3795
3817
  const result = deleteSessionCascade(sessionId);
@@ -3802,6 +3824,24 @@ function createSessionMutationHandlers(deps) {
3802
3824
  });
3803
3825
  return { body: { ok: true, counts: result.counts } };
3804
3826
  }
3827
+ async function handleCompleteSession(req) {
3828
+ const sessionId = req.params.id;
3829
+ const session = getSession(sessionId);
3830
+ if (!session) return { status: 404, body: { error: "Session not found" } };
3831
+ const wasActive = session.status === "active";
3832
+ if (wasActive) {
3833
+ updateSession(sessionId, {
3834
+ status: "completed",
3835
+ ended_at: session.ended_at ?? epochSeconds()
3836
+ });
3837
+ }
3838
+ await triggerTitleSummary(sessionId, { vaultDir, embeddingManager, config, logger });
3839
+ logger.info(LOG_KINDS.API_SESSION_COMPLETE, "Session manually completed", {
3840
+ session_id: sessionId,
3841
+ was_active: wasActive
3842
+ });
3843
+ return { body: { ok: true, was_active: wasActive } };
3844
+ }
3805
3845
  async function handleGetSessionImpact(req) {
3806
3846
  const sessionId = req.params.id;
3807
3847
  const session = getSession(sessionId);
@@ -3809,7 +3849,7 @@ function createSessionMutationHandlers(deps) {
3809
3849
  const impact = getSessionImpact(sessionId);
3810
3850
  return { body: impact };
3811
3851
  }
3812
- return { handleDeleteSession, handleGetSessionImpact };
3852
+ return { handleDeleteSession, handleCompleteSession, handleGetSessionImpact };
3813
3853
  }
3814
3854
 
3815
3855
  // src/daemon/api/mycelium.ts
@@ -6176,7 +6216,7 @@ async function registerScheduledTasks(powerManager, deps) {
6176
6216
  logger.info(LOG_KINDS.AGENT_RUN, "Scheduled agent tasks disabled globally (agent.scheduled_tasks_enabled: false)");
6177
6217
  return;
6178
6218
  }
6179
- const { loadAllTasks: loadAllTasks2 } = await import("./registry-XGRKLHEK.js");
6219
+ const { loadAllTasks: loadAllTasks2 } = await import("./registry-OCM4WAPJ.js");
6180
6220
  const allTasks = Array.from(loadAllTasks2(definitionsDir, vaultDir).values());
6181
6221
  const taskAgentMap = /* @__PURE__ */ new Map();
6182
6222
  for (const task of allTasks) {
@@ -6202,7 +6242,7 @@ async function registerScheduledTasks(powerManager, deps) {
6202
6242
  else runningTasks.delete(name);
6203
6243
  },
6204
6244
  runTask: async (taskName) => {
6205
- const { runAgent } = await import("./executor-YLC7DHBY.js");
6245
+ const { runAgent } = await import("./executor-YO4RIKJQ.js");
6206
6246
  const taskConfig = config.agent.tasks?.[taskName];
6207
6247
  const projectRoot = resolve(vaultDir, "..");
6208
6248
  const built = buildTaskInstruction(taskName, taskConfig?.params, taskAgentMap.get(taskName), projectRoot, embeddingManager);
@@ -6269,7 +6309,13 @@ async function registerScheduledTasks(powerManager, deps) {
6269
6309
  preConditions: {
6270
6310
  "has-unprocessed-batches": () => {
6271
6311
  const row = getDatabase().prepare(
6272
- "SELECT 1 FROM prompt_batches WHERE processed = 0 LIMIT 1"
6312
+ `SELECT 1 FROM prompt_batches pb
6313
+ WHERE pb.processed = 0
6314
+ AND EXISTS (
6315
+ SELECT 1 FROM sessions s
6316
+ WHERE s.id = pb.session_id AND s.status != 'active'
6317
+ )
6318
+ LIMIT 1`
6273
6319
  ).get();
6274
6320
  return row !== void 0;
6275
6321
  },
@@ -6372,7 +6418,7 @@ function createMcpProxyHandlers(deps) {
6372
6418
  name: USER_AGENT_NAME,
6373
6419
  created_at: now
6374
6420
  });
6375
- const { insertResolutionEvent } = await import("./resolution-events-PZFKMZHM.js");
6421
+ const { insertResolutionEvent } = await import("./resolution-events-PYLSI6QT.js");
6376
6422
  const resolutionId = `res-${randomBytes(RESOLUTION_ID_RANDOM_BYTES).toString("hex")}`;
6377
6423
  insertResolutionEvent({
6378
6424
  id: resolutionId,
@@ -6500,7 +6546,7 @@ function createAgentRunHandlers(deps) {
6500
6546
  };
6501
6547
  }
6502
6548
  }
6503
- const { runAgent } = await import("./executor-YLC7DHBY.js");
6549
+ const { runAgent } = await import("./executor-YO4RIKJQ.js");
6504
6550
  const resultPromise = runAgent(vaultDir, {
6505
6551
  task,
6506
6552
  instruction,
@@ -6753,22 +6799,18 @@ var PowerManager = class {
6753
6799
  };
6754
6800
 
6755
6801
  // src/daemon/jobs/session-maintenance.ts
6756
- var STALE_SESSION_THRESHOLD_S = STALE_SESSION_THRESHOLD_MS / MS_PER_SECOND;
6757
- function completeStaleActiveSessions(registeredSessionIds) {
6802
+ function completeStaleActiveSessions(thresholdSeconds = STALE_SESSION_THRESHOLD_MS / MS_PER_SECOND) {
6758
6803
  const db = getDatabase();
6759
- const cutoff = epochSeconds() - STALE_SESSION_THRESHOLD_S;
6760
- const excludePlaceholders = registeredSessionIds.length > 0 ? `AND id NOT IN (${registeredSessionIds.map(() => "?").join(", ")})` : "";
6761
- const params = [cutoff, ...registeredSessionIds];
6804
+ const cutoff = epochSeconds() - thresholdSeconds;
6762
6805
  const info = db.prepare(
6763
6806
  `UPDATE sessions
6764
- SET status = 'completed'
6807
+ SET status = 'completed', ended_at = COALESCE(ended_at, ?)
6765
6808
  WHERE status = 'active'
6766
6809
  AND COALESCE(
6767
6810
  (SELECT MAX(pb.started_at) FROM prompt_batches pb WHERE pb.session_id = sessions.id),
6768
6811
  sessions.started_at
6769
- ) < ?
6770
- ${excludePlaceholders}`
6771
- ).run(...params);
6812
+ ) < ?`
6813
+ ).run(epochSeconds(), cutoff);
6772
6814
  return info.changes;
6773
6815
  }
6774
6816
  function findDeadSessionIds(registeredSessionIds) {
@@ -6784,9 +6826,10 @@ function findDeadSessionIds(registeredSessionIds) {
6784
6826
  return rows.map((r) => r.id);
6785
6827
  }
6786
6828
  async function runSessionMaintenance(deps) {
6787
- const { logger, registeredSessionIds, embeddingManager, vaultDir } = deps;
6829
+ const { logger, registeredSessionIds, embeddingManager, vaultDir, staleThresholdMs } = deps;
6788
6830
  const registered = registeredSessionIds();
6789
- const completed = completeStaleActiveSessions(registered);
6831
+ const thresholdSeconds = (staleThresholdMs ?? STALE_SESSION_THRESHOLD_MS) / MS_PER_SECOND;
6832
+ const completed = completeStaleActiveSessions(thresholdSeconds);
6790
6833
  if (completed > 0) {
6791
6834
  logger.info(LOG_KINDS.MAINTENANCE_SESSION, "Completed stale sessions", { count: completed });
6792
6835
  }
@@ -6833,7 +6876,8 @@ function registerPowerJobs(powerManager, deps) {
6833
6876
  logger,
6834
6877
  registeredSessionIds: () => registry.sessions,
6835
6878
  embeddingManager,
6836
- vaultDir
6879
+ vaultDir,
6880
+ staleThresholdMs: config.daemon.stale_session_threshold_ms
6837
6881
  })
6838
6882
  });
6839
6883
  powerManager.register({
@@ -7319,19 +7363,7 @@ function createStopProcessor(deps) {
7319
7363
  transcript_path: external_exports.string().nullish(),
7320
7364
  last_assistant_message: external_exports.string().nullish()
7321
7365
  });
7322
- async function triggerTitleSummary(sessionId) {
7323
- if (config.agent.summary_batch_interval <= 0) return;
7324
- if (config.agent.event_tasks_enabled === false) return;
7325
- try {
7326
- const { runAgent } = await import("./executor-YLC7DHBY.js");
7327
- runAgent(vaultDir, {
7328
- task: "title-summary",
7329
- instruction: `Process session ${sessionId} only`,
7330
- embeddingManager
7331
- }).catch((err) => logger.warn(LOG_KINDS.AGENT_ERROR, "Title-summary task failed", { error: String(err) }));
7332
- } catch {
7333
- }
7334
- }
7366
+ const triggerTitleSummary2 = (sessionId) => triggerTitleSummary(sessionId, { vaultDir, embeddingManager, config, logger });
7335
7367
  async function processStopEvent(sessionId, user, sessionMeta, hookTranscriptPath, lastAssistantMessage) {
7336
7368
  const transcriptResult = transcriptMiner.getAllTurnsWithSource(sessionId, hookTranscriptPath);
7337
7369
  let allTurns = transcriptResult.turns;
@@ -7467,7 +7499,7 @@ function createStopProcessor(deps) {
7467
7499
  }
7468
7500
  }
7469
7501
  if (!hasTitle) {
7470
- triggerTitleSummary(sessionId);
7502
+ triggerTitleSummary2(sessionId);
7471
7503
  }
7472
7504
  for (let i = 0; i < allTurns.length; i++) {
7473
7505
  const turn = allTurns[i];
@@ -7544,7 +7576,7 @@ function createStopProcessor(deps) {
7544
7576
  sessionTitleCache.delete(sessionId);
7545
7577
  },
7546
7578
  getActiveProcessing: () => activeStopProcessing,
7547
- triggerTitleSummary
7579
+ triggerTitleSummary: triggerTitleSummary2
7548
7580
  };
7549
7581
  }
7550
7582
 
@@ -7563,7 +7595,7 @@ function createEventDispatcher(deps) {
7563
7595
  vaultDir,
7564
7596
  reconcileSession,
7565
7597
  planWatchConfig,
7566
- triggerTitleSummary
7598
+ triggerTitleSummary: triggerTitleSummary2
7567
7599
  } = deps;
7568
7600
  const projectRoot = process.cwd();
7569
7601
  return async (req) => {
@@ -7607,6 +7639,11 @@ function createEventDispatcher(deps) {
7607
7639
  prompt_preview: promptText.slice(0, LOG_PROMPT_PREVIEW_CHARS),
7608
7640
  prompt_length: promptText.length
7609
7641
  });
7642
+ if (reactivateSessionIfCompleted(event.session_id)) {
7643
+ logger.info(LOG_KINDS.LIFECYCLE_AUTO_REGISTER, "Reactivated completed session on new activity", {
7644
+ session_id: event.session_id
7645
+ });
7646
+ }
7610
7647
  try {
7611
7648
  const { batchId, promptNumber } = handleUserPrompt(event.session_id, promptText || void 0);
7612
7649
  logger.debug(LOG_KINDS.CAPTURE_BATCH, "Batch opened", { session_id: event.session_id, batch_id: batchId, prompt_number: promptNumber });
@@ -7623,7 +7660,7 @@ function createEventDispatcher(deps) {
7623
7660
  const batchCount = promptNumber;
7624
7661
  const summaryInterval = config.agent.summary_batch_interval;
7625
7662
  if (summaryInterval > 0 && batchCount > 0 && batchCount % summaryInterval === 0) {
7626
- triggerTitleSummary(event.session_id);
7663
+ triggerTitleSummary2(event.session_id);
7627
7664
  }
7628
7665
  } catch (err) {
7629
7666
  logger.warn(LOG_KINDS.CAPTURE_BATCH, "Failed to open batch", { session_id: event.session_id, error: err.message });
@@ -7931,7 +7968,7 @@ async function main() {
7931
7968
  const databaseManager = new DatabaseMaintenanceManager(vaultDbPath(vaultDir), vaultDir, logger);
7932
7969
  let definitionsDir;
7933
7970
  try {
7934
- const { registerBuiltInAgentsAndTasks, resolveDefinitionsDir: resolveDefinitionsDir2 } = await import("./loader-HEGKUTGI.js");
7971
+ const { registerBuiltInAgentsAndTasks, resolveDefinitionsDir: resolveDefinitionsDir2 } = await import("./loader-AAZ6VUIA.js");
7935
7972
  definitionsDir = resolveDefinitionsDir2();
7936
7973
  await registerBuiltInAgentsAndTasks(definitionsDir, vaultDir);
7937
7974
  logger.info(LOG_KINDS.AGENT_TASK, "Built-in agents and tasks registered");
@@ -8099,8 +8136,9 @@ async function main() {
8099
8136
  server.registerRoute("GET", "/api/progress/:token", async (req) => handleGetProgress(progressTracker, req.params.token));
8100
8137
  server.registerRoute("GET", "/api/sessions", handleListSessions);
8101
8138
  server.registerRoute("GET", "/api/sessions/:id", handleGetSession);
8102
- const sessionMutations = createSessionMutationHandlers({ embeddingManager, vaultDir, logger });
8139
+ const sessionMutations = createSessionMutationHandlers({ embeddingManager, vaultDir, logger, config });
8103
8140
  server.registerRoute("GET", "/api/sessions/:id/impact", sessionMutations.handleGetSessionImpact);
8141
+ server.registerRoute("POST", "/api/sessions/:id/complete", sessionMutations.handleCompleteSession);
8104
8142
  server.registerRoute("DELETE", "/api/sessions/:id", sessionMutations.handleDeleteSession);
8105
8143
  server.registerRoute("GET", "/api/sessions/:id/batches", handleGetSessionBatches);
8106
8144
  server.registerRoute("GET", "/api/batches/:id/activities", handleGetBatchActivities);
@@ -8249,4 +8287,4 @@ export {
8249
8287
  handleUserPrompt,
8250
8288
  main
8251
8289
  };
8252
- //# sourceMappingURL=main-IV64U72E.js.map
8290
+ //# sourceMappingURL=main-XWJGDDMZ.js.map