@imricci/zaker 0.1.2 → 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.
Files changed (108) hide show
  1. package/dist/commands/app-server.d.ts +67 -0
  2. package/dist/commands/app-server.js +601 -0
  3. package/dist/commands/app-server.js.map +1 -0
  4. package/dist/commands/audit.js +2 -1
  5. package/dist/commands/audit.js.map +1 -1
  6. package/dist/commands/build.d.ts +3 -0
  7. package/dist/commands/build.js +22 -0
  8. package/dist/commands/build.js.map +1 -0
  9. package/dist/commands/confirm.d.ts +0 -2
  10. package/dist/commands/confirm.js +2 -16
  11. package/dist/commands/confirm.js.map +1 -1
  12. package/dist/commands/dialog-handlers/auth.d.ts +3 -0
  13. package/dist/commands/dialog-handlers/auth.js +174 -0
  14. package/dist/commands/dialog-handlers/auth.js.map +1 -0
  15. package/dist/commands/dialog-handlers/basic.d.ts +2 -2
  16. package/dist/commands/dialog-handlers/basic.js +8 -9
  17. package/dist/commands/dialog-handlers/basic.js.map +1 -1
  18. package/dist/commands/dialog-handlers/bootstrap.js +2 -2
  19. package/dist/commands/dialog-handlers/bootstrap.js.map +1 -1
  20. package/dist/commands/dialog-handlers/index.d.ts +1 -1
  21. package/dist/commands/dialog-handlers/message.js +94 -3
  22. package/dist/commands/dialog-handlers/message.js.map +1 -1
  23. package/dist/commands/dialog-handlers/model.d.ts +2 -0
  24. package/dist/commands/dialog-handlers/model.js +168 -0
  25. package/dist/commands/dialog-handlers/model.js.map +1 -0
  26. package/dist/commands/dialog-handlers/new.d.ts +2 -0
  27. package/dist/commands/dialog-handlers/new.js +53 -0
  28. package/dist/commands/dialog-handlers/new.js.map +1 -0
  29. package/dist/commands/dialog-handlers/router.js +39 -3
  30. package/dist/commands/dialog-handlers/router.js.map +1 -1
  31. package/dist/commands/dialog-handlers/run.js +44 -8
  32. package/dist/commands/dialog-handlers/run.js.map +1 -1
  33. package/dist/commands/dialog-handlers/types.d.ts +16 -17
  34. package/dist/commands/dialog.d.ts +92 -0
  35. package/dist/commands/dialog.js +1542 -422
  36. package/dist/commands/dialog.js.map +1 -1
  37. package/dist/commands/init.d.ts +3 -1
  38. package/dist/commands/init.js +6 -4
  39. package/dist/commands/init.js.map +1 -1
  40. package/dist/commands/plan.js +10 -6
  41. package/dist/commands/plan.js.map +1 -1
  42. package/dist/commands/run.js +8 -10
  43. package/dist/commands/run.js.map +1 -1
  44. package/dist/commands/status.js +6 -12
  45. package/dist/commands/status.js.map +1 -1
  46. package/dist/commands/tui-launcher.d.ts +1 -0
  47. package/dist/commands/tui-launcher.js +8 -0
  48. package/dist/commands/tui-launcher.js.map +1 -0
  49. package/dist/core/alignment-reply.d.ts +1 -0
  50. package/dist/core/alignment-reply.js +44 -0
  51. package/dist/core/alignment-reply.js.map +1 -0
  52. package/dist/core/checkpoint.js +3 -1
  53. package/dist/core/checkpoint.js.map +1 -1
  54. package/dist/core/planner.d.ts +16 -16
  55. package/dist/core/planner.js +3 -1
  56. package/dist/core/planner.js.map +1 -1
  57. package/dist/core/planning-prep.d.ts +12 -0
  58. package/dist/core/planning-prep.js +26 -0
  59. package/dist/core/planning-prep.js.map +1 -0
  60. package/dist/core/preflight.js +1 -2
  61. package/dist/core/preflight.js.map +1 -1
  62. package/dist/core/provider-onboarding.js +6 -11
  63. package/dist/core/provider-onboarding.js.map +1 -1
  64. package/dist/core/readonly-checkpoint.d.ts +2 -0
  65. package/dist/core/readonly-checkpoint.js +35 -0
  66. package/dist/core/readonly-checkpoint.js.map +1 -0
  67. package/dist/core/run-loop.js +3 -1
  68. package/dist/core/run-loop.js.map +1 -1
  69. package/dist/core/types.d.ts +20 -1
  70. package/dist/index.js +6 -5
  71. package/dist/index.js.map +1 -1
  72. package/dist/infra/artifact-schema.d.ts +25 -0
  73. package/dist/infra/artifact-schema.js +353 -0
  74. package/dist/infra/artifact-schema.js.map +1 -0
  75. package/dist/infra/config.d.ts +14 -1
  76. package/dist/infra/config.js +542 -22
  77. package/dist/infra/config.js.map +1 -1
  78. package/dist/infra/dependency-report.d.ts +5 -0
  79. package/dist/infra/dependency-report.js +22 -0
  80. package/dist/infra/dependency-report.js.map +1 -0
  81. package/dist/infra/dialog-session.d.ts +29 -0
  82. package/dist/infra/dialog-session.js +244 -0
  83. package/dist/infra/dialog-session.js.map +1 -0
  84. package/dist/infra/intent.d.ts +0 -1
  85. package/dist/infra/intent.js +62 -25
  86. package/dist/infra/intent.js.map +1 -1
  87. package/dist/infra/model-accounts.d.ts +22 -0
  88. package/dist/infra/model-accounts.js +172 -0
  89. package/dist/infra/model-accounts.js.map +1 -0
  90. package/dist/infra/model-catalog.d.ts +4 -1
  91. package/dist/infra/model-catalog.js +102 -27
  92. package/dist/infra/model-catalog.js.map +1 -1
  93. package/dist/infra/openai-codex-oauth.d.ts +18 -0
  94. package/dist/infra/openai-codex-oauth.js +267 -0
  95. package/dist/infra/openai-codex-oauth.js.map +1 -0
  96. package/dist/infra/provider-registry.d.ts +36 -0
  97. package/dist/infra/provider-registry.js +403 -0
  98. package/dist/infra/provider-registry.js.map +1 -0
  99. package/dist/infra/session-status.d.ts +6 -0
  100. package/dist/infra/session-status.js +34 -0
  101. package/dist/infra/session-status.js.map +1 -0
  102. package/dist/infra/tui-utils.d.ts +6 -0
  103. package/dist/infra/tui-utils.js +163 -0
  104. package/dist/infra/tui-utils.js.map +1 -0
  105. package/dist/infra/tui-view.d.ts +44 -0
  106. package/dist/infra/tui-view.js +314 -0
  107. package/dist/infra/tui-view.js.map +1 -0
  108. 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,2 @@
1
+ import { DialogHandlerContext, HandleDialogInputResult } from "./types";
2
+ export declare function handleNewCommand(context: DialogHandlerContext): Promise<HandleDialogInputResult>;
@@ -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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"}
@@ -3,20 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.dispatchDialogInput = dispatchDialogInput;
4
4
  const bootstrap_1 = require("./bootstrap");
5
5
  const basic_1 = require("./basic");
6
+ const auth_1 = require("./auth");
6
7
  const message_1 = require("./message");
8
+ const model_1 = require("./model");
9
+ const new_1 = require("./new");
7
10
  const resume_1 = require("./resume");
8
11
  const run_1 = require("./run");
9
12
  const status_1 = require("./status");
10
13
  const activeHandlers = {
11
14
  "/exit": basic_1.handleExitCommand,
12
- "/quit": basic_1.handleExitCommand,
13
15
  "/help": basic_1.handleHelpCommand,
14
16
  "/init": basic_1.handleInitCommand,
17
+ "/new": new_1.handleNewCommand,
15
18
  "/resume": resume_1.handleResumeCommand,
19
+ "/model": model_1.handleModelCommand,
20
+ "/login": auth_1.handleLoginCommand,
21
+ "/logout": auth_1.handleLogoutCommand,
16
22
  "/status": status_1.handleStatusCommand,
17
23
  "/debug": basic_1.handleDebugCommand,
18
24
  "/edit": basic_1.handleEditCommand,
19
- "/confirm": basic_1.handleConfirmCommand,
25
+ "/build": basic_1.handleBuildCommand,
20
26
  "/run": run_1.handleRunCommand
21
27
  };
22
28
  function createCommandContext(params) {
@@ -45,6 +51,34 @@ async function dispatchDialogInput(params) {
45
51
  });
46
52
  }
47
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
+ }
48
82
  if (!trimmed.startsWith("/")) {
49
83
  return await (0, message_1.handleMessageInput)(createCommandContext({
50
84
  cwd,
@@ -58,7 +92,9 @@ async function dispatchDialogInput(params) {
58
92
  }
59
93
  const [command, ...args] = trimmed.split(" ");
60
94
  const rest = args.join(" ").trim();
61
- await services.appendDialogEntry(cwd, "user", "command", trimmed);
95
+ if (command !== "/exit" && command !== "/login") {
96
+ await services.appendDialogEntry(cwd, "user", "command", trimmed);
97
+ }
62
98
  const handler = activeHandlers[command];
63
99
  if (!handler) {
64
100
  throw new Error(`Unknown command: ${command}`);
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/router.ts"],"names":[],"mappings":";;AAgEA,kDAqDC;AArHD,2CAAmD;AACnD,mCAOiB;AACjB,uCAA+C;AAC/C,qCAA+C;AAC/C,+BAAyC;AACzC,qCAA+C;AAmB/C,MAAM,cAAc,GAAyC;IAC3D,OAAO,EAAE,yBAAiB;IAC1B,OAAO,EAAE,yBAAiB;IAC1B,OAAO,EAAE,yBAAiB;IAC1B,OAAO,EAAE,yBAAiB;IAC1B,SAAS,EAAE,4BAAmB;IAC9B,SAAS,EAAE,4BAAmB;IAC9B,QAAQ,EAAE,0BAAkB;IAC5B,OAAO,EAAE,yBAAiB;IAC1B,UAAU,EAAE,4BAAoB;IAChC,MAAM,EAAE,sBAAgB;CACzB,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAQ7B;IACC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,MAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,IAAA,gCAAoB,EAAC;YAChC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;YACnB,GAAG;YACH,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,IAAA,4BAAkB,EAC7B,oBAAoB,CAAC;YACnB,GAAG;YACH,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,OAAO,CAClB,oBAAoB,CAAC;QACnB,GAAG;QACH,KAAK,EAAE,OAAO;QACd,OAAO;QACP,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/router.ts"],"names":[],"mappings":";;AAsEA,kDAyFC;AA/JD,2CAAmD;AACnD,mCAOiB;AACjB,iCAAiE;AACjE,uCAA+C;AAC/C,mCAA6C;AAC7C,+BAAyC;AACzC,qCAA+C;AAC/C,+BAAyC;AACzC,qCAA+C;AAmB/C,MAAM,cAAc,GAAyC;IAC3D,OAAO,EAAE,yBAAiB;IAC1B,OAAO,EAAE,yBAAiB;IAC1B,OAAO,EAAE,yBAAiB;IAC1B,MAAM,EAAE,sBAAgB;IACxB,SAAS,EAAE,4BAAmB;IAC9B,QAAQ,EAAE,0BAAkB;IAC5B,QAAQ,EAAE,yBAAkB;IAC5B,SAAS,EAAE,0BAAmB;IAC9B,SAAS,EAAE,4BAAmB;IAC9B,QAAQ,EAAE,0BAAkB;IAC5B,OAAO,EAAE,yBAAiB;IAC1B,QAAQ,EAAE,0BAAkB;IAC5B,MAAM,EAAE,sBAAgB;CACzB,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAQ7B;IACC,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,mBAAmB,CACvC,MAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,MAAM,IAAA,gCAAoB,EAAC;YAChC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;YACnB,GAAG;YACH,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAEhE,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAC/D,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClE,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,MAAM,OAAO,CAClB,oBAAoB,CAAC;gBACnB,GAAG;gBACH,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,EAAE;gBACR,OAAO;gBACP,QAAQ;gBACR,MAAM;aACP,CAAC,CACH,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,iCAAiC,CAAC;QAClD,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,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC7D,MAAM,QAAQ,CAAC,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,IAAA,4BAAkB,EAC7B,oBAAoB,CAAC;YACnB,GAAG;YACH,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,MAAM,OAAO,CAClB,oBAAoB,CAAC;QACnB,GAAG;QACH,KAAK,EAAE,OAAO;QACd,OAAO;QACP,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,MAAM;KACP,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,12 +1,41 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
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
+ }
4
33
  async function handleRunCommand(context) {
5
34
  const { cwd, options, services, logger } = context;
6
35
  const roundStart = services.now();
7
36
  const session = await services.requireSessionWithDialog(cwd);
8
37
  if (session.state !== "READY") {
9
- throw new Error(`Run blocked: session state is ${session.state}. Use \`/confirm\` first.`);
38
+ throw new Error(`Run blocked: session state is ${session.state}. Use \`/build\` first.`);
10
39
  }
11
40
  const nextRound = (session.dialog?.rounds.at(-1)?.round ?? 0) + 1;
12
41
  options.board.run_status = "RUNNING";
@@ -20,8 +49,9 @@ async function handleRunCommand(context) {
20
49
  options.board.budget_plan_calls = 0;
21
50
  options.board.budget_audit_calls = 0;
22
51
  options.board.budget_challenge_used = 0;
52
+ await services.appendDialogEntry(cwd, "system", "status", `run #${nextRound} started`);
23
53
  if (options.interactive && options.redraw) {
24
- await options.redraw("pipeline started");
54
+ await options.redraw("");
25
55
  }
26
56
  const appendRound = async (verdict, reasonCode, checkpointId) => {
27
57
  await services.mutateDialogSession(cwd, (current) => {
@@ -69,8 +99,12 @@ async function handleRunCommand(context) {
69
99
  const message = typeof event.data?.message === "string" ? event.data.message : "";
70
100
  options.board.risk_hit = message || options.board.risk_hit;
71
101
  }
102
+ const stageHistoryEntry = formatRunStageHistoryEntry(event);
103
+ if (stageHistoryEntry) {
104
+ await services.appendDialogEntry(cwd, "system", "status", `run #${nextRound} ${stageHistoryEntry}`);
105
+ }
72
106
  if (options.interactive && options.redraw) {
73
- await options.redraw(event.message);
107
+ await options.redraw("");
74
108
  }
75
109
  });
76
110
  const debug = (await services.requireSessionWithDialog(cwd)).dialog?.debug ?? false;
@@ -93,9 +127,11 @@ async function handleRunCommand(context) {
93
127
  services.printVerdictLines(summary.lines, output.interpretation.verdict);
94
128
  }
95
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}`;
96
132
  await appendRound(output.interpretation.verdict, reasonCode, output.checkpoint?.checkpoint_id);
97
- await services.appendDialogEntry(cwd, "system", "result", `round #${nextRound} ${summary.historyEntry}`);
98
- return { action: "continue", notice: `round #${nextRound} ${summary.historyEntry}` };
133
+ await services.appendDialogEntry(cwd, "system", "result", `round #${nextRound} ${historyEntry}`);
134
+ return { action: "continue" };
99
135
  }
100
136
  catch (error) {
101
137
  const message = error instanceof Error ? error.message : String(error);
@@ -107,17 +143,17 @@ async function handleRunCommand(context) {
107
143
  options.board.audit_conclusion = message;
108
144
  options.board.retry_allowed = "NO";
109
145
  await appendRound("FAIL", reasonCode);
110
- 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`;
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})`;
111
147
  await services.appendDialogEntry(cwd, "system", "result", `round #${nextRound} ${historyEntry}`);
112
148
  if (options.interactive && options.redraw) {
113
- await options.redraw(message);
149
+ await options.redraw("");
114
150
  }
115
151
  if (!options.interactive && !options.quiet) {
116
152
  logger.error("FAIL");
117
153
  logger.error(message);
118
154
  }
119
155
  if (options.interactive) {
120
- return { action: "continue", notice: `round #${nextRound} ${historyEntry}` };
156
+ return { action: "continue" };
121
157
  }
122
158
  throw error;
123
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/dialog-handlers/run.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import type { IntentCard, SessionStore } from "../../core/types";
2
+ import type { ConversationIndex, ConversationRuntime } from "../../infra/dialog-session";
2
3
  import type { PipelineRunOutput, PipelineStageEvent } from "../run";
4
+ export type { ConversationIndex, ConversationRuntime } from "../../infra/dialog-session";
3
5
  export interface HandleDialogInputResult {
4
6
  action: "continue" | "exit";
5
7
  notice?: string;
@@ -19,27 +21,12 @@ export interface TaskBoardState {
19
21
  budget_audit_calls: number;
20
22
  budget_challenge_used: number;
21
23
  }
22
- export interface ConversationRecord {
23
- id: string;
24
- updated_at: string;
25
- state?: string;
26
- last_run_verdict?: string;
27
- current_intent_id?: string;
28
- }
29
- export interface ConversationIndex {
30
- schema_version: string;
31
- active_id: string;
32
- updated_at: string;
33
- sessions: ConversationRecord[];
34
- }
35
- export interface ConversationRuntime {
36
- index: ConversationIndex;
37
- }
38
24
  export interface HandleDialogInputOptions {
39
25
  sopOut: string;
40
26
  checkpointOut: string;
41
27
  interactive: boolean;
42
28
  quiet: boolean;
29
+ turnAbortSignal?: AbortSignal;
43
30
  board: TaskBoardState;
44
31
  conversations: ConversationRuntime;
45
32
  redraw?: (nextNotice?: string) => Promise<void>;
@@ -76,7 +63,19 @@ export interface DialogHandlerServices {
76
63
  requireSessionWithDialog(cwd: string): Promise<SessionStore>;
77
64
  mutateDialogSession(cwd: string, updater: (session: SessionStore) => SessionStore): Promise<SessionStore>;
78
65
  appendDialogEntry(cwd: string, role: "user" | "system", kind: "message" | "command" | "status" | "result", content: string): Promise<void>;
66
+ readIntentCard(cwd: string): Promise<IntentCard | null>;
79
67
  upsertDraftIntent(cwd: string, content: string, replace?: boolean): Promise<string>;
68
+ generateAssistantReply(cwd: string, userMessage: string, intentUpdate: string, options?: {
69
+ abort_signal?: AbortSignal;
70
+ }): Promise<string>;
71
+ detectBuildIntent(cwd: string, userMessage: string, intentUpdate: string, options?: {
72
+ abort_signal?: AbortSignal;
73
+ }): Promise<{
74
+ ready: boolean;
75
+ confidence: number;
76
+ signal: string;
77
+ }>;
78
+ setPendingBuildChoice(cwd: string, intentId: string | null): Promise<void>;
80
79
  buildSessionStatusLines(cwd: string): Promise<string[]>;
81
80
  runInit(cwd: string): Promise<void>;
82
81
  persistActiveConversation(runtime: ConversationRuntime, cwd: string): Promise<void>;
@@ -86,7 +85,7 @@ export interface DialogHandlerServices {
86
85
  current: string;
87
86
  }>;
88
87
  normalizeConversationId(raw: string): string;
89
- confirmIntent(cwd: string): Promise<{
88
+ buildIntent(cwd: string): Promise<{
90
89
  intent: IntentCard;
91
90
  binding: {
92
91
  intent_sha256: string;
@@ -1,9 +1,101 @@
1
+ import type { Key as ReadlineKey } from "node:readline";
1
2
  import { Command } from "commander";
3
+ import { ModelMenuSnapshot } from "../infra/model-accounts";
4
+ import { TwoPaneRenderParams } from "../infra/tui-view";
5
+ import { HandleDialogInputOptions, HandleDialogInputResult, TaskBoardState } from "./dialog-handlers";
6
+ export declare function buildCommandCompletionCandidates(): string[];
7
+ export declare function resolveSlashMenuCandidates(buffer: string, sessionIds?: string[], modelMenu?: ModelMenuSnapshot): string[];
2
8
  export interface DialogueSessionOptions {
3
9
  script?: string[];
4
10
  quiet?: boolean;
5
11
  sopOut?: string;
6
12
  checkpointOut?: string;
13
+ debug?: boolean;
7
14
  }
15
+ export declare function createTaskBoardState(): TaskBoardState;
16
+ export declare function buildTuiFramePreview(params: TwoPaneRenderParams, viewport?: {
17
+ columns?: number;
18
+ rows?: number;
19
+ }): string[];
20
+ interface NormalizedInputChunk {
21
+ text: string;
22
+ hasLineBreak: boolean;
23
+ }
24
+ export declare function normalizeInteractiveInputChunk(chunk: string): NormalizedInputChunk;
25
+ export declare function parseMouseWheelDeltas(chunk: string): number[];
26
+ export declare function shouldAppendInteractiveTextChunk(chunk: string, key: ReadlineKey, normalizedChunk: NormalizedInputChunk): boolean;
27
+ export declare function shouldSubmitOnUnparsedLineBreak(key: ReadlineKey, normalizedChunk: NormalizedInputChunk): boolean;
28
+ export declare function isPlainSubmitSequence(sequence: string): boolean;
29
+ interface BufferedInputEvent {
30
+ readonly sequence: string;
31
+ readonly parsedKey?: string;
32
+ readonly key: ReadlineKey;
33
+ }
34
+ type BufferedInputListener = (event: BufferedInputEvent) => void;
35
+ declare class DialogInputBuffer {
36
+ private readonly listeners;
37
+ subscribe(listener: BufferedInputListener): () => void;
38
+ clear(): void;
39
+ emitSequence(sequence: string): void;
40
+ }
41
+ export declare function resolveAutocompleteCommandCandidatesForTest(buffer: string, cursorIndex: number, resolveCandidates: (buffer: string) => string[]): string[];
42
+ export declare function renderCommandMenuWithSelectListForTest(items: string[], selectedIndex?: number, width?: number): string[];
43
+ export declare function moveCommandSelectionWithSelectListForTest(items: string[], selectedIndex: number, sequence: string): number;
44
+ interface MenuEnterOutcome {
45
+ buffer: string;
46
+ submit: boolean;
47
+ }
48
+ export interface InteractiveBufferState {
49
+ buffer: string;
50
+ cursorIndex: number;
51
+ }
52
+ export type InteractiveBufferEditAction = {
53
+ type: "move_left";
54
+ } | {
55
+ type: "move_right";
56
+ } | {
57
+ type: "backspace";
58
+ } | {
59
+ type: "delete";
60
+ } | {
61
+ type: "insert";
62
+ text: string;
63
+ };
64
+ export declare function applyInteractiveBufferEdit(state: InteractiveBufferState, action: InteractiveBufferEditAction): InteractiveBufferState;
65
+ export declare function runInteractiveEditorKeySequenceForTest(initialBuffer: string, sequences: string[]): {
66
+ buffer: string;
67
+ cursorIndex: number;
68
+ submissions: string[];
69
+ };
70
+ export declare function shouldTreatCtrlDAsExit(buffer: string, key: ReadlineKey): boolean;
71
+ export declare function resolveMenuEnterOutcome(buffer: string, selected: string | undefined, modelMenu?: ModelMenuSnapshot): MenuEnterOutcome;
72
+ interface InteractiveLoginResolution {
73
+ action: "continue" | "cancel" | "exit";
74
+ line?: string;
75
+ notice?: string;
76
+ }
77
+ export declare function resolveInteractiveLoginCommand(params: {
78
+ line: string;
79
+ cwd: string;
80
+ prompt: (notice: string) => Promise<string>;
81
+ input_source?: DialogInputBuffer;
82
+ oauth_browser?: {
83
+ enabled?: boolean;
84
+ notify?: (notice: string) => Promise<void>;
85
+ run_openai_oauth?: (input: {
86
+ onAuth: (payload: {
87
+ url: string;
88
+ instructions: string;
89
+ }) => Promise<void>;
90
+ onProgress: (message: string) => Promise<void>;
91
+ onPrompt: (notice: string) => Promise<string>;
92
+ abort_signal?: AbortSignal;
93
+ }) => Promise<{
94
+ access_token: string;
95
+ }>;
96
+ };
97
+ }): Promise<InteractiveLoginResolution>;
98
+ export declare function handleDialogInput(line: string, cwd: string, options: HandleDialogInputOptions): Promise<HandleDialogInputResult>;
8
99
  export declare function runDialogueSession(cwd?: string, options?: DialogueSessionOptions): Promise<void>;
9
100
  export declare function registerDialogCommand(program: Command): void;
101
+ export {};