@autopilot-harness/cli 0.1.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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +55 -0
  3. package/assets/autopilot-harness-hook.mjs +193 -0
  4. package/assets/vendor/migrations/001_initial.sql +62 -0
  5. package/assets/vendor/migrations/002_pending_followup.sql +4 -0
  6. package/assets/vendor/migrations/003_reviewing_item.sql +1 -0
  7. package/assets/vendor/runtime.mjs +5524 -0
  8. package/dist/assets/autopilot-harness-hook.mjs +193 -0
  9. package/dist/assets/vendor/migrations/001_initial.sql +62 -0
  10. package/dist/assets/vendor/migrations/002_pending_followup.sql +4 -0
  11. package/dist/assets/vendor/migrations/003_reviewing_item.sql +1 -0
  12. package/dist/assets/vendor/runtime.mjs +5524 -0
  13. package/dist/bin.d.ts +3 -0
  14. package/dist/bin.d.ts.map +1 -0
  15. package/dist/bin.js +300 -0
  16. package/dist/bin.js.map +1 -0
  17. package/dist/index.d.ts +23 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +13 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/init/config-merge.d.ts +27 -0
  22. package/dist/init/config-merge.d.ts.map +1 -0
  23. package/dist/init/config-merge.js +115 -0
  24. package/dist/init/config-merge.js.map +1 -0
  25. package/dist/init/default-config.d.ts +17 -0
  26. package/dist/init/default-config.d.ts.map +1 -0
  27. package/dist/init/default-config.js +101 -0
  28. package/dist/init/default-config.js.map +1 -0
  29. package/dist/init/hooks-merge.d.ts +25 -0
  30. package/dist/init/hooks-merge.d.ts.map +1 -0
  31. package/dist/init/hooks-merge.js +134 -0
  32. package/dist/init/hooks-merge.js.map +1 -0
  33. package/dist/init/install.d.ts +31 -0
  34. package/dist/init/install.d.ts.map +1 -0
  35. package/dist/init/install.js +829 -0
  36. package/dist/init/install.js.map +1 -0
  37. package/dist/init/platforms.d.ts +60 -0
  38. package/dist/init/platforms.d.ts.map +1 -0
  39. package/dist/init/platforms.js +275 -0
  40. package/dist/init/platforms.js.map +1 -0
  41. package/dist/init/tui.d.ts +65 -0
  42. package/dist/init/tui.d.ts.map +1 -0
  43. package/dist/init/tui.js +549 -0
  44. package/dist/init/tui.js.map +1 -0
  45. package/dist/init/types.d.ts +75 -0
  46. package/dist/init/types.d.ts.map +1 -0
  47. package/dist/init/types.js +9 -0
  48. package/dist/init/types.js.map +1 -0
  49. package/dist/init/wizard-copy.d.ts +74 -0
  50. package/dist/init/wizard-copy.d.ts.map +1 -0
  51. package/dist/init/wizard-copy.js +173 -0
  52. package/dist/init/wizard-copy.js.map +1 -0
  53. package/dist/init/wizard-helpers.d.ts +103 -0
  54. package/dist/init/wizard-helpers.d.ts.map +1 -0
  55. package/dist/init/wizard-helpers.js +724 -0
  56. package/dist/init/wizard-helpers.js.map +1 -0
  57. package/dist/locale-set.d.ts +24 -0
  58. package/dist/locale-set.d.ts.map +1 -0
  59. package/dist/locale-set.js +286 -0
  60. package/dist/locale-set.js.map +1 -0
  61. package/dist/names.d.ts +5 -0
  62. package/dist/names.d.ts.map +1 -0
  63. package/dist/names.js +5 -0
  64. package/dist/names.js.map +1 -0
  65. package/dist/project-fs.d.ts +48 -0
  66. package/dist/project-fs.d.ts.map +1 -0
  67. package/dist/project-fs.js +210 -0
  68. package/dist/project-fs.js.map +1 -0
  69. package/dist/read-untrusted-file.d.ts +41 -0
  70. package/dist/read-untrusted-file.d.ts.map +1 -0
  71. package/dist/read-untrusted-file.js +362 -0
  72. package/dist/read-untrusted-file.js.map +1 -0
  73. package/dist/session.d.ts +38 -0
  74. package/dist/session.d.ts.map +1 -0
  75. package/dist/session.js +242 -0
  76. package/dist/session.js.map +1 -0
  77. package/dist/status-doctor.d.ts +22 -0
  78. package/dist/status-doctor.d.ts.map +1 -0
  79. package/dist/status-doctor.js +712 -0
  80. package/dist/status-doctor.js.map +1 -0
  81. package/dist/uninstall.d.ts +31 -0
  82. package/dist/uninstall.d.ts.map +1 -0
  83. package/dist/uninstall.js +333 -0
  84. package/dist/uninstall.js.map +1 -0
  85. package/dist/upgrade.d.ts +29 -0
  86. package/dist/upgrade.d.ts.map +1 -0
  87. package/dist/upgrade.js +290 -0
  88. package/dist/upgrade.js.map +1 -0
  89. package/dist/vendor-entry.d.ts +6 -0
  90. package/dist/vendor-entry.d.ts.map +1 -0
  91. package/dist/vendor-entry.js +16 -0
  92. package/dist/vendor-entry.js.map +1 -0
  93. package/package.json +54 -0
@@ -0,0 +1,74 @@
1
+ import type { InitLocale } from "./types.js";
2
+ /** All interactive-init UI strings (wizard only; not skill/config content). */
3
+ export interface WizardCopy {
4
+ welcomeTitle: string;
5
+ welcomeBody: string;
6
+ gitYes: (branch: string) => string;
7
+ gitNo: string;
8
+ gitWarn: string;
9
+ installHere: (projectRoot: string, gitLine: string) => string;
10
+ cancelledCd: string;
11
+ alreadyInitialized: string;
12
+ refreshConfirm: string;
13
+ cancelledForce: string;
14
+ refreshKeepsConfig: string;
15
+ localeFromConfig: (locale: string) => string;
16
+ shellShortcut: string;
17
+ shellZsh: string;
18
+ shellBash: string;
19
+ shellSkip: (cliCmd: string) => string;
20
+ refreshSummary: (opts: {
21
+ projectRoot: string;
22
+ locale: string;
23
+ cliLine: string;
24
+ }) => string;
25
+ readyRefresh: (summary: string) => string;
26
+ cancelled: string;
27
+ platformMessage: string;
28
+ platformCursor: string;
29
+ surfaceMessage: string;
30
+ surfaceIde: string;
31
+ plansMessage: string;
32
+ plansDefault: string;
33
+ plansCustom: string;
34
+ plansCustomMessage: string;
35
+ plansCustomPlaceholder: string;
36
+ plansGitMessage: string;
37
+ plansGitCommit: string;
38
+ plansGitLocal: string;
39
+ plansGitLeave: string;
40
+ verifyMessage: string;
41
+ verifySkip: string;
42
+ verifyEnable: string;
43
+ triggersTitle: string;
44
+ triggersBody: string;
45
+ installSummary: (opts: {
46
+ projectRoot: string;
47
+ platform: string;
48
+ surface: string;
49
+ locale: string;
50
+ plansDir: string;
51
+ plansGit: string;
52
+ verify: string;
53
+ cliLine: string;
54
+ force: string;
55
+ }) => string;
56
+ verifySkipped: string;
57
+ verifyEnabled: string;
58
+ forceYes: string;
59
+ forceNo: string;
60
+ readyInstall: (summary: string) => string;
61
+ installing: string;
62
+ installFailed: string;
63
+ initFailed: string;
64
+ installed: string;
65
+ shellShortcutAdded: (path: string) => string;
66
+ shellShortcutSource: (path: string) => string;
67
+ shellShortcutPresent: (path: string) => string;
68
+ shellShortcutWarn: (msg: string) => string;
69
+ readyTitle: string;
70
+ done: string;
71
+ ttyRequired: string;
72
+ }
73
+ export declare function wizardCopy(locale: InitLocale): WizardCopy;
74
+ //# sourceMappingURL=wizard-copy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-copy.d.ts","sourceRoot":"","sources":["../../src/init/wizard-copy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { CLI_NAME, PREFERRED_NAME } from "../names.js";
2
+ const EN = {
3
+ welcomeTitle: "Welcome",
4
+ welcomeBody: [
5
+ "Two-phase agent harness:",
6
+ "① Planning — discuss, design, break into a checklist",
7
+ "② Executing — advance after self-review passes",
8
+ "",
9
+ `Docs say ${PREFERRED_NAME} · package ${CLI_NAME}`,
10
+ ].join("\n"),
11
+ gitYes: (branch) => `Git: yes · branch: ${branch}`,
12
+ gitNo: "Git: no (recommended to install at a git root)",
13
+ gitWarn: "No git repository detected — continue only if intentional.",
14
+ installHere: (projectRoot, gitLine) => `Install in this project?\n Path: ${projectRoot}\n ${gitLine}`,
15
+ cancelledCd: `Cancelled. cd to the project root, then re-run: ${CLI_NAME} init`,
16
+ alreadyInitialized: ".autopilot/config.yml already exists.",
17
+ refreshConfirm: "Refresh hook/skills/pin + merge hooks? (keeps existing config.yml)",
18
+ cancelledForce: `Cancelled. Use ${CLI_NAME} init --force to refresh without the prompt.`,
19
+ refreshKeepsConfig: "Refresh keeps config.yml (plans dir, verify, triggers unchanged).",
20
+ localeFromConfig: (locale) => `Locale (from config.yml): ${locale}`,
21
+ shellShortcut: "Shell shortcut",
22
+ shellZsh: "Add autopilot() to ~/.zshrc",
23
+ shellBash: "Add autopilot() to ~/.bashrc",
24
+ shellSkip: (cliCmd) => `Skip — run via: ${cliCmd}`,
25
+ refreshSummary: ({ projectRoot, locale, cliLine }) => [
26
+ `Project: ${projectRoot}`,
27
+ `Mode: force refresh (keep config.yml)`,
28
+ `Locale: ${locale} (from config.yml; skills refresh)`,
29
+ `CLI: ${cliLine}`,
30
+ "",
31
+ "Will refresh: hook, skills, workflows, pin, hooks.json merge",
32
+ ].join("\n"),
33
+ readyRefresh: (summary) => `Ready to refresh?\n${summary}`,
34
+ cancelled: "Cancelled.",
35
+ platformMessage: "AI platform",
36
+ platformCursor: "Cursor",
37
+ surfaceMessage: "Surface",
38
+ surfaceIde: "IDE — hook integration (recommended)",
39
+ plansMessage: "Plans directory",
40
+ plansDefault: "plans/ at repo root (recommended)",
41
+ plansCustom: "Custom path…",
42
+ plansCustomMessage: "Plans directory (relative to project root)",
43
+ plansCustomPlaceholder: "docs/plans",
44
+ plansGitMessage: "Track plans in git?",
45
+ plansGitCommit: "Yes — commit plans/ (recommended)",
46
+ plansGitLocal: "Local only — add plans/ to .gitignore",
47
+ plansGitLeave: "I'll configure .gitignore myself",
48
+ verifyMessage: "Machine verify commands (optional)",
49
+ verifySkip: "Skip — no verify layer (default)",
50
+ verifyEnable: "Enable verify flag (edit commands in config later)",
51
+ triggersTitle: "Triggers",
52
+ triggersBody: [
53
+ "Triggers are text fallbacks (line-start). Prefer /autopilot-on skills.",
54
+ "Slash skill names are fixed; stock phrases follow the selected locale.",
55
+ "Customize later via .autopilot/config.yml (or locale set).",
56
+ ].join("\n"),
57
+ installSummary: ({ projectRoot, platform, surface, locale, plansDir, plansGit, verify, cliLine, force, }) => [
58
+ `Project: ${projectRoot}`,
59
+ `Platform: ${platform} (${surface}, hook)`,
60
+ `Locale: ${locale}`,
61
+ `Plans: ${plansDir}/<slug>/checklist.md`,
62
+ `Plans git: ${plansGit}`,
63
+ `Verify: ${verify}`,
64
+ `CLI: ${cliLine}`,
65
+ `Force: ${force}`,
66
+ "",
67
+ "Will write: .autopilot/, .cursor/hooks.json, skills, workflows, quickstart",
68
+ ].join("\n"),
69
+ verifySkipped: "skipped",
70
+ verifyEnabled: "enabled (flag)",
71
+ forceYes: "yes (keep config.yml)",
72
+ forceNo: "no",
73
+ readyInstall: (summary) => `Ready to install?\n${summary}`,
74
+ installing: "Installing Autopilot…",
75
+ installFailed: "Install failed",
76
+ initFailed: "Init failed.",
77
+ installed: "Installed",
78
+ shellShortcutAdded: (path) => `shell shortcut → ${path}`,
79
+ shellShortcutSource: (path) => `Run: source ${path} then: autopilot status`,
80
+ shellShortcutPresent: (path) => `Shell shortcut already present in ${path}`,
81
+ shellShortcutWarn: (msg) => `Could not write shell shortcut: ${msg}`,
82
+ readyTitle: `${PREFERRED_NAME} is ready`,
83
+ done: "Done.",
84
+ ttyRequired: `Interactive init requires a TTY. Use: ${CLI_NAME} init --yes`,
85
+ };
86
+ const ZH = {
87
+ welcomeTitle: "欢迎",
88
+ welcomeBody: [
89
+ "两阶段 Agent 编排:",
90
+ "① Planning — 讨论、设计,拆成 checklist",
91
+ "② Executing — 自审通过后再推进下一项",
92
+ "",
93
+ `文档称 ${PREFERRED_NAME} · 包名 ${CLI_NAME}`,
94
+ ].join("\n"),
95
+ gitYes: (branch) => `Git: 是 · 分支: ${branch}`,
96
+ gitNo: "Git: 否(建议在 git 仓库根目录安装)",
97
+ gitWarn: "未检测到 git 仓库 — 仅在确认无误时继续。",
98
+ installHere: (projectRoot, gitLine) => `安装到当前项目?\n 路径: ${projectRoot}\n ${gitLine}`,
99
+ cancelledCd: `已取消。请 cd 到项目根目录后重新运行: ${CLI_NAME} init`,
100
+ alreadyInitialized: "已存在 .autopilot/config.yml。",
101
+ refreshConfirm: "刷新 hook/skills/pin 并合并 hooks?(保留现有 config.yml)",
102
+ cancelledForce: `已取消。可使用 ${CLI_NAME} init --force 跳过确认直接刷新。`,
103
+ refreshKeepsConfig: "刷新会保留 config.yml(plans 目录、verify、triggers 不变)。",
104
+ localeFromConfig: (locale) => `语言(来自 config.yml): ${locale}`,
105
+ shellShortcut: "Shell 快捷方式",
106
+ shellZsh: "写入 autopilot() 到 ~/.zshrc",
107
+ shellBash: "写入 autopilot() 到 ~/.bashrc",
108
+ shellSkip: (cliCmd) => `跳过 — 使用: ${cliCmd}`,
109
+ refreshSummary: ({ projectRoot, locale, cliLine }) => [
110
+ `项目: ${projectRoot}`,
111
+ `模式: 强制刷新(保留 config.yml)`,
112
+ `语言: ${locale}(来自 config.yml;刷新 skills)`,
113
+ `CLI: ${cliLine}`,
114
+ "",
115
+ "将刷新: hook、skills、workflows、pin、hooks.json 合并",
116
+ ].join("\n"),
117
+ readyRefresh: (summary) => `确认刷新?\n${summary}`,
118
+ cancelled: "已取消。",
119
+ platformMessage: "AI 平台",
120
+ platformCursor: "Cursor",
121
+ surfaceMessage: "接入方式",
122
+ surfaceIde: "IDE — Hook 集成(推荐)",
123
+ plansMessage: "Plans 目录",
124
+ plansDefault: "仓库根目录 plans/(推荐)",
125
+ plansCustom: "自定义路径…",
126
+ plansCustomMessage: "Plans 目录(相对项目根)",
127
+ plansCustomPlaceholder: "docs/plans",
128
+ plansGitMessage: "是否把 plans 纳入 git?",
129
+ plansGitCommit: "是 — 提交 plans/(推荐)",
130
+ plansGitLocal: "仅本地 — 将 plans/ 加入 .gitignore",
131
+ plansGitLeave: "我自己配置 .gitignore",
132
+ verifyMessage: "机器校验命令(可选)",
133
+ verifySkip: "跳过 — 不启用 verify(默认)",
134
+ verifyEnable: "启用 verify 开关(稍后在 config 中编辑命令)",
135
+ triggersTitle: "触发短语",
136
+ triggersBody: [
137
+ "文本触发是行首兜底;优先使用 /autopilot-on 等 skills。",
138
+ "Slash skill 名称固定;库存短语随所选语言变化。",
139
+ "之后可在 .autopilot/config.yml(或 locale set)中自定义。",
140
+ ].join("\n"),
141
+ installSummary: ({ projectRoot, platform, surface, locale, plansDir, plansGit, verify, cliLine, force, }) => [
142
+ `项目: ${projectRoot}`,
143
+ `平台: ${platform}(${surface},hook)`,
144
+ `语言: ${locale}`,
145
+ `Plans: ${plansDir}/<slug>/checklist.md`,
146
+ `Plans git: ${plansGit}`,
147
+ `Verify: ${verify}`,
148
+ `CLI: ${cliLine}`,
149
+ `Force: ${force}`,
150
+ "",
151
+ "将写入: .autopilot/、.cursor/hooks.json、skills、workflows、quickstart",
152
+ ].join("\n"),
153
+ verifySkipped: "已跳过",
154
+ verifyEnabled: "已启用(开关)",
155
+ forceYes: "是(保留 config.yml)",
156
+ forceNo: "否",
157
+ readyInstall: (summary) => `确认安装?\n${summary}`,
158
+ installing: "正在安装 Autopilot…",
159
+ installFailed: "安装失败",
160
+ initFailed: "初始化失败。",
161
+ installed: "安装完成",
162
+ shellShortcutAdded: (path) => `shell 快捷方式 → ${path}`,
163
+ shellShortcutSource: (path) => `请执行: source ${path} 然后: autopilot status`,
164
+ shellShortcutPresent: (path) => `快捷方式已存在于 ${path}`,
165
+ shellShortcutWarn: (msg) => `无法写入 shell 快捷方式: ${msg}`,
166
+ readyTitle: `${PREFERRED_NAME} 已就绪`,
167
+ done: "完成。",
168
+ ttyRequired: `交互式 init 需要 TTY。请使用: ${CLI_NAME} init --yes`,
169
+ };
170
+ export function wizardCopy(locale) {
171
+ return locale === "zh-CN" ? ZH : EN;
172
+ }
173
+ //# sourceMappingURL=wizard-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-copy.js","sourceRoot":"","sources":["../../src/init/wizard-copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA2EvD,MAAM,EAAE,GAAe;IACrB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE;QACX,0BAA0B;QAC1B,sDAAsD;QACtD,gDAAgD;QAChD,EAAE;QACF,YAAY,cAAc,cAAc,QAAQ,EAAE;KACnD,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,MAAM,EAAE;IAClD,KAAK,EAAE,gDAAgD;IACvD,OAAO,EAAE,4DAA4D;IACrE,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CACpC,qCAAqC,WAAW,OAAO,OAAO,EAAE;IAClE,WAAW,EAAE,mDAAmD,QAAQ,OAAO;IAC/E,kBAAkB,EAAE,uCAAuC;IAC3D,cAAc,EACZ,oEAAoE;IACtE,cAAc,EAAE,kBAAkB,QAAQ,8CAA8C;IACxF,kBAAkB,EAChB,mEAAmE;IACrE,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,6BAA6B,MAAM,EAAE;IACnE,aAAa,EAAE,gBAAgB;IAC/B,QAAQ,EAAE,6BAA6B;IACvC,SAAS,EAAE,8BAA8B;IACzC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,MAAM,EAAE;IAClD,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CACnD;QACE,cAAc,WAAW,EAAE;QAC3B,4CAA4C;QAC5C,cAAc,MAAM,oCAAoC;QACxD,cAAc,OAAO,EAAE;QACvB,EAAE;QACF,8DAA8D;KAC/D,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,OAAO,EAAE;IAC1D,SAAS,EAAE,YAAY;IACvB,eAAe,EAAE,aAAa;IAC9B,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,sCAAsC;IAClD,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,mCAAmC;IACjD,WAAW,EAAE,cAAc;IAC3B,kBAAkB,EAAE,4CAA4C;IAChE,sBAAsB,EAAE,YAAY;IACpC,eAAe,EAAE,qBAAqB;IACtC,cAAc,EAAE,mCAAmC;IACnD,aAAa,EAAE,uCAAuC;IACtD,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,oCAAoC;IACnD,UAAU,EAAE,kCAAkC;IAC9C,YAAY,EAAE,oDAAoD;IAClE,aAAa,EAAE,UAAU;IACzB,YAAY,EAAE;QACZ,wEAAwE;QACxE,wEAAwE;QACxE,4DAA4D;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,cAAc,EAAE,CAAC,EACf,WAAW,EACX,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE,EAAE,CACH;QACE,cAAc,WAAW,EAAE;QAC3B,cAAc,QAAQ,KAAK,OAAO,SAAS;QAC3C,cAAc,MAAM,EAAE;QACtB,cAAc,QAAQ,sBAAsB;QAC5C,cAAc,QAAQ,EAAE;QACxB,cAAc,MAAM,EAAE;QACtB,cAAc,OAAO,EAAE;QACvB,cAAc,KAAK,EAAE;QACrB,EAAE;QACF,4EAA4E;KAC7E,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,gBAAgB;IAC/B,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,OAAO,EAAE;IAC1D,UAAU,EAAE,uBAAuB;IACnC,aAAa,EAAE,gBAAgB;IAC/B,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,WAAW;IACtB,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,IAAI,EAAE;IACxD,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5B,eAAe,IAAI,2BAA2B;IAChD,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,qCAAqC,IAAI,EAAE;IAC3E,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mCAAmC,GAAG,EAAE;IACpE,UAAU,EAAE,GAAG,cAAc,WAAW;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,yCAAyC,QAAQ,aAAa;CAC5E,CAAC;AAEF,MAAM,EAAE,GAAe;IACrB,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE;QACX,eAAe;QACf,iCAAiC;QACjC,2BAA2B;QAC3B,EAAE;QACF,OAAO,cAAc,SAAS,QAAQ,EAAE;KACzC,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAgB,MAAM,EAAE;IAC5C,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,0BAA0B;IACnC,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CACpC,mBAAmB,WAAW,OAAO,OAAO,EAAE;IAChD,WAAW,EAAE,yBAAyB,QAAQ,OAAO;IACrD,kBAAkB,EAAE,4BAA4B;IAChD,cAAc,EACZ,gDAAgD;IAClD,cAAc,EAAE,WAAW,QAAQ,yBAAyB;IAC5D,kBAAkB,EAChB,gDAAgD;IAClD,gBAAgB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,MAAM,EAAE;IAC5D,aAAa,EAAE,YAAY;IAC3B,QAAQ,EAAE,2BAA2B;IACrC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,MAAM,EAAE;IAC3C,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CACnD;QACE,WAAW,WAAW,EAAE;QACxB,6BAA6B;QAC7B,WAAW,MAAM,2BAA2B;QAC5C,aAAa,OAAO,EAAE;QACtB,EAAE;QACF,8CAA8C;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,OAAO,EAAE;IAC9C,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,OAAO;IACxB,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,MAAM;IACtB,UAAU,EAAE,mBAAmB;IAC/B,YAAY,EAAE,UAAU;IACxB,YAAY,EAAE,kBAAkB;IAChC,WAAW,EAAE,QAAQ;IACrB,kBAAkB,EAAE,iBAAiB;IACrC,sBAAsB,EAAE,YAAY;IACpC,eAAe,EAAE,mBAAmB;IACpC,cAAc,EAAE,mBAAmB;IACnC,aAAa,EAAE,8BAA8B;IAC7C,aAAa,EAAE,kBAAkB;IACjC,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,qBAAqB;IACjC,YAAY,EAAE,gCAAgC;IAC9C,aAAa,EAAE,MAAM;IACrB,YAAY,EAAE;QACZ,wCAAwC;QACxC,+BAA+B;QAC/B,+CAA+C;KAChD,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,cAAc,EAAE,CAAC,EACf,WAAW,EACX,QAAQ,EACR,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,GACN,EAAE,EAAE,CACH;QACE,WAAW,WAAW,EAAE;QACxB,WAAW,QAAQ,IAAI,OAAO,QAAQ;QACtC,WAAW,MAAM,EAAE;QACnB,aAAa,QAAQ,sBAAsB;QAC3C,cAAc,QAAQ,EAAE;QACxB,aAAa,MAAM,EAAE;QACrB,aAAa,OAAO,EAAE;QACtB,aAAa,KAAK,EAAE;QACpB,EAAE;QACF,iEAAiE;KAClE,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,SAAS;IACxB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,GAAG;IACZ,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,OAAO,EAAE;IAC9C,UAAU,EAAE,iBAAiB;IAC7B,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,MAAM;IACjB,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,IAAI,EAAE;IACpD,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5B,eAAe,IAAI,yBAAyB;IAC9C,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,IAAI,EAAE;IAClD,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,EAAE;IACrD,UAAU,EAAE,GAAG,cAAc,MAAM;IACnC,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,wBAAwB,QAAQ,aAAa;CAC3D,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,103 @@
1
+ import type { InitLocale, InitYesOptions, PlansGitPolicy } from "./types.js";
2
+ import { type PlatformBinding } from "./platforms.js";
3
+ export { assertNotSymlink, assertParentDirInProject, assertRealpathInside, assertRegularFileInsideProject, assertWrittenInsideProject, assertPairInsideOrUnlinkAll, assertPresentRealFile, mkdirRealDirSync, resolveProjectRootOrThrow, isRealRegularFile, isRealDirectory, resolveNofollowFlag, } from "../project-fs.js";
4
+ export type { PlansGitPolicy };
5
+ export type ShellAliasTarget = "skip" | "zshrc" | "bashrc";
6
+ /** Answers collected by interactive init (or tests). */
7
+ export interface InitWizardAnswers {
8
+ projectRoot: string;
9
+ locale: InitLocale;
10
+ platforms: PlatformBinding[];
11
+ /** @deprecated Prefer platforms[0]; kept for call sites during transition. */
12
+ platform: "cursor" | string;
13
+ /** @deprecated Prefer platforms[0].surface */
14
+ surface: "ide" | string;
15
+ plansDir: string;
16
+ plansGit: PlansGitPolicy;
17
+ verifyEnabled: boolean;
18
+ /** executing_only = after RUN; project = any product-code edit. */
19
+ reviewScope: "executing_only" | "project";
20
+ /** 0 = unlimited. */
21
+ maxErrorsBeforePause: number;
22
+ shellAlias: ShellAliasTarget;
23
+ force: boolean;
24
+ /** When true, merge platforms into existing config.yml. */
25
+ mergePlatforms?: boolean;
26
+ packageVersion?: string;
27
+ }
28
+ export interface ProjectProbe {
29
+ projectRoot: string;
30
+ hasGit: boolean;
31
+ branch: string | null;
32
+ alreadyInitialized: boolean;
33
+ }
34
+ /**
35
+ * Normalize + validate plans directory (relative, no traversal, YAML-safe).
36
+ */
37
+ export declare function normalizePlansDir(raw: string | undefined | null): {
38
+ ok: true;
39
+ value: string;
40
+ } | {
41
+ ok: false;
42
+ error: string;
43
+ };
44
+ export declare function probeProject(projectRoot: string): ProjectProbe;
45
+ /** Append plans dir to .gitignore once (dedupe). */
46
+ export declare function applyPlansGitignore(projectRoot: string, plansDir?: string): string | null;
47
+ /** Always ignore runtime Autopilot artifacts (not config/hooks). */
48
+ export declare function applyAutopilotRuntimeGitignore(projectRoot: string): string | null;
49
+ /** Map wizard answers → installInitYes options (+ post-install alias). */
50
+ export declare function answersToInstallOptions(answers: InitWizardAnswers): InitYesOptions;
51
+ /** POSIX single-quote a string for safe embedding in shell. */
52
+ export declare function shellSingleQuote(value: string): string;
53
+ /**
54
+ * Absolute path of the running CLI entry (e.g. …/dist/bin.js), or null.
55
+ * Used so local checkouts write a working alias before the package is on npm.
56
+ */
57
+ export declare function tryResolveRunningCliScript(): string | null;
58
+ export declare function isTrustedCliEntrypoint(absPath: string): boolean;
59
+ /**
60
+ * Runnable CLI command for docs / cheat sheets.
61
+ * Prefers `node <this-bin>`; falls back to `npx` + {@link NPM_PACKAGE_NAME}.
62
+ */
63
+ export declare function resolveCliCommand(): string;
64
+ /**
65
+ * Shell rc snippet that defines `autopilot` as a function (not `alias=`).
66
+ * Alias RHS quoting breaks on paths containing `'`; a function body can embed
67
+ * the path via {@link shellSingleQuote} without source-time `$()` expansion.
68
+ */
69
+ export declare function autopilotShellAliasLine(): string;
70
+ /** Append shell shortcut with dedupe. Returns path + whether a line was added. */
71
+ export declare function appendShellAlias(target: Exclude<ShellAliasTarget, "skip">): {
72
+ path: string;
73
+ added: boolean;
74
+ };
75
+ /**
76
+ * Strip C0 controls / DEL and cap length so a hostile config.yml `platform`
77
+ * cannot inject control chars or megabyte strings into terminal tips.
78
+ * Allowlist first, then lowercase + length cap, so junk prefixes do not
79
+ * truncate away a real id (e.g. "***…***cursor" → "cursor").
80
+ */
81
+ /**
82
+ * Human label for an agent host id (init/upgrade tips).
83
+ * Init CLI copy is English; extend as new platforms ship.
84
+ */
85
+ export declare function formatHostDisplayName(platform: string): string;
86
+ /** Init/upgrade outro — always English (init UX language). */
87
+ export declare function formatPostInstallOutro(platformOrPlatforms: string | readonly string[]): string;
88
+ /**
89
+ * Host-specific activation tips after hooks/skills install.
90
+ * Always English (init UX language). Install what you chose → tip for that host.
91
+ */
92
+ export declare function formatHostActivationTips(platformOrPlatforms: string | readonly string[]): string[];
93
+ /** Non-interactive init / upgrade footer lines (English). */
94
+ export declare function formatPostInstallFooter(platformOrPlatforms: string | readonly string[]): string[];
95
+ /** Installable host options for interactive multiselect (English). */
96
+ export declare function installableHostOptions(): {
97
+ value: string;
98
+ label: string;
99
+ binding: PlatformBinding;
100
+ }[];
101
+ export declare function writeQuickstart(projectRoot: string, locale: InitLocale, plansDir?: string, platform?: string): string | null;
102
+ export declare function formatCheatSheet(locale: InitLocale, cliCommand?: string, plansDir?: string, platformOrPlatforms?: string | readonly string[]): string[];
103
+ //# sourceMappingURL=wizard-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard-helpers.d.ts","sourceRoot":"","sources":["../../src/init/wizard-helpers.ts"],"names":[],"mappings":"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"}