pi-agent-flow 2.2.33 → 2.3.0
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/agents/craft.md +1 -1
- package/agents/debug.md +1 -1
- package/agents/ideas.md +1 -1
- package/dist/batch/batch-bash.d.ts +6 -1
- package/dist/batch/batch-bash.d.ts.map +1 -1
- package/dist/batch/batch-bash.js +7 -2
- package/dist/batch/batch-bash.js.map +1 -1
- package/dist/batch/constants.d.ts +2 -0
- package/dist/batch/constants.d.ts.map +1 -1
- package/dist/batch/execute.d.ts.map +1 -1
- package/dist/batch/execute.js +13 -1
- package/dist/batch/execute.js.map +1 -1
- package/dist/batch/fuzzy-edit.d.ts +1 -1
- package/dist/batch/fuzzy-edit.d.ts.map +1 -1
- package/dist/batch/fuzzy-edit.js +43 -17
- package/dist/batch/fuzzy-edit.js.map +1 -1
- package/dist/batch/index.d.ts +6 -68
- package/dist/batch/index.d.ts.map +1 -1
- package/dist/batch/index.js +7 -445
- package/dist/batch/index.js.map +1 -1
- package/dist/batch/summary.d.ts.map +1 -1
- package/dist/batch/summary.js +146 -0
- package/dist/batch/summary.js.map +1 -1
- package/dist/cli/batch-read.d.ts +20 -0
- package/dist/cli/batch-read.d.ts.map +1 -0
- package/dist/cli/batch-read.js +267 -0
- package/dist/cli/batch-read.js.map +1 -0
- package/dist/cli/batch.d.ts +20 -0
- package/dist/cli/batch.d.ts.map +1 -0
- package/dist/cli/batch.js +252 -0
- package/dist/cli/batch.js.map +1 -0
- package/dist/cli/chain.d.ts +24 -0
- package/dist/cli/chain.d.ts.map +1 -0
- package/dist/cli/chain.js +166 -0
- package/dist/cli/chain.js.map +1 -0
- package/dist/cli/exec/bash.d.ts +11 -0
- package/dist/cli/exec/bash.d.ts.map +1 -0
- package/dist/cli/exec/bash.js +63 -0
- package/dist/cli/exec/bash.js.map +1 -0
- package/dist/cli/exec/delete.d.ts +10 -0
- package/dist/cli/exec/delete.d.ts.map +1 -0
- package/dist/cli/exec/delete.js +21 -0
- package/dist/cli/exec/delete.js.map +1 -0
- package/dist/cli/exec/edit.d.ts +10 -0
- package/dist/cli/exec/edit.d.ts.map +1 -0
- package/dist/cli/exec/edit.js +47 -0
- package/dist/cli/exec/edit.js.map +1 -0
- package/dist/cli/exec/index.d.ts +10 -0
- package/dist/cli/exec/index.d.ts.map +1 -0
- package/dist/cli/exec/index.js +10 -0
- package/dist/cli/exec/index.js.map +1 -0
- package/dist/cli/exec/patch.d.ts +10 -0
- package/dist/cli/exec/patch.d.ts.map +1 -0
- package/dist/cli/exec/patch.js +23 -0
- package/dist/cli/exec/patch.js.map +1 -0
- package/dist/cli/exec/poll.d.ts +12 -0
- package/dist/cli/exec/poll.d.ts.map +1 -0
- package/dist/cli/exec/poll.js +59 -0
- package/dist/cli/exec/poll.js.map +1 -0
- package/dist/cli/exec/read.d.ts +10 -0
- package/dist/cli/exec/read.d.ts.map +1 -0
- package/dist/cli/exec/read.js +54 -0
- package/dist/cli/exec/read.js.map +1 -0
- package/dist/cli/exec/rg.d.ts +10 -0
- package/dist/cli/exec/rg.d.ts.map +1 -0
- package/dist/cli/exec/rg.js +32 -0
- package/dist/cli/exec/rg.js.map +1 -0
- package/dist/cli/exec/web.d.ts +13 -0
- package/dist/cli/exec/web.d.ts.map +1 -0
- package/dist/cli/exec/web.js +47 -0
- package/dist/cli/exec/web.js.map +1 -0
- package/dist/cli/exec/write.d.ts +10 -0
- package/dist/cli/exec/write.d.ts.map +1 -0
- package/dist/cli/exec/write.js +26 -0
- package/dist/cli/exec/write.js.map +1 -0
- package/dist/cli/flags/bash.d.ts +3 -0
- package/dist/cli/flags/bash.d.ts.map +1 -0
- package/dist/cli/flags/bash.js +6 -0
- package/dist/cli/flags/bash.js.map +1 -0
- package/dist/cli/flags/delete.d.ts +3 -0
- package/dist/cli/flags/delete.d.ts.map +1 -0
- package/dist/cli/flags/delete.js +2 -0
- package/dist/cli/flags/delete.js.map +1 -0
- package/dist/cli/flags/edit.d.ts +3 -0
- package/dist/cli/flags/edit.d.ts.map +1 -0
- package/dist/cli/flags/edit.js +7 -0
- package/dist/cli/flags/edit.js.map +1 -0
- package/dist/cli/flags/index.d.ts +10 -0
- package/dist/cli/flags/index.d.ts.map +1 -0
- package/dist/cli/flags/index.js +10 -0
- package/dist/cli/flags/index.js.map +1 -0
- package/dist/cli/flags/patch.d.ts +3 -0
- package/dist/cli/flags/patch.d.ts.map +1 -0
- package/dist/cli/flags/patch.js +4 -0
- package/dist/cli/flags/patch.js.map +1 -0
- package/dist/cli/flags/poll.d.ts +3 -0
- package/dist/cli/flags/poll.d.ts.map +1 -0
- package/dist/cli/flags/poll.js +4 -0
- package/dist/cli/flags/poll.js.map +1 -0
- package/dist/cli/flags/read.d.ts +3 -0
- package/dist/cli/flags/read.d.ts.map +1 -0
- package/dist/cli/flags/read.js +6 -0
- package/dist/cli/flags/read.js.map +1 -0
- package/dist/cli/flags/rg.d.ts +3 -0
- package/dist/cli/flags/rg.d.ts.map +1 -0
- package/dist/cli/flags/rg.js +9 -0
- package/dist/cli/flags/rg.js.map +1 -0
- package/dist/cli/flags/web.d.ts +3 -0
- package/dist/cli/flags/web.d.ts.map +1 -0
- package/dist/cli/flags/web.js +6 -0
- package/dist/cli/flags/web.js.map +1 -0
- package/dist/cli/flags/write.d.ts +3 -0
- package/dist/cli/flags/write.d.ts.map +1 -0
- package/dist/cli/flags/write.js +4 -0
- package/dist/cli/flags/write.js.map +1 -0
- package/dist/cli/flow.d.ts +33 -0
- package/dist/cli/flow.d.ts.map +1 -0
- package/dist/cli/flow.js +345 -0
- package/dist/cli/flow.js.map +1 -0
- package/dist/cli/format.d.ts +12 -0
- package/dist/cli/format.d.ts.map +1 -0
- package/dist/cli/format.js +29 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/help.d.ts +14 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +31 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/parse.d.ts +24 -0
- package/dist/cli/parse.d.ts.map +1 -0
- package/dist/cli/parse.js +165 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/cli/register.d.ts +73 -0
- package/dist/cli/register.d.ts.map +1 -0
- package/dist/cli/register.js +105 -0
- package/dist/cli/register.js.map +1 -0
- package/dist/cli/tokenize.d.ts +9 -0
- package/dist/cli/tokenize.d.ts.map +1 -0
- package/dist/cli/tokenize.js +80 -0
- package/dist/cli/tokenize.js.map +1 -0
- package/dist/core2/snapshot.d.ts.map +1 -1
- package/dist/core2/snapshot.js +8 -1
- package/dist/core2/snapshot.js.map +1 -1
- package/dist/flow/agents.d.ts +2 -0
- package/dist/flow/agents.d.ts.map +1 -1
- package/dist/flow/agents.js +2 -0
- package/dist/flow/agents.js.map +1 -1
- package/dist/flow/executor.d.ts.map +1 -1
- package/dist/flow/executor.js +1 -0
- package/dist/flow/executor.js.map +1 -1
- package/dist/flow/flow-args.js +1 -1
- package/dist/flow/flow-args.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +157 -239
- package/dist/index.js.map +1 -1
- package/dist/steering/flow-prompt.js +2 -2
- package/dist/steering/flow-prompt.js.map +1 -1
- package/dist/steering/sliding-prompt.d.ts.map +1 -1
- package/dist/steering/sliding-prompt.js +9 -21
- package/dist/steering/sliding-prompt.js.map +1 -1
- package/dist/tools/trace.d.ts +12 -7
- package/dist/tools/trace.d.ts.map +1 -1
- package/dist/tools/trace.js +155 -194
- package/dist/tools/trace.js.map +1 -1
- package/dist/tools/web-ops.d.ts +40 -0
- package/dist/tools/web-ops.d.ts.map +1 -1
- package/dist/tools/web-ops.js +2 -2
- package/dist/tools/web-ops.js.map +1 -1
- package/package.json +1 -1
- package/dist/batch/normalize.d.ts +0 -4
- package/dist/batch/normalize.d.ts.map +0 -1
- package/dist/batch/normalize.js +0 -85
- package/dist/batch/normalize.js.map +0 -1
- package/dist/flow/flow-args-prep.d.ts +0 -28
- package/dist/flow/flow-args-prep.d.ts.map +0 -1
- package/dist/flow/flow-args-prep.js +0 -83
- package/dist/flow/flow-args-prep.js.map +0 -1
- package/dist/flow/flow-dispatch-prep.d.ts +0 -11
- package/dist/flow/flow-dispatch-prep.d.ts.map +0 -1
- package/dist/flow/flow-dispatch-prep.js +0 -40
- package/dist/flow/flow-dispatch-prep.js.map +0 -1
- package/dist/flow/op-aliases.d.ts +0 -51
- package/dist/flow/op-aliases.d.ts.map +0 -1
- package/dist/flow/op-aliases.js +0 -185
- package/dist/flow/op-aliases.js.map +0 -1
- package/dist/tools/array-coerce.d.ts +0 -9
- package/dist/tools/array-coerce.d.ts.map +0 -1
- package/dist/tools/array-coerce.js +0 -47
- package/dist/tools/array-coerce.js.map +0 -1
- package/dist/tools/trace-dispatch-prep.d.ts +0 -10
- package/dist/tools/trace-dispatch-prep.d.ts.map +0 -1
- package/dist/tools/trace-dispatch-prep.js +0 -199
- package/dist/tools/trace-dispatch-prep.js.map +0 -1
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const READ_FLAGS = {
|
|
2
|
+
start: { short: "s", type: "number", description: "1-indexed start line" },
|
|
3
|
+
limit: { short: "l", type: "number", description: "Maximum lines to read" },
|
|
4
|
+
end: { short: "e", type: "number", description: "End line (used with -s)" },
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/cli/flags/read.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAa;IAClC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;IAC1E,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;IAC3E,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;CAC5E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rg.d.ts","sourceRoot":"","sources":["../../../src/cli/flags/rg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,QAAQ,EAAE,QAOtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const RG_FLAGS = {
|
|
2
|
+
query: { short: "q", type: "string", description: "Search pattern for rg" },
|
|
3
|
+
"ignore-case": { short: "i", type: "boolean", description: "Ignore case for rg" },
|
|
4
|
+
"files-only": { short: "l", type: "boolean", description: "Return filenames only for rg" },
|
|
5
|
+
type: { short: "t", type: "string", description: "Type filter for rg (e.g., ts, js)" },
|
|
6
|
+
"max-count": { short: "n", type: "number", description: "Max matches per file for rg" },
|
|
7
|
+
"ignore-level": { short: "u", type: "number", description: "Ignore level for rg (0-3)" },
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=rg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rg.js","sourceRoot":"","sources":["../../../src/cli/flags/rg.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;IAC3E,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACjF,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAC1F,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACtF,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;IACvF,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;CACzF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/cli/flags/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,SAAS,EAAE,QAIvB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const WEB_FLAGS = {
|
|
2
|
+
query: { short: "q", type: "string", description: "Search query (for web search)" },
|
|
3
|
+
url: { short: "u", type: "string", description: "URL to fetch (for web fetch)" },
|
|
4
|
+
format: { short: "f", type: "string", description: "Output format for fetch: markdown, text, html (default: markdown)" },
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/cli/flags/web.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,SAAS,GAAa;IACjC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;IACnF,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;IAChF,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mEAAmE,EAAE;CACzH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/cli/flags/write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,WAAW,EAAE,QAEzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/cli/flags/write.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAa;IACnC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE;CAC1F,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* flow — bash-style CLI tool.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the legacy flow mega-schema with a simple cmd string
|
|
5
|
+
* that uses flags and chaining.
|
|
6
|
+
*/
|
|
7
|
+
export declare const FlowCliParams: any;
|
|
8
|
+
export declare const FLOW_CLI_DESCRIPTION = "Spawns specialized agent flows \u2014 NOT a shell. Required per item: `--type` (one of: `scout` \u2022 `build` \u2022 `debug` \u2022 `audit` \u2022 `craft` \u2022 `ideas` \u2022 `trace`), `--intent`, `--aim`, `--concern`. Optional: `--acceptance`, `--cwd`, `--complexity` (`snap` \u2022 `simple` \u2022 `moderate` \u2022 `complex` \u2022 `intricate`). Chain multiple items with `;` or `&&`. For simple reads/checks, use `trace` instead. Pass [cmd]: \"help\" for the man page.";
|
|
9
|
+
export declare const FLOW_CLI_SNIPPET = "Dive into specialized flows (scout, debug, build, craft, audit, ideas) via bash-style CLI.";
|
|
10
|
+
export declare const FLOW_CLI_GUIDELINES: string[];
|
|
11
|
+
declare const FLOW_HELP: string;
|
|
12
|
+
export { FLOW_HELP };
|
|
13
|
+
export interface ParsedFlowItem {
|
|
14
|
+
type: string;
|
|
15
|
+
intent: string;
|
|
16
|
+
aim: string;
|
|
17
|
+
concern: string;
|
|
18
|
+
acceptance?: string;
|
|
19
|
+
cwd?: string;
|
|
20
|
+
complexity?: string;
|
|
21
|
+
dispatch?: string;
|
|
22
|
+
kind?: "run" | "and";
|
|
23
|
+
}
|
|
24
|
+
export interface ParsedFlowCmd {
|
|
25
|
+
confirm: boolean;
|
|
26
|
+
audit: number;
|
|
27
|
+
items: ParsedFlowItem[];
|
|
28
|
+
}
|
|
29
|
+
export declare function parseFlowCmd(cmd: string): {
|
|
30
|
+
help?: string;
|
|
31
|
+
parsed?: ParsedFlowCmd;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../src/cli/flow.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,eAAO,MAAM,aAAa,KAIxB,CAAC;AAMH,eAAO,MAAM,oBAAoB,geACuY,CAAC;AAEza,eAAO,MAAM,gBAAgB,+FACiE,CAAC;AAE/F,eAAO,MAAM,mBAAmB,UAS/B,CAAC;AA0DF,QAAA,MAAM,SAAS,QAAqE,CAAC;AAErF,OAAO,EAAE,SAAS,EAAE,CAAC;AAMrB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AA8GD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,aAAa,CAAA;CAAE,CAqHnF"}
|
package/dist/cli/flow.js
ADDED
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* flow — bash-style CLI tool.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the legacy flow mega-schema with a simple cmd string
|
|
5
|
+
* that uses flags and chaining.
|
|
6
|
+
*/
|
|
7
|
+
import { Type } from "@sinclair/typebox";
|
|
8
|
+
import { tokenize } from "./tokenize.js";
|
|
9
|
+
import { parseCommand, CliError } from "./parse.js";
|
|
10
|
+
import { renderHelp } from "./help.js";
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Schema
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export const FlowCliParams = Type.Object({
|
|
15
|
+
cmd: Type.String({
|
|
16
|
+
description: "Flow command. Multiple items chained with `;` or `&&`. Each item: --type --intent --aim --concern [--acceptance] [--cwd] [--complexity] [-- <batch-dispatch>]. Global: --confirm <bool>, --audit <n> (first item only). Run with `cmd: 'help'` for the man page.",
|
|
17
|
+
}),
|
|
18
|
+
});
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Constants
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
export const FLOW_CLI_DESCRIPTION = "Spawns specialized agent flows — NOT a shell. Required per item: `--type` (one of: `scout` • `build` • `debug` • `audit` • `craft` • `ideas` • `trace`), `--intent`, `--aim`, `--concern`. Optional: `--acceptance`, `--cwd`, `--complexity` (`snap` • `simple` • `moderate` • `complex` • `intricate`). Chain multiple items with `;` or `&&`. For simple reads/checks, use `trace` instead. Pass [cmd]: \"help\" for the man page.";
|
|
23
|
+
export const FLOW_CLI_SNIPPET = "Dive into specialized flows (scout, debug, build, craft, audit, ideas) via bash-style CLI.";
|
|
24
|
+
export const FLOW_CLI_GUIDELINES = [
|
|
25
|
+
"**This is a structured command, NOT a shell.** There is no `ls`, `cd`, `git`, or arbitrary command. Use only the documented flags.",
|
|
26
|
+
"Use `flow --type <name> --intent <text> --aim <text> --concern <text>` to spawn a flow.",
|
|
27
|
+
"Chain multiple flows with `;` (sequential) or `&&` (conditional).",
|
|
28
|
+
"Add `--acceptance <text>` for success criteria.",
|
|
29
|
+
"Add `--complexity <level>` for budget: snap, simple, moderate, complex, intricate.",
|
|
30
|
+
"Add `-- <batch-dispatch>` for pre-flight ops (e.g., `-- batch read src/auth.ts`).",
|
|
31
|
+
"For quick file reads/checks, use `trace` instead.",
|
|
32
|
+
"Pass `cmd: \"help\"` or `--help` for the man page.",
|
|
33
|
+
];
|
|
34
|
+
const VALID_TYPES = new Set([
|
|
35
|
+
"scout", "build", "debug", "audit", "craft", "ideas", "trace",
|
|
36
|
+
]);
|
|
37
|
+
const VALID_COMPLEXITIES = new Set([
|
|
38
|
+
"snap", "simple", "moderate", "complex", "intricate",
|
|
39
|
+
]);
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Flag specs
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
const GLOBAL_FLAG_SPEC = {
|
|
44
|
+
confirm: { type: "boolean", description: "Prompt before running project flows" },
|
|
45
|
+
audit: { type: "number", description: "Override audit cycles (0-3)" },
|
|
46
|
+
};
|
|
47
|
+
const ITEM_FLAG_SPEC = {
|
|
48
|
+
type: { short: "t", type: "string", description: "Flow type" },
|
|
49
|
+
intent: { short: "i", type: "string", description: "Mission" },
|
|
50
|
+
aim: { short: "a", type: "string", description: "Headline" },
|
|
51
|
+
concern: { short: "c", type: "string", description: "Risks" },
|
|
52
|
+
acceptance: { type: "string", description: "Acceptance criteria" },
|
|
53
|
+
cwd: { type: "string", description: "Working dir" },
|
|
54
|
+
complexity: { type: "string", description: "Budget level" },
|
|
55
|
+
};
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
// Help text
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
const subcommands = [
|
|
60
|
+
{
|
|
61
|
+
name: "flow",
|
|
62
|
+
description: "Spawn a specialized agent flow.",
|
|
63
|
+
flags: {
|
|
64
|
+
type: { short: "t", type: "string", description: "Flow type (scout|build|debug|audit|craft|ideas|trace)" },
|
|
65
|
+
intent: { short: "i", type: "string", description: "Detailed mission" },
|
|
66
|
+
aim: { short: "a", type: "string", description: "Short headline (5-7 words)" },
|
|
67
|
+
concern: { short: "c", type: "string", description: "Known risks" },
|
|
68
|
+
acceptance: { type: "string", description: "Success criteria" },
|
|
69
|
+
cwd: { type: "string", description: "Working directory override" },
|
|
70
|
+
complexity: { type: "string", description: "Budget: snap|simple|moderate|complex|intricate" },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
const GLOBAL_HELP = {
|
|
75
|
+
name: "global",
|
|
76
|
+
description: "Global flags (first chain link only)",
|
|
77
|
+
flags: {
|
|
78
|
+
confirm: { type: "boolean", description: "Prompt before running project flows. Default: true." },
|
|
79
|
+
audit: { type: "number", description: "Override audit cycles (0-3). Default: 0." },
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
const FLOW_HELP = renderHelp("flow", "Spawns specialized agent flows.", subcommands);
|
|
83
|
+
export { FLOW_HELP };
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Parser
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
function splitChainAwareOfDoubleDash(input) {
|
|
88
|
+
// First, split the input into segments separated by standalone `--`.
|
|
89
|
+
// Each segment (except the last) is the pre part of a link; the post part
|
|
90
|
+
// (dispatch) starts right after the `--` and continues until the next chain
|
|
91
|
+
// separator (`;` or `&&`) at the top level (not inside quotes).
|
|
92
|
+
const links = [];
|
|
93
|
+
let current = "";
|
|
94
|
+
let inSingle = false;
|
|
95
|
+
let inDouble = false;
|
|
96
|
+
let escapeNext = false;
|
|
97
|
+
let nextKind = "run";
|
|
98
|
+
let foundDash = false;
|
|
99
|
+
let post = "";
|
|
100
|
+
function flush() {
|
|
101
|
+
const preTrim = current.trim();
|
|
102
|
+
const postTrim = post.trim();
|
|
103
|
+
if (preTrim.length > 0 || postTrim.length > 0) {
|
|
104
|
+
links.push({ kind: nextKind, pre: preTrim, post: postTrim });
|
|
105
|
+
}
|
|
106
|
+
current = "";
|
|
107
|
+
post = "";
|
|
108
|
+
}
|
|
109
|
+
for (let i = 0; i < input.length; i++) {
|
|
110
|
+
const ch = input[i];
|
|
111
|
+
if (escapeNext) {
|
|
112
|
+
if (foundDash)
|
|
113
|
+
post += ch;
|
|
114
|
+
else
|
|
115
|
+
current += ch;
|
|
116
|
+
escapeNext = false;
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (ch === '\\' && !inSingle && !inDouble) {
|
|
120
|
+
escapeNext = true;
|
|
121
|
+
if (foundDash)
|
|
122
|
+
post += ch;
|
|
123
|
+
else
|
|
124
|
+
current += ch;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (inSingle) {
|
|
128
|
+
if (ch === "'")
|
|
129
|
+
inSingle = false;
|
|
130
|
+
if (foundDash)
|
|
131
|
+
post += ch;
|
|
132
|
+
else
|
|
133
|
+
current += ch;
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (inDouble) {
|
|
137
|
+
if (ch === '"')
|
|
138
|
+
inDouble = false;
|
|
139
|
+
if (foundDash)
|
|
140
|
+
post += ch;
|
|
141
|
+
else
|
|
142
|
+
current += ch;
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (ch === "'") {
|
|
146
|
+
inSingle = true;
|
|
147
|
+
if (foundDash)
|
|
148
|
+
post += ch;
|
|
149
|
+
else
|
|
150
|
+
current += ch;
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (ch === '"') {
|
|
154
|
+
inDouble = true;
|
|
155
|
+
if (foundDash)
|
|
156
|
+
post += ch;
|
|
157
|
+
else
|
|
158
|
+
current += ch;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
// Detect standalone `--` (only the first one)
|
|
162
|
+
if (!foundDash && ch === '-' && i + 1 < input.length && input[i + 1] === '-') {
|
|
163
|
+
const prev = i > 0 ? input[i - 1] : ' ';
|
|
164
|
+
const nextIdx = i + 2;
|
|
165
|
+
const isWhitespace = (c) => c === ' ' || c === '\t' || c === '\n' || c === '\r';
|
|
166
|
+
if (isWhitespace(prev) && (nextIdx >= input.length || isWhitespace(input[nextIdx]))) {
|
|
167
|
+
foundDash = true;
|
|
168
|
+
i++; // skip second dash
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Detect chain separators only when not in dispatch (foundDash=false)
|
|
173
|
+
if (!foundDash && !inSingle && !inDouble) {
|
|
174
|
+
if (ch === ';') {
|
|
175
|
+
flush();
|
|
176
|
+
nextKind = "run";
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (ch === '&' && i + 1 < input.length && input[i + 1] === '&') {
|
|
180
|
+
flush();
|
|
181
|
+
nextKind = "and";
|
|
182
|
+
i++; // skip second &
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (foundDash)
|
|
187
|
+
post += ch;
|
|
188
|
+
else
|
|
189
|
+
current += ch;
|
|
190
|
+
}
|
|
191
|
+
flush();
|
|
192
|
+
return links;
|
|
193
|
+
}
|
|
194
|
+
export function parseFlowCmd(cmd) {
|
|
195
|
+
const trimmed = cmd.trim();
|
|
196
|
+
if (trimmed.length === 0 || trimmed === "help" || trimmed === "--help" || trimmed === "-h" || trimmed === "flow help" || trimmed === "flow --help" || trimmed === "flow -h") {
|
|
197
|
+
return { help: FLOW_HELP };
|
|
198
|
+
}
|
|
199
|
+
// Remove leading "flow" keyword if present (the model may include it)
|
|
200
|
+
let working = trimmed;
|
|
201
|
+
if (working.startsWith("flow ")) {
|
|
202
|
+
working = working.slice(5);
|
|
203
|
+
}
|
|
204
|
+
const chain = splitChainAwareOfDoubleDash(working);
|
|
205
|
+
if (chain.length === 0) {
|
|
206
|
+
return { help: FLOW_HELP };
|
|
207
|
+
}
|
|
208
|
+
let confirm = true;
|
|
209
|
+
let audit = 0;
|
|
210
|
+
const items = [];
|
|
211
|
+
for (let linkIdx = 0; linkIdx < chain.length; linkIdx++) {
|
|
212
|
+
const link = chain[linkIdx];
|
|
213
|
+
const pre = link.pre;
|
|
214
|
+
const post = link.post;
|
|
215
|
+
const tokens = tokenize(pre);
|
|
216
|
+
// Remove leading "flow" if present in this fragment
|
|
217
|
+
if (tokens[0] === "flow") {
|
|
218
|
+
tokens.shift();
|
|
219
|
+
}
|
|
220
|
+
if (tokens.length === 0) {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// For the first link, parse global flags before item flags.
|
|
224
|
+
if (linkIdx === 0) {
|
|
225
|
+
const remainingTokens = [];
|
|
226
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
227
|
+
const tok = tokens[i];
|
|
228
|
+
if (tok === "--confirm" || tok === "--audit") {
|
|
229
|
+
const name = tok.slice(2);
|
|
230
|
+
const cfg = GLOBAL_FLAG_SPEC[name];
|
|
231
|
+
if (cfg.type === "boolean") {
|
|
232
|
+
if (i + 1 < tokens.length && (tokens[i + 1] === "true" || tokens[i + 1] === "false")) {
|
|
233
|
+
confirm = tokens[i + 1] === "true";
|
|
234
|
+
i++;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
confirm = true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
else if (cfg.type === "number") {
|
|
241
|
+
if (i + 1 < tokens.length) {
|
|
242
|
+
const num = Number(tokens[i + 1]);
|
|
243
|
+
if (Number.isFinite(num)) {
|
|
244
|
+
audit = num;
|
|
245
|
+
}
|
|
246
|
+
i++;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
// Handle --flag=value syntax
|
|
252
|
+
if (tok.startsWith("--confirm=") || tok.startsWith("--audit=")) {
|
|
253
|
+
const eqIdx = tok.indexOf("=");
|
|
254
|
+
const name = tok.slice(2, eqIdx);
|
|
255
|
+
const value = tok.slice(eqIdx + 1);
|
|
256
|
+
if (name === "confirm") {
|
|
257
|
+
confirm = value === "true";
|
|
258
|
+
}
|
|
259
|
+
else if (name === "audit") {
|
|
260
|
+
const num = Number(value);
|
|
261
|
+
if (Number.isFinite(num))
|
|
262
|
+
audit = num;
|
|
263
|
+
}
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
remainingTokens.push(tok);
|
|
267
|
+
}
|
|
268
|
+
// Parse the rest with item flag spec
|
|
269
|
+
// Prepend a dummy subcommand if the first token is a flag so parseCommand
|
|
270
|
+
// doesn't consume the real flag as the subcommand.
|
|
271
|
+
const tokensForParse = remainingTokens.length > 0 && remainingTokens[0].startsWith("-")
|
|
272
|
+
? ["flow", ...remainingTokens]
|
|
273
|
+
: remainingTokens.length > 0 ? remainingTokens : ["flow"];
|
|
274
|
+
const parsed = parseCommand(tokensForParse, ITEM_FLAG_SPEC);
|
|
275
|
+
items.push(extractItem(parsed, post, link.kind));
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// Detect global flags on non-first links and throw a clear error
|
|
279
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
280
|
+
const tok = tokens[i];
|
|
281
|
+
if (tok === "--confirm" || tok === "--audit") {
|
|
282
|
+
throw new CliError(`Global flag ${tok} is not allowed on subsequent chain links.`, "Put --confirm and --audit on the first flow item only.");
|
|
283
|
+
}
|
|
284
|
+
if (tok.startsWith("--confirm=") || tok.startsWith("--audit=")) {
|
|
285
|
+
throw new CliError(`Global flag ${tok.split("=")[0]} is not allowed on subsequent chain links.`, "Put --confirm and --audit on the first flow item only.");
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// Prepend a dummy subcommand if the first token is a flag
|
|
289
|
+
const tokensForParse = tokens.length > 0 && tokens[0].startsWith("-")
|
|
290
|
+
? ["flow", ...tokens]
|
|
291
|
+
: tokens.length > 0 ? tokens : ["flow"];
|
|
292
|
+
const parsed = parseCommand(tokensForParse, ITEM_FLAG_SPEC);
|
|
293
|
+
items.push(extractItem(parsed, post, link.kind));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (items.length === 0) {
|
|
297
|
+
throw new CliError("No flow items found. At least one --type is required.", "Run with --help for usage.");
|
|
298
|
+
}
|
|
299
|
+
return { parsed: { confirm, audit, items } };
|
|
300
|
+
}
|
|
301
|
+
function extractItem(parsed, dispatch, kind) {
|
|
302
|
+
const type = parsed.flags.type;
|
|
303
|
+
const intent = parsed.flags.intent;
|
|
304
|
+
const aim = parsed.flags.aim;
|
|
305
|
+
const concern = parsed.flags.concern;
|
|
306
|
+
const acceptance = parsed.flags.acceptance;
|
|
307
|
+
const cwd = parsed.flags.cwd;
|
|
308
|
+
const complexity = parsed.flags.complexity;
|
|
309
|
+
if (!type) {
|
|
310
|
+
throw new CliError("Missing required flag: --type", `Valid types: ${Array.from(VALID_TYPES).join(", ")}`);
|
|
311
|
+
}
|
|
312
|
+
if (!VALID_TYPES.has(type.toLowerCase())) {
|
|
313
|
+
throw new CliError(`Invalid flow type: ${type}`, `Valid types: ${Array.from(VALID_TYPES).join(", ")}`);
|
|
314
|
+
}
|
|
315
|
+
if (!intent) {
|
|
316
|
+
throw new CliError("Missing required flag: --intent");
|
|
317
|
+
}
|
|
318
|
+
if (!aim) {
|
|
319
|
+
throw new CliError("Missing required flag: --aim");
|
|
320
|
+
}
|
|
321
|
+
if (!concern) {
|
|
322
|
+
throw new CliError("Missing required flag: --concern");
|
|
323
|
+
}
|
|
324
|
+
if (complexity && !VALID_COMPLEXITIES.has(complexity.toLowerCase())) {
|
|
325
|
+
throw new CliError(`Invalid complexity: ${complexity}`, `Valid complexities: ${Array.from(VALID_COMPLEXITIES).join(", ")}`);
|
|
326
|
+
}
|
|
327
|
+
const item = {
|
|
328
|
+
type: type.toLowerCase(),
|
|
329
|
+
intent,
|
|
330
|
+
aim,
|
|
331
|
+
concern,
|
|
332
|
+
};
|
|
333
|
+
if (acceptance)
|
|
334
|
+
item.acceptance = acceptance;
|
|
335
|
+
if (cwd)
|
|
336
|
+
item.cwd = cwd;
|
|
337
|
+
if (complexity)
|
|
338
|
+
item.complexity = complexity.toLowerCase();
|
|
339
|
+
if (dispatch)
|
|
340
|
+
item.dispatch = dispatch;
|
|
341
|
+
if (kind)
|
|
342
|
+
item.kind = kind;
|
|
343
|
+
return item;
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/cli/flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatter for chained CLI ops.
|
|
3
|
+
*/
|
|
4
|
+
export interface ChainedOp {
|
|
5
|
+
cmd: string;
|
|
6
|
+
output: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
failed?: boolean;
|
|
9
|
+
skipped?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function formatChainedOutput(ops: ChainedOp[]): string;
|
|
12
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,MAAM,CAwB5D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Output formatter for chained CLI ops.
|
|
3
|
+
*/
|
|
4
|
+
export function formatChainedOutput(ops) {
|
|
5
|
+
const total = ops.length;
|
|
6
|
+
if (total === 1 && !ops[0].skipped) {
|
|
7
|
+
if (ops[0].error) {
|
|
8
|
+
return `ERROR: ${ops[0].error}`;
|
|
9
|
+
}
|
|
10
|
+
return ops[0].output;
|
|
11
|
+
}
|
|
12
|
+
const sections = [];
|
|
13
|
+
for (let i = 0; i < ops.length; i++) {
|
|
14
|
+
const op = ops[i];
|
|
15
|
+
const header = `--- op ${i + 1}/${total}: ${op.skipped ? `SKIPPED (previous failed)` : op.cmd} ---`;
|
|
16
|
+
sections.push(header);
|
|
17
|
+
if (op.skipped) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (op.error) {
|
|
21
|
+
sections.push(`ERROR: ${op.error}`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
sections.push(op.output);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return sections.join("\n");
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IACzB,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACpG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Man-page style help generator.
|
|
3
|
+
*/
|
|
4
|
+
export interface SubcommandHelp {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
flags: Record<string, {
|
|
8
|
+
short?: string;
|
|
9
|
+
type: string;
|
|
10
|
+
description: string;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
export declare function renderHelp(toolName: string, description: string, subcommands: SubcommandHelp[]): string;
|
|
14
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,cAAc,EAAE,GAC5B,MAAM,CAyBR"}
|
package/dist/cli/help.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Man-page style help generator.
|
|
3
|
+
*/
|
|
4
|
+
export function renderHelp(toolName, description, subcommands) {
|
|
5
|
+
const lines = [];
|
|
6
|
+
lines.push(`USAGE: ${toolName} <subcommand> [flags] [args]`);
|
|
7
|
+
lines.push("");
|
|
8
|
+
lines.push(description);
|
|
9
|
+
lines.push("");
|
|
10
|
+
lines.push("SUBCOMMANDS:");
|
|
11
|
+
for (const sub of subcommands) {
|
|
12
|
+
lines.push(` ${sub.name.padEnd(12)} ${sub.description}`);
|
|
13
|
+
}
|
|
14
|
+
lines.push("");
|
|
15
|
+
for (const sub of subcommands) {
|
|
16
|
+
lines.push(`${sub.name.toUpperCase()} FLAGS:`);
|
|
17
|
+
const entries = Object.entries(sub.flags);
|
|
18
|
+
if (entries.length === 0) {
|
|
19
|
+
lines.push(" (none)");
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
for (const [name, cfg] of entries) {
|
|
23
|
+
const short = cfg.short ? `-${cfg.short}, ` : "";
|
|
24
|
+
lines.push(` ${short}--${name.padEnd(14)} ${cfg.description}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
lines.push("");
|
|
28
|
+
}
|
|
29
|
+
return lines.join("\n");
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,UAAU,UAAU,CACxB,QAAgB,EAChB,WAAmB,EACnB,WAA6B;IAE7B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,QAAQ,8BAA8B,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI argument parser.
|
|
3
|
+
*
|
|
4
|
+
* Parses a token array into subcommand, flags, and positionals.
|
|
5
|
+
*/
|
|
6
|
+
export interface FlagSpec {
|
|
7
|
+
[name: string]: {
|
|
8
|
+
short?: string;
|
|
9
|
+
type: "boolean" | "string" | "number";
|
|
10
|
+
description?: string;
|
|
11
|
+
multi?: boolean;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface ParsedCommand {
|
|
15
|
+
subcommand: string;
|
|
16
|
+
flags: Record<string, string | number | boolean | Array<string | number | boolean>>;
|
|
17
|
+
positionals: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare class CliError extends Error {
|
|
20
|
+
hint?: string;
|
|
21
|
+
constructor(message: string, hint?: string);
|
|
22
|
+
}
|
|
23
|
+
export declare function parseCommand(tokens: string[], spec: FlagSpec): ParsedCommand;
|
|
24
|
+
//# sourceMappingURL=parse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../src/cli/parse.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,QAAQ;IACvB,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACtC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IACpF,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;gBACF,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAK3C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,GAAG,aAAa,CAqJ5E"}
|