halfcycle 0.5.3 → 0.6.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/.claude-plugin/plugin.json +1 -1
- package/bin/bin.bundle.mjs +37 -1
- package/dist/check-report.d.ts +57 -0
- package/dist/check-report.d.ts.map +1 -0
- package/dist/check-tasks.d.ts +94 -4
- package/dist/check-tasks.d.ts.map +1 -1
- package/dist/cli-contract.d.ts +1 -1
- package/dist/cli-contract.d.ts.map +1 -1
- package/dist/cli.js +947 -61
- package/dist/cli.js.map +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -9
- package/dist/index.js.map +3 -3
- package/dist/ready.d.ts +103 -0
- package/dist/ready.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "halfcycle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Halfcycle Method bundle — resolution-stub slash commands, remote method-delivery registration, and governance-hook wiring for a Halfcycle engagement repo. It ships NO worker role files: a project's roles are authored from that project's own recorded decisions at orchestration kickoff (FX-2, W3-F-27).",
|
|
5
5
|
"commands": [
|
|
6
6
|
{
|
package/bin/bin.bundle.mjs
CHANGED
|
@@ -15053,6 +15053,8 @@ var HOOK_REMEDY = `Run ${SIGN_IN_COMMAND} in the project folder to sign in.`;
|
|
|
15053
15053
|
var TASK_PLAN_TASKS_MAX = 500;
|
|
15054
15054
|
var TASK_PLAN_ID_MAX = 64;
|
|
15055
15055
|
var TASK_PLAN_BUILDS_NONE = "none";
|
|
15056
|
+
var TASK_PLAN_CRITERIA_NONE = "none";
|
|
15057
|
+
var TASK_PLAN_SPECS_NONE = "none";
|
|
15056
15058
|
var TASK_PLAN_KINDS = ["build", "review", "spec", "walk", "check"];
|
|
15057
15059
|
var CONTROL_CHARACTER = /[\u0000-\u001f\u007f-\u009f]/;
|
|
15058
15060
|
var planText = external_exports.string().refine((text) => !CONTROL_CHARACTER.test(text), { message: "holds a control character" });
|
|
@@ -15069,7 +15071,9 @@ var taskPlanTaskSchema = external_exports.object({
|
|
|
15069
15071
|
}).strict().optional(),
|
|
15070
15072
|
wholeProject: external_exports.literal(true).optional(),
|
|
15071
15073
|
ships: external_exports.enum(["deploy", "release"]).optional(),
|
|
15072
|
-
builds: external_exports.union([external_exports.literal(TASK_PLAN_BUILDS_NONE), external_exports.array(planText)]).optional()
|
|
15074
|
+
builds: external_exports.union([external_exports.literal(TASK_PLAN_BUILDS_NONE), external_exports.array(planText)]).optional(),
|
|
15075
|
+
criteria: external_exports.union([external_exports.literal(TASK_PLAN_CRITERIA_NONE), external_exports.array(planText)]).optional(),
|
|
15076
|
+
whyOutsidePlan: planText.optional()
|
|
15073
15077
|
}).strict().superRefine((task, ctx) => {
|
|
15074
15078
|
if (task.reviews !== void 0 && task.kind !== "review") {
|
|
15075
15079
|
ctx.addIssue({
|
|
@@ -15095,6 +15099,7 @@ var taskPlanTaskSchema = external_exports.object({
|
|
|
15095
15099
|
});
|
|
15096
15100
|
var taskPlanSchema = external_exports.object({
|
|
15097
15101
|
phase: external_exports.string().min(1).refine((text) => !CONTROL_CHARACTER.test(text), { message: "holds a control character" }),
|
|
15102
|
+
specs: external_exports.union([external_exports.literal(TASK_PLAN_SPECS_NONE), external_exports.array(planText)]).optional(),
|
|
15098
15103
|
tasks: external_exports.array(taskPlanTaskSchema).max(TASK_PLAN_TASKS_MAX)
|
|
15099
15104
|
}).strict();
|
|
15100
15105
|
var taskListRowSchema = external_exports.object({
|
|
@@ -15203,6 +15208,37 @@ var AGENT_PROFILES = {
|
|
|
15203
15208
|
};
|
|
15204
15209
|
var ALL_HOOK_COMMANDS = new Set(AGENT_IDS.flatMap((id) => [...AGENT_PROFILES[id].commands]));
|
|
15205
15210
|
|
|
15211
|
+
// ../core/dist/worker-report.js
|
|
15212
|
+
var WORKER_REPORT_STATUSES = Object.freeze([
|
|
15213
|
+
"done",
|
|
15214
|
+
"needs-human-verification",
|
|
15215
|
+
"blocked-on-human",
|
|
15216
|
+
"failed"
|
|
15217
|
+
]);
|
|
15218
|
+
var WORKER_REPORT_RULE_FIELDS = Object.freeze({
|
|
15219
|
+
W1: "Worker report",
|
|
15220
|
+
W2: "Status",
|
|
15221
|
+
W3: "Head",
|
|
15222
|
+
W4: "Head",
|
|
15223
|
+
W5: "Verification",
|
|
15224
|
+
W6: "Verification",
|
|
15225
|
+
W7: "Verification",
|
|
15226
|
+
W8: "Unverified"
|
|
15227
|
+
});
|
|
15228
|
+
var WORKER_REPORT_LINES = Object.freeze({
|
|
15229
|
+
noBlock: () => 'There is no "## Worker report" block in this report.',
|
|
15230
|
+
statusMissing: (statuses) => `The report has no Status line. Use one of: ${statuses.join(", ")}.`,
|
|
15231
|
+
statusUnknown: (found2, statuses) => `The report's Status is "${found2}". Use one of: ${statuses.join(", ")}.`,
|
|
15232
|
+
headMissing: () => "The report has no Head line. Give the full commit id the report is about.",
|
|
15233
|
+
headMalformed: (found2) => `The report's Head is "${found2}", which is not a full commit id.`,
|
|
15234
|
+
headDiffers: (found2, head) => `The report is about commit ${found2}, but the work's head is ${head}. Ask for a report on the current head.`,
|
|
15235
|
+
noVerification: () => "The report does not say what was run. List each check under Verification with its exit code.",
|
|
15236
|
+
noExitCode: (entry) => `"${entry}" under Verification does not give an exit code.`,
|
|
15237
|
+
nonZeroOnDone: (entry) => `"${entry}" exited with a code other than 0, so the work is not done.`,
|
|
15238
|
+
noUnverified: () => 'The report has no Unverified line. Say what was not checked, or "nothing".',
|
|
15239
|
+
clear: () => "The report is complete and names the commit it is about."
|
|
15240
|
+
});
|
|
15241
|
+
|
|
15206
15242
|
// dist/control-origin.js
|
|
15207
15243
|
var DEFAULT_CONTROL_ORIGIN = "https://control.halfcycle.ai";
|
|
15208
15244
|
function resolveControlOrigin(env) {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `npx halfcycle@latest check-report <file | -> --head <sha>` (`checked-worker-reports`
|
|
3
|
+
* AC2).
|
|
4
|
+
*
|
|
5
|
+
* A coordinator saves a pull request's body to a file (or pipes it in as `-`) and
|
|
6
|
+
* runs this before it writes any task's state from the worker's report. It prints
|
|
7
|
+
* one plain line per problem, or one clear line, and exits 0 when the report
|
|
8
|
+
* passes, 1 when it is refused, 2 on a usage error or a file it cannot read.
|
|
9
|
+
*
|
|
10
|
+
* OFFLINE, ALWAYS. This verb reads the one file it is given, or standard input,
|
|
11
|
+
* and nothing else. It opens no credential file, makes no network call and needs
|
|
12
|
+
* no sign-in: the commit to compare with is handed to it as `--head`, so it never
|
|
13
|
+
* asks git or GitHub which commit that is.
|
|
14
|
+
*
|
|
15
|
+
* ONE HOME FOR THE RULES. `checkWorkerReport` (`@halfcycle/core`) holds the
|
|
16
|
+
* block reader, the rules and every line they print; this module only reads the
|
|
17
|
+
* text, passes it the four statuses of the served report block and the head, and
|
|
18
|
+
* turns what it returns into lines and an exit code.
|
|
19
|
+
*
|
|
20
|
+
* SHIPS TO CLIENT DISK inside the CLI: Node builtins and `@halfcycle/core` only.
|
|
21
|
+
* Every string here is a sentence a person reads in their own terminal, so none
|
|
22
|
+
* names an internal register, a route or this project's own tooling; no comment
|
|
23
|
+
* sits beside an object member.
|
|
24
|
+
*/
|
|
25
|
+
/** The usage line, printed for a missing report, an extra argument or an unknown flag. */
|
|
26
|
+
export declare const CHECK_REPORT_USAGE = "npx halfcycle@latest check-report <file | -> --head <sha>";
|
|
27
|
+
/** What the arguments after `check-report` came to: one report source and one head, or usage. */
|
|
28
|
+
export type CheckReportArgs = {
|
|
29
|
+
ok: true;
|
|
30
|
+
source: string;
|
|
31
|
+
head: string;
|
|
32
|
+
} | {
|
|
33
|
+
ok: false;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Exactly one positional (a file, or `-` for standard input) and exactly one
|
|
37
|
+
* `--head <sha>`; anything else is usage. A missing `--head` is refused before
|
|
38
|
+
* this is called, from the CLI's table of required flags.
|
|
39
|
+
*/
|
|
40
|
+
export declare function parseCheckReportArgs(argv: readonly string[]): CheckReportArgs;
|
|
41
|
+
/** What a run of the verb came to. */
|
|
42
|
+
export interface CheckReportRun {
|
|
43
|
+
readonly stdout: string;
|
|
44
|
+
readonly stderr: string;
|
|
45
|
+
readonly exitCode: number;
|
|
46
|
+
}
|
|
47
|
+
/** Where the report's text comes from; standard input is read only for `-`. */
|
|
48
|
+
export interface CheckReportDeps {
|
|
49
|
+
readonly readStdin?: () => string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The whole verb. Reads the report from `source` (standard input for `-`),
|
|
53
|
+
* checks it against `head` with the four statuses of the served block, and
|
|
54
|
+
* prints each problem's line, or the clear line. Never throws.
|
|
55
|
+
*/
|
|
56
|
+
export declare function runCheckReport(source: string, head: string, deps?: CheckReportDeps): CheckReportRun;
|
|
57
|
+
//# sourceMappingURL=check-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-report.d.ts","sourceRoot":"","sources":["../src/check-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAUH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,8DAA8D,CAAC;AAE9F,iGAAiG;AACjG,MAAM,MAAM,eAAe,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CAiB7E;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,+EAA+E;AAC/E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CACnC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,CAoBvG"}
|
package/dist/check-tasks.d.ts
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* `npx halfcycle@latest check-tasks <phase> [--with-task-list] [--repo <root>]`
|
|
3
3
|
* (`collision-free-parallel-work` AC3; `checks-as-work-lands` AC3, AC6).
|
|
4
4
|
*
|
|
5
|
-
* OFFLINE, ALWAYS. This verb reads
|
|
6
|
-
* `docs/build-records/task-plan.json`, `docs/system.json` when it is there,
|
|
5
|
+
* OFFLINE, ALWAYS. This verb reads only files on the person's own machine —
|
|
6
|
+
* `docs/build-records/task-plan.json`, `docs/system.json` when it is there, the
|
|
7
|
+
* phase's plan file in `docs/phases/` when it is there, each
|
|
8
|
+
* spec file the plan lists in `specs` (`docs/features/<name>.md`, once per name), and, with
|
|
7
9
|
* `--with-task-list`, `docs/build-records/build-tasks.json` — and nothing else. It opens no credential
|
|
8
10
|
* file, makes no network call, and needs no sign-in. Everything it prints comes from
|
|
9
11
|
* `checkTaskPlan` (`@halfcycle/core`), which is pure: this module's whole job is
|
|
@@ -38,13 +40,34 @@
|
|
|
38
40
|
* description that is broken, and passing it silently would let through the very
|
|
39
41
|
* plan this rule exists to catch.
|
|
40
42
|
*
|
|
43
|
+
* THE PHASE'S OWN PLAN NAMES THE PARTS IT CHANGES (O8, issue #2339). When the
|
|
44
|
+
* description passed its check and the phase's plan file (`planFileRel`, the plan
|
|
45
|
+
* verb's one home of that name) is there, reads as JSON, is for this phase and passes
|
|
46
|
+
* the plan verb's own check against that description (`checkPhasePlan`), its parts go
|
|
47
|
+
* to `checkTaskPlan`, which refuses a task building a part outside them with no
|
|
48
|
+
* reason. Anything short of that says nothing, never a stop: this verb runs while the
|
|
49
|
+
* plan may not be written yet, the plan verb is where a broken plan is named, and the
|
|
50
|
+
* method kit's validator is silent on the same cases.
|
|
51
|
+
*
|
|
52
|
+
* THE LISTED SPECS NAME THE CRITERIA (C1–C6, `criteria-coverage`). `readPlanSpecFiles`
|
|
53
|
+
* is the one place spec files are opened: for each name `planSpecNamesToRead` gives
|
|
54
|
+
* (a name that passed the spec-name rule, each once, in the plan's order) it reads
|
|
55
|
+
* `<spec folder>/<name>.md` and hands the criteria `readSpecCriteria` finds, and the
|
|
56
|
+
* Boundary section `readSpecBoundary` reads (B1, B2, N2, N3, `spec-boundaries`), to
|
|
57
|
+
* `checkTaskPlan`. The spec folder is the one the scan already knows for feature
|
|
58
|
+
* designs (`LAYER_ARTEFACT_PATHS`), not a second copy. A missing file is not an
|
|
59
|
+
* error here: the check names it (C6). A file that is there and cannot be read
|
|
60
|
+
* stops the run with exit 2, naming it, as an unreadable plan does.
|
|
61
|
+
*
|
|
41
62
|
* SHIPS TO CLIENT DISK inside the CLI (INV-001: Node builtins, `@halfcycle/core` and
|
|
42
|
-
* `@halfcycle/events` only, the latter for the description's
|
|
63
|
+
* `@halfcycle/events` only, the latter for the description's and the phase plan's checks; no
|
|
43
64
|
* network and no `fetch`). Every string here is
|
|
44
65
|
* a sentence a person reads in their own terminal, so none names an internal
|
|
45
66
|
* register, a route, or this project's own tooling; no comment sits beside an
|
|
46
67
|
* object member.
|
|
47
68
|
*/
|
|
69
|
+
import { type SystemDescription } from '@halfcycle/events';
|
|
70
|
+
import { type PlanSpecFiles, type TaskPlan } from '@halfcycle/core';
|
|
48
71
|
/** The usage line, printed for no phase, an extra argument or an unknown flag. */
|
|
49
72
|
export declare const CHECK_TASKS_USAGE = "npx halfcycle@latest check-tasks <phase> [--with-task-list] [--repo <root>]";
|
|
50
73
|
/**
|
|
@@ -61,6 +84,70 @@ export type CheckTasksArgs = {
|
|
|
61
84
|
ok: false;
|
|
62
85
|
};
|
|
63
86
|
export declare function parseCheckTasksArgs(argv: readonly string[]): CheckTasksArgs;
|
|
87
|
+
/**
|
|
88
|
+
* The sentence for a project with no plan file, without any verb's prefix: this verb
|
|
89
|
+
* and `ready` (`ready.ts`) each print it after their own.
|
|
90
|
+
*/
|
|
91
|
+
export declare const MISSING_PLAN_LINE = "there is no docs/build-records/task-plan.json in this project yet. Run the task-graph step to write it, then run this again.";
|
|
92
|
+
/** One JSON file, read and parsed: present and valid, missing, or unreadable/unparsable (with the line to print). */
|
|
93
|
+
type FileRead<T> = {
|
|
94
|
+
kind: 'ok';
|
|
95
|
+
value: T;
|
|
96
|
+
} | {
|
|
97
|
+
kind: 'missing';
|
|
98
|
+
} | {
|
|
99
|
+
kind: 'bad';
|
|
100
|
+
line: string;
|
|
101
|
+
};
|
|
102
|
+
/** A zod `safeParse` result, read structurally so this file never imports `zod` itself (INV-001). */
|
|
103
|
+
type SafeParse<T> = {
|
|
104
|
+
success: true;
|
|
105
|
+
data: T;
|
|
106
|
+
} | {
|
|
107
|
+
success: false;
|
|
108
|
+
error: {
|
|
109
|
+
issues: readonly {
|
|
110
|
+
path: readonly PropertyKey[];
|
|
111
|
+
message: string;
|
|
112
|
+
}[];
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Read and parse one JSON file under `repoRoot`. The line in a `bad` answer carries
|
|
117
|
+
* no verb's prefix; this verb and `ready` (`ready.ts`) each add their own. Never throws.
|
|
118
|
+
*/
|
|
119
|
+
export declare function readJsonFile<T>(repoRoot: string, rel: string, parse: (raw: unknown) => SafeParse<T>): FileRead<T>;
|
|
120
|
+
/**
|
|
121
|
+
* The parts the phase's own plan changes, with where that plan lives, or `undefined`
|
|
122
|
+
* when there is no plan to compare with: the phase is not a phase name, the file is
|
|
123
|
+
* missing, unreadable or not JSON, it is the plan for another phase, or it fails the
|
|
124
|
+
* plan verb's check against `description`. Never throws, never stops the run (see the
|
|
125
|
+
* module header).
|
|
126
|
+
*/
|
|
127
|
+
export declare function readPhasePlanParts(repoRoot: string, phase: string, description: SystemDescription): {
|
|
128
|
+
file: string;
|
|
129
|
+
partIds: string[];
|
|
130
|
+
} | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* The plan's listed specs, read: `ok` with the request's `specFiles`, or `bad` with
|
|
133
|
+
* the line naming a spec file that is there and could not be read, without any
|
|
134
|
+
* verb's prefix (each caller adds its own, as with `readJsonFile`'s line). A listed
|
|
135
|
+
* name with no file is an entry with no criteria, which the check names.
|
|
136
|
+
*/
|
|
137
|
+
export type PlanSpecFilesRead = {
|
|
138
|
+
kind: 'ok';
|
|
139
|
+
specFiles: PlanSpecFiles;
|
|
140
|
+
} | {
|
|
141
|
+
kind: 'bad';
|
|
142
|
+
line: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* The one place spec files are opened. Reads `<spec folder>/<name>.md` under
|
|
146
|
+
* `repoRoot` once for each name `planSpecNamesToRead` gives for `plan`, in that
|
|
147
|
+
* order, and returns each one's criteria as `readSpecCriteria` finds them and its
|
|
148
|
+
* Boundary section as `readSpecBoundary` reads it. Never throws.
|
|
149
|
+
*/
|
|
150
|
+
export declare function readPlanSpecFiles(repoRoot: string, plan: TaskPlan): PlanSpecFilesRead;
|
|
64
151
|
/** What a run of the verb came to. */
|
|
65
152
|
export interface CheckTasksRun {
|
|
66
153
|
readonly stdout: string;
|
|
@@ -69,7 +156,9 @@ export interface CheckTasksRun {
|
|
|
69
156
|
}
|
|
70
157
|
/**
|
|
71
158
|
* The whole verb. Reads `docs/build-records/task-plan.json` under `repoRoot`,
|
|
72
|
-
* `docs/system.json` when it is there,
|
|
159
|
+
* `docs/system.json` when it is there, the phase's plan file when that is there too
|
|
160
|
+
* (`readPhasePlanParts`), each spec file the plan lists in `specs`
|
|
161
|
+
* (`docs/features/<name>.md`, through `readPlanSpecFiles`), and, with `withTaskList`,
|
|
73
162
|
* `docs/build-records/build-tasks.json`; hands them to
|
|
74
163
|
* `checkTaskPlan` and prints its lines, one per line, in the order it returns them,
|
|
75
164
|
* or `checkTaskPlan`'s own clear line when there is nothing to report. Never throws.
|
|
@@ -80,4 +169,5 @@ export interface CheckTasksRun {
|
|
|
80
169
|
* an error (see the module header) and never changes the exit code on its own.
|
|
81
170
|
*/
|
|
82
171
|
export declare function runCheckTasks(repoRoot: string, phase: string, withTaskList: boolean): CheckTasksRun;
|
|
172
|
+
export {};
|
|
83
173
|
//# sourceMappingURL=check-tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-tasks.d.ts","sourceRoot":"","sources":["../src/check-tasks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"check-tasks.d.ts","sourceRoot":"","sources":["../src/check-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAIH,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAWL,KAAK,aAAa,EAElB,KAAK,QAAQ,EAEd,MAAM,iBAAiB,CAAC;AAKzB,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,gFAAgF,CAAC;AAE/G;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAChF;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC;AAElB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAuB3E;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,iIAAiH,CAAC;AAEhJ,qHAAqH;AACrH,KAAK,QAAQ,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAOlG,qGAAqG;AACrG,KAAK,SAAS,CAAC,CAAC,IACZ;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,MAAM,EAAE,SAAS;YAAE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAExG;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA0BjH;AAwCD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,iBAAiB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAYjD;AAQD;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,aAAa,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzG;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,iBAAiB,CAkBrF;AAED,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,aAAa,CA8CnG"}
|
package/dist/cli-contract.d.ts
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
* home is the failure mode it exists to prevent.
|
|
63
63
|
*/
|
|
64
64
|
/** The verbs the CLI dispatches. Anything else after `halfcycle ` is unknown. */
|
|
65
|
-
export declare const CLI_VERBS: readonly ["install", "check-drift", "build-record", "open-phase", "close-phase", "system", "draw", "plan", "review", "check-tasks", "uninstall", "change", "pace", "prove", "preview", "doctor", "restore"];
|
|
65
|
+
export declare const CLI_VERBS: readonly ["install", "check-drift", "build-record", "open-phase", "close-phase", "system", "draw", "plan", "review", "check-tasks", "check-report", "ready", "uninstall", "change", "pace", "prove", "preview", "doctor", "restore"];
|
|
66
66
|
export type CliVerb = (typeof CLI_VERBS)[number];
|
|
67
67
|
/** A flag every invocation of the verb must carry. */
|
|
68
68
|
export interface RequiredFlag {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-contract.d.ts","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAIH,iFAAiF;AACjF,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"cli-contract.d.ts","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAIH,iFAAiF;AACjF,eAAO,MAAM,SAAS,sOAAuO,CAAC;AAE9P,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,sDAAsD;AACtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,iDAAiD;AACjD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;CAClD;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;CAC1C;AA4JD,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAElE;AAED,iDAAiD;AACjD,MAAM,WAAW,SAAS;IACxB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAmBD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,CAyBxF;AAuBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvE;AASD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;CAErB,CAAC;AA0BX;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAa1F"}
|