crewly 1.11.3 → 1.11.4

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 (171) hide show
  1. package/config/skills/agent/core/accept-task/SKILL.md +35 -7
  2. package/config/skills/agent/core/poll-tasks/execute.sh +44 -9
  3. package/config/skills/agent/core/poll-tasks/execute.test.sh +98 -0
  4. package/config/skills/agent/core/record-learning/execute.sh +92 -3
  5. package/config/skills/agent/core/register-self/SKILL.md +51 -8
  6. package/config/skills/agent/transcribe-audio/SKILL.md +110 -0
  7. package/config/skills/agent/transcribe-audio/execute.sh +223 -0
  8. package/config/skills/agent/transcribe-audio/instructions.md +92 -0
  9. package/config/skills/agent/transcribe-audio/skill.json +22 -0
  10. package/config/skills/orchestrator/assign-task/SKILL.md +40 -6
  11. package/config/skills/orchestrator/broadcast/SKILL.md +45 -8
  12. package/dist/backend/backend/src/constants.d.ts +0 -16
  13. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  14. package/dist/backend/backend/src/constants.js +0 -16
  15. package/dist/backend/backend/src/constants.js.map +1 -1
  16. package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/memory/memory.controller.js +3 -10
  18. package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
  20. package/dist/backend/backend/src/controllers/system/system.controller.js +24 -5
  21. package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
  22. package/dist/backend/backend/src/index.d.ts +2 -0
  23. package/dist/backend/backend/src/index.d.ts.map +1 -1
  24. package/dist/backend/backend/src/index.js +124 -1
  25. package/dist/backend/backend/src/index.js.map +1 -1
  26. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  27. package/dist/backend/backend/src/routes/api.routes.js +0 -3
  28. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  29. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/agent/agent-registration.service.js +56 -20
  31. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  32. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -0
  33. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -0
  35. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  36. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  37. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +2 -0
  38. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  39. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  40. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  41. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  42. package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  43. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +88 -0
  44. package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/boot/boot-announce.service.js +119 -0
  46. package/dist/backend/backend/src/services/boot/boot-announce.service.js.map +1 -0
  47. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +14 -0
  49. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  50. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/mcp-server.js +0 -6
  52. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  53. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
  54. package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
  55. package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
  56. package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
  57. package/dist/backend/backend/src/services/memory/memory.service.d.ts +78 -41
  58. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/memory/memory.service.js +209 -127
  60. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  61. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  62. package/dist/backend/backend/src/services/memory/project-memory.service.js +37 -9
  63. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  64. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
  65. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -0
  66. package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
  67. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +9 -0
  69. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  70. package/dist/backend/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
  71. package/dist/backend/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
  72. package/dist/backend/backend/src/services/session/runtime-pid-registry.service.js +214 -0
  73. package/dist/backend/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
  74. package/dist/backend/backend/src/services/sop/sop.service.d.ts +70 -2
  75. package/dist/backend/backend/src/services/sop/sop.service.d.ts.map +1 -1
  76. package/dist/backend/backend/src/services/sop/sop.service.js +93 -3
  77. package/dist/backend/backend/src/services/sop/sop.service.js.map +1 -1
  78. package/dist/backend/backend/src/services/task-pool/claim.service.d.ts +41 -0
  79. package/dist/backend/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/task-pool/claim.service.js +72 -0
  81. package/dist/backend/backend/src/services/task-pool/claim.service.js.map +1 -1
  82. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +16 -0
  83. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  84. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +20 -0
  85. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  86. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +11 -0
  88. package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
  89. package/dist/backend/backend/src/services/telegram/telegram.service.d.ts.map +1 -1
  90. package/dist/backend/backend/src/services/telegram/telegram.service.js +24 -2
  91. package/dist/backend/backend/src/services/telegram/telegram.service.js.map +1 -1
  92. package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
  93. package/dist/backend/backend/src/services/v3/mission-reminder.service.js +18 -18
  94. package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
  95. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +10 -0
  96. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +20 -12
  98. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  99. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +12 -3
  101. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  102. package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts +15 -5
  103. package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/wiki/wiki-query.service.js +31 -50
  105. package/dist/backend/backend/src/services/wiki/wiki-query.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +16 -0
  107. package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/wiki/wiki-search.service.js +20 -0
  109. package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -1
  110. package/dist/backend/backend/src/types/settings.types.d.ts +8 -0
  111. package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
  112. package/dist/backend/backend/src/types/settings.types.js +2 -0
  113. package/dist/backend/backend/src/types/settings.types.js.map +1 -1
  114. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +23 -0
  115. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  116. package/dist/backend/backend/src/types/v2/work-item.types.js +29 -0
  117. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  118. package/dist/cli/backend/src/constants.d.ts +0 -16
  119. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  120. package/dist/cli/backend/src/constants.js +0 -16
  121. package/dist/cli/backend/src/constants.js.map +1 -1
  122. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  123. package/dist/cli/backend/src/services/mcp-server.js +0 -6
  124. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  125. package/dist/cli/backend/src/services/memory/memory.service.d.ts +78 -41
  126. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  127. package/dist/cli/backend/src/services/memory/memory.service.js +209 -127
  128. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  129. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  130. package/dist/cli/backend/src/services/memory/project-memory.service.js +37 -9
  131. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  132. package/dist/cli/backend/src/services/task-pool/claim.service.d.ts +41 -0
  133. package/dist/cli/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
  134. package/dist/cli/backend/src/services/task-pool/claim.service.js +72 -0
  135. package/dist/cli/backend/src/services/task-pool/claim.service.js.map +1 -1
  136. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +16 -0
  137. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  138. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +20 -0
  139. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  140. package/dist/cli/backend/src/services/wiki/schema-loader.service.d.ts +57 -0
  141. package/dist/cli/backend/src/services/wiki/schema-loader.service.d.ts.map +1 -0
  142. package/dist/cli/backend/src/services/wiki/schema-loader.service.js +183 -0
  143. package/dist/cli/backend/src/services/wiki/schema-loader.service.js.map +1 -0
  144. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +100 -0
  145. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -0
  146. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js +212 -0
  147. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -0
  148. package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.d.ts +43 -0
  149. package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.d.ts.map +1 -0
  150. package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.js +67 -0
  151. package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.js.map +1 -0
  152. package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts +166 -0
  153. package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -0
  154. package/dist/cli/backend/src/services/wiki/wiki-search.service.js +379 -0
  155. package/dist/cli/backend/src/services/wiki/wiki-search.service.js.map +1 -0
  156. package/dist/cli/backend/src/services/wiki/wiki.types.d.ts +84 -0
  157. package/dist/cli/backend/src/services/wiki/wiki.types.d.ts.map +1 -0
  158. package/dist/cli/backend/src/services/wiki/wiki.types.js +10 -0
  159. package/dist/cli/backend/src/services/wiki/wiki.types.js.map +1 -0
  160. package/dist/cli/backend/src/types/settings.types.d.ts +8 -0
  161. package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
  162. package/dist/cli/backend/src/types/settings.types.js +2 -0
  163. package/dist/cli/backend/src/types/settings.types.js.map +1 -1
  164. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +23 -0
  165. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  166. package/dist/cli/backend/src/types/v2/work-item.types.js +29 -0
  167. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  168. package/frontend/dist/assets/{index-44266b5d.css → index-8205ea5e.css} +1 -1
  169. package/frontend/dist/assets/{index-4099a91c.js → index-890d3f9d.js} +289 -289
  170. package/frontend/dist/index.html +2 -2
  171. package/package.json +1 -1
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Runtime PID Registry
3
+ *
4
+ * Tracks the OS process ids of spawned agent-runtime PTY sessions so orphaned
5
+ * runtime processes can be reaped after a NON-graceful backend death (crash,
6
+ * OOM-kill, external `kill -9`, or the shutdown force-exit `SIGKILL`-self firing
7
+ * mid-cleanup). Normal teardown (`killSession`/`forceDestroyAll`) already reaps
8
+ * children; the gap this closes is the cross-restart one — a fresh backend has
9
+ * no record of the previous run's children, so they live on indefinitely
10
+ * (issue #715: ~7 stray `gemini --yolo` on Irissair since Feb).
11
+ *
12
+ * Safety is the whole point. The startup reaper:
13
+ * 1. only ever touches PIDs THIS backend recorded (never a broad `pkill`),
14
+ * 2. re-reads each live PID's command line and kills it ONLY if it still
15
+ * matches the recorded spawn signature — so a PID reused by an unrelated
16
+ * process after a crash is left untouched.
17
+ *
18
+ * @module services/session/runtime-pid-registry.service
19
+ */
20
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
21
+ import { execFileSync } from 'child_process';
22
+ import * as path from 'path';
23
+ import { LoggerService } from '../core/logger.service.js';
24
+ import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
25
+ /** Registry file name under the Crewly home. */
26
+ export const RUNTIME_PID_FILE = 'runtime-pids.json';
27
+ /** Collapse whitespace + trim so signatures compare stably across `/proc` and `ps`. */
28
+ function normalizeCmdline(s) {
29
+ return s.replace(/\s+/g, ' ').trim();
30
+ }
31
+ /**
32
+ * Read the live command line for a pid, cross-platform, or null if the process
33
+ * does not exist / is unreadable.
34
+ *
35
+ * - Linux: `/proc/<pid>/cmdline` (NUL-separated argv).
36
+ * - Other (macOS/BSD): `ps -o command= -p <pid>`.
37
+ *
38
+ * @param pid - Process id to inspect.
39
+ * @returns The normalised command line, or null.
40
+ */
41
+ export function readProcessCmdline(pid) {
42
+ // Linux fast path — read argv directly from /proc.
43
+ const procPath = `/proc/${pid}/cmdline`;
44
+ if (existsSync(procPath)) {
45
+ try {
46
+ const raw = readFileSync(procPath);
47
+ // argv is NUL-separated, trailing NUL.
48
+ const cmd = raw.toString('utf8').replace(/\0/g, ' ');
49
+ return normalizeCmdline(cmd) || null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ // Portable fallback (macOS): ask `ps`.
56
+ try {
57
+ const out = execFileSync('ps', ['-o', 'command=', '-p', String(pid)], {
58
+ encoding: 'utf8',
59
+ stdio: ['ignore', 'pipe', 'ignore'],
60
+ });
61
+ const cmd = normalizeCmdline(out);
62
+ return cmd || null;
63
+ }
64
+ catch {
65
+ // Non-zero exit = no such process.
66
+ return null;
67
+ }
68
+ }
69
+ /** Whether a pid is currently alive (signal 0 probe). */
70
+ export function isPidAlive(pid) {
71
+ if (!Number.isInteger(pid) || pid <= 1)
72
+ return false; // never touch pid 0/1
73
+ try {
74
+ process.kill(pid, 0);
75
+ return true;
76
+ }
77
+ catch (err) {
78
+ // EPERM = exists but not ours to signal → treat as alive (don't reap).
79
+ return err.code === 'EPERM';
80
+ }
81
+ }
82
+ export class RuntimePidRegistry {
83
+ static instance = null;
84
+ filePath;
85
+ cmdlineReader;
86
+ logger;
87
+ constructor(options = {}) {
88
+ this.filePath = options.filePath ?? path.join(getCrewlyHomePath(), RUNTIME_PID_FILE);
89
+ this.cmdlineReader = options.cmdlineReader ?? readProcessCmdline;
90
+ this.logger = LoggerService.getInstance().createComponentLogger('RuntimePidRegistry');
91
+ }
92
+ static getInstance() {
93
+ if (!this.instance)
94
+ this.instance = new RuntimePidRegistry();
95
+ return this.instance;
96
+ }
97
+ /** Reset for tests (optionally pointing at a temp file + stub cmdline reader). */
98
+ static resetForTesting(options = {}) {
99
+ this.instance = new RuntimePidRegistry(options);
100
+ return this.instance;
101
+ }
102
+ read() {
103
+ if (!existsSync(this.filePath))
104
+ return [];
105
+ try {
106
+ const parsed = JSON.parse(readFileSync(this.filePath, 'utf8'));
107
+ return Array.isArray(parsed) ? parsed : [];
108
+ }
109
+ catch {
110
+ // Corrupt file — treat as empty (and it gets rewritten on next mutation).
111
+ return [];
112
+ }
113
+ }
114
+ write(records) {
115
+ try {
116
+ mkdirSync(path.dirname(this.filePath), { recursive: true });
117
+ writeFileSync(this.filePath, JSON.stringify(records, null, 2), 'utf8');
118
+ }
119
+ catch (err) {
120
+ this.logger.warn('Failed to persist runtime PID registry (non-fatal)', {
121
+ error: err instanceof Error ? err.message : String(err),
122
+ });
123
+ }
124
+ }
125
+ /**
126
+ * Record a freshly spawned runtime process.
127
+ *
128
+ * @param pid - PTY child pid.
129
+ * @param sessionName - Owning session.
130
+ * @param command - Spawn executable.
131
+ * @param args - Spawn args.
132
+ */
133
+ record(pid, sessionName, command, args = []) {
134
+ if (!Number.isInteger(pid) || pid <= 1)
135
+ return;
136
+ const signature = normalizeCmdline([command, ...args].join(' '));
137
+ const records = this.read().filter((r) => r.sessionName !== sessionName && r.pid !== pid);
138
+ records.push({ pid, sessionName, signature, spawnedAt: new Date().toISOString() });
139
+ this.write(records);
140
+ }
141
+ /**
142
+ * Drop the record for a session we have torn down ourselves (so it is not a
143
+ * reap candidate next boot).
144
+ *
145
+ * @param sessionName - Session whose record to remove.
146
+ */
147
+ remove(sessionName) {
148
+ const records = this.read();
149
+ const next = records.filter((r) => r.sessionName !== sessionName);
150
+ if (next.length !== records.length)
151
+ this.write(next);
152
+ }
153
+ /** Clear all records (graceful shutdown reaped everything itself). */
154
+ clear() {
155
+ this.write([]);
156
+ }
157
+ /**
158
+ * Reap orphaned runtime processes left by a previous, non-graceful backend
159
+ * exit. Call ONCE at boot, before sessions are restored. Kills a recorded pid
160
+ * only if it is still alive AND its live command line still matches the
161
+ * recorded signature (guards against PID reuse). Clears the registry after.
162
+ *
163
+ * @returns The number of orphan processes reaped.
164
+ */
165
+ reapOrphans() {
166
+ const records = this.read();
167
+ if (records.length === 0)
168
+ return 0;
169
+ let reaped = 0;
170
+ for (const rec of records) {
171
+ if (!isPidAlive(rec.pid))
172
+ continue;
173
+ const liveCmdline = this.cmdlineReader(rec.pid);
174
+ if (!liveCmdline || !liveCmdline.includes(rec.signature)) {
175
+ // Either unreadable, or the PID was reused by an unrelated process —
176
+ // do NOT kill. Log so a surprising mismatch is observable.
177
+ this.logger.warn('Skipping recorded PID — not a matching runtime (reused or changed)', {
178
+ pid: rec.pid,
179
+ sessionName: rec.sessionName,
180
+ expected: rec.signature,
181
+ live: liveCmdline ?? '(gone)',
182
+ });
183
+ continue;
184
+ }
185
+ // Verified orphan — SIGKILL the process and its group.
186
+ this.logger.error('Reaping orphaned runtime process from a previous backend run', {
187
+ pid: rec.pid,
188
+ sessionName: rec.sessionName,
189
+ signature: rec.signature,
190
+ spawnedAt: rec.spawnedAt,
191
+ });
192
+ try {
193
+ process.kill(rec.pid, 'SIGKILL');
194
+ }
195
+ catch {
196
+ /* already gone between the probe and now */
197
+ }
198
+ try {
199
+ process.kill(-rec.pid, 'SIGKILL'); // process group
200
+ }
201
+ catch {
202
+ /* no group / already gone */
203
+ }
204
+ reaped++;
205
+ }
206
+ // Whatever was recorded belongs to a prior run — this run records fresh.
207
+ this.clear();
208
+ if (reaped > 0) {
209
+ this.logger.warn('Orphan runtime reaper finished', { reaped, scanned: records.length });
210
+ }
211
+ return reaped;
212
+ }
213
+ }
214
+ //# sourceMappingURL=runtime-pid-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pid-registry.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/session/runtime-pid-registry.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAcjE,gDAAgD;AAChD,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,CAAS;IACjC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,mDAAmD;IACnD,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACnC,uCAAuC;YACvC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YACpE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,sBAAsB;IAC5E,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uEAAuE;QACvE,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAeD,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAC,QAAQ,GAA8B,IAAI,CAAC;IACzC,QAAQ,CAAS;IACjB,aAAa,CAAiC;IAC9C,MAAM,CAAkB;IAEzC,YAAoB,UAAqC,EAAE;QACzD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACrF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,kBAAkB,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,kFAAkF;IAClF,MAAM,CAAC,eAAe,CAAC,UAAqC,EAAE;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAY,CAAC;YAC1E,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;YAC1E,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAA2B;QACvC,IAAI,CAAC;YACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;gBACrE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,GAAW,EAAE,WAAmB,EAAE,OAAe,EAAE,OAAiB,EAAE;QAC3E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAE,OAAO;QAC/C,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAC1F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,WAAmB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,sEAAsE;IACtE,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED;;;;;;;OAOG;IACH,WAAW;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QAEnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEnC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzD,qEAAqE;gBACrE,2DAA2D;gBAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oEAAoE,EAAE;oBACrF,GAAG,EAAE,GAAG,CAAC,GAAG;oBACZ,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAE,GAAG,CAAC,SAAS;oBACvB,IAAI,EAAE,WAAW,IAAI,QAAQ;iBAC9B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,uDAAuD;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,EAAE;gBAChF,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,SAAS;aACzB,CAAC,CAAC;YACH,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,4CAA4C;YAC9C,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YACD,MAAM,EAAE,CAAC;QACX,CAAC;QAED,yEAAyE;QACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC"}
@@ -87,6 +87,18 @@ export interface ISOPService {
87
87
  * @returns Matching index entries
88
88
  */
89
89
  searchSOPs(query: string): Promise<SOPIndexEntry[]>;
90
+ /**
91
+ * Get the reason for the last graceful fallback, if any.
92
+ *
93
+ * Used by the API layer to surface degraded-mode telemetry to callers
94
+ * (e.g. when the index file is missing and an empty in-memory fallback
95
+ * was substituted). Returns null after any operation that successfully
96
+ * read the index from disk.
97
+ *
98
+ * @returns Fallback reason string, or null if last operation served
99
+ * from real data on disk.
100
+ */
101
+ getLastFallbackReason(): string | null;
90
102
  }
91
103
  /**
92
104
  * Service for managing Standard Operating Procedures
@@ -112,6 +124,16 @@ export declare class SOPService implements ISOPService {
112
124
  private index;
113
125
  private sopCache;
114
126
  private initialized;
127
+ private lastFallbackReason;
128
+ /**
129
+ * Sentinel reason emitted when the canonical index is missing/unparseable
130
+ * and we synthesise an empty in-memory index so callers can degrade
131
+ * cleanly instead of receiving a 500.
132
+ *
133
+ * Surfaced via `getLastFallbackReason()` and propagated by the API
134
+ * controller to clients in the response envelope.
135
+ */
136
+ static readonly FALLBACK_REASON_INDEX_MISSING = "index-missing-graceful-fallback";
115
137
  /**
116
138
  * Private constructor for singleton pattern
117
139
  *
@@ -146,9 +168,32 @@ export declare class SOPService implements ISOPService {
146
168
  */
147
169
  initialize(): Promise<void>;
148
170
  /**
149
- * Rebuild the SOP index from filesystem
171
+ * Rebuild the SOP index from filesystem.
172
+ *
173
+ * Resilience contract (F8 — get-sops graceful fallback):
174
+ * - Walks `systemPath` and `customPath` to collect entries (each walker
175
+ * silently no-ops when its directory is absent).
176
+ * - Populates `this.index` with the collected entries (possibly empty)
177
+ * BEFORE attempting any disk write, so callers reading the index
178
+ * in-memory always see a valid object even if persistence fails.
179
+ * - Persists by ensuring `basePath` exists (`mkdir -p`) and then
180
+ * writing the index file. Persistence failure is logged-warn and
181
+ * swallowed — the in-memory index remains canonical for this process.
182
+ *
183
+ * Should not throw under normal failure modes (missing dir, ENOSPC,
184
+ * permission to write index). Pathological errors in helpers are
185
+ * logged inside them; this method returns successfully with an
186
+ * in-memory index regardless.
150
187
  */
151
188
  rebuildIndex(): Promise<void>;
189
+ /**
190
+ * Ensure the SOP base directory exists before writing the index.
191
+ *
192
+ * Idempotent. Created with `recursive: true` so any missing parent
193
+ * (e.g. a fresh `~/.crewly` install where `sops/` was never created)
194
+ * is materialised in one call.
195
+ */
196
+ private ensureBasePathExists;
152
197
  /**
153
198
  * Index a directory recursively
154
199
  *
@@ -274,9 +319,32 @@ export declare class SOPService implements ISOPService {
274
319
  */
275
320
  searchSOPs(query: string): Promise<SOPIndexEntry[]>;
276
321
  /**
277
- * Ensure the index exists (load or rebuild)
322
+ * Ensure the index exists (load from disk or rebuild from filesystem).
323
+ *
324
+ * Graceful-fallback contract (F8):
325
+ * - Happy path: read `index.json`, JSON.parse it, set `this.index`.
326
+ * `lastFallbackReason` is cleared.
327
+ * - Index missing/unparseable: invoke `rebuildIndex()`. If rebuild
328
+ * succeeded with N>=0 entries, mark fallback reason iff the index
329
+ * was rebuilt due to missing-on-disk (so the controller can surface
330
+ * `index-missing-graceful-fallback` to clients).
331
+ * - Catastrophic rebuild failure (extremely unlikely — rebuild itself
332
+ * swallows persistence errors): synthesise an empty in-memory index
333
+ * and stamp `lastFallbackReason`. The endpoint returns 200 with an
334
+ * empty payload rather than 500.
278
335
  */
279
336
  private ensureIndex;
337
+ /**
338
+ * Get the reason for the last graceful fallback, if any.
339
+ *
340
+ * Returns the `FALLBACK_REASON_INDEX_MISSING` sentinel when the most
341
+ * recent index load fell back to a regenerated/synthesised in-memory
342
+ * index. Returns null when the cached index was loaded directly from
343
+ * a healthy `index.json` on disk.
344
+ *
345
+ * @returns Fallback reason string, or null.
346
+ */
347
+ getLastFallbackReason(): string | null;
280
348
  /**
281
349
  * Save the index to disk
282
350
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sop.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/sop/sop.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sop.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/sop/sop.service.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,16 @@ export class SOPService {
37
37
  index = null;
38
38
  sopCache = new Map();
39
39
  initialized = false;
40
+ lastFallbackReason = null;
41
+ /**
42
+ * Sentinel reason emitted when the canonical index is missing/unparseable
43
+ * and we synthesise an empty in-memory index so callers can degrade
44
+ * cleanly instead of receiving a 500.
45
+ *
46
+ * Surfaced via `getLastFallbackReason()` and propagated by the API
47
+ * controller to clients in the response envelope.
48
+ */
49
+ static FALLBACK_REASON_INDEX_MISSING = 'index-missing-graceful-fallback';
40
50
  /**
41
51
  * Private constructor for singleton pattern
42
52
  *
@@ -99,7 +109,22 @@ export class SOPService {
99
109
  this.logger.info('SOPService initialized', { basePath: this.basePath });
100
110
  }
101
111
  /**
102
- * Rebuild the SOP index from filesystem
112
+ * Rebuild the SOP index from filesystem.
113
+ *
114
+ * Resilience contract (F8 — get-sops graceful fallback):
115
+ * - Walks `systemPath` and `customPath` to collect entries (each walker
116
+ * silently no-ops when its directory is absent).
117
+ * - Populates `this.index` with the collected entries (possibly empty)
118
+ * BEFORE attempting any disk write, so callers reading the index
119
+ * in-memory always see a valid object even if persistence fails.
120
+ * - Persists by ensuring `basePath` exists (`mkdir -p`) and then
121
+ * writing the index file. Persistence failure is logged-warn and
122
+ * swallowed — the in-memory index remains canonical for this process.
123
+ *
124
+ * Should not throw under normal failure modes (missing dir, ENOSPC,
125
+ * permission to write index). Pathological errors in helpers are
126
+ * logged inside them; this method returns successfully with an
127
+ * in-memory index regardless.
103
128
  */
104
129
  async rebuildIndex() {
105
130
  const entries = [];
@@ -107,15 +132,37 @@ export class SOPService {
107
132
  await this.indexDirectory(this.systemPath, entries, true);
108
133
  // Index custom SOPs
109
134
  await this.indexDirectory(this.customPath, entries, false);
135
+ // Always populate in-memory index FIRST so callers can read even if
136
+ // persistence below fails (e.g. read-only FS, ENOSPC).
110
137
  this.index = {
111
138
  version: SOP_CONSTANTS.INDEX_VERSION,
112
139
  lastUpdated: new Date().toISOString(),
113
140
  sops: entries,
114
141
  };
115
- await this.saveIndex();
142
+ // Persist — failures are logged but never thrown to the caller.
143
+ try {
144
+ await this.ensureBasePathExists();
145
+ await this.saveIndex();
146
+ }
147
+ catch (error) {
148
+ this.logger.warn('SOP index regenerated in memory but persistence failed', {
149
+ indexPath: this.indexPath,
150
+ error: error instanceof Error ? error.message : String(error),
151
+ });
152
+ }
116
153
  this.sopCache.clear();
117
154
  this.logger.info('SOP index rebuilt', { count: entries.length });
118
155
  }
156
+ /**
157
+ * Ensure the SOP base directory exists before writing the index.
158
+ *
159
+ * Idempotent. Created with `recursive: true` so any missing parent
160
+ * (e.g. a fresh `~/.crewly` install where `sops/` was never created)
161
+ * is materialised in one call.
162
+ */
163
+ async ensureBasePathExists() {
164
+ await fs.mkdir(this.basePath, { recursive: true });
165
+ }
119
166
  /**
120
167
  * Index a directory recursively
121
168
  *
@@ -587,17 +634,60 @@ export class SOPService {
587
634
  });
588
635
  }
589
636
  /**
590
- * Ensure the index exists (load or rebuild)
637
+ * Ensure the index exists (load from disk or rebuild from filesystem).
638
+ *
639
+ * Graceful-fallback contract (F8):
640
+ * - Happy path: read `index.json`, JSON.parse it, set `this.index`.
641
+ * `lastFallbackReason` is cleared.
642
+ * - Index missing/unparseable: invoke `rebuildIndex()`. If rebuild
643
+ * succeeded with N>=0 entries, mark fallback reason iff the index
644
+ * was rebuilt due to missing-on-disk (so the controller can surface
645
+ * `index-missing-graceful-fallback` to clients).
646
+ * - Catastrophic rebuild failure (extremely unlikely — rebuild itself
647
+ * swallows persistence errors): synthesise an empty in-memory index
648
+ * and stamp `lastFallbackReason`. The endpoint returns 200 with an
649
+ * empty payload rather than 500.
591
650
  */
592
651
  async ensureIndex() {
593
652
  try {
594
653
  const content = await fs.readFile(this.indexPath, 'utf-8');
595
654
  this.index = JSON.parse(content);
655
+ this.lastFallbackReason = null;
656
+ return;
596
657
  }
597
658
  catch {
659
+ // fall through to rebuild
660
+ }
661
+ try {
598
662
  await this.rebuildIndex();
663
+ // Index was missing/unparseable on disk; even after a successful
664
+ // rebuild we stamp the reason so the controller can advertise the
665
+ // degraded path to callers (telemetry / client-side back-off).
666
+ this.lastFallbackReason = SOPService.FALLBACK_REASON_INDEX_MISSING;
667
+ }
668
+ catch (error) {
669
+ this.logger.warn('SOP index rebuild failed catastrophically — serving empty fallback', { error: error instanceof Error ? error.message : String(error) });
670
+ this.index = {
671
+ version: SOP_CONSTANTS.INDEX_VERSION,
672
+ lastUpdated: new Date().toISOString(),
673
+ sops: [],
674
+ };
675
+ this.lastFallbackReason = SOPService.FALLBACK_REASON_INDEX_MISSING;
599
676
  }
600
677
  }
678
+ /**
679
+ * Get the reason for the last graceful fallback, if any.
680
+ *
681
+ * Returns the `FALLBACK_REASON_INDEX_MISSING` sentinel when the most
682
+ * recent index load fell back to a regenerated/synthesised in-memory
683
+ * index. Returns null when the cached index was loaded directly from
684
+ * a healthy `index.json` on disk.
685
+ *
686
+ * @returns Fallback reason string, or null.
687
+ */
688
+ getLastFallbackReason() {
689
+ return this.lastFallbackReason;
690
+ }
601
691
  /**
602
692
  * Save the index to disk
603
693
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sop.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/sop/sop.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sop.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/sop/sop.service.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,14 @@
13
13
  */
14
14
  import { PoolStorage } from './pool-storage.js';
15
15
  import { type TaskClaim, type CreateClaimInput } from '../../types/v2/claim.types.js';
16
+ /**
17
+ * Consecutive grace-period revocations (with NO intervening heartbeat) after
18
+ * which an agent's session is considered HUNG — it keeps claiming work but
19
+ * never proves liveness. This is the Irissair orchestrator 假死 signature:
20
+ * claimed hourly, never heartbeated, revoked ~13 min later, repeat. Surfaced
21
+ * via {@link ClaimService.getHungAgents}.
22
+ */
23
+ export declare const HUNG_SESSION_GRACE_REVOKE_THRESHOLD = 3;
16
24
  /**
17
25
  * Result of a heartbeat operation.
18
26
  */
@@ -75,6 +83,13 @@ export interface ExpiredClaimsSummary {
75
83
  export declare class ClaimService {
76
84
  private readonly storage;
77
85
  private readonly logger;
86
+ /**
87
+ * Per-agent count of consecutive grace-period revocations with NO intervening
88
+ * heartbeat. Incremented on each grace revoke, reset to 0 on any successful
89
+ * heartbeat (proof the session is alive). Powers hung-session detection
90
+ * ({@link getHungAgents}).
91
+ */
92
+ private readonly consecutiveGraceRevokes;
78
93
  constructor(storage: PoolStorage);
79
94
  /**
80
95
  * Creates a new claim for a work item.
@@ -127,6 +142,32 @@ export declare class ClaimService {
127
142
  * @throws Error if claim not found
128
143
  */
129
144
  revoke(claimId: string, reason: string): Promise<void>;
145
+ /**
146
+ * Consecutive grace-period revocations (with no intervening heartbeat) for an
147
+ * agent. Resets to 0 on the agent's next successful heartbeat.
148
+ *
149
+ * @param agentId - The agent/session id.
150
+ * @returns The current consecutive grace-revoke count (0 if none).
151
+ */
152
+ getConsecutiveGraceRevokes(agentId: string): number;
153
+ /**
154
+ * Agents whose consecutive grace-revoke count is at or above `threshold` —
155
+ * their sessions keep claiming work but never heartbeat, i.e. they look HUNG.
156
+ *
157
+ * @param threshold - Minimum consecutive grace-revokes (default
158
+ * {@link HUNG_SESSION_GRACE_REVOKE_THRESHOLD}).
159
+ * @returns Agent ids that currently look hung.
160
+ */
161
+ getHungAgents(threshold?: number): string[];
162
+ /**
163
+ * Clear an agent's consecutive grace-revoke count. Called by the hung-session
164
+ * watchdog after it triggers a recovery (session restart) so the freshly
165
+ * restarted session is not immediately re-flagged as hung before it has had a
166
+ * chance to heartbeat.
167
+ *
168
+ * @param agentId - The agent/session id to clear.
169
+ */
170
+ clearGraceRevokes(agentId: string): void;
130
171
  /**
131
172
  * Scans all active claims and categorizes expired ones.
132
173
  *
@@ -1 +1 @@
1
- {"version":3,"file":"claim.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/claim.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAYtB,MAAM,+BAA+B,CAAC;AAMvC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,mDAAmD;IACnD,aAAa,EAAE,SAAS,EAAE,CAAC;CAC5B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,OAAO,EAAE,WAAW;IAShC;;;;;;;;;OASG;IACG,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC;IAuC9D;;;;;;;;;OASG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA8C3E;;;;;;;;;;;OAWG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkD/E;;;;;;OAMG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7D;;;;;;OAMG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B5D;;;;;;;;;;OAUG;IACG,iBAAiB,CACrB,GAAG,GAAE,MAAmB,EACxB,aAAa,GAAE,MAAgC,GAC9C,OAAO,CAAC,oBAAoB,CAAC;IAoBhC;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD;;;;;OAKG;IACG,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAI5E;;;;;OAKG;IACG,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAIlF;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAK7C;;;;;OAKG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAKnE;;;;;;;;OAQG;IACH,gBAAgB,CACd,KAAK,EAAE,SAAS,EAChB,mBAAmB,GAAE,MAAsC,EAC3D,WAAW,GAAE,MAAe,EAC5B,GAAG,GAAE,MAAmB,GACvB,OAAO;IASV;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"claim.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/task-pool/claim.service.ts"],"names":[],"mappings":"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"}