halfcycle 0.3.36 → 0.3.38

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.
@@ -18,7 +18,9 @@
18
18
  * `JSON.parse` returned it, key order included — not the schema's output, which
19
19
  * would reorder keys. The schema parse decides only whether it is written at all.
20
20
  *
21
- * INV-001: Node builtins, the global `fetch` and `@halfcycle/events` only.
21
+ * INV-001: Node builtins, the global `fetch`, `@halfcycle/events` and
22
+ * `@halfcycle/core` only (the latter for the one shared shell-quoting helper,
23
+ * `quoteForShell`, used by `refetchCommand` below).
22
24
  * SHIPS TO CLIENT DISK inside the CLI: every string here is a client-facing
23
25
  * sentence, and no comment sits beside an object member.
24
26
  */
@@ -74,8 +76,10 @@ export declare function buildRecordUrl(credential: RepoCredential, phase: string
74
76
  */
75
77
  export declare function obtainBuildRecord(credential: RepoCredential, repoRoot: string, phase: string, io?: RecordPairIo): Promise<ObtainOutcome>;
76
78
  /**
77
- * How to fetch a phase's record later, as a line a person can paste: the phase is
78
- * quoted for the shell unless it is plain letters, digits and `._+-`.
79
+ * How to fetch a phase's record later, as a line a person can paste: the phase
80
+ * is quoted for the shell, through the one home every package that prints a
81
+ * runnable command shares (`quoteForShell`, `@halfcycle/core`) — not a second
82
+ * copy of the same escaping.
79
83
  */
80
84
  export declare function refetchCommand(phase: string): string;
81
85
  //# sourceMappingURL=obtain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"obtain.d.ts","sourceRoot":"","sources":["../../src/build-record/obtain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;CAM+B,CAAC;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,eAAe,EAAE,SAAS,wBAAwB,EAA2C,CAAC;AAE3G,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhF;AASD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,EAAE,GAAE,YAAkC,GACrC,OAAO,CAAC,aAAa,CAAC,CA0ExB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGpD"}
1
+ {"version":3,"file":"obtain.d.ts","sourceRoot":"","sources":["../../src/build-record/obtain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAErF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;;;CAM+B,CAAC;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,eAAe,EAAE,SAAS,wBAAwB,EAA2C,CAAC;AAE3G,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKhF;AASD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,EAAE,GAAE,YAAkC,GACrC,OAAO,CAAC,aAAa,CAAC,CA0ExB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -32,9 +32,10 @@ import type { BuildRecordV2 } from '@halfcycle/events';
32
32
  * Print one string from the record as inert, visible markdown text.
33
33
  *
34
34
  * Per code point: a hidden character becomes `U+` and its code in uppercase hex,
35
- * at least four digits; a markdown special character is escaped with a
36
- * backslash; everything else prints as itself. An empty string prints
37
- * `(blank)`, so a slot is never silently empty.
35
+ * at least four digits; a character that could start or end markup where it
36
+ * stands (`escapeMask`) is escaped with a backslash; everything else, a code
37
+ * span's contents included, prints as itself. An empty string prints `(blank)`,
38
+ * so a slot is never silently empty.
38
39
  */
39
40
  export declare function printRecordText(text: string): string;
40
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render-v2.d.ts","sourceRoot":"","sources":["../../src/build-record/render-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAyBvD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAapD;AAyRD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA2DzE"}
1
+ {"version":3,"file":"render-v2.d.ts","sourceRoot":"","sources":["../../src/build-record/render-v2.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA4JvD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAepD;AAuUD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA2DzE"}
@@ -125,6 +125,13 @@ export declare function requirementMessage(verb: CliVerb, flag: string): string;
125
125
  * RENDERED, not typed out. A remedy string built by hand is the defect this file
126
126
  * was opened for; one built here cannot omit a flag, because the flags come from
127
127
  * the same table the binary refuses on.
128
+ *
129
+ * `phase` is quoted for the shell (`quoteForShell`, `packages/core`) — a phase
130
+ * name has no closed vocabulary and a space or `#` in it would otherwise paste
131
+ * back as more than one argument. The one gap that quoting does not close: a
132
+ * phase starting with a dash still reads as a flag once the shell hands it
133
+ * back; that needs a `--` end-of-flags marker on both this output and the
134
+ * argument parser, which is a wider change than this function and is not done.
128
135
  */
129
136
  export declare function runnableInvocation(verb: CliVerb, phase: string): string;
130
137
  //# sourceMappingURL=cli-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-contract.d.ts","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAEH,iFAAiF;AACjF,eAAO,MAAM,SAAS,+FAAgG,CAAC;AAEvH,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,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;CAClD;AAsFD,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;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvE"}
1
+ {"version":3,"file":"cli-contract.d.ts","sourceRoot":"","sources":["../src/cli-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AAIH,iFAAiF;AACjF,eAAO,MAAM,SAAS,+FAAgG,CAAC;AAEvH,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,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;CAClD;AAsFD,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;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvE"}
@@ -52,8 +52,8 @@
52
52
  * second answer to the question this file exists to answer once.
53
53
  */
54
54
  /**
55
- * The Halfcycle CONTROL plane — the origin that serves `POST /engagements`,
56
- * `POST /engagements/:id/join` and `POST /board/enter-codes`.
55
+ * The Halfcycle CONTROL plane — the origin that serves `POST /engagements` and
56
+ * `POST /engagements/:id/join`.
57
57
  *
58
58
  * NOT the MCP origin and NOT the guard origin: the platform reports both of those
59
59
  * on the create/join response (T-22, FW-4), and a developer configures neither.
@@ -47,7 +47,7 @@
47
47
  *
48
48
  * **THE TWO ORIGINS (T-22, #438).** `baseUrl` here is the CONTROL origin —
49
49
  * `HALFCYCLE_SERVICE_URL`, which serves `POST /engagements` and
50
- * `POST /board/enter-codes`. The MCP endpoint lives on a DIFFERENT deployed
50
+ * `POST /engagements/:id/join`. The MCP endpoint lives on a DIFFERENT deployed
51
51
  * service, and control does not serve `/mcp` at all. Before T-22 one variable was
52
52
  * read as the origin for all three routes, so no value satisfied it: pointed at
53
53
  * control the installed `.mcp.json` named a 404 and the developer got no method
@@ -136,6 +136,32 @@ export interface CreatedEngagement {
136
136
  * gains the fifth.
137
137
  */
138
138
  controlTelemetryUrl?: string;
139
+ /**
140
+ * The engagement's own console address, as the platform reports it (Connect
141
+ * Phase 4 follow-ups T-01, items 1/14) — built by control from its own
142
+ * `boardBaseUrl` plus the engagement id, so this package never carries a
143
+ * hosted host of its own (INV-001). `bin.ts` prints it on its own line, in
144
+ * the brand's gold.
145
+ *
146
+ * ABSENT, not present-and-empty, on a control deployment that predates T-01
147
+ * or has no console origin configured. There is then nothing honest to
148
+ * print, and the caller must print NOTHING about the console rather than a
149
+ * link that cannot work — same posture as the two origins above being
150
+ * genuinely absent, never a degraded guess.
151
+ */
152
+ consoleUrl?: string;
153
+ /**
154
+ * The method version this engagement is stamped with (T-01) — the CREATE
155
+ * route's own deployment default at the moment of creation; the JOIN
156
+ * route's engagement-level pin, which can be OLDER than this deployment's
157
+ * current default by the time a second developer joins. `bin.ts` prints it
158
+ * plainly, and `checkDrift` reads the SAME fact back from the committed pin
159
+ * without asking the plane again.
160
+ *
161
+ * ABSENT on a control deployment that predates T-01, for the same reason
162
+ * `consoleUrl` can be.
163
+ */
164
+ methodVersion?: string;
139
165
  }
140
166
  /**
141
167
  * A refusal the CONTROL PLANE wrote — the origin is right, and it declined (T-08).
@@ -1 +1 @@
1
- {"version":3,"file":"create-engagement.d.ts","sourceRoot":"","sources":["../src/create-engagement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AAKH;;oCAEoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAE9C,6CAA6C;aAC7B,MAAM,EAAE,MAAM;IAC9B,8DAA8D;aAC9C,aAAa,EAAE,MAAM;IACrC,+DAA+D;aAC/C,SAAS,EAAE,MAAM,GAAG,SAAS;IAC7C;;;;;;;;;;;;OAYG;aACa,MAAM,EAAE,MAAM,GAAG,SAAS;;IAnB1C,6CAA6C;IAC7B,MAAM,EAAE,MAAM;IAC9B,8DAA8D;IAC9C,aAAa,EAAE,MAAM;IACrC,+DAA+D;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS;IAC7C;;;;;;;;;;;;OAYG;IACa,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM;IAMjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,WAAW,IAAI,OAAO,CAGzB;CACF;AA4ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAU5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAW5B"}
1
+ {"version":3,"file":"create-engagement.d.ts","sourceRoot":"","sources":["../src/create-engagement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AAKH;;oCAEoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAE9C,6CAA6C;aAC7B,MAAM,EAAE,MAAM;IAC9B,8DAA8D;aAC9C,aAAa,EAAE,MAAM;IACrC,+DAA+D;aAC/C,SAAS,EAAE,MAAM,GAAG,SAAS;IAC7C;;;;;;;;;;;;OAYG;aACa,MAAM,EAAE,MAAM,GAAG,SAAS;;IAnB1C,6CAA6C;IAC7B,MAAM,EAAE,MAAM;IAC9B,8DAA8D;IAC9C,aAAa,EAAE,MAAM;IACrC,+DAA+D;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS;IAC7C;;;;;;;;;;;;OAYG;IACa,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1C,OAAO,EAAE,MAAM;IAMjB;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,WAAW,IAAI,OAAO,CAGzB;CACF;AA4ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAU5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAW5B"}
@@ -10,8 +10,11 @@
10
10
  * SINCE T-25 THERE ARE TWO WAYS THE ANSWER COMES BACK, and `signIn` below is where
11
11
  * the choice is made:
12
12
  *
13
- * LOOPBACK (the default) — the CLI listens on `127.0.0.1`, the page redirects the
14
- * browser back to it, and NO CODE IS SHOWN. `loopback-signin.ts` owns the listener.
13
+ * LOOPBACK (the default) — the CLI listens on `127.0.0.1` and the page redirects the
14
+ * browser back to it, while this file polls control beside that wait, so a sign-in
15
+ * approved on any tab or device completes. The user code is printed for a plain
16
+ * tab to be compared against; the loopback page shows none. `loopback-signin.ts`
17
+ * owns the listener.
15
18
  *
16
19
  * DEVICE CODE (the fallback) — the code is printed, the human compares it with the
17
20
  * page, and this file polls. Unchanged, and the right answer whenever the browser
@@ -59,6 +62,7 @@
59
62
  *
60
63
  * INV-001: Node builtins, the global `fetch` (Node 20), and `@halfcycle/events`.
61
64
  */
65
+ import { spawn } from 'node:child_process';
62
66
  import { type DeviceAuthStartResponse, type DevicePollApproved } from '@halfcycle/events';
63
67
  /**
64
68
  * A sign-in that ended without a credential.
@@ -101,6 +105,8 @@ export interface SignInDeps {
101
105
  sleep?: (ms: number) => Promise<void>;
102
106
  /** The clock the local deadline is measured on. Defaults to `Date.now`. */
103
107
  now?: () => number;
108
+ /** How often either wait says it is still waiting. Defaults to fifteen seconds. */
109
+ stillWaitingMs?: number;
104
110
  /**
105
111
  * What signing in is FOR, spliced into `signIn`'s opening line: "Halfcycle needs
106
112
  * an account before it can **<reason>** — signing you in through your browser."
@@ -126,22 +132,42 @@ export interface SignInDeps {
126
132
  onwardEngagementId?: string;
127
133
  }
128
134
  /**
129
- * The platform command that opens a URL in the user's browser, as `{command, args}`.
135
+ * The platform command that opens a URL in the user's browser, as
136
+ * `{command, args, windowsVerbatimArguments?}`.
130
137
  *
131
138
  * A PURE FUNCTION so the argv can be asserted on every platform from any platform —
132
139
  * the alternative is a test that only ever checks the branch it happens to be
133
140
  * running on, which on this repo's CI would mean the Windows and Linux arms were
134
141
  * never looked at.
135
142
  *
136
- * NO SHELL, EVER. The URL is an argv element, so a value containing shell
137
- * metacharacters is an odd URL and not a command. `start` on Windows is the one
138
- * that would need a shell, so it is invoked through `cmd /c start ""` with an empty
139
- * title argument — without that empty string, `start` treats a quoted URL as the
140
- * window title and opens nothing.
143
+ * macOS and Linux: NO SHELL, EVER. The URL is an argv element handed straight to
144
+ * `open`/`xdg-open`, so a value containing shell metacharacters is an odd URL and
145
+ * not a command.
146
+ *
147
+ * `win32` (CHANGED — windows-install-hygiene AC5, the 2026-10-07 walk's F10): the
148
+ * old form, `{ command: 'cmd', args: ['/c', 'start', '', url] }`, hands `cmd.exe` an
149
+ * argv array it reassembles into one command line of its own, and that reassembly
150
+ * quotes nothing — `cmd.exe` then treats an unescaped `&` in the URL as a command
151
+ * separator. The loopback address carries `port` and `state` after a literal `&`
152
+ * (`loopbackVerificationUrl`), so the walk saw the first launch open the address cut
153
+ * at its first `&`, exit 1, and the fallback open a second tab.
154
+ *
155
+ * The fix routes through `cmd.exe` the way `probeClaudeCodeVersion`
156
+ * (`claude-version-probe.ts`) already does for AC3: one argv element carries the
157
+ * ENTIRE inner command as a single quoted string, and `/d /s` plus
158
+ * `windowsVerbatimArguments: true` tell `cmd.exe` to strip only the outer pair of
159
+ * quotes and run what is left — `start "" "<url>"`, the URL still inside its own
160
+ * quotes, which is what keeps `&`, `|`, `^`, `!` and a space inside one pair of
161
+ * quotes rather than cut at the first one. `openBrowser` refuses to build this at
162
+ * all for a URL holding `"` or `%` (see `hasWin32UnsafeOpenerChars`) — a `"` would
163
+ * close the quoted command early, and `cmd.exe` expands `%` as an
164
+ * environment-variable reference regardless of quoting, so quoting the URL does
165
+ * not defend against either.
141
166
  */
142
167
  export declare function browserOpenCommand(os: string, url: string): {
143
168
  command: string;
144
169
  args: string[];
170
+ windowsVerbatimArguments?: boolean;
145
171
  };
146
172
  /**
147
173
  * Is this URL safe to hand to the platform opener?
@@ -153,6 +179,37 @@ export declare function browserOpenCommand(os: string, url: string): {
153
179
  * document and a handler-scheme URL would launch whatever claims that scheme.
154
180
  */
155
181
  export declare function isOpenableUrl(url: string): boolean;
182
+ /**
183
+ * Does this URL hold a `"`, a `%`, or a C0/DEL control character (U+0000–U+001F,
184
+ * U+007F) — the bytes `cmd.exe` still interprets, or that reach it unaccounted
185
+ * for, inside the single-quoted command `browserOpenCommand`'s `win32` arm builds
186
+ * (windows-install-hygiene AC5; the control-character case added at the
187
+ * windows-client follow-up wave's T-28 review)?
188
+ *
189
+ * A `"` closes that quoted command early, handing `cmd.exe` the remainder of the
190
+ * URL as a second command. A `%` is expanded by `cmd.exe`'s own command-line
191
+ * parser as an environment-variable reference — `%PATH%`, `%COMSPEC%` — and that
192
+ * expansion happens whether or not the text sits inside quotes, so quoting the URL
193
+ * does not defend against it.
194
+ *
195
+ * A CONTROL CHARACTER is refused for a different reason, and a line feed is the
196
+ * sharp case: `isOpenableUrl` parses the address with the WHATWG `URL`
197
+ * constructor, which — per spec — strips every ASCII tab and newline from its
198
+ * input before parsing. So an address carrying a raw `\n` passes `isOpenableUrl`
199
+ * looking exactly like the clean URL it would be without one, while the
200
+ * UNSTRIPPED STRING — the one `browserOpenCommand` actually quotes and `spawn`
201
+ * actually hands to `cmd.exe` — still carries the byte inside the quoted command
202
+ * line. No other C0 control character or DEL is reasoned about any more than that
203
+ * one is, so the whole class is refused rather than only the byte a parser
204
+ * happens to delete.
205
+ *
206
+ * Checked only where it matters, by `openBrowser`, and only on `win32`: `open`
207
+ * (macOS) and `xdg-open` (Linux) take the URL as a bare argv element with no shell
208
+ * in between, so none of these bytes does anything there — and percent-encoding
209
+ * is ordinary in an http(s) URL, so refusing `%` on every platform would refuse
210
+ * addresses that are perfectly safe to open outside `cmd.exe`'s quoting.
211
+ */
212
+ export declare function hasWin32UnsafeOpenerChars(url: string): boolean;
156
213
  /** What was MEASURED when this run tried to open a browser. */
157
214
  export interface BrowserOpenAttempt {
158
215
  /** A browser was launched. Nobody claims the human looked at it. */
@@ -198,8 +255,25 @@ export interface BrowserOpenAttempt {
198
255
  * browser over*; honouring it is not a guess about the machine, and the reason
199
256
  * reported says so in those words. Nothing else in this flow reads the environment
200
257
  * to decide which path to take.
258
+ *
259
+ * ---------------------------------------------------------------------------
260
+ * `os` IS INJECTABLE (ADDED — AC5), DEFAULTING TO THE REAL PLATFORM, for the same
261
+ * reason `browserOpenCommand` takes one: a `win32`-only refusal
262
+ * (`hasWin32UnsafeOpenerChars`) needs to be assertable from this repo's Linux CI
263
+ * without actually having `cmd.exe` on `PATH`. Every existing caller passes two
264
+ * arguments and gets the real platform, unchanged.
265
+ *
266
+ * `spawnImpl` IS INJECTABLE TOO (ADDED — windows-client T-28 review), for a
267
+ * narrower reason: `node:child_process`'s `spawn` is a built-in ESM export and
268
+ * `node:test`'s `mock.method` cannot redefine a core module's property
269
+ * (`TypeError: Cannot redefine property`, measured), so there was no way for a
270
+ * test to observe what options actually reached `spawn` — in particular, that
271
+ * `windowsVerbatimArguments: true` from `browserOpenCommand`'s `win32` arm
272
+ * survived as far as the call rather than being computed and dropped. Every
273
+ * existing caller passes two or three arguments and gets the real `spawn`,
274
+ * unchanged.
201
275
  */
202
- export declare function openBrowser(url: string, env?: NodeJS.ProcessEnv): Promise<BrowserOpenAttempt>;
276
+ export declare function openBrowser(url: string, env?: NodeJS.ProcessEnv, os?: string, spawnImpl?: typeof spawn): Promise<BrowserOpenAttempt>;
203
277
  /** True iff this run has no human at the keyboard. */
204
278
  export declare function isNonInteractive(env?: NodeJS.ProcessEnv): boolean;
205
279
  /** `POST /auth/device/start` — mint a code. Throws `SignInRefused` on a refusal. */
@@ -237,10 +311,12 @@ export declare const LOOPBACK_TIMEOUT_MESSAGE: string;
237
311
  * ---------------------------------------------------------------------------
238
312
  * THE TWO PATHS, AND HOW THE CHOICE BETWEEN THEM IS MADE.
239
313
  *
240
- * LOOPBACK — bind `127.0.0.1:0`, put that port in the URL we open, and wait for
241
- * the confirmation page to send the browser back. **No code is displayed at all**
242
- * (criterion 1): there is nothing for the human to compare, so printing a code
243
- * would be printing a value with no use.
314
+ * LOOPBACK — bind `127.0.0.1:0`, put that port in the URL we open, and poll
315
+ * control while waiting for the confirmation page to send the browser back
316
+ * (`pollBesideLoopback`; the redirect only wakes the poll). The USER code is
317
+ * printed: the loopback page shows none, but a plain sign-in tab does, and asks
318
+ * whether it matches this terminal. *This replaces T-25's "no code is displayed
319
+ * at all", withdrawn by the walk-F3 amendment of 2026-10-08.*
244
320
  *
245
321
  * DEVICE CODE — print the code, open (or print) the page, and poll. Unchanged from
246
322
  * T-08, still tested, and still correct for every machine whose browser is not the
@@ -267,10 +343,10 @@ export declare const LOOPBACK_TIMEOUT_MESSAGE: string;
267
343
  * to a connection error after a successful approval — a page that looks broken for a
268
344
  * sign-in that worked.
269
345
  *
270
- * WHAT IS PRINTED AND WHAT IS NOT, on the device-code path: the USER code is printed
271
- * — it is a selector a human compares between two screens and yields nothing to
272
- * whoever reads it, since only the device code can claim the credential. The DEVICE
273
- * code and the credential are printed nowhere, ever, and appear in no URL.
346
+ * WHAT IS PRINTED AND WHAT IS NOT, on BOTH paths: the USER code is printed — it is a
347
+ * selector a human compares between two screens and yields nothing to whoever reads
348
+ * it, since only the device code can claim the credential. The DEVICE code and the
349
+ * credential are printed nowhere, ever, and appear in no URL.
274
350
  */
275
351
  export declare function signIn(serviceUrl: string, deps?: SignInDeps & {
276
352
  env?: NodeJS.ProcessEnv;
@@ -1 +1 @@
1
- {"version":3,"file":"device-signin.d.ts","sourceRoot":"","sources":["../src/device-signin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAIH,OAAO,EAKL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;GAQG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAEpB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAED,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAE7C;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,QAGV,CAAC;AAE3B;;;;;;;;GAQG;AACH,eAAO,MAAM,+BAA+B,QAGsC,CAAC;AAQnF,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,qDAAqD;IACrD,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAIrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOlD;AAaD,+DAA+D;AAC/D,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,MAAM,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,kBAAkB,CAAC,CAmE7B;AAED,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAG9E;AAED,oFAAoF;AACpF,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsC1F;AAYD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,uBAAuB,EAChC,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,kBAAkB,CAAC,CAmD7B;AAED,uCAAuC;AACvC,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,QAIF,CAAC;AAiEpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,UAAU,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAClD,OAAO,CAAC,QAAQ,CAAC,CAmFnB"}
1
+ {"version":3,"file":"device-signin.d.ts","sourceRoot":"","sources":["../src/device-signin.ts"],"names":[],"mappings":"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"}
@@ -247,10 +247,14 @@ export declare const GUARD_ENV_KEYS: readonly ["GUARD_SERVICE_URL", "GUARD_SERVI
247
247
  * keeps the two bound: add a fourth guard variable to `GUARD_ENV_KEYS` and it
248
248
  * appears here, required, without anybody remembering this constant exists.
249
249
  *
250
- * The consumer is the generated session-start coverage banner, which prints the
251
- * missing names to a developer. Naming an address they cannot obtain and do not need
252
- * in a list of what is missing — beside an instruction to re-run the installer — is
253
- * the wall this whole change removed, reappearing on a hook script.
250
+ * The consumer is the install report, which names the keys a covered repository
251
+ * holds. The generated session-start script used to be a second consumer, looping
252
+ * over this list to decide whether to print the no-coverage banner; since
253
+ * `session-start-connection-check` that banner is the runner's, decided by the
254
+ * guard hook's own `readConfig`, whose required pair this list must keep naming.
255
+ * Naming an address a developer cannot obtain and does not need in a list of what is
256
+ * missing — beside an instruction to re-run the installer — is the wall this whole
257
+ * change removed.
254
258
  */
255
259
  export declare const GUARD_COVERAGE_REQUIRED_KEYS: ("GUARD_SERVICE_TOKEN" | "GUARD_ENGAGEMENT_ID")[];
256
260
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"engagement-credential.d.ts","sourceRoot":"","sources":["../src/engagement-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGG;AAoBH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,YAAY,EACZ,GAAG,EACH,OAAO,GACR,MAAM,iBAAiB,CAAC;AAgBzB;;;;;;;;;GASG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,YAAY,EAAE,MAAM;CAajC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9E;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAMnF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,cAAc,8EAIjB,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,4BAA4B,mDAExC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,mMAOtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAuCrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjD,IAAI,GAAE,SAAS,MAAM,EAAwB,GAC5C,MAAM,CAER;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAM/B;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjD,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,MAAM,EAAwB,GAC5C,eAAe,CAoBjB;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAsDlD"}
1
+ {"version":3,"file":"engagement-credential.d.ts","sourceRoot":"","sources":["../src/engagement-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGG;AAoBH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,YAAY,EACZ,GAAG,EACH,OAAO,GACR,MAAM,iBAAiB,CAAC;AAgBzB;;;;;;;;;GASG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,YAAY,EAAE,MAAM;CAajC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9E;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAMnF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,cAAc,8EAIjB,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,4BAA4B,mDAExC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,mMAOtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAuCrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjD,IAAI,GAAE,SAAS,MAAM,EAAwB,GAC5C,MAAM,CAER;AAMD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAM/B;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EACjD,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,GAAE,SAAS,MAAM,EAAwB,GAC5C,eAAe,CAoBjB;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAsDlD"}
package/dist/index.d.ts CHANGED
@@ -14,8 +14,6 @@ export { mintOrReadIdentity, readRootCommit, readRemote } from './identity.js';
14
14
  export type { ProjectIdentity } from './identity.js';
15
15
  export { createEngagement, CreateEngagementRefused } from './create-engagement.js';
16
16
  export type { CreatedEngagement } from './create-engagement.js';
17
- export { mintBoardEnterCode } from './mint-board-code.js';
18
- export type { MintedBoardCode } from './mint-board-code.js';
19
17
  export { mergeSettings } from './merge-settings.js';
20
18
  export type { ClaudeSettings, HookEntry, HookCommand } from './merge-settings.js';
21
19
  export { runBootstrapScan, scanLayers, mergeWithRecords, HALFCYCLE_STATE_FORMAT } from './scan.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAyBhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI1F,cAAc,kBAAkB,CAAC;AAKjC,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAyBhE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAI1F,cAAc,kBAAkB,CAAC;AAKjC,cAAc,yBAAyB,CAAC"}