@senpi/runtime 3.0.9-dev.20260710204324 → 3.0.9-dev.feat-strategy-compos.20260716013009

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.
Files changed (94) hide show
  1. package/dist/cli/composer-commands.d.ts +37 -0
  2. package/dist/cli/composer-commands.d.ts.map +1 -0
  3. package/dist/cli/composer-commands.js +287 -0
  4. package/dist/cli/composer-commands.js.map +1 -0
  5. package/dist/cli/senpi-commands.d.ts.map +1 -1
  6. package/dist/cli/senpi-commands.js +2 -0
  7. package/dist/cli/senpi-commands.js.map +1 -1
  8. package/dist/cli/validate-runtime-config.mjs +124 -0
  9. package/dist/composer/AUTHORING.md +233 -0
  10. package/dist/composer/__init__.py +29 -0
  11. package/dist/composer/authoring/__init__.py +49 -0
  12. package/dist/composer/authoring/answers.py +226 -0
  13. package/dist/composer/authoring/archetypes/__init__.py +25 -0
  14. package/dist/composer/authoring/archetypes/_common.py +218 -0
  15. package/dist/composer/authoring/archetypes/classifier.py +109 -0
  16. package/dist/composer/authoring/archetypes/skeleton.py +54 -0
  17. package/dist/composer/authoring/archetypes/thesis_fund.py +103 -0
  18. package/dist/composer/authoring/archetypes/trend_momentum.py +104 -0
  19. package/dist/composer/authoring/builder.py +191 -0
  20. package/dist/composer/authoring/emit.py +264 -0
  21. package/dist/composer/authoring/gaps.py +115 -0
  22. package/dist/composer/authoring/generate.py +131 -0
  23. package/dist/composer/authoring/presets.py +168 -0
  24. package/dist/composer/authoring/runtime_emit.py +266 -0
  25. package/dist/composer/authoring/strategy_manifest.py +94 -0
  26. package/dist/composer/cli.py +355 -0
  27. package/dist/composer/compiler/__init__.py +22 -0
  28. package/dist/composer/compiler/compile.py +550 -0
  29. package/dist/composer/examples/breakout_swing.graph.yaml +121 -0
  30. package/dist/composer/examples/conviction_scorer.graph.yaml +216 -0
  31. package/dist/composer/examples/macro_thesis_basket.graph.yaml +247 -0
  32. package/dist/composer/examples/pre_listing_classifier.graph.yaml +204 -0
  33. package/dist/composer/examples/trend_momentum_majors.graph.yaml +133 -0
  34. package/dist/composer/generated/README.md +22 -0
  35. package/dist/composer/generated/catalog.md +84 -0
  36. package/dist/composer/generated/describe.md +703 -0
  37. package/dist/composer/generated/graph.schema.json +1203 -0
  38. package/dist/composer/primitives/__init__.py +239 -0
  39. package/dist/composer/primitives/_candles.py +76 -0
  40. package/dist/composer/primitives/adapter.py +120 -0
  41. package/dist/composer/primitives/emitters.py +142 -0
  42. package/dist/composer/primitives/filters.py +71 -0
  43. package/dist/composer/primitives/indicators.py +203 -0
  44. package/dist/composer/primitives/rankers.py +40 -0
  45. package/dist/composer/primitives/scorers.py +100 -0
  46. package/dist/composer/primitives/sources.py +405 -0
  47. package/dist/composer/primitives/stateful.py +52 -0
  48. package/dist/composer/pure_fn/__init__.py +34 -0
  49. package/dist/composer/pure_fn/checks.py +39 -0
  50. package/dist/composer/pure_fn/models.py +177 -0
  51. package/dist/composer/pure_fn/purity.py +311 -0
  52. package/dist/composer/pure_fn/runtests.py +155 -0
  53. package/dist/composer/registry/__init__.py +40 -0
  54. package/dist/composer/registry/generate.py +422 -0
  55. package/dist/composer/registry/models.py +331 -0
  56. package/dist/composer/registry/nodes.py +673 -0
  57. package/dist/composer/requirements.txt +21 -0
  58. package/dist/composer/templates/__init__.py +13 -0
  59. package/dist/composer/templates/scan.py.j2 +31 -0
  60. package/dist/composer/validator/__init__.py +29 -0
  61. package/dist/composer/validator/desugar.py +133 -0
  62. package/dist/composer/validator/errors.py +191 -0
  63. package/dist/composer/validator/graph_checks.py +348 -0
  64. package/dist/composer/validator/loader.py +110 -0
  65. package/dist/composer/validator/schema_checks.py +147 -0
  66. package/dist/composer/validator/validate.py +86 -0
  67. package/dist/composer/verbs/__init__.py +33 -0
  68. package/dist/composer/verbs/check.py +193 -0
  69. package/dist/composer/verbs/deploy.py +223 -0
  70. package/dist/composer/verbs/docs.py +30 -0
  71. package/dist/composer/verbs/runtime_validate.py +262 -0
  72. package/dist/composer/verbs/smoke.py +115 -0
  73. package/dist/composer/verbs/status.py +205 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +2 -9
  76. package/dist/index.js.map +1 -1
  77. package/dist/runtime-api/config.d.ts +2 -2
  78. package/dist/runtime-api/config.js +4 -4
  79. package/dist/runtime-api/config.js.map +1 -1
  80. package/dist/runtime-api/handlers/ingest-signals.d.ts +3 -5
  81. package/dist/runtime-api/handlers/ingest-signals.d.ts.map +1 -1
  82. package/dist/runtime-api/handlers/ingest-signals.js +5 -14
  83. package/dist/runtime-api/handlers/ingest-signals.js.map +1 -1
  84. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  85. package/dist/runtime-api/intake/intake-mount.js +2 -8
  86. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  87. package/dist/skills-manager/manifest.js +1 -1
  88. package/dist/skills-manager/manifest.js.map +1 -1
  89. package/dist/skills-manager/skills-manifest.json +1 -1
  90. package/package.json +4 -2
  91. package/dist/runtime-api/intake/ingest-mutex.d.ts +0 -16
  92. package/dist/runtime-api/intake/ingest-mutex.d.ts.map +0 -1
  93. package/dist/runtime-api/intake/ingest-mutex.js +0 -18
  94. package/dist/runtime-api/intake/ingest-mutex.js.map +0 -1
@@ -0,0 +1,37 @@
1
+ /**
2
+ * openclaw senpi composer — the thin TS rim over the Python Strategy Composer (D8).
3
+ *
4
+ * TS lives ONLY at the rim: this module is a verdict-passthrough wrapper. Every verb spawns
5
+ * the Python `composer` CLI (`python -m composer.cli <verb> ... --json`), parses the JSON
6
+ * verdict it prints, and surfaces GREEN/RED (+ located errors) with a matching process exit
7
+ * code. There is NO composer logic here — validation, compilation, the deploy gate, and the
8
+ * lifecycle derivation all live in Python (the emitted artifact is Python; the golden tests
9
+ * are pytest). Mirrors the existing thin-CLI pattern (src/cli/senpi-config-commands.ts:
10
+ * registerSenpiConfigCommands) and spawns through utils/safe-spawn like senpi-commands.ts.
11
+ *
12
+ * The Python package is located via resolveComposerRoot() — the dir that CONTAINS the
13
+ * `composer/` package — put on the child's PYTHONPATH (never its cwd, so caller-relative
14
+ * graph/answers/out paths keep resolving against the real working dir). Resolution order:
15
+ * COMPOSER_ROOT env (dev-checkout override) → the copy shipped inside the plugin's dist/
16
+ * (mirrors scanner-launcher's scaffoldPackageDir). Python runs via COMPOSER_PYTHON (default:
17
+ * python3). Deploy is HARD-gated on a GREEN check inside Python.
18
+ */
19
+ interface CommanderCommand {
20
+ command(name: string, desc?: string): CommanderCommand;
21
+ description(desc: string): CommanderCommand;
22
+ option(flags: string, description?: string): CommanderCommand;
23
+ action(fn: (() => void | Promise<void>) | ((opts: Record<string, unknown>) => void | Promise<void>) | ((arg: string, opts: Record<string, unknown>) => void | Promise<void>)): CommanderCommand;
24
+ }
25
+ /**
26
+ * Resolve the directory that CONTAINS the `composer/` python package.
27
+ *
28
+ * Order: COMPOSER_ROOT env (dev-checkout override — point it at the dir holding `composer/`,
29
+ * i.e. the repo root) → the copy shipped inside the plugin's dist/. This module compiles to
30
+ * dist/cli/composer-commands.js and `copy:composer` lands the package at dist/composer, so
31
+ * the containing dir is one level up (dist/). Mirrors scanner-launcher's scaffoldPackageDir
32
+ * (src/index.ts: `new URL("./scanners/external", import.meta.url)`).
33
+ */
34
+ export declare function resolveComposerRoot(): string;
35
+ export declare function registerComposerCli(senpi: CommanderCommand): void;
36
+ export {};
37
+ //# sourceMappingURL=composer-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer-commands.d.ts","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CACJ,EAAE,EACE,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAC5B,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB;AAYD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AA6FD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAoKjE"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * openclaw senpi composer — the thin TS rim over the Python Strategy Composer (D8).
3
+ *
4
+ * TS lives ONLY at the rim: this module is a verdict-passthrough wrapper. Every verb spawns
5
+ * the Python `composer` CLI (`python -m composer.cli <verb> ... --json`), parses the JSON
6
+ * verdict it prints, and surfaces GREEN/RED (+ located errors) with a matching process exit
7
+ * code. There is NO composer logic here — validation, compilation, the deploy gate, and the
8
+ * lifecycle derivation all live in Python (the emitted artifact is Python; the golden tests
9
+ * are pytest). Mirrors the existing thin-CLI pattern (src/cli/senpi-config-commands.ts:
10
+ * registerSenpiConfigCommands) and spawns through utils/safe-spawn like senpi-commands.ts.
11
+ *
12
+ * The Python package is located via resolveComposerRoot() — the dir that CONTAINS the
13
+ * `composer/` package — put on the child's PYTHONPATH (never its cwd, so caller-relative
14
+ * graph/answers/out paths keep resolving against the real working dir). Resolution order:
15
+ * COMPOSER_ROOT env (dev-checkout override) → the copy shipped inside the plugin's dist/
16
+ * (mirrors scanner-launcher's scaffoldPackageDir). Python runs via COMPOSER_PYTHON (default:
17
+ * python3). Deploy is HARD-gated on a GREEN check inside Python.
18
+ */
19
+ import { spawnSync } from "../utils/safe-spawn.js";
20
+ import { fileURLToPath } from "node:url";
21
+ import { delimiter as PATH_DELIMITER, join as pathJoin } from "node:path";
22
+ /**
23
+ * Resolve the directory that CONTAINS the `composer/` python package.
24
+ *
25
+ * Order: COMPOSER_ROOT env (dev-checkout override — point it at the dir holding `composer/`,
26
+ * i.e. the repo root) → the copy shipped inside the plugin's dist/. This module compiles to
27
+ * dist/cli/composer-commands.js and `copy:composer` lands the package at dist/composer, so
28
+ * the containing dir is one level up (dist/). Mirrors scanner-launcher's scaffoldPackageDir
29
+ * (src/index.ts: `new URL("./scanners/external", import.meta.url)`).
30
+ */
31
+ export function resolveComposerRoot() {
32
+ const override = process.env.COMPOSER_ROOT;
33
+ if (override)
34
+ return override;
35
+ return fileURLToPath(new URL("..", import.meta.url));
36
+ }
37
+ /** The exact remediation command for a missing composer Python dep. */
38
+ function requirementsHint(root) {
39
+ return `pip install -r ${pathJoin(root, "composer", "requirements.txt")}`;
40
+ }
41
+ /**
42
+ * Detect a box-side environment failure (missing python, missing deps, or a missing
43
+ * `composer` package) and return an actionable one-line message — never a bare stack trace.
44
+ * Returns null for a normal run (incl. a RED verdict, which exits non-zero but ran fine).
45
+ */
46
+ function detectEnvError(pythonBin, root, result) {
47
+ const err = result.error;
48
+ if (err && err.code === "ENOENT") {
49
+ return `composer: '${pythonBin}' not found — install Python 3 (or set COMPOSER_PYTHON), then the composer deps: ${requirementsHint(root)}`;
50
+ }
51
+ const stderr = result.stderr ?? "";
52
+ const missing = /No module named ['"]?([\w.]+)/.exec(stderr);
53
+ if (missing) {
54
+ const mod = missing[1];
55
+ if (mod === "composer" || mod.startsWith("composer.")) {
56
+ return `composer: the 'composer' package was not found under ${root} — on a claw run \`npm run build\` (copy:composer) or set COMPOSER_ROOT to your checkout root.`;
57
+ }
58
+ return `composer: Python dependency '${mod}' is missing — install the composer deps: ${requirementsHint(root)}`;
59
+ }
60
+ return null;
61
+ }
62
+ /**
63
+ * Spawn `python -m composer.cli <args>` and (optionally) parse its --json stdout.
64
+ *
65
+ * The composer package is found via PYTHONPATH (resolveComposerRoot()), leaving the child's
66
+ * cwd as the caller's real working dir so relative graph/answers/-o paths resolve there.
67
+ * On a box-side failure (no python / missing deps) the actionable hint is printed to stderr
68
+ * here and returned as `envError`, so every verb surfaces it identically without a stack trace.
69
+ */
70
+ function runComposer(args) {
71
+ const pythonBin = process.env.COMPOSER_PYTHON ?? "python3";
72
+ const composerRoot = resolveComposerRoot();
73
+ const pythonPath = process.env.PYTHONPATH
74
+ ? `${composerRoot}${PATH_DELIMITER}${process.env.PYTHONPATH}`
75
+ : composerRoot;
76
+ const result = spawnSync(pythonBin, ["-m", "composer.cli", ...args], {
77
+ encoding: "utf8",
78
+ stdio: ["inherit", "pipe", "pipe"],
79
+ env: { ...process.env, PYTHONPATH: pythonPath },
80
+ });
81
+ const envError = detectEnvError(pythonBin, composerRoot, result);
82
+ if (envError) {
83
+ console.error(envError);
84
+ return { status: result.status ?? 1, stdout: "", stderr: "", json: null, envError };
85
+ }
86
+ const stdout = result.stdout ?? "";
87
+ const stderr = result.stderr ?? "";
88
+ let json = null;
89
+ if (args.includes("--json")) {
90
+ try {
91
+ json = JSON.parse(stdout);
92
+ }
93
+ catch {
94
+ json = null;
95
+ }
96
+ }
97
+ return { status: result.status ?? 1, stdout, stderr, json, envError: null };
98
+ }
99
+ function renderLocation(loc) {
100
+ if (!loc)
101
+ return "document";
102
+ const parts = [];
103
+ if (loc.node)
104
+ parts.push(`node ${loc.node}`);
105
+ if (loc.port)
106
+ parts.push(`port ${loc.port}`);
107
+ if (loc.line != null)
108
+ parts.push(`line ${loc.line}`);
109
+ return parts.length ? parts.join(", ") : "document";
110
+ }
111
+ function printErrors(errors) {
112
+ for (const e of errors) {
113
+ console.error(` [${e.code ?? "?"}] ${renderLocation(e.location)}: ${e.message ?? ""}`);
114
+ if (e.fix_hint)
115
+ console.error(` fix: ${e.fix_hint}`);
116
+ }
117
+ }
118
+ export function registerComposerCli(senpi) {
119
+ const composer = senpi.command("composer");
120
+ composer.description("Strategy Composer: new / validate / compile / check / deploy / status a strategy graph; catalog / describe nodes");
121
+ // new / validate / compile stream Python's own (rich) human render through — teaching
122
+ // errors, gap reports, emitted scan.py — forwarding only the relevant flags. Thin: no
123
+ // TS-side interpretation; the exit code is Python's (0 ok, 2 gap report, 3 clobber-refused).
124
+ composer
125
+ .command("new <id>")
126
+ .description("Generate a COMPLETE, VALID strategy graph from interview answers (D7)")
127
+ .option("--archetype <name>", "Archetype template (trend_momentum | classifier | thesis_fund)")
128
+ .option("--answers <file>", "Path to a YAML/JSON answers-file (flags override it)")
129
+ .option("-o, --out <dir>", "Output directory (default: cwd)")
130
+ .option("--force", "Overwrite an edited graph (default: refuse to clobber edits)")
131
+ .option("--json", "Emit the structured result (path / gap report) as JSON")
132
+ .action(async (id, opts) => {
133
+ const args = ["new", id];
134
+ if (opts.archetype)
135
+ args.push("--archetype", opts.archetype);
136
+ if (opts.answers)
137
+ args.push("--answers", opts.answers);
138
+ if (opts.out)
139
+ args.push("--output", opts.out);
140
+ if (opts.force)
141
+ args.push("--force");
142
+ if (opts.json)
143
+ args.push("--json");
144
+ const { status, stdout, stderr, envError } = runComposer(args);
145
+ if (envError) {
146
+ process.exitCode = 1;
147
+ return;
148
+ }
149
+ if (stdout)
150
+ process.stdout.write(stdout);
151
+ if (stderr)
152
+ process.stderr.write(stderr);
153
+ process.exitCode = status;
154
+ });
155
+ composer
156
+ .command("validate <graph>")
157
+ .description("Validate a strategy graph (schema + graph checks) with teaching errors")
158
+ .option("--json", "Emit the structured result as JSON")
159
+ .action(async (graph, opts) => {
160
+ const args = ["validate", graph];
161
+ if (opts.json)
162
+ args.push("--json");
163
+ const { status, stdout, stderr, envError } = runComposer(args);
164
+ if (envError) {
165
+ process.exitCode = 1;
166
+ return;
167
+ }
168
+ if (stdout)
169
+ process.stdout.write(stdout);
170
+ if (stderr)
171
+ process.stderr.write(stderr);
172
+ process.exitCode = status;
173
+ });
174
+ composer
175
+ .command("compile <graph>")
176
+ .description("Compile a validated strategy graph into a scan.py on the external_scanner contract")
177
+ .option("-o, --out <file>", "Write the emitted scan.py here (default: stdout)")
178
+ .action(async (graph, opts) => {
179
+ const args = ["compile", graph];
180
+ if (opts.out)
181
+ args.push("--output", opts.out);
182
+ const { status, stdout, stderr, envError } = runComposer(args);
183
+ if (envError) {
184
+ process.exitCode = 1;
185
+ return;
186
+ }
187
+ if (stdout)
188
+ process.stdout.write(stdout);
189
+ if (stderr)
190
+ process.stderr.write(stderr);
191
+ process.exitCode = status;
192
+ });
193
+ composer
194
+ .command("check <graph>")
195
+ .description("ONE verdict: validate + pure_fn tests + compile + fixture smoke (GREEN/RED)")
196
+ .option("--json", "Print the raw Python verdict JSON")
197
+ .action(async (graph, opts) => {
198
+ const { status, stdout, json } = runComposer(["check", graph, "--json"]);
199
+ if (opts.json) {
200
+ process.stdout.write(stdout);
201
+ process.exitCode = status;
202
+ return;
203
+ }
204
+ if (!json) {
205
+ process.stdout.write(stdout);
206
+ process.exitCode = status;
207
+ return;
208
+ }
209
+ const verdict = String(json.verdict);
210
+ const errors = json.errors ?? [];
211
+ if (verdict === "GREEN") {
212
+ console.log(`GREEN: ${graph} — ready to deploy.`);
213
+ }
214
+ else {
215
+ console.log(`RED: ${graph} — ${errors.length} error(s); deploy is refused until GREEN.`);
216
+ printErrors(errors);
217
+ }
218
+ process.exitCode = status;
219
+ });
220
+ composer
221
+ .command("deploy <graph>")
222
+ .description("Stage the deployable artifact set (idempotent); hard-gated on a GREEN check")
223
+ .option("-o, --out <dir>", "Staging directory (default: dist)")
224
+ .option("--json", "Print the raw Python verdict JSON")
225
+ .action(async (graph, opts) => {
226
+ const args = ["deploy", graph, "--json"];
227
+ if (opts.out)
228
+ args.push("--out", opts.out);
229
+ const { status, stdout, json } = runComposer(args);
230
+ if (opts.json || !json) {
231
+ process.stdout.write(stdout);
232
+ process.exitCode = status;
233
+ return;
234
+ }
235
+ const verdict = String(json.verdict);
236
+ if (verdict === "REFUSED") {
237
+ const check = (json.check ?? {});
238
+ console.log(`REFUSED: ${graph} — check is ${check.verdict}; deploy needs a GREEN check.`);
239
+ printErrors(check.errors ?? []);
240
+ }
241
+ else {
242
+ const staged = (json.staged ?? {});
243
+ console.log(`${verdict}: ${graph} — staged to ${staged.dir}. (live tick: slice 8)`);
244
+ }
245
+ process.exitCode = status;
246
+ });
247
+ composer
248
+ .command("status <target>")
249
+ .description("Derived lifecycle position + the next verb to run (graph file or staging dir)")
250
+ .option("-o, --out <dir>", "Staging directory to check for a deployed artifact")
251
+ .option("--json", "Print the raw Python status JSON")
252
+ .action(async (target, opts) => {
253
+ const args = ["status", target, "--json"];
254
+ if (opts.out)
255
+ args.push("--out", opts.out);
256
+ const { status, stdout, json } = runComposer(args);
257
+ if (opts.json || !json) {
258
+ process.stdout.write(stdout);
259
+ process.exitCode = status;
260
+ return;
261
+ }
262
+ console.log(`position: ${String(json.position)}`);
263
+ console.log(`next: ${String(json.next)}`);
264
+ process.exitCode = status;
265
+ });
266
+ composer
267
+ .command("catalog")
268
+ .description("Print the registry-generated node catalog index")
269
+ .action(async () => {
270
+ const { status, stdout, stderr } = runComposer(["catalog"]);
271
+ process.stdout.write(stdout);
272
+ if (stderr)
273
+ process.stderr.write(stderr);
274
+ process.exitCode = status;
275
+ });
276
+ composer
277
+ .command("describe <node>")
278
+ .description("Print one node's full ports/params/example")
279
+ .action(async (node) => {
280
+ const { status, stdout, stderr } = runComposer(["describe", node]);
281
+ process.stdout.write(stdout);
282
+ if (stderr)
283
+ process.stderr.write(stderr);
284
+ process.exitCode = status;
285
+ });
286
+ }
287
+ //# sourceMappingURL=composer-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composer-commands.js","sourceRoot":"","sources":["../../src/cli/composer-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CA2vCN;AA8ID;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AA8HD,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
1
+ {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CA4vCN;AA8ID;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AA8HD,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
@@ -11,6 +11,7 @@ import { spawnSync } from "../utils/safe-spawn.js";
11
11
  import path from "node:path";
12
12
  import { registerGuideCommands, CHEATSHEET_TEXT } from "./guide-commands.js";
13
13
  import { registerSenpiConfigCommands } from "./senpi-config-commands.js";
14
+ import { registerComposerCli } from "./composer-commands.js";
14
15
  import { VERSION } from "../version.js";
15
16
  /**
16
17
  * Register senpi subcommands on the given Commander program.
@@ -25,6 +26,7 @@ export function registerSenpiCli(program) {
25
26
  }
26
27
  });
27
28
  registerSenpiConfigCommands(senpi);
29
+ registerComposerCli(senpi);
28
30
  const runtime = senpi.command("runtime");
29
31
  runtime.description("Manage runtimes");
30
32
  runtime