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.
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/dist/cli/cli-interface.d.ts +150 -0
- package/dist/cli/cli-interface.d.ts.map +1 -0
- package/dist/cli/cli-interface.js +606 -0
- package/dist/cli/cli-interface.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +243 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/llm-sentinel.d.ts +15 -0
- package/dist/cli/llm-sentinel.d.ts.map +1 -0
- package/dist/cli/llm-sentinel.js +184 -0
- package/dist/cli/llm-sentinel.js.map +1 -0
- package/dist/config/configuration-manager.d.ts +149 -0
- package/dist/config/configuration-manager.d.ts.map +1 -0
- package/dist/config/configuration-manager.js +241 -0
- package/dist/config/configuration-manager.js.map +1 -0
- package/dist/continuation/continuation-control-manager.d.ts +154 -0
- package/dist/continuation/continuation-control-manager.d.ts.map +1 -0
- package/dist/continuation/continuation-control-manager.js +303 -0
- package/dist/continuation/continuation-control-manager.js.map +1 -0
- package/dist/core/runner-core.d.ts +474 -0
- package/dist/core/runner-core.d.ts.map +1 -0
- package/dist/core/runner-core.js +1311 -0
- package/dist/core/runner-core.js.map +1 -0
- package/dist/errors/error-codes.d.ts +105 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +198 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/runner-error.d.ts +14 -0
- package/dist/errors/runner-error.d.ts.map +1 -0
- package/dist/errors/runner-error.js +33 -0
- package/dist/errors/runner-error.js.map +1 -0
- package/dist/evidence/evidence-manager.d.ts +112 -0
- package/dist/evidence/evidence-manager.d.ts.map +1 -0
- package/dist/evidence/evidence-manager.js +337 -0
- package/dist/evidence/evidence-manager.js.map +1 -0
- package/dist/executor/claude-code-executor.d.ts +136 -0
- package/dist/executor/claude-code-executor.d.ts.map +1 -0
- package/dist/executor/claude-code-executor.js +643 -0
- package/dist/executor/claude-code-executor.js.map +1 -0
- package/dist/executor/deterministic-executor.d.ts +40 -0
- package/dist/executor/deterministic-executor.d.ts.map +1 -0
- package/dist/executor/deterministic-executor.js +269 -0
- package/dist/executor/deterministic-executor.js.map +1 -0
- package/dist/lifecycle/lifecycle-controller.d.ts +270 -0
- package/dist/lifecycle/lifecycle-controller.d.ts.map +1 -0
- package/dist/lifecycle/lifecycle-controller.js +596 -0
- package/dist/lifecycle/lifecycle-controller.js.map +1 -0
- package/dist/limits/resource-limit-manager.d.ts +200 -0
- package/dist/limits/resource-limit-manager.d.ts.map +1 -0
- package/dist/limits/resource-limit-manager.js +376 -0
- package/dist/limits/resource-limit-manager.js.map +1 -0
- package/dist/locks/lock-manager.d.ts +116 -0
- package/dist/locks/lock-manager.d.ts.map +1 -0
- package/dist/locks/lock-manager.js +306 -0
- package/dist/locks/lock-manager.js.map +1 -0
- package/dist/logging/index.d.ts +8 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +22 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/sensitive-data-masker.d.ts +90 -0
- package/dist/logging/sensitive-data-masker.d.ts.map +1 -0
- package/dist/logging/sensitive-data-masker.js +228 -0
- package/dist/logging/sensitive-data-masker.js.map +1 -0
- package/dist/logging/task-log-manager.d.ts +215 -0
- package/dist/logging/task-log-manager.d.ts.map +1 -0
- package/dist/logging/task-log-manager.js +743 -0
- package/dist/logging/task-log-manager.js.map +1 -0
- package/dist/mediation/fail-closed-runner.d.ts +131 -0
- package/dist/mediation/fail-closed-runner.d.ts.map +1 -0
- package/dist/mediation/fail-closed-runner.js +245 -0
- package/dist/mediation/fail-closed-runner.js.map +1 -0
- package/dist/mediation/llm-client-with-evidence.d.ts +123 -0
- package/dist/mediation/llm-client-with-evidence.d.ts.map +1 -0
- package/dist/mediation/llm-client-with-evidence.js +245 -0
- package/dist/mediation/llm-client-with-evidence.js.map +1 -0
- package/dist/mediation/llm-client.d.ts +102 -0
- package/dist/mediation/llm-client.d.ts.map +1 -0
- package/dist/mediation/llm-client.js +206 -0
- package/dist/mediation/llm-client.js.map +1 -0
- package/dist/mediation/llm-evidence-manager.d.ts +108 -0
- package/dist/mediation/llm-evidence-manager.d.ts.map +1 -0
- package/dist/mediation/llm-evidence-manager.js +230 -0
- package/dist/mediation/llm-evidence-manager.js.map +1 -0
- package/dist/mediation/llm-mediation-layer.d.ts +175 -0
- package/dist/mediation/llm-mediation-layer.d.ts.map +1 -0
- package/dist/mediation/llm-mediation-layer.js +315 -0
- package/dist/mediation/llm-mediation-layer.js.map +1 -0
- package/dist/mediation/llm-sentinel.d.ts +107 -0
- package/dist/mediation/llm-sentinel.d.ts.map +1 -0
- package/dist/mediation/llm-sentinel.js +187 -0
- package/dist/mediation/llm-sentinel.js.map +1 -0
- package/dist/mediation/real-llm-mediation-layer.d.ts +104 -0
- package/dist/mediation/real-llm-mediation-layer.d.ts.map +1 -0
- package/dist/mediation/real-llm-mediation-layer.js +322 -0
- package/dist/mediation/real-llm-mediation-layer.js.map +1 -0
- package/dist/mediation/verdict-reporter.d.ts +61 -0
- package/dist/mediation/verdict-reporter.d.ts.map +1 -0
- package/dist/mediation/verdict-reporter.js +178 -0
- package/dist/mediation/verdict-reporter.js.map +1 -0
- package/dist/models/enums.d.ts +133 -0
- package/dist/models/enums.d.ts.map +1 -0
- package/dist/models/enums.js +201 -0
- package/dist/models/enums.js.map +1 -0
- package/dist/models/evidence.d.ts +60 -0
- package/dist/models/evidence.d.ts.map +1 -0
- package/dist/models/evidence.js +135 -0
- package/dist/models/evidence.js.map +1 -0
- package/dist/models/execution-result.d.ts +89 -0
- package/dist/models/execution-result.d.ts.map +1 -0
- package/dist/models/execution-result.js +197 -0
- package/dist/models/execution-result.js.map +1 -0
- package/dist/models/file-lock.d.ts +62 -0
- package/dist/models/file-lock.d.ts.map +1 -0
- package/dist/models/file-lock.js +133 -0
- package/dist/models/file-lock.js.map +1 -0
- package/dist/models/index.d.ts +12 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +91 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/repl/index.d.ts +7 -0
- package/dist/models/repl/index.d.ts.map +1 -0
- package/dist/models/repl/index.js +32 -0
- package/dist/models/repl/index.js.map +1 -0
- package/dist/models/repl/model-registry.d.ts +73 -0
- package/dist/models/repl/model-registry.d.ts.map +1 -0
- package/dist/models/repl/model-registry.js +116 -0
- package/dist/models/repl/model-registry.js.map +1 -0
- package/dist/models/repl/repl-state.d.ts +86 -0
- package/dist/models/repl/repl-state.d.ts.map +1 -0
- package/dist/models/repl/repl-state.js +152 -0
- package/dist/models/repl/repl-state.js.map +1 -0
- package/dist/models/repl/task-log.d.ts +247 -0
- package/dist/models/repl/task-log.d.ts.map +1 -0
- package/dist/models/repl/task-log.js +178 -0
- package/dist/models/repl/task-log.js.map +1 -0
- package/dist/models/session.d.ts +71 -0
- package/dist/models/session.d.ts.map +1 -0
- package/dist/models/session.js +140 -0
- package/dist/models/session.js.map +1 -0
- package/dist/models/supporting.d.ts +97 -0
- package/dist/models/supporting.d.ts.map +1 -0
- package/dist/models/supporting.js +208 -0
- package/dist/models/supporting.js.map +1 -0
- package/dist/models/task.d.ts +77 -0
- package/dist/models/task.d.ts.map +1 -0
- package/dist/models/task.js +170 -0
- package/dist/models/task.js.map +1 -0
- package/dist/output/output-control-manager.d.ts +217 -0
- package/dist/output/output-control-manager.d.ts.map +1 -0
- package/dist/output/output-control-manager.js +378 -0
- package/dist/output/output-control-manager.js.map +1 -0
- package/dist/pool/agent-pool.d.ts +284 -0
- package/dist/pool/agent-pool.d.ts.map +1 -0
- package/dist/pool/agent-pool.js +451 -0
- package/dist/pool/agent-pool.js.map +1 -0
- package/dist/repl/commands/index.d.ts +12 -0
- package/dist/repl/commands/index.d.ts.map +1 -0
- package/dist/repl/commands/index.js +26 -0
- package/dist/repl/commands/index.js.map +1 -0
- package/dist/repl/commands/init.d.ts +31 -0
- package/dist/repl/commands/init.d.ts.map +1 -0
- package/dist/repl/commands/init.js +234 -0
- package/dist/repl/commands/init.js.map +1 -0
- package/dist/repl/commands/keys.d.ts +63 -0
- package/dist/repl/commands/keys.d.ts.map +1 -0
- package/dist/repl/commands/keys.js +114 -0
- package/dist/repl/commands/keys.js.map +1 -0
- package/dist/repl/commands/logs.d.ts +91 -0
- package/dist/repl/commands/logs.d.ts.map +1 -0
- package/dist/repl/commands/logs.js +200 -0
- package/dist/repl/commands/logs.js.map +1 -0
- package/dist/repl/commands/model.d.ts +85 -0
- package/dist/repl/commands/model.d.ts.map +1 -0
- package/dist/repl/commands/model.js +225 -0
- package/dist/repl/commands/model.js.map +1 -0
- package/dist/repl/commands/models.d.ts +50 -0
- package/dist/repl/commands/models.d.ts.map +1 -0
- package/dist/repl/commands/models.js +180 -0
- package/dist/repl/commands/models.js.map +1 -0
- package/dist/repl/commands/provider.d.ts +79 -0
- package/dist/repl/commands/provider.d.ts.map +1 -0
- package/dist/repl/commands/provider.js +291 -0
- package/dist/repl/commands/provider.js.map +1 -0
- package/dist/repl/commands/session.d.ts +50 -0
- package/dist/repl/commands/session.d.ts.map +1 -0
- package/dist/repl/commands/session.js +152 -0
- package/dist/repl/commands/session.js.map +1 -0
- package/dist/repl/commands/status.d.ts +55 -0
- package/dist/repl/commands/status.d.ts.map +1 -0
- package/dist/repl/commands/status.js +182 -0
- package/dist/repl/commands/status.js.map +1 -0
- package/dist/repl/index.d.ts +6 -0
- package/dist/repl/index.d.ts.map +1 -0
- package/dist/repl/index.js +25 -0
- package/dist/repl/index.js.map +1 -0
- package/dist/repl/repl-interface.d.ts +371 -0
- package/dist/repl/repl-interface.d.ts.map +1 -0
- package/dist/repl/repl-interface.js +1214 -0
- package/dist/repl/repl-interface.js.map +1 -0
- package/dist/session/session-manager.d.ts +85 -0
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +217 -0
- package/dist/session/session-manager.js.map +1 -0
- package/dist/supervisor/executor-supervisor.d.ts +90 -0
- package/dist/supervisor/executor-supervisor.d.ts.map +1 -0
- package/dist/supervisor/executor-supervisor.js +223 -0
- package/dist/supervisor/executor-supervisor.js.map +1 -0
- package/dist/supervisor/index.d.ts +5 -0
- package/dist/supervisor/index.d.ts.map +1 -0
- package/dist/supervisor/index.js +9 -0
- package/dist/supervisor/index.js.map +1 -0
- 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"}
|