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,200 @@
1
+ "use strict";
2
+ /**
3
+ * Logs Command
4
+ *
5
+ * Per spec 10_REPL_UX.md Section 2.4:
6
+ * - /logs: list task logs for current session
7
+ * - /logs <task-id>: show task details (summary view)
8
+ * - /logs <task-id> --full: show task details (full view with executor logs)
9
+ *
10
+ * Per spec 13_LOGGING_AND_OBSERVABILITY.md:
11
+ * - Two-layer viewing (summary/full)
12
+ * - Logs stored in .claude/logs/
13
+ *
14
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 25:
15
+ * - Log visibility control (summary default, --full for details)
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.LogsCommand = void 0;
19
+ const task_log_manager_1 = require("../../logging/task-log-manager");
20
+ /**
21
+ * Logs Command class
22
+ */
23
+ class LogsCommand {
24
+ logManager = null;
25
+ projectPath = '';
26
+ /**
27
+ * Initialize log manager with project path
28
+ *
29
+ * @param projectPath - Project path
30
+ */
31
+ ensureLogManager(projectPath) {
32
+ if (!this.logManager || this.projectPath !== projectPath) {
33
+ this.projectPath = projectPath;
34
+ this.logManager = new task_log_manager_1.TaskLogManager(projectPath);
35
+ }
36
+ return this.logManager;
37
+ }
38
+ /**
39
+ * List task logs for a session
40
+ * Per spec 10_REPL_UX.md: /logs shows task list (Layer 1)
41
+ *
42
+ * @param projectPath - Project path
43
+ * @param sessionId - Session ID
44
+ * @returns Logs result
45
+ */
46
+ async listLogs(projectPath, sessionId) {
47
+ try {
48
+ const manager = this.ensureLogManager(projectPath);
49
+ const entries = await manager.getTaskList(sessionId);
50
+ const output = manager.formatTaskList(entries, sessionId);
51
+ return {
52
+ success: true,
53
+ message: 'Task logs retrieved',
54
+ output,
55
+ };
56
+ }
57
+ catch (err) {
58
+ return {
59
+ success: false,
60
+ message: 'Failed to retrieve logs',
61
+ error: {
62
+ code: 'E107',
63
+ message: 'Failed to retrieve logs: ' + err.message,
64
+ },
65
+ };
66
+ }
67
+ }
68
+ /**
69
+ * Get task detail
70
+ * Per spec 10_REPL_UX.md: /logs <task-id> shows details (Layer 2)
71
+ * Per spec 06_CORRECTNESS_PROPERTIES.md Property 25: --full for executor logs
72
+ *
73
+ * @param projectPath - Project path
74
+ * @param taskId - Task ID
75
+ * @param full - Show full details (executor logs)
76
+ * @returns Logs result
77
+ */
78
+ async getTaskDetail(projectPath, taskId, full = false) {
79
+ try {
80
+ const manager = this.ensureLogManager(projectPath);
81
+ const visibility = full ? 'full' : 'summary';
82
+ const { log, events } = await manager.getTaskDetail(taskId, visibility);
83
+ if (!log) {
84
+ return {
85
+ success: false,
86
+ message: 'Task not found',
87
+ error: {
88
+ code: 'E108',
89
+ message: 'Task not found: ' + taskId,
90
+ },
91
+ };
92
+ }
93
+ const output = manager.formatTaskDetail(taskId, log, events, full);
94
+ return {
95
+ success: true,
96
+ message: 'Task detail retrieved',
97
+ output,
98
+ };
99
+ }
100
+ catch (err) {
101
+ return {
102
+ success: false,
103
+ message: 'Failed to retrieve task detail',
104
+ error: {
105
+ code: 'E107',
106
+ message: 'Failed to retrieve task detail: ' + err.message,
107
+ },
108
+ };
109
+ }
110
+ }
111
+ /**
112
+ * Create a new task log
113
+ * Called when starting a new task
114
+ *
115
+ * @param projectPath - Project path
116
+ * @param taskId - Task ID
117
+ * @param sessionId - Session ID
118
+ * @returns Logs result
119
+ */
120
+ async createTaskLog(projectPath, taskId, sessionId) {
121
+ try {
122
+ const manager = this.ensureLogManager(projectPath);
123
+ await manager.createTask(taskId, sessionId);
124
+ return {
125
+ success: true,
126
+ message: 'Task log created',
127
+ };
128
+ }
129
+ catch (err) {
130
+ return {
131
+ success: false,
132
+ message: 'Failed to create task log',
133
+ error: {
134
+ code: 'E107',
135
+ message: 'Failed to create task log: ' + err.message,
136
+ },
137
+ };
138
+ }
139
+ }
140
+ /**
141
+ * Add event to task log
142
+ *
143
+ * @param projectPath - Project path
144
+ * @param taskId - Task ID
145
+ * @param eventType - Event type
146
+ * @param content - Event content
147
+ * @returns Logs result
148
+ */
149
+ async addEvent(projectPath, taskId, eventType, content) {
150
+ try {
151
+ const manager = this.ensureLogManager(projectPath);
152
+ await manager.addEvent(taskId, eventType, content);
153
+ return {
154
+ success: true,
155
+ message: 'Event added',
156
+ };
157
+ }
158
+ catch (err) {
159
+ return {
160
+ success: false,
161
+ message: 'Failed to add event',
162
+ error: {
163
+ code: 'E107',
164
+ message: 'Failed to add event: ' + err.message,
165
+ },
166
+ };
167
+ }
168
+ }
169
+ /**
170
+ * Complete a task log
171
+ *
172
+ * @param projectPath - Project path
173
+ * @param taskId - Task ID
174
+ * @param status - Completion status
175
+ * @param filesModified - List of modified files
176
+ * @returns Logs result
177
+ */
178
+ async completeTask(projectPath, taskId, status, filesModified = []) {
179
+ try {
180
+ const manager = this.ensureLogManager(projectPath);
181
+ await manager.completeTask(taskId, status, filesModified);
182
+ return {
183
+ success: true,
184
+ message: 'Task completed',
185
+ };
186
+ }
187
+ catch (err) {
188
+ return {
189
+ success: false,
190
+ message: 'Failed to complete task',
191
+ error: {
192
+ code: 'E107',
193
+ message: 'Failed to complete task: ' + err.message,
194
+ },
195
+ };
196
+ }
197
+ }
198
+ }
199
+ exports.LogsCommand = LogsCommand;
200
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/repl/commands/logs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * /model Command Handler
3
+ *
4
+ * Per spec 10_REPL_UX.md L113-143:
5
+ * - /model is REPL-local feature
6
+ * - Model preference is stored in .claude/repl.json (NOT settings.json)
7
+ * - Runner Core and Configuration Manager ignore this file
8
+ * - .claude/ missing → E101 ERROR
9
+ * - repl.json corrupted → E105 ERROR
10
+ * - Model changes must generate Evidence
11
+ */
12
+ /**
13
+ * Model command result
14
+ */
15
+ export interface ModelResult {
16
+ success: boolean;
17
+ message?: string;
18
+ model?: string;
19
+ configPath?: string;
20
+ evidencePath?: string;
21
+ error?: {
22
+ code: string;
23
+ message: string;
24
+ };
25
+ }
26
+ /**
27
+ * Available models
28
+ */
29
+ export declare const AVAILABLE_MODELS: readonly ["claude-sonnet-4-20250514", "claude-opus-4-20250514", "claude-3-5-sonnet-20241022", "claude-3-opus-20240229", "claude-3-sonnet-20240229", "claude-3-haiku-20240307"];
30
+ export type ModelName = typeof AVAILABLE_MODELS[number] | string;
31
+ /**
32
+ * REPL configuration stored in .claude/repl.json
33
+ * Per spec 10_REPL_UX.md L123-128:
34
+ * {
35
+ * "selected_model": string,
36
+ * "updated_at": string
37
+ * }
38
+ */
39
+ export interface REPLConfig {
40
+ selected_model: string;
41
+ updated_at: string;
42
+ }
43
+ /**
44
+ * REPL Evidence record for model changes
45
+ * Per spec 10_REPL_UX.md L142: Model changes generate Evidence
46
+ */
47
+ export interface REPLEvidence {
48
+ evidence_id: string;
49
+ timestamp: string;
50
+ operation_type: 'REPL_MODEL_CHANGE';
51
+ previous_model: string | null;
52
+ new_model: string;
53
+ config_path: string;
54
+ hash: string;
55
+ }
56
+ /**
57
+ * Model command handler
58
+ */
59
+ export declare class ModelCommand {
60
+ /**
61
+ * Get current model configuration from repl.json
62
+ * Per spec 10_REPL_UX.md L133: If unset, display "UNSET"
63
+ * Per spec 10_REPL_UX.md L137: .claude/ missing → E101 ERROR
64
+ * Per spec 10_REPL_UX.md L138: JSON parse error → E105 ERROR
65
+ */
66
+ getModel(projectPath: string): Promise<ModelResult>;
67
+ /**
68
+ * Set model configuration in repl.json
69
+ * Per spec 10_REPL_UX.md L123-128: Schema: { "selected_model": string, "updated_at": string }
70
+ * Per spec 10_REPL_UX.md L129: Any non-empty string allowed (no validation)
71
+ * Per spec 10_REPL_UX.md L137: .claude/ missing → E101 ERROR
72
+ * Per spec 10_REPL_UX.md L142: Model changes must generate Evidence
73
+ */
74
+ setModel(projectPath: string, modelName: string): Promise<ModelResult>;
75
+ /**
76
+ * Generate Evidence for REPL model change
77
+ * Per spec 10_REPL_UX.md L142: Model changes are recorded as evidence
78
+ */
79
+ private generateEvidence;
80
+ /**
81
+ * List available models
82
+ */
83
+ listModels(): string[];
84
+ }
85
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,gLAOnB,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,mBAAmB,CAAC;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAmDzD;;;;;;OAMG;IACG,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAoE5E;;;OAGG;YACW,gBAAgB;IAwC9B;;OAEG;IACH,UAAU,IAAI,MAAM,EAAE;CAGvB"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ /**
3
+ * /model Command Handler
4
+ *
5
+ * Per spec 10_REPL_UX.md L113-143:
6
+ * - /model is REPL-local feature
7
+ * - Model preference is stored in .claude/repl.json (NOT settings.json)
8
+ * - Runner Core and Configuration Manager ignore this file
9
+ * - .claude/ missing → E101 ERROR
10
+ * - repl.json corrupted → E105 ERROR
11
+ * - Model changes must generate Evidence
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.ModelCommand = exports.AVAILABLE_MODELS = void 0;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const crypto = __importStar(require("crypto"));
51
+ const uuid_1 = require("uuid");
52
+ /**
53
+ * Available models
54
+ */
55
+ exports.AVAILABLE_MODELS = [
56
+ 'claude-sonnet-4-20250514',
57
+ 'claude-opus-4-20250514',
58
+ 'claude-3-5-sonnet-20241022',
59
+ 'claude-3-opus-20240229',
60
+ 'claude-3-sonnet-20240229',
61
+ 'claude-3-haiku-20240307',
62
+ ];
63
+ /**
64
+ * Model command handler
65
+ */
66
+ class ModelCommand {
67
+ /**
68
+ * Get current model configuration from repl.json
69
+ * Per spec 10_REPL_UX.md L133: If unset, display "UNSET"
70
+ * Per spec 10_REPL_UX.md L137: .claude/ missing → E101 ERROR
71
+ * Per spec 10_REPL_UX.md L138: JSON parse error → E105 ERROR
72
+ */
73
+ async getModel(projectPath) {
74
+ const claudeDir = path.join(path.resolve(projectPath), '.claude');
75
+ const replPath = path.join(claudeDir, 'repl.json');
76
+ // Per spec 10_REPL_UX.md L137: .claude/ missing → E101
77
+ if (!fs.existsSync(claudeDir)) {
78
+ return {
79
+ success: false,
80
+ error: {
81
+ code: 'E101',
82
+ message: '.claude/ directory not found. Run /init first.',
83
+ },
84
+ };
85
+ }
86
+ // Per spec 10_REPL_UX.md L133: If unset, return "UNSET"
87
+ if (!fs.existsSync(replPath)) {
88
+ return {
89
+ success: true,
90
+ model: 'UNSET',
91
+ configPath: undefined,
92
+ };
93
+ }
94
+ try {
95
+ const content = fs.readFileSync(replPath, 'utf-8');
96
+ const config = JSON.parse(content);
97
+ return {
98
+ success: true,
99
+ model: config.selected_model,
100
+ configPath: replPath,
101
+ };
102
+ }
103
+ catch (err) {
104
+ // Per spec 10_REPL_UX.md L138: JSON parse error is E105
105
+ if (err instanceof SyntaxError) {
106
+ return {
107
+ success: false,
108
+ error: {
109
+ code: 'E105',
110
+ message: 'repl.json is corrupted (JSON parse error). Cannot recover.',
111
+ },
112
+ };
113
+ }
114
+ return {
115
+ success: false,
116
+ message: `Failed to read REPL config: ${err.message}`,
117
+ };
118
+ }
119
+ }
120
+ /**
121
+ * Set model configuration in repl.json
122
+ * Per spec 10_REPL_UX.md L123-128: Schema: { "selected_model": string, "updated_at": string }
123
+ * Per spec 10_REPL_UX.md L129: Any non-empty string allowed (no validation)
124
+ * Per spec 10_REPL_UX.md L137: .claude/ missing → E101 ERROR
125
+ * Per spec 10_REPL_UX.md L142: Model changes must generate Evidence
126
+ */
127
+ async setModel(projectPath, modelName) {
128
+ const claudeDir = path.join(path.resolve(projectPath), '.claude');
129
+ const replPath = path.join(claudeDir, 'repl.json');
130
+ const evidenceDir = path.join(claudeDir, 'evidence', 'repl');
131
+ // Per spec 10_REPL_UX.md L137: .claude/ missing → E101
132
+ if (!fs.existsSync(claudeDir)) {
133
+ return {
134
+ success: false,
135
+ error: {
136
+ code: 'E101',
137
+ message: '.claude/ directory not found. Run /init first.',
138
+ },
139
+ };
140
+ }
141
+ // Validate model name (allow any non-empty string per spec L129)
142
+ if (!modelName || modelName.trim().length === 0) {
143
+ return {
144
+ success: false,
145
+ message: 'Model name cannot be empty',
146
+ };
147
+ }
148
+ try {
149
+ // Get previous model for Evidence (null if unset)
150
+ let previousModel = null;
151
+ if (fs.existsSync(replPath)) {
152
+ try {
153
+ const existingContent = fs.readFileSync(replPath, 'utf-8');
154
+ const existingConfig = JSON.parse(existingContent);
155
+ previousModel = existingConfig.selected_model;
156
+ }
157
+ catch {
158
+ // Ignore parse errors when reading previous value
159
+ }
160
+ }
161
+ // Create spec-compliant config
162
+ const config = {
163
+ selected_model: modelName,
164
+ updated_at: new Date().toISOString(),
165
+ };
166
+ // Write to repl.json
167
+ fs.writeFileSync(replPath, JSON.stringify(config, null, 2), 'utf-8');
168
+ // Per spec 10_REPL_UX.md L142: Generate Evidence for model change
169
+ const evidencePath = await this.generateEvidence(evidenceDir, previousModel, modelName, replPath);
170
+ return {
171
+ success: true,
172
+ model: modelName,
173
+ configPath: replPath,
174
+ evidencePath,
175
+ };
176
+ }
177
+ catch (err) {
178
+ return {
179
+ success: false,
180
+ message: `Failed to save REPL config: ${err.message}`,
181
+ };
182
+ }
183
+ }
184
+ /**
185
+ * Generate Evidence for REPL model change
186
+ * Per spec 10_REPL_UX.md L142: Model changes are recorded as evidence
187
+ */
188
+ async generateEvidence(evidenceDir, previousModel, newModel, configPath) {
189
+ // Ensure evidence directory exists
190
+ if (!fs.existsSync(evidenceDir)) {
191
+ fs.mkdirSync(evidenceDir, { recursive: true });
192
+ }
193
+ const timestamp = new Date().toISOString();
194
+ const evidenceId = `repl-model-${(0, uuid_1.v4)()}`;
195
+ // Create hash from change details
196
+ const hashContent = JSON.stringify({
197
+ previous_model: previousModel,
198
+ new_model: newModel,
199
+ config_path: configPath,
200
+ timestamp,
201
+ });
202
+ const hash = `sha256:${crypto.createHash('sha256').update(hashContent).digest('hex')}`;
203
+ const evidence = {
204
+ evidence_id: evidenceId,
205
+ timestamp,
206
+ operation_type: 'REPL_MODEL_CHANGE',
207
+ previous_model: previousModel,
208
+ new_model: newModel,
209
+ config_path: configPath,
210
+ hash,
211
+ };
212
+ // Write evidence file
213
+ const evidencePath = path.join(evidenceDir, `${evidenceId}.json`);
214
+ fs.writeFileSync(evidencePath, JSON.stringify(evidence, null, 2), 'utf-8');
215
+ return evidencePath;
216
+ }
217
+ /**
218
+ * List available models
219
+ */
220
+ listModels() {
221
+ return [...exports.AVAILABLE_MODELS];
222
+ }
223
+ }
224
+ exports.ModelCommand = ModelCommand;
225
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/repl/commands/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Models Command
3
+ *
4
+ * Per spec 10_REPL_UX.md Section 2.2:
5
+ * - /models: list models for current provider
6
+ * - /models <provider>: list models for specific provider
7
+ *
8
+ * Per spec 12_LLM_PROVIDER_AND_MODELS.md:
9
+ * - OpenAI models with pricing
10
+ * - Anthropic models with pricing
11
+ * - claude-code delegates model selection
12
+ */
13
+ import { ModelInfo } from '../../models/repl/model-registry';
14
+ /**
15
+ * Models command result
16
+ */
17
+ export interface ModelsResult {
18
+ success: boolean;
19
+ message: string;
20
+ provider?: string;
21
+ models?: ModelInfo[];
22
+ currentModel?: string;
23
+ error?: {
24
+ code: string;
25
+ message: string;
26
+ };
27
+ }
28
+ /**
29
+ * Models Command class
30
+ */
31
+ export declare class ModelsCommand {
32
+ /**
33
+ * List models for current or specified provider
34
+ *
35
+ * @param projectPath - Project path
36
+ * @param providerId - Optional provider ID (uses current if not specified)
37
+ * @returns Models result
38
+ */
39
+ listModels(projectPath: string, providerId?: string): Promise<ModelsResult>;
40
+ /**
41
+ * Format model list for display
42
+ *
43
+ * @param models - Model list
44
+ * @param currentModel - Current selected model (optional)
45
+ * @param provider - Provider name
46
+ * @returns Formatted string
47
+ */
48
+ formatModelList(models: ModelInfo[], currentModel?: string, provider?: string): string;
49
+ }
50
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/models.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,OAAO,EACL,SAAS,EAGV,MAAM,kCAAkC,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAOD;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAiFjF;;;;;;;OAOG;IACH,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;CAiCvF"}