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,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Models Command
|
|
4
|
+
*
|
|
5
|
+
* Per spec 10_REPL_UX.md Section 2.2:
|
|
6
|
+
* - /models: list models for current provider
|
|
7
|
+
* - /models <provider>: list models for specific provider
|
|
8
|
+
*
|
|
9
|
+
* Per spec 12_LLM_PROVIDER_AND_MODELS.md:
|
|
10
|
+
* - OpenAI models with pricing
|
|
11
|
+
* - Anthropic models with pricing
|
|
12
|
+
* - claude-code delegates model selection
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.ModelsCommand = void 0;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const repl_1 = require("../../models/repl");
|
|
52
|
+
const model_registry_1 = require("../../models/repl/model-registry");
|
|
53
|
+
/**
|
|
54
|
+
* REPL state file path
|
|
55
|
+
*/
|
|
56
|
+
const REPL_STATE_FILE = 'repl.json';
|
|
57
|
+
/**
|
|
58
|
+
* Models Command class
|
|
59
|
+
*/
|
|
60
|
+
class ModelsCommand {
|
|
61
|
+
/**
|
|
62
|
+
* List models for current or specified provider
|
|
63
|
+
*
|
|
64
|
+
* @param projectPath - Project path
|
|
65
|
+
* @param providerId - Optional provider ID (uses current if not specified)
|
|
66
|
+
* @returns Models result
|
|
67
|
+
*/
|
|
68
|
+
async listModels(projectPath, providerId) {
|
|
69
|
+
let targetProvider = null;
|
|
70
|
+
let currentModel = null;
|
|
71
|
+
// If provider specified, validate it
|
|
72
|
+
if (providerId) {
|
|
73
|
+
const validation = (0, repl_1.validateProvider)(providerId);
|
|
74
|
+
if (!validation.valid) {
|
|
75
|
+
const validList = repl_1.VALID_PROVIDERS.join(', ');
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
message: 'Invalid provider',
|
|
79
|
+
error: {
|
|
80
|
+
code: 'E102',
|
|
81
|
+
message: 'Invalid provider: ' + providerId + '. Valid providers: ' + validList,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
targetProvider = providerId;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Get current provider from repl.json
|
|
89
|
+
const claudeDir = path.join(projectPath, '.claude');
|
|
90
|
+
const statePath = path.join(claudeDir, REPL_STATE_FILE);
|
|
91
|
+
if (!fs.existsSync(claudeDir)) {
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
message: '.claude directory not found',
|
|
95
|
+
error: {
|
|
96
|
+
code: 'E101',
|
|
97
|
+
message: '.claude directory not found. Run /init first.',
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (fs.existsSync(statePath)) {
|
|
102
|
+
try {
|
|
103
|
+
const content = fs.readFileSync(statePath, 'utf-8');
|
|
104
|
+
const state = JSON.parse(content);
|
|
105
|
+
targetProvider = state.selected_provider;
|
|
106
|
+
currentModel = state.selected_model;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Ignore parse errors
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (!targetProvider) {
|
|
113
|
+
return {
|
|
114
|
+
success: false,
|
|
115
|
+
message: 'No provider selected',
|
|
116
|
+
error: {
|
|
117
|
+
code: 'E109',
|
|
118
|
+
message: 'No provider selected. Use /provider <name> to select a provider first.',
|
|
119
|
+
},
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Get models for provider
|
|
124
|
+
const models = (0, model_registry_1.getModelsForProvider)(targetProvider);
|
|
125
|
+
const providerInfo = (0, model_registry_1.getProviderInfo)(targetProvider);
|
|
126
|
+
// claude-code has no model list (delegated)
|
|
127
|
+
if (targetProvider === 'claude-code') {
|
|
128
|
+
return {
|
|
129
|
+
success: true,
|
|
130
|
+
message: 'claude-code delegates model selection to Claude Code CLI',
|
|
131
|
+
provider: targetProvider,
|
|
132
|
+
models: [],
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
success: true,
|
|
137
|
+
message: 'Models for ' + (providerInfo?.displayName || targetProvider),
|
|
138
|
+
provider: targetProvider,
|
|
139
|
+
models,
|
|
140
|
+
currentModel: currentModel || undefined,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Format model list for display
|
|
145
|
+
*
|
|
146
|
+
* @param models - Model list
|
|
147
|
+
* @param currentModel - Current selected model (optional)
|
|
148
|
+
* @param provider - Provider name
|
|
149
|
+
* @returns Formatted string
|
|
150
|
+
*/
|
|
151
|
+
formatModelList(models, currentModel, provider) {
|
|
152
|
+
if (models.length === 0) {
|
|
153
|
+
if (provider === 'claude-code') {
|
|
154
|
+
return 'claude-code delegates model selection to Claude Code CLI.\n\n' +
|
|
155
|
+
'No model configuration is needed - Claude Code CLI handles this automatically.';
|
|
156
|
+
}
|
|
157
|
+
return 'No models available for this provider.';
|
|
158
|
+
}
|
|
159
|
+
let output = 'Available Models:\n\n';
|
|
160
|
+
output += ' Model ID | Display Name | Input $/M | Output $/M | Context\n';
|
|
161
|
+
output += ' ----------------------------------|---------------------|-----------|------------|--------\n';
|
|
162
|
+
for (const model of models) {
|
|
163
|
+
const isCurrent = model.id === currentModel;
|
|
164
|
+
const marker = isCurrent ? '*' : ' ';
|
|
165
|
+
const id = (model.id + marker).padEnd(33);
|
|
166
|
+
const name = model.displayName.padEnd(19);
|
|
167
|
+
const inputPrice = ('$' + model.inputPricePerMillion.toFixed(2)).padStart(9);
|
|
168
|
+
const outputPrice = ('$' + model.outputPricePerMillion.toFixed(2)).padStart(10);
|
|
169
|
+
output += ' ' + id + ' | ' + name + ' | ' + inputPrice + ' | ' + outputPrice + ' | ' + model.contextSize + '\n';
|
|
170
|
+
}
|
|
171
|
+
output += '\n';
|
|
172
|
+
if (currentModel) {
|
|
173
|
+
output += '* = currently selected\n\n';
|
|
174
|
+
}
|
|
175
|
+
output += 'Use /model <model-id> to select a model.';
|
|
176
|
+
return output;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.ModelsCommand = ModelsCommand;
|
|
180
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/repl/commands/models.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAC7B,4CAK2B;AAC3B,qEAI0C;AAiB1C;;GAEG;AACH,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC;;GAEG;AACH,MAAa,aAAa;IACxB;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,UAAmB;QACvD,IAAI,cAAc,GAAoB,IAAI,CAAC;QAC3C,IAAI,YAAY,GAAkB,IAAI,CAAC;QAEvC,qCAAqC;QACrC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,UAAU,CAAC,CAAC;YAChD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,sBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,kBAAkB;oBAC3B,KAAK,EAAE;wBACL,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,oBAAoB,GAAG,UAAU,GAAG,qBAAqB,GAAG,SAAS;qBAC/E;iBACF,CAAC;YACJ,CAAC;YACD,cAAc,GAAG,UAAsB,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,6BAA6B;oBACtC,KAAK,EAAE;wBACL,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,+CAA+C;qBACzD;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACpD,MAAM,KAAK,GAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC7C,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC;oBACzC,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC;gBACtC,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,sBAAsB;oBAC/B,KAAK,EAAE;wBACL,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,wEAAwE;qBAClF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,cAAc,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAA,gCAAe,EAAC,cAAc,CAAC,CAAC;QAErD,4CAA4C;QAC5C,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,0DAA0D;gBACnE,QAAQ,EAAE,cAAc;gBACxB,MAAM,EAAE,EAAE;aACX,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,aAAa,GAAG,CAAC,YAAY,EAAE,WAAW,IAAI,cAAc,CAAC;YACtE,QAAQ,EAAE,cAAc;YACxB,MAAM;YACN,YAAY,EAAE,YAAY,IAAI,SAAS;SACxC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,MAAmB,EAAE,YAAqB,EAAE,QAAiB;QAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;gBAC/B,OAAO,+DAA+D;oBAC/D,gFAAgF,CAAC;YAC1F,CAAC;YACD,OAAO,wCAAwC,CAAC;QAClD,CAAC;QAED,IAAI,MAAM,GAAG,uBAAuB,CAAC;QACrC,MAAM,IAAI,gGAAgG,CAAC;QAC3G,MAAM,IAAI,gGAAgG,CAAC;QAE3G,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,KAAK,YAAY,CAAC;YAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAErC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7E,MAAM,WAAW,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEhF,MAAM,IAAI,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACnH,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;QACf,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,IAAI,4BAA4B,CAAC;QACzC,CAAC;QACD,MAAM,IAAI,0CAA0C,CAAC;QAErD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAlID,sCAkIC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider Command
|
|
3
|
+
*
|
|
4
|
+
* Per spec 10_REPL_UX.md Section 2.1:
|
|
5
|
+
* - /provider: show current selected_provider or "UNSET"
|
|
6
|
+
* - /provider show: list all providers
|
|
7
|
+
* - /provider select: interactive selection UI
|
|
8
|
+
* - /provider <name>: set provider directly
|
|
9
|
+
*
|
|
10
|
+
* Per spec 06_CORRECTNESS_PROPERTIES.md Property 23:
|
|
11
|
+
* - Provider/Model configuration under user control
|
|
12
|
+
*/
|
|
13
|
+
import { ProviderInfo } from '../../models/repl/model-registry';
|
|
14
|
+
/**
|
|
15
|
+
* Provider command result
|
|
16
|
+
*/
|
|
17
|
+
export interface ProviderResult {
|
|
18
|
+
success: boolean;
|
|
19
|
+
message: string;
|
|
20
|
+
provider?: string;
|
|
21
|
+
providers?: ProviderInfo[];
|
|
22
|
+
configPath?: string;
|
|
23
|
+
evidencePath?: string;
|
|
24
|
+
error?: {
|
|
25
|
+
code: string;
|
|
26
|
+
message: string;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* REPL state file path
|
|
31
|
+
*/
|
|
32
|
+
declare const REPL_STATE_FILE = "repl.json";
|
|
33
|
+
/**
|
|
34
|
+
* Provider Command class
|
|
35
|
+
*/
|
|
36
|
+
export declare class ProviderCommand {
|
|
37
|
+
/**
|
|
38
|
+
* Get current provider
|
|
39
|
+
* Per spec 10_REPL_UX.md: Display "UNSET" if not configured
|
|
40
|
+
*
|
|
41
|
+
* @param projectPath - Project path
|
|
42
|
+
* @returns Provider result
|
|
43
|
+
*/
|
|
44
|
+
getProvider(projectPath: string): Promise<ProviderResult>;
|
|
45
|
+
/**
|
|
46
|
+
* Set provider
|
|
47
|
+
* Per spec 10_REPL_UX.md: Save to .claude/repl.json and generate Evidence
|
|
48
|
+
* Per spec 12_LLM_PROVIDER_AND_MODELS.md: Provider change resets model selection
|
|
49
|
+
*
|
|
50
|
+
* @param projectPath - Project path
|
|
51
|
+
* @param providerName - Provider name to set
|
|
52
|
+
* @returns Provider result
|
|
53
|
+
*/
|
|
54
|
+
setProvider(projectPath: string, providerName: string): Promise<ProviderResult>;
|
|
55
|
+
/**
|
|
56
|
+
* List all available providers
|
|
57
|
+
* Per spec 10_REPL_UX.md: /provider show lists all providers
|
|
58
|
+
*
|
|
59
|
+
* @returns Provider result with providers list
|
|
60
|
+
*/
|
|
61
|
+
listProviders(): Promise<ProviderResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Format providers for display
|
|
64
|
+
*
|
|
65
|
+
* @param providers - Provider list
|
|
66
|
+
* @param currentProvider - Current selected provider (optional)
|
|
67
|
+
* @returns Formatted string
|
|
68
|
+
*/
|
|
69
|
+
formatProviderList(providers: ProviderInfo[], currentProvider?: string): string;
|
|
70
|
+
/**
|
|
71
|
+
* Format current provider for display
|
|
72
|
+
*
|
|
73
|
+
* @param provider - Provider ID or "UNSET"
|
|
74
|
+
* @returns Formatted string
|
|
75
|
+
*/
|
|
76
|
+
formatCurrentProvider(provider: string): string;
|
|
77
|
+
}
|
|
78
|
+
export { REPL_STATE_FILE };
|
|
79
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,OAAO,EACL,YAAY,EAGb,MAAM,kCAAkC,CAAC;AAG1C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,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,QAAA,MAAM,eAAe,cAAc,CAAC;AAEpC;;GAEG;AACH,qBAAa,eAAe;IAC1B;;;;;;OAMG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6D/D;;;;;;;;OAQG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgGrF;;;;;OAKG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAU9C;;;;;;OAMG;IACH,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;IA0B/E;;;;;OAKG;IACH,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAwBhD;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Provider Command
|
|
4
|
+
*
|
|
5
|
+
* Per spec 10_REPL_UX.md Section 2.1:
|
|
6
|
+
* - /provider: show current selected_provider or "UNSET"
|
|
7
|
+
* - /provider show: list all providers
|
|
8
|
+
* - /provider select: interactive selection UI
|
|
9
|
+
* - /provider <name>: set provider directly
|
|
10
|
+
*
|
|
11
|
+
* Per spec 06_CORRECTNESS_PROPERTIES.md Property 23:
|
|
12
|
+
* - Provider/Model configuration under user control
|
|
13
|
+
*/
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.REPL_STATE_FILE = exports.ProviderCommand = void 0;
|
|
49
|
+
const fs = __importStar(require("fs"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const repl_1 = require("../../models/repl");
|
|
52
|
+
const model_registry_1 = require("../../models/repl/model-registry");
|
|
53
|
+
const sensitive_data_masker_1 = require("../../logging/sensitive-data-masker");
|
|
54
|
+
/**
|
|
55
|
+
* REPL state file path
|
|
56
|
+
*/
|
|
57
|
+
const REPL_STATE_FILE = 'repl.json';
|
|
58
|
+
exports.REPL_STATE_FILE = REPL_STATE_FILE;
|
|
59
|
+
/**
|
|
60
|
+
* Provider Command class
|
|
61
|
+
*/
|
|
62
|
+
class ProviderCommand {
|
|
63
|
+
/**
|
|
64
|
+
* Get current provider
|
|
65
|
+
* Per spec 10_REPL_UX.md: Display "UNSET" if not configured
|
|
66
|
+
*
|
|
67
|
+
* @param projectPath - Project path
|
|
68
|
+
* @returns Provider result
|
|
69
|
+
*/
|
|
70
|
+
async getProvider(projectPath) {
|
|
71
|
+
const claudeDir = path.join(projectPath, '.claude');
|
|
72
|
+
const statePath = path.join(claudeDir, REPL_STATE_FILE);
|
|
73
|
+
// Check if .claude directory exists
|
|
74
|
+
if (!fs.existsSync(claudeDir)) {
|
|
75
|
+
return {
|
|
76
|
+
success: false,
|
|
77
|
+
message: '.claude directory not found',
|
|
78
|
+
error: {
|
|
79
|
+
code: 'E101',
|
|
80
|
+
message: '.claude directory not found. Run /init first.',
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
// Read current state
|
|
85
|
+
if (!fs.existsSync(statePath)) {
|
|
86
|
+
return {
|
|
87
|
+
success: true,
|
|
88
|
+
message: 'Provider not configured',
|
|
89
|
+
provider: 'UNSET',
|
|
90
|
+
configPath: statePath,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
const content = fs.readFileSync(statePath, 'utf-8');
|
|
95
|
+
const state = JSON.parse(content);
|
|
96
|
+
if (!state.selected_provider) {
|
|
97
|
+
return {
|
|
98
|
+
success: true,
|
|
99
|
+
message: 'Provider not configured',
|
|
100
|
+
provider: 'UNSET',
|
|
101
|
+
configPath: statePath,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// Get provider info
|
|
105
|
+
const providerInfo = (0, model_registry_1.getProviderInfo)(state.selected_provider);
|
|
106
|
+
return {
|
|
107
|
+
success: true,
|
|
108
|
+
message: 'Provider configured',
|
|
109
|
+
provider: state.selected_provider,
|
|
110
|
+
configPath: statePath,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
// Per spec 10_REPL_UX.md: E105 for JSON parse error
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
message: 'Failed to parse repl.json',
|
|
118
|
+
error: {
|
|
119
|
+
code: 'E105',
|
|
120
|
+
message: 'Failed to parse repl.json: ' + err.message,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Set provider
|
|
127
|
+
* Per spec 10_REPL_UX.md: Save to .claude/repl.json and generate Evidence
|
|
128
|
+
* Per spec 12_LLM_PROVIDER_AND_MODELS.md: Provider change resets model selection
|
|
129
|
+
*
|
|
130
|
+
* @param projectPath - Project path
|
|
131
|
+
* @param providerName - Provider name to set
|
|
132
|
+
* @returns Provider result
|
|
133
|
+
*/
|
|
134
|
+
async setProvider(projectPath, providerName) {
|
|
135
|
+
const claudeDir = path.join(projectPath, '.claude');
|
|
136
|
+
const statePath = path.join(claudeDir, REPL_STATE_FILE);
|
|
137
|
+
const evidenceDir = path.join(claudeDir, 'evidence');
|
|
138
|
+
// Check if .claude directory exists
|
|
139
|
+
if (!fs.existsSync(claudeDir)) {
|
|
140
|
+
return {
|
|
141
|
+
success: false,
|
|
142
|
+
message: '.claude directory not found',
|
|
143
|
+
error: {
|
|
144
|
+
code: 'E101',
|
|
145
|
+
message: '.claude directory not found. Run /init first.',
|
|
146
|
+
},
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
// Validate provider name
|
|
150
|
+
const validationResult = (0, repl_1.validateProvider)(providerName);
|
|
151
|
+
if (!validationResult.valid) {
|
|
152
|
+
const validList = repl_1.VALID_PROVIDERS.join(', ');
|
|
153
|
+
return {
|
|
154
|
+
success: false,
|
|
155
|
+
message: 'Invalid provider: ' + providerName,
|
|
156
|
+
error: {
|
|
157
|
+
code: 'E102',
|
|
158
|
+
message: 'Invalid provider: ' + providerName + '. Valid providers: ' + validList,
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// Read current state or create new
|
|
163
|
+
let state = { ...repl_1.INITIAL_REPL_STATE };
|
|
164
|
+
if (fs.existsSync(statePath)) {
|
|
165
|
+
try {
|
|
166
|
+
const content = fs.readFileSync(statePath, 'utf-8');
|
|
167
|
+
state = JSON.parse(content);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
// Ignore parse errors, start fresh
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Update state
|
|
174
|
+
// Per spec 12_LLM_PROVIDER_AND_MODELS.md: Provider change resets model
|
|
175
|
+
const previousProvider = state.selected_provider;
|
|
176
|
+
state.selected_provider = providerName;
|
|
177
|
+
state.selected_model = null; // Reset model when provider changes
|
|
178
|
+
state.updated_at = new Date().toISOString();
|
|
179
|
+
// Save state
|
|
180
|
+
try {
|
|
181
|
+
fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf-8');
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
return {
|
|
185
|
+
success: false,
|
|
186
|
+
message: 'Failed to save repl.json',
|
|
187
|
+
error: {
|
|
188
|
+
code: 'E106',
|
|
189
|
+
message: 'Failed to save repl.json: ' + err.message,
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// Generate Evidence
|
|
194
|
+
let evidencePath;
|
|
195
|
+
try {
|
|
196
|
+
if (!fs.existsSync(evidenceDir)) {
|
|
197
|
+
fs.mkdirSync(evidenceDir, { recursive: true });
|
|
198
|
+
}
|
|
199
|
+
const evidenceFilename = 'provider-change-' + Date.now() + '.json';
|
|
200
|
+
evidencePath = path.join(evidenceDir, evidenceFilename);
|
|
201
|
+
const evidence = {
|
|
202
|
+
type: 'provider_change',
|
|
203
|
+
timestamp: new Date().toISOString(),
|
|
204
|
+
previous_provider: previousProvider || null,
|
|
205
|
+
new_provider: providerName,
|
|
206
|
+
model_reset: true,
|
|
207
|
+
config_path: statePath,
|
|
208
|
+
};
|
|
209
|
+
fs.writeFileSync(evidencePath, JSON.stringify(evidence, null, 2), 'utf-8');
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Evidence generation is best-effort
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
success: true,
|
|
216
|
+
message: 'Provider set to ' + providerName,
|
|
217
|
+
provider: providerName,
|
|
218
|
+
configPath: statePath,
|
|
219
|
+
evidencePath,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* List all available providers
|
|
224
|
+
* Per spec 10_REPL_UX.md: /provider show lists all providers
|
|
225
|
+
*
|
|
226
|
+
* @returns Provider result with providers list
|
|
227
|
+
*/
|
|
228
|
+
async listProviders() {
|
|
229
|
+
const providers = (0, model_registry_1.getAllProviders)();
|
|
230
|
+
return {
|
|
231
|
+
success: true,
|
|
232
|
+
message: 'Available providers',
|
|
233
|
+
providers,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Format providers for display
|
|
238
|
+
*
|
|
239
|
+
* @param providers - Provider list
|
|
240
|
+
* @param currentProvider - Current selected provider (optional)
|
|
241
|
+
* @returns Formatted string
|
|
242
|
+
*/
|
|
243
|
+
formatProviderList(providers, currentProvider) {
|
|
244
|
+
let output = 'Available Providers:\n\n';
|
|
245
|
+
for (const provider of providers) {
|
|
246
|
+
const isCurrent = provider.id === currentProvider;
|
|
247
|
+
const marker = isCurrent ? ' (current)' : '';
|
|
248
|
+
const keyStatus = (0, sensitive_data_masker_1.checkApiKeyForProvider)(provider.id);
|
|
249
|
+
output += ' ' + provider.displayName + marker + '\n';
|
|
250
|
+
output += ' ID: ' + provider.id + '\n';
|
|
251
|
+
output += ' ' + provider.description + '\n';
|
|
252
|
+
if (keyStatus.required) {
|
|
253
|
+
output += ' API Key: ' + keyStatus.status + '\n';
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
output += ' API Key: Not required\n';
|
|
257
|
+
}
|
|
258
|
+
output += '\n';
|
|
259
|
+
}
|
|
260
|
+
output += 'Use /provider <id> to select a provider.';
|
|
261
|
+
return output;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Format current provider for display
|
|
265
|
+
*
|
|
266
|
+
* @param provider - Provider ID or "UNSET"
|
|
267
|
+
* @returns Formatted string
|
|
268
|
+
*/
|
|
269
|
+
formatCurrentProvider(provider) {
|
|
270
|
+
if (provider === 'UNSET') {
|
|
271
|
+
return 'Current provider: UNSET\n\nUse /provider show to see available providers.';
|
|
272
|
+
}
|
|
273
|
+
const info = (0, model_registry_1.getProviderInfo)(provider);
|
|
274
|
+
if (!info) {
|
|
275
|
+
return 'Current provider: ' + provider + ' (unknown)';
|
|
276
|
+
}
|
|
277
|
+
const keyStatus = (0, sensitive_data_masker_1.checkApiKeyForProvider)(provider);
|
|
278
|
+
let output = 'Current provider: ' + info.displayName + '\n';
|
|
279
|
+
output += ' ID: ' + info.id + '\n';
|
|
280
|
+
output += ' ' + info.description + '\n';
|
|
281
|
+
if (keyStatus.required) {
|
|
282
|
+
output += ' API Key: ' + keyStatus.status;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
output += ' API Key: Not required';
|
|
286
|
+
}
|
|
287
|
+
return output;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
exports.ProviderCommand = ProviderCommand;
|
|
291
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/repl/commands/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Commands Handler
|
|
3
|
+
* Manages /start, /continue, /approve commands
|
|
4
|
+
*/
|
|
5
|
+
import { RunnerCore } from '../../core/runner-core';
|
|
6
|
+
import { REPLConfig } from '../repl-interface';
|
|
7
|
+
/**
|
|
8
|
+
* Session command result
|
|
9
|
+
*/
|
|
10
|
+
export interface SessionResult {
|
|
11
|
+
success: boolean;
|
|
12
|
+
message?: string;
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
runner?: RunnerCore;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* REPL session state (shared with repl-interface)
|
|
18
|
+
*/
|
|
19
|
+
export interface REPLSession {
|
|
20
|
+
sessionId: string | null;
|
|
21
|
+
projectPath: string;
|
|
22
|
+
runner: RunnerCore | null;
|
|
23
|
+
supervisor: any;
|
|
24
|
+
status: 'idle' | 'running' | 'paused';
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Session commands handler
|
|
28
|
+
*/
|
|
29
|
+
export declare class SessionCommands {
|
|
30
|
+
private session;
|
|
31
|
+
private config;
|
|
32
|
+
constructor(session: REPLSession, config: REPLConfig);
|
|
33
|
+
/**
|
|
34
|
+
* Start a new session
|
|
35
|
+
*/
|
|
36
|
+
start(projectPath: string): Promise<SessionResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Continue an existing session
|
|
39
|
+
*/
|
|
40
|
+
continueSession(sessionId: string): Promise<SessionResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Approve continuation for INCOMPLETE session
|
|
43
|
+
*/
|
|
44
|
+
approve(sessionId: string): Promise<SessionResult>;
|
|
45
|
+
/**
|
|
46
|
+
* List available sessions
|
|
47
|
+
*/
|
|
48
|
+
listSessions(): Promise<string[]>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/repl/commands/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvC;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,MAAM,CAAa;gBAEf,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU;IAKpD;;OAEG;IACG,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BxD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwBhE;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmCxD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAKxC"}
|