@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.
- package/README.md +3 -11
- package/dist/cli.js +1 -118
- package/dist/cli.js.map +1 -1
- package/dist/commands/change-advice.js +6 -6
- package/dist/commands/change-advice.js.map +1 -1
- package/dist/commands/change-evidence-command.js +0 -2
- package/dist/commands/change-evidence-command.js.map +1 -1
- package/dist/commands/change-next-command.js +10 -2
- package/dist/commands/change-next-command.js.map +1 -1
- package/dist/commands/change-review-gates.js +1 -9
- package/dist/commands/change-review-gates.js.map +1 -1
- package/dist/commands/change-utils.d.ts +108 -0
- package/dist/commands/change-utils.js +287 -0
- package/dist/commands/change-utils.js.map +1 -0
- package/dist/commands/change.d.ts +1 -4
- package/dist/commands/change.js +31 -296
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/init.js +1 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/opencode-auto.js +0 -1
- package/dist/commands/opencode-auto.js.map +1 -1
- package/dist/commands/opencode-status.js +1 -2
- package/dist/commands/opencode-status.js.map +1 -1
- package/dist/commands/update.js +1 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/ws-commit.js +18 -9
- package/dist/commands/ws-commit.js.map +1 -1
- package/dist/commands/ws-finish.js +28 -3
- package/dist/commands/ws-finish.js.map +1 -1
- package/dist/commands/ws-plan-verify.js +7 -5
- package/dist/commands/ws-plan-verify.js.map +1 -1
- package/dist/commands/ws-verify-before-complete.d.ts +3 -2
- package/dist/commands/ws-verify-before-complete.js +24 -5
- package/dist/commands/ws-verify-before-complete.js.map +1 -1
- package/dist/governance.js +3 -3
- package/dist/governance.js.map +1 -1
- package/dist/opencode-env.d.ts +0 -3
- package/dist/opencode-env.js +0 -6
- package/dist/opencode-env.js.map +1 -1
- 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;
|