halfcycle 0.3.25 → 0.3.27
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/README.md +4 -6
- package/bin/bin.bundle.mjs +167 -66
- package/dist/bin.d.ts +11 -5
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +1359 -333
- package/dist/bin.js.map +3 -3
- package/dist/cli-contract.d.ts +1 -1
- package/dist/cli-contract.d.ts.map +1 -1
- package/dist/create-engagement.d.ts +5 -5
- package/dist/device-signin.d.ts +7 -4
- package/dist/device-signin.d.ts.map +1 -1
- package/dist/engagement-credential.d.ts +50 -4
- package/dist/engagement-credential.d.ts.map +1 -1
- package/dist/index.js +683 -149
- package/dist/index.js.map +3 -3
- package/dist/install-manifest.d.ts +169 -0
- package/dist/install-manifest.d.ts.map +1 -0
- package/dist/install.d.ts +152 -7
- package/dist/install.d.ts.map +1 -1
- package/dist/merge-settings.d.ts +12 -0
- package/dist/merge-settings.d.ts.map +1 -1
- package/dist/open-phase.d.ts.map +1 -1
- package/dist/scan.d.ts +7 -0
- package/dist/scan.d.ts.map +1 -1
- package/dist/uninstall.d.ts +96 -0
- package/dist/uninstall.d.ts.map +1 -0
- package/package.json +4 -3
- package/dist/ci-bind.d.ts +0 -116
- package/dist/ci-bind.d.ts.map +0 -1
package/dist/device-signin.d.ts
CHANGED
|
@@ -108,10 +108,13 @@ export interface SignInDeps {
|
|
|
108
108
|
* DEFAULTS TO THE INSTALL'S OWN REASON, because every caller of `signIn` was the
|
|
109
109
|
* installer until T-11 (`ci-oidc-token-exchange`) — an install always creates or
|
|
110
110
|
* joins an engagement immediately after obtaining a credential, so the hardcoded
|
|
111
|
-
* text was never false. `ci bind`/`ci unbind`
|
|
112
|
-
* the first callers
|
|
113
|
-
*
|
|
114
|
-
*
|
|
111
|
+
* text was never false. `ci bind`/`ci unbind` created no engagement at all and
|
|
112
|
+
* were the first callers to supply their own reason here rather than take the
|
|
113
|
+
* default — they were removed at T-25, but the field they motivated stays: every
|
|
114
|
+
* verb that does not create an engagement (`open-phase`, `close-phase`) supplies
|
|
115
|
+
* its own reason the same way, rather than a second hardcoded sentence in this
|
|
116
|
+
* file, which is how a caller's reason and this module's default come to
|
|
117
|
+
* disagree the next time either one changes.
|
|
115
118
|
*/
|
|
116
119
|
reason?: string;
|
|
117
120
|
}
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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"}
|
|
@@ -107,7 +107,44 @@ export { ENGAGEMENT_ENV_HEADER, ENGAGEMENTS_DIR_NAME, ENGAGEMENT_ENV_FILENAME, H
|
|
|
107
107
|
* than left to match by eye.
|
|
108
108
|
*/
|
|
109
109
|
export declare const PIN_ENGAGEMENT_ID_FIELD = "engagementId";
|
|
110
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* The refusal an engagement id that is not UUID-shaped meets before it becomes a
|
|
112
|
+
* path. A class of its own so a caller can tell "this id cannot name a folder"
|
|
113
|
+
* from an I/O failure without matching on words.
|
|
114
|
+
*/
|
|
115
|
+
export declare class InvalidEngagementIdError extends Error {
|
|
116
|
+
constructor(engagementId: string);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* THE ENGAGEMENT-ID CHECK THIS PACKAGE CALLS — once, before an id becomes a path
|
|
120
|
+
* under the repository or under `~/.halfcycle` (T-18a, #1270).
|
|
121
|
+
*
|
|
122
|
+
* The id is joined into `~/.halfcycle/engagements/<id>/`, and it arrives from a
|
|
123
|
+
* COMMITTED file: `.halfcycle/bundle.json` travels with the repository, so anyone
|
|
124
|
+
* who can land a commit decides it. `"../../.ssh"` there made the installer's
|
|
125
|
+
* credential write, the phase stamp and the marker land wherever that pointed.
|
|
126
|
+
* So the id is checked here, before anything is composed from it, and a caller
|
|
127
|
+
* that must refuse before its FIRST write (the installer, the uninstaller) calls
|
|
128
|
+
* this at its entry rather than waiting for the path composition below to throw.
|
|
129
|
+
*
|
|
130
|
+
* The shape itself is not defined here: `isEngagementId` in `@halfcycle/core` is
|
|
131
|
+
* its one home, shared with the runner's credential refresh and rendered into the
|
|
132
|
+
* generated shell scripts from the same pattern (`engagementResolutionShell`). A
|
|
133
|
+
* second copy of the regex in this package would be a second answer to the same
|
|
134
|
+
* question.
|
|
135
|
+
*
|
|
136
|
+
* @throws InvalidEngagementIdError
|
|
137
|
+
*/
|
|
138
|
+
export declare function assertEngagementId(engagementId: string): void;
|
|
139
|
+
/**
|
|
140
|
+
* `~/.halfcycle/engagements/<id>/` — this engagement's machine-level state dir.
|
|
141
|
+
*
|
|
142
|
+
* Every path this package composes under `~/.halfcycle/engagements` passes through
|
|
143
|
+
* here, so the id is checked HERE as well as at the callers' entries: a caller
|
|
144
|
+
* that forgot `assertEngagementId` still cannot compose a path out of `../`.
|
|
145
|
+
*
|
|
146
|
+
* @throws InvalidEngagementIdError
|
|
147
|
+
*/
|
|
111
148
|
export declare function engagementStateDir(engagementId: string, home?: string): string;
|
|
112
149
|
/** `~/.halfcycle/engagements/<id>/env` — the owner-only per-engagement env file. */
|
|
113
150
|
export declare function engagementEnvPath(engagementId: string, home?: string): string;
|
|
@@ -340,9 +377,18 @@ export declare function writeEngagementEnv(engagementId: string, values: Record<
|
|
|
340
377
|
* `HALFCYCLE_ENV_FILE` / `HALFCYCLE_ENV_PROBLEM` / `HALFCYCLE_ENV_ENGAGEMENT` in
|
|
341
378
|
* the CURRENT shell and returns a status, and callers use `if halfcycle_env_file …`.
|
|
342
379
|
*
|
|
343
|
-
* `$HALFCYCLE_ENV_PROBLEM` names which step failed — `no-pin`, `no-id`, `
|
|
344
|
-
* `no-credential` — so each caller says the true thing for its own
|
|
345
|
-
* of printing one sentence for
|
|
380
|
+
* `$HALFCYCLE_ENV_PROBLEM` names which step failed — `no-pin`, `no-id`, `bad-id`,
|
|
381
|
+
* `no-home`, `no-credential` — so each caller says the true thing for its own
|
|
382
|
+
* surface instead of printing one sentence for five different situations.
|
|
383
|
+
*
|
|
384
|
+
* **`bad-id` (T-18a, #1270) is the id failing `ENGAGEMENT_ID_PATTERN`** — core's
|
|
385
|
+
* one definition of the shape, interpolated here so the shell and
|
|
386
|
+
* `isEngagementId` cannot disagree about what may become a path. It is a problem
|
|
387
|
+
* value of its own rather than `no-id` because the remedy differs: re-running the
|
|
388
|
+
* installer does not rewrite a pin whose id it refuses, so "run npx halfcycle to
|
|
389
|
+
* rewrite it" would be false. The guard wrapper and the session-start marker treat
|
|
390
|
+
* every failure alike (no credential sourced), which is the right answer for this
|
|
391
|
+
* one too; only `mcp-headers.sh` words each case, and it has a `bad-id` arm.
|
|
346
392
|
*
|
|
347
393
|
* **HALFCYCLE_ENV_NOT_THIS_ACCOUNT IS SET ON THE `no-credential` FAILURE PATH TOO
|
|
348
394
|
* (T-02b, `solo-project-ownership`) — that is the state it exists to distinguish.**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engagement-credential.d.ts","sourceRoot":"","sources":["../src/engagement-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;
|
|
1
|
+
{"version":3,"file":"engagement-credential.d.ts","sourceRoot":"","sources":["../src/engagement-credential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiGG;AAmBH,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,gCAAgC,EAChC,YAAY,EACZ,GAAG,EACH,OAAO,GACR,MAAM,iBAAiB,CAAC;AAgBzB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AAEtD;;;;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;AAoCrD;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAsDlD"}
|