halfcycle 0.4.15 → 0.4.16
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 +20 -7
- package/dist/cli.js +2980 -2961
- package/dist/cli.js.map +3 -3
- package/dist/close-phase.d.ts +10 -1
- package/dist/close-phase.d.ts.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +3 -3
- package/dist/review.d.ts +9 -1
- package/dist/review.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/close-phase.d.ts
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
* SHIPS TO CLIENT DISK inside the CLI: every string here is a sentence a person reads,
|
|
50
50
|
* and no comment sits beside an object member.
|
|
51
51
|
*/
|
|
52
|
-
import { unfinishedStepLine, type AcceptanceOutcome, type OwnerWaitDeclaration, type ObserveRunResult, type OpenReviewAnswer, type TimeRunResult, type TimeSummary } from '@halfcycle/events';
|
|
52
|
+
import { unfinishedStepLine, type AcceptanceOutcome, type OwnerWaitDeclaration, type ObserveRunResult, type OpenReviewAnswer, type TimeRunResult, type TimeSummary, type WorkCall } from '@halfcycle/events';
|
|
53
53
|
import type { RepoCredential } from './open-phase.js';
|
|
54
54
|
/**
|
|
55
55
|
* Whether the commit this phase closed at could be read, and if so the full hash
|
|
@@ -365,6 +365,15 @@ export declare function readCloseOwnerWaitDeclarations(credential: RepoCredentia
|
|
|
365
365
|
* with none of them carries on silently, exactly as the spec says.
|
|
366
366
|
*/
|
|
367
367
|
export declare function ownerWaitCloseLines(declarations: readonly OwnerWaitDeclaration[] | null): string[];
|
|
368
|
+
/**
|
|
369
|
+
* THE DECISIONS THAT WENT AHEAD UNDER THE AUTONOMY SETTING, after the ones that waited
|
|
370
|
+
* (F-74, from the W-13b walk). Each listed call of the phase, oldest first, as C8 then C4
|
|
371
|
+
* (`review.ts`'s `callLines`, the one composer the review panel uses too). A declaration
|
|
372
|
+
* that went ahead never reaches `ownerWaitCloseLines`: the declarations read leaves it
|
|
373
|
+
* out, because it never waited. Calls an agent made on its own (`default`) are not
|
|
374
|
+
* printed here; C6 counts them with the rest.
|
|
375
|
+
*/
|
|
376
|
+
export declare function wentAheadCloseLines(calls: readonly WorkCall[]): string[];
|
|
368
377
|
/**
|
|
369
378
|
* C6, printed once the review has opened, only when it lists one or more calls — the
|
|
370
379
|
* phase's work read (`phase-work.ts`'s `readPhaseWork`) is the one count, never
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-phase.d.ts","sourceRoot":"","sources":["../src/close-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,OAAO,EAgBL,kBAAkB,EAClB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAGzB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAelB,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"close-phase.d.ts","sourceRoot":"","sources":["../src/close-phase.ts"],"names":[],"mappings":"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"}
|
package/dist/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAqBH,2GAA2G;AAC3G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CACpC;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAqBH,2GAA2G;AAC3G,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;CACpC;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC;CAC1B;AAiCD,8CAA8C;AAC9C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,CA2C5E"}
|
package/dist/index.js
CHANGED
|
@@ -1003,6 +1003,7 @@ function base64DecodedLength(text) {
|
|
|
1003
1003
|
const padding = text.endsWith("==") ? 2 : text.endsWith("=") ? 1 : 0;
|
|
1004
1004
|
return text.length / 4 * 3 - padding;
|
|
1005
1005
|
}
|
|
1006
|
+
var SYSTEM_PICTURE_THEMES = ["broadsheet", "flightdeck"];
|
|
1006
1007
|
var systemPictureSchema = z7.object({
|
|
1007
1008
|
svg: z7.string().min(1).refine((v) => utf8ByteLength2(v) <= SYSTEM_DRAW_SVG_MAX_BYTES, { message: "the picture is larger than 2 MB" }),
|
|
1008
1009
|
png: z7.string().min(1).refine((v) => v.length % 4 === 0 && BASE64.test(v), { message: "the image is not valid base64" }).refine((v) => base64DecodedLength(v) <= SYSTEM_DRAW_PNG_MAX_BYTES, { message: "the image is larger than 8 MB" })
|
|
@@ -7210,7 +7211,58 @@ function writeRecordPair(repoRoot, phase, rawRecord, record2, io = NODE_RECORD_P
|
|
|
7210
7211
|
}
|
|
7211
7212
|
|
|
7212
7213
|
// dist/build-record/obtain.js
|
|
7213
|
-
import { relative as
|
|
7214
|
+
import { relative as relative4 } from "node:path";
|
|
7215
|
+
|
|
7216
|
+
// dist/draw/write.js
|
|
7217
|
+
var DOCS_DIR = "docs";
|
|
7218
|
+
var DIAGRAMS_DIR = "diagrams";
|
|
7219
|
+
var DIAGRAM_DIR_REL = `${DOCS_DIR}/${DIAGRAMS_DIR}`;
|
|
7220
|
+
var PNG_SIGNATURE = Uint8Array.from([137, 80, 78, 71, 13, 10, 26, 10]);
|
|
7221
|
+
function svgOf(look) {
|
|
7222
|
+
return `${look}.svg`;
|
|
7223
|
+
}
|
|
7224
|
+
function pngOf(look) {
|
|
7225
|
+
return `${look}.png`;
|
|
7226
|
+
}
|
|
7227
|
+
var DIAGRAM_FILES = [
|
|
7228
|
+
...SYSTEM_PICTURE_THEMES.map(svgOf),
|
|
7229
|
+
...SYSTEM_PICTURE_THEMES.map(pngOf),
|
|
7230
|
+
"mmd"
|
|
7231
|
+
];
|
|
7232
|
+
var DIAGRAM_FILES_AS_LISTED = [
|
|
7233
|
+
...SYSTEM_PICTURE_THEMES.flatMap((look) => [pngOf(look), svgOf(look)]),
|
|
7234
|
+
"mmd"
|
|
7235
|
+
];
|
|
7236
|
+
|
|
7237
|
+
// dist/missing-route.js
|
|
7238
|
+
var MESSAGE = {
|
|
7239
|
+
GET: /^Route GET .* not found\.$/s,
|
|
7240
|
+
POST: /^Route POST .* not found\.$/s
|
|
7241
|
+
};
|
|
7242
|
+
function isMissingRoute(method, status, body) {
|
|
7243
|
+
if (status !== 404 || typeof body !== "object" || body === null)
|
|
7244
|
+
return false;
|
|
7245
|
+
const { error, message } = body;
|
|
7246
|
+
if (error !== "Not Found" || typeof message !== "string")
|
|
7247
|
+
return false;
|
|
7248
|
+
return MESSAGE[method].test(message);
|
|
7249
|
+
}
|
|
7250
|
+
|
|
7251
|
+
// dist/build-record/write-change.js
|
|
7252
|
+
import { basename as basename2, isAbsolute as isAbsolute4, join as join10, relative as relative3, resolve as resolve3 } from "node:path";
|
|
7253
|
+
var CHANGE_RECORD_DIR = join10("docs", "build-records", "changes");
|
|
7254
|
+
|
|
7255
|
+
// dist/change.js
|
|
7256
|
+
var CHANGE_USAGE = `${HALFCYCLE_COMMAND} change sort --request "<one line>" --touches <path>\u2026 [--contract <from>:<to>]\u2026 [--stored-data] [--standing-rule] [--new-part] [--repo <root>]
|
|
7257
|
+
${HALFCYCLE_COMMAND} change up <mini|full> (--change <id> | --phase <phase>) [--repo <root>]
|
|
7258
|
+
${HALFCYCLE_COMMAND} change done <id> [--repo <root>]`;
|
|
7259
|
+
|
|
7260
|
+
// dist/plan.js
|
|
7261
|
+
var PLAN_USAGE = `${HALFCYCLE_COMMAND} plan <phase> [--show] [--repo <root>]`;
|
|
7262
|
+
|
|
7263
|
+
// dist/review.js
|
|
7264
|
+
var REVIEW_USAGE = `${HALFCYCLE_COMMAND} review <phase> (--show | --answer <part> "<answer>") [--repo <root>]`;
|
|
7265
|
+
var RV9_LINE = `halfcycle review: this project is not signed in on this computer. ${HOOK_REMEDY}`;
|
|
7214
7266
|
|
|
7215
7267
|
// dist/open-phase.js
|
|
7216
7268
|
function writePhaseStamp(engagementId, phase, home) {
|
|
@@ -7229,20 +7281,6 @@ function writePhaseStamp(engagementId, phase, home) {
|
|
|
7229
7281
|
}
|
|
7230
7282
|
}
|
|
7231
7283
|
|
|
7232
|
-
// dist/missing-route.js
|
|
7233
|
-
var MESSAGE = {
|
|
7234
|
-
GET: /^Route GET .* not found\.$/s,
|
|
7235
|
-
POST: /^Route POST .* not found\.$/s
|
|
7236
|
-
};
|
|
7237
|
-
function isMissingRoute(method, status, body) {
|
|
7238
|
-
if (status !== 404 || typeof body !== "object" || body === null)
|
|
7239
|
-
return false;
|
|
7240
|
-
const { error, message } = body;
|
|
7241
|
-
if (error !== "Not Found" || typeof message !== "string")
|
|
7242
|
-
return false;
|
|
7243
|
-
return MESSAGE[method].test(message);
|
|
7244
|
-
}
|
|
7245
|
-
|
|
7246
7284
|
// dist/build-record/obtain.js
|
|
7247
7285
|
var REFUSAL_FOLLOW_UP = {
|
|
7248
7286
|
"still-open": "Nothing was written. The record is produced when the phase closes.",
|
|
@@ -7308,12 +7346,12 @@ async function obtainBuildRecord(credential, repoRoot, phase, io = NODE_RECORD_P
|
|
|
7308
7346
|
};
|
|
7309
7347
|
}
|
|
7310
7348
|
if (result.kind === "in-the-way") {
|
|
7311
|
-
return { kind: "exists", path:
|
|
7349
|
+
return { kind: "exists", path: relative4(repoRoot, result.path) };
|
|
7312
7350
|
}
|
|
7313
7351
|
return {
|
|
7314
7352
|
kind: "written",
|
|
7315
|
-
jsonPath:
|
|
7316
|
-
mdPath:
|
|
7353
|
+
jsonPath: relative4(repoRoot, result.jsonPath),
|
|
7354
|
+
mdPath: relative4(repoRoot, result.mdPath),
|
|
7317
7355
|
headline: latestCloseHeadline(answer.record),
|
|
7318
7356
|
stampFailure: clearStampFor(credential.engagementId, phase, home)
|
|
7319
7357
|
};
|