@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.
Files changed (121) 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 +7 -0
  16. package/dist/commands/dialog-handlers/basic.js +82 -0
  17. package/dist/commands/dialog-handlers/basic.js.map +1 -0
  18. package/dist/commands/dialog-handlers/bootstrap.d.ts +10 -0
  19. package/dist/commands/dialog-handlers/bootstrap.js +38 -0
  20. package/dist/commands/dialog-handlers/bootstrap.js.map +1 -0
  21. package/dist/commands/dialog-handlers/index.d.ts +2 -0
  22. package/dist/commands/dialog-handlers/index.js +6 -0
  23. package/dist/commands/dialog-handlers/index.js.map +1 -0
  24. package/dist/commands/dialog-handlers/message.d.ts +2 -0
  25. package/dist/commands/dialog-handlers/message.js +103 -0
  26. package/dist/commands/dialog-handlers/message.js.map +1 -0
  27. package/dist/commands/dialog-handlers/model.d.ts +2 -0
  28. package/dist/commands/dialog-handlers/model.js +168 -0
  29. package/dist/commands/dialog-handlers/model.js.map +1 -0
  30. package/dist/commands/dialog-handlers/new.d.ts +2 -0
  31. package/dist/commands/dialog-handlers/new.js +53 -0
  32. package/dist/commands/dialog-handlers/new.js.map +1 -0
  33. package/dist/commands/dialog-handlers/resume.d.ts +2 -0
  34. package/dist/commands/dialog-handlers/resume.js +25 -0
  35. package/dist/commands/dialog-handlers/resume.js.map +1 -0
  36. package/dist/commands/dialog-handlers/router.d.ts +11 -0
  37. package/dist/commands/dialog-handlers/router.js +112 -0
  38. package/dist/commands/dialog-handlers/router.js.map +1 -0
  39. package/dist/commands/dialog-handlers/run.d.ts +2 -0
  40. package/dist/commands/dialog-handlers/run.js +161 -0
  41. package/dist/commands/dialog-handlers/run.js.map +1 -0
  42. package/dist/commands/dialog-handlers/status.d.ts +2 -0
  43. package/dist/commands/dialog-handlers/status.js +13 -0
  44. package/dist/commands/dialog-handlers/status.js.map +1 -0
  45. package/dist/commands/dialog-handlers/types.d.ts +107 -0
  46. package/dist/commands/dialog-handlers/types.js +3 -0
  47. package/dist/commands/dialog-handlers/types.js.map +1 -0
  48. package/dist/commands/dialog.d.ts +92 -0
  49. package/dist/commands/dialog.js +1784 -236
  50. package/dist/commands/dialog.js.map +1 -1
  51. package/dist/commands/init.d.ts +3 -1
  52. package/dist/commands/init.js +6 -4
  53. package/dist/commands/init.js.map +1 -1
  54. package/dist/commands/plan.js +10 -6
  55. package/dist/commands/plan.js.map +1 -1
  56. package/dist/commands/run.js +8 -10
  57. package/dist/commands/run.js.map +1 -1
  58. package/dist/commands/status.js +6 -12
  59. package/dist/commands/status.js.map +1 -1
  60. package/dist/commands/tui-launcher.d.ts +1 -0
  61. package/dist/commands/tui-launcher.js +8 -0
  62. package/dist/commands/tui-launcher.js.map +1 -0
  63. package/dist/core/alignment-reply.d.ts +1 -0
  64. package/dist/core/alignment-reply.js +44 -0
  65. package/dist/core/alignment-reply.js.map +1 -0
  66. package/dist/core/checkpoint.js +3 -1
  67. package/dist/core/checkpoint.js.map +1 -1
  68. package/dist/core/planner.d.ts +16 -16
  69. package/dist/core/planner.js +3 -1
  70. package/dist/core/planner.js.map +1 -1
  71. package/dist/core/planning-prep.d.ts +12 -0
  72. package/dist/core/planning-prep.js +26 -0
  73. package/dist/core/planning-prep.js.map +1 -0
  74. package/dist/core/preflight.js +1 -2
  75. package/dist/core/preflight.js.map +1 -1
  76. package/dist/core/provider-onboarding.js +6 -11
  77. package/dist/core/provider-onboarding.js.map +1 -1
  78. package/dist/core/readonly-checkpoint.d.ts +2 -0
  79. package/dist/core/readonly-checkpoint.js +35 -0
  80. package/dist/core/readonly-checkpoint.js.map +1 -0
  81. package/dist/core/run-loop.js +3 -1
  82. package/dist/core/run-loop.js.map +1 -1
  83. package/dist/core/types.d.ts +20 -1
  84. package/dist/index.js +20 -6
  85. package/dist/index.js.map +1 -1
  86. package/dist/infra/artifact-schema.d.ts +25 -0
  87. package/dist/infra/artifact-schema.js +353 -0
  88. package/dist/infra/artifact-schema.js.map +1 -0
  89. package/dist/infra/config.d.ts +14 -1
  90. package/dist/infra/config.js +542 -22
  91. package/dist/infra/config.js.map +1 -1
  92. package/dist/infra/dependency-report.d.ts +5 -0
  93. package/dist/infra/dependency-report.js +22 -0
  94. package/dist/infra/dependency-report.js.map +1 -0
  95. package/dist/infra/dialog-session.d.ts +29 -0
  96. package/dist/infra/dialog-session.js +244 -0
  97. package/dist/infra/dialog-session.js.map +1 -0
  98. package/dist/infra/intent.js +63 -13
  99. package/dist/infra/intent.js.map +1 -1
  100. package/dist/infra/model-accounts.d.ts +22 -0
  101. package/dist/infra/model-accounts.js +172 -0
  102. package/dist/infra/model-accounts.js.map +1 -0
  103. package/dist/infra/model-catalog.d.ts +4 -1
  104. package/dist/infra/model-catalog.js +102 -27
  105. package/dist/infra/model-catalog.js.map +1 -1
  106. package/dist/infra/openai-codex-oauth.d.ts +18 -0
  107. package/dist/infra/openai-codex-oauth.js +267 -0
  108. package/dist/infra/openai-codex-oauth.js.map +1 -0
  109. package/dist/infra/provider-registry.d.ts +36 -0
  110. package/dist/infra/provider-registry.js +403 -0
  111. package/dist/infra/provider-registry.js.map +1 -0
  112. package/dist/infra/session-status.d.ts +6 -0
  113. package/dist/infra/session-status.js +34 -0
  114. package/dist/infra/session-status.js.map +1 -0
  115. package/dist/infra/tui-utils.d.ts +6 -0
  116. package/dist/infra/tui-utils.js +163 -0
  117. package/dist/infra/tui-utils.js.map +1 -0
  118. package/dist/infra/tui-view.d.ts +44 -0
  119. package/dist/infra/tui-view.js +314 -0
  120. package/dist/infra/tui-view.js.map +1 -0
  121. package/package.json +4 -1
@@ -0,0 +1,2 @@
1
+ import { DialogHandlerContext, HandleDialogInputResult } from "./types";
2
+ export declare function handleModelCommand(context: DialogHandlerContext): Promise<HandleDialogInputResult>;
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ import { DialogHandlerContext, HandleDialogInputResult } from "./types";
2
+ export declare function handleResumeCommand(context: DialogHandlerContext): Promise<HandleDialogInputResult>;
@@ -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":";;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"}
@@ -0,0 +1,2 @@
1
+ import { DialogHandlerContext, HandleDialogInputResult } from "./types";
2
+ export declare function handleRunCommand(context: DialogHandlerContext): Promise<HandleDialogInputResult>;
@@ -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":";;AAiCA,4CAwJC;AAtLD,SAAS,0BAA0B,CAAC,KAAyB;IAC3D,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,IAAI,CAAC,CAAC,CAAC;QAChE,OAAO,oCAAoC,YAAY,oBAAoB,cAAc,EAAE,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClD,OAAO,qBAAqB,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC,CAAC,CAAC,0BAA0B,MAAM,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,0BAA0B,MAAM,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;QAC1D,OAAO,4BAA4B,OAAO,WAAW,UAAU,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC;QACnD,OAAO,+BAA+B,OAAO,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzD,OAAO,oBAAoB,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,OAAO,CAAC,KAAK,yBAAyB,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;IACjC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,kBAAkB,CAAC;IACpD,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS,UAAU,CAAC,CAAC;IAEvF,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,EACvB,OAAsC,EACtC,UAAkB,EAClB,YAAqB,EACN,EAAE;QACjB,MAAM,QAAQ,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YAClD,MAAM,IAAI,GAAG;gBACX,GAAG,OAAO;gBACV,MAAM,EAAE;oBACN,GAAG,OAAO,CAAC,MAAM;oBACjB,MAAM,EAAE;wBACN,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;wBACjC;4BACE,KAAK,EAAE,SAAS;4BAChB,UAAU,EAAE,UAAU;4BACtB,YAAY,EAAE,QAAQ,CAAC,GAAG,EAAE;4BAC5B,OAAO;4BACP,WAAW,EAAE,UAAU;4BACvB,aAAa,EAAE,YAAY;yBAC5B;qBACF,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;oBAClC,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;oBAC7C,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC;oBAC/B,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK;iBACtC;gBACD,UAAU,EAAE,QAAQ,CAAC,GAAG,EAAE;aAC3B,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAChD,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,GAAG,EACH,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACpD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;YACtC,CAAC;iBAAM,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACtE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;YACvC,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YAClE,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3D,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YAC7D,CAAC;YAED,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,SAAS,IAAI,iBAAiB,EAAE,CAAC,CAAC;YACtG,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC1C,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;QACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,WAAW,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QAEpF,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3C,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,IAAI,SAAS,CAAC;QACpE,MAAM,cAAc,GAClB,eAAe,OAAO,CAAC,KAAK,CAAC,iBAAiB,UAAU,OAAO,CAAC,KAAK,CAAC,kBAAkB,cAAc,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC;QAC/I,MAAM,YAAY,GAAG,GAAG,OAAO,CAAC,YAAY,MAAM,cAAc,EAAE,CAAC;QACnE,MAAM,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC/F,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,SAAS,IAAI,YAAY,EAAE,CAAC,CAAC;QACjG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,mBAAmB,CAAC;QAEvC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,UAAU,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAEnC,MAAM,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,YAAY,GAChB,uBAAuB,UAAU,YAAY,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,OAAO,CAAC,KAAK,CAAC,kBAAkB,YAAY,OAAO,CAAC,KAAK,CAAC,QAAQ,6BAA6B,OAAO,CAAC,KAAK,CAAC,iBAAiB,UAAU,OAAO,CAAC,KAAK,CAAC,kBAAkB,cAAc,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC;QACvV,MAAM,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,SAAS,IAAI,YAAY,EAAE,CAAC,CAAC;QAEjG,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { DialogHandlerContext, HandleDialogInputResult } from "./types";
2
+ export declare function handleStatusCommand(context: DialogHandlerContext): Promise<HandleDialogInputResult>;
@@ -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"}