@alpacakit/channels 0.1.0-beta.35 → 0.1.0-beta.36

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.
@@ -0,0 +1,40 @@
1
+ import type { CliCommandPath, CliLongOptionFlag, CliOptionFlag } from "./cli-model.js";
2
+ export declare const CLI_HELP_REQUEST_KIND: {
3
+ readonly path: "path";
4
+ };
5
+ export type CliHelpRequest = {
6
+ readonly kind: typeof CLI_HELP_REQUEST_KIND.path;
7
+ readonly path: CliCommandPath;
8
+ readonly all: boolean;
9
+ };
10
+ export type CliHelpRequestDefinition = {
11
+ readonly commandToken: string;
12
+ readonly optionTokens: readonly CliOptionFlag[];
13
+ readonly allToken: CliLongOptionFlag;
14
+ };
15
+ export declare function parseCliHelpRequest(argv: readonly string[], definition: CliHelpRequestDefinition): CliHelpRequest | null;
16
+ export declare const CLI_GLOBAL_OPTION_RESULT_KIND: {
17
+ readonly absent: "absent";
18
+ readonly invalid: "invalid";
19
+ readonly resolved: "resolved";
20
+ };
21
+ export declare const CLI_GLOBAL_OPTION_ISSUE_KIND: {
22
+ readonly duplicate: "duplicate";
23
+ readonly invalidValue: "invalid_value";
24
+ };
25
+ export type CliGlobalValueOptionDefinition<Value extends string = string> = {
26
+ readonly flag: CliLongOptionFlag;
27
+ readonly values: readonly Value[];
28
+ };
29
+ export type CliGlobalValueOptionResult<Value extends string = string> = {
30
+ readonly kind: typeof CLI_GLOBAL_OPTION_RESULT_KIND.absent;
31
+ } | {
32
+ readonly kind: typeof CLI_GLOBAL_OPTION_RESULT_KIND.invalid;
33
+ readonly issue: typeof CLI_GLOBAL_OPTION_ISSUE_KIND.duplicate | typeof CLI_GLOBAL_OPTION_ISSUE_KIND.invalidValue;
34
+ } | {
35
+ readonly kind: typeof CLI_GLOBAL_OPTION_RESULT_KIND.resolved;
36
+ readonly value: Value;
37
+ readonly argv: readonly string[];
38
+ };
39
+ export declare function extractCliGlobalValueOption<Value extends string>(argv: readonly string[], definition: CliGlobalValueOptionDefinition<Value>): CliGlobalValueOptionResult<Value>;
40
+ //# sourceMappingURL=cli-application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-application.d.ts","sourceRoot":"","sources":["../src/cli-application.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAOxB,eAAO,MAAM,qBAAqB;;CAExB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC;IACjD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;CACtC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,UAAU,EAAE,wBAAwB,GACnC,cAAc,GAAG,IAAI,CAoBvB;AAiBD,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;CAG/B,CAAC;AAEX,MAAM,MAAM,8BAA8B,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI;IAC1E,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,6BAA6B,CAAC,MAAM,CAAA;CAAE,GAC9D;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,6BAA6B,CAAC,OAAO,CAAC;IAC5D,QAAQ,CAAC,KAAK,EACV,OAAO,4BAA4B,CAAC,SAAS,GAC7C,OAAO,4BAA4B,CAAC,YAAY,CAAC;CACtD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,6BAA6B,CAAC,QAAQ,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC,CAAC;AAEN,wBAAgB,2BAA2B,CAAC,KAAK,SAAS,MAAM,EAC9D,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,UAAU,EAAE,8BAA8B,CAAC,KAAK,CAAC,GAChD,0BAA0B,CAAC,KAAK,CAAC,CA4CnC"}
@@ -0,0 +1,90 @@
1
+ const CLI_APPLICATION_SYNTAX = {
2
+ optionPrefix: "-",
3
+ positionalSeparator: "--",
4
+ };
5
+ export const CLI_HELP_REQUEST_KIND = {
6
+ path: "path",
7
+ };
8
+ export function parseCliHelpRequest(argv, definition) {
9
+ if (argv.length === 0)
10
+ return pathHelpRequest([], false);
11
+ if (argv[0] === definition.commandToken) {
12
+ const args = argv.slice(1);
13
+ if (args.length === 1 &&
14
+ definition.optionTokens.includes(args[0])) {
15
+ return pathHelpRequest([], false);
16
+ }
17
+ if (args.at(-1) === definition.allToken) {
18
+ return createPathHelpRequest(args.slice(0, -1), true);
19
+ }
20
+ return createPathHelpRequest(args, false);
21
+ }
22
+ const helpToken = argv.at(-1);
23
+ if (!definition.optionTokens.includes(helpToken)) {
24
+ return null;
25
+ }
26
+ return createPathHelpRequest(argv.slice(0, -1), false);
27
+ }
28
+ function createPathHelpRequest(path, all) {
29
+ return path.every((token) => !token.startsWith(CLI_APPLICATION_SYNTAX.optionPrefix))
30
+ ? pathHelpRequest(path, all)
31
+ : null;
32
+ }
33
+ function pathHelpRequest(path, all) {
34
+ return { kind: CLI_HELP_REQUEST_KIND.path, path, all };
35
+ }
36
+ export const CLI_GLOBAL_OPTION_RESULT_KIND = {
37
+ absent: "absent",
38
+ invalid: "invalid",
39
+ resolved: "resolved",
40
+ };
41
+ export const CLI_GLOBAL_OPTION_ISSUE_KIND = {
42
+ duplicate: "duplicate",
43
+ invalidValue: "invalid_value",
44
+ };
45
+ export function extractCliGlobalValueOption(argv, definition) {
46
+ const inlinePrefix = `${definition.flag}=`;
47
+ const values = [];
48
+ const normalized = [];
49
+ let optionsEnded = false;
50
+ for (let index = 0; index < argv.length; index += 1) {
51
+ const token = argv[index];
52
+ if (token === CLI_APPLICATION_SYNTAX.positionalSeparator) {
53
+ optionsEnded = true;
54
+ normalized.push(token);
55
+ continue;
56
+ }
57
+ if (!optionsEnded && token === definition.flag) {
58
+ values.push(argv[index + 1] ?? "");
59
+ index += 1;
60
+ continue;
61
+ }
62
+ if (!optionsEnded && token?.startsWith(inlinePrefix) === true) {
63
+ values.push(token.slice(inlinePrefix.length));
64
+ continue;
65
+ }
66
+ if (token !== undefined)
67
+ normalized.push(token);
68
+ }
69
+ if (values.length === 0) {
70
+ return { kind: CLI_GLOBAL_OPTION_RESULT_KIND.absent };
71
+ }
72
+ if (values.length > 1) {
73
+ return {
74
+ kind: CLI_GLOBAL_OPTION_RESULT_KIND.invalid,
75
+ issue: CLI_GLOBAL_OPTION_ISSUE_KIND.duplicate,
76
+ };
77
+ }
78
+ const value = values[0];
79
+ if (!definition.values.includes(value)) {
80
+ return {
81
+ kind: CLI_GLOBAL_OPTION_RESULT_KIND.invalid,
82
+ issue: CLI_GLOBAL_OPTION_ISSUE_KIND.invalidValue,
83
+ };
84
+ }
85
+ return {
86
+ kind: CLI_GLOBAL_OPTION_RESULT_KIND.resolved,
87
+ value: value,
88
+ argv: normalized,
89
+ };
90
+ }
@@ -36,6 +36,7 @@ export type CliOptionAction = {
36
36
  };
37
37
  export type CompiledCliEndpoint = {
38
38
  readonly endpoint: EntryTreeEndpoint;
39
+ readonly binding: CliEntryBinding;
39
40
  readonly help: CliEntryBinding["help"];
40
41
  readonly options: readonly CompiledCliOption[];
41
42
  readonly positionals: readonly CompiledCliPositional[];
@@ -1 +1 @@
1
- {"version":3,"file":"cli-compiler.d.ts","sourceRoot":"","sources":["../src/cli-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,eAAe,EAEf,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAG/E,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAUX,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,CAAC,qBAAqB,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,WAAW,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACtD,CAAC,GACF,CAAC,qBAAqB,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EACT,OAAO,wBAAwB,CAAC,MAAM,GACtC,OAAO,wBAAwB,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,sBAAsB,CAAC,UAAU,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,sBAAsB,CAAC,SAAS,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,OAAO,CACtB,iBAAiB,EACjB;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,KAAK,CAAA;KAAE,CAChD,CAAC;CACH,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9D,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,mBAAmB,CAgDrB"}
1
+ {"version":3,"file":"cli-compiler.d.ts","sourceRoot":"","sources":["../src/cli-compiler.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,eAAe,EAEf,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAG/E,eAAO,MAAM,sBAAsB;;;CAGzB,CAAC;AAUX,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,CAAC,qBAAqB,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,WAAW,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACtD,CAAC,GACF,CAAC,qBAAqB,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,KAAK,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEP,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EACT,OAAO,wBAAwB,CAAC,MAAM,GACtC,OAAO,wBAAwB,CAAC,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,sBAAsB,CAAC,UAAU,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,sBAAsB,CAAC,SAAS,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,OAAO,CACtB,iBAAiB,EACjB;QAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,eAAe,CAAC,KAAK,CAAA;KAAE,CAChD,CAAC;CACH,CAAC;AAEN,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC9D,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,mBAAmB,CAiDrB"}
@@ -34,6 +34,7 @@ export function compileCliBinding(endpoint, binding, location, issues) {
34
34
  }
35
35
  return {
36
36
  endpoint,
37
+ binding,
37
38
  help: binding.help,
38
39
  options,
39
40
  positionals,
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help-projection.d.ts","sourceRoot":"","sources":["../src/cli-help-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,cAAc,EAKd,cAAc,EAGd,UAAU,EACX,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4ChD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,cAAc,CAoBjB;AAkCD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,IAAI,CA2BN;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,IAAI,CAaN"}
1
+ {"version":3,"file":"cli-help-projection.d.ts","sourceRoot":"","sources":["../src/cli-help-projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,cAAc,EAKd,cAAc,EAGd,UAAU,EACX,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA4ChD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GAAG,cAAc,CAmBjB;AAkCD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,IAAI,CA2BN;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,IAAI,CAaN"}
@@ -31,7 +31,6 @@ export function createCliHelpSurface(input) {
31
31
  return {
32
32
  name: input.node.name,
33
33
  token: input.root ? null : input.segment.token,
34
- aliases: input.root ? [] : input.segment.aliases,
35
34
  description: input.node.description,
36
35
  remarks: input.node.documentation.remarks,
37
36
  relatedDocs: input.node.documentation.relatedDocs,
@@ -76,7 +76,6 @@ export type CliEntryBinding<Name extends string = string> = {
76
76
  };
77
77
  export type CliSegment = {
78
78
  readonly token: string;
79
- readonly aliases: readonly string[];
80
79
  readonly help: CliGroupHelp;
81
80
  };
82
81
  export type CliHelpExample = {
@@ -135,7 +134,6 @@ export declare function bindCliEntry<const Bindings extends readonly CliArgBindi
135
134
  }): EntryChannelBinding<typeof CHANNEL.cli, Bindings[number]["parameterName"]>;
136
135
  export declare function overrideCliSegment(segment: {
137
136
  readonly token: string;
138
- readonly aliases?: readonly string[];
139
137
  readonly help?: CliGroupHelpInput;
140
138
  }): ChannelSegmentOverride;
141
139
  type CliHelpOptionBase = {
@@ -173,7 +171,6 @@ export type CliHelpPositional = {
173
171
  export type CliHelpSurface = {
174
172
  readonly name: string;
175
173
  readonly token: string | null;
176
- readonly aliases: readonly string[];
177
174
  readonly description: string;
178
175
  readonly optionGroups: readonly CliHelpOptionGroup[];
179
176
  readonly positionals: readonly CliHelpPositional[];
@@ -198,6 +195,12 @@ export type CliHelpSurfaceLocation = {
198
195
  readonly surface: CliHelpSurface;
199
196
  readonly path: CliCommandPath;
200
197
  };
198
+ export type CliEndpointLocation = {
199
+ readonly endpoint: EntryTreeEndpoint;
200
+ readonly path: CliCommandPath;
201
+ /** The normalized CLI parameter binding compiled for this exact endpoint. */
202
+ readonly binding: CliEntryBinding;
203
+ };
201
204
  export type CliRouterResult = {
202
205
  readonly kind: typeof CLI_ROUTER_RESULT_KIND.resolved;
203
206
  readonly path: readonly string[];
@@ -234,6 +237,7 @@ export declare function isCliResolvedEndpoint<const Endpoint extends EntryTreeEn
234
237
  export interface CliRouter {
235
238
  readonly help: CliHelpSurface;
236
239
  readonly endpoints: readonly EntryTreeEndpoint[];
240
+ readonly endpointLocations: readonly CliEndpointLocation[];
237
241
  resolve(argv: readonly string[]): CliRouterResult;
238
242
  }
239
243
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"cli-model.d.ts","sourceRoot":"","sources":["../src/cli-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-model.d.ts","sourceRoot":"","sources":["../src/cli-model.ts"],"names":[],"mappings":"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"}
package/dist/cli-model.js CHANGED
@@ -28,7 +28,6 @@ export function bindCliEntry(binding) {
28
28
  export function overrideCliSegment(segment) {
29
29
  const payload = {
30
30
  token: segment.token,
31
- aliases: segment.aliases ?? [],
32
31
  help: normalizeCliGroupHelp(segment.help),
33
32
  };
34
33
  registerChannelPayload(PAYLOAD_KIND.cliSegment, payload);
@@ -8,6 +8,15 @@ export declare function findCliHelpSurface(root: CliHelpSurface, commandPath: Cl
8
8
  export declare function findCliHelpSurfaceLocation(root: CliHelpSurface, commandPath: CliCommandPath): CliHelpSurfaceLocation | null;
9
9
  export declare function renderCliHelp(surface: CliHelpSurface, context: CliHelpRenderContext): string;
10
10
  export declare function listCliHelpSurfaces(root: CliHelpSurface): readonly CliHelpSurfaceLocation[];
11
+ export type CliHelpSurfaceProjection = {
12
+ include(location: CliHelpSurfaceLocation): boolean;
13
+ compare?(left: CliHelpSurfaceLocation, right: CliHelpSurfaceLocation): number;
14
+ };
15
+ /**
16
+ * Projects one immutable help tree without recreating its structural fields.
17
+ * The root is always retained; `include` and `compare` are applied to children.
18
+ */
19
+ export declare function projectCliHelpSurface(root: CliHelpSurface, projection: CliHelpSurfaceProjection): CliHelpSurface;
11
20
  export declare function describeCliHelpOption(option: CliHelpOption): CliHelpOptionDescription;
12
21
  export declare function appendCliCommandPart(command: string, part: string): string;
13
22
  export declare function formatDefaultCliSubcommandHint(programName: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-presentation.d.ts","sourceRoot":"","sources":["../src/cli-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAiD1E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,cAAc,GAC1B,cAAc,GAAG,IAAI,CAEvB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,cAAc,GAC1B,sBAAsB,GAAG,IAAI,CAe/B;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAWR;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,cAAc,GACnB,SAAS,sBAAsB,EAAE,CAanC;AAqJD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,GACpB,wBAAwB,CAuB1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,CACb,eAAe,EACf;IACE,QAAQ,CAAC,IAAI,EACT,OAAO,sBAAsB,CAAC,cAAc,GAC5C,OAAO,sBAAsB,CAAC,iBAAiB,GAC/C,OAAO,sBAAsB,CAAC,YAAY,GAC1C,OAAO,sBAAsB,CAAC,gBAAgB,CAAC;CACpD,CACF,GACA,MAAM,CAcR;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;IACtD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C,GAAG,MAAM,CAUT;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,cAAc,EAAE,MAAM,GACrB,SAAS,MAAM,EAAE,CAiBnB"}
1
+ {"version":3,"file":"cli-presentation.d.ts","sourceRoot":"","sources":["../src/cli-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE3B,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAiD1E,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,cAAc,GAC1B,cAAc,GAAG,IAAI,CAEvB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,cAAc,GAC1B,sBAAsB,GAAG,IAAI,CAc/B;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,oBAAoB,GAC5B,MAAM,CAWR;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,cAAc,GACnB,SAAS,sBAAsB,EAAE,CAanC;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,CAAC,QAAQ,EAAE,sBAAsB,GAAG,OAAO,CAAC;IACnD,OAAO,CAAC,CAAC,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAAC;CAC/E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,wBAAwB,GACnC,cAAc,CAsBhB;AAmJD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,GACpB,wBAAwB,CAuB1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,CACb,eAAe,EACf;IACE,QAAQ,CAAC,IAAI,EACT,OAAO,sBAAsB,CAAC,cAAc,GAC5C,OAAO,sBAAsB,CAAC,iBAAiB,GAC/C,OAAO,sBAAsB,CAAC,YAAY,GAC1C,OAAO,sBAAsB,CAAC,gBAAgB,CAAC;CACpD,CACF,GACA,MAAM,CAcR;AAED,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,+BAA+B,CAAC;IACtD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C,GAAG,MAAM,CAUT;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,cAAc,EAAE,MAAM,GACrB,SAAS,MAAM,EAAE,CAiBnB"}
@@ -47,7 +47,7 @@ export function findCliHelpSurfaceLocation(root, commandPath) {
47
47
  let current = root;
48
48
  const path = [];
49
49
  for (const token of commandPath) {
50
- const child = current.children.find((candidate) => candidate.token === token || candidate.aliases.includes(token));
50
+ const child = current.children.find((candidate) => candidate.token === token);
51
51
  if (!child) {
52
52
  return null;
53
53
  }
@@ -80,6 +80,34 @@ export function listCliHelpSurfaces(root) {
80
80
  }
81
81
  return locations;
82
82
  }
83
+ /**
84
+ * Projects one immutable help tree without recreating its structural fields.
85
+ * The root is always retained; `include` and `compare` are applied to children.
86
+ */
87
+ export function projectCliHelpSurface(root, projection) {
88
+ const projected = new Map();
89
+ const pending = [...listCliHelpSurfaces(root)].reverse();
90
+ for (const location of pending) {
91
+ const children = location.surface.children.flatMap((child) => {
92
+ const childPath = [...location.path, child.token ?? child.name];
93
+ const childLocation = { surface: child, path: childPath };
94
+ if (!projection.include(childLocation))
95
+ return [];
96
+ const projectedChild = projected.get(child);
97
+ return projectedChild === undefined
98
+ ? []
99
+ : [{ surface: projectedChild, path: childPath }];
100
+ });
101
+ if (projection.compare !== undefined) {
102
+ children.sort(projection.compare);
103
+ }
104
+ projected.set(location.surface, {
105
+ ...location.surface,
106
+ children: children.map((child) => child.surface),
107
+ });
108
+ }
109
+ return projected.get(root) ?? { ...root, children: [] };
110
+ }
83
111
  function joinCliHelpSections(sections) {
84
112
  return sections
85
113
  .flatMap((section) => (section === null ? [] : [section]))
@@ -100,8 +128,8 @@ function createCliHelpCommandsSection(surface) {
100
128
  return [
101
129
  CLI_HELP_TEXT.commandsHeading,
102
130
  ...surface.children.map((child) => {
103
- const names = [child.token ?? child.name, ...child.aliases].join(CLI_HELP_LAYOUT.detailSeparator);
104
- return `${CLI_HELP_LAYOUT.itemIndent}${names}${CLI_HELP_LAYOUT.columnSeparator}${child.description}`;
131
+ const name = child.token ?? child.name;
132
+ return `${CLI_HELP_LAYOUT.itemIndent}${name}${CLI_HELP_LAYOUT.columnSeparator}${child.description}`;
105
133
  }),
106
134
  ];
107
135
  }
@@ -0,0 +1,104 @@
1
+ import { type JsonValue } from "@alpacakit/core";
2
+ import { z } from "zod";
3
+ export declare const CLI_RESULT_STATUS: {
4
+ readonly completed: "completed";
5
+ readonly rejected: "rejected";
6
+ readonly partial: "partial";
7
+ };
8
+ export declare const CLI_RESULT_CODE: {
9
+ readonly ok: "ok";
10
+ };
11
+ /**
12
+ * Process exit classes for commands that produced a typed result. Unexpected
13
+ * process faults sit outside this contract and are projected by the host.
14
+ */
15
+ export declare const CLI_COMMAND_EXIT_CODE: {
16
+ readonly success: 0;
17
+ readonly rejected: 1;
18
+ readonly syntax: 2;
19
+ };
20
+ export declare const CLI_OUTPUT_FORMAT: {
21
+ readonly text: "text";
22
+ readonly json: "json";
23
+ };
24
+ export type CliOutputFormat = (typeof CLI_OUTPUT_FORMAT)[keyof typeof CLI_OUTPUT_FORMAT];
25
+ export type CliResultStatus = (typeof CLI_RESULT_STATUS)[keyof typeof CLI_RESULT_STATUS];
26
+ export type CliCommandExitCode = (typeof CLI_COMMAND_EXIT_CODE)[keyof typeof CLI_COMMAND_EXIT_CODE];
27
+ export type CliDataVersion = `${string}/v${number}`;
28
+ export type CliNextAction = {
29
+ readonly label: string;
30
+ readonly command: string;
31
+ };
32
+ export type CliResultEnvelope<Data extends JsonValue = JsonValue> = {
33
+ readonly envelopeVersion: 1;
34
+ readonly dataVersion: CliDataVersion;
35
+ readonly command: string;
36
+ readonly status: CliResultStatus;
37
+ readonly code: string;
38
+ readonly data: Data;
39
+ readonly nextActions: readonly CliNextAction[];
40
+ };
41
+ /** One typed command result from which text and the JSON envelope are projected. */
42
+ export type CliResultProjection<Data extends JsonValue = JsonValue> = {
43
+ readonly status: CliResultStatus;
44
+ readonly code: string;
45
+ readonly data: Data;
46
+ readonly nextActions: readonly CliNextAction[];
47
+ readonly text: string;
48
+ };
49
+ /** A command's typed result paired with its process exit classification. */
50
+ export type CliCommandExecutionResult<Data extends JsonValue = JsonValue> = {
51
+ readonly exitCode: CliCommandExitCode;
52
+ readonly result: CliResultProjection<Data>;
53
+ };
54
+ export declare const cliCommandExecutionResultSchema: z.ZodReadonly<z.ZodObject<{
55
+ exitCode: z.ZodEnum<{
56
+ readonly success: 0;
57
+ readonly rejected: 1;
58
+ readonly syntax: 2;
59
+ }>;
60
+ result: z.ZodReadonly<z.ZodObject<{
61
+ status: z.ZodEnum<{
62
+ completed: "completed";
63
+ rejected: "rejected";
64
+ partial: "partial";
65
+ }>;
66
+ code: z.ZodString;
67
+ data: z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>;
68
+ nextActions: z.ZodReadonly<z.ZodArray<z.ZodReadonly<z.ZodObject<{
69
+ label: z.ZodString;
70
+ command: z.ZodString;
71
+ }, z.core.$strict>>>>;
72
+ text: z.ZodString;
73
+ }, z.core.$strict>>;
74
+ }, z.core.$strict>>;
75
+ export declare function createCliResultEnvelope<Data extends JsonValue>(input: {
76
+ readonly dataVersion: CliDataVersion;
77
+ readonly command: string;
78
+ readonly status: CliResultStatus;
79
+ readonly code: string;
80
+ readonly data: Data;
81
+ readonly nextActions?: readonly CliNextAction[];
82
+ }): CliResultEnvelope<Data>;
83
+ export declare function createCliResultProjection<Data extends JsonValue>(input: {
84
+ readonly status: CliResultStatus;
85
+ readonly code: string;
86
+ readonly data: Data;
87
+ readonly nextActions?: readonly CliNextAction[];
88
+ readonly text: string;
89
+ }): CliResultProjection<Data>;
90
+ export declare function createCliCommandExecutionResult<Data extends JsonValue>(input: {
91
+ readonly exitCode: CliCommandExitCode;
92
+ readonly status: CliResultStatus;
93
+ readonly code: string;
94
+ readonly data: Data;
95
+ readonly nextActions?: readonly CliNextAction[];
96
+ readonly text: string;
97
+ }): CliCommandExecutionResult<Data>;
98
+ export declare function projectCliResultEnvelope<Data extends JsonValue>(input: {
99
+ readonly dataVersion: CliDataVersion;
100
+ readonly command: string;
101
+ readonly result: CliResultProjection<Data>;
102
+ }): CliResultEnvelope<Data>;
103
+ export declare function verifyCliResultEnvelope(input: unknown): CliResultEnvelope;
104
+ //# sourceMappingURL=cli-result-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-result-envelope.d.ts","sourceRoot":"","sources":["../src/cli-result-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,eAAO,MAAM,eAAe;;CAElB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;CAIxB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,kBAAkB,GAC5B,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;AAEpD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,IAAI;IAClE,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;CAChD,CAAC;AAEF,oFAAoF;AACpF,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,IAAI;IACpE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,yBAAyB,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,IAAI;IAC1E,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;CAC5C,CAAC;AAkBF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;mBAwB/B,CAAC;AAwBd,wBAAgB,uBAAuB,CAAC,IAAI,SAAS,SAAS,EAAE,KAAK,EAAE;IACrE,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACjD,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAU1B;AAED,wBAAgB,yBAAyB,CAAC,IAAI,SAAS,SAAS,EAAE,KAAK,EAAE;IACvE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAkB5B;AAED,wBAAgB,+BAA+B,CAAC,IAAI,SAAS,SAAS,EAAE,KAAK,EAAE;IAC7E,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAalC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,SAAS,EAAE,KAAK,EAAE;IACtE,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;CAC5C,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAS1B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAEzE"}
@@ -0,0 +1,137 @@
1
+ import { jsonValueSchema } from "@alpacakit/core";
2
+ import { z } from "zod";
3
+ export const CLI_RESULT_STATUS = {
4
+ completed: "completed",
5
+ rejected: "rejected",
6
+ partial: "partial",
7
+ };
8
+ export const CLI_RESULT_CODE = {
9
+ ok: "ok",
10
+ };
11
+ /**
12
+ * Process exit classes for commands that produced a typed result. Unexpected
13
+ * process faults sit outside this contract and are projected by the host.
14
+ */
15
+ export const CLI_COMMAND_EXIT_CODE = {
16
+ success: 0,
17
+ rejected: 1,
18
+ syntax: 2,
19
+ };
20
+ export const CLI_OUTPUT_FORMAT = {
21
+ text: "text",
22
+ json: "json",
23
+ };
24
+ const cliNextActionSchema = z
25
+ .object({ label: z.string(), command: z.string() })
26
+ .strict()
27
+ .readonly();
28
+ const cliResultProjectionSchema = z
29
+ .object({
30
+ status: z.enum(Object.values(CLI_RESULT_STATUS)),
31
+ code: z.string().min(1),
32
+ data: jsonValueSchema,
33
+ nextActions: z.array(cliNextActionSchema).readonly(),
34
+ text: z.string(),
35
+ })
36
+ .strict()
37
+ .readonly();
38
+ export const cliCommandExecutionResultSchema = z
39
+ .object({
40
+ exitCode: z.enum(CLI_COMMAND_EXIT_CODE),
41
+ result: cliResultProjectionSchema,
42
+ })
43
+ .strict()
44
+ .superRefine((execution, context) => {
45
+ const expectedExitCode = execution.result.status === CLI_RESULT_STATUS.completed
46
+ ? CLI_COMMAND_EXIT_CODE.success
47
+ : CLI_COMMAND_EXIT_CODE.rejected;
48
+ const valid = execution.result.status === CLI_RESULT_STATUS.rejected
49
+ ? execution.exitCode === CLI_COMMAND_EXIT_CODE.rejected ||
50
+ execution.exitCode === CLI_COMMAND_EXIT_CODE.syntax
51
+ : execution.exitCode === expectedExitCode;
52
+ if (!valid) {
53
+ context.addIssue({
54
+ code: "custom",
55
+ message: "Completed results require exit 0, partial results require exit 1, and rejected results require exit 1 or 2.",
56
+ });
57
+ }
58
+ })
59
+ .readonly();
60
+ const cliResultEnvelopeSchema = z
61
+ .object({
62
+ envelopeVersion: z.literal(1),
63
+ dataVersion: z.string().regex(/^[a-z0-9-]+\/v[1-9][0-9]*$/u),
64
+ command: z.string(),
65
+ status: z.enum(Object.values(CLI_RESULT_STATUS)),
66
+ code: z.string().min(1),
67
+ data: jsonValueSchema,
68
+ nextActions: z.array(cliNextActionSchema).readonly(),
69
+ })
70
+ .strict()
71
+ .superRefine((document, context) => {
72
+ const completed = document.status === CLI_RESULT_STATUS.completed;
73
+ if (completed !== (document.code === CLI_RESULT_CODE.ok)) {
74
+ context.addIssue({
75
+ code: "custom",
76
+ message: "Completed results require code=ok and failures forbid it.",
77
+ });
78
+ }
79
+ })
80
+ .readonly();
81
+ export function createCliResultEnvelope(input) {
82
+ return verifyCliResultEnvelope({
83
+ envelopeVersion: 1,
84
+ dataVersion: input.dataVersion,
85
+ command: input.command,
86
+ status: input.status,
87
+ code: input.code,
88
+ data: input.data,
89
+ nextActions: input.nextActions ?? [],
90
+ });
91
+ }
92
+ export function createCliResultProjection(input) {
93
+ const verified = createCliResultEnvelope({
94
+ dataVersion: "projection/v1",
95
+ command: "projection",
96
+ status: input.status,
97
+ code: input.code,
98
+ data: input.data,
99
+ ...(input.nextActions === undefined
100
+ ? {}
101
+ : { nextActions: input.nextActions }),
102
+ });
103
+ return Object.freeze({
104
+ status: verified.status,
105
+ code: verified.code,
106
+ data: verified.data,
107
+ nextActions: verified.nextActions,
108
+ text: input.text,
109
+ });
110
+ }
111
+ export function createCliCommandExecutionResult(input) {
112
+ return cliCommandExecutionResultSchema.parse({
113
+ exitCode: input.exitCode,
114
+ result: createCliResultProjection({
115
+ status: input.status,
116
+ code: input.code,
117
+ data: input.data,
118
+ ...(input.nextActions === undefined
119
+ ? {}
120
+ : { nextActions: input.nextActions }),
121
+ text: input.text,
122
+ }),
123
+ });
124
+ }
125
+ export function projectCliResultEnvelope(input) {
126
+ return createCliResultEnvelope({
127
+ dataVersion: input.dataVersion,
128
+ command: input.command,
129
+ status: input.result.status,
130
+ code: input.result.code,
131
+ data: input.result.data,
132
+ nextActions: input.result.nextActions,
133
+ });
134
+ }
135
+ export function verifyCliResultEnvelope(input) {
136
+ return cliResultEnvelopeSchema.parse(input);
137
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"cli-tree.d.ts","sourceRoot":"","sources":["../src/cli-tree.ts"],"names":[],"mappings":"AAaA,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EACV,mBAAmB,EAIpB,MAAM,YAAY,CAAC;AAuDpB,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CAOpE"}
1
+ {"version":3,"file":"cli-tree.d.ts","sourceRoot":"","sources":["../src/cli-tree.ts"],"names":[],"mappings":"AAaA,OAAO,EAKL,KAAK,SAAS,EAIf,MAAM,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,YAAY,CAAC;AAkDpB,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CASpE"}
package/dist/cli-tree.js CHANGED
@@ -22,10 +22,6 @@ const CLI_PARSE_RESULT_KIND = {
22
22
  parsed: "parsed",
23
23
  raw: "raw",
24
24
  };
25
- const CLI_SEGMENT_NAME_KIND = {
26
- alias: "alias",
27
- token: "token",
28
- };
29
25
  const CLI_TREE_VALIDATION_ISSUE = {
30
26
  subcommandHintWithoutChildren: "CLI subcommand hint requires at least one child command",
31
27
  };
@@ -35,14 +31,16 @@ const EMPTY_CLI_GROUP_HELP = {
35
31
  };
36
32
  export function createCliRouter(tree) {
37
33
  const root = compileCliTree(tree);
34
+ const endpointLocations = listCliEndpointLocations(root);
38
35
  return {
39
36
  help: root.help,
40
- endpoints: listCliEndpoints(root),
37
+ endpoints: endpointLocations.map((location) => location.endpoint),
38
+ endpointLocations,
41
39
  resolve: (argv) => resolveCli(root, argv),
42
40
  };
43
41
  }
44
- function listCliEndpoints(root) {
45
- const endpoints = [];
42
+ function listCliEndpointLocations(root) {
43
+ const locations = [];
46
44
  const visited = new Set();
47
45
  const pending = [root];
48
46
  while (pending.length > 0) {
@@ -52,25 +50,36 @@ function listCliEndpoints(root) {
52
50
  }
53
51
  visited.add(node);
54
52
  if (node.endpoint !== null) {
55
- endpoints.push(node.endpoint.endpoint);
53
+ locations.push({
54
+ endpoint: node.endpoint.endpoint,
55
+ path: node.path.slice(1),
56
+ binding: node.endpoint.binding,
57
+ });
56
58
  }
57
59
  pending.push(...node.childByToken.values());
58
60
  }
59
- return endpoints;
61
+ return locations;
60
62
  }
61
63
  function compileCliTree(tree) {
62
64
  const issues = [...validateEntryTreeStructure(tree)];
63
65
  const nodeRecords = new Map();
64
- visitEntryTree(tree, {
65
- visitNode(node, path) {
66
- nodeRecords.set(node, {
67
- path,
68
- segment: cliSegmentFor(node, path, node === tree.root, issues),
69
- endpoint: cliEndpointFor(node, path, issues),
70
- });
71
- },
72
- visitEndpoint() { },
73
- });
66
+ const nodeQueue = [{ node: tree.root, parentPath: [], root: true }];
67
+ for (const current of nodeQueue) {
68
+ const segment = cliSegmentFor(current.node, current.parentPath, current.root, issues);
69
+ const path = current.root
70
+ ? [current.node.name]
71
+ : [...current.parentPath, segment.token];
72
+ nodeRecords.set(current.node, {
73
+ path,
74
+ segment,
75
+ endpoint: cliEndpointFor(current.node, path, issues),
76
+ });
77
+ nodeQueue.push(...current.node.children.map((node) => ({
78
+ node,
79
+ parentPath: path,
80
+ root: false,
81
+ })));
82
+ }
74
83
  const publicNodes = new Map();
75
84
  const pending = [];
76
85
  visitEntryTree(tree, {
@@ -109,9 +118,6 @@ function compileCliTree(tree) {
109
118
  const childByToken = new Map();
110
119
  for (const child of children) {
111
120
  childByToken.set(child.segment.token, child);
112
- for (const alias of child.segment.aliases) {
113
- childByToken.set(alias, child);
114
- }
115
121
  }
116
122
  const compiledNode = {
117
123
  path: record.path,
@@ -143,31 +149,28 @@ function cliSegmentFor(node, path, root, issues) {
143
149
  const override = node.segments.find((row) => row.channel === CHANNEL.cli);
144
150
  let segment;
145
151
  if (!override) {
146
- segment = { token: node.name, aliases: [], help: EMPTY_CLI_GROUP_HELP };
152
+ segment = { token: node.name, help: EMPTY_CLI_GROUP_HELP };
147
153
  }
148
154
  else if (!isCliSegment(override.segment)) {
149
155
  issues.push(`${formatTreePath(path)}: invalid CLI segment override`);
150
- segment = { token: node.name, aliases: [], help: EMPTY_CLI_GROUP_HELP };
156
+ segment = { token: node.name, help: EMPTY_CLI_GROUP_HELP };
151
157
  }
152
158
  else {
153
159
  segment = override.segment;
154
160
  }
155
161
  validateCliHelpExamples(segment.help.examples, formatTreePath(path), issues);
156
162
  if (!root) {
157
- validateCliCommandToken(segment.token, CLI_SEGMENT_NAME_KIND.token, path, issues);
158
- for (const alias of segment.aliases) {
159
- validateCliCommandToken(alias, CLI_SEGMENT_NAME_KIND.alias, path, issues);
160
- }
163
+ validateCliCommandToken(segment.token, path, issues);
161
164
  }
162
165
  return segment;
163
166
  }
164
- function validateCliCommandToken(token, kind, path, issues) {
167
+ function validateCliCommandToken(token, path, issues) {
165
168
  if (token.length === 0) {
166
- issues.push(`${formatTreePath(path)}: CLI segment ${kind} must not be empty`);
169
+ issues.push(`${formatTreePath(path)}: CLI segment token must not be empty`);
167
170
  return;
168
171
  }
169
172
  if (classifyCliArgumentToken(token) !== CLI_ARGUMENT_TOKEN_KIND.value) {
170
- issues.push(`${formatTreePath(path)}: CLI segment ${kind} ${JSON.stringify(token)} is unreachable`);
173
+ issues.push(`${formatTreePath(path)}: CLI segment token ${JSON.stringify(token)} is unreachable`);
171
174
  }
172
175
  }
173
176
  function cliEndpointFor(node, path, issues) {
@@ -192,14 +195,13 @@ function cliEndpointFor(node, path, issues) {
192
195
  function validateCliChildren(path, children, issues) {
193
196
  const tokens = new Map();
194
197
  for (const child of children) {
195
- for (const token of [child.segment.token, ...child.segment.aliases]) {
196
- const owner = tokens.get(token);
197
- if (owner !== undefined) {
198
- issues.push(`${formatTreePath(path)}: CLI sibling token/alias collision ${JSON.stringify(token)} between ${owner} and ${child.help.name}`);
199
- }
200
- else {
201
- tokens.set(token, child.help.name);
202
- }
198
+ const token = child.segment.token;
199
+ const owner = tokens.get(token);
200
+ if (owner !== undefined) {
201
+ issues.push(`${formatTreePath(path)}: CLI sibling token collision ${JSON.stringify(token)} between ${owner} and ${child.help.name}`);
202
+ }
203
+ else {
204
+ tokens.set(token, child.help.name);
203
205
  }
204
206
  }
205
207
  }
package/dist/cli.d.ts CHANGED
@@ -1,6 +1,8 @@
1
+ export * from "./cli-application.js";
1
2
  export * from "./cli-executor.js";
2
3
  export * from "./cli-model.js";
3
4
  export * from "./cli-presentation.js";
5
+ export * from "./cli-result-envelope.js";
4
6
  export { createCliRouter } from "./cli-tree.js";
5
7
  export { CLI_BOOLEAN_MODE, CLI_HELP_USAGE_KIND, CLI_OPTION_KIND, CLI_OPTION_VALUE_MODE, } from "./cli-values.js";
6
8
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
package/dist/cli.js CHANGED
@@ -1,5 +1,7 @@
1
+ export * from "./cli-application.js";
1
2
  export * from "./cli-executor.js";
2
3
  export * from "./cli-model.js";
3
4
  export * from "./cli-presentation.js";
5
+ export * from "./cli-result-envelope.js";
4
6
  export { createCliRouter } from "./cli-tree.js";
5
7
  export { CLI_BOOLEAN_MODE, CLI_HELP_USAGE_KIND, CLI_OPTION_KIND, CLI_OPTION_VALUE_MODE, } from "./cli-values.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alpacakit/channels",
3
- "version": "0.1.0-beta.35",
3
+ "version": "0.1.0-beta.36",
4
4
  "description": "Neutral multi-channel entry definitions with CLI and MCP binding adapters.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -29,7 +29,7 @@
29
29
  "LICENSE"
30
30
  ],
31
31
  "dependencies": {
32
- "@alpacakit/core": "0.1.0-beta.35"
32
+ "@alpacakit/core": "0.1.0-beta.36"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "zod": "^4.3.6"