@aipper/aiws 0.0.32 → 0.0.34

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 (40) hide show
  1. package/README.md +3 -11
  2. package/dist/cli.js +1 -118
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/change-advice.js +6 -6
  5. package/dist/commands/change-advice.js.map +1 -1
  6. package/dist/commands/change-evidence-command.js +0 -2
  7. package/dist/commands/change-evidence-command.js.map +1 -1
  8. package/dist/commands/change-next-command.js +10 -2
  9. package/dist/commands/change-next-command.js.map +1 -1
  10. package/dist/commands/change-review-gates.js +1 -9
  11. package/dist/commands/change-review-gates.js.map +1 -1
  12. package/dist/commands/change-utils.d.ts +108 -0
  13. package/dist/commands/change-utils.js +287 -0
  14. package/dist/commands/change-utils.js.map +1 -0
  15. package/dist/commands/change.d.ts +1 -4
  16. package/dist/commands/change.js +31 -296
  17. package/dist/commands/change.js.map +1 -1
  18. package/dist/commands/init.js +1 -6
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/opencode-auto.js +0 -1
  21. package/dist/commands/opencode-auto.js.map +1 -1
  22. package/dist/commands/opencode-status.js +1 -2
  23. package/dist/commands/opencode-status.js.map +1 -1
  24. package/dist/commands/update.js +1 -5
  25. package/dist/commands/update.js.map +1 -1
  26. package/dist/commands/ws-commit.js +18 -9
  27. package/dist/commands/ws-commit.js.map +1 -1
  28. package/dist/commands/ws-finish.js +28 -3
  29. package/dist/commands/ws-finish.js.map +1 -1
  30. package/dist/commands/ws-plan-verify.js +7 -5
  31. package/dist/commands/ws-plan-verify.js.map +1 -1
  32. package/dist/commands/ws-verify-before-complete.d.ts +3 -2
  33. package/dist/commands/ws-verify-before-complete.js +24 -5
  34. package/dist/commands/ws-verify-before-complete.js.map +1 -1
  35. package/dist/governance.js +3 -3
  36. package/dist/governance.js.map +1 -1
  37. package/dist/opencode-env.d.ts +0 -3
  38. package/dist/opencode-env.js +0 -6
  39. package/dist/opencode-env.js.map +1 -1
  40. package/package.json +2 -2
@@ -0,0 +1,108 @@
1
+ /**
2
+ * @param {string} gitRoot
3
+ * @param {string} changeId
4
+ */
5
+ export declare function changeDirAbs(gitRoot: string, changeId: string): string;
6
+ export declare const CHANGE_BRANCH_RE: RegExp;
7
+ export declare const CHANGE_ID_RE: RegExp;
8
+ /**
9
+ * @param {string} changeId
10
+ */
11
+ export declare function assertValidChangeId(changeId: string): void;
12
+ /**
13
+ * @param {string} branch
14
+ */
15
+ export declare function inferChangeIdFromBranch(branch: string): string;
16
+ /**
17
+ * @param {string} text
18
+ */
19
+ export declare function countWsTodo(text: string): number;
20
+ /**
21
+ * @param {string} text
22
+ */
23
+ export declare function countPlaceholders(text: string): number;
24
+ /**
25
+ * @param {string} templateText
26
+ * @param {{ changeId: string, title: string, createdAt: string }} vars
27
+ */
28
+ export declare function renderTemplate(templateText: string, vars: any): string;
29
+ /**
30
+ * @param {string} s
31
+ */
32
+ export declare function escapeRegExp(s: string): string;
33
+ /**
34
+ * @param {string} label
35
+ * @param {string} text
36
+ */
37
+ export declare function extractId(label: string, text: string): string;
38
+ /**
39
+ * @param {string} s
40
+ */
41
+ export declare function splitDeclaredValues(s: string): string[];
42
+ /**
43
+ * Extract bullet lines under a markdown "## ..." heading.
44
+ *
45
+ * @param {string} text
46
+ * @param {RegExp} headingRe
47
+ * @param {{ max?: number }} [options]
48
+ * @returns {string[]} trimmed bullet lines like "- foo"
49
+ */
50
+ export declare function extractBulletsUnderHeading(text: string, headingRe: RegExp, options: any): string[];
51
+ /**
52
+ * @param {string} bulletLine
53
+ */
54
+ export declare function isMeaningfulBullet(bulletLine: string): boolean;
55
+ /**
56
+ * @returns {string} e.g. 2026-01-28T14:00:26Z
57
+ */
58
+ export declare function nowIsoUtc(): string;
59
+ /**
60
+ * @returns {number} unix seconds
61
+ */
62
+ export declare function nowUnixSeconds(): number;
63
+ /**
64
+ * @returns {string} e.g. 20260128-140026Z
65
+ */
66
+ export declare function nowStampUtc(): string;
67
+ /**
68
+ * @returns {string} e.g. 2026-01-28 (local date)
69
+ */
70
+ export declare function todayLocal(): string;
71
+ /**
72
+ * @param {string} filePath
73
+ * @returns {Promise<string>}
74
+ */
75
+ export declare function sha256FileBytes(filePath: string): Promise<string>;
76
+ /**
77
+ * @param {string} gitRoot
78
+ * @returns {Promise<Record<string, {mtime: number, sha256: string}>>}
79
+ */
80
+ export declare function snapshotTruthFiles(gitRoot: string): Promise<Record<string, {
81
+ mtime: number;
82
+ sha256: string;
83
+ }>>;
84
+ /**
85
+ * @param {string} gitRoot
86
+ * @returns {Promise<Record<string, string | null>>}
87
+ */
88
+ export declare function snapshotTruthShaOnly(gitRoot: string): Promise<Record<string, string | null>>;
89
+ /**
90
+ * @param {string} entryName
91
+ * @returns {{ datePrefix: string, changeId: string, stamp: string } | null}
92
+ */
93
+ export declare function parseArchivedChangeDirName(entryName: string): {
94
+ datePrefix: string;
95
+ changeId: string;
96
+ stamp: string;
97
+ } | null;
98
+ export declare function resolveGitRoot(absPath: string): Promise<string>;
99
+ export declare function currentBranch(gitRoot: string): Promise<string>;
100
+ export declare function hasHeadCommit(gitRoot: string): Promise<boolean>;
101
+ export declare function checkGitClean(gitRoot: string): Promise<{
102
+ clean: boolean;
103
+ details?: undefined;
104
+ } | {
105
+ clean: boolean;
106
+ details: string;
107
+ }>;
108
+ export declare function ensureTruthFiles(gitRoot: string): Promise<void>;
@@ -0,0 +1,287 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs/promises";
3
+ import crypto from "node:crypto";
4
+ import { runCommand } from "../exec.js";
5
+ import { pathExists } from "../fs.js";
6
+ import { UserError } from "../errors.js";
7
+ // ---------------------------------------------------------------------------
8
+ // change path / ID helpers
9
+ // ---------------------------------------------------------------------------
10
+ /**
11
+ * @param {string} gitRoot
12
+ * @param {string} changeId
13
+ */
14
+ export function changeDirAbs(gitRoot, changeId) {
15
+ return path.join(gitRoot, ".aiws", "changes", changeId);
16
+ }
17
+ export const CHANGE_BRANCH_RE = /^(change|changes|ws|ws-change)\/([a-z0-9]+(?:-[a-z0-9]+)*)$/;
18
+ export const CHANGE_ID_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
19
+ /**
20
+ * @param {string} changeId
21
+ */
22
+ export function assertValidChangeId(changeId) {
23
+ if (!changeId || !CHANGE_ID_RE.test(changeId)) {
24
+ throw new UserError(`Invalid change id (use kebab-case): ${changeId}`);
25
+ }
26
+ }
27
+ /**
28
+ * @param {string} branch
29
+ */
30
+ export function inferChangeIdFromBranch(branch) {
31
+ const m = CHANGE_BRANCH_RE.exec(branch || "");
32
+ return m?.[2] || "";
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // text/task helpers
36
+ // ---------------------------------------------------------------------------
37
+ /**
38
+ * @param {string} text
39
+ */
40
+ export function countWsTodo(text) {
41
+ return (text.match(/WS:TODO/g) || []).length;
42
+ }
43
+ /**
44
+ * @param {string} text
45
+ */
46
+ export function countPlaceholders(text) {
47
+ return (text.match(/{{CHANGE_ID}}|{{TITLE}}|{{CREATED_AT}}/g) || []).length;
48
+ }
49
+ /**
50
+ * @param {string} templateText
51
+ * @param {{ changeId: string, title: string, createdAt: string }} vars
52
+ */
53
+ export function renderTemplate(templateText, vars) {
54
+ return templateText.replaceAll("{{CHANGE_ID}}", vars.changeId).replaceAll("{{TITLE}}", vars.title).replaceAll("{{CREATED_AT}}", vars.createdAt);
55
+ }
56
+ /**
57
+ * @param {string} s
58
+ */
59
+ export function escapeRegExp(s) {
60
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
61
+ }
62
+ /**
63
+ * @param {string} label
64
+ * @param {string} text
65
+ */
66
+ export function extractId(label, text) {
67
+ const re = new RegExp(`^.*${escapeRegExp(label)}.*?[:=][ \\t]*(.*)$`, "m");
68
+ const m = re.exec(text);
69
+ if (!m)
70
+ return "";
71
+ let v = String(m[1] || "").trim();
72
+ v = v.replace(/<!--.*?-->/g, "").trim();
73
+ v = v.replace(/^`+/, "").replace(/`+$/, "").trim();
74
+ return v;
75
+ }
76
+ /**
77
+ * @param {string} s
78
+ */
79
+ export function splitDeclaredValues(s) {
80
+ return String(s || "")
81
+ .split(/[,;\n]+/g)
82
+ .map((x) => x.trim().replace(/^`+/, "").replace(/`+$/, "").trim())
83
+ .filter(Boolean);
84
+ }
85
+ /**
86
+ * Extract bullet lines under a markdown "## ..." heading.
87
+ *
88
+ * @param {string} text
89
+ * @param {RegExp} headingRe
90
+ * @param {{ max?: number }} [options]
91
+ * @returns {string[]} trimmed bullet lines like "- foo"
92
+ */
93
+ export function extractBulletsUnderHeading(text, headingRe, options) {
94
+ const max = typeof options?.max === "number" ? options.max : 5;
95
+ const lines = String(text || "").split("\n");
96
+ let inSection = false;
97
+ /** @type {string[]} */
98
+ const out = [];
99
+ for (const raw of lines) {
100
+ const line = String(raw || "");
101
+ const trimmed = line.trim();
102
+ if (!inSection) {
103
+ if (headingRe.test(trimmed))
104
+ inSection = true;
105
+ continue;
106
+ }
107
+ if (/^##\s+/.test(trimmed))
108
+ break;
109
+ if (trimmed.startsWith("-")) {
110
+ out.push(trimmed);
111
+ if (out.length >= max)
112
+ break;
113
+ }
114
+ }
115
+ return out;
116
+ }
117
+ /**
118
+ * @param {string} bulletLine
119
+ */
120
+ export function isMeaningfulBullet(bulletLine) {
121
+ const s = String(bulletLine || "").trim();
122
+ if (!s.startsWith("-"))
123
+ return false;
124
+ if (s.includes("WS:TODO"))
125
+ return false;
126
+ if (s.includes("<!--"))
127
+ return false;
128
+ if (s === "-" || s === "- (none)" || s === "- (missing)")
129
+ return false;
130
+ return true;
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // date / time helpers
134
+ // ---------------------------------------------------------------------------
135
+ /**
136
+ * @returns {string} e.g. 2026-01-28T14:00:26Z
137
+ */
138
+ export function nowIsoUtc() {
139
+ return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
140
+ }
141
+ /**
142
+ * @returns {number} unix seconds
143
+ */
144
+ export function nowUnixSeconds() {
145
+ return Math.floor(Date.now() / 1000);
146
+ }
147
+ /**
148
+ * @returns {string} e.g. 20260128-140026Z
149
+ */
150
+ export function nowStampUtc() {
151
+ const d = new Date();
152
+ const y = String(d.getUTCFullYear());
153
+ const m = String(d.getUTCMonth() + 1).padStart(2, "0");
154
+ const day = String(d.getUTCDate()).padStart(2, "0");
155
+ const hh = String(d.getUTCHours()).padStart(2, "0");
156
+ const mm = String(d.getUTCMinutes()).padStart(2, "0");
157
+ const ss = String(d.getUTCSeconds()).padStart(2, "0");
158
+ return `${y}${m}${day}-${hh}${mm}${ss}Z`;
159
+ }
160
+ /**
161
+ * @returns {string} e.g. 2026-01-28 (local date)
162
+ */
163
+ export function todayLocal() {
164
+ const d = new Date();
165
+ const y = String(d.getFullYear());
166
+ const m = String(d.getMonth() + 1).padStart(2, "0");
167
+ const day = String(d.getDate()).padStart(2, "0");
168
+ return `${y}-${m}-${day}`;
169
+ }
170
+ // ---------------------------------------------------------------------------
171
+ // hash / file helpers
172
+ // ---------------------------------------------------------------------------
173
+ /**
174
+ * @param {string} filePath
175
+ * @returns {Promise<string>}
176
+ */
177
+ export async function sha256FileBytes(filePath) {
178
+ const buf = await fs.readFile(filePath);
179
+ return crypto.createHash("sha256").update(buf).digest("hex");
180
+ }
181
+ /**
182
+ * @param {string} gitRoot
183
+ * @returns {Promise<Record<string, {mtime: number, sha256: string}>>}
184
+ */
185
+ export async function snapshotTruthFiles(gitRoot) {
186
+ const truth = {};
187
+ for (const rel of ["AI_PROJECT.md", "AI_WORKSPACE.md", "REQUIREMENTS.md"]) {
188
+ const abs = path.join(gitRoot, rel);
189
+ if (!(await pathExists(abs)))
190
+ continue;
191
+ const st = await fs.stat(abs);
192
+ truth[rel] = { mtime: Math.floor(st.mtimeMs / 1000), sha256: await sha256FileBytes(abs) };
193
+ }
194
+ return truth;
195
+ }
196
+ /**
197
+ * @param {string} gitRoot
198
+ * @returns {Promise<Record<string, string | null>>}
199
+ */
200
+ export async function snapshotTruthShaOnly(gitRoot) {
201
+ const out = {};
202
+ for (const rel of ["AI_PROJECT.md", "AI_WORKSPACE.md", "REQUIREMENTS.md"]) {
203
+ const abs = path.join(gitRoot, rel);
204
+ if (!(await pathExists(abs))) {
205
+ out[rel] = null;
206
+ continue;
207
+ }
208
+ try {
209
+ out[rel] = await sha256FileBytes(abs);
210
+ }
211
+ catch {
212
+ out[rel] = null;
213
+ }
214
+ }
215
+ return out;
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // archive helpers
219
+ // ---------------------------------------------------------------------------
220
+ /**
221
+ * @param {string} entryName
222
+ * @returns {{ datePrefix: string, changeId: string, stamp: string } | null}
223
+ */
224
+ export function parseArchivedChangeDirName(entryName) {
225
+ const m = /^(\d{4}-\d{2}-\d{2})-(.+?)(?:-(\d{8}-\d{6}Z))?$/.exec(String(entryName || ""));
226
+ if (!m)
227
+ return null;
228
+ const changeId = m[2] || "";
229
+ if (!CHANGE_ID_RE.test(changeId))
230
+ return null;
231
+ return {
232
+ datePrefix: m[1] || "",
233
+ changeId,
234
+ stamp: m[3] || "",
235
+ };
236
+ }
237
+ // ---------------------------------------------------------------------------
238
+ // git / env helpers
239
+ // ---------------------------------------------------------------------------
240
+ export async function resolveGitRoot(absPath) {
241
+ let res;
242
+ try {
243
+ res = await runCommand("git", ["rev-parse", "--show-toplevel"], { cwd: absPath });
244
+ }
245
+ catch (e) {
246
+ throw new UserError("git is required for aiws change commands.", { details: e instanceof Error ? e.message : String(e) });
247
+ }
248
+ if (res.code !== 0) {
249
+ throw new UserError("Not a git repository.", { details: res.stderr || res.stdout });
250
+ }
251
+ const root = String(res.stdout || "").trim();
252
+ if (!root)
253
+ throw new UserError("Failed to resolve git repository root.");
254
+ return root;
255
+ }
256
+ export async function currentBranch(gitRoot) {
257
+ const res = await runCommand("git", ["symbolic-ref", "--quiet", "--short", "HEAD"], { cwd: gitRoot });
258
+ if (res.code !== 0)
259
+ return "";
260
+ return String(res.stdout || "").trim();
261
+ }
262
+ export async function hasHeadCommit(gitRoot) {
263
+ return runCommand("git", ["rev-parse", "--verify", "HEAD"], { cwd: gitRoot }).then((r) => r.code === 0);
264
+ }
265
+ export async function checkGitClean(gitRoot) {
266
+ const res = await runCommand("git", ["status", "--porcelain"], { cwd: gitRoot });
267
+ const out = String(res.stdout || "").trim();
268
+ if (!out)
269
+ return { clean: true };
270
+ const lines = out.split("\n");
271
+ const truncated = lines.length > 20 ? `${lines.slice(0, 20).join("\n")}\n... (truncated)` : out;
272
+ return { clean: false, details: truncated };
273
+ }
274
+ export async function ensureTruthFiles(gitRoot) {
275
+ const required = ["AI_PROJECT.md", "AI_WORKSPACE.md", "REQUIREMENTS.md"];
276
+ const missing = [];
277
+ for (const f of required) {
278
+ if (!(await pathExists(path.join(gitRoot, f))))
279
+ missing.push(f);
280
+ }
281
+ if (missing.length > 0) {
282
+ throw new UserError("AI Workspace truth files missing.", {
283
+ details: `Root: ${gitRoot}\nMissing:\n${missing.map((m) => `- ${m}`).join("\n")}\n\nHint: run \`aiws init .\` (new) or \`aiws update .\` (migrate).`,
284
+ });
285
+ }
286
+ }
287
+ //# sourceMappingURL=change-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-utils.js","sourceRoot":"","sources":["../../src/commands/change-utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,4 @@
1
- /**
2
- * @param {string} changeId
3
- */
4
- export declare function assertValidChangeId(changeId: string): void;
1
+ export { assertValidChangeId } from "./change-utils.js";
5
2
  export declare function computeChangeStatus(gitRoot: any, changeId: any): Promise<{
6
3
  governance: {
7
4
  warning: string;