@imricci/zaker 0.1.1 → 0.1.3
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/dist/commands/app-server.d.ts +67 -0
- package/dist/commands/app-server.js +601 -0
- package/dist/commands/app-server.js.map +1 -0
- package/dist/commands/audit.js +2 -1
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts +3 -0
- package/dist/commands/build.js +22 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/confirm.d.ts +0 -2
- package/dist/commands/confirm.js +2 -16
- package/dist/commands/confirm.js.map +1 -1
- package/dist/commands/dialog-handlers/auth.d.ts +3 -0
- package/dist/commands/dialog-handlers/auth.js +174 -0
- package/dist/commands/dialog-handlers/auth.js.map +1 -0
- package/dist/commands/dialog-handlers/basic.d.ts +7 -0
- package/dist/commands/dialog-handlers/basic.js +82 -0
- package/dist/commands/dialog-handlers/basic.js.map +1 -0
- package/dist/commands/dialog-handlers/bootstrap.d.ts +10 -0
- package/dist/commands/dialog-handlers/bootstrap.js +38 -0
- package/dist/commands/dialog-handlers/bootstrap.js.map +1 -0
- package/dist/commands/dialog-handlers/index.d.ts +2 -0
- package/dist/commands/dialog-handlers/index.js +6 -0
- package/dist/commands/dialog-handlers/index.js.map +1 -0
- package/dist/commands/dialog-handlers/message.d.ts +2 -0
- package/dist/commands/dialog-handlers/message.js +103 -0
- package/dist/commands/dialog-handlers/message.js.map +1 -0
- package/dist/commands/dialog-handlers/model.d.ts +2 -0
- package/dist/commands/dialog-handlers/model.js +168 -0
- package/dist/commands/dialog-handlers/model.js.map +1 -0
- package/dist/commands/dialog-handlers/new.d.ts +2 -0
- package/dist/commands/dialog-handlers/new.js +53 -0
- package/dist/commands/dialog-handlers/new.js.map +1 -0
- package/dist/commands/dialog-handlers/resume.d.ts +2 -0
- package/dist/commands/dialog-handlers/resume.js +25 -0
- package/dist/commands/dialog-handlers/resume.js.map +1 -0
- package/dist/commands/dialog-handlers/router.d.ts +11 -0
- package/dist/commands/dialog-handlers/router.js +112 -0
- package/dist/commands/dialog-handlers/router.js.map +1 -0
- package/dist/commands/dialog-handlers/run.d.ts +2 -0
- package/dist/commands/dialog-handlers/run.js +161 -0
- package/dist/commands/dialog-handlers/run.js.map +1 -0
- package/dist/commands/dialog-handlers/status.d.ts +2 -0
- package/dist/commands/dialog-handlers/status.js +13 -0
- package/dist/commands/dialog-handlers/status.js.map +1 -0
- package/dist/commands/dialog-handlers/types.d.ts +107 -0
- package/dist/commands/dialog-handlers/types.js +3 -0
- package/dist/commands/dialog-handlers/types.js.map +1 -0
- package/dist/commands/dialog.d.ts +92 -0
- package/dist/commands/dialog.js +1784 -236
- package/dist/commands/dialog.js.map +1 -1
- package/dist/commands/init.d.ts +3 -1
- package/dist/commands/init.js +6 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plan.js +10 -6
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/run.js +8 -10
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/status.js +6 -12
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/tui-launcher.d.ts +1 -0
- package/dist/commands/tui-launcher.js +8 -0
- package/dist/commands/tui-launcher.js.map +1 -0
- package/dist/core/alignment-reply.d.ts +1 -0
- package/dist/core/alignment-reply.js +44 -0
- package/dist/core/alignment-reply.js.map +1 -0
- package/dist/core/checkpoint.js +3 -1
- package/dist/core/checkpoint.js.map +1 -1
- package/dist/core/planner.d.ts +16 -16
- package/dist/core/planner.js +3 -1
- package/dist/core/planner.js.map +1 -1
- package/dist/core/planning-prep.d.ts +12 -0
- package/dist/core/planning-prep.js +26 -0
- package/dist/core/planning-prep.js.map +1 -0
- package/dist/core/preflight.js +1 -2
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/provider-onboarding.js +6 -11
- package/dist/core/provider-onboarding.js.map +1 -1
- package/dist/core/readonly-checkpoint.d.ts +2 -0
- package/dist/core/readonly-checkpoint.js +35 -0
- package/dist/core/readonly-checkpoint.js.map +1 -0
- package/dist/core/run-loop.js +3 -1
- package/dist/core/run-loop.js.map +1 -1
- package/dist/core/types.d.ts +20 -1
- package/dist/index.js +20 -6
- package/dist/index.js.map +1 -1
- package/dist/infra/artifact-schema.d.ts +25 -0
- package/dist/infra/artifact-schema.js +353 -0
- package/dist/infra/artifact-schema.js.map +1 -0
- package/dist/infra/config.d.ts +14 -1
- package/dist/infra/config.js +542 -22
- package/dist/infra/config.js.map +1 -1
- package/dist/infra/dependency-report.d.ts +5 -0
- package/dist/infra/dependency-report.js +22 -0
- package/dist/infra/dependency-report.js.map +1 -0
- package/dist/infra/dialog-session.d.ts +29 -0
- package/dist/infra/dialog-session.js +244 -0
- package/dist/infra/dialog-session.js.map +1 -0
- package/dist/infra/intent.js +63 -13
- package/dist/infra/intent.js.map +1 -1
- package/dist/infra/model-accounts.d.ts +22 -0
- package/dist/infra/model-accounts.js +172 -0
- package/dist/infra/model-accounts.js.map +1 -0
- package/dist/infra/model-catalog.d.ts +4 -1
- package/dist/infra/model-catalog.js +102 -27
- package/dist/infra/model-catalog.js.map +1 -1
- package/dist/infra/openai-codex-oauth.d.ts +18 -0
- package/dist/infra/openai-codex-oauth.js +267 -0
- package/dist/infra/openai-codex-oauth.js.map +1 -0
- package/dist/infra/provider-registry.d.ts +36 -0
- package/dist/infra/provider-registry.js +403 -0
- package/dist/infra/provider-registry.js.map +1 -0
- package/dist/infra/session-status.d.ts +6 -0
- package/dist/infra/session-status.js +34 -0
- package/dist/infra/session-status.js.map +1 -0
- package/dist/infra/tui-utils.d.ts +6 -0
- package/dist/infra/tui-utils.js +163 -0
- package/dist/infra/tui-utils.js.map +1 -0
- package/dist/infra/tui-view.d.ts +44 -0
- package/dist/infra/tui-view.js +314 -0
- package/dist/infra/tui-view.js.map +1 -0
- package/package.json +4 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleModelCommand = handleModelCommand;
|
|
4
|
+
const model_catalog_1 = require("../../infra/model-catalog");
|
|
5
|
+
const model_accounts_1 = require("../../infra/model-accounts");
|
|
6
|
+
const config_1 = require("../../infra/config");
|
|
7
|
+
const provider_registry_1 = require("../../infra/provider-registry");
|
|
8
|
+
function modelUsage() {
|
|
9
|
+
return `Usage: /model | /model <model> | /model <provider> <model> | /model planner <model> | /model auditor <model> | /model execution <model> | /model provider <${(0, provider_registry_1.getModelProviderIds)().join("|")}> | /model execution-provider <local|cheap_cloud|ollama> | /model ollama-host <url> | /model selection-policy <strict|provider_default|first_available> | /model fallback-model <model|auto>`;
|
|
10
|
+
}
|
|
11
|
+
function applyProviderAccountAsActive(config, provider) {
|
|
12
|
+
const account = config.model.accounts?.[provider];
|
|
13
|
+
config.model.provider = provider;
|
|
14
|
+
if (!account) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const authMode = account.auth_mode || "api_key";
|
|
18
|
+
config.model.auth_mode = authMode;
|
|
19
|
+
config.model.api_key_env =
|
|
20
|
+
account.api_key_env || (0, provider_registry_1.resolveProviderApiKeyEnv)(provider, authMode);
|
|
21
|
+
config.model.api_key = account.api_key || "";
|
|
22
|
+
if (typeof account.default_model === "string") {
|
|
23
|
+
config.model.fallback_model = account.default_model;
|
|
24
|
+
}
|
|
25
|
+
if (typeof account.endpoint === "string") {
|
|
26
|
+
config.model.endpoint = account.endpoint;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function handleModelCommand(context) {
|
|
30
|
+
const { cwd, rest, services, logger } = context;
|
|
31
|
+
const config = await (0, config_1.readConfig)(cwd);
|
|
32
|
+
const args = rest.split(/\s+/).filter(Boolean);
|
|
33
|
+
if (args.length === 0) {
|
|
34
|
+
let catalogDetail = "catalog unavailable";
|
|
35
|
+
try {
|
|
36
|
+
const catalog = await (0, model_catalog_1.fetchModelCatalog)(config);
|
|
37
|
+
catalogDetail = `catalog planner=${catalog.role_models.planner.length} auditor=${catalog.role_models.auditor.length} execution=${catalog.role_models.execution.length}`;
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
41
|
+
catalogDetail = `catalog unavailable (${message})`;
|
|
42
|
+
}
|
|
43
|
+
const menu = (0, model_accounts_1.buildModelMenuSnapshot)(config);
|
|
44
|
+
const loggedProviders = menu.providers.length > 0 ? menu.providers.join(",") : "-";
|
|
45
|
+
const message = `model status: provider=${config.model.provider} execution_provider=${config.execution.provider} policy=${config.model.selection_policy} fallback=${config.model.fallback_model || "-"} planner=${config.model.planner_model} auditor=${config.model.auditor_model} execution=${config.execution.model}; logged_providers=${loggedProviders}; ${catalogDetail}`;
|
|
46
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
47
|
+
logger.info(message);
|
|
48
|
+
return { action: "continue", notice: "model status shown" };
|
|
49
|
+
}
|
|
50
|
+
const menu = (0, model_accounts_1.buildModelMenuSnapshot)(config);
|
|
51
|
+
const directProvider = args[0].toLowerCase();
|
|
52
|
+
if (menu.providers.includes(directProvider)) {
|
|
53
|
+
const provider = directProvider;
|
|
54
|
+
const selectedModel = args.slice(1).join(" ").trim();
|
|
55
|
+
const models = (0, model_accounts_1.providerModelsForMenu)(config, provider);
|
|
56
|
+
if (!selectedModel) {
|
|
57
|
+
const message = `model options(${provider}): ${models.join(", ") || "-"}`;
|
|
58
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
59
|
+
logger.info(message);
|
|
60
|
+
return { action: "continue", notice: `model options shown (${provider})` };
|
|
61
|
+
}
|
|
62
|
+
applyProviderAccountAsActive(config, provider);
|
|
63
|
+
config.model.planner_model = selectedModel;
|
|
64
|
+
config.model.auditor_model = selectedModel;
|
|
65
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
66
|
+
const message = `model updated: provider=${provider} planner=${selectedModel} auditor=${selectedModel}`;
|
|
67
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
68
|
+
logger.success(message);
|
|
69
|
+
return { action: "continue", notice: message };
|
|
70
|
+
}
|
|
71
|
+
if (menu.providers.length === 1) {
|
|
72
|
+
const provider = menu.providers[0];
|
|
73
|
+
const selectedModel = args.join(" ").trim();
|
|
74
|
+
if (selectedModel && !["planner", "auditor", "execution", "provider", "execution-provider", "ollama-host"].includes(args[0].toLowerCase())) {
|
|
75
|
+
applyProviderAccountAsActive(config, provider);
|
|
76
|
+
config.model.planner_model = selectedModel;
|
|
77
|
+
config.model.auditor_model = selectedModel;
|
|
78
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
79
|
+
const message = `model updated: provider=${provider} planner=${selectedModel} auditor=${selectedModel}`;
|
|
80
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
81
|
+
logger.success(message);
|
|
82
|
+
return { action: "continue", notice: message };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const field = args[0].toLowerCase();
|
|
86
|
+
if (field === "planner" || field === "auditor" || field === "execution") {
|
|
87
|
+
const nextModel = args.slice(1).join(" ").trim();
|
|
88
|
+
if (!nextModel) {
|
|
89
|
+
throw new Error(modelUsage());
|
|
90
|
+
}
|
|
91
|
+
if (field === "planner") {
|
|
92
|
+
config.model.planner_model = nextModel;
|
|
93
|
+
}
|
|
94
|
+
else if (field === "auditor") {
|
|
95
|
+
config.model.auditor_model = nextModel;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
config.execution.model = nextModel;
|
|
99
|
+
}
|
|
100
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
101
|
+
const message = `model updated: ${field}=${nextModel}`;
|
|
102
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
103
|
+
logger.success(message);
|
|
104
|
+
return { action: "continue", notice: message };
|
|
105
|
+
}
|
|
106
|
+
if (field === "provider") {
|
|
107
|
+
const provider = args[1]?.trim();
|
|
108
|
+
if (!provider) {
|
|
109
|
+
throw new Error(modelUsage());
|
|
110
|
+
}
|
|
111
|
+
config.model.provider = (0, provider_registry_1.toCanonicalModelProviderId)(provider);
|
|
112
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
113
|
+
const message = `model provider updated: ${config.model.provider}`;
|
|
114
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
115
|
+
logger.success(message);
|
|
116
|
+
return { action: "continue", notice: message };
|
|
117
|
+
}
|
|
118
|
+
if (field === "execution-provider") {
|
|
119
|
+
const provider = args[1]?.trim();
|
|
120
|
+
if (provider !== "local" && provider !== "cheap_cloud" && provider !== "ollama") {
|
|
121
|
+
throw new Error(modelUsage());
|
|
122
|
+
}
|
|
123
|
+
config.execution.provider = provider;
|
|
124
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
125
|
+
const message = `execution provider updated: ${provider}`;
|
|
126
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
127
|
+
logger.success(message);
|
|
128
|
+
return { action: "continue", notice: message };
|
|
129
|
+
}
|
|
130
|
+
if (field === "ollama-host") {
|
|
131
|
+
const host = args[1]?.trim();
|
|
132
|
+
if (!host) {
|
|
133
|
+
throw new Error(modelUsage());
|
|
134
|
+
}
|
|
135
|
+
config.execution.ollama_host = host;
|
|
136
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
137
|
+
const message = `ollama host updated: ${host}`;
|
|
138
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
139
|
+
logger.success(message);
|
|
140
|
+
return { action: "continue", notice: message };
|
|
141
|
+
}
|
|
142
|
+
if (field === "selection-policy") {
|
|
143
|
+
const nextPolicy = args[1]?.trim() || "";
|
|
144
|
+
if (nextPolicy !== "strict" && nextPolicy !== "provider_default" && nextPolicy !== "first_available") {
|
|
145
|
+
throw new Error(modelUsage());
|
|
146
|
+
}
|
|
147
|
+
config.model.selection_policy = nextPolicy;
|
|
148
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
149
|
+
const message = `model selection policy updated: ${nextPolicy}`;
|
|
150
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
151
|
+
logger.success(message);
|
|
152
|
+
return { action: "continue", notice: message };
|
|
153
|
+
}
|
|
154
|
+
if (field === "fallback-model") {
|
|
155
|
+
const nextFallback = args.slice(1).join(" ").trim();
|
|
156
|
+
if (!nextFallback) {
|
|
157
|
+
throw new Error(modelUsage());
|
|
158
|
+
}
|
|
159
|
+
config.model.fallback_model = nextFallback.toLowerCase() === "auto" ? "" : nextFallback;
|
|
160
|
+
await (0, config_1.writeZakerConfig)(config, cwd);
|
|
161
|
+
const message = `model fallback updated: ${config.model.fallback_model || "-"}`;
|
|
162
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
163
|
+
logger.success(message);
|
|
164
|
+
return { action: "continue", notice: message };
|
|
165
|
+
}
|
|
166
|
+
throw new Error(modelUsage());
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleNewCommand = handleNewCommand;
|
|
4
|
+
const MAX_CONVERSATION_ID_LENGTH = 40;
|
|
5
|
+
function buildAutoConversationBase(nowIso) {
|
|
6
|
+
const digits = nowIso.replace(/[^0-9]/g, "");
|
|
7
|
+
const stamp = digits.slice(0, 14) || "new";
|
|
8
|
+
return `session_${stamp}`;
|
|
9
|
+
}
|
|
10
|
+
function allocateUniqueConversationId(base, existing) {
|
|
11
|
+
if (!existing.has(base)) {
|
|
12
|
+
return base;
|
|
13
|
+
}
|
|
14
|
+
let sequence = 2;
|
|
15
|
+
while (true) {
|
|
16
|
+
const suffix = `_${sequence}`;
|
|
17
|
+
const trimmedBase = base.slice(0, Math.max(1, MAX_CONVERSATION_ID_LENGTH - suffix.length));
|
|
18
|
+
const candidate = `${trimmedBase}${suffix}`;
|
|
19
|
+
if (!existing.has(candidate)) {
|
|
20
|
+
return candidate;
|
|
21
|
+
}
|
|
22
|
+
sequence += 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function handleNewCommand(context) {
|
|
26
|
+
const { cwd, rest, options, services, logger } = context;
|
|
27
|
+
const args = rest.split(/\s+/).filter(Boolean);
|
|
28
|
+
if (args.length > 1) {
|
|
29
|
+
throw new Error("Usage: /new [session-id]");
|
|
30
|
+
}
|
|
31
|
+
const existingIds = await services.listConversationIds(options.conversations.index, cwd);
|
|
32
|
+
const existingSet = new Set(existingIds);
|
|
33
|
+
let targetId;
|
|
34
|
+
if (args.length === 1) {
|
|
35
|
+
targetId = services.normalizeConversationId(args[0] || "");
|
|
36
|
+
if (existingSet.has(targetId)) {
|
|
37
|
+
throw new Error(`Conversation "${targetId}" already exists. Use /resume ${targetId}.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const base = buildAutoConversationBase(services.now());
|
|
42
|
+
targetId = allocateUniqueConversationId(base, existingSet);
|
|
43
|
+
}
|
|
44
|
+
const switched = await services.switchConversation(options.conversations, targetId, cwd);
|
|
45
|
+
services.resetBoard(options.board);
|
|
46
|
+
const switchedSession = await services.readSessionStore(cwd);
|
|
47
|
+
options.board.run_stage = switchedSession?.state ?? "ALIGN";
|
|
48
|
+
const message = `new conversation: ${switched.previous} -> ${switched.current}`;
|
|
49
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
50
|
+
logger.success(message);
|
|
51
|
+
return { action: "continue", notice: message };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleResumeCommand = handleResumeCommand;
|
|
4
|
+
async function handleResumeCommand(context) {
|
|
5
|
+
const { cwd, rest, options, services, logger } = context;
|
|
6
|
+
if (!rest) {
|
|
7
|
+
const ids = await services.listConversationIds(options.conversations.index, cwd);
|
|
8
|
+
const active = options.conversations.index.active_id || services.defaultConversationId;
|
|
9
|
+
const listing = ids.map((id) => (id === active ? `*${id}` : id)).join(", ");
|
|
10
|
+
const message = `sessions: ${listing}`;
|
|
11
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
12
|
+
logger.info(message);
|
|
13
|
+
return { action: "continue", notice: message };
|
|
14
|
+
}
|
|
15
|
+
const targetId = services.normalizeConversationId(rest.split(/\s+/)[0] || "");
|
|
16
|
+
const switched = await services.switchConversation(options.conversations, targetId, cwd);
|
|
17
|
+
services.resetBoard(options.board);
|
|
18
|
+
const switchedSession = await services.readSessionStore(cwd);
|
|
19
|
+
options.board.run_stage = switchedSession?.state ?? "ALIGN";
|
|
20
|
+
const message = `conversation switched: ${switched.previous} -> ${switched.current}`;
|
|
21
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
22
|
+
logger.success(message);
|
|
23
|
+
return { action: "continue", notice: message };
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/resume.ts"],"names":[],"mappings":";;AAEA,kDAyBC;AAzBM,KAAK,UAAU,mBAAmB,CACvC,OAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEzD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,qBAAqB,CAAC;QACvF,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,aAAa,OAAO,EAAE,CAAC;QACvC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzF,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,eAAe,EAAE,KAAK,IAAI,OAAO,CAAC;IAE5D,MAAM,OAAO,GAAG,0BAA0B,QAAQ,CAAC,QAAQ,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrF,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { DialogHandlerServices, DialogLogger, HandleDialogInputOptions, HandleDialogInputResult } from "./types";
|
|
2
|
+
interface DispatchInput {
|
|
3
|
+
input: string;
|
|
4
|
+
initialized: boolean;
|
|
5
|
+
cwd: string;
|
|
6
|
+
options: HandleDialogInputOptions;
|
|
7
|
+
services: DialogHandlerServices;
|
|
8
|
+
logger: DialogLogger;
|
|
9
|
+
}
|
|
10
|
+
export declare function dispatchDialogInput(params: DispatchInput): Promise<HandleDialogInputResult>;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dispatchDialogInput = dispatchDialogInput;
|
|
4
|
+
const bootstrap_1 = require("./bootstrap");
|
|
5
|
+
const basic_1 = require("./basic");
|
|
6
|
+
const auth_1 = require("./auth");
|
|
7
|
+
const message_1 = require("./message");
|
|
8
|
+
const model_1 = require("./model");
|
|
9
|
+
const new_1 = require("./new");
|
|
10
|
+
const resume_1 = require("./resume");
|
|
11
|
+
const run_1 = require("./run");
|
|
12
|
+
const status_1 = require("./status");
|
|
13
|
+
const activeHandlers = {
|
|
14
|
+
"/exit": basic_1.handleExitCommand,
|
|
15
|
+
"/help": basic_1.handleHelpCommand,
|
|
16
|
+
"/init": basic_1.handleInitCommand,
|
|
17
|
+
"/new": new_1.handleNewCommand,
|
|
18
|
+
"/resume": resume_1.handleResumeCommand,
|
|
19
|
+
"/model": model_1.handleModelCommand,
|
|
20
|
+
"/login": auth_1.handleLoginCommand,
|
|
21
|
+
"/logout": auth_1.handleLogoutCommand,
|
|
22
|
+
"/status": status_1.handleStatusCommand,
|
|
23
|
+
"/debug": basic_1.handleDebugCommand,
|
|
24
|
+
"/edit": basic_1.handleEditCommand,
|
|
25
|
+
"/build": basic_1.handleBuildCommand,
|
|
26
|
+
"/run": run_1.handleRunCommand
|
|
27
|
+
};
|
|
28
|
+
function createCommandContext(params) {
|
|
29
|
+
return {
|
|
30
|
+
cwd: params.cwd,
|
|
31
|
+
input: params.input,
|
|
32
|
+
command: params.command,
|
|
33
|
+
rest: params.rest,
|
|
34
|
+
options: params.options,
|
|
35
|
+
services: params.services,
|
|
36
|
+
logger: params.logger
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
async function dispatchDialogInput(params) {
|
|
40
|
+
const { input, initialized, cwd, options, services, logger } = params;
|
|
41
|
+
if (!input.trim()) {
|
|
42
|
+
return { action: "continue" };
|
|
43
|
+
}
|
|
44
|
+
if (!initialized) {
|
|
45
|
+
return await (0, bootstrap_1.handleBootstrapInput)({
|
|
46
|
+
input: input.trim(),
|
|
47
|
+
cwd,
|
|
48
|
+
options,
|
|
49
|
+
services,
|
|
50
|
+
logger
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const trimmed = input.trim();
|
|
54
|
+
const session = await services.requireSessionWithDialog(cwd);
|
|
55
|
+
const pendingBuildChoice = session.dialog?.pending_build_choice;
|
|
56
|
+
if ((trimmed === "1" || trimmed === "2") && pendingBuildChoice) {
|
|
57
|
+
await services.appendDialogEntry(cwd, "user", "command", trimmed);
|
|
58
|
+
if (trimmed === "1") {
|
|
59
|
+
const handler = activeHandlers["/build"];
|
|
60
|
+
if (!handler) {
|
|
61
|
+
throw new Error("Build handler is not registered.");
|
|
62
|
+
}
|
|
63
|
+
return await handler(createCommandContext({
|
|
64
|
+
cwd,
|
|
65
|
+
input: "/build",
|
|
66
|
+
command: "/build",
|
|
67
|
+
rest: "",
|
|
68
|
+
options,
|
|
69
|
+
services,
|
|
70
|
+
logger
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
await services.setPendingBuildChoice(cwd, null);
|
|
74
|
+
const message = "继续调整:直接输入补充需求,我会更新 intent.card。";
|
|
75
|
+
await services.appendDialogEntry(cwd, "system", "status", message);
|
|
76
|
+
logger.info(message);
|
|
77
|
+
return { action: "continue", notice: message };
|
|
78
|
+
}
|
|
79
|
+
if (trimmed !== "1" && trimmed !== "2" && pendingBuildChoice) {
|
|
80
|
+
await services.setPendingBuildChoice(cwd, null);
|
|
81
|
+
}
|
|
82
|
+
if (!trimmed.startsWith("/")) {
|
|
83
|
+
return await (0, message_1.handleMessageInput)(createCommandContext({
|
|
84
|
+
cwd,
|
|
85
|
+
input: trimmed,
|
|
86
|
+
command: "",
|
|
87
|
+
rest: "",
|
|
88
|
+
options,
|
|
89
|
+
services,
|
|
90
|
+
logger
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
const [command, ...args] = trimmed.split(" ");
|
|
94
|
+
const rest = args.join(" ").trim();
|
|
95
|
+
if (command !== "/exit" && command !== "/login") {
|
|
96
|
+
await services.appendDialogEntry(cwd, "user", "command", trimmed);
|
|
97
|
+
}
|
|
98
|
+
const handler = activeHandlers[command];
|
|
99
|
+
if (!handler) {
|
|
100
|
+
throw new Error(`Unknown command: ${command}`);
|
|
101
|
+
}
|
|
102
|
+
return await handler(createCommandContext({
|
|
103
|
+
cwd,
|
|
104
|
+
input: trimmed,
|
|
105
|
+
command,
|
|
106
|
+
rest,
|
|
107
|
+
options,
|
|
108
|
+
services,
|
|
109
|
+
logger
|
|
110
|
+
}));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleRunCommand = handleRunCommand;
|
|
4
|
+
function formatRunStageHistoryEntry(event) {
|
|
5
|
+
if (event.stage === "execute" && event.status === "completed") {
|
|
6
|
+
const changedFiles = Number(event.data?.changed_files ?? 0);
|
|
7
|
+
const appliedPatches = Number(event.data?.applied_patches ?? 0);
|
|
8
|
+
return `execute completed: changed_files=${changedFiles} applied_patches=${appliedPatches}`;
|
|
9
|
+
}
|
|
10
|
+
if (event.stage === "verify" && event.status === "completed") {
|
|
11
|
+
const allPassed = Boolean(event.data?.all_passed);
|
|
12
|
+
return `verify completed: ${allPassed ? "PASS" : "FAIL"}`;
|
|
13
|
+
}
|
|
14
|
+
if (event.stage === "c3fi" && event.status === "completed") {
|
|
15
|
+
const status = String(event.data?.status ?? "-");
|
|
16
|
+
const message = String(event.data?.message ?? "").trim();
|
|
17
|
+
return message ? `c3fi completed: status=${status} (${message})` : `c3fi completed: status=${status}`;
|
|
18
|
+
}
|
|
19
|
+
if (event.stage === "audit" && event.status === "completed") {
|
|
20
|
+
const verdict = String(event.data?.verdict ?? "-");
|
|
21
|
+
const reasonCode = String(event.data?.reason_code ?? "-");
|
|
22
|
+
return `audit completed: verdict=${verdict} reason=${reasonCode}`;
|
|
23
|
+
}
|
|
24
|
+
if (event.stage === "complete" && event.status === "completed") {
|
|
25
|
+
const verdict = String(event.data?.verdict ?? "-");
|
|
26
|
+
return `pipeline completed: verdict=${verdict}`;
|
|
27
|
+
}
|
|
28
|
+
if (event.stage === "error" && event.status === "failed") {
|
|
29
|
+
return `pipeline failed: ${event.message}`;
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
async function handleRunCommand(context) {
|
|
34
|
+
const { cwd, options, services, logger } = context;
|
|
35
|
+
const roundStart = services.now();
|
|
36
|
+
const session = await services.requireSessionWithDialog(cwd);
|
|
37
|
+
if (session.state !== "READY") {
|
|
38
|
+
throw new Error(`Run blocked: session state is ${session.state}. Use \`/build\` first.`);
|
|
39
|
+
}
|
|
40
|
+
const nextRound = (session.dialog?.rounds.at(-1)?.round ?? 0) + 1;
|
|
41
|
+
options.board.run_status = "RUNNING";
|
|
42
|
+
options.board.run_stage = "ONBOARDING";
|
|
43
|
+
options.board.audit_verdict = "PENDING";
|
|
44
|
+
options.board.audit_reason = "-";
|
|
45
|
+
options.board.audit_conclusion = "pipeline running";
|
|
46
|
+
options.board.retry_allowed = "-";
|
|
47
|
+
options.board.verification_status = "PENDING";
|
|
48
|
+
options.board.risk_hit = "-";
|
|
49
|
+
options.board.budget_plan_calls = 0;
|
|
50
|
+
options.board.budget_audit_calls = 0;
|
|
51
|
+
options.board.budget_challenge_used = 0;
|
|
52
|
+
await services.appendDialogEntry(cwd, "system", "status", `run #${nextRound} started`);
|
|
53
|
+
if (options.interactive && options.redraw) {
|
|
54
|
+
await options.redraw("");
|
|
55
|
+
}
|
|
56
|
+
const appendRound = async (verdict, reasonCode, checkpointId) => {
|
|
57
|
+
await services.mutateDialogSession(cwd, (current) => {
|
|
58
|
+
const next = {
|
|
59
|
+
...current,
|
|
60
|
+
dialog: {
|
|
61
|
+
...current.dialog,
|
|
62
|
+
rounds: [
|
|
63
|
+
...(current.dialog?.rounds ?? []),
|
|
64
|
+
{
|
|
65
|
+
round: nextRound,
|
|
66
|
+
started_at: roundStart,
|
|
67
|
+
completed_at: services.now(),
|
|
68
|
+
verdict,
|
|
69
|
+
reason_code: reasonCode,
|
|
70
|
+
checkpoint_id: checkpointId
|
|
71
|
+
}
|
|
72
|
+
].slice(-services.maxDialogRounds),
|
|
73
|
+
history: [...(current.dialog?.history ?? [])],
|
|
74
|
+
turn: current.dialog?.turn ?? 0,
|
|
75
|
+
debug: current.dialog?.debug ?? false
|
|
76
|
+
},
|
|
77
|
+
updated_at: services.now()
|
|
78
|
+
};
|
|
79
|
+
return next;
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
try {
|
|
83
|
+
const output = await services.runConfirmedPipeline(options.sopOut, options.checkpointOut, cwd, async (event) => {
|
|
84
|
+
options.board.run_stage = event.stage.toUpperCase();
|
|
85
|
+
if (event.status === "failed") {
|
|
86
|
+
options.board.run_status = "FAILED";
|
|
87
|
+
}
|
|
88
|
+
else if (event.stage === "complete" && event.status === "completed") {
|
|
89
|
+
options.board.run_status = "COMPLETED";
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
options.board.run_status = "RUNNING";
|
|
93
|
+
}
|
|
94
|
+
if (event.stage === "verify" && event.status === "completed") {
|
|
95
|
+
const allPassed = Boolean(event.data?.all_passed);
|
|
96
|
+
options.board.verification_status = allPassed ? "PASS" : "FAIL";
|
|
97
|
+
}
|
|
98
|
+
if (event.stage === "c3fi" && event.status === "completed") {
|
|
99
|
+
const message = typeof event.data?.message === "string" ? event.data.message : "";
|
|
100
|
+
options.board.risk_hit = message || options.board.risk_hit;
|
|
101
|
+
}
|
|
102
|
+
const stageHistoryEntry = formatRunStageHistoryEntry(event);
|
|
103
|
+
if (stageHistoryEntry) {
|
|
104
|
+
await services.appendDialogEntry(cwd, "system", "status", `run #${nextRound} ${stageHistoryEntry}`);
|
|
105
|
+
}
|
|
106
|
+
if (options.interactive && options.redraw) {
|
|
107
|
+
await options.redraw("");
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
const debug = (await services.requireSessionWithDialog(cwd)).dialog?.debug ?? false;
|
|
111
|
+
const summary = services.summarizeVerdict(output, debug);
|
|
112
|
+
const panel = summary.panel;
|
|
113
|
+
options.board.run_stage = "COMPLETE";
|
|
114
|
+
options.board.run_status = panel.verdict === "FAIL" ? "FAILED" : "COMPLETED";
|
|
115
|
+
options.board.verification_status = panel.test_status;
|
|
116
|
+
options.board.verification_passed = panel.tests_passed;
|
|
117
|
+
options.board.verification_total = panel.tests_total;
|
|
118
|
+
options.board.risk_hit = panel.risk_hit;
|
|
119
|
+
options.board.audit_verdict = panel.verdict;
|
|
120
|
+
options.board.audit_reason = panel.reason_code;
|
|
121
|
+
options.board.audit_conclusion = panel.audit_conclusion;
|
|
122
|
+
options.board.retry_allowed = panel.retry_allowed ? "YES" : "NO";
|
|
123
|
+
options.board.budget_plan_calls = output.checkpoint?.budget.cloud_plan_calls ?? 0;
|
|
124
|
+
options.board.budget_audit_calls = output.checkpoint?.budget.cloud_audit_calls ?? 0;
|
|
125
|
+
options.board.budget_challenge_used = output.checkpoint?.budget.challenge_used ?? 0;
|
|
126
|
+
if (!options.interactive && !options.quiet) {
|
|
127
|
+
services.printVerdictLines(summary.lines, output.interpretation.verdict);
|
|
128
|
+
}
|
|
129
|
+
const reasonCode = output.finalAuditResult.reason_code || "UNKNOWN";
|
|
130
|
+
const budgetSnapshot = `budget(plan=${options.board.budget_plan_calls},audit=${options.board.budget_audit_calls},challenge=${options.board.budget_challenge_used})`;
|
|
131
|
+
const historyEntry = `${summary.historyEntry} | ${budgetSnapshot}`;
|
|
132
|
+
await appendRound(output.interpretation.verdict, reasonCode, output.checkpoint?.checkpoint_id);
|
|
133
|
+
await services.appendDialogEntry(cwd, "system", "result", `round #${nextRound} ${historyEntry}`);
|
|
134
|
+
return { action: "continue" };
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
138
|
+
const reasonCode = "RUN_COMMAND_ERROR";
|
|
139
|
+
options.board.run_stage = "ERROR";
|
|
140
|
+
options.board.run_status = "FAILED";
|
|
141
|
+
options.board.audit_verdict = "FAIL";
|
|
142
|
+
options.board.audit_reason = reasonCode;
|
|
143
|
+
options.board.audit_conclusion = message;
|
|
144
|
+
options.board.retry_allowed = "NO";
|
|
145
|
+
await appendRound("FAIL", reasonCode);
|
|
146
|
+
const historyEntry = `verdict=FAIL | rule=${reasonCode} | tests=${options.board.verification_status} (${options.board.verification_passed}/${options.board.verification_total}) | risk=${options.board.risk_hit} | retry=NO | budget(plan=${options.board.budget_plan_calls},audit=${options.board.budget_audit_calls},challenge=${options.board.budget_challenge_used})`;
|
|
147
|
+
await services.appendDialogEntry(cwd, "system", "result", `round #${nextRound} ${historyEntry}`);
|
|
148
|
+
if (options.interactive && options.redraw) {
|
|
149
|
+
await options.redraw("");
|
|
150
|
+
}
|
|
151
|
+
if (!options.interactive && !options.quiet) {
|
|
152
|
+
logger.error("FAIL");
|
|
153
|
+
logger.error(message);
|
|
154
|
+
}
|
|
155
|
+
if (options.interactive) {
|
|
156
|
+
return { action: "continue" };
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleStatusCommand = handleStatusCommand;
|
|
4
|
+
async function handleStatusCommand(context) {
|
|
5
|
+
const { cwd, services, logger } = context;
|
|
6
|
+
const lines = await services.buildSessionStatusLines(cwd);
|
|
7
|
+
for (const line of lines) {
|
|
8
|
+
logger.info(line);
|
|
9
|
+
}
|
|
10
|
+
await services.appendDialogEntry(cwd, "system", "status", `status snapshot: ${lines.join(" | ")}`);
|
|
11
|
+
return { action: "continue", notice: "status refreshed" };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/status.ts"],"names":[],"mappings":";;AAEA,kDAUC;AAVM,KAAK,UAAU,mBAAmB,CACvC,OAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;AAC5D,CAAC"}
|