@aipper/aiws 0.0.28 → 0.0.30

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 (267) hide show
  1. package/README.md +18 -2
  2. package/bin/aiws.js +2 -2
  3. package/dist/aiws-package.d.ts +4 -0
  4. package/dist/aiws-package.js +11 -0
  5. package/dist/aiws-package.js.map +1 -0
  6. package/dist/aiws-paths.d.ts +48 -0
  7. package/dist/aiws-paths.js +129 -0
  8. package/dist/aiws-paths.js.map +1 -0
  9. package/dist/backup.d.ts +27 -0
  10. package/dist/backup.js +125 -0
  11. package/dist/backup.js.map +1 -0
  12. package/dist/cli.d.ts +1 -0
  13. package/dist/cli.js +773 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/codex-prompts.d.ts +17 -0
  16. package/dist/codex-prompts.js +49 -0
  17. package/dist/codex-prompts.js.map +1 -0
  18. package/dist/codex-skills.d.ts +17 -0
  19. package/dist/codex-skills.js +75 -0
  20. package/dist/codex-skills.js.map +1 -0
  21. package/dist/commands/change-advice.d.ts +25 -0
  22. package/dist/commands/change-advice.js +197 -0
  23. package/dist/commands/change-advice.js.map +1 -0
  24. package/dist/commands/change-evidence-command.d.ts +29 -0
  25. package/dist/commands/change-evidence-command.js +213 -0
  26. package/dist/commands/change-evidence-command.js.map +1 -0
  27. package/dist/commands/change-evidence-entry.d.ts +16 -0
  28. package/dist/commands/change-evidence-entry.js +35 -0
  29. package/dist/commands/change-evidence-entry.js.map +1 -0
  30. package/dist/commands/change-evidence.d.ts +108 -0
  31. package/dist/commands/change-evidence.js +341 -0
  32. package/dist/commands/change-evidence.js.map +1 -0
  33. package/dist/commands/change-finish.d.ts +71 -0
  34. package/dist/commands/change-finish.js +387 -0
  35. package/dist/commands/change-finish.js.map +1 -0
  36. package/dist/commands/change-git-status.d.ts +22 -0
  37. package/dist/commands/change-git-status.js +50 -0
  38. package/dist/commands/change-git-status.js.map +1 -0
  39. package/dist/commands/change-lifecycle-entry.d.ts +29 -0
  40. package/{src → dist}/commands/change-lifecycle-entry.js +21 -28
  41. package/dist/commands/change-lifecycle-entry.js.map +1 -0
  42. package/dist/commands/change-lifecycle.d.ts +56 -0
  43. package/dist/commands/change-lifecycle.js +211 -0
  44. package/dist/commands/change-lifecycle.js.map +1 -0
  45. package/dist/commands/change-metrics-command.d.ts +12 -0
  46. package/dist/commands/change-metrics-command.js +110 -0
  47. package/dist/commands/change-metrics-command.js.map +1 -0
  48. package/dist/commands/change-next-command.d.ts +18 -0
  49. package/dist/commands/change-next-command.js +138 -0
  50. package/dist/commands/change-next-command.js.map +1 -0
  51. package/dist/commands/change-review-gates.d.ts +107 -0
  52. package/dist/commands/change-review-gates.js +329 -0
  53. package/dist/commands/change-review-gates.js.map +1 -0
  54. package/dist/commands/change-scope-gate.d.ts +21 -0
  55. package/dist/commands/change-scope-gate.js +32 -0
  56. package/dist/commands/change-scope-gate.js.map +1 -0
  57. package/dist/commands/change-start.d.ts +30 -0
  58. package/dist/commands/change-start.js +91 -0
  59. package/dist/commands/change-start.js.map +1 -0
  60. package/dist/commands/change-state-command.d.ts +3 -0
  61. package/dist/commands/change-state-command.js +32 -0
  62. package/dist/commands/change-state-command.js.map +1 -0
  63. package/dist/commands/change-status-command.d.ts +13 -0
  64. package/dist/commands/change-status-command.js +126 -0
  65. package/dist/commands/change-status-command.js.map +1 -0
  66. package/dist/commands/change-status-context.d.ts +58 -0
  67. package/dist/commands/change-status-context.js +166 -0
  68. package/dist/commands/change-status-context.js.map +1 -0
  69. package/dist/commands/change-task-stats.d.ts +24 -0
  70. package/dist/commands/change-task-stats.js +66 -0
  71. package/dist/commands/change-task-stats.js.map +1 -0
  72. package/dist/commands/change-validate-entry.d.ts +17 -0
  73. package/dist/commands/change-validate-entry.js +44 -0
  74. package/dist/commands/change-validate-entry.js.map +1 -0
  75. package/dist/commands/change-validate.d.ts +32 -0
  76. package/dist/commands/change-validate.js +128 -0
  77. package/dist/commands/change-validate.js.map +1 -0
  78. package/dist/commands/change.d.ts +322 -0
  79. package/dist/commands/change.js +1731 -0
  80. package/dist/commands/change.js.map +1 -0
  81. package/dist/commands/codex-install-prompts.d.ts +4 -0
  82. package/dist/commands/codex-install-prompts.js +68 -0
  83. package/dist/commands/codex-install-prompts.js.map +1 -0
  84. package/dist/commands/codex-install-skills.d.ts +4 -0
  85. package/dist/commands/codex-install-skills.js +74 -0
  86. package/dist/commands/codex-install-skills.js.map +1 -0
  87. package/dist/commands/codex-status-prompts.d.ts +4 -0
  88. package/dist/commands/codex-status-prompts.js +44 -0
  89. package/dist/commands/codex-status-prompts.js.map +1 -0
  90. package/dist/commands/codex-status-skills.d.ts +4 -0
  91. package/dist/commands/codex-status-skills.js +54 -0
  92. package/dist/commands/codex-status-skills.js.map +1 -0
  93. package/dist/commands/codex-uninstall-prompts.d.ts +4 -0
  94. package/dist/commands/codex-uninstall-prompts.js +51 -0
  95. package/dist/commands/codex-uninstall-prompts.js.map +1 -0
  96. package/dist/commands/codex-uninstall-skills.d.ts +4 -0
  97. package/dist/commands/codex-uninstall-skills.js +59 -0
  98. package/dist/commands/codex-uninstall-skills.js.map +1 -0
  99. package/dist/commands/dashboard.d.ts +222 -0
  100. package/dist/commands/dashboard.js +193 -0
  101. package/dist/commands/dashboard.js.map +1 -0
  102. package/dist/commands/hooks-install.d.ts +4 -0
  103. package/dist/commands/hooks-install.js +90 -0
  104. package/dist/commands/hooks-install.js.map +1 -0
  105. package/dist/commands/hooks-status.d.ts +4 -0
  106. package/dist/commands/hooks-status.js +89 -0
  107. package/dist/commands/hooks-status.js.map +1 -0
  108. package/dist/commands/init.d.ts +4 -0
  109. package/dist/commands/init.js +100 -0
  110. package/dist/commands/init.js.map +1 -0
  111. package/dist/commands/opencode-auto.d.ts +11 -0
  112. package/dist/commands/opencode-auto.js +158 -0
  113. package/dist/commands/opencode-auto.js.map +1 -0
  114. package/dist/commands/opencode-status.d.ts +4 -0
  115. package/dist/commands/opencode-status.js +75 -0
  116. package/dist/commands/opencode-status.js.map +1 -0
  117. package/dist/commands/opencode-supervise.d.ts +24 -0
  118. package/dist/commands/opencode-supervise.js +188 -0
  119. package/dist/commands/opencode-supervise.js.map +1 -0
  120. package/dist/commands/rollback.d.ts +4 -0
  121. package/dist/commands/rollback.js +12 -0
  122. package/dist/commands/rollback.js.map +1 -0
  123. package/dist/commands/update.d.ts +4 -0
  124. package/dist/commands/update.js +212 -0
  125. package/dist/commands/update.js.map +1 -0
  126. package/dist/commands/validate.d.ts +4 -0
  127. package/dist/commands/validate.js +222 -0
  128. package/dist/commands/validate.js.map +1 -0
  129. package/dist/commands/ws-commit.d.ts +5 -0
  130. package/dist/commands/ws-commit.js +39 -0
  131. package/dist/commands/ws-commit.js.map +1 -0
  132. package/dist/commands/ws-deliver.d.ts +5 -0
  133. package/dist/commands/ws-deliver.js +59 -0
  134. package/dist/commands/ws-deliver.js.map +1 -0
  135. package/dist/commands/ws-finish.d.ts +5 -0
  136. package/dist/commands/ws-finish.js +142 -0
  137. package/dist/commands/ws-finish.js.map +1 -0
  138. package/dist/commands/ws-handoff.d.ts +5 -0
  139. package/dist/commands/ws-handoff.js +35 -0
  140. package/dist/commands/ws-handoff.js.map +1 -0
  141. package/dist/commands/ws-migrate.d.ts +5 -0
  142. package/dist/commands/ws-migrate.js +41 -0
  143. package/dist/commands/ws-migrate.js.map +1 -0
  144. package/dist/commands/ws-plan-verify.d.ts +5 -0
  145. package/dist/commands/ws-plan-verify.js +38 -0
  146. package/dist/commands/ws-plan-verify.js.map +1 -0
  147. package/dist/commands/ws-pull.d.ts +5 -0
  148. package/dist/commands/ws-pull.js +26 -0
  149. package/dist/commands/ws-pull.js.map +1 -0
  150. package/dist/commands/ws-push.d.ts +5 -0
  151. package/dist/commands/ws-push.js +68 -0
  152. package/dist/commands/ws-push.js.map +1 -0
  153. package/dist/commands/ws-submodule-setup.d.ts +5 -0
  154. package/dist/commands/ws-submodule-setup.js +55 -0
  155. package/dist/commands/ws-submodule-setup.js.map +1 -0
  156. package/dist/commands/ws-verify-before-complete.d.ts +5 -0
  157. package/dist/commands/ws-verify-before-complete.js +35 -0
  158. package/dist/commands/ws-verify-before-complete.js.map +1 -0
  159. package/dist/dashboard/app.d.ts +1 -0
  160. package/dist/dashboard/app.js +370 -0
  161. package/dist/dashboard/app.js.map +1 -0
  162. package/dist/delegation/cli.d.ts +6 -0
  163. package/dist/delegation/cli.js +14 -0
  164. package/dist/delegation/cli.js.map +1 -0
  165. package/dist/delegation/index.d.ts +35 -0
  166. package/dist/delegation/index.js +118 -0
  167. package/dist/delegation/index.js.map +1 -0
  168. package/dist/errors.d.ts +8 -0
  169. package/dist/errors.js +11 -0
  170. package/dist/errors.js.map +1 -0
  171. package/dist/exec.d.ts +9 -0
  172. package/dist/exec.js +22 -0
  173. package/dist/exec.js.map +1 -0
  174. package/dist/fs.d.ts +9 -0
  175. package/dist/fs.js +62 -0
  176. package/dist/fs.js.map +1 -0
  177. package/dist/governance.d.ts +10 -0
  178. package/dist/governance.js +135 -0
  179. package/dist/governance.js.map +1 -0
  180. package/dist/hash.d.ts +3 -0
  181. package/dist/hash.js +13 -0
  182. package/dist/hash.js.map +1 -0
  183. package/dist/hooks/deploy-claude.d.ts +13 -0
  184. package/dist/hooks/deploy-claude.js +67 -0
  185. package/dist/hooks/deploy-claude.js.map +1 -0
  186. package/dist/journal.d.ts +22 -0
  187. package/dist/journal.js +112 -0
  188. package/dist/journal.js.map +1 -0
  189. package/dist/json-schema-lite.d.ts +22 -0
  190. package/dist/json-schema-lite.js +148 -0
  191. package/dist/json-schema-lite.js.map +1 -0
  192. package/dist/managed-blocks.d.ts +24 -0
  193. package/dist/managed-blocks.js +84 -0
  194. package/dist/managed-blocks.js.map +1 -0
  195. package/dist/manifest.d.ts +24 -0
  196. package/dist/manifest.js +145 -0
  197. package/dist/manifest.js.map +1 -0
  198. package/dist/opencode-env.d.ts +62 -0
  199. package/dist/opencode-env.js +178 -0
  200. package/dist/opencode-env.js.map +1 -0
  201. package/dist/path-utils.d.ts +2 -0
  202. package/dist/path-utils.js +8 -0
  203. package/dist/path-utils.js.map +1 -0
  204. package/dist/spec.d.ts +17 -0
  205. package/dist/spec.js +174 -0
  206. package/dist/spec.js.map +1 -0
  207. package/dist/template.d.ts +20 -0
  208. package/dist/template.js +123 -0
  209. package/dist/template.js.map +1 -0
  210. package/dist/workspace.d.ts +4 -0
  211. package/dist/workspace.js +19 -0
  212. package/dist/workspace.js.map +1 -0
  213. package/package.json +11 -3
  214. package/src/aiws-package.js +0 -15
  215. package/src/backup.js +0 -149
  216. package/src/cli.js +0 -647
  217. package/src/codex-prompts.js +0 -74
  218. package/src/codex-skills.js +0 -111
  219. package/src/commands/change-advice.js +0 -200
  220. package/src/commands/change-evidence-command.js +0 -242
  221. package/src/commands/change-evidence-entry.js +0 -40
  222. package/src/commands/change-evidence.js +0 -340
  223. package/src/commands/change-finish.js +0 -484
  224. package/src/commands/change-git-status.js +0 -53
  225. package/src/commands/change-lifecycle.js +0 -236
  226. package/src/commands/change-metrics-command.js +0 -110
  227. package/src/commands/change-next-command.js +0 -129
  228. package/src/commands/change-review-gates.js +0 -315
  229. package/src/commands/change-scope-gate.js +0 -34
  230. package/src/commands/change-start.js +0 -120
  231. package/src/commands/change-state-command.js +0 -40
  232. package/src/commands/change-status-command.js +0 -134
  233. package/src/commands/change-status-context.js +0 -202
  234. package/src/commands/change-task-stats.js +0 -64
  235. package/src/commands/change-validate-entry.js +0 -45
  236. package/src/commands/change-validate.js +0 -127
  237. package/src/commands/change.js +0 -2087
  238. package/src/commands/codex-install-prompts.js +0 -68
  239. package/src/commands/codex-install-skills.js +0 -74
  240. package/src/commands/codex-status-prompts.js +0 -55
  241. package/src/commands/codex-status-skills.js +0 -63
  242. package/src/commands/codex-uninstall-prompts.js +0 -55
  243. package/src/commands/codex-uninstall-skills.js +0 -62
  244. package/src/commands/dashboard.js +0 -205
  245. package/src/commands/hooks-install.js +0 -92
  246. package/src/commands/hooks-status.js +0 -95
  247. package/src/commands/init.js +0 -93
  248. package/src/commands/opencode-status.js +0 -61
  249. package/src/commands/rollback.js +0 -13
  250. package/src/commands/update.js +0 -133
  251. package/src/commands/validate.js +0 -222
  252. package/src/dashboard/app.js +0 -371
  253. package/src/errors.js +0 -15
  254. package/src/exec.js +0 -34
  255. package/src/fs.js +0 -91
  256. package/src/governance.js +0 -159
  257. package/src/hash.js +0 -25
  258. package/src/json-schema-lite.js +0 -164
  259. package/src/managed-blocks.js +0 -131
  260. package/src/manifest.js +0 -153
  261. package/src/opencode-env.js +0 -76
  262. package/src/path-utils.js +0 -20
  263. package/src/spec.js +0 -195
  264. package/src/template.js +0 -187
  265. package/src/workspace.js +0 -23
  266. /package/{src → dist}/dashboard/index.html +0 -0
  267. /package/{src → dist}/dashboard/style.css +0 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  - `aiws change ...`:变更工件工作流
13
13
  - `aiws dashboard serve`:本地 change/dashboard API
14
14
  - `aiws hooks install/status`
15
- - `aiws opencode status`
15
+ - `aiws opencode status/supervise`
16
16
  - `aiws codex install-skills/status-skills/uninstall-skills`
17
17
 
18
18
  支持工具:
@@ -55,6 +55,8 @@ AI 工具内:
55
55
  - simple/local 单点修复:`$ws-dev-lite`
56
56
  - 常规实现:`$ws-dev`
57
57
  - 中大型任务:`$ws-plan` → `$ws-plan-verify` → `$ws-dev`
58
+ - OpenCode/oMo 自动 bootstrap:`/ws-auto`
59
+ - OpenCode/oMo 自主协作实验:`/ws-autonomy`
58
60
  - 提交前:`$ws-review` / `$ws-commit`
59
61
  - 交付前:`$ws-deliver` / `$ws-finish`
60
62
 
@@ -75,7 +77,7 @@ aiws validate [path] [--stamp]
75
77
  aiws rollback [path] <timestamp|latest>
76
78
 
77
79
  aiws change new <change-id> [--no-design]
78
- aiws change start <change-id> [--switch|--no-switch|--worktree]
80
+ aiws change start <change-id> [--switch|--no-switch]
79
81
  aiws change status [change-id]
80
82
  aiws change next [change-id]
81
83
  aiws change sync [change-id]
@@ -87,6 +89,8 @@ aiws dashboard serve [--host 127.0.0.1] [--port 3456]
87
89
  aiws hooks install [path]
88
90
  aiws hooks status [path]
89
91
  aiws opencode status [path]
92
+ aiws opencode auto [path] [--session <name>] [--window <name>] [--once] [--poll-ms <ms>] [--no-update]
93
+ aiws opencode supervise [path] [--session <name>] [--window <name>] [--once] [--poll-ms <ms>]
90
94
  aiws codex install-skills
91
95
  aiws codex status-skills
92
96
  aiws codex uninstall-skills
@@ -116,6 +120,18 @@ aiws codex uninstall-skills
116
120
 
117
121
  目标是统一 workflow 入口,不保证工具自动发现或自动加载。
118
122
 
123
+ OpenCode/oMo 补充:
124
+ - `.opencode/oh-my-opencode.json.example` 提供 autonomy 示例配置(`prompt_append` / `backgroundTasks` / `experimental.auto_resume`)
125
+ - 同一份 oMo 示例配置还会声明 approval whitelist policy(只读命令 + evidence 写路径;宿主权限保持 `manual-only`)
126
+ - `.claude/settings.json.example` 提供 hook 兼容层示例
127
+ - `.opencode/helpers/approval-whitelist-check.sh` 把 whitelist policy 转成 `allow/deny/manual` 判定,并落审计日志
128
+ - `.opencode/helpers/approval-whitelist-run.sh` 在 `allow` 时执行简单命令,并落执行摘要
129
+ - `.opencode/helpers/approval-whitelist-watchdog.sh` 轮询队列并调用 runner,适合外部蜂群/守护进程接入
130
+ - `/ws-auto` 会先触发 `aiws opencode auto .`:必要时刷新托管内容,再按条件确保 watchdog 已在 tmux 中运行
131
+ - `aiws opencode auto .` 会在需要时自动执行 `aiws update .`;若 oMo 已启用且 tmux 可用,再继续启动 watchdog
132
+ - `aiws opencode supervise .` 会显式确保 tmux 中已有一个 watchdog window;若当前不在 tmux,则会为该工作区起一个 detached session
133
+ - `.opencode/helpers/tmux-swarm-scan.sh` / `tmux-swarm-rescue.sh` 提供可选的 tmux 巡检与安全救援 helper
134
+
119
135
  ## 运行要求
120
136
 
121
137
  - Node.js >= 20
package/bin/aiws.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { cliMain } from "../src/cli.js";
3
- import { UserError } from "../src/errors.js";
2
+ import { cliMain } from "../dist/cli.js";
3
+ import { UserError } from "../dist/errors.js";
4
4
 
5
5
  try {
6
6
  const exitCode = await cliMain(process.argv.slice(2));
@@ -0,0 +1,4 @@
1
+ export declare function loadAiwsPackage(): Promise<{
2
+ rootDir: string;
3
+ version: string;
4
+ }>;
@@ -0,0 +1,11 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { readText } from "./fs.js";
4
+ export async function loadAiwsPackage() {
5
+ const here = fileURLToPath(import.meta.url);
6
+ const rootDir = path.resolve(path.dirname(here), "..");
7
+ const pkg = JSON.parse(await readText(path.join(rootDir, "package.json")));
8
+ const version = String(pkg.version || "").trim() || "0.0.0";
9
+ return { rootDir, version };
10
+ }
11
+ //# sourceMappingURL=aiws-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiws-package.js","sourceRoot":"","sources":["../src/aiws-package.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC;IAC5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,48 @@
1
+ /** All AIWS-managed directories live under this subdirectory */
2
+ export declare const AIWS_DIR = ".aiws";
3
+ /** Changes directory: .aiws/changes/ */
4
+ export declare function changesDir(root: string): string;
5
+ /** Single change directory: .aiws/changes/{changeId}/ */
6
+ export declare function changeDir(root: string, changeId: string): string;
7
+ /** Changes archive: .aiws/changes/archive/ */
8
+ export declare function changesArchiveDir(root: string): string;
9
+ /** Changes templates: .aiws/changes/templates/ */
10
+ export declare function changesTemplatesDir(root: string): string;
11
+ /** Tools directory: .aiws/tools/ */
12
+ export declare function toolsDir(root: string): string;
13
+ /** Tmp directory: .aiws/tmp/ */
14
+ export declare function tmpDir(root: string): string;
15
+ /** Plan directory: .aiws/plan/ */
16
+ export declare function planDir(root: string): string;
17
+ /** Requirements directory: .aiws/requirements/ */
18
+ export declare function requirementsDir(root: string): string;
19
+ /** Issues directory: .aiws/issues/ */
20
+ export declare function issuesDir(root: string): string;
21
+ /** Memory-bank directory: .aiws/memory-bank/ */
22
+ export declare function memoryBankDir(root: string): string;
23
+ /** Secrets directory: .aiws/secrets/ */
24
+ export declare function secretsDir(root: string): string;
25
+ export declare const CHANGES_REL = ".aiws/changes";
26
+ export declare const TOOLS_REL = ".aiws/tools";
27
+ export declare const TMP_REL = ".aiws/tmp";
28
+ export declare const PLAN_REL = ".aiws/plan";
29
+ export declare const REQUIREMENTS_REL = ".aiws/requirements";
30
+ export declare const ISSUES_REL = ".aiws/issues";
31
+ export declare const MEMORY_BANK_REL = ".aiws/memory-bank";
32
+ export declare const SECRETS_REL = ".aiws/secrets";
33
+ export declare function validateStampDir(root: string): string;
34
+ export declare function changeSyncStampDir(root: string): string;
35
+ export declare function changeArchiveStampDir(root: string): string;
36
+ export declare function tmpReviewDir(root: string): string;
37
+ export declare function changeJournalDir(root: string, changeId: string): string;
38
+ export declare function changeEvidenceDir(root: string, changeId: string): string;
39
+ export declare function changeReviewDir(root: string, changeId: string): string;
40
+ export declare function changeAnalysisDir(root: string, changeId: string): string;
41
+ export declare function changeRelPrefix(changeId: string): string;
42
+ export declare function changeEvidenceRelPrefix(changeId: string): string;
43
+ export declare function changeReviewRelPrefix(changeId: string): string;
44
+ export declare const REQUIRED_WRITE_ALLOW_PATHS: string[];
45
+ export declare const REQUIRED_DENY_PATHS: string[];
46
+ export declare const WORKSPACE_SIGNAL_REL: string[];
47
+ export declare const DIR_MIGRATION_MAP: Record<string, string>;
48
+ export declare const FILE_MIGRATION_MAP: Record<string, string>;
@@ -0,0 +1,129 @@
1
+ import path from "node:path";
2
+ // ── Base directories (all relative to gitRoot/workspaceRoot) ──
3
+ /** All AIWS-managed directories live under this subdirectory */
4
+ export const AIWS_DIR = ".aiws";
5
+ /** Changes directory: .aiws/changes/ */
6
+ export function changesDir(root) {
7
+ return path.join(root, AIWS_DIR, "changes");
8
+ }
9
+ /** Single change directory: .aiws/changes/{changeId}/ */
10
+ export function changeDir(root, changeId) {
11
+ return path.join(root, AIWS_DIR, "changes", changeId);
12
+ }
13
+ /** Changes archive: .aiws/changes/archive/ */
14
+ export function changesArchiveDir(root) {
15
+ return path.join(root, AIWS_DIR, "changes", "archive");
16
+ }
17
+ /** Changes templates: .aiws/changes/templates/ */
18
+ export function changesTemplatesDir(root) {
19
+ return path.join(root, AIWS_DIR, "changes", "templates");
20
+ }
21
+ /** Tools directory: .aiws/tools/ */
22
+ export function toolsDir(root) {
23
+ return path.join(root, AIWS_DIR, "tools");
24
+ }
25
+ /** Tmp directory: .aiws/tmp/ */
26
+ export function tmpDir(root) {
27
+ return path.join(root, AIWS_DIR, "tmp");
28
+ }
29
+ /** Plan directory: .aiws/plan/ */
30
+ export function planDir(root) {
31
+ return path.join(root, AIWS_DIR, "plan");
32
+ }
33
+ /** Requirements directory: .aiws/requirements/ */
34
+ export function requirementsDir(root) {
35
+ return path.join(root, AIWS_DIR, "requirements");
36
+ }
37
+ /** Issues directory: .aiws/issues/ */
38
+ export function issuesDir(root) {
39
+ return path.join(root, AIWS_DIR, "issues");
40
+ }
41
+ /** Memory-bank directory: .aiws/memory-bank/ */
42
+ export function memoryBankDir(root) {
43
+ return path.join(root, AIWS_DIR, "memory-bank");
44
+ }
45
+ /** Secrets directory: .aiws/secrets/ */
46
+ export function secretsDir(root) {
47
+ return path.join(root, AIWS_DIR, "secrets");
48
+ }
49
+ // ── Relative path segments (for string matching, manifest entries, etc.) ──
50
+ export const CHANGES_REL = ".aiws/changes";
51
+ export const TOOLS_REL = ".aiws/tools";
52
+ export const TMP_REL = ".aiws/tmp";
53
+ export const PLAN_REL = ".aiws/plan";
54
+ export const REQUIREMENTS_REL = ".aiws/requirements";
55
+ export const ISSUES_REL = ".aiws/issues";
56
+ export const MEMORY_BANK_REL = ".aiws/memory-bank";
57
+ export const SECRETS_REL = ".aiws/secrets";
58
+ // ── Tmp sub-paths (for stamps etc.) ──
59
+ export function validateStampDir(root) {
60
+ return path.join(root, AIWS_DIR, "tmp", "aiws-validate");
61
+ }
62
+ export function changeSyncStampDir(root) {
63
+ return path.join(root, AIWS_DIR, "tmp", "change-sync");
64
+ }
65
+ export function changeArchiveStampDir(root) {
66
+ return path.join(root, AIWS_DIR, "tmp", "change-archive");
67
+ }
68
+ export function tmpReviewDir(root) {
69
+ return path.join(root, AIWS_DIR, "tmp", "review");
70
+ }
71
+ // ── Convenience: single change subdir helpers ──
72
+ export function changeJournalDir(root, changeId) {
73
+ return path.join(changeDir(root, changeId), "journal");
74
+ }
75
+ export function changeEvidenceDir(root, changeId) {
76
+ return path.join(changeDir(root, changeId), "evidence");
77
+ }
78
+ export function changeReviewDir(root, changeId) {
79
+ return path.join(changeDir(root, changeId), "review");
80
+ }
81
+ export function changeAnalysisDir(root, changeId) {
82
+ return path.join(changeDir(root, changeId), "analysis");
83
+ }
84
+ // ── Relative prefix strings for analyzeEvidencePaths ──
85
+ export function changeRelPrefix(changeId) {
86
+ return `${CHANGES_REL}/${changeId}/`;
87
+ }
88
+ export function changeEvidenceRelPrefix(changeId) {
89
+ return `${CHANGES_REL}/${changeId}/evidence/`;
90
+ }
91
+ export function changeReviewRelPrefix(changeId) {
92
+ return `${CHANGES_REL}/${changeId}/review/`;
93
+ }
94
+ // ── OpenCode env path constants ──
95
+ export const REQUIRED_WRITE_ALLOW_PATHS = [
96
+ ".aiws/tmp/",
97
+ ".aiws/changes/*/analysis/",
98
+ ".aiws/changes/*/review/",
99
+ ".aiws/changes/*/evidence/",
100
+ ];
101
+ export const REQUIRED_DENY_PATHS = [
102
+ ".aiws/secrets/",
103
+ ".env*",
104
+ ];
105
+ // ── Legacy detection signal paths (for manifest.ts detectLegacyWorkspaceTemplateId) ──
106
+ // These check the NEW layout to detect if workspace is already migrated
107
+ export const WORKSPACE_SIGNAL_REL = [
108
+ "AI_PROJECT.md",
109
+ "REQUIREMENTS.md",
110
+ "AI_WORKSPACE.md",
111
+ ".aiws/tools/ws_change_check.py",
112
+ ".aiws/tools/requirements_contract.py",
113
+ ];
114
+ // ── Migration: old → new directory mapping ──
115
+ export const DIR_MIGRATION_MAP = {
116
+ "changes": ".aiws/changes",
117
+ "tools": ".aiws/tools",
118
+ "requirements": ".aiws/requirements",
119
+ "issues": ".aiws/issues",
120
+ "memory-bank": ".aiws/memory-bank",
121
+ "secrets": ".aiws/secrets",
122
+ ".agentdocs": ".aiws",
123
+ "plan": ".aiws/plan",
124
+ };
125
+ // ── Single file migration ──
126
+ export const FILE_MIGRATION_MAP = {
127
+ ".ws-change.json": ".aiws/ws-change.json",
128
+ };
129
+ //# sourceMappingURL=aiws-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiws-paths.js","sourceRoot":"","sources":["../src/aiws-paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,iEAAiE;AACjE,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC;AAEhC,wCAAwC;AACxC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,QAAgB;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAC3D,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACnD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAC3C,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAC;AACvC,MAAM,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACrD,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AACzC,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;AAE3C,wCAAwC;AACxC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB;IAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,GAAG,WAAW,IAAI,QAAQ,GAAG,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,GAAG,WAAW,IAAI,QAAQ,YAAY,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,OAAO,GAAG,WAAW,IAAI,QAAQ,UAAU,CAAC;AAC9C,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,YAAY;IACZ,2BAA2B;IAC3B,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,gBAAgB;IAChB,OAAO;CACR,CAAC;AAEF,wFAAwF;AACxF,wEAAwE;AACxE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,iBAAiB;IACjB,iBAAiB;IACjB,gCAAgC;IAChC,sCAAsC;CACvC,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,iBAAiB,GAA2B;IACvD,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE,oBAAoB;IACpC,QAAQ,EAAE,cAAc;IACxB,aAAa,EAAE,mBAAmB;IAClC,SAAS,EAAE,eAAe;IAC1B,YAAY,EAAE,OAAO;IACrB,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,iBAAiB,EAAE,sBAAsB;CAC1C,CAAC"}
@@ -0,0 +1,27 @@
1
+ export declare function formatBackupTimestamp(d: Date): string;
2
+ export interface BackupSessionOptions {
3
+ workspaceRoot: string;
4
+ operation: "init" | "update";
5
+ }
6
+ export interface BackupFileInfo {
7
+ existed: boolean;
8
+ mode: number | null;
9
+ }
10
+ export declare class BackupSession {
11
+ workspaceRoot: string;
12
+ operation: "init" | "update";
13
+ timestamp: string;
14
+ backupRoot: string;
15
+ files: Map<string, BackupFileInfo>;
16
+ protected _prepared: boolean;
17
+ constructor(options: BackupSessionOptions);
18
+ _prepare(): Promise<void>;
19
+ recordFile(relPosix: string, options?: {
20
+ recordMissing?: boolean;
21
+ }): Promise<void>;
22
+ finalize(options?: {
23
+ extra?: any;
24
+ }): Promise<string | null>;
25
+ }
26
+ export declare function resolveBackupRoot(workspaceRoot: string, stamp: string): Promise<string>;
27
+ export declare function rollbackFromBackup(workspaceRoot: string, backupRoot: string): Promise<void>;
package/dist/backup.js ADDED
@@ -0,0 +1,125 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { ensureDir, pathExists } from "./fs.js";
4
+ import { joinRel, normalizeRel } from "./path-utils.js";
5
+ import { UserError } from "./errors.js";
6
+ export function formatBackupTimestamp(d) {
7
+ return d.toISOString().replace(/\.\d{3}Z$/, "Z").replaceAll(":", "-");
8
+ }
9
+ export class BackupSession {
10
+ workspaceRoot;
11
+ operation;
12
+ timestamp;
13
+ backupRoot;
14
+ files;
15
+ _prepared;
16
+ constructor(options) {
17
+ this.workspaceRoot = options.workspaceRoot;
18
+ this.operation = options.operation;
19
+ this.timestamp = formatBackupTimestamp(new Date());
20
+ this.backupRoot = path.join(this.workspaceRoot, ".aiws", "backups", this.timestamp);
21
+ this.files = new Map();
22
+ this._prepared = false;
23
+ }
24
+ async _prepare() {
25
+ if (this._prepared)
26
+ return;
27
+ await ensureDir(this.backupRoot);
28
+ this._prepared = true;
29
+ }
30
+ async recordFile(relPosix, options) {
31
+ const rel = normalizeRel(relPosix);
32
+ if (this.files.has(rel))
33
+ return;
34
+ const abs = joinRel(this.workspaceRoot, rel);
35
+ const exists = await pathExists(abs);
36
+ if (!exists) {
37
+ if (options?.recordMissing) {
38
+ this.files.set(rel, { existed: false, mode: null });
39
+ }
40
+ return;
41
+ }
42
+ const st = await fs.stat(abs);
43
+ if (!st.isFile()) {
44
+ if (options?.recordMissing)
45
+ this.files.set(rel, { existed: false, mode: null });
46
+ return;
47
+ }
48
+ await this._prepare();
49
+ const dest = joinRel(this.backupRoot, rel);
50
+ await ensureDir(path.dirname(dest));
51
+ await fs.copyFile(abs, dest);
52
+ try {
53
+ await fs.chmod(dest, st.mode & 0o777);
54
+ }
55
+ catch {
56
+ // ignore chmod errors
57
+ }
58
+ this.files.set(rel, { existed: true, mode: st.mode & 0o777 });
59
+ }
60
+ async finalize(options) {
61
+ if (!this._prepared && this.files.size === 0)
62
+ return null;
63
+ await this._prepare();
64
+ const meta = {
65
+ operation: this.operation,
66
+ timestamp: this.timestamp,
67
+ created_at: new Date().toISOString(),
68
+ files: Array.from(this.files.entries()).map(([p, v]) => ({ path: p, existed: v.existed, mode: v.mode })),
69
+ extra: options?.extra ?? null,
70
+ };
71
+ await fs.writeFile(path.join(this.backupRoot, "backup.json"), JSON.stringify(meta, null, 2) + "\n", "utf8");
72
+ return this.backupRoot;
73
+ }
74
+ }
75
+ export async function resolveBackupRoot(workspaceRoot, stamp) {
76
+ const backupsRoot = path.join(workspaceRoot, ".aiws", "backups");
77
+ if (stamp === "latest") {
78
+ if (!(await pathExists(backupsRoot)))
79
+ throw new UserError("No backups found.");
80
+ const entries = await fs.readdir(backupsRoot, { withFileTypes: true });
81
+ const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name).sort();
82
+ const latest = dirs[dirs.length - 1];
83
+ if (!latest)
84
+ throw new UserError("No backups found.");
85
+ return path.join(backupsRoot, latest);
86
+ }
87
+ const target = path.join(backupsRoot, stamp);
88
+ if (!(await pathExists(target))) {
89
+ throw new UserError(`Backup not found: ${stamp}`, { details: `Missing: ${target}` });
90
+ }
91
+ return target;
92
+ }
93
+ export async function rollbackFromBackup(workspaceRoot, backupRoot) {
94
+ const metaPath = path.join(backupRoot, "backup.json");
95
+ if (!(await pathExists(metaPath))) {
96
+ throw new UserError("backup.json not found; cannot rollback safely.", { details: `Missing: ${metaPath}` });
97
+ }
98
+ const meta = JSON.parse(await fs.readFile(metaPath, "utf8"));
99
+ const files = Array.isArray(meta.files) ? meta.files : [];
100
+ for (const f of files) {
101
+ const rel = normalizeRel(String(f.path || ""));
102
+ if (!rel)
103
+ continue;
104
+ const dest = joinRel(workspaceRoot, rel);
105
+ if (f.existed) {
106
+ const src = joinRel(backupRoot, rel);
107
+ await ensureDir(path.dirname(dest));
108
+ await fs.copyFile(src, dest);
109
+ if (typeof f.mode === "number") {
110
+ try {
111
+ await fs.chmod(dest, f.mode);
112
+ }
113
+ catch {
114
+ // ignore chmod errors
115
+ }
116
+ }
117
+ }
118
+ else {
119
+ if (await pathExists(dest)) {
120
+ await fs.rm(dest, { force: true });
121
+ }
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../src/backup.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function cliMain(argv: string[]): Promise<number>;