@flyin-ai/alloy 0.1.1 → 0.2.0-beta.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 (76) hide show
  1. package/README.md +28 -90
  2. package/commands/alloy/apply.md +274 -119
  3. package/commands/alloy/archive.md +116 -60
  4. package/commands/alloy/discard.md +57 -15
  5. package/commands/alloy/finish.md +92 -70
  6. package/commands/alloy/fix.md +282 -53
  7. package/commands/alloy/plan.md +125 -63
  8. package/commands/alloy/references/interaction-style.md +82 -0
  9. package/commands/alloy/references/main-branch-detection.md +32 -0
  10. package/commands/alloy/references/phase-routing.md +21 -0
  11. package/commands/alloy/references/skill-precheck.md +46 -0
  12. package/commands/alloy/start.md +167 -64
  13. package/commands/alloy/status.md +1 -1
  14. package/dist/cli/commands/doctor.d.ts +1 -0
  15. package/dist/cli/commands/doctor.js +28 -6
  16. package/dist/cli/commands/doctor.js.map +1 -1
  17. package/dist/cli/commands/init.js +40 -37
  18. package/dist/cli/commands/init.js.map +1 -1
  19. package/dist/cli/commands/internal/config.d.ts +1 -0
  20. package/dist/cli/commands/internal/config.js +45 -0
  21. package/dist/cli/commands/internal/config.js.map +1 -0
  22. package/dist/cli/commands/internal/guard.js +2 -41
  23. package/dist/cli/commands/internal/guard.js.map +1 -1
  24. package/dist/cli/commands/internal/record.js +10 -47
  25. package/dist/cli/commands/internal/record.js.map +1 -1
  26. package/dist/cli/commands/internal/skill-usage.d.ts +1 -0
  27. package/dist/cli/commands/internal/skill-usage.js +78 -0
  28. package/dist/cli/commands/internal/skill-usage.js.map +1 -0
  29. package/dist/cli/commands/internal/state.js +105 -6
  30. package/dist/cli/commands/internal/state.js.map +1 -1
  31. package/dist/cli/commands/status.d.ts +1 -0
  32. package/dist/cli/commands/status.js +50 -11
  33. package/dist/cli/commands/status.js.map +1 -1
  34. package/dist/cli/commands/update.js +20 -17
  35. package/dist/cli/commands/update.js.map +1 -1
  36. package/dist/cli/index.js +73 -31
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/utils/hash.d.ts +3 -0
  39. package/dist/cli/utils/hash.js +42 -0
  40. package/dist/cli/utils/hash.js.map +1 -0
  41. package/dist/cli/utils/state.d.ts +4 -2
  42. package/dist/cli/utils/state.js +34 -2
  43. package/dist/cli/utils/state.js.map +1 -1
  44. package/dist/core/artifacts.d.ts +3 -0
  45. package/dist/core/artifacts.js +45 -0
  46. package/dist/core/artifacts.js.map +1 -0
  47. package/dist/core/detect-installations.d.ts +19 -0
  48. package/dist/core/detect-installations.js +65 -0
  49. package/dist/core/detect-installations.js.map +1 -0
  50. package/dist/core/openspec.d.ts +2 -1
  51. package/dist/core/openspec.js +30 -12
  52. package/dist/core/openspec.js.map +1 -1
  53. package/dist/core/skills.js +16 -0
  54. package/dist/core/skills.js.map +1 -1
  55. package/dist/core/superpowers.d.ts +8 -1
  56. package/dist/core/superpowers.js +41 -20
  57. package/dist/core/superpowers.js.map +1 -1
  58. package/dist/core/types.d.ts +20 -0
  59. package/dist/utils/format.d.ts +31 -0
  60. package/dist/utils/format.js +101 -0
  61. package/dist/utils/format.js.map +1 -0
  62. package/dist/utils/output.d.ts +16 -0
  63. package/dist/utils/output.js +38 -0
  64. package/dist/utils/output.js.map +1 -0
  65. package/dist/utils/prompt.d.ts +0 -1
  66. package/dist/utils/prompt.js +11 -83
  67. package/dist/utils/prompt.js.map +1 -1
  68. package/openspec/schemas/alloy/instructions/retrospective.md +17 -35
  69. package/openspec/schemas/alloy/templates/design.md +2 -0
  70. package/openspec/schemas/alloy/templates/draft.md +2 -0
  71. package/openspec/schemas/alloy/templates/plans.md +2 -0
  72. package/openspec/schemas/alloy/templates/proposal.md +2 -0
  73. package/openspec/schemas/alloy/templates/retrospective.md +39 -19
  74. package/openspec/schemas/alloy/templates/specs.md +2 -0
  75. package/openspec/schemas/alloy/templates/tasks.md +2 -0
  76. package/package.json +8 -2
@@ -1,6 +1,8 @@
1
1
  import { join } from "node:path";
2
2
  import { existsSync } from "node:fs";
3
3
  import { findActiveChanges, readState } from "../utils/state.js";
4
+ import { color, table } from "../../utils/format.js";
5
+ import { section, check } from "../../utils/output.js";
4
6
  const ARTIFACTS = [
5
7
  "draft",
6
8
  "proposal",
@@ -8,6 +10,8 @@ const ARTIFACTS = [
8
10
  "specs",
9
11
  "tasks",
10
12
  "plans",
13
+ "verify",
14
+ "retrospective",
11
15
  ];
12
16
  function checkArtifacts(changePath) {
13
17
  const status = {};
@@ -21,6 +25,37 @@ function checkArtifacts(changePath) {
21
25
  }
22
26
  return status;
23
27
  }
28
+ export async function printStatusDetail(projectPath, name) {
29
+ const changesDir = join(projectPath, "openspec", "changes");
30
+ const changePath = join(changesDir, name);
31
+ if (!existsSync(changePath)) {
32
+ console.log(`未找到 change '${name}'`);
33
+ return;
34
+ }
35
+ let state;
36
+ try {
37
+ state = await readState(changePath);
38
+ }
39
+ catch {
40
+ console.log(`change '${name}' 缺少 .alloy.yaml`);
41
+ return;
42
+ }
43
+ const artifacts = checkArtifacts(changePath);
44
+ section("Change 详情");
45
+ check("阶段", state.phase, "pass");
46
+ check("Change", name, "pass");
47
+ check("路径", changePath, "pass");
48
+ check("创建时间", state.created_at, "pass");
49
+ check("更新时间", state.updated_at, "pass");
50
+ section("制品状态");
51
+ for (const a of ARTIFACTS) {
52
+ check(a, artifacts[a] ? "✓" : "✗", artifacts[a] ? "pass" : "fail");
53
+ }
54
+ const nextStep = getNextStepDetail(state, artifacts);
55
+ if (nextStep) {
56
+ check("下一步", nextStep, "pass");
57
+ }
58
+ }
24
59
  export async function statusCommand(projectPath, changeName) {
25
60
  const changesDir = join(projectPath, "openspec", "changes");
26
61
  if (changeName) {
@@ -35,18 +70,22 @@ async function overviewMode(changesDir) {
35
70
  if (changes.size === 0) {
36
71
  return "无活跃 change。使用 /alloy-start <topic> 开始新工作流。";
37
72
  }
38
- const lines = ["活跃 Change:"];
73
+ const rows = [];
39
74
  const nextSteps = [];
40
75
  for (const [name, state] of changes) {
41
76
  const artifacts = checkArtifacts(join(changesDir, name));
42
- const artifactStatus = ARTIFACTS.map((a) => `${a} ${artifacts[a] ? "✓" : "✗"}`).join(" ");
43
- lines.push(` ${name.padEnd(20)} ${state.phase.padEnd(10)} artifacts: ${artifactStatus}`);
77
+ const artifactStatus = ARTIFACTS.map((a) => `${a} ${artifacts[a] ? color.green("✓") : color.red("✗")}`).join(" ");
78
+ rows.push([name, color.cyan(state.phase), artifactStatus]);
44
79
  const step = getNextStepSimple(state, artifacts, name);
45
80
  if (step)
46
81
  nextSteps.push(step);
47
82
  }
83
+ const lines = [
84
+ color.bold("活跃 Change:"),
85
+ table(["名称", "阶段", "制品"], rows),
86
+ ];
48
87
  if (nextSteps.length > 0) {
49
- lines.push(`\n下一步:${nextSteps.join(";")}`);
88
+ lines.push(`下一步:${nextSteps.join(";")}`);
50
89
  }
51
90
  return lines.join("\n");
52
91
  }
@@ -64,13 +103,13 @@ async function detailMode(changesDir, name) {
64
103
  }
65
104
  const artifacts = checkArtifacts(changePath);
66
105
  const lines = [
67
- `阶段: ${state.phase}`,
68
- `Change: ${name}`,
69
- `路径: ${changePath}`,
70
- `创建时间: ${state.created_at}`,
71
- `更新时间: ${state.updated_at}`,
72
- "制品状态:",
73
- ...ARTIFACTS.map((a) => ` ${a.padEnd(12)} ${artifacts[a] ? "✓" : "✗"}`),
106
+ `${color.bold("阶段:")} ${color.cyan(state.phase)}`,
107
+ `${color.bold("Change:")} ${name}`,
108
+ `${color.bold("路径:")} ${changePath}`,
109
+ `${color.bold("创建时间:")} ${state.created_at}`,
110
+ `${color.bold("更新时间:")} ${state.updated_at}`,
111
+ color.bold("制品状态:"),
112
+ ...ARTIFACTS.map((a) => ` ${a.padEnd(12)} ${artifacts[a] ? color.green("✓") : color.red("✗")}`),
74
113
  ];
75
114
  const nextStep = getNextStepDetail(state, artifacts);
76
115
  if (nextStep)
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ import { detectDeployedAgents } from "../../core/agents.js";
7
7
  import { runHealthCheck } from "../../core/health.js";
8
8
  import { getPackageRoot } from "../../utils/fs.js";
9
9
  import { promptConfirm } from "../../utils/prompt.js";
10
+ import { color } from "../../utils/format.js";
11
+ import { section, check, success, info } from "../../utils/output.js";
10
12
  const CLAUDE_MD_MARKER_START = "<!-- ALLOY-WORKFLOW:START -->";
11
13
  const CLAUDE_MD_MARKER_END = "<!-- ALLOY-WORKFLOW:END -->";
12
14
  function isDevMode() {
@@ -39,41 +41,42 @@ export async function updateCommand(projectPath) {
39
41
  // 1. 自动检测 scope
40
42
  const scope = detectScope(projectPath);
41
43
  if (!scope) {
42
- results.push("⚠️ Alloy 未初始化,请先运行 alloy init");
44
+ results.push(`${color.yellow("⚠️")} Alloy 未初始化,请先运行 alloy init`);
43
45
  return results;
44
46
  }
45
47
  // 2. 开发模式 vs 用户模式
46
48
  const dev = isDevMode();
47
49
  if (dev) {
48
- console.log(" 🔧 开发模式,从本地构建重新部署…");
50
+ info("🔧 开发模式,从本地构建重新部署…");
49
51
  }
50
52
  else {
51
53
  const pkg = JSON.parse(readFileSync(join(getPackageRoot(), "package.json"), "utf-8"));
52
54
  const currentVersion = pkg.version;
53
55
  const latest = await checkLatestVersion();
54
56
  if (latest && latest !== currentVersion) {
55
- console.log(`\n 发现新版本: v${latest}(当前 v${currentVersion})`);
57
+ section("版本检查");
58
+ info(`发现新版本: v${latest}(当前 v${currentVersion})`);
56
59
  // 兼容性检查
57
- console.log(" 🩺 兼容性检查…");
60
+ section("兼容性检查");
58
61
  const health = await runHealthCheck(getPackageRoot(), projectPath);
59
62
  const warnings = health.filter((h) => h.status !== "pass");
60
63
  if (warnings.length > 0) {
61
64
  for (const w of warnings) {
62
- console.log(` ⚠ ${w.name}: ${w.current}`);
65
+ check(w.name, w.current, "warn");
63
66
  }
64
67
  }
65
68
  else {
66
- console.log("兼容性检查通过");
69
+ success("兼容性检查通过");
67
70
  }
68
71
  // 询问确认
69
72
  const doUpdate = await promptConfirm("是否升级 alloy?", false);
70
73
  if (doUpdate) {
71
74
  try {
72
75
  execSync("npm update -g @flyin-ai/alloy", { stdio: "pipe" });
73
- results.push("✓ alloy CLI 已升级");
76
+ results.push(`${color.green("✓")} alloy CLI 已升级`);
74
77
  }
75
78
  catch {
76
- results.push("⚠️ CLI 升级失败");
79
+ results.push(`${color.yellow("⚠️")} CLI 升级失败`);
77
80
  }
78
81
  }
79
82
  else {
@@ -81,16 +84,16 @@ export async function updateCommand(projectPath) {
81
84
  }
82
85
  }
83
86
  else if (latest) {
84
- results.push(`✓ Alloy v${currentVersion} 已是最新`);
87
+ results.push(`${color.green("✓")} Alloy v${currentVersion} 已是最新`);
85
88
  }
86
89
  else {
87
- results.push(`⚠️ 无法检查更新(npm registry 不可达)`);
90
+ results.push(`${color.yellow("⚠️")} 无法检查更新(npm registry 不可达)`);
88
91
  }
89
92
  }
90
93
  // 3. 部署 commands
91
94
  const deployedAgents = detectDeployedAgents(scope, projectPath);
92
95
  if (deployedAgents.length === 0) {
93
- results.push("⚠️ 未检测到已部署的 Alloy commands,请先运行 alloy init");
96
+ results.push(`${color.yellow("⚠️")} 未检测到已部署的 Alloy commands,请先运行 alloy init`);
94
97
  return results;
95
98
  }
96
99
  const deployOpts = {
@@ -101,17 +104,17 @@ export async function updateCommand(projectPath) {
101
104
  };
102
105
  try {
103
106
  const paths = await deployCommands(deployOpts);
104
- results.push(`✓ commands/ → 部署 ${paths.length} 个文件到 ${deployedAgents.length} 个 agent`);
107
+ results.push(`${color.green("✓")} commands/ → 部署 ${paths.length} 个文件到 ${deployedAgents.length} 个 agent`);
105
108
  }
106
109
  catch {
107
- results.push("⚠️ command 部署失败");
110
+ results.push(`${color.yellow("⚠️")} command 部署失败`);
108
111
  }
109
112
  try {
110
113
  await deploySchema(deployOpts);
111
- results.push("✓ schema/ → 已部署");
114
+ results.push(`${color.green("✓")} schema/ → 已部署`);
112
115
  }
113
116
  catch {
114
- results.push(`⚠️ schema 部署失败`);
117
+ results.push(`${color.yellow("⚠️")} schema 部署失败`);
115
118
  }
116
119
  // 4. 更新 CLAUDE.md 标记区域
117
120
  const claudeMdPath = join(projectPath, "CLAUDE.md");
@@ -128,12 +131,12 @@ export async function updateCommand(projectPath) {
128
131
  latestFragment +
129
132
  content.slice(endIdx + CLAUDE_MD_MARKER_END.length);
130
133
  await writeFile(claudeMdPath, content, "utf-8");
131
- results.push("✓ CLAUDE.md → Alloy 标记区域已更新");
134
+ results.push(`${color.green("✓")} CLAUDE.md → Alloy 标记区域已更新`);
132
135
  }
133
136
  }
134
137
  }
135
138
  catch {
136
- results.push("⚠️ CLAUDE.md 更新失败");
139
+ results.push(`${color.yellow("⚠️")} CLAUDE.md 更新失败`);
137
140
  }
138
141
  }
139
142
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAGtE,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AAC/D,MAAM,oBAAoB,GAAG,6BAA6B,CAAC;AAE3D,SAAS,SAAS;IAChB,4CAA4C;IAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,WAAmB;IACtC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAE1E,UAAU;IACV,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1D,QAAQ;IACR,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;IAChE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aACnE,QAAQ,EAAE;aACV,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,gBAAgB;IAChB,MAAM,KAAK,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,kBAAkB;IAClB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAC9D,CAAC;QACF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAiB,CAAC;QAC7C,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE1C,IAAI,MAAM,IAAI,MAAM,KAAK,cAAc,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChB,IAAI,CAAC,WAAW,MAAM,QAAQ,cAAc,GAAG,CAAC,CAAC;YAEjD,QAAQ;YACR,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC;YAED,OAAO;YACP,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YAE3D,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC;oBACH,QAAQ,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC7D,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBACpD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,cAAc,OAAO,CAAC,CAAC;QACpE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC9E,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,UAAU,GAAkB;QAChC,KAAK;QACL,cAAc,EAAE,KAAK;QACrB,WAAW;QACX,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC,MAAM,UAAU,CAAC,CAAC;IAC3G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED,uBAAuB;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;gBAC7C,MAAM,cAAc,GAAG,yBAAyB,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBACzD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;gBACrD,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;oBACtB,OAAO;wBACL,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;4BAC1B,cAAc;4BACd,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;oBACtD,MAAM,SAAS,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBAChD,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;QACL,EAAE;QACF,sBAAsB;QACtB,cAAc;QACd,EAAE;QACF,8DAA8D;QAC9D,EAAE;QACF,OAAO;QACP,iCAAiC;QACjC,+BAA+B;QAC/B,gCAAgC;QAChC,mCAAmC;QACnC,iCAAiC;QACjC,yBAAyB;QACzB,iCAAiC;QACjC,EAAE;QACF,oBAAoB;QACpB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/dist/cli/index.js CHANGED
@@ -4,18 +4,20 @@ import { existsSync, readFileSync } from "node:fs";
4
4
  import { readFile, writeFile } from "node:fs/promises";
5
5
  import { join, dirname } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
- import { statusCommand } from "./commands/status.js";
7
+ import { statusCommand, printStatusDetail } from "./commands/status.js";
8
8
  import { doctorCommand, formatDoctorResult } from "./commands/doctor.js";
9
9
  import { updateCommand } from "./commands/update.js";
10
10
  import { generateCompletion } from "./commands/completion.js";
11
11
  import { stateCommand } from "./commands/internal/state.js";
12
+ import { configCommand } from "./commands/internal/config.js";
12
13
  import { guardCommand } from "./commands/internal/guard.js";
13
14
  import { recordCommand } from "./commands/internal/record.js";
15
+ import { skillUsageCommand } from "./commands/internal/skill-usage.js";
14
16
  const USAGE = `
15
17
  alloy <command> [options]
16
18
 
17
19
  Commands:
18
- init [path] [--scope <project|global>] [--inject-claude-md]
20
+ init [path] [--scope <project|global>] [--inject-claude-md] [--agents <id,id,...>]
19
21
  项目初始化:检测环境 → 安装依赖 → 部署 schema + skill
20
22
  status [path|name] [--json]
21
23
  查看活跃 change 总览,指定 name 查看详情
@@ -27,8 +29,8 @@ Commands:
27
29
  生成 shell 补全脚本,--install 自动注册
28
30
 
29
31
  Options:
30
- --version, -v, -V 版本号
31
- --help, -h 帮助(alloy -h 或 alloy <command> -h)
32
+ --version, -v 版本号
33
+ --help, -h 帮助(alloy -h 或 alloy <command> -h)
32
34
  `;
33
35
  function commandHelp(cmd) {
34
36
  switch (cmd) {
@@ -39,6 +41,8 @@ alloy init [path] [options]
39
41
  选项:
40
42
  --scope <project|global> 安装范围,默认 project
41
43
  --inject-claude-md 注入 CLAUDE.md 工作流标记(默认关闭)
44
+ --agents <id,id,...> 非交互式模式,指定要安装的 AI 工具(逗号分隔)
45
+ 可用的 agent: claude-code, codebuddy, qoder, cursor, opencode, codex, tra
42
46
  --help, -h 显示本帮助
43
47
  `;
44
48
  case "status":
@@ -79,13 +83,18 @@ alloy completion [shell] [options]
79
83
  shell 目标 shell(bash / zsh / pwsh / powershell,默认从 $SHELL 检测)
80
84
 
81
85
  选项:
82
- --install 自动注册到 shell 配置文件(~/.zshrc / ~/.bashrc / PowerShell profile)
86
+ --install 自动注册到 shell 配置文件(永久生效)
83
87
  --help, -h 显示本帮助
84
88
 
89
+ 行为说明:
90
+ alloy completion <shell> 仅输出补全脚本(不安装)
91
+ alloy completion --install 自动安装到 rc 文件(永久生效,支持 bash/zsh/powershell)
92
+ source <(alloy completion) 临时启用(当前 session)
93
+
85
94
  示例:
86
- source <(alloy completion) # 当前 session 生效
87
- alloy completion --install # 自动注册并立即生效
88
- alloy completion pwsh | Out-File -FilePath $PROFILE -Append # PowerShell(需先确保目录存在,完成后 . $PROFILE)
95
+ alloy completion --install # 自动安装(推荐)
96
+ source <(alloy completion zsh) # 临时启用 zsh 补全
97
+ source <(alloy completion bash) # 临时启用 bash 补全
89
98
  `;
90
99
  default:
91
100
  return `未知命令: ${cmd}\n使用 alloy --help 查看可用命令。`;
@@ -104,11 +113,17 @@ async function installCompletion(shell) {
104
113
  completionLine = "source <(alloy completion bash)";
105
114
  }
106
115
  else if (shell.includes("pwsh") || shell.includes("powershell")) {
107
- console.log("PowerShell 用户请依次运行:");
108
- console.log(" New-Item -ItemType Directory -Force -Path (Split-Path $PROFILE)");
109
- console.log(" alloy completion pwsh | Out-File -FilePath $PROFILE -Append");
110
- console.log(" . $PROFILE # 重新加载 profile,或重启 PowerShell");
111
- return;
116
+ // PowerShell 补全需要写入 $PROFILE 文件
117
+ const profileDir = join(home, "Documents", "PowerShell");
118
+ rcFile = join(profileDir, "Microsoft.PowerShell_profile.ps1");
119
+ // PowerShell 直接写入补全脚本内容
120
+ completionLine = generateCompletion("pwsh");
121
+ // 确保目录存在
122
+ const { mkdirSync, existsSync } = await import("node:fs");
123
+ if (!existsSync(profileDir)) {
124
+ mkdirSync(profileDir, { recursive: true });
125
+ console.log(` ✓ 创建目录: ${profileDir}`);
126
+ }
112
127
  }
113
128
  if (!rcFile) {
114
129
  console.error("无法确定 shell 配置文件路径");
@@ -125,20 +140,24 @@ async function installCompletion(shell) {
125
140
  console.log(`✓ shell 补全已存在 → ${rcFile}`);
126
141
  return;
127
142
  }
128
- const block = [
129
- "",
130
- "# Alloy shell 补全 — Tab 自动补全 alloy 命令",
131
- completionLine,
132
- "",
133
- ].join("\n");
143
+ // PowerShell 直接写入补全脚本,bash/zsh 写入 source 命令
144
+ const isPowerShell = shell.includes("pwsh") || shell.includes("powershell");
145
+ const block = isPowerShell
146
+ ? completionLine // PowerShell: 直接写入补全脚本
147
+ : ["", "# Alloy shell 补全 — Tab 自动补全 alloy 命令", completionLine, ""].join("\n");
134
148
  await writeFile(rcFile, content.trimEnd() + block, "utf-8");
135
149
  console.log(`✓ shell 补全已注册 → ${rcFile}`);
136
- console.log(` 运行 'source ${rcFile}' 或重新打开终端使其生效`);
150
+ if (isPowerShell) {
151
+ console.log(` 运行 '. $PROFILE' 或重启 PowerShell 使其生效`);
152
+ }
153
+ else {
154
+ console.log(` 运行 'source ${rcFile}' 或重新打开终端使其生效`);
155
+ }
137
156
  }
138
157
  async function main() {
139
158
  const args = process.argv.slice(2);
140
159
  const isHelp = (a) => a.includes("--help") || a.includes("-h");
141
- const isVersion = (a) => a.includes("--version") || a.includes("-v") || a.includes("-V");
160
+ const isVersion = (a) => a.includes("--version") || a.includes("-v");
142
161
  if (args.length === 0 || (args.length === 1 && isHelp(args))) {
143
162
  console.log(USAGE);
144
163
  process.exit(0);
@@ -166,6 +185,7 @@ async function main() {
166
185
  options: {
167
186
  scope: { type: "string" },
168
187
  "inject-claude-md": { type: "boolean", default: false },
188
+ agents: { type: "string" },
169
189
  },
170
190
  strict: true,
171
191
  allowPositionals: true,
@@ -173,7 +193,22 @@ async function main() {
173
193
  const projectPath = positionals[0] ?? process.cwd();
174
194
  const { initCommand, selectScope, selectTargetAgents } = await import("./commands/init.js");
175
195
  const scope = await selectScope(values.scope);
176
- const targetAgents = await selectTargetAgents();
196
+ let targetAgents;
197
+ if (values.agents) {
198
+ // 非交互式模式:从 --agents 选项解析
199
+ const { KNOWN_AGENTS } = await import("../core/agents.js");
200
+ const agentIds = values.agents.split(",").map((s) => s.trim());
201
+ targetAgents = KNOWN_AGENTS.filter((a) => agentIds.includes(a.id));
202
+ if (targetAgents.length === 0) {
203
+ console.error(`未知的 agent: ${values.agents}`);
204
+ console.error(`可用的 agent: ${KNOWN_AGENTS.map((a) => a.id).join(", ")}`);
205
+ process.exit(1);
206
+ }
207
+ }
208
+ else {
209
+ // 交互式模式
210
+ targetAgents = await selectTargetAgents();
211
+ }
177
212
  await initCommand({
178
213
  scope,
179
214
  injectClaudeMd: values["inject-claude-md"] || false,
@@ -201,11 +236,15 @@ async function main() {
201
236
  projectPath = positionals[0] ?? process.cwd();
202
237
  changeName = positionals[1];
203
238
  }
204
- const result = await statusCommand(projectPath, changeName);
205
239
  if (useJson) {
240
+ const result = await statusCommand(projectPath, changeName);
206
241
  console.log(JSON.stringify({ output: result }, null, 2));
207
242
  }
243
+ else if (changeName) {
244
+ await printStatusDetail(projectPath, changeName);
245
+ }
208
246
  else {
247
+ const result = await statusCommand(projectPath);
209
248
  console.log(result);
210
249
  }
211
250
  break;
@@ -256,24 +295,27 @@ async function main() {
256
295
  // 无参数 → 显示友好使用说明
257
296
  console.log("生成 shell 补全脚本,获取 Tab 自动补全能力。\n");
258
297
  console.log("用法:");
259
- console.log(" source <(alloy completion zsh) # zsh 当前 session 生效");
260
- console.log(" source <(alloy completion bash) # bash 当前 session 生效");
261
- console.log(" alloy completion --install # 自动注册到 rc 文件,永久生效");
262
- console.log("");
263
- console.log(" # PowerShell(需先创建目录,再写入 profile,最后 . $PROFILE 或重启)");
264
- console.log(" New-Item -ItemType Directory -Force -Path (Split-Path $PROFILE)");
265
- console.log(" alloy completion pwsh | Out-File $PROFILE");
266
- console.log(" . $PROFILE");
298
+ console.log(" alloy completion --install # 自动安装(推荐,支持 bash/zsh/powershell)");
299
+ console.log(" source <(alloy completion zsh) # 临时启用 zsh 补全");
300
+ console.log(" source <(alloy completion bash) # 临时启用 bash 补全");
267
301
  break;
268
302
  }
269
303
  case "_state": {
270
304
  await stateCommand(restArgs);
271
305
  break;
272
306
  }
307
+ case "_config": {
308
+ await configCommand(restArgs);
309
+ break;
310
+ }
273
311
  case "_guard": {
274
312
  await guardCommand(restArgs);
275
313
  break;
276
314
  }
315
+ case "_skill": {
316
+ await skillUsageCommand(restArgs);
317
+ break;
318
+ }
277
319
  case "_record": {
278
320
  await recordCommand(restArgs);
279
321
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const ARTIFACT_FILES: Record<string, string>;
2
+ export declare function computeHash(content: Buffer | string): string;
3
+ export declare function computeArtifactHash(changeDir: string, artifactId: string): Promise<string | null>;
@@ -0,0 +1,42 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFile, stat, readdir } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ export const ARTIFACT_FILES = {
5
+ draft: "draft.md",
6
+ proposal: "proposal.md",
7
+ design: "design.md",
8
+ specs: "specs",
9
+ tasks: "tasks.md",
10
+ plans: "plans.md",
11
+ verify: "verify.md",
12
+ retrospective: "retrospective.md",
13
+ };
14
+ export function computeHash(content) {
15
+ return createHash("sha256").update(content).digest("hex").substring(0, 12);
16
+ }
17
+ export async function computeArtifactHash(changeDir, artifactId) {
18
+ const fileName = ARTIFACT_FILES[artifactId];
19
+ if (!fileName)
20
+ return null;
21
+ const fullPath = join(changeDir, fileName);
22
+ try {
23
+ const st = await stat(fullPath);
24
+ if (st.isDirectory()) {
25
+ const entries = await readdir(fullPath, { withFileTypes: true });
26
+ const files = entries.filter(e => e.isFile()).map(e => e.name).sort();
27
+ const contents = [];
28
+ for (const f of files) {
29
+ contents.push(await readFile(join(fullPath, f)));
30
+ }
31
+ return computeHash(Buffer.concat(contents));
32
+ }
33
+ else {
34
+ const content = await readFile(fullPath);
35
+ return computeHash(content);
36
+ }
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/cli/utils/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,KAAK,EAAE,UAAU;IACjB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;IACnB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,UAAU;IACjB,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,WAAW;IACnB,aAAa,EAAE,kBAAkB;CAClC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,UAAkB;IAElB,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,6 +1,8 @@
1
- import type { AlloyState } from "../../core/types.js";
2
- export type { AlloyState };
1
+ import type { AlloyState, ProjectConfig } from "../../core/types.js";
2
+ export type { AlloyState, ProjectConfig };
3
3
  export declare function createInitialState(): AlloyState;
4
4
  export declare function readState(changePath: string): Promise<AlloyState>;
5
5
  export declare function writeState(changePath: string, state: AlloyState): Promise<void>;
6
6
  export declare function findActiveChanges(changesDir: string): Promise<Map<string, AlloyState>>;
7
+ export declare function readProjectConfig(projectRoot: string): Promise<ProjectConfig>;
8
+ export declare function writeProjectConfig(projectRoot: string, config: ProjectConfig): Promise<void>;