@ai-dossier/cli 0.13.0 → 0.18.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.
- package/README.md +236 -6
- package/dist/cache-resolver.d.ts.map +1 -1
- package/dist/cache-resolver.js +2 -11
- package/dist/cache-resolver.js.map +1 -1
- package/dist/cap-log.d.ts +31 -0
- package/dist/cap-log.d.ts.map +1 -0
- package/dist/cap-log.js +30 -0
- package/dist/cap-log.js.map +1 -0
- package/dist/capability.d.ts +108 -0
- package/dist/capability.d.ts.map +1 -0
- package/dist/capability.js +407 -0
- package/dist/capability.js.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/cap.d.ts +13 -0
- package/dist/commands/cap.d.ts.map +1 -0
- package/dist/commands/cap.js +105 -0
- package/dist/commands/cap.js.map +1 -0
- package/dist/commands/plan.d.ts +20 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +323 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/runstate.d.ts.map +1 -1
- package/dist/commands/runstate.js +56 -292
- package/dist/commands/runstate.js.map +1 -1
- package/dist/commands/sched.d.ts +11 -0
- package/dist/commands/sched.d.ts.map +1 -0
- package/dist/commands/sched.js +402 -0
- package/dist/commands/sched.js.map +1 -0
- package/dist/gh.d.ts +155 -0
- package/dist/gh.d.ts.map +1 -0
- package/dist/gh.js +357 -0
- package/dist/gh.js.map +1 -0
- package/dist/helpers.d.ts +7 -0
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +19 -0
- package/dist/helpers.js.map +1 -1
- package/dist/issue-selection.js +2 -2
- package/dist/issue-selection.js.map +1 -1
- package/dist/jsonl-log.d.ts +14 -0
- package/dist/jsonl-log.d.ts.map +1 -0
- package/dist/jsonl-log.js +32 -0
- package/dist/jsonl-log.js.map +1 -0
- package/dist/plan-artifact.d.ts +123 -0
- package/dist/plan-artifact.d.ts.map +1 -0
- package/dist/plan-artifact.js +213 -0
- package/dist/plan-artifact.js.map +1 -0
- package/dist/run-log.d.ts.map +1 -1
- package/dist/run-log.js +2 -9
- package/dist/run-log.js.map +1 -1
- package/dist/runstate-stats.d.ts +12 -3
- package/dist/runstate-stats.d.ts.map +1 -1
- package/dist/runstate-stats.js +33 -14
- package/dist/runstate-stats.js.map +1 -1
- package/dist/runstate.d.ts +87 -13
- package/dist/runstate.d.ts.map +1 -1
- package/dist/runstate.js +195 -25
- package/dist/runstate.js.map +1 -1
- package/dist/version.d.ts +10 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ai-dossier plan` — post, read, and validate `plan:v1` artifacts on a GitHub issue.
|
|
4
|
+
*
|
|
5
|
+
* One canonical per-issue plan (#462, RFC-0001 C.6): posting is append-only (a new post
|
|
6
|
+
* supersedes — readers always take the LAST plan:v1 comment), reading is `get`, and
|
|
7
|
+
* `validate` runs the deterministic checks — referenced files exist at HEAD, head-distance,
|
|
8
|
+
* risk-floor path scan — with no model call anywhere.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.registerPlanCommand = registerPlanCommand;
|
|
15
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
16
|
+
const gh_1 = require("../gh");
|
|
17
|
+
const plan_artifact_1 = require("../plan-artifact");
|
|
18
|
+
/**
|
|
19
|
+
* snake_case JSON keys for section content, pinned by the format spec. Predicted Files
|
|
20
|
+
* is deliberately absent: its JSON key carries the extracted path ARRAY, not the raw
|
|
21
|
+
* section markdown, so it is assigned once outside this map.
|
|
22
|
+
*/
|
|
23
|
+
const SECTION_JSON_KEYS = {
|
|
24
|
+
Problem: 'problem',
|
|
25
|
+
'Acceptance Criteria': 'acceptance_criteria',
|
|
26
|
+
Approach: 'approach',
|
|
27
|
+
'Test Scope': 'test_scope',
|
|
28
|
+
};
|
|
29
|
+
/** `git cat-file -e` exits 1 for "no such object at HEAD" — an answer, not a fault. */
|
|
30
|
+
const GIT_NO_SUCH_OBJECT = 1;
|
|
31
|
+
/** Characters kept when quoting a network-derived path inside an error message. */
|
|
32
|
+
const PATH_SNIPPET_LENGTH = 80;
|
|
33
|
+
/** Author associations GitHub treats as having write access to the repository. */
|
|
34
|
+
const WRITE_ACCESS_ASSOCIATIONS = new Set(['MEMBER', 'OWNER', 'COLLABORATOR', 'BOT']);
|
|
35
|
+
/** Read the plan file, exiting with the errno when it cannot be read. */
|
|
36
|
+
function readPlanFile(file) {
|
|
37
|
+
try {
|
|
38
|
+
return node_fs_1.default.readFileSync(file, 'utf8');
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
const e = err;
|
|
42
|
+
(0, gh_1.fail)([
|
|
43
|
+
`Could not read plan file '${file}': ${e.code ?? 'error'} — ${(0, gh_1.snippet)(e.message, PATH_SNIPPET_LENGTH)}.`,
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/** Resolve the `head=` stamp: the `--head` override, else the repo's current HEAD. */
|
|
48
|
+
function resolveHead(override) {
|
|
49
|
+
if (override !== undefined)
|
|
50
|
+
return override;
|
|
51
|
+
const res = (0, gh_1.exec)('git', ['rev-parse', '--short', 'HEAD']);
|
|
52
|
+
if (!res.ok) {
|
|
53
|
+
(0, gh_1.fail)([
|
|
54
|
+
[
|
|
55
|
+
`Could not stamp head= — 'git rev-parse --short HEAD' failed.`,
|
|
56
|
+
`Fix: run from inside the repository the plan targets, or pass --head <sha> explicitly.`,
|
|
57
|
+
].join('\n'),
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
return res.stdout;
|
|
61
|
+
}
|
|
62
|
+
/** Find the canonical (latest) plan on an issue, or `null` when none exists. */
|
|
63
|
+
function fetchLatestPlan(issue, repo) {
|
|
64
|
+
const result = (0, gh_1.tryFetchComments)(issue, repo);
|
|
65
|
+
if (!result.ok)
|
|
66
|
+
(0, gh_1.fail)([result.error]);
|
|
67
|
+
const bodies = result.comments.map((c) => (typeof c?.body === 'string' ? c.body : ''));
|
|
68
|
+
const latest = (0, plan_artifact_1.findLatestPlan)(bodies);
|
|
69
|
+
if (latest === null)
|
|
70
|
+
return null;
|
|
71
|
+
const comment = result.comments[latest.index];
|
|
72
|
+
return {
|
|
73
|
+
artifact: latest.artifact,
|
|
74
|
+
url: (0, gh_1.asString)(comment?.url),
|
|
75
|
+
createdAt: (0, gh_1.asString)(comment?.createdAt),
|
|
76
|
+
author: (0, gh_1.asString)(comment?.author?.login),
|
|
77
|
+
authorAssociation: (0, gh_1.asString)(comment?.authorAssociation),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/** `plan post` — validate a markdown file, stamp it with head=, comment it onto the issue. */
|
|
81
|
+
function registerPostSubcommand(cmd) {
|
|
82
|
+
cmd
|
|
83
|
+
.command('post')
|
|
84
|
+
.description('Post a plan:v1 artifact comment (validates sections first; supersedes = append)')
|
|
85
|
+
.requiredOption('--issue <number>', 'GitHub issue number')
|
|
86
|
+
.requiredOption('--file <path>', 'Markdown file with the five required sections')
|
|
87
|
+
.option('--head <sha>', 'Override the head= stamp (defaults to current HEAD)')
|
|
88
|
+
.option('--repo <owner/name>', 'Target repository (defaults to the current one)')
|
|
89
|
+
.option('--dry-run', 'Print the comment body without posting it')
|
|
90
|
+
.option('--json', 'Output the result as JSON')
|
|
91
|
+
.action((options) => {
|
|
92
|
+
(0, gh_1.requireIssueTarget)(options);
|
|
93
|
+
const markdown = readPlanFile(options.file);
|
|
94
|
+
const sectionErrors = (0, plan_artifact_1.validateArtifactBody)(markdown);
|
|
95
|
+
if (sectionErrors.length > 0) {
|
|
96
|
+
(0, gh_1.fail)([
|
|
97
|
+
[
|
|
98
|
+
`Plan file '${options.file}' is not a postable plan:v1 artifact.`,
|
|
99
|
+
'Fix: give it all five sections — ' +
|
|
100
|
+
plan_artifact_1.PLAN_SECTIONS.map((s) => `## ${s}`).join(', ') +
|
|
101
|
+
' — as documented in docs/reference/plan-artifact.md.',
|
|
102
|
+
].join('\n'),
|
|
103
|
+
...sectionErrors,
|
|
104
|
+
]);
|
|
105
|
+
}
|
|
106
|
+
const head = resolveHead(options.head);
|
|
107
|
+
if (!(0, plan_artifact_1.isHeadSha)(head)) {
|
|
108
|
+
(0, gh_1.fail)([
|
|
109
|
+
`Invalid head '${(0, gh_1.snippet)(head, PATH_SNIPPET_LENGTH)}' — expected 7-40 lowercase hex characters, as printed by 'git rev-parse --short HEAD' (e.g. abc1234).\nFix: a plan posted with a malformed head= can never be read back — get and validate would silently ignore it.`,
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
const body = (0, plan_artifact_1.buildPlanComment)(head, markdown);
|
|
113
|
+
if (body.length > plan_artifact_1.MAX_ARTIFACT_BODY_LENGTH) {
|
|
114
|
+
(0, gh_1.fail)([
|
|
115
|
+
[
|
|
116
|
+
`Plan is ${body.length} characters — GitHub rejects an issue comment over ${plan_artifact_1.MAX_ARTIFACT_BODY_LENGTH}.`,
|
|
117
|
+
`Fix: trim the plan; an artifact is a plan, not a report — details belong in linked documents.`,
|
|
118
|
+
].join('\n'),
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
if (options.dryRun) {
|
|
122
|
+
(0, gh_1.printDryRun)(body, options.json, { head });
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
(0, gh_1.postIssueComment)({
|
|
126
|
+
issue: options.issue,
|
|
127
|
+
repo: options.repo,
|
|
128
|
+
body,
|
|
129
|
+
noun: 'plan',
|
|
130
|
+
action: `Failed to post the plan artifact to issue #${options.issue}`,
|
|
131
|
+
json: options.json,
|
|
132
|
+
jsonExtras: { head },
|
|
133
|
+
successLine: (url) => `✅ plan:v1 head=${head} → ${url}`,
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Whether `git cat-file -e HEAD:<path>` says the path exists at HEAD, or why git could
|
|
139
|
+
* not answer. A path that failed the {@link isSafeArg} guard never reaches git: marker
|
|
140
|
+
* values are network-reachable, and a `-`-prefixed or spaced value would be read as a
|
|
141
|
+
* flag or split into arguments.
|
|
142
|
+
*/
|
|
143
|
+
function fileExistsAtHead(path) {
|
|
144
|
+
if (!(0, gh_1.isSafeArg)(path)) {
|
|
145
|
+
return {
|
|
146
|
+
ok: false,
|
|
147
|
+
error: `'${(0, gh_1.snippet)(path, PATH_SNIPPET_LENGTH)}' is not a usable path (flag-like, spaced, or control characters)`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const res = (0, gh_1.exec)('git', ['cat-file', '-e', `HEAD:${path}`]);
|
|
151
|
+
if (res.ok)
|
|
152
|
+
return { ok: true, exists: true };
|
|
153
|
+
if (res.error.status === GIT_NO_SUCH_OBJECT)
|
|
154
|
+
return { ok: true, exists: false };
|
|
155
|
+
return { ok: false, error: (0, gh_1.gitFailure)(res.error) };
|
|
156
|
+
}
|
|
157
|
+
/** Commits between the artifact's `head=` and the local HEAD, or why git could not answer. */
|
|
158
|
+
function headDistance(head) {
|
|
159
|
+
if (!(0, gh_1.isSafeArg)(head)) {
|
|
160
|
+
return { ok: false, error: `head='${(0, gh_1.snippet)(head, PATH_SNIPPET_LENGTH)}' is not a usable sha` };
|
|
161
|
+
}
|
|
162
|
+
const res = (0, gh_1.exec)('git', ['rev-list', '--count', `${head}..HEAD`]);
|
|
163
|
+
if (!res.ok) {
|
|
164
|
+
return { ok: false, error: (0, gh_1.gitFailure)(res.error) };
|
|
165
|
+
}
|
|
166
|
+
const count = Number(res.stdout);
|
|
167
|
+
// A count line that is not a number means git answered something we did not ask —
|
|
168
|
+
// report it rather than letting NaN silently read as "distance 0".
|
|
169
|
+
if (!Number.isInteger(count) || count < 0) {
|
|
170
|
+
return { ok: false, error: `git printed a non-numeric count: ${(0, gh_1.snippet)(res.stdout)}` };
|
|
171
|
+
}
|
|
172
|
+
return { ok: true, count };
|
|
173
|
+
}
|
|
174
|
+
/** Strip terminal-control characters — comment bodies are network-reachable. */
|
|
175
|
+
// biome-ignore lint/suspicious/noControlCharactersInRegex: matching (and stripping) control characters is exactly this regex's job
|
|
176
|
+
const CONTROL_CHARS_RE = /[\u0000-\u0008\u000b-\u001f\u007f\u009b]/g;
|
|
177
|
+
/**
|
|
178
|
+
* The deterministic per-artifact checks: sections, predicted-file existence at HEAD,
|
|
179
|
+
* head-distance, and the risk-floor scan. Pure assembly — every probe failure degrades
|
|
180
|
+
* to a reason naming the cause, never a crash.
|
|
181
|
+
*/
|
|
182
|
+
function artifactReasons(artifact) {
|
|
183
|
+
const reasons = [];
|
|
184
|
+
for (const error of (0, plan_artifact_1.validateArtifactBody)(artifact.markdown)) {
|
|
185
|
+
reasons.push({ check: 'sections', severity: 'error', message: error });
|
|
186
|
+
}
|
|
187
|
+
if (artifact.predictedFiles.length === 0) {
|
|
188
|
+
reasons.push({
|
|
189
|
+
check: 'sections',
|
|
190
|
+
severity: 'warn',
|
|
191
|
+
message: "Predicted Files section produced no paths — expected one '- `path`' bullet per file.",
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
for (const path of artifact.predictedFiles) {
|
|
195
|
+
const exists = fileExistsAtHead(path);
|
|
196
|
+
if (!exists.ok) {
|
|
197
|
+
reasons.push({
|
|
198
|
+
check: 'git',
|
|
199
|
+
severity: 'error',
|
|
200
|
+
message: `Cannot verify '${path}' at HEAD: ${exists.error} — run from inside the repository the plan targets.`,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
else if (!exists.exists) {
|
|
204
|
+
reasons.push({
|
|
205
|
+
check: 'missing-file',
|
|
206
|
+
severity: 'error',
|
|
207
|
+
message: `Predicted file '${path}' does not exist at current HEAD.`,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const distance = headDistance(artifact.head);
|
|
212
|
+
if (!distance.ok) {
|
|
213
|
+
reasons.push({
|
|
214
|
+
check: 'git',
|
|
215
|
+
severity: 'warn',
|
|
216
|
+
message: `Cannot measure head-distance: ${distance.error} — run from inside the repository the plan targets.`,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
else if (distance.count > 0) {
|
|
220
|
+
reasons.push({
|
|
221
|
+
check: 'head-distance',
|
|
222
|
+
severity: 'info',
|
|
223
|
+
message: `${distance.count} commit(s) on HEAD since the plan's head=${artifact.head} — re-check Predicted Files against what changed.`,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
for (const hit of (0, plan_artifact_1.scanRiskFloor)(artifact.predictedFiles)) {
|
|
227
|
+
reasons.push({
|
|
228
|
+
check: 'risk-floor',
|
|
229
|
+
severity: 'info',
|
|
230
|
+
message: `Predicted file '${hit.path}' touches '${hit.pattern}' — elevated-risk surface; review tier should not go below the risk floor.`,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
return reasons;
|
|
234
|
+
}
|
|
235
|
+
/** `plan get` — print the latest artifact; exit 1 distinguishably when none exists. */
|
|
236
|
+
function registerGetSubcommand(cmd) {
|
|
237
|
+
cmd
|
|
238
|
+
.command('get')
|
|
239
|
+
.description('Print the latest plan:v1 artifact on an issue (read-only)')
|
|
240
|
+
.requiredOption('--issue <number>', 'GitHub issue number')
|
|
241
|
+
.option('--repo <owner/name>', 'Target repository (defaults to the current one)')
|
|
242
|
+
.option('--json', 'Output the parsed artifact as JSON')
|
|
243
|
+
.action((options) => {
|
|
244
|
+
(0, gh_1.requireIssueTarget)(options);
|
|
245
|
+
const found = fetchLatestPlan(options.issue, options.repo);
|
|
246
|
+
if (found === null) {
|
|
247
|
+
// Distinguishable "no plan" exit (#462 AC2): stderr message + exit code 1, so a
|
|
248
|
+
// caller can fall back to full planning without parsing output text.
|
|
249
|
+
console.error(`No plan:v1 artifact on issue #${options.issue}.`);
|
|
250
|
+
console.error(`Fix: post one — ai-dossier plan post --issue ${options.issue} --file <md>`);
|
|
251
|
+
process.exit(1);
|
|
252
|
+
}
|
|
253
|
+
const { artifact, url, createdAt, author } = found;
|
|
254
|
+
if (options.json) {
|
|
255
|
+
const sections = {};
|
|
256
|
+
for (const section of plan_artifact_1.PLAN_SECTIONS) {
|
|
257
|
+
if (section === 'Predicted Files')
|
|
258
|
+
continue;
|
|
259
|
+
sections[SECTION_JSON_KEYS[section]] = artifact.sections[section];
|
|
260
|
+
}
|
|
261
|
+
console.log(JSON.stringify({
|
|
262
|
+
head: artifact.head,
|
|
263
|
+
...sections,
|
|
264
|
+
predicted_files: artifact.predictedFiles,
|
|
265
|
+
url,
|
|
266
|
+
created_at: createdAt,
|
|
267
|
+
author,
|
|
268
|
+
}, null, 2));
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
// The body is network-reachable; on a TTY, strip control sequences so a forged
|
|
272
|
+
// comment cannot rewrite the terminal. Piped output stays byte-exact.
|
|
273
|
+
const safe = process.stdout.isTTY ? artifact.raw.replace(CONTROL_CHARS_RE, '') : artifact.raw;
|
|
274
|
+
process.stdout.write(safe);
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/** `plan validate` — deterministic checks and a `{valid, reasons[]}` JSON verdict. */
|
|
278
|
+
function registerValidateSubcommand(cmd) {
|
|
279
|
+
cmd
|
|
280
|
+
.command('validate')
|
|
281
|
+
.description('Deterministically validate the latest plan artifact (JSON verdict, no model call)')
|
|
282
|
+
.requiredOption('--issue <number>', 'GitHub issue number')
|
|
283
|
+
.option('--repo <owner/name>', 'Target repository (defaults to the current one)')
|
|
284
|
+
.action((options) => {
|
|
285
|
+
(0, gh_1.requireIssueTarget)(options);
|
|
286
|
+
const reasons = [];
|
|
287
|
+
const found = fetchLatestPlan(options.issue, options.repo);
|
|
288
|
+
if (found === null) {
|
|
289
|
+
reasons.push({
|
|
290
|
+
check: 'artifact',
|
|
291
|
+
severity: 'error',
|
|
292
|
+
message: `No plan:v1 artifact on issue #${options.issue} — post one with 'ai-dossier plan post'.`,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
reasons.push(...artifactReasons(found.artifact));
|
|
297
|
+
// Authorship signal, not a gate: selection is last-plan-wins by design (the
|
|
298
|
+
// runstate:v1 convention), but a canonical plan from an account without write
|
|
299
|
+
// access deserves a flag a consumer can act on.
|
|
300
|
+
if (!WRITE_ACCESS_ASSOCIATIONS.has(found.authorAssociation)) {
|
|
301
|
+
reasons.push({
|
|
302
|
+
check: 'artifact',
|
|
303
|
+
severity: 'warn',
|
|
304
|
+
message: `Latest plan was posted by '${found.author || 'unknown'}' (association ${found.authorAssociation || 'UNKNOWN'}) — an account without write access. Verify authorship before trusting this plan.`,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const valid = reasons.every((r) => r.severity !== 'error');
|
|
309
|
+
console.log(JSON.stringify({ valid, reasons }, null, 2));
|
|
310
|
+
if (!valid)
|
|
311
|
+
process.exit(1);
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/** Registers the `plan` command tree (post, get, validate). */
|
|
315
|
+
function registerPlanCommand(program) {
|
|
316
|
+
const planCmd = program
|
|
317
|
+
.command('plan')
|
|
318
|
+
.description('Post, read, and validate plan:v1 artifacts on a GitHub issue');
|
|
319
|
+
registerPostSubcommand(planCmd);
|
|
320
|
+
registerGetSubcommand(planCmd);
|
|
321
|
+
registerValidateSubcommand(planCmd);
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runstate.d.ts","sourceRoot":"","sources":["../../src/commands/runstate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"runstate.d.ts","sourceRoot":"","sources":["../../src/commands/runstate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuuBzC,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAU9D"}
|