halfcycle 0.3.13 → 0.3.14
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/dist/banner-facts.d.ts +11 -7
- package/dist/banner-facts.d.ts.map +1 -1
- package/dist/banner.d.ts +58 -7
- package/dist/banner.d.ts.map +1 -1
- package/dist/bin.js +313 -259
- package/dist/bin.js.map +3 -3
- package/dist/confirm-identity.d.ts +30 -4
- package/dist/confirm-identity.d.ts.map +1 -1
- package/dist/control-origin.d.ts +6 -1
- package/dist/control-origin.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/own-engagement.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "halfcycle",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.14",
|
|
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/dist/banner-facts.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The banner's whole claim is that it reads the repository before it says anything: the
|
|
5
5
|
* version, the Claude Code beside it, the project it is standing in, whether that project
|
|
6
|
-
* has ever been installed, and which
|
|
7
|
-
* byte is written, and every one of them is a probe that can fail.
|
|
6
|
+
* has ever been installed, and which Halfcycle it will talk to. All five are knowable
|
|
7
|
+
* before a byte is written, and every one of them is a probe that can fail.
|
|
8
8
|
*
|
|
9
9
|
* **A FACT THAT CANNOT BE ESTABLISHED IS OMITTED, NEVER GUESSED AND NEVER APOLOGISED FOR.**
|
|
10
10
|
* No `unknown`, no `n/a`, no empty row. A developer without `claude` on their PATH is the
|
|
@@ -20,11 +20,14 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { type BannerContent } from './banner.js';
|
|
22
22
|
/**
|
|
23
|
-
* The
|
|
23
|
+
* The brand's front door.
|
|
24
24
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* Two readers, and they are different questions. The ONE-LINE cut — what a pipe, a CI log
|
|
26
|
+
* and a `TERM=dumb` console get — prints it as the only address it has room for. The
|
|
27
|
+
* `Website` fact prints it too, but only for a run that talks to the published plane: a
|
|
28
|
+
* run pointed at a development one reports THAT host, because there the address is the
|
|
29
|
+
* diagnostic. The block cut no longer prints a standalone URL line under the tagline
|
|
30
|
+
* (W-3, #868) — the fact column already carries it.
|
|
28
31
|
*/
|
|
29
32
|
export declare const BRAND_URL = "halfcycle.ai";
|
|
30
33
|
/**
|
|
@@ -58,7 +61,8 @@ export interface FactProbes {
|
|
|
58
61
|
readonly projectName: (dir: string) => string | undefined;
|
|
59
62
|
readonly commitCount: (dir: string) => number | null;
|
|
60
63
|
readonly installedVersion: (dir: string) => string | undefined;
|
|
61
|
-
|
|
64
|
+
/** Which Halfcycle this run talks to, as an address a person recognises. */
|
|
65
|
+
readonly websiteHost: (env: NodeJS.ProcessEnv) => string | undefined;
|
|
62
66
|
}
|
|
63
67
|
/** The real probes. Each one is separately replaceable, which is the point of the seam. */
|
|
64
68
|
export declare const REAL_PROBES: FactProbes;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF
|
|
1
|
+
{"version":3,"file":"banner-facts.d.ts","sourceRoot":"","sources":["../src/banner-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH,OAAO,EAAkB,KAAK,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElF;;;;;;;;;GASG;AACH,eAAO,MAAM,SAAS,iBAAiB,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAGpC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF,iFAAiF;AACjF,wBAAgB,aAAa,IAAI,MAAM,GAAG,SAAS,CAOlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAWtD;AAED;0CAC0C;AAC1C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/D,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,2FAA2F;AAC3F,eAAO,MAAM,WAAW,EAAE,UAqCzB,CAAC;AAQF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,MAAM,GAAE,UAAwB,GAC/B,aAAa,CAuCf"}
|
package/dist/banner.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* THE `npx halfcycle` OPENING BANNER — the mark, the name, the
|
|
2
|
+
* THE `npx halfcycle` OPENING BANNER — the mark, the name, the facts and the tagline.
|
|
3
3
|
*
|
|
4
4
|
* This module is PURE: it takes content and an environment description and returns a
|
|
5
5
|
* string. Everything that touches the filesystem, git or a subprocess lives in
|
|
@@ -29,11 +29,12 @@
|
|
|
29
29
|
* 1. **No dependency.** Raw ANSI, hand-written. The package ships to a client's disk and
|
|
30
30
|
* its runtime dependency list is one entry long; a colour library is not worth a
|
|
31
31
|
* second. Nothing here imports anything at all.
|
|
32
|
-
* 2. **Never a hard-coded foreground colour.** The mark
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
32
|
+
* 2. **Never a hard-coded foreground colour.** The mark's solid half and the fact values
|
|
33
|
+
* take the terminal's OWN foreground. A surface in this product has already once been
|
|
34
|
+
* invisible on a light-mode machine because it chose its own ink. Sixteen-colour ANSI
|
|
35
|
+
* and nothing else — no truecolor, no 256-colour cube — so it resolves against
|
|
36
|
+
* whatever theme the developer already picked. `INK` below is the one home for the
|
|
37
|
+
* product palette, and `ink()` is how the rest of this package reaches it.
|
|
37
38
|
* 3. **Off when it should be off.** `--quiet`, a stdout that is not a TTY, `NO_COLOR`
|
|
38
39
|
* and `TERM=dumb` each have a defined answer, and none of them is "art anyway".
|
|
39
40
|
* 4. **stdout, never stderr.** A banner on stderr turns a successful install into a red
|
|
@@ -72,7 +73,7 @@ export declare const MARK_NARROW: MarkArt;
|
|
|
72
73
|
export interface GlyphSet {
|
|
73
74
|
/** The rule under the header. */
|
|
74
75
|
readonly rule: string;
|
|
75
|
-
/** One half of a palette block; the strip is
|
|
76
|
+
/** One half of a palette block; the strip is one pair per palette colour. */
|
|
76
77
|
readonly swatch: string;
|
|
77
78
|
/** The separator inside a composed fact value, and inside the one-line cut. */
|
|
78
79
|
readonly dot: string;
|
|
@@ -93,6 +94,55 @@ export declare const ASCII_GLYPHS: GlyphSet;
|
|
|
93
94
|
* cannot break the column arithmetic.
|
|
94
95
|
*/
|
|
95
96
|
export declare function toAscii(text: string): string;
|
|
97
|
+
/**
|
|
98
|
+
* THE PRODUCT'S PALETTE, AS SGR PARAMETERS. The whole of what this CLI may emit.
|
|
99
|
+
*
|
|
100
|
+
* Each entry is a theme token from `apps/portal/src/styles/theme.css` given its nearest
|
|
101
|
+
* seat in sixteen-colour ANSI. The mapping is the point: the terminal is a surface of
|
|
102
|
+
* this product, and the colours a developer sees there are the ones they will see in the
|
|
103
|
+
* console. This is the ONE home for them — `ink()` below is how every other module in
|
|
104
|
+
* this package colours anything, so there is no second table to drift from.
|
|
105
|
+
*
|
|
106
|
+
* `plain` is the empty string on purpose: the mark's solid half and the fact values are
|
|
107
|
+
* the terminal's own foreground, and the way to say that in ANSI is to say nothing at
|
|
108
|
+
* all. THERE IS NO WHITE HERE AND NO BLACK — `--text` is whatever ink the developer
|
|
109
|
+
* already chose, `37` is a light grey that vanishes on a light theme, and `30`/`97` are
|
|
110
|
+
* the two that vanish on one theme or the other. A surface in this product has already
|
|
111
|
+
* once been invisible on a light-mode machine because it chose its own ink.
|
|
112
|
+
*/
|
|
113
|
+
declare const INK: {
|
|
114
|
+
/** `--text` — the terminal's own foreground, never one we picked. */
|
|
115
|
+
readonly plain: "";
|
|
116
|
+
/** `--muted` — dimmed default ink, so it is grey against whatever the background is. */
|
|
117
|
+
readonly dim: "2";
|
|
118
|
+
/** `--faint` / `--faded` — bright black, the one ANSI grey that is a colour. */
|
|
119
|
+
readonly faint: "90";
|
|
120
|
+
/** Not a colour: emphasis, used with whatever ink is already in force. */
|
|
121
|
+
readonly bold: "1";
|
|
122
|
+
/** `--signal` — yellow, the nearest ANSI seat for the brand's gold. */
|
|
123
|
+
readonly key: "33";
|
|
124
|
+
/** `--signal`, brighter: the one value on a screen that must be found first. */
|
|
125
|
+
readonly keyBold: "33;1";
|
|
126
|
+
/** `--good` — the console's affirmative. */
|
|
127
|
+
readonly good: "32";
|
|
128
|
+
/** `--bad` — the console's negative. */
|
|
129
|
+
readonly bad: "31";
|
|
130
|
+
};
|
|
131
|
+
/** A name in the palette above. The only way to ask for a colour in this package. */
|
|
132
|
+
export type InkName = keyof typeof INK;
|
|
133
|
+
/**
|
|
134
|
+
* `text` in one of the palette's inks — or unchanged, when this run has no colour.
|
|
135
|
+
*
|
|
136
|
+
* Exported so that the rest of the CLI colours through the same table the banner does.
|
|
137
|
+
* The identity gate (`confirm-identity.ts`) is the other caller, and it matters that it
|
|
138
|
+
* cannot reach an SGR parameter directly: a second module writing its own escapes is how
|
|
139
|
+
* a surface acquires a colour nobody checked against a light-mode terminal.
|
|
140
|
+
*
|
|
141
|
+
* **COLOUR IS NEVER THE THING CARRYING THE MEANING.** Every caller must read correctly
|
|
142
|
+
* with `colour` false, because `NO_COLOR`, `TERM=dumb`, a pipe and a dumb CI log all
|
|
143
|
+
* reach that branch — and one of the callers is a safety prompt.
|
|
144
|
+
*/
|
|
145
|
+
export declare function ink(name: InkName, text: string, colour: boolean): string;
|
|
96
146
|
/**
|
|
97
147
|
* One labelled row of the fact column.
|
|
98
148
|
*
|
|
@@ -185,4 +235,5 @@ export declare function printBanner(sink: BannerSink, content: BannerContent, en
|
|
|
185
235
|
* description of a world instead of running in one.
|
|
186
236
|
*/
|
|
187
237
|
export declare function currentEnvironment(quiet: boolean): BannerEnvironment;
|
|
238
|
+
export {};
|
|
188
239
|
//# sourceMappingURL=banner.d.ts.map
|
package/dist/banner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
|