@chenmk/superflow 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +20 -1
  2. package/README.zh-CN.md +16 -1
  3. package/assets/manifest.json +5 -4
  4. package/assets/prompts/superflow-design.md +3 -0
  5. package/assets/prompts/superflow-docs.md +4 -1
  6. package/assets/scripts/superflow-dependency-update-hook.sh +1 -1
  7. package/assets/scripts/superflow-managed-work-check.mjs +194 -0
  8. package/assets/scripts/superflow-managed-work-guard.sh +103 -0
  9. package/assets/skills/openspec-propose/SKILL.md +11 -0
  10. package/assets/skills/superflow-design/SKILL.md +18 -9
  11. package/assets/skills/superflow-docs/SKILL.md +16 -0
  12. package/assets/skills/superflow-pipeline/SKILL.md +46 -0
  13. package/assets/skills/superflow-pipeline/references/document-templates.md +8 -0
  14. package/assets/skills/superflow-pipeline/references/managed-work.md +58 -0
  15. package/assets/skills/superflow-pipeline/references/quality-gate.md +1 -0
  16. package/assets/skills/superflow-pipeline/references/superpower-technical-design-template.md +10 -0
  17. package/assets/skills/superflow-pipeline/scripts/superflow-archive.sh +1 -1
  18. package/assets/skills/superflow-pipeline/scripts/superflow-guard.sh +79 -9
  19. package/assets/skills-en/openspec-propose/SKILL.md +14 -0
  20. package/assets/skills-en/superflow-design/SKILL.md +18 -8
  21. package/assets/skills-en/superflow-docs/SKILL.md +16 -0
  22. package/assets/skills-en/superflow-pipeline/SKILL.md +48 -0
  23. package/assets/skills-en/superflow-pipeline/references/document-templates.md +5 -0
  24. package/assets/skills-en/superflow-pipeline/references/managed-work.md +34 -0
  25. package/assets/skills-en/superflow-pipeline/references/quality-gate.md +8 -0
  26. package/assets/skills-en/superflow-pipeline/references/superpower-technical-design-template.md +11 -0
  27. package/assets/skills-en/superflow-pipeline/scripts/superflow-archive.sh +1 -1
  28. package/assets/skills-en/superflow-pipeline/scripts/superflow-guard.sh +78 -9
  29. package/dist/app/cli.js +120 -102
  30. package/dist/app/cli.js.map +1 -1
  31. package/dist/app/commands/init.js +6 -2
  32. package/dist/app/commands/init.js.map +1 -1
  33. package/dist/app/commands/managed-service.js +5 -0
  34. package/dist/app/commands/managed-service.js.map +1 -0
  35. package/dist/app/commands/pipeline.js +123 -3
  36. package/dist/app/commands/pipeline.js.map +1 -1
  37. package/dist/app/commands/status.js +199 -77
  38. package/dist/app/commands/status.js.map +1 -1
  39. package/dist/app/commands/uninstall.js +5 -2
  40. package/dist/app/commands/uninstall.js.map +1 -1
  41. package/dist/app/commands/update.js +31 -6
  42. package/dist/app/commands/update.js.map +1 -1
  43. package/dist/domains/config/cli-help.js +103 -73
  44. package/dist/domains/config/cli-help.js.map +1 -1
  45. package/dist/domains/deps.js +2 -1
  46. package/dist/domains/deps.js.map +1 -1
  47. package/dist/domains/hook.js +71 -38
  48. package/dist/domains/hook.js.map +1 -1
  49. package/dist/domains/managed-work/contract.js +218 -0
  50. package/dist/domains/managed-work/contract.js.map +1 -0
  51. package/dist/domains/managed-work/i18n.js +12 -0
  52. package/dist/domains/managed-work/i18n.js.map +1 -0
  53. package/dist/domains/managed-work/input.js +111 -0
  54. package/dist/domains/managed-work/input.js.map +1 -0
  55. package/dist/domains/managed-work/journal.js +122 -0
  56. package/dist/domains/managed-work/journal.js.map +1 -0
  57. package/dist/domains/managed-work/lock.js +40 -0
  58. package/dist/domains/managed-work/lock.js.map +1 -0
  59. package/dist/domains/managed-work/notifications.js +53 -0
  60. package/dist/domains/managed-work/notifications.js.map +1 -0
  61. package/dist/domains/managed-work/paths.js +18 -0
  62. package/dist/domains/managed-work/paths.js.map +1 -0
  63. package/dist/domains/managed-work/prompts.js +218 -0
  64. package/dist/domains/managed-work/prompts.js.map +1 -0
  65. package/dist/domains/managed-work/runner.js +626 -0
  66. package/dist/domains/managed-work/runner.js.map +1 -0
  67. package/dist/domains/managed-work/schemas.js +85 -0
  68. package/dist/domains/managed-work/schemas.js.map +1 -0
  69. package/dist/domains/managed-work/service.js +121 -0
  70. package/dist/domains/managed-work/service.js.map +1 -0
  71. package/dist/domains/managed-work/state.js +90 -0
  72. package/dist/domains/managed-work/state.js.map +1 -0
  73. package/dist/domains/managed-work/storage.js +181 -0
  74. package/dist/domains/managed-work/storage.js.map +1 -0
  75. package/dist/domains/managed-work/types.js +16 -0
  76. package/dist/domains/managed-work/types.js.map +1 -0
  77. package/dist/domains/managed-work/wait.js +40 -0
  78. package/dist/domains/managed-work/wait.js.map +1 -0
  79. package/dist/platform/agent-process.js +308 -0
  80. package/dist/platform/agent-process.js.map +1 -0
  81. package/dist/platform/process-liveness.js +10 -0
  82. package/dist/platform/process-liveness.js.map +1 -0
  83. package/dist/platform/version-check.js +30 -9
  84. package/dist/platform/version-check.js.map +1 -1
  85. package/package.json +1 -1
@@ -0,0 +1,308 @@
1
+ import { existsSync, readFileSync, unlinkSync } from "fs";
2
+ import path from "path";
3
+ import spawn from "cross-spawn";
4
+ import { managedText } from "../domains/managed-work/i18n.js";
5
+ export class LocalAgentInvoker {
6
+ async invoke(invocation) {
7
+ return runAgentProcess(invocation);
8
+ }
9
+ }
10
+ export function buildAgentCommand(invocation) {
11
+ if (invocation.agent === "codex")
12
+ return buildCodexCommand(invocation);
13
+ return buildClaudeCommand(invocation);
14
+ }
15
+ async function runAgentProcess(invocation) {
16
+ const command = buildAgentCommand(invocation);
17
+ if (command.outputFile && existsSync(command.outputFile))
18
+ unlinkSync(command.outputFile);
19
+ return new Promise((resolve, reject) => {
20
+ const child = spawn(command.command, command.args, {
21
+ cwd: invocation.projectRoot,
22
+ env: {
23
+ ...process.env,
24
+ SUPERFLOW_MANAGED_TASK_ID: invocation.taskId,
25
+ SUPERFLOW_MANAGED_RUN_ID: invocation.runId,
26
+ SUPERFLOW_MANAGED_ROLE: invocation.role,
27
+ SUPERFLOW_MANAGED_PROJECT_ROOT: invocation.projectRoot,
28
+ },
29
+ detached: process.platform !== "win32",
30
+ stdio: ["pipe", "pipe", "pipe"],
31
+ shell: false,
32
+ });
33
+ let stdout = "";
34
+ let stderr = "";
35
+ let lineBuffer = "";
36
+ let sessionId = invocation.sessionId;
37
+ let lastOutputAt = Date.now();
38
+ let finished = false;
39
+ const warningTimer = setTimeout(() => {
40
+ invocation.onProgress?.(managedText(invocation.language, "连续一段时间没有新进展,后台仍在观察进程", "No new progress for a while; the background service is still observing the process"));
41
+ }, invocation.timeout.warningMs);
42
+ let stalledTimer = setTimeout(onStalled, invocation.timeout.stalledMs);
43
+ const hardTimer = setTimeout(() => {
44
+ stopChild(child.pid);
45
+ finishError(new Error(managedText(invocation.language, `单次 Agent 调用超过 ${invocation.timeout.hardMs}ms`, `Single Agent invocation exceeded ${invocation.timeout.hardMs}ms`)));
46
+ }, invocation.timeout.hardMs);
47
+ if (invocation.sessionId)
48
+ invocation.onSession?.(invocation.sessionId);
49
+ child.stdout?.on("data", (chunk) => {
50
+ const text = chunk.toString();
51
+ stdout += text;
52
+ lastOutputAt = Date.now();
53
+ clearTimeout(stalledTimer);
54
+ stalledTimer = setTimeout(onStalled, invocation.timeout.stalledMs);
55
+ lineBuffer += text;
56
+ const lines = lineBuffer.split(/\r?\n/);
57
+ lineBuffer = lines.pop() ?? "";
58
+ for (const line of lines) {
59
+ const event = safeJson(line);
60
+ const discoveredSession = extractSessionId(event);
61
+ if (!sessionId && discoveredSession) {
62
+ sessionId = discoveredSession;
63
+ invocation.onSession?.(discoveredSession);
64
+ }
65
+ const progress = extractProgress(event);
66
+ if (progress)
67
+ invocation.onProgress?.(progress);
68
+ }
69
+ });
70
+ child.stderr?.on("data", (chunk) => {
71
+ stderr += chunk.toString();
72
+ lastOutputAt = Date.now();
73
+ });
74
+ child.on("error", finishError);
75
+ child.on("close", (code) => {
76
+ if (finished)
77
+ return;
78
+ cleanupTimers();
79
+ finished = true;
80
+ if ((code ?? 1) !== 0) {
81
+ reject(new Error(formatAgentFailure(invocation.agent, code, stdout, stderr, invocation.language)));
82
+ return;
83
+ }
84
+ try {
85
+ const output = extractStructuredOutput(invocation.agent, stdout, command.outputFile, invocation.language);
86
+ const resolvedSession = sessionId ??
87
+ extractSessionFromLines(stdout) ??
88
+ command.initialSessionId;
89
+ if (!resolvedSession)
90
+ throw new Error(managedText(invocation.language, "Agent 输出中缺少可恢复 session ID", "Agent output is missing a resumable session ID"));
91
+ resolve({
92
+ sessionId: resolvedSession,
93
+ output,
94
+ stdout,
95
+ stderr,
96
+ exitCode: code ?? 0,
97
+ });
98
+ }
99
+ catch (error) {
100
+ reject(error);
101
+ }
102
+ });
103
+ child.stdin?.end(invocation.prompt);
104
+ function onStalled() {
105
+ if (Date.now() - lastOutputAt < invocation.timeout.stalledMs)
106
+ return;
107
+ stopChild(child.pid);
108
+ finishError(new Error(managedText(invocation.language, "Agent 长时间没有输出,已保存现场并中断", "Agent produced no output for too long; state was preserved and the process was interrupted")));
109
+ }
110
+ function finishError(error) {
111
+ if (finished)
112
+ return;
113
+ finished = true;
114
+ cleanupTimers();
115
+ reject(error);
116
+ }
117
+ function cleanupTimers() {
118
+ clearTimeout(warningTimer);
119
+ clearTimeout(stalledTimer);
120
+ clearTimeout(hardTimer);
121
+ }
122
+ });
123
+ }
124
+ export function formatAgentFailure(agent, code, stdout, stderr, language) {
125
+ const details = [stderr.trim(), extractFailureFromEvents(stdout)]
126
+ .filter(Boolean)
127
+ .join("\n")
128
+ .slice(-2_000);
129
+ return managedText(language, `${agent} 调用失败,退出码 ${code ?? 1}: ${redactFailure(details) || "未返回错误详情"}`, `${agent} invocation failed with exit code ${code ?? 1}: ${redactFailure(details) || "no error details returned"}`);
130
+ }
131
+ function extractFailureFromEvents(stdout) {
132
+ const lines = stdout.split(/\r?\n/).filter(Boolean);
133
+ const messages = [];
134
+ for (let index = lines.length - 1; index >= 0 && messages.length < 4; index--) {
135
+ const event = safeJson(lines[index]);
136
+ if (!event)
137
+ continue;
138
+ for (const key of ["error", "message", "result", "reason"]) {
139
+ const value = event[key];
140
+ if (typeof value === "string" && value.trim())
141
+ messages.push(value.trim());
142
+ }
143
+ }
144
+ return messages.join("\n");
145
+ }
146
+ function redactFailure(value) {
147
+ return value
148
+ .replace(/(authorization\s*[:=]\s*bearer\s+)[^\s"']+/gi, "$1<redacted>")
149
+ .replace(/(["']?(?:token|password|secret|cookie|api[_-]?key)["']?\s*[:=]\s*["']?)[^\s"',}]+/gi, "$1<redacted>");
150
+ }
151
+ function buildCodexCommand(invocation) {
152
+ const outputFile = path.join(path.dirname(invocation.schemaPath), `${invocation.role}-last.json`);
153
+ if (invocation.sessionId) {
154
+ return {
155
+ command: "codex",
156
+ args: [
157
+ "exec",
158
+ "resume",
159
+ invocation.sessionId,
160
+ "--json",
161
+ "--output-schema",
162
+ invocation.schemaPath,
163
+ "-o",
164
+ outputFile,
165
+ "-",
166
+ ],
167
+ outputFile,
168
+ initialSessionId: invocation.sessionId,
169
+ };
170
+ }
171
+ const additionalRoots = invocation.writableRoots.flatMap((root) => [
172
+ "--add-dir",
173
+ root,
174
+ ]);
175
+ return {
176
+ command: "codex",
177
+ args: [
178
+ "exec",
179
+ "-C",
180
+ invocation.projectRoot,
181
+ "--sandbox",
182
+ invocation.role === "supervisor" ? "read-only" : "workspace-write",
183
+ ...additionalRoots,
184
+ "--json",
185
+ "--output-schema",
186
+ invocation.schemaPath,
187
+ "-o",
188
+ outputFile,
189
+ "-",
190
+ ],
191
+ outputFile,
192
+ initialSessionId: null,
193
+ };
194
+ }
195
+ function buildClaudeCommand(invocation) {
196
+ const schema = readFileSync(invocation.schemaPath, "utf-8");
197
+ const args = ["-p"];
198
+ let initialSessionId = invocation.sessionId;
199
+ if (invocation.sessionId)
200
+ args.push("--resume", invocation.sessionId);
201
+ else {
202
+ initialSessionId = cryptoRandomUuid();
203
+ args.push("--session-id", initialSessionId);
204
+ }
205
+ args.push("--output-format", "stream-json", "--verbose", "--json-schema", schema, "--permission-mode", invocation.role === "supervisor" ? "plan" : "auto");
206
+ for (const root of invocation.writableRoots)
207
+ args.push("--add-dir", root);
208
+ return { command: "claude", args, outputFile: null, initialSessionId };
209
+ }
210
+ function extractStructuredOutput(agent, stdout, outputFile, language) {
211
+ if (agent === "codex" && outputFile && existsSync(outputFile)) {
212
+ return parseStructuredValue(readFileSync(outputFile, "utf-8"), language);
213
+ }
214
+ const events = stdout.split(/\r?\n/).map(safeJson).filter(Boolean);
215
+ for (let index = events.length - 1; index >= 0; index--) {
216
+ const event = events[index];
217
+ for (const key of ["structured_output", "structuredOutput", "result"]) {
218
+ if (event[key] !== undefined)
219
+ return parseStructuredValue(event[key], language);
220
+ }
221
+ }
222
+ return parseStructuredValue(stdout, language);
223
+ }
224
+ function parseStructuredValue(value, language) {
225
+ if (typeof value === "object" && value !== null)
226
+ return value;
227
+ if (typeof value !== "string") {
228
+ throw new Error(managedText(language, "Agent 未返回结构化结果", "Agent did not return structured output"));
229
+ }
230
+ const trimmed = value.trim();
231
+ try {
232
+ return JSON.parse(trimmed);
233
+ }
234
+ catch {
235
+ const match = trimmed.match(/\{[\s\S]*\}/);
236
+ if (!match) {
237
+ throw new Error(managedText(language, "Agent 最终输出不是 JSON", "Agent final output is not JSON"));
238
+ }
239
+ return JSON.parse(match[0]);
240
+ }
241
+ }
242
+ function extractSessionFromLines(stdout) {
243
+ for (const line of stdout.split(/\r?\n/)) {
244
+ const sessionId = extractSessionId(safeJson(line));
245
+ if (sessionId)
246
+ return sessionId;
247
+ }
248
+ return null;
249
+ }
250
+ function extractSessionId(value) {
251
+ if (!value || typeof value !== "object")
252
+ return null;
253
+ const object = value;
254
+ for (const key of ["session_id", "sessionId", "thread_id", "threadId"]) {
255
+ if (typeof object[key] === "string" && isUuid(object[key]))
256
+ return object[key];
257
+ }
258
+ for (const child of Object.values(object)) {
259
+ const nested = extractSessionId(child);
260
+ if (nested)
261
+ return nested;
262
+ }
263
+ return null;
264
+ }
265
+ function extractProgress(value) {
266
+ if (!value || typeof value !== "object")
267
+ return null;
268
+ const object = value;
269
+ for (const key of ["message", "summary", "text"]) {
270
+ if (typeof object[key] === "string" && object[key].length > 0) {
271
+ return object[key].slice(0, 240);
272
+ }
273
+ }
274
+ return null;
275
+ }
276
+ function safeJson(value) {
277
+ try {
278
+ return JSON.parse(value);
279
+ }
280
+ catch {
281
+ return null;
282
+ }
283
+ }
284
+ function stopChild(pid) {
285
+ if (!pid)
286
+ return;
287
+ try {
288
+ if (process.platform === "win32")
289
+ process.kill(pid, "SIGTERM");
290
+ else
291
+ process.kill(-pid, "SIGTERM");
292
+ }
293
+ catch {
294
+ try {
295
+ process.kill(pid, "SIGTERM");
296
+ }
297
+ catch {
298
+ // Process already exited.
299
+ }
300
+ }
301
+ }
302
+ function isUuid(value) {
303
+ return (typeof value === "string" && /^[0-9a-f]{8}-[0-9a-f-]{27}$/i.test(value));
304
+ }
305
+ function cryptoRandomUuid() {
306
+ return globalThis.crypto.randomUUID();
307
+ }
308
+ //# sourceMappingURL=agent-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-process.js","sourceRoot":"","sources":["../../src/platform/agent-process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export function isProcessAlive(pid) {
2
+ try {
3
+ process.kill(pid, 0);
4
+ return true;
5
+ }
6
+ catch (error) {
7
+ return error.code === "EPERM";
8
+ }
9
+ }
10
+ //# sourceMappingURL=process-liveness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-liveness.js","sourceRoot":"","sources":["../../src/platform/process-liveness.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA+B,CAAC,IAAI,KAAK,OAAO,CAAC;IAC3D,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
- import { runCommand } from './process.js';
2
- const PACKAGE_NAME = '@chenmk/superflow';
1
+ import { runCommand } from "./process.js";
2
+ const PACKAGE_NAME = "@chenmk/superflow";
3
3
  const CHECK_INTERVAL_MS = 1000 * 60 * 60 * 24; // 一天检查一次
4
4
  let lastCheck = 0;
5
5
  let cachedLatest = null;
@@ -9,13 +9,13 @@ let cachedLatest = null;
9
9
  */
10
10
  export async function checkForUpdates(currentVersion) {
11
11
  if (Date.now() - lastCheck < CHECK_INTERVAL_MS && cachedLatest) {
12
- if (cachedLatest !== currentVersion) {
12
+ if (isNewerVersion(cachedLatest, currentVersion)) {
13
13
  printUpdateHint(currentVersion, cachedLatest);
14
14
  }
15
15
  return;
16
16
  }
17
17
  try {
18
- const result = await runCommand('npm', ['view', PACKAGE_NAME, 'version'], {
18
+ const result = await runCommand("npm", ["view", PACKAGE_NAME, "version"], {
19
19
  timeout: 5000,
20
20
  });
21
21
  if (result.code !== 0)
@@ -23,7 +23,7 @@ export async function checkForUpdates(currentVersion) {
23
23
  const latest = result.stdout.trim();
24
24
  lastCheck = Date.now();
25
25
  cachedLatest = latest;
26
- if (latest !== currentVersion) {
26
+ if (isNewerVersion(latest, currentVersion)) {
27
27
  printUpdateHint(currentVersion, latest);
28
28
  }
29
29
  }
@@ -31,15 +31,36 @@ export async function checkForUpdates(currentVersion) {
31
31
  // npm view failed(无网络、npm 未安装等),静默跳过
32
32
  }
33
33
  }
34
+ export function isNewerVersion(candidate, current) {
35
+ const left = parseVersion(candidate);
36
+ const right = parseVersion(current);
37
+ if (!left || !right)
38
+ return false;
39
+ for (let index = 0; index < 3; index++) {
40
+ if (left[index] !== right[index])
41
+ return left[index] > right[index];
42
+ }
43
+ return left.prerelease === null && right.prerelease !== null;
44
+ }
45
+ function parseVersion(value) {
46
+ const match = value
47
+ .trim()
48
+ .match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([^+]+))?(?:\+.+)?$/);
49
+ if (!match)
50
+ return null;
51
+ const result = [Number(match[1]), Number(match[2]), Number(match[3])];
52
+ result.prerelease = match[4] ?? null;
53
+ return result;
54
+ }
34
55
  function printUpdateHint(current, latest) {
35
56
  // 只在终端输出(stderr 避免干扰 --json 输出)
36
57
  const msg = [
37
- '',
58
+ "",
38
59
  `\x1b[33m⚠ superflow ${latest} 可用(当前 ${current})\x1b[0m`,
39
60
  ` 升级: \x1b[36mnpm install -g ${PACKAGE_NAME}@latest\x1b[0m`,
40
61
  ` 或: \x1b[36msuperflow update --with-package\x1b[0m`,
41
- '',
42
- ].join('\n');
43
- process.stderr.write(msg + '\n');
62
+ "",
63
+ ].join("\n");
64
+ process.stderr.write(msg + "\n");
44
65
  }
45
66
  //# sourceMappingURL=version-check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/platform/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,YAAY,GAAG,mBAAmB,CAAC;AACzC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS;AAExD,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,cAAsB;IAC1D,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB,IAAI,YAAY,EAAE,CAAC;QAC/D,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE;YACxE,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE9B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,YAAY,GAAG,MAAM,CAAC;QAEtB,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YAC9B,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,MAAc;IACtD,gCAAgC;IAChC,MAAM,GAAG,GAAG;QACV,EAAE;QACF,wBAAwB,MAAM,UAAU,OAAO,UAAU;QACzD,iCAAiC,YAAY,gBAAgB;QAC7D,sDAAsD;QACtD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/platform/version-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chenmk/superflow",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "SuperBridge Flow workflow CLI for Claude Code, Codex, and OpenCode",
5
5
  "license": "MIT",
6
6
  "type": "module",