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,234 @@
1
+ "use strict";
2
+ /**
3
+ * /init Command Handler
4
+ * Creates .claude/ scaffold in target project
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.InitCommand = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ /**
44
+ * Default CLAUDE.md template
45
+ */
46
+ const DEFAULT_CLAUDE_MD = `# Project Configuration
47
+
48
+ This project uses PM Orchestrator for AI-assisted development.
49
+
50
+ ## Project Overview
51
+
52
+ [Add your project description here]
53
+
54
+ ## Development Guidelines
55
+
56
+ - Follow the established coding standards
57
+ - Write tests for new functionality
58
+ - Document significant changes
59
+
60
+ ## Task Categories
61
+
62
+ - READ_INFO: Information gathering, code analysis
63
+ - LIGHT_EDIT: Small changes, bug fixes
64
+ - IMPLEMENTATION: New features, significant changes
65
+ - REVIEW_RESPONSE: Code review responses
66
+ - CONFIG_CI_CHANGE: Configuration and CI/CD changes
67
+ - DANGEROUS_OP: Destructive operations requiring confirmation
68
+ `;
69
+ /**
70
+ * Default settings.json template
71
+ */
72
+ const DEFAULT_SETTINGS = {
73
+ project: {
74
+ name: '',
75
+ version: '1.0.0',
76
+ },
77
+ pm: {
78
+ autoStart: false,
79
+ defaultModel: 'claude-sonnet-4-20250514',
80
+ },
81
+ executor: {
82
+ maxRetries: 3,
83
+ timeoutMs: 300000,
84
+ checkIntervalMs: 5000,
85
+ },
86
+ };
87
+ /**
88
+ * Default pm-orchestrator agent template
89
+ */
90
+ const DEFAULT_PM_ORCHESTRATOR_AGENT = `# PM Orchestrator Agent
91
+
92
+ This agent orchestrates task execution across sub-agents.
93
+
94
+ ## Responsibilities
95
+
96
+ - Task type classification
97
+ - Sub-agent coordination
98
+ - Result aggregation
99
+
100
+ ## Task Types
101
+
102
+ | Type | Description |
103
+ |------|-------------|
104
+ | READ_INFO | Read-only operations |
105
+ | LIGHT_EDIT | Minor edits |
106
+ | IMPLEMENTATION | Feature implementation |
107
+ | REVIEW_RESPONSE | PR review responses |
108
+ | CONFIG_CI_CHANGE | Config changes |
109
+ | DANGEROUS_OP | Destructive operations |
110
+ `;
111
+ /**
112
+ * Default rules template
113
+ */
114
+ const DEFAULT_RULES = `# Project Rules
115
+
116
+ ## Code Quality
117
+
118
+ - All code must pass linting
119
+ - Test coverage required for new features
120
+ - Type safety is mandatory
121
+
122
+ ## Git Workflow
123
+
124
+ - Feature branches required
125
+ - PR review before merge
126
+ - Descriptive commit messages
127
+ `;
128
+ /**
129
+ * Init command handler
130
+ */
131
+ class InitCommand {
132
+ /**
133
+ * Execute init command
134
+ * Per spec 10_REPL_UX.md L96-99:
135
+ * - Check ALL files BEFORE creating any
136
+ * - If ANY exist, return ERROR with list of existing files
137
+ * - Only create if NONE exist
138
+ */
139
+ async execute(targetPath) {
140
+ const absolutePath = path.resolve(targetPath);
141
+ // Verify target directory exists
142
+ if (!fs.existsSync(absolutePath)) {
143
+ return {
144
+ success: false,
145
+ message: `Directory does not exist: ${absolutePath}`,
146
+ };
147
+ }
148
+ const claudeDir = path.join(absolutePath, '.claude');
149
+ const agentsDir = path.join(claudeDir, 'agents');
150
+ const rulesDir = path.join(claudeDir, 'rules');
151
+ // Define all paths that will be created
152
+ const pathsToCreate = {
153
+ '.claude/': claudeDir,
154
+ '.claude/CLAUDE.md': path.join(claudeDir, 'CLAUDE.md'),
155
+ '.claude/settings.json': path.join(claudeDir, 'settings.json'),
156
+ '.claude/agents/': agentsDir,
157
+ '.claude/agents/pm-orchestrator.md': path.join(agentsDir, 'pm-orchestrator.md'),
158
+ '.claude/rules/': rulesDir,
159
+ '.claude/rules/project-rules.md': path.join(rulesDir, 'project-rules.md'),
160
+ };
161
+ // Per spec L97-98: Check ALL files BEFORE creating any
162
+ // If any exist, return ERROR with list
163
+ const existingFiles = [];
164
+ for (const [name, fullPath] of Object.entries(pathsToCreate)) {
165
+ if (fs.existsSync(fullPath)) {
166
+ existingFiles.push(name);
167
+ }
168
+ }
169
+ // Per spec L98: "存在する場合は ERROR(どれが存在しているかを明示)として停止する"
170
+ if (existingFiles.length > 0) {
171
+ return {
172
+ success: false,
173
+ message: `Cannot initialize: files already exist: ${existingFiles.join(', ')}`,
174
+ existingFiles,
175
+ };
176
+ }
177
+ // Per spec L97: Only create if NONE exist
178
+ const createdPaths = [];
179
+ try {
180
+ // Create .claude directory
181
+ fs.mkdirSync(claudeDir, { recursive: true });
182
+ createdPaths.push(claudeDir);
183
+ // Create CLAUDE.md
184
+ const claudeMdPath = path.join(claudeDir, 'CLAUDE.md');
185
+ fs.writeFileSync(claudeMdPath, DEFAULT_CLAUDE_MD, 'utf-8');
186
+ createdPaths.push(claudeMdPath);
187
+ // Create settings.json
188
+ const settingsPath = path.join(claudeDir, 'settings.json');
189
+ const settings = {
190
+ ...DEFAULT_SETTINGS,
191
+ project: {
192
+ ...DEFAULT_SETTINGS.project,
193
+ name: path.basename(absolutePath),
194
+ },
195
+ };
196
+ fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
197
+ createdPaths.push(settingsPath);
198
+ // Create agents directory
199
+ fs.mkdirSync(agentsDir, { recursive: true });
200
+ createdPaths.push(agentsDir);
201
+ // Create pm-orchestrator.md
202
+ const pmOrchestratorPath = path.join(agentsDir, 'pm-orchestrator.md');
203
+ fs.writeFileSync(pmOrchestratorPath, DEFAULT_PM_ORCHESTRATOR_AGENT, 'utf-8');
204
+ createdPaths.push(pmOrchestratorPath);
205
+ // Create rules directory
206
+ fs.mkdirSync(rulesDir, { recursive: true });
207
+ createdPaths.push(rulesDir);
208
+ // Create default rules
209
+ const rulesPath = path.join(rulesDir, 'project-rules.md');
210
+ fs.writeFileSync(rulesPath, DEFAULT_RULES, 'utf-8');
211
+ createdPaths.push(rulesPath);
212
+ return {
213
+ success: true,
214
+ message: `Initialized .claude/ with ${createdPaths.length} files/directories`,
215
+ createdPaths,
216
+ };
217
+ }
218
+ catch (err) {
219
+ return {
220
+ success: false,
221
+ message: `Failed to initialize: ${err.message}`,
222
+ };
223
+ }
224
+ }
225
+ /**
226
+ * Check if a directory is already initialized
227
+ */
228
+ isInitialized(targetPath) {
229
+ const claudeDir = path.join(path.resolve(targetPath), '.claude');
230
+ return fs.existsSync(claudeDir);
231
+ }
232
+ }
233
+ exports.InitCommand = InitCommand;
234
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/repl/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Keys Command
3
+ *
4
+ * Per spec 10_REPL_UX.md Section 2.3:
5
+ * - /keys: show status of all API keys (SET/NOT SET)
6
+ * - /keys check: validate API key format
7
+ *
8
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
9
+ * - API keys must NEVER appear in logs or evidence
10
+ * - Only "SET" or "NOT SET" status is allowed
11
+ */
12
+ /**
13
+ * Key status result
14
+ */
15
+ export interface KeyStatus {
16
+ provider: string;
17
+ envVar: string | null;
18
+ required: boolean;
19
+ status: 'SET' | 'NOT SET' | 'NOT_REQUIRED';
20
+ }
21
+ /**
22
+ * Keys command result
23
+ */
24
+ export interface KeysResult {
25
+ success: boolean;
26
+ message: string;
27
+ keys?: KeyStatus[];
28
+ error?: {
29
+ code: string;
30
+ message: string;
31
+ };
32
+ }
33
+ /**
34
+ * Keys Command class
35
+ */
36
+ export declare class KeysCommand {
37
+ /**
38
+ * Get status of all API keys
39
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
40
+ * - Only show SET/NOT SET, never the actual key value
41
+ *
42
+ * @returns Keys result
43
+ */
44
+ getKeyStatus(): Promise<KeysResult>;
45
+ /**
46
+ * Check if a specific provider's API key is configured
47
+ *
48
+ * @param providerId - Provider ID
49
+ * @returns Keys result for specific provider
50
+ */
51
+ checkProviderKey(providerId: string): Promise<KeysResult>;
52
+ /**
53
+ * Format key status for display
54
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
55
+ * - NEVER show actual key values
56
+ * - Only show SET/NOT SET status
57
+ *
58
+ * @param keys - Key status list
59
+ * @returns Formatted string
60
+ */
61
+ formatKeyStatus(keys: KeyStatus[]): string;
62
+ }
63
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,KAAK,GAAG,SAAS,GAAG,cAAc,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC;IAsBzC;;;;;OAKG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgC/D;;;;;;;;OAQG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM;CA0B3C"}
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ /**
3
+ * Keys Command
4
+ *
5
+ * Per spec 10_REPL_UX.md Section 2.3:
6
+ * - /keys: show status of all API keys (SET/NOT SET)
7
+ * - /keys check: validate API key format
8
+ *
9
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
10
+ * - API keys must NEVER appear in logs or evidence
11
+ * - Only "SET" or "NOT SET" status is allowed
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.KeysCommand = void 0;
15
+ const sensitive_data_masker_1 = require("../../logging/sensitive-data-masker");
16
+ const repl_1 = require("../../models/repl");
17
+ const model_registry_1 = require("../../models/repl/model-registry");
18
+ /**
19
+ * Keys Command class
20
+ */
21
+ class KeysCommand {
22
+ /**
23
+ * Get status of all API keys
24
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
25
+ * - Only show SET/NOT SET, never the actual key value
26
+ *
27
+ * @returns Keys result
28
+ */
29
+ async getKeyStatus() {
30
+ const providers = (0, model_registry_1.getAllProviders)();
31
+ const keys = [];
32
+ for (const provider of providers) {
33
+ const keyCheck = (0, sensitive_data_masker_1.checkApiKeyForProvider)(provider.id);
34
+ keys.push({
35
+ provider: provider.displayName,
36
+ envVar: keyCheck.envVar,
37
+ required: keyCheck.required,
38
+ status: keyCheck.status,
39
+ });
40
+ }
41
+ return {
42
+ success: true,
43
+ message: 'API key status',
44
+ keys,
45
+ };
46
+ }
47
+ /**
48
+ * Check if a specific provider's API key is configured
49
+ *
50
+ * @param providerId - Provider ID
51
+ * @returns Keys result for specific provider
52
+ */
53
+ async checkProviderKey(providerId) {
54
+ // Validate provider
55
+ if (!repl_1.VALID_PROVIDERS.includes(providerId)) {
56
+ const validList = repl_1.VALID_PROVIDERS.join(', ');
57
+ return {
58
+ success: false,
59
+ message: 'Invalid provider',
60
+ error: {
61
+ code: 'E102',
62
+ message: 'Invalid provider: ' + providerId + '. Valid providers: ' + validList,
63
+ },
64
+ };
65
+ }
66
+ const keyCheck = (0, sensitive_data_masker_1.checkApiKeyForProvider)(providerId);
67
+ const providers = (0, model_registry_1.getAllProviders)();
68
+ const providerInfo = providers.find(p => p.id === providerId);
69
+ const keys = [{
70
+ provider: providerInfo?.displayName || providerId,
71
+ envVar: keyCheck.envVar,
72
+ required: keyCheck.required,
73
+ status: keyCheck.status,
74
+ }];
75
+ return {
76
+ success: true,
77
+ message: 'API key status for ' + providerId,
78
+ keys,
79
+ };
80
+ }
81
+ /**
82
+ * Format key status for display
83
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 24:
84
+ * - NEVER show actual key values
85
+ * - Only show SET/NOT SET status
86
+ *
87
+ * @param keys - Key status list
88
+ * @returns Formatted string
89
+ */
90
+ formatKeyStatus(keys) {
91
+ let output = 'API Key Status:\n\n';
92
+ for (const key of keys) {
93
+ output += ' ' + key.provider + '\n';
94
+ if (!key.required) {
95
+ output += ' Status: Not required (uses Claude Code CLI)\n';
96
+ }
97
+ else {
98
+ const statusIcon = key.status === 'SET' ? '[OK]' : '[MISSING]';
99
+ output += ' Status: ' + statusIcon + ' ' + key.status + '\n';
100
+ output += ' Env Var: ' + key.envVar + '\n';
101
+ }
102
+ output += '\n';
103
+ }
104
+ // Add help text
105
+ output += 'To set an API key, export the environment variable:\n';
106
+ output += ' export OPENAI_API_KEY=sk-...\n';
107
+ output += ' export ANTHROPIC_API_KEY=sk-ant-...\n';
108
+ output += '\n';
109
+ output += 'Note: API keys are NEVER displayed for security reasons.';
110
+ return output;
111
+ }
112
+ }
113
+ exports.KeysCommand = KeysCommand;
114
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/repl/commands/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Logs Command
3
+ *
4
+ * Per spec 10_REPL_UX.md Section 2.4:
5
+ * - /logs: list task logs for current session
6
+ * - /logs <task-id>: show task details (summary view)
7
+ * - /logs <task-id> --full: show task details (full view with executor logs)
8
+ *
9
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md:
10
+ * - Two-layer viewing (summary/full)
11
+ * - Logs stored in .claude/logs/
12
+ *
13
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 25:
14
+ * - Log visibility control (summary default, --full for details)
15
+ */
16
+ /**
17
+ * Logs command result
18
+ */
19
+ export interface LogsResult {
20
+ success: boolean;
21
+ message: string;
22
+ output?: string;
23
+ error?: {
24
+ code: string;
25
+ message: string;
26
+ };
27
+ }
28
+ /**
29
+ * Logs Command class
30
+ */
31
+ export declare class LogsCommand {
32
+ private logManager;
33
+ private projectPath;
34
+ /**
35
+ * Initialize log manager with project path
36
+ *
37
+ * @param projectPath - Project path
38
+ */
39
+ private ensureLogManager;
40
+ /**
41
+ * List task logs for a session
42
+ * Per spec 10_REPL_UX.md: /logs shows task list (Layer 1)
43
+ *
44
+ * @param projectPath - Project path
45
+ * @param sessionId - Session ID
46
+ * @returns Logs result
47
+ */
48
+ listLogs(projectPath: string, sessionId: string): Promise<LogsResult>;
49
+ /**
50
+ * Get task detail
51
+ * Per spec 10_REPL_UX.md: /logs <task-id> shows details (Layer 2)
52
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 25: --full for executor logs
53
+ *
54
+ * @param projectPath - Project path
55
+ * @param taskId - Task ID
56
+ * @param full - Show full details (executor logs)
57
+ * @returns Logs result
58
+ */
59
+ getTaskDetail(projectPath: string, taskId: string, full?: boolean): Promise<LogsResult>;
60
+ /**
61
+ * Create a new task log
62
+ * Called when starting a new task
63
+ *
64
+ * @param projectPath - Project path
65
+ * @param taskId - Task ID
66
+ * @param sessionId - Session ID
67
+ * @returns Logs result
68
+ */
69
+ createTaskLog(projectPath: string, taskId: string, sessionId: string): Promise<LogsResult>;
70
+ /**
71
+ * Add event to task log
72
+ *
73
+ * @param projectPath - Project path
74
+ * @param taskId - Task ID
75
+ * @param eventType - Event type
76
+ * @param content - Event content
77
+ * @returns Logs result
78
+ */
79
+ addEvent(projectPath: string, taskId: string, eventType: string, content: Record<string, unknown>): Promise<LogsResult>;
80
+ /**
81
+ * Complete a task log
82
+ *
83
+ * @param projectPath - Project path
84
+ * @param taskId - Task ID
85
+ * @param status - Completion status
86
+ * @param filesModified - List of modified files
87
+ * @returns Logs result
88
+ */
89
+ completeTask(projectPath: string, taskId: string, status: 'COMPLETE' | 'INCOMPLETE' | 'ERROR', filesModified?: string[]): Promise<LogsResult>;
90
+ }
91
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAAc;IAEjC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;OAOG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB3E;;;;;;;;;OASG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAoCpG;;;;;;;;OAQG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBhG;;;;;;;;OAQG;IACG,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,UAAU,CAAC;IAyBtB;;;;;;;;OAQG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,EAC3C,aAAa,GAAE,MAAM,EAAO,GAC3B,OAAO,CAAC,UAAU,CAAC;CAoBvB"}