pm-orchestrator-runner 1.0.0

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 (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +108 -0
  3. package/dist/cli/cli-interface.d.ts +150 -0
  4. package/dist/cli/cli-interface.d.ts.map +1 -0
  5. package/dist/cli/cli-interface.js +606 -0
  6. package/dist/cli/cli-interface.js.map +1 -0
  7. package/dist/cli/index.d.ts +13 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +243 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/cli/llm-sentinel.d.ts +15 -0
  12. package/dist/cli/llm-sentinel.d.ts.map +1 -0
  13. package/dist/cli/llm-sentinel.js +184 -0
  14. package/dist/cli/llm-sentinel.js.map +1 -0
  15. package/dist/config/configuration-manager.d.ts +149 -0
  16. package/dist/config/configuration-manager.d.ts.map +1 -0
  17. package/dist/config/configuration-manager.js +241 -0
  18. package/dist/config/configuration-manager.js.map +1 -0
  19. package/dist/continuation/continuation-control-manager.d.ts +154 -0
  20. package/dist/continuation/continuation-control-manager.d.ts.map +1 -0
  21. package/dist/continuation/continuation-control-manager.js +303 -0
  22. package/dist/continuation/continuation-control-manager.js.map +1 -0
  23. package/dist/core/runner-core.d.ts +474 -0
  24. package/dist/core/runner-core.d.ts.map +1 -0
  25. package/dist/core/runner-core.js +1311 -0
  26. package/dist/core/runner-core.js.map +1 -0
  27. package/dist/errors/error-codes.d.ts +105 -0
  28. package/dist/errors/error-codes.d.ts.map +1 -0
  29. package/dist/errors/error-codes.js +198 -0
  30. package/dist/errors/error-codes.js.map +1 -0
  31. package/dist/errors/runner-error.d.ts +14 -0
  32. package/dist/errors/runner-error.d.ts.map +1 -0
  33. package/dist/errors/runner-error.js +33 -0
  34. package/dist/errors/runner-error.js.map +1 -0
  35. package/dist/evidence/evidence-manager.d.ts +112 -0
  36. package/dist/evidence/evidence-manager.d.ts.map +1 -0
  37. package/dist/evidence/evidence-manager.js +337 -0
  38. package/dist/evidence/evidence-manager.js.map +1 -0
  39. package/dist/executor/claude-code-executor.d.ts +136 -0
  40. package/dist/executor/claude-code-executor.d.ts.map +1 -0
  41. package/dist/executor/claude-code-executor.js +643 -0
  42. package/dist/executor/claude-code-executor.js.map +1 -0
  43. package/dist/executor/deterministic-executor.d.ts +40 -0
  44. package/dist/executor/deterministic-executor.d.ts.map +1 -0
  45. package/dist/executor/deterministic-executor.js +269 -0
  46. package/dist/executor/deterministic-executor.js.map +1 -0
  47. package/dist/lifecycle/lifecycle-controller.d.ts +270 -0
  48. package/dist/lifecycle/lifecycle-controller.d.ts.map +1 -0
  49. package/dist/lifecycle/lifecycle-controller.js +596 -0
  50. package/dist/lifecycle/lifecycle-controller.js.map +1 -0
  51. package/dist/limits/resource-limit-manager.d.ts +200 -0
  52. package/dist/limits/resource-limit-manager.d.ts.map +1 -0
  53. package/dist/limits/resource-limit-manager.js +376 -0
  54. package/dist/limits/resource-limit-manager.js.map +1 -0
  55. package/dist/locks/lock-manager.d.ts +116 -0
  56. package/dist/locks/lock-manager.d.ts.map +1 -0
  57. package/dist/locks/lock-manager.js +306 -0
  58. package/dist/locks/lock-manager.js.map +1 -0
  59. package/dist/logging/index.d.ts +8 -0
  60. package/dist/logging/index.d.ts.map +1 -0
  61. package/dist/logging/index.js +22 -0
  62. package/dist/logging/index.js.map +1 -0
  63. package/dist/logging/sensitive-data-masker.d.ts +90 -0
  64. package/dist/logging/sensitive-data-masker.d.ts.map +1 -0
  65. package/dist/logging/sensitive-data-masker.js +228 -0
  66. package/dist/logging/sensitive-data-masker.js.map +1 -0
  67. package/dist/logging/task-log-manager.d.ts +215 -0
  68. package/dist/logging/task-log-manager.d.ts.map +1 -0
  69. package/dist/logging/task-log-manager.js +743 -0
  70. package/dist/logging/task-log-manager.js.map +1 -0
  71. package/dist/mediation/fail-closed-runner.d.ts +131 -0
  72. package/dist/mediation/fail-closed-runner.d.ts.map +1 -0
  73. package/dist/mediation/fail-closed-runner.js +245 -0
  74. package/dist/mediation/fail-closed-runner.js.map +1 -0
  75. package/dist/mediation/llm-client-with-evidence.d.ts +123 -0
  76. package/dist/mediation/llm-client-with-evidence.d.ts.map +1 -0
  77. package/dist/mediation/llm-client-with-evidence.js +245 -0
  78. package/dist/mediation/llm-client-with-evidence.js.map +1 -0
  79. package/dist/mediation/llm-client.d.ts +102 -0
  80. package/dist/mediation/llm-client.d.ts.map +1 -0
  81. package/dist/mediation/llm-client.js +206 -0
  82. package/dist/mediation/llm-client.js.map +1 -0
  83. package/dist/mediation/llm-evidence-manager.d.ts +108 -0
  84. package/dist/mediation/llm-evidence-manager.d.ts.map +1 -0
  85. package/dist/mediation/llm-evidence-manager.js +230 -0
  86. package/dist/mediation/llm-evidence-manager.js.map +1 -0
  87. package/dist/mediation/llm-mediation-layer.d.ts +175 -0
  88. package/dist/mediation/llm-mediation-layer.d.ts.map +1 -0
  89. package/dist/mediation/llm-mediation-layer.js +315 -0
  90. package/dist/mediation/llm-mediation-layer.js.map +1 -0
  91. package/dist/mediation/llm-sentinel.d.ts +107 -0
  92. package/dist/mediation/llm-sentinel.d.ts.map +1 -0
  93. package/dist/mediation/llm-sentinel.js +187 -0
  94. package/dist/mediation/llm-sentinel.js.map +1 -0
  95. package/dist/mediation/real-llm-mediation-layer.d.ts +104 -0
  96. package/dist/mediation/real-llm-mediation-layer.d.ts.map +1 -0
  97. package/dist/mediation/real-llm-mediation-layer.js +322 -0
  98. package/dist/mediation/real-llm-mediation-layer.js.map +1 -0
  99. package/dist/mediation/verdict-reporter.d.ts +61 -0
  100. package/dist/mediation/verdict-reporter.d.ts.map +1 -0
  101. package/dist/mediation/verdict-reporter.js +178 -0
  102. package/dist/mediation/verdict-reporter.js.map +1 -0
  103. package/dist/models/enums.d.ts +133 -0
  104. package/dist/models/enums.d.ts.map +1 -0
  105. package/dist/models/enums.js +201 -0
  106. package/dist/models/enums.js.map +1 -0
  107. package/dist/models/evidence.d.ts +60 -0
  108. package/dist/models/evidence.d.ts.map +1 -0
  109. package/dist/models/evidence.js +135 -0
  110. package/dist/models/evidence.js.map +1 -0
  111. package/dist/models/execution-result.d.ts +89 -0
  112. package/dist/models/execution-result.d.ts.map +1 -0
  113. package/dist/models/execution-result.js +197 -0
  114. package/dist/models/execution-result.js.map +1 -0
  115. package/dist/models/file-lock.d.ts +62 -0
  116. package/dist/models/file-lock.d.ts.map +1 -0
  117. package/dist/models/file-lock.js +133 -0
  118. package/dist/models/file-lock.js.map +1 -0
  119. package/dist/models/index.d.ts +12 -0
  120. package/dist/models/index.d.ts.map +1 -0
  121. package/dist/models/index.js +91 -0
  122. package/dist/models/index.js.map +1 -0
  123. package/dist/models/repl/index.d.ts +7 -0
  124. package/dist/models/repl/index.d.ts.map +1 -0
  125. package/dist/models/repl/index.js +32 -0
  126. package/dist/models/repl/index.js.map +1 -0
  127. package/dist/models/repl/model-registry.d.ts +73 -0
  128. package/dist/models/repl/model-registry.d.ts.map +1 -0
  129. package/dist/models/repl/model-registry.js +116 -0
  130. package/dist/models/repl/model-registry.js.map +1 -0
  131. package/dist/models/repl/repl-state.d.ts +86 -0
  132. package/dist/models/repl/repl-state.d.ts.map +1 -0
  133. package/dist/models/repl/repl-state.js +152 -0
  134. package/dist/models/repl/repl-state.js.map +1 -0
  135. package/dist/models/repl/task-log.d.ts +247 -0
  136. package/dist/models/repl/task-log.d.ts.map +1 -0
  137. package/dist/models/repl/task-log.js +178 -0
  138. package/dist/models/repl/task-log.js.map +1 -0
  139. package/dist/models/session.d.ts +71 -0
  140. package/dist/models/session.d.ts.map +1 -0
  141. package/dist/models/session.js +140 -0
  142. package/dist/models/session.js.map +1 -0
  143. package/dist/models/supporting.d.ts +97 -0
  144. package/dist/models/supporting.d.ts.map +1 -0
  145. package/dist/models/supporting.js +208 -0
  146. package/dist/models/supporting.js.map +1 -0
  147. package/dist/models/task.d.ts +77 -0
  148. package/dist/models/task.d.ts.map +1 -0
  149. package/dist/models/task.js +170 -0
  150. package/dist/models/task.js.map +1 -0
  151. package/dist/output/output-control-manager.d.ts +217 -0
  152. package/dist/output/output-control-manager.d.ts.map +1 -0
  153. package/dist/output/output-control-manager.js +378 -0
  154. package/dist/output/output-control-manager.js.map +1 -0
  155. package/dist/pool/agent-pool.d.ts +284 -0
  156. package/dist/pool/agent-pool.d.ts.map +1 -0
  157. package/dist/pool/agent-pool.js +451 -0
  158. package/dist/pool/agent-pool.js.map +1 -0
  159. package/dist/repl/commands/index.d.ts +12 -0
  160. package/dist/repl/commands/index.d.ts.map +1 -0
  161. package/dist/repl/commands/index.js +26 -0
  162. package/dist/repl/commands/index.js.map +1 -0
  163. package/dist/repl/commands/init.d.ts +31 -0
  164. package/dist/repl/commands/init.d.ts.map +1 -0
  165. package/dist/repl/commands/init.js +234 -0
  166. package/dist/repl/commands/init.js.map +1 -0
  167. package/dist/repl/commands/keys.d.ts +63 -0
  168. package/dist/repl/commands/keys.d.ts.map +1 -0
  169. package/dist/repl/commands/keys.js +114 -0
  170. package/dist/repl/commands/keys.js.map +1 -0
  171. package/dist/repl/commands/logs.d.ts +91 -0
  172. package/dist/repl/commands/logs.d.ts.map +1 -0
  173. package/dist/repl/commands/logs.js +200 -0
  174. package/dist/repl/commands/logs.js.map +1 -0
  175. package/dist/repl/commands/model.d.ts +85 -0
  176. package/dist/repl/commands/model.d.ts.map +1 -0
  177. package/dist/repl/commands/model.js +225 -0
  178. package/dist/repl/commands/model.js.map +1 -0
  179. package/dist/repl/commands/models.d.ts +50 -0
  180. package/dist/repl/commands/models.d.ts.map +1 -0
  181. package/dist/repl/commands/models.js +180 -0
  182. package/dist/repl/commands/models.js.map +1 -0
  183. package/dist/repl/commands/provider.d.ts +79 -0
  184. package/dist/repl/commands/provider.d.ts.map +1 -0
  185. package/dist/repl/commands/provider.js +291 -0
  186. package/dist/repl/commands/provider.js.map +1 -0
  187. package/dist/repl/commands/session.d.ts +50 -0
  188. package/dist/repl/commands/session.d.ts.map +1 -0
  189. package/dist/repl/commands/session.js +152 -0
  190. package/dist/repl/commands/session.js.map +1 -0
  191. package/dist/repl/commands/status.d.ts +55 -0
  192. package/dist/repl/commands/status.d.ts.map +1 -0
  193. package/dist/repl/commands/status.js +182 -0
  194. package/dist/repl/commands/status.js.map +1 -0
  195. package/dist/repl/index.d.ts +6 -0
  196. package/dist/repl/index.d.ts.map +1 -0
  197. package/dist/repl/index.js +25 -0
  198. package/dist/repl/index.js.map +1 -0
  199. package/dist/repl/repl-interface.d.ts +371 -0
  200. package/dist/repl/repl-interface.d.ts.map +1 -0
  201. package/dist/repl/repl-interface.js +1214 -0
  202. package/dist/repl/repl-interface.js.map +1 -0
  203. package/dist/session/session-manager.d.ts +85 -0
  204. package/dist/session/session-manager.d.ts.map +1 -0
  205. package/dist/session/session-manager.js +217 -0
  206. package/dist/session/session-manager.js.map +1 -0
  207. package/dist/supervisor/executor-supervisor.d.ts +90 -0
  208. package/dist/supervisor/executor-supervisor.d.ts.map +1 -0
  209. package/dist/supervisor/executor-supervisor.js +223 -0
  210. package/dist/supervisor/executor-supervisor.js.map +1 -0
  211. package/dist/supervisor/index.d.ts +5 -0
  212. package/dist/supervisor/index.d.ts.map +1 -0
  213. package/dist/supervisor/index.js +9 -0
  214. package/dist/supervisor/index.js.map +1 -0
  215. package/package.json +57 -0
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ /**
3
+ * Sensitive Data Masker
4
+ *
5
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 4:
6
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24/25:
7
+ *
8
+ * 11 Masking Patterns across 4 Priority Levels:
9
+ *
10
+ * Priority 1 - Critical Secrets:
11
+ * 1. OpenAI API Key: sk-[A-Za-z0-9]{20,}
12
+ * 2. Anthropic API Key: sk-ant-[A-Za-z0-9-]{20,}
13
+ * 3. Private Key blocks: -----BEGIN.*PRIVATE KEY-----
14
+ *
15
+ * Priority 2 - Tokens and Auth Headers:
16
+ * 4. JWT Token: eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+
17
+ * 5. Authorization Header: Authorization:\s*\S+
18
+ * 6. Cookie: Cookie:\s*.+
19
+ * 7. Set-Cookie: Set-Cookie:\s*.+
20
+ *
21
+ * Priority 3 - Credentials:
22
+ * 8. JSON Credential: "(?:apiKey|password|secret|token)":\s*"[^"]+"
23
+ * 9. Environment Credential: [A-Z_]+(?:PASSWORD|SECRET|KEY|TOKEN)=[^\s]+
24
+ * 10. Bearer Token: Bearer\s+[A-Za-z0-9._-]+
25
+ *
26
+ * Priority 4 - Generic Secrets:
27
+ * 11. Generic Secret: (?:password|secret|token)\s*[=:]\s*["']?[^\s"']+
28
+ */
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.MASKING_PATTERNS = void 0;
31
+ exports.maskSensitiveData = maskSensitiveData;
32
+ exports.containsSensitiveData = containsSensitiveData;
33
+ exports.maskSensitiveObject = maskSensitiveObject;
34
+ exports.getApiKeyStatus = getApiKeyStatus;
35
+ exports.checkApiKeyForProvider = checkApiKeyForProvider;
36
+ exports.getPatternsByPriority = getPatternsByPriority;
37
+ /**
38
+ * Masking patterns ordered by priority (higher priority first)
39
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 25 Section 3
40
+ */
41
+ const MASKING_PATTERNS = [
42
+ // Priority 1 - Critical Secrets
43
+ {
44
+ name: 'OpenAI API Key',
45
+ regex: /sk-[A-Za-z0-9]{20,}/g,
46
+ mask: '[MASKED:OPENAI_KEY]',
47
+ priority: 1,
48
+ },
49
+ {
50
+ name: 'Anthropic API Key',
51
+ regex: /sk-ant-[A-Za-z0-9-]{20,}/g,
52
+ mask: '[MASKED:ANTHROPIC_KEY]',
53
+ priority: 1,
54
+ },
55
+ {
56
+ name: 'Private Key',
57
+ regex: /-----BEGIN[^-]*PRIVATE KEY-----[\s\S]*?-----END[^-]*PRIVATE KEY-----/g,
58
+ mask: '[MASKED:PRIVATE_KEY]',
59
+ priority: 1,
60
+ },
61
+ // Priority 2 - Tokens and Auth Headers
62
+ {
63
+ name: 'JWT Token',
64
+ regex: /eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g,
65
+ mask: '[MASKED:JWT]',
66
+ priority: 2,
67
+ },
68
+ {
69
+ name: 'Authorization Header',
70
+ regex: /Authorization:\s*(Basic|Digest|Bearer)?\s*[A-Za-z0-9+/=_.-]+/gi,
71
+ mask: 'Authorization: [MASKED:AUTH_HEADER]',
72
+ priority: 2,
73
+ },
74
+ {
75
+ name: 'Cookie',
76
+ regex: /Cookie:\s*[^\n\r]+/gi,
77
+ mask: 'Cookie: [MASKED:COOKIE]',
78
+ priority: 2,
79
+ },
80
+ {
81
+ name: 'Set-Cookie',
82
+ regex: /Set-Cookie:\s*[^\n\r]+/gi,
83
+ mask: 'Set-Cookie: [MASKED:SET_COOKIE]',
84
+ priority: 2,
85
+ },
86
+ // Priority 3 - Credentials
87
+ {
88
+ name: 'JSON Credential',
89
+ regex: /"(?:apiKey|password|secret|token|api_key|auth_token|access_token|refresh_token)":\s*"[^"]+"/gi,
90
+ mask: '"[key]": "[MASKED:JSON_CREDENTIAL]"',
91
+ priority: 3,
92
+ },
93
+ {
94
+ name: 'Environment Credential',
95
+ regex: /[A-Z_]*(?:PASSWORD|SECRET|KEY|TOKEN|CREDENTIAL)[A-Z_]*=[^\s\n]+/gi,
96
+ mask: '[MASKED:ENV_CREDENTIAL]',
97
+ priority: 3,
98
+ },
99
+ {
100
+ name: 'Bearer Token',
101
+ regex: /Bearer\s+[A-Za-z0-9._-]+/g,
102
+ mask: '[MASKED:BEARER_TOKEN]',
103
+ priority: 3,
104
+ },
105
+ // Priority 4 - Generic Secrets
106
+ {
107
+ name: 'Generic Secret',
108
+ regex: /(?:\b(?:password|secret|token|api_key|apikey|credential)[_\w]*|\bauth_[_\w]*)\s*[=:]\s*["']?[^\s"'\n,}]+["']?/gi,
109
+ mask: '[MASKED:GENERIC_SECRET]',
110
+ priority: 4,
111
+ },
112
+ ];
113
+ exports.MASKING_PATTERNS = MASKING_PATTERNS;
114
+ /**
115
+ * Mask sensitive data in a string
116
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 4.3
117
+ *
118
+ * Patterns are applied in priority order (1 first, then 2, etc.)
119
+ *
120
+ * @param content - Content to mask
121
+ * @returns Masked content
122
+ */
123
+ function maskSensitiveData(content) {
124
+ if (!content || typeof content !== 'string') {
125
+ return content;
126
+ }
127
+ let masked = content;
128
+ try {
129
+ // Sort patterns by priority and apply in order
130
+ const sortedPatterns = [...MASKING_PATTERNS].sort((a, b) => a.priority - b.priority);
131
+ for (const pattern of sortedPatterns) {
132
+ // Reset regex lastIndex for global patterns
133
+ pattern.regex.lastIndex = 0;
134
+ masked = masked.replace(pattern.regex, pattern.mask);
135
+ }
136
+ return masked;
137
+ }
138
+ catch {
139
+ // Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 4.4:
140
+ // On masking error, return a safe placeholder
141
+ return '[MASKING_ERROR]';
142
+ }
143
+ }
144
+ /**
145
+ * Check if content contains sensitive data
146
+ *
147
+ * @param content - Content to check
148
+ * @returns true if sensitive data is detected
149
+ */
150
+ function containsSensitiveData(content) {
151
+ if (!content || typeof content !== 'string') {
152
+ return false;
153
+ }
154
+ for (const pattern of MASKING_PATTERNS) {
155
+ pattern.regex.lastIndex = 0;
156
+ if (pattern.regex.test(content)) {
157
+ return true;
158
+ }
159
+ }
160
+ return false;
161
+ }
162
+ /**
163
+ * Mask sensitive data in an object (recursive)
164
+ *
165
+ * @param obj - Object to mask
166
+ * @returns Masked object
167
+ */
168
+ function maskSensitiveObject(obj) {
169
+ if (obj === null || obj === undefined) {
170
+ return obj;
171
+ }
172
+ if (typeof obj === 'string') {
173
+ return maskSensitiveData(obj);
174
+ }
175
+ if (Array.isArray(obj)) {
176
+ return obj.map(item => maskSensitiveObject(item));
177
+ }
178
+ if (typeof obj === 'object') {
179
+ const result = {};
180
+ for (const [key, value] of Object.entries(obj)) {
181
+ result[key] = maskSensitiveObject(value);
182
+ }
183
+ return result;
184
+ }
185
+ return obj;
186
+ }
187
+ /**
188
+ * Get API key status (SET/NOT SET) without revealing the value
189
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24
190
+ *
191
+ * @param envVar - Environment variable name
192
+ * @returns 'SET' or 'NOT SET'
193
+ */
194
+ function getApiKeyStatus(envVar) {
195
+ const value = process.env[envVar];
196
+ return (value && value.trim() !== '') ? 'SET' : 'NOT SET';
197
+ }
198
+ /**
199
+ * Check API key availability for a provider
200
+ *
201
+ * @param provider - Provider identifier
202
+ * @returns Object with status and env variable name
203
+ */
204
+ function checkApiKeyForProvider(provider) {
205
+ const keyMapping = {
206
+ 'claude-code': null,
207
+ 'openai': 'OPENAI_API_KEY',
208
+ 'anthropic': 'ANTHROPIC_API_KEY',
209
+ };
210
+ const envVar = keyMapping[provider];
211
+ if (envVar === null || envVar === undefined) {
212
+ return { required: false, envVar: null, status: 'NOT_REQUIRED' };
213
+ }
214
+ return {
215
+ required: true,
216
+ envVar,
217
+ status: getApiKeyStatus(envVar),
218
+ };
219
+ }
220
+ /**
221
+ * Get list of pattern names by priority
222
+ */
223
+ function getPatternsByPriority(priority) {
224
+ return MASKING_PATTERNS
225
+ .filter(p => p.priority === priority)
226
+ .map(p => p.name);
227
+ }
228
+ //# sourceMappingURL=sensitive-data-masker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensitive-data-masker.js","sourceRoot":"","sources":["../../src/logging/sensitive-data-masker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Task Log Manager
3
+ *
4
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md:
5
+ * - Logs stored in .claude/logs/sessions/<session_id>/
6
+ * - Two-layer viewing (list and detail)
7
+ * - Visibility control (summary/full)
8
+ * - Thread/Run/Task hierarchy support (v2.0)
9
+ */
10
+ import { TaskLog, TaskLogIndex, TaskLogEntry, LogEvent, LogEventType, LogEventContent, VisibilityLevel, Thread, Run, RunTrigger, RunStatus, ThreadType, SessionMetadata } from '../models/repl/task-log';
11
+ import type { BlockedReason, TerminatedBy } from '../models/enums';
12
+ /**
13
+ * Options for completing a task
14
+ * Per spec 10_REPL_UX.md Section 10: Executor blocking fields (Property 34-36)
15
+ */
16
+ export interface CompleteTaskOptions {
17
+ filesModified?: string[];
18
+ evidenceRef?: string;
19
+ errorMessage?: string;
20
+ /** Executor blocked in non-interactive mode */
21
+ executorBlocked?: boolean;
22
+ /** Blocking reason */
23
+ blockedReason?: BlockedReason;
24
+ /** Time until blocking was detected (ms) */
25
+ timeoutMs?: number;
26
+ /** How the executor was terminated */
27
+ terminatedBy?: TerminatedBy;
28
+ }
29
+ /**
30
+ * Log directory structure
31
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 1.1
32
+ */
33
+ declare const LOG_DIR = "logs";
34
+ declare const SESSIONS_DIR = "sessions";
35
+ declare const TASKS_DIR = "tasks";
36
+ declare const RAW_DIR = "raw";
37
+ declare const INDEX_FILE = "index.json";
38
+ declare const SESSION_FILE = "session.json";
39
+ /**
40
+ * Task Log Manager class
41
+ * Supports Thread/Run/Task hierarchy (v2.0)
42
+ */
43
+ export declare class TaskLogManager {
44
+ private readonly projectPath;
45
+ private readonly logsPath;
46
+ private threadCounters;
47
+ private runCounters;
48
+ private taskCounters;
49
+ constructor(projectPath: string);
50
+ /**
51
+ * Get session directory path
52
+ */
53
+ private getSessionPath;
54
+ /**
55
+ * Get session tasks directory path
56
+ */
57
+ private getSessionTasksPath;
58
+ /**
59
+ * Ensure log directories exist (legacy support)
60
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 1.3
61
+ */
62
+ ensureLogDirectories(): Promise<void>;
63
+ /**
64
+ * Ensure session-based directories exist
65
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 1.1
66
+ */
67
+ ensureSessionDirectories(sessionId: string): Promise<void>;
68
+ /**
69
+ * Initialize a new session
70
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 1.2
71
+ */
72
+ initializeSession(sessionId: string): Promise<SessionMetadata>;
73
+ /**
74
+ * Update global index with new session
75
+ */
76
+ private updateGlobalIndex;
77
+ /**
78
+ * Get session metadata
79
+ */
80
+ getSessionMetadata(sessionId: string): Promise<SessionMetadata>;
81
+ /**
82
+ * Save session metadata
83
+ */
84
+ private saveSessionMetadata;
85
+ /**
86
+ * Get session index
87
+ */
88
+ getSessionIndex(sessionId: string): Promise<TaskLogIndex>;
89
+ /**
90
+ * Save session index
91
+ */
92
+ private saveSessionIndex;
93
+ /**
94
+ * Generate next thread ID for session
95
+ */
96
+ private generateThreadId;
97
+ /**
98
+ * Generate next run ID for session
99
+ */
100
+ private generateRunId;
101
+ /**
102
+ * Generate next task ID for session
103
+ */
104
+ private generateTaskId;
105
+ /**
106
+ * Create a new thread
107
+ * Per spec 05_DATA_MODELS.md Section "Thread"
108
+ */
109
+ createThread(sessionId: string, threadType: ThreadType, description?: string): Promise<Thread>;
110
+ /**
111
+ * Create a new run
112
+ * Per spec 05_DATA_MODELS.md Section "Run"
113
+ */
114
+ createRun(sessionId: string, threadId: string, trigger: RunTrigger): Promise<Run>;
115
+ /**
116
+ * Get a run by ID
117
+ */
118
+ getRun(sessionId: string, runId: string): Promise<Run | null>;
119
+ /**
120
+ * Complete a run
121
+ */
122
+ completeRun(sessionId: string, runId: string, status: RunStatus): Promise<void>;
123
+ /**
124
+ * Complete a task with session context
125
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 26: Fail-Closed Logging
126
+ * TaskLog MUST be saved for ALL terminal states (COMPLETE, INCOMPLETE, ERROR)
127
+ * Per spec 10_REPL_UX.md Section 10: Records executor blocking info (Property 34-36)
128
+ */
129
+ completeTaskWithSession(taskId: string, sessionId: string, status: 'COMPLETE' | 'INCOMPLETE' | 'ERROR', filesModified?: string[], evidenceRef?: string, errorMessage?: string, options?: CompleteTaskOptions): Promise<void>;
130
+ /**
131
+ * Create a task with thread/run context
132
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 2.3
133
+ */
134
+ createTaskWithContext(sessionId: string, threadId: string, runId: string, parentTaskId?: string): Promise<TaskLog>;
135
+ /**
136
+ * Increment task count in global index
137
+ */
138
+ private incrementGlobalTaskCount;
139
+ /**
140
+ * Get task log with session context
141
+ */
142
+ getTaskLogWithSession(taskId: string, sessionId: string): Promise<TaskLog | null>;
143
+ /**
144
+ * Save task log with session context
145
+ */
146
+ private saveTaskLogWithSession;
147
+ /**
148
+ * Add event to task log with session context
149
+ */
150
+ addEventWithSession(taskId: string, sessionId: string, eventType: LogEventType, content: LogEventContent, metadata?: Record<string, unknown>): Promise<LogEvent>;
151
+ /**
152
+ * Get task detail with session context
153
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 2.2
154
+ */
155
+ getTaskDetailWithSession(taskId: string, sessionId: string, visibility?: VisibilityLevel): Promise<{
156
+ log: TaskLog | null;
157
+ events: LogEvent[];
158
+ }>;
159
+ /**
160
+ * Format tree view of session hierarchy
161
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 2.5
162
+ */
163
+ formatTreeView(sessionId: string): Promise<string>;
164
+ /**
165
+ * Get or create log index (legacy)
166
+ */
167
+ getOrCreateIndex(sessionId: string): Promise<TaskLogIndex>;
168
+ /**
169
+ * Save log index (legacy)
170
+ */
171
+ saveIndex(index: TaskLogIndex): Promise<void>;
172
+ /**
173
+ * Create a new task log (legacy - without thread/run context)
174
+ */
175
+ createTask(taskId: string, sessionId: string): Promise<TaskLog>;
176
+ /**
177
+ * Get task log by ID (legacy)
178
+ */
179
+ getTaskLog(taskId: string): Promise<TaskLog | null>;
180
+ /**
181
+ * Save task log (legacy)
182
+ */
183
+ saveTaskLog(log: TaskLog): Promise<void>;
184
+ /**
185
+ * Add event to task log (legacy)
186
+ */
187
+ addEvent(taskId: string, eventType: LogEventType, content: LogEventContent, metadata?: Record<string, unknown>): Promise<LogEvent>;
188
+ /**
189
+ * Complete a task (legacy)
190
+ */
191
+ completeTask(taskId: string, status: 'COMPLETE' | 'INCOMPLETE' | 'ERROR', filesModified?: string[], evidenceRef?: string, errorMessage?: string): Promise<void>;
192
+ /**
193
+ * Get task list for display (Layer 1) (legacy)
194
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 2.1
195
+ */
196
+ getTaskList(sessionId: string): Promise<TaskLogEntry[]>;
197
+ /**
198
+ * Get task detail for display (Layer 2) (legacy)
199
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md Section 2.2
200
+ */
201
+ getTaskDetail(taskId: string, visibility?: VisibilityLevel): Promise<{
202
+ log: TaskLog | null;
203
+ events: LogEvent[];
204
+ }>;
205
+ /**
206
+ * Format task list for REPL display (legacy)
207
+ */
208
+ formatTaskList(entries: TaskLogEntry[], sessionId: string): string;
209
+ /**
210
+ * Format task detail for REPL display (legacy)
211
+ */
212
+ formatTaskDetail(taskId: string, log: TaskLog, events: LogEvent[], isFull: boolean): string;
213
+ }
214
+ export { LOG_DIR, INDEX_FILE, TASKS_DIR, RAW_DIR, SESSIONS_DIR, SESSION_FILE };
215
+ //# sourceMappingURL=task-log-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-log-manager.d.ts","sourceRoot":"","sources":["../../src/logging/task-log-manager.ts"],"names":[],"mappings":"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"}