@cat-factory/cli 0.5.3 → 0.6.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/README.md +13 -1
- package/dist/args.d.ts +9 -2
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +42 -1
- package/dist/args.js.map +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +130 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/env.d.ts +7 -1
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +125 -1
- package/dist/env.js.map +1 -1
- package/dist/execution.d.ts +35 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +62 -0
- package/dist/execution.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/k3s-provision.d.ts +9 -0
- package/dist/k3s-provision.d.ts.map +1 -1
- package/dist/k3s-provision.js +3 -1
- package/dist/k3s-provision.js.map +1 -1
- package/dist/plan.d.ts +7 -1
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +5 -0
- package/dist/plan.js.map +1 -1
- package/dist/templates.d.ts +14 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +31 -1
- package/dist/templates.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -9,8 +9,17 @@ the **published** libraries, so the generated project stands alone outside the m
|
|
|
9
9
|
|
|
10
10
|
It does the fiddly setup for you:
|
|
11
11
|
|
|
12
|
-
- **
|
|
12
|
+
- **Offers to generate the crypto secrets** in the exact formats the server requires —
|
|
13
13
|
`AUTH_SESSION_SECRET` (32 random bytes, hex) and `ENCRYPTION_KEY` (32 random bytes, base64).
|
|
14
|
+
On by default; decline to leave them blank and paste your own.
|
|
15
|
+
- **Lets you choose how agents run** — a **prewarmed Docker pool** (isolated per-run containers
|
|
16
|
+
from the executor image, the default) or **native host agents** (a host process driving your
|
|
17
|
+
own installed `claude`/`codex` CLI: no container, no leased credential, but no sandbox and only
|
|
18
|
+
Claude/ChatGPT models go native). The tradeoffs of each are printed before you pick, and in
|
|
19
|
+
native mode the CLI can list exactly which models will run natively.
|
|
20
|
+
- **Surfaces the commonly-useful optional settings** in `local/.env` with sane defaults
|
|
21
|
+
(email/password sign-in, open signup, Langfuse tracing, Slack notifications, consensus, the
|
|
22
|
+
boot-time image refresh), all commented so you toggle them in place instead of hunting the docs.
|
|
14
23
|
- **Mints a source-control token.** Pick GitHub or GitLab; the CLI opens your browser at the
|
|
15
24
|
provider's "create a personal access token" page with the right **scopes pre-selected**
|
|
16
25
|
(GitHub classic `repo,workflow`; GitLab `api`), then reads the token you paste back. Both
|
|
@@ -65,6 +74,9 @@ npx @cat-factory/cli init \
|
|
|
65
74
|
| `--port <n>` | `8787` | Backend HTTP port (also sets the SPA's api-base). |
|
|
66
75
|
| `--harness-image <ref>` | `ghcr.io/…/cat-factory-executor:latest` | Executor-harness image agent jobs run as. |
|
|
67
76
|
| `--container-runtime <r>` | `docker` | Agent runtime: `docker`/`podman`/`orbstack`/`colima`/`apple`. |
|
|
77
|
+
| `--execution-mode <m>` | `pool` | How agents run: `pool` (Docker pool) or `native` (host CLI). |
|
|
78
|
+
| `--native-harnesses <l>` | `claude-code,codex` | Native mode: harnesses to run natively (comma list). |
|
|
79
|
+
| `--harness-entry <p>` | (prompted) | Native mode: path to the executor-harness server entry. |
|
|
68
80
|
| `--no-open` | off | Print the token URL but don't open the browser. |
|
|
69
81
|
| `-y, --yes` | off | Non-interactive: use defaults/flags, never prompt. |
|
|
70
82
|
| `-f, --force` | off | Overwrite existing files. |
|
package/dist/args.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ContainerRuntime } from './templates.js';
|
|
1
|
+
import { type ContainerRuntime, type ExecutionMode, type NativeHarness } from './templates.js';
|
|
2
2
|
import { type VcsProvider } from './vcs.js';
|
|
3
3
|
/** The Kubernetes distribution `cat-factory k3s` can provision/target. */
|
|
4
4
|
export declare const K3S_RUNTIMES: readonly ['k3d', 'kind', 'k3s'];
|
|
@@ -18,6 +18,12 @@ export interface CliOptions {
|
|
|
18
18
|
harnessImage?: string;
|
|
19
19
|
/** Container runtime that spawns agent jobs (`LOCAL_CONTAINER_RUNTIME`). */
|
|
20
20
|
containerRuntime?: ContainerRuntime;
|
|
21
|
+
/** How agent jobs execute: a Docker container pool (default) or native host agents. */
|
|
22
|
+
executionMode?: ExecutionMode;
|
|
23
|
+
/** Native mode only: the subscription harnesses to run natively (`LOCAL_NATIVE_AGENTS`). */
|
|
24
|
+
nativeHarnesses?: NativeHarness[];
|
|
25
|
+
/** Native mode only: the executor-harness server entry path (`LOCAL_HARNESS_ENTRY`). */
|
|
26
|
+
harnessEntry?: string;
|
|
21
27
|
/** `k3s` command: name for a provisioned local cluster. */
|
|
22
28
|
clusterName?: string;
|
|
23
29
|
/** `k3s` command: the Kubernetes distribution to provision/target. */
|
|
@@ -44,9 +50,10 @@ export declare const OPTION_DEFAULTS: {
|
|
|
44
50
|
readonly port: 8787;
|
|
45
51
|
readonly harnessImage: "ghcr.io/kibertoad/cat-factory-executor:latest";
|
|
46
52
|
readonly containerRuntime: ContainerRuntime;
|
|
53
|
+
readonly executionMode: ExecutionMode;
|
|
47
54
|
readonly k3sClusterName: 'cat-factory';
|
|
48
55
|
readonly k3sRuntime: K3sRuntime;
|
|
49
56
|
readonly appUrl: 'http://localhost:3000';
|
|
50
57
|
};
|
|
51
|
-
export declare const HELP_TEXT = "cat-factory \u2014 bootstrap a local cat-factory deployment\n\nUsage:\n cat-factory [init] [options]\n cat-factory k3s [options]\n\nCommands:\n init Scaffold a local-mode backend (local/) + frontend SPA (frontend/): generate the\n crypto secrets, mint a GitHub/GitLab PAT (opens your browser), write gitignored .env.\n k3s Guided local Kubernetes setup: probe the host for a usable cluster, then create (or\n reuse) one + a least-privilege ServiceAccount and print the values to wire the\n Local k3s environment handler. A k3s install needs sudo, so it is only ever printed.\n\nOptions (init):\n -d, --dir <path> Target directory (default: ./<name>)\n --name <name> Project name slug (default: cat-factory)\n --title <title> Frontend app title (default: Agent Architecture Board)\n --provider <p> Source control: github | gitlab (default: github)\n --token <token> PAT value (skips the browser/paste flow)\n --db-url <url> Postgres DATABASE_URL\n --api-base <url> Backend API base for the SPA (default: http://localhost:<port>)\n --port <n> Backend HTTP port (default: 8787; also sets the SPA's api-base)\n --harness-image <ref> Executor-harness image (default: ghcr.io ...:latest)\n --container-runtime <r> Agent container runtime: docker | podman | orbstack | colima | apple\n --no-open Don't open the browser (just print the token URL)\n -y, --yes Non-interactive: use defaults/flags, never prompt\n -f, --force Overwrite existing files\n -h, --help Show this help\n -v, --version Show the CLI version\n\nOptions (k3s):\n --cluster-name <n> Name for a provisioned local cluster (default: cat-factory)\n --runtime <r> Kubernetes distribution: k3d | kind | k3s (default: k3d)\n --app-url <url> SPA base URL to deep-link for wiring (default: http://localhost:3000)\n --no-open Don't open the browser at the pre-filled connect form (still prints it)\n -y, --yes Non-interactive: pick the recommended path + skip confirms\n\n After provisioning, the values are printed and the SPA's Local k3s connect form is opened\n pre-filled (paste the token, then Test -> Save). A hands-free --register flag that POSTs the\n handler to the local API directly is a planned follow-up.\n";
|
|
58
|
+
export declare const HELP_TEXT = "cat-factory \u2014 bootstrap a local cat-factory deployment\n\nUsage:\n cat-factory [init] [options]\n cat-factory k3s [options]\n\nCommands:\n init Scaffold a local-mode backend (local/) + frontend SPA (frontend/): generate the\n crypto secrets, mint a GitHub/GitLab PAT (opens your browser), write gitignored .env.\n k3s Guided local Kubernetes setup: probe the host for a usable cluster, then create (or\n reuse) one + a least-privilege ServiceAccount and print the values to wire the\n Local k3s environment handler. A k3s install needs sudo, so it is only ever printed.\n\nOptions (init):\n -d, --dir <path> Target directory (default: ./<name>)\n --name <name> Project name slug (default: cat-factory)\n --title <title> Frontend app title (default: Agent Architecture Board)\n --provider <p> Source control: github | gitlab (default: github)\n --token <token> PAT value (skips the browser/paste flow)\n --db-url <url> Postgres DATABASE_URL\n --api-base <url> Backend API base for the SPA (default: http://localhost:<port>)\n --port <n> Backend HTTP port (default: 8787; also sets the SPA's api-base)\n --harness-image <ref> Executor-harness image (default: ghcr.io ...:latest)\n --container-runtime <r> Agent container runtime: docker | podman | orbstack | colima | apple\n --execution-mode <m> How agents run: pool (Docker container pool) | native (host CLI)\n --native-harnesses <l> Native mode: harnesses to run natively (claude-code,codex)\n --harness-entry <p> Native mode: path to the executor-harness server entry\n --no-open Don't open the browser (just print the token URL)\n -y, --yes Non-interactive: use defaults/flags, never prompt\n -f, --force Overwrite existing files\n -h, --help Show this help\n -v, --version Show the CLI version\n\nOptions (k3s):\n --cluster-name <n> Name for a provisioned local cluster (default: cat-factory)\n --runtime <r> Kubernetes distribution: k3d | kind | k3s (default: k3d)\n --app-url <url> SPA base URL to deep-link for wiring (default: http://localhost:3000)\n --no-open Don't open the browser at the pre-filled connect form (still prints it)\n -y, --yes Non-interactive: pick the recommended path + skip confirms\n\n After provisioning, the values are printed and the SPA's Local k3s connect form is opened\n pre-filled (paste the token, then Test -> Save). A hands-free --register flag that POSTs the\n handler to the local API directly is a planned follow-up.\n";
|
|
52
59
|
//# sourceMappingURL=args.d.ts.map
|
package/dist/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EAGrB,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAE1D,0EAA0E;AAC1E,eAAO,MAAM,YAAY,YAAI,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,8FAA8F;AAC9F,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,uFAAuF;IACvF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAA;IACf,+FAA+F;IAC/F,GAAG,EAAE,OAAO,CAAA;IACZ,oDAAoD;IACpD,KAAK,EAAE,OAAO,CAAA;CACf;AAQD,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAEtC,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4GpD;AAoFD,qEAAqE;AACrE,eAAO,MAAM,eAAe;aAC1B,WAAW,EAAE,aAAa;aAC1B,QAAQ,EAAE,0BAA0B;aACpC,QAAQ,EAAc,WAAW;aACjC,WAAW,EAAE,8CAA8C;aAI3D,IAAI,EAAE,IAAI;aACV,YAAY;aACZ,gBAAgB,EAAc,gBAAgB;aAC9C,aAAa,EAAY,aAAa;aAEtC,cAAc,EAAE,aAAa;aAC7B,UAAU,EAAW,UAAU;aAG/B,MAAM,EAAE,uBAAuB;CACvB,CAAA;AAEV,eAAO,MAAM,SAAS,ooFA2CrB,CAAA"}
|
package/dist/args.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CONTAINER_RUNTIMES, DEFAULT_HARNESS_IMAGE } from './templates.js';
|
|
1
|
+
import { CONTAINER_RUNTIMES, DEFAULT_HARNESS_IMAGE, EXECUTION_MODES, NATIVE_HARNESSES, } from './templates.js';
|
|
2
2
|
import { VCS_PROVIDERS } from './vcs.js';
|
|
3
3
|
/** The Kubernetes distribution `cat-factory k3s` can provision/target. */
|
|
4
4
|
export const K3S_RUNTIMES = ['k3d', 'kind', 'k3s'];
|
|
@@ -83,6 +83,15 @@ export function parseArgs(argv) {
|
|
|
83
83
|
case '--container-runtime':
|
|
84
84
|
opts.containerRuntime = parseContainerRuntime(takeValue(flag, inline, queue));
|
|
85
85
|
break;
|
|
86
|
+
case '--execution-mode':
|
|
87
|
+
opts.executionMode = parseExecutionMode(takeValue(flag, inline, queue));
|
|
88
|
+
break;
|
|
89
|
+
case '--native-harnesses':
|
|
90
|
+
opts.nativeHarnesses = parseNativeHarnesses(takeValue(flag, inline, queue));
|
|
91
|
+
break;
|
|
92
|
+
case '--harness-entry':
|
|
93
|
+
opts.harnessEntry = takeValue(flag, inline, queue);
|
|
94
|
+
break;
|
|
86
95
|
case '--cluster-name':
|
|
87
96
|
opts.clusterName = takeValue(flag, inline, queue);
|
|
88
97
|
break;
|
|
@@ -121,6 +130,34 @@ function parseContainerRuntime(value) {
|
|
|
121
130
|
return v;
|
|
122
131
|
throw new ArgError(`Invalid --container-runtime "${value}" (expected: ${CONTAINER_RUNTIMES.join(' | ')})`);
|
|
123
132
|
}
|
|
133
|
+
function parseExecutionMode(value) {
|
|
134
|
+
const v = value.toLowerCase();
|
|
135
|
+
if (EXECUTION_MODES.includes(v))
|
|
136
|
+
return v;
|
|
137
|
+
throw new ArgError(`Invalid --execution-mode "${value}" (expected: ${EXECUTION_MODES.join(' | ')})`);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Parse a comma-separated `--native-harnesses` list (e.g. `claude-code,codex`). `claude` is
|
|
141
|
+
* accepted as an alias for `claude-code`, matching the backend's `LOCAL_NATIVE_AGENTS` alias.
|
|
142
|
+
* Unlike the backend env parse (which also honours affirmative/off keywords like `both`/`off`
|
|
143
|
+
* and fails safe to off), this explicit flag is strict: at least one recognised harness must be
|
|
144
|
+
* named, and anything else is a hard error.
|
|
145
|
+
*/
|
|
146
|
+
function parseNativeHarnesses(value) {
|
|
147
|
+
const out = new Set();
|
|
148
|
+
for (const raw of value.split(',').map((s) => s.trim().toLowerCase())) {
|
|
149
|
+
if (raw === 'claude-code' || raw === 'claude')
|
|
150
|
+
out.add('claude-code');
|
|
151
|
+
else if (raw === 'codex')
|
|
152
|
+
out.add('codex');
|
|
153
|
+
else if (raw !== '')
|
|
154
|
+
throw new ArgError(`Invalid --native-harnesses "${value}" (expected: ${NATIVE_HARNESSES.join(' | ')})`);
|
|
155
|
+
}
|
|
156
|
+
if (out.size === 0) {
|
|
157
|
+
throw new ArgError(`Invalid --native-harnesses "${value}" (expected at least one of: ${NATIVE_HARNESSES.join(' | ')})`);
|
|
158
|
+
}
|
|
159
|
+
return [...out];
|
|
160
|
+
}
|
|
124
161
|
function parseK3sRuntime(value) {
|
|
125
162
|
const v = value.toLowerCase();
|
|
126
163
|
if (K3S_RUNTIMES.includes(v))
|
|
@@ -165,6 +202,7 @@ export const OPTION_DEFAULTS = {
|
|
|
165
202
|
port: 8787,
|
|
166
203
|
harnessImage: DEFAULT_HARNESS_IMAGE,
|
|
167
204
|
containerRuntime: 'docker',
|
|
205
|
+
executionMode: 'pool',
|
|
168
206
|
// `k3s` command defaults.
|
|
169
207
|
k3sClusterName: 'cat-factory',
|
|
170
208
|
k3sRuntime: 'k3d',
|
|
@@ -196,6 +234,9 @@ Options (init):
|
|
|
196
234
|
--port <n> Backend HTTP port (default: 8787; also sets the SPA's api-base)
|
|
197
235
|
--harness-image <ref> Executor-harness image (default: ghcr.io ...:latest)
|
|
198
236
|
--container-runtime <r> Agent container runtime: docker | podman | orbstack | colima | apple
|
|
237
|
+
--execution-mode <m> How agents run: pool (Docker container pool) | native (host CLI)
|
|
238
|
+
--native-harnesses <l> Native mode: harnesses to run natively (claude-code,codex)
|
|
239
|
+
--harness-entry <p> Native mode: path to the executor-harness server entry
|
|
199
240
|
--no-open Don't open the browser (just print the token URL)
|
|
200
241
|
-y, --yes Non-interactive: use defaults/flags, never prompt
|
|
201
242
|
-f, --force Overwrite existing files
|
package/dist/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,eAAe,EAEf,gBAAgB,GAEjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAA;AAE1D,0EAA0E;AAC1E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAU,CAAA;AAsC3D,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,KAAK;CACJ,CAAA;AAEV,MAAM,OAAO,QAAS,SAAQ,KAAK;CAAG;AAEtC,mGAAmG;AACnG,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAe,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IACzD,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAA0B,EAAE,IAAc,EAAU,EAAE;QACrF,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QACzB,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;QACvE,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;IACvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAY,CAAA;QACnC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACvE,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEhF,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM;gBACT,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;oBACrB,UAAU,GAAG,IAAI,CAAA;gBACnB,CAAC;gBACD,MAAK;YACP,KAAK,KAAK;gBACR,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;oBACpB,UAAU,GAAG,IAAI,CAAA;gBACnB,CAAC;gBACD,MAAK;YACP,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;gBACrB,UAAU,GAAG,IAAI,CAAA;gBACjB,MAAK;YACP,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC;YACjB,KAAK,IAAI;gBACP,IAAI,CAAC,OAAO,GAAG,SAAS,CAAA;gBACxB,UAAU,GAAG,IAAI,CAAA;gBACjB,MAAK;YACP,KAAK,OAAO,CAAC;YACb,KAAK,IAAI;gBACP,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBACzC,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAC9C,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC7D,MAAK;YACP,KAAK,SAAS;gBACZ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAC3C,MAAK;YACP,KAAK,UAAU;gBACb,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,YAAY;gBACf,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAC7C,MAAK;YACP,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACrD,MAAK;YACP,KAAK,iBAAiB;gBACpB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,qBAAqB;gBACxB,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC7E,MAAK;YACP,KAAK,kBAAkB;gBACrB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACvE,MAAK;YACP,KAAK,oBAAoB;gBACvB,IAAI,CAAC,eAAe,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC3E,MAAK;YACP,KAAK,iBAAiB;gBACpB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBAClD,MAAK;YACP,KAAK,gBAAgB;gBACnB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;gBACjD,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACjE,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;gBACzD,MAAK;YACP,KAAK,WAAW;gBACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,MAAK;YACP,KAAK,OAAO,CAAC;YACb,KAAK,IAAI;gBACP,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;gBACf,MAAK;YACP,KAAK,SAAS,CAAC;YACf,KAAK,IAAI;gBACP,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;gBACjB,MAAK;YACP;gBACE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC7B,IAAK,aAAmC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAgB,CAAA;IAC7E,MAAM,IAAI,QAAQ,CAAC,uBAAuB,KAAK,gBAAgB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC9F,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC7B,IAAK,kBAAwC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAqB,CAAA;IACvF,MAAM,IAAI,QAAQ,CAChB,gCAAgC,KAAK,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACvF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC7B,IAAK,eAAqC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAkB,CAAA;IACjF,MAAM,IAAI,QAAQ,CAChB,6BAA6B,KAAK,gBAAgB,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACjF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAA;IACpC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACtE,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;aAChE,IAAI,GAAG,KAAK,OAAO;YAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;aACrC,IAAI,GAAG,KAAK,EAAE;YACjB,MAAM,IAAI,QAAQ,CAChB,+BAA+B,KAAK,gBAAgB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACpF,CAAA;IACL,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,QAAQ,CAChB,+BAA+B,KAAK,gCAAgC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CACpG,CAAA;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IAC7B,IAAK,YAAkC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAe,CAAA;IAC3E,MAAM,IAAI,QAAQ,CAAC,sBAAsB,KAAK,gBAAgB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QAC/C,MAAM,IAAI,QAAQ,CAAC,mBAAmB,KAAK,iCAAiC,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,GAAQ,CAAA;IACZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAChB,sBAAsB,KAAK,kEAAkE,CAC9F,CAAA;IACH,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,IAAI,QAAQ,CAAC,sBAAsB,KAAK,yCAAyC,CAAC,CAAA;IAC1F,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,qEAAqE;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,0BAA0B;IACpC,QAAQ,EAAE,QAAuB;IACjC,WAAW,EAAE,8CAA8C;IAC3D,0EAA0E;IAC1E,0FAA0F;IAC1F,gCAAgC;IAChC,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,qBAAqB;IACnC,gBAAgB,EAAE,QAA4B;IAC9C,aAAa,EAAE,MAAuB;IACtC,0BAA0B;IAC1B,cAAc,EAAE,aAAa;IAC7B,UAAU,EAAE,KAAmB;IAC/B,iGAAiG;IACjG,oEAAoE;IACpE,MAAM,EAAE,uBAAuB;CACvB,CAAA;AAEV,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CxB,CAAA"}
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,WAAW,CAAA;AAO5D,OAAO,EAAmB,KAAK,EAAE,EAAE,MAAM,SAAS,CAAA;AAElD,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAWvF,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,IAAI,CAAA;KAAE,GAAG,IAAI,CAAA;IAC3D,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACpD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD;AAaD,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,EAAE,CAAA;IACP,EAAE,CAAC,EAAE,UAAU,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAE5C,wFAAwF;AACxF,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4F9F"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as nodeFs from 'node:fs';
|
|
2
2
|
import { dirname, join, resolve } from 'node:path';
|
|
3
3
|
import { OPTION_DEFAULTS } from './args.js';
|
|
4
|
+
import { ALL_NATIVE_HARNESSES, EXECUTION_MODE_TRADEOFFS, NATIVE_HARNESS_INFO, nativeModelsFor, } from './execution.js';
|
|
4
5
|
import { createConsoleIo } from './io.js';
|
|
5
6
|
import { buildPlan } from './plan.js';
|
|
6
7
|
import { generateSecrets } from './secrets.js';
|
|
7
8
|
import { slugifyProjectName } from './slug.js';
|
|
8
|
-
import { CONTAINER_RUNTIMES } from './templates.js';
|
|
9
|
+
import { CONTAINER_RUNTIMES, EXECUTION_MODES, } from './templates.js';
|
|
9
10
|
import { patCreationUrl, providerLabel, VCS_PROVIDERS } from './vcs.js';
|
|
10
11
|
const realFs = {
|
|
11
12
|
existsSync: (p) => nodeFs.existsSync(p),
|
|
@@ -55,9 +56,9 @@ export async function bootstrap(options, deps = {}) {
|
|
|
55
56
|
const harnessImage = options.harnessImage ?? OPTION_DEFAULTS.harnessImage;
|
|
56
57
|
const containerRuntime = await resolveContainerRuntime(options, io);
|
|
57
58
|
const corsAllowedOrigins = 'http://localhost:3000';
|
|
59
|
+
const execution = await resolveExecution(options, io);
|
|
58
60
|
const token = await resolveToken(options, provider, io);
|
|
59
|
-
const secrets =
|
|
60
|
-
io.info('\nGenerated AUTH_SESSION_SECRET (hex) and ENCRYPTION_KEY (base64).');
|
|
61
|
+
const secrets = await resolveSecrets(options, io, deps.randomBytes);
|
|
61
62
|
const gitignorePath = join(targetDir, '.gitignore');
|
|
62
63
|
const existingGitignore = fs.existsSync(gitignorePath)
|
|
63
64
|
? fs.readFileSync(gitignorePath, 'utf8')
|
|
@@ -73,6 +74,9 @@ export async function bootstrap(options, deps = {}) {
|
|
|
73
74
|
corsAllowedOrigins,
|
|
74
75
|
harnessImage,
|
|
75
76
|
containerRuntime,
|
|
77
|
+
executionMode: execution.mode,
|
|
78
|
+
nativeHarnesses: execution.nativeHarnesses,
|
|
79
|
+
harnessEntry: execution.harnessEntry,
|
|
76
80
|
authSessionSecret: secrets.authSessionSecret,
|
|
77
81
|
encryptionKey: secrets.encryptionKey,
|
|
78
82
|
existingGitignore,
|
|
@@ -85,6 +89,7 @@ export async function bootstrap(options, deps = {}) {
|
|
|
85
89
|
port,
|
|
86
90
|
apiBase,
|
|
87
91
|
tokenProvided: token !== '',
|
|
92
|
+
execution,
|
|
88
93
|
alreadyGitRepo: fs.existsSync(join(targetDir, '.git')),
|
|
89
94
|
});
|
|
90
95
|
return targetDir;
|
|
@@ -103,6 +108,119 @@ async function resolveContainerRuntime(options, io) {
|
|
|
103
108
|
return OPTION_DEFAULTS.containerRuntime;
|
|
104
109
|
return io.select('Container runtime that spawns agent jobs', CONTAINER_RUNTIMES.map((value) => ({ value, label: value })), OPTION_DEFAULTS.containerRuntime);
|
|
105
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve how agent jobs execute — a prewarmed Docker pool (default) or native host agents —
|
|
113
|
+
* plus, for native mode, which harnesses run natively and the harness server entry path. In
|
|
114
|
+
* interactive mode the tradeoffs of each mode are printed before the choice, and (native only)
|
|
115
|
+
* the developer can list which models actually run natively before committing.
|
|
116
|
+
*/
|
|
117
|
+
/** Whether any native-only flag (`--native-harnesses` / `--harness-entry`) was supplied. */
|
|
118
|
+
function nativeFlagsProvided(options) {
|
|
119
|
+
return Boolean(options.nativeHarnesses?.length) || options.harnessEntry !== undefined;
|
|
120
|
+
}
|
|
121
|
+
async function resolveExecution(options, io) {
|
|
122
|
+
const mode = await resolveExecutionMode(options, io);
|
|
123
|
+
if (mode !== 'native') {
|
|
124
|
+
// Native-only flags carry no meaning in pool mode; warn rather than silently drop them so a
|
|
125
|
+
// `--execution-mode pool --native-harnesses …` (or the same via prompt) isn't a quiet no-op.
|
|
126
|
+
if (nativeFlagsProvided(options))
|
|
127
|
+
io.warn('Ignoring --native-harnesses / --harness-entry: they only apply to --execution-mode native.');
|
|
128
|
+
return { mode };
|
|
129
|
+
}
|
|
130
|
+
const nativeHarnesses = await resolveNativeHarnesses(options, io);
|
|
131
|
+
if (!options.yes)
|
|
132
|
+
await maybeShowNativeModels(io, nativeHarnesses);
|
|
133
|
+
const harnessEntry = await resolveHarnessEntry(options, io);
|
|
134
|
+
return { mode, nativeHarnesses, harnessEntry };
|
|
135
|
+
}
|
|
136
|
+
async function resolveExecutionMode(options, io) {
|
|
137
|
+
if (options.executionMode)
|
|
138
|
+
return options.executionMode;
|
|
139
|
+
// A native-only flag with no explicit --execution-mode clearly means native: infer it rather
|
|
140
|
+
// than defaulting to pool and dropping the flag on the floor.
|
|
141
|
+
if (nativeFlagsProvided(options)) {
|
|
142
|
+
io.info('Assuming --execution-mode native (a native-only flag was provided).');
|
|
143
|
+
return 'native';
|
|
144
|
+
}
|
|
145
|
+
if (options.yes)
|
|
146
|
+
return OPTION_DEFAULTS.executionMode;
|
|
147
|
+
// Print both modes' tradeoffs so the choice is informed, not a bare two-item menu.
|
|
148
|
+
io.info(['\nHow should agent jobs run locally?', '', ...EXECUTION_MODES.flatMap(tradeoffBlock)].join('\n'));
|
|
149
|
+
return io.select('Execution mode', [
|
|
150
|
+
{ value: 'pool', label: 'Prewarmed Docker pool (recommended)' },
|
|
151
|
+
{ value: 'native', label: 'Native host agents (your own claude/codex CLI)' },
|
|
152
|
+
], OPTION_DEFAULTS.executionMode);
|
|
153
|
+
}
|
|
154
|
+
/** Render one execution mode's tradeoff bullet block for the pre-prompt info. */
|
|
155
|
+
function tradeoffBlock(mode) {
|
|
156
|
+
return [...EXECUTION_MODE_TRADEOFFS[mode], ''];
|
|
157
|
+
}
|
|
158
|
+
async function resolveNativeHarnesses(options, io) {
|
|
159
|
+
if (options.nativeHarnesses?.length)
|
|
160
|
+
return options.nativeHarnesses;
|
|
161
|
+
if (options.yes)
|
|
162
|
+
return [...ALL_NATIVE_HARNESSES];
|
|
163
|
+
const choice = await io.select('Which installed CLI(s) should run agents natively?', [
|
|
164
|
+
{ value: 'both', label: 'Both — Claude Code and Codex' },
|
|
165
|
+
{ value: 'claude-code', label: NATIVE_HARNESS_INFO['claude-code'].label },
|
|
166
|
+
{ value: 'codex', label: NATIVE_HARNESS_INFO.codex.label },
|
|
167
|
+
], 'both');
|
|
168
|
+
return choice === 'both' ? [...ALL_NATIVE_HARNESSES] : [choice];
|
|
169
|
+
}
|
|
170
|
+
/** Offer to list the models that will actually run natively for the chosen harnesses. */
|
|
171
|
+
async function maybeShowNativeModels(io, harnesses) {
|
|
172
|
+
const show = await io.confirm('List the models that will run natively in this mode?', true);
|
|
173
|
+
if (!show)
|
|
174
|
+
return;
|
|
175
|
+
const models = nativeModelsFor(harnesses);
|
|
176
|
+
const lines = [
|
|
177
|
+
'\nModels that run natively (through your ambient CLI):',
|
|
178
|
+
...models.map((m) => ` - ${m.label} [id: ${m.id}] via ${m.harness}`),
|
|
179
|
+
'',
|
|
180
|
+
'Any OTHER model a step selects (Cloudflare, direct keys, or GLM/Kimi/DeepSeek — which',
|
|
181
|
+
'reuse the claude-code harness against their own endpoint) still runs in a container,',
|
|
182
|
+
'so the executor image is still used for those steps.',
|
|
183
|
+
];
|
|
184
|
+
io.info(lines.join('\n'));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Resolve the executor-harness server entry path required for native mode. There is no
|
|
188
|
+
* universal default (it depends where the harness source lives), so an unset value is left
|
|
189
|
+
* blank in `.env` with a warning to fill it in before starting.
|
|
190
|
+
*/
|
|
191
|
+
async function resolveHarnessEntry(options, io) {
|
|
192
|
+
if (options.harnessEntry !== undefined)
|
|
193
|
+
return options.harnessEntry;
|
|
194
|
+
if (options.yes) {
|
|
195
|
+
// Non-interactive native mode with no --harness-entry: LOCAL_HARNESS_ENTRY is required, so
|
|
196
|
+
// warn loudly here too (the interactive branch below already does) — otherwise the misconfig
|
|
197
|
+
// only surfaces as a boot-time throw.
|
|
198
|
+
io.warn('LOCAL_HARNESS_ENTRY left blank (native mode, --yes with no --harness-entry) — set it ' +
|
|
199
|
+
'before starting or native dispatch fails.');
|
|
200
|
+
return '';
|
|
201
|
+
}
|
|
202
|
+
const entry = (await io.question('Path to the executor-harness server entry (LOCAL_HARNESS_ENTRY; leave blank to set later)')).trim();
|
|
203
|
+
if (entry === '')
|
|
204
|
+
io.warn('LOCAL_HARNESS_ENTRY left blank — set it before starting or native dispatch fails.');
|
|
205
|
+
return entry;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Resolve the two mandatory crypto secrets. By default (and always in `--yes` mode) they are
|
|
209
|
+
* generated for the developer in the server's required formats. Interactively the developer can
|
|
210
|
+
* decline (e.g. to paste their own), leaving them blank with a note on how to fill them in.
|
|
211
|
+
*/
|
|
212
|
+
async function resolveSecrets(options, io, randomBytes) {
|
|
213
|
+
const generate = options.yes ||
|
|
214
|
+
(await io.confirm('Generate AUTH_SESSION_SECRET and ENCRYPTION_KEY for you?', true));
|
|
215
|
+
if (!generate) {
|
|
216
|
+
io.warn('Left AUTH_SESSION_SECRET / ENCRYPTION_KEY blank — fill them in before starting ' +
|
|
217
|
+
'(see local/.env.example for the generate commands). Keep both stable once set.');
|
|
218
|
+
return { authSessionSecret: '', encryptionKey: '' };
|
|
219
|
+
}
|
|
220
|
+
const secrets = generateSecrets(randomBytes);
|
|
221
|
+
io.info('\nGenerated AUTH_SESSION_SECRET (hex) and ENCRYPTION_KEY (base64).');
|
|
222
|
+
return secrets;
|
|
223
|
+
}
|
|
106
224
|
/**
|
|
107
225
|
* Resolve the PAT: an explicit `--token` wins; otherwise (interactive only) print the pre-scoped
|
|
108
226
|
* creation URL, open the browser at it, and read the pasted token back. In `--yes` mode with no
|
|
@@ -159,6 +277,15 @@ function printNextSteps(io, input) {
|
|
|
159
277
|
` - Pull the executor image: docker pull ${OPTION_DEFAULTS.harnessImage}`,
|
|
160
278
|
' - Configure at least one model provider in local/.env (e.g. CLOUDFLARE_ACCOUNT_ID + CLOUDFLARE_API_TOKEN).',
|
|
161
279
|
];
|
|
280
|
+
if (input.execution.mode === 'native') {
|
|
281
|
+
const clis = (input.execution.nativeHarnesses ?? [...ALL_NATIVE_HARNESSES])
|
|
282
|
+
.map((h) => NATIVE_HARNESS_INFO[h].cli)
|
|
283
|
+
.join(' / ');
|
|
284
|
+
lines.push(` - Native mode: install + log in to the ${clis} CLI on this host, and set`, ' LOCAL_HARNESS_ENTRY in local/.env (the image above still runs non-native steps).');
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
lines.push(' - Warm pool (faster starts) is optional — configure it in the UI under Integrations >', ' "Local mode" (recommended to start: size 3, pre-warm 1).');
|
|
288
|
+
}
|
|
162
289
|
if (!input.tokenProvided) {
|
|
163
290
|
lines.push(` - Set your ${providerLabel(input.provider)} token in local/.env before running agents.`);
|
|
164
291
|
}
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ContainerRuntime } from './templates.js';
|
|
1
|
+
import { type ContainerRuntime, type ExecutionMode, type NativeHarness } from './templates.js';
|
|
2
2
|
import { type VcsProvider } from './vcs.js';
|
|
3
3
|
/** One line of an `.env` file: a key/value pair with an optional leading comment block. */
|
|
4
4
|
export interface EnvEntry {
|
|
@@ -24,6 +24,12 @@ export interface LocalEnvInput {
|
|
|
24
24
|
provider: VcsProvider;
|
|
25
25
|
/** Container runtime that spawns agent jobs (`LOCAL_CONTAINER_RUNTIME`). */
|
|
26
26
|
containerRuntime: ContainerRuntime;
|
|
27
|
+
/** How agent jobs execute: a Docker container pool (default) or native host agents. */
|
|
28
|
+
executionMode?: ExecutionMode;
|
|
29
|
+
/** Native mode only: the subscription harnesses to run as host processes. */
|
|
30
|
+
nativeHarnesses?: NativeHarness[];
|
|
31
|
+
/** Native mode only: the executor-harness server entry path (`LOCAL_HARNESS_ENTRY`). */
|
|
32
|
+
harnessEntry?: string;
|
|
27
33
|
/** The pasted PAT, or empty/undefined to leave the var present-but-blank. */
|
|
28
34
|
token?: string;
|
|
29
35
|
}
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAA4B,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAErE,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAMzD;AAED,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,EAAE,WAAW,CAAA;IACrB,4EAA4E;IAC5E,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,uFAAuF;IACvF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAgF1D;AAwKD,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAWhE"}
|
package/dist/env.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { nativeModelSummary } from './execution.js';
|
|
2
|
+
import { CONTAINER_RUNTIMES, NATIVE_HARNESSES, } from './templates.js';
|
|
2
3
|
import { patEnvVar, providerLabel } from './vcs.js';
|
|
3
4
|
/**
|
|
4
5
|
* Render a list of {@link EnvEntry} into `.env` file text. Comments are emitted above their
|
|
@@ -73,6 +74,8 @@ export function buildLocalEnv(input) {
|
|
|
73
74
|
value: input.containerRuntime,
|
|
74
75
|
},
|
|
75
76
|
...reachabilityEntries(input.containerRuntime),
|
|
77
|
+
...executionModeEntries(input),
|
|
78
|
+
...commonOptionalEntries(input.provider),
|
|
76
79
|
{
|
|
77
80
|
comment: [
|
|
78
81
|
'At least one model provider must be configured or no model is selectable.',
|
|
@@ -92,6 +95,127 @@ export function buildLocalEnv(input) {
|
|
|
92
95
|
];
|
|
93
96
|
return renderEnvFile(entries);
|
|
94
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Execution-mode entries: PREWARMED DOCKER POOL (default) or NATIVE host agents. In pool
|
|
100
|
+
* mode the native knobs are written commented (advertising the alternative) plus a pointer
|
|
101
|
+
* to the UI-configured warm pool with recommended sizing. In native mode `LOCAL_NATIVE_AGENTS`
|
|
102
|
+
* + `LOCAL_HARNESS_ENTRY` are written active, annotated with the models that actually run
|
|
103
|
+
* natively (every other step still runs in a container, so LOCAL_HARNESS_IMAGE stays needed).
|
|
104
|
+
*/
|
|
105
|
+
function executionModeEntries(input) {
|
|
106
|
+
if (input.executionMode === 'native') {
|
|
107
|
+
const harnesses = input.nativeHarnesses?.length ? input.nativeHarnesses : [...NATIVE_HARNESSES];
|
|
108
|
+
return [
|
|
109
|
+
{
|
|
110
|
+
comment: [
|
|
111
|
+
'Execution mode: NATIVE host agents (chosen). A step whose model maps to a native',
|
|
112
|
+
'vendor runs as a HOST PROCESS driving your OWN installed CLI (ambient login) — no',
|
|
113
|
+
'container, no leased credential, NO sandbox (full host access + your subscription).',
|
|
114
|
+
`Runs natively: ${nativeModelSummary(harnesses)}.`,
|
|
115
|
+
'Every OTHER step (Cloudflare/proxy models, and GLM/Kimi/DeepSeek which reuse the',
|
|
116
|
+
'claude-code harness against their own endpoint) still runs in a container, so',
|
|
117
|
+
'LOCAL_HARNESS_IMAGE above is still required. The named CLIs must already be',
|
|
118
|
+
'installed and logged in on this host.',
|
|
119
|
+
],
|
|
120
|
+
key: 'LOCAL_NATIVE_AGENTS',
|
|
121
|
+
value: harnesses.join(','),
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
comment: [
|
|
125
|
+
'REQUIRED for native mode: path to the executor-harness server entry run as the host',
|
|
126
|
+
'process (its built server.js, or src/server.ts via Node type-stripping). Fill this in',
|
|
127
|
+
'before starting — native dispatch fails loudly without it.',
|
|
128
|
+
],
|
|
129
|
+
key: 'LOCAL_HARNESS_ENTRY',
|
|
130
|
+
value: input.harnessEntry ?? '',
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
}
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
comment: [
|
|
137
|
+
'Execution mode: PREWARMED DOCKER POOL (chosen). Agent jobs run in per-run containers',
|
|
138
|
+
'from LOCAL_HARNESS_IMAGE above via LOCAL_CONTAINER_RUNTIME. Warm-pool sizing (keep N',
|
|
139
|
+
'containers ready so runs start fast) lives in the DB, edited in the UI under',
|
|
140
|
+
'Integrations > "Local mode". Off by default (cold-start per run); recommended to start:',
|
|
141
|
+
'size 3, pre-warm 1, idle timeout 10m.',
|
|
142
|
+
'',
|
|
143
|
+
'To switch to NATIVE host agents instead (your own installed claude/codex CLI — no',
|
|
144
|
+
'container, no leased credential), set LOCAL_NATIVE_AGENTS (e.g. claude-code,codex) and',
|
|
145
|
+
'LOCAL_HARNESS_ENTRY (the harness server entry path). Only Claude/ChatGPT models go',
|
|
146
|
+
'native; every other model still uses the container path above.',
|
|
147
|
+
],
|
|
148
|
+
key: '# LOCAL_NATIVE_AGENTS',
|
|
149
|
+
value: '',
|
|
150
|
+
},
|
|
151
|
+
{ key: '# LOCAL_HARNESS_ENTRY', value: '' },
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Commonly-useful optional settings, all commented out so a developer can toggle them in place
|
|
156
|
+
* instead of hunting the docs. NOTE: these are shown with the value you'd set to change the
|
|
157
|
+
* behaviour, which is NOT always the default — the auth pair below is on by default in local
|
|
158
|
+
* mode, but tracing/Slack/consensus are opt-in (off) and image-refresh is on by default. Each
|
|
159
|
+
* comment states the actual default. Mirrors the opt-in knobs in `deploy/local/.env.example`.
|
|
160
|
+
*/
|
|
161
|
+
function commonOptionalEntries(provider) {
|
|
162
|
+
const entries = [
|
|
163
|
+
{
|
|
164
|
+
comment: [
|
|
165
|
+
'Email/password sign-in + open signup. Both are ON by default in local mode (the values',
|
|
166
|
+
'shown are the defaults) — uncomment and set to false to require an invite / disable it.',
|
|
167
|
+
],
|
|
168
|
+
key: '# AUTH_PASSWORD_ENABLED',
|
|
169
|
+
value: 'true',
|
|
170
|
+
},
|
|
171
|
+
{ key: '# AUTH_OPEN_SIGNUP', value: 'true' },
|
|
172
|
+
{
|
|
173
|
+
comment: [
|
|
174
|
+
'Boot-time harness image refresh (pull the backend-matched image on start). ON by',
|
|
175
|
+
'default; the value shown DISABLES it — uncomment when offline or you manage the image',
|
|
176
|
+
'yourself.',
|
|
177
|
+
],
|
|
178
|
+
key: '# LOCAL_HARNESS_IMAGE_REFRESH',
|
|
179
|
+
value: 'off',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
comment: [
|
|
183
|
+
'Stream every LLM call to Langfuse. OFF by default; the value shown ENABLES it (also',
|
|
184
|
+
'needs both keys below).',
|
|
185
|
+
],
|
|
186
|
+
key: '# LANGFUSE_ENABLED',
|
|
187
|
+
value: 'true',
|
|
188
|
+
},
|
|
189
|
+
{ key: '# LANGFUSE_PUBLIC_KEY', value: '' },
|
|
190
|
+
{ key: '# LANGFUSE_SECRET_KEY', value: '' },
|
|
191
|
+
{
|
|
192
|
+
comment: [
|
|
193
|
+
'Post board notifications to Slack (connect the workspace in the UI). OFF by default;',
|
|
194
|
+
'the value shown ENABLES it.',
|
|
195
|
+
],
|
|
196
|
+
key: '# SLACK_ENABLED',
|
|
197
|
+
value: 'true',
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
comment: [
|
|
201
|
+
'Multi-model consensus (specialist panel / debate / ranked voting) on eligible steps.',
|
|
202
|
+
'OFF by default; the value shown ENABLES it.',
|
|
203
|
+
],
|
|
204
|
+
key: '# CONSENSUS_ENABLED',
|
|
205
|
+
value: 'true',
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
if (provider === 'gitlab') {
|
|
209
|
+
entries.push({
|
|
210
|
+
comment: [
|
|
211
|
+
'Self-managed GitLab only: point at your instance API (e.g. https://gitlab.example.com/api/v4).',
|
|
212
|
+
],
|
|
213
|
+
key: '# GITLAB_API_BASE',
|
|
214
|
+
value: '',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
return entries;
|
|
218
|
+
}
|
|
95
219
|
/**
|
|
96
220
|
* Container→host reachability + security hints, commented out (sensible defaults apply). Agent
|
|
97
221
|
* job containers reach this service's LLM proxy over the network, and how they address the host
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ExecutionMode, type NativeHarness } from './templates.js';
|
|
2
|
+
/** A native subscription harness: the CLI it drives + a picker label. */
|
|
3
|
+
export interface NativeHarnessInfo {
|
|
4
|
+
harness: NativeHarness;
|
|
5
|
+
/** The CLI that must already be installed AND logged in on the host. */
|
|
6
|
+
cli: string;
|
|
7
|
+
label: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const NATIVE_HARNESS_INFO: Record<NativeHarness, NativeHarnessInfo>;
|
|
10
|
+
/** A catalog model that runs through a native ambient CLI in native mode. */
|
|
11
|
+
export interface NativeModel {
|
|
12
|
+
/** Catalog id stored on a block (e.g. `claude-opus`). */
|
|
13
|
+
id: string;
|
|
14
|
+
label: string;
|
|
15
|
+
/** Which native harness serves it. */
|
|
16
|
+
harness: NativeHarness;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* The native-capable subset of `@cat-factory/agents`' MODEL_CATALOG: models whose
|
|
20
|
+
* subscription harness is a NATIVE vendor (Claude via `claude-code`, ChatGPT via `codex`).
|
|
21
|
+
* Vendors that merely REUSE the `claude-code` harness against their own endpoint
|
|
22
|
+
* (GLM/Kimi/DeepSeek) are deliberately excluded — they still run in a container.
|
|
23
|
+
* Informational only, so a small hand-maintained mirror is acceptable; keep it in step
|
|
24
|
+
* with the backend catalog when the flagship models change.
|
|
25
|
+
*/
|
|
26
|
+
export declare const NATIVE_MODELS: NativeModel[];
|
|
27
|
+
/** The models that run natively for the given set of enabled native harnesses. */
|
|
28
|
+
export declare function nativeModelsFor(harnesses: readonly NativeHarness[]): NativeModel[];
|
|
29
|
+
/** A one-line `Label (id)` summary of the applicable native models, for `.env` comments. */
|
|
30
|
+
export declare function nativeModelSummary(harnesses: readonly NativeHarness[]): string;
|
|
31
|
+
/** The tradeoff blurb shown before the execution-mode prompt, keyed by mode. */
|
|
32
|
+
export declare const EXECUTION_MODE_TRADEOFFS: Record<ExecutionMode, string[]>;
|
|
33
|
+
/** All native harnesses (both), for the "enable both" default. */
|
|
34
|
+
export declare const ALL_NATIVE_HARNESSES: NativeHarness[];
|
|
35
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAElB,KAAK,aAAa,EACnB,MAAM,gBAAgB,CAAA;AAQvB,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAA;IACtB,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAWxE,CAAA;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,sCAAsC;IACtC,OAAO,EAAE,aAAa,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAKtC,CAAA;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,WAAW,EAAE,CAGlF;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,CAI9E;AAED,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAkBpE,CAAA;AAED,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAA0B,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { CONTAINER_RUNTIMES, NATIVE_HARNESSES, } from './templates.js';
|
|
2
|
+
export const NATIVE_HARNESS_INFO = {
|
|
3
|
+
'claude-code': {
|
|
4
|
+
harness: 'claude-code',
|
|
5
|
+
cli: 'claude',
|
|
6
|
+
label: 'Claude Code (drives your `claude` CLI — Anthropic Claude)',
|
|
7
|
+
},
|
|
8
|
+
codex: {
|
|
9
|
+
harness: 'codex',
|
|
10
|
+
cli: 'codex',
|
|
11
|
+
label: 'Codex (drives your `codex` CLI — OpenAI ChatGPT)',
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The native-capable subset of `@cat-factory/agents`' MODEL_CATALOG: models whose
|
|
16
|
+
* subscription harness is a NATIVE vendor (Claude via `claude-code`, ChatGPT via `codex`).
|
|
17
|
+
* Vendors that merely REUSE the `claude-code` harness against their own endpoint
|
|
18
|
+
* (GLM/Kimi/DeepSeek) are deliberately excluded — they still run in a container.
|
|
19
|
+
* Informational only, so a small hand-maintained mirror is acceptable; keep it in step
|
|
20
|
+
* with the backend catalog when the flagship models change.
|
|
21
|
+
*/
|
|
22
|
+
export const NATIVE_MODELS = [
|
|
23
|
+
{ id: 'claude-opus', label: 'Claude Opus 4.8', harness: 'claude-code' },
|
|
24
|
+
{ id: 'claude-sonnet', label: 'Claude Sonnet 4.6', harness: 'claude-code' },
|
|
25
|
+
{ id: 'gpt-5.5', label: 'GPT-5.5', harness: 'codex' },
|
|
26
|
+
{ id: 'gpt-5.4', label: 'GPT-5.4', harness: 'codex' },
|
|
27
|
+
];
|
|
28
|
+
/** The models that run natively for the given set of enabled native harnesses. */
|
|
29
|
+
export function nativeModelsFor(harnesses) {
|
|
30
|
+
const enabled = new Set(harnesses);
|
|
31
|
+
return NATIVE_MODELS.filter((m) => enabled.has(m.harness));
|
|
32
|
+
}
|
|
33
|
+
/** A one-line `Label (id)` summary of the applicable native models, for `.env` comments. */
|
|
34
|
+
export function nativeModelSummary(harnesses) {
|
|
35
|
+
const models = nativeModelsFor(harnesses);
|
|
36
|
+
if (models.length === 0)
|
|
37
|
+
return 'none';
|
|
38
|
+
return models.map((m) => `${m.label} (${m.id})`).join(', ');
|
|
39
|
+
}
|
|
40
|
+
/** The tradeoff blurb shown before the execution-mode prompt, keyed by mode. */
|
|
41
|
+
export const EXECUTION_MODE_TRADEOFFS = {
|
|
42
|
+
pool: [
|
|
43
|
+
'Prewarmed Docker pool (recommended default)',
|
|
44
|
+
` + Isolated & sandboxed — the agent runs in a container (${CONTAINER_RUNTIMES.join('/')}).`,
|
|
45
|
+
' + Works with EVERY model (Cloudflare, direct keys, all subscriptions).',
|
|
46
|
+
' + A warm pool keeps containers ready so runs start fast (configured in the UI).',
|
|
47
|
+
' - Needs a container runtime up + the executor image pulled (~GBs).',
|
|
48
|
+
],
|
|
49
|
+
native: [
|
|
50
|
+
'Native host agents',
|
|
51
|
+
' + No container — runs as a host process driving your OWN installed claude/codex CLI.',
|
|
52
|
+
' + Uses your existing subscription login (no leased credential, no API key).',
|
|
53
|
+
' + Fast start, no image to pull for the native steps.',
|
|
54
|
+
' - NO sandbox: the agent runs with your full host access.',
|
|
55
|
+
' - Only Claude (claude-code) and ChatGPT (codex) models go native; every other',
|
|
56
|
+
' model still runs in a container, so the executor image is still needed for those.',
|
|
57
|
+
' - The chosen CLI must already be installed and logged in on this machine.',
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
/** All native harnesses (both), for the "enable both" default. */
|
|
61
|
+
export const ALL_NATIVE_HARNESSES = [...NATIVE_HARNESSES];
|
|
62
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAElB,gBAAgB,GAEjB,MAAM,gBAAgB,CAAA;AAgBvB,MAAM,CAAC,MAAM,mBAAmB,GAA6C;IAC3E,aAAa,EAAE;QACb,OAAO,EAAE,aAAa;QACtB,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,2DAA2D;KACnE;IACD,KAAK,EAAE;QACL,OAAO,EAAE,OAAO;QAChB,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,kDAAkD;KAC1D;CACF,CAAA;AAWD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE;IACvE,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,aAAa,EAAE;IAC3E,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;IACrD,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;CACtD,CAAA;AAED,kFAAkF;AAClF,MAAM,UAAU,eAAe,CAAC,SAAmC;IACjE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;IAClC,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,kBAAkB,CAAC,SAAmC;IACpE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IACtC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC7D,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,wBAAwB,GAAoC;IACvE,IAAI,EAAE;QACJ,6CAA6C;QAC7C,6DAA6D,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAC7F,0EAA0E;QAC1E,mFAAmF;QACnF,sEAAsE;KACvE;IACD,MAAM,EAAE;QACN,oBAAoB;QACpB,wFAAwF;QACxF,+EAA+E;QAC/E,wDAAwD;QACxD,4DAA4D;QAC5D,iFAAiF;QACjF,uFAAuF;QACvF,6EAA6E;KAC9E;CACF,CAAA;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAoB,CAAC,GAAG,gBAAgB,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { type Io, createConsoleIo } from './io.js';
|
|
|
10
10
|
export { type BootstrapInput, buildPlan, type PlannedFile } from './plan.js';
|
|
11
11
|
export { generateSecrets, type GeneratedSecrets, type RandomBytes } from './secrets.js';
|
|
12
12
|
export { slugifyProjectName } from './slug.js';
|
|
13
|
-
export { CONTAINER_RUNTIMES, type ContainerRuntime, DEFAULT_HARNESS_IMAGE } from './templates.js';
|
|
13
|
+
export { CONTAINER_RUNTIMES, type ContainerRuntime, DEFAULT_HARNESS_IMAGE, EXECUTION_MODES, type ExecutionMode, NATIVE_HARNESSES, type NativeHarness, } from './templates.js';
|
|
14
|
+
export { EXECUTION_MODE_TRADEOFFS, NATIVE_HARNESS_INFO, type NativeHarnessInfo, type NativeModel, NATIVE_MODELS, nativeModelsFor, nativeModelSummary, } from './execution.js';
|
|
14
15
|
export { githubPatCreationUrl, gitlabPatCreationUrl, patCreationUrl, patEnvVar, providerLabel, VCS_PROVIDERS, type VcsProvider, } from './vcs.js';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EACf,SAAS,EACT,YAAY,EACZ,KAAK,UAAU,EACf,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EACZ,KAAK,eAAe,EACpB,+BAA+B,GAChC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EACf,SAAS,EACT,YAAY,EACZ,KAAK,UAAU,EACf,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,EAC1B,KAAK,SAAS,EACd,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EACZ,KAAK,eAAe,EACpB,+BAA+B,GAChC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,KAAK,cAAc,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EACL,kBAAkB,EAClB,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,eAAe,EACf,KAAK,aAAa,EAClB,gBAAgB,EAChB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export { createConsoleIo } from './io.js';
|
|
|
12
12
|
export { buildPlan } from './plan.js';
|
|
13
13
|
export { generateSecrets } from './secrets.js';
|
|
14
14
|
export { slugifyProjectName } from './slug.js';
|
|
15
|
-
export { CONTAINER_RUNTIMES, DEFAULT_HARNESS_IMAGE } from './templates.js';
|
|
15
|
+
export { CONTAINER_RUNTIMES, DEFAULT_HARNESS_IMAGE, EXECUTION_MODES, NATIVE_HARNESSES, } from './templates.js';
|
|
16
|
+
export { EXECUTION_MODE_TRADEOFFS, NATIVE_HARNESS_INFO, NATIVE_MODELS, nativeModelsFor, nativeModelSummary, } from './execution.js';
|
|
16
17
|
export { githubPatCreationUrl, gitlabPatCreationUrl, patCreationUrl, patEnvVar, providerLabel, VCS_PROVIDERS, } from './vcs.js';
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,OAAO,EAEL,SAAS,EACT,YAAY,EAEZ,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAuC,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,GAG3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAgC,QAAQ,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EAEZ,+BAA+B,GAChC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAKhB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,GAEV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,aAAa,EAIb,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAW,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAuB,SAAS,EAAoB,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAE,eAAe,EAA2C,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,OAAO,EAEL,SAAS,EACT,YAAY,EAEZ,eAAe,EACf,SAAS,EACT,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAuC,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,0BAA0B,GAG3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,mBAAmB,EAAgC,QAAQ,EAAE,MAAM,UAAU,CAAA;AACtF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,0BAA0B,EAC1B,YAAY,EAEZ,+BAA+B,GAChC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAKhB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,GAEV,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,gBAAgB,EAChB,aAAa,EAIb,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAA;AACzF,OAAO,EAAW,eAAe,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAuB,SAAS,EAAoB,MAAM,WAAW,CAAA;AAC5E,OAAO,EAAE,eAAe,EAA2C,MAAM,cAAc,CAAA;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,eAAe,EAEf,gBAAgB,GAEjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EAGnB,aAAa,EACb,eAAe,EACf,kBAAkB,GACnB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,GAEd,MAAM,UAAU,CAAA"}
|
package/dist/k3s-provision.d.ts
CHANGED
|
@@ -89,7 +89,16 @@ export interface ProvisionDeps {
|
|
|
89
89
|
io: Io;
|
|
90
90
|
/** Delay between token-Secret read attempts (real setTimeout; a no-op in tests). */
|
|
91
91
|
sleep?: (ms: number) => Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* How many times to poll the freshly-applied token Secret for a populated `.data.token` before
|
|
94
|
+
* giving up (500ms between attempts). Absent ⇒ {@link DEFAULT_TOKEN_READ_ATTEMPTS} (a snappy
|
|
95
|
+
* fail-fast for an interactive user). The integration suite raises it, since a busy CI cluster's
|
|
96
|
+
* token controller can take longer than the interactive budget to populate the Secret.
|
|
97
|
+
*/
|
|
98
|
+
tokenReadAttempts?: number;
|
|
92
99
|
}
|
|
100
|
+
/** Default poll budget for {@link readSaToken}: 20 attempts × 500ms = 10s. */
|
|
101
|
+
export declare const DEFAULT_TOKEN_READ_ATTEMPTS = 20;
|
|
93
102
|
/**
|
|
94
103
|
* Provision (or reuse) a local cluster for the chosen offer, create the least-privilege
|
|
95
104
|
* ServiceAccount + RBAC, mint a long-lived token, and read the apiserver URL — returning the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"k3s-provision.d.ts","sourceRoot":"","sources":["../src/k3s-provision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAE7D,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,gBAAgB,CAAA;AAClD,eAAO,MAAM,oBAAoB,gBAAgB,CAAA;AACjD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,OAAO,CAAA;AAEpC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,SAAU,CAAA;AAEhD,4FAA4F;AAC5F,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,CAAA;IACnB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,IAAI,CAAA;CAC5B;AAED,iGAAiG;AACjG,qBAAa,cAAe,SAAQ,KAAK;CAAG;AAE5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,o1DA8DzB,CAAA;AAMD,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAyB,GAAG,OAAO,CAM1F;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMvD;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzE;AAYD,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAgB1D;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAED,iGAAiG;AACjG,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAeD,oGAAoG;AACpG,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAY5F;AAMD,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,CAAA;IAChB,EAAE,EAAE,EAAE,CAAA;IACN,oFAAoF;IACpF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"k3s-provision.d.ts","sourceRoot":"","sources":["../src/k3s-provision.ts"],"names":[],"mappings":"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"}
|
package/dist/k3s-provision.js
CHANGED
|
@@ -201,6 +201,8 @@ export function looksLocalCluster(context, apiServerUrl) {
|
|
|
201
201
|
return true;
|
|
202
202
|
return host.endsWith('.local') || host.endsWith('.localhost') || host.endsWith('.nip.io');
|
|
203
203
|
}
|
|
204
|
+
/** Default poll budget for {@link readSaToken}: 20 attempts × 500ms = 10s. */
|
|
205
|
+
export const DEFAULT_TOKEN_READ_ATTEMPTS = 20;
|
|
204
206
|
const realSleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
205
207
|
/** Run a command, throwing a {@link ProvisionError} with the captured stderr on a non-zero exit. */
|
|
206
208
|
async function runOrThrow(shell, command, what, hint) {
|
|
@@ -236,7 +238,7 @@ async function confirmStep(io, options, prompt) {
|
|
|
236
238
|
*/
|
|
237
239
|
async function readSaToken(deps, context) {
|
|
238
240
|
const sleep = deps.sleep ?? realSleep;
|
|
239
|
-
const attempts =
|
|
241
|
+
const attempts = deps.tokenReadAttempts ?? DEFAULT_TOKEN_READ_ATTEMPTS;
|
|
240
242
|
for (let i = 0; i < attempts; i++) {
|
|
241
243
|
const result = await runOrThrow(deps.shell, readTokenCommand(context), 'Reading the ServiceAccount token');
|
|
242
244
|
const token = decodeToken(result.stdout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"k3s-provision.js","sourceRoot":"","sources":["../src/k3s-provision.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"k3s-provision.js","sourceRoot":"","sources":["../src/k3s-provision.ts"],"names":[],"mappings":"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"}
|
package/dist/plan.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ContainerRuntime } from './templates.js';
|
|
1
|
+
import type { ContainerRuntime, ExecutionMode, NativeHarness } from './templates.js';
|
|
2
2
|
import { type VcsProvider } from './vcs.js';
|
|
3
3
|
/** A single file the CLI will write, as a path relative to the project root + its content. */
|
|
4
4
|
export interface PlannedFile {
|
|
@@ -19,6 +19,12 @@ export interface BootstrapInput {
|
|
|
19
19
|
corsAllowedOrigins: string;
|
|
20
20
|
harnessImage: string;
|
|
21
21
|
containerRuntime: ContainerRuntime;
|
|
22
|
+
/** How agent jobs execute: a Docker container pool (default) or native host agents. */
|
|
23
|
+
executionMode?: ExecutionMode;
|
|
24
|
+
/** Native mode only: the subscription harnesses to run natively (`LOCAL_NATIVE_AGENTS`). */
|
|
25
|
+
nativeHarnesses?: NativeHarness[];
|
|
26
|
+
/** Native mode only: the executor-harness server entry path (`LOCAL_HARNESS_ENTRY`). */
|
|
27
|
+
harnessEntry?: string;
|
|
22
28
|
authSessionSecret: string;
|
|
23
29
|
encryptionKey: string;
|
|
24
30
|
/** Existing root `.gitignore` content, if the target dir already has one (rules are merged in). */
|
package/dist/plan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACpF,OAAO,EAA4C,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAErF,8FAA8F;AAC9F,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,kGAAkG;IAClG,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,WAAW,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,uFAAuF;IACvF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,4FAA4F;IAC5F,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;IACjC,wFAAwF;IACxF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,EAAE,CAmD9D"}
|
package/dist/plan.js
CHANGED
|
@@ -13,6 +13,9 @@ export function buildPlan(input) {
|
|
|
13
13
|
corsAllowedOrigins: input.corsAllowedOrigins,
|
|
14
14
|
provider: input.provider,
|
|
15
15
|
containerRuntime: input.containerRuntime,
|
|
16
|
+
executionMode: input.executionMode,
|
|
17
|
+
nativeHarnesses: input.nativeHarnesses,
|
|
18
|
+
harnessEntry: input.harnessEntry,
|
|
16
19
|
token: input.token,
|
|
17
20
|
});
|
|
18
21
|
const frontendEnv = buildFrontendEnv({ apiBase: input.apiBase });
|
|
@@ -35,6 +38,8 @@ export function buildPlan(input) {
|
|
|
35
38
|
databaseUrl: input.databaseUrl,
|
|
36
39
|
port: input.port,
|
|
37
40
|
harnessImage: input.harnessImage,
|
|
41
|
+
executionMode: input.executionMode,
|
|
42
|
+
nativeHarnesses: input.nativeHarnesses,
|
|
38
43
|
}),
|
|
39
44
|
},
|
|
40
45
|
{ path: 'local/.env', content: localEnv, secret: true },
|
package/dist/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -9,6 +9,18 @@ export declare const DEFAULT_HARNESS_IMAGE = "ghcr.io/kibertoad/cat-factory-exec
|
|
|
9
9
|
/** The container runtimes the local facade understands (`LOCAL_CONTAINER_RUNTIME`). */
|
|
10
10
|
export declare const CONTAINER_RUNTIMES: readonly ['docker', 'podman', 'orbstack', 'colima', 'apple'];
|
|
11
11
|
export type ContainerRuntime = (typeof CONTAINER_RUNTIMES)[number];
|
|
12
|
+
/**
|
|
13
|
+
* How agent jobs execute in local mode:
|
|
14
|
+
* - `pool` — per-run Docker-family containers from the executor image, optionally kept
|
|
15
|
+
* warm in a pool (the default, isolated, works with every model).
|
|
16
|
+
* - `native` — a host process driving the developer's OWN installed `claude` / `codex` CLI
|
|
17
|
+
* (`LOCAL_NATIVE_AGENTS`): ambient login, no container, no leased credential.
|
|
18
|
+
*/
|
|
19
|
+
export declare const EXECUTION_MODES: readonly ['pool', 'native'];
|
|
20
|
+
export type ExecutionMode = (typeof EXECUTION_MODES)[number];
|
|
21
|
+
/** The subscription harnesses local mode can drive as a NATIVE host process (`LOCAL_NATIVE_AGENTS`). */
|
|
22
|
+
export declare const NATIVE_HARNESSES: readonly ['claude-code', 'codex'];
|
|
23
|
+
export type NativeHarness = (typeof NATIVE_HARNESSES)[number];
|
|
12
24
|
export declare const localPackageJson: (projectName: string) => string;
|
|
13
25
|
export declare const localMainTs = "// Local-mode backend entry point.\n//\n// Calls the reusable @cat-factory/local-server library's startLocal(): connect to the local\n// Postgres (DATABASE_URL), run the schema migration, boot pg-boss + the durable execution\n// worker, and serve the shared Hono app. Agent jobs run as per-run local containers and GitHub\n// is reached via the PAT in .env. Node 24+ runs this TypeScript directly via type stripping\n// (npm start = `node --env-file-if-exists=.env src/main.ts`), so edits here take effect with no\n// build step.\nimport { startLocal } from '@cat-factory/local-server'\n\nstartLocal().catch((err: unknown) => {\n console.error('failed to start cat-factory local server:', err)\n process.exit(1)\n})\n";
|
|
14
26
|
export declare const dockerCompose: (dbUrl: string) => string;
|
|
@@ -19,6 +31,8 @@ export interface LocalEnvExampleInput {
|
|
|
19
31
|
databaseUrl?: string;
|
|
20
32
|
port?: number;
|
|
21
33
|
harnessImage?: string;
|
|
34
|
+
executionMode?: ExecutionMode;
|
|
35
|
+
nativeHarnesses?: NativeHarness[];
|
|
22
36
|
}
|
|
23
37
|
export declare const localEnvExample: (input?: LocalEnvExampleInput) => string;
|
|
24
38
|
export declare const frontendPackageJson: (projectName: string) => string;
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAC7C,eAAO,MAAM,WAAW,YAAY,CAAA;AACpC,eAAO,MAAM,YAAY,WAAW,CAAA;AACpC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAC5C,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,kDAAkD,CAAA;AAEpF,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,YAAI,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAC9F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAElE,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,KAAG,MA6BhD,CAAA;AAEP,eAAO,MAAM,WAAW,otBAcvB,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAuC7C,CAAA;AAED,+FAA+F;AAC/F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,oBAAoB,YAAY,CAAA;AAC7C,eAAO,MAAM,WAAW,YAAY,CAAA;AACpC,eAAO,MAAM,YAAY,WAAW,CAAA;AACpC,eAAO,MAAM,kBAAkB,YAAY,CAAA;AAC3C,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAC5C,eAAO,MAAM,gBAAgB,aAAa,CAAA;AAE1C,2EAA2E;AAC3E,eAAO,MAAM,qBAAqB,kDAAkD,CAAA;AAEpF,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,YAAI,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAC9F,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,YAAI,MAAM,EAAE,QAAQ,CAAU,CAAA;AAC1D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D,wGAAwG;AACxG,eAAO,MAAM,gBAAgB,YAAI,aAAa,EAAE,OAAO,CAAU,CAAA;AACjE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,eAAO,MAAM,gBAAgB,gBAAiB,MAAM,KAAG,MA6BhD,CAAA;AAEP,eAAO,MAAM,WAAW,otBAcvB,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,MAAM,KAAG,MAuC7C,CAAA;AAED,+FAA+F;AAC/F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,eAAe,CAAC,EAAE,aAAa,EAAE,CAAA;CAClC;AAED,eAAO,MAAM,eAAe,WAAW,oBAAoB,KAAQ,MA0DlE,CAAA;AAED,eAAO,MAAM,mBAAmB,gBAAiB,MAAM,KAAG,MA4BnD,CAAA;AAEP,eAAO,MAAM,kBAAkB,UAAW,MAAM,KAAG,MAalD,CAAA;AAED,eAAO,MAAM,oBAAoB,gBAAiB,MAAM,KAAG,MAS1D,CAAA;AAED,eAAO,MAAM,kBAAkB,wBAAwC,MAItE,CAAA;AAED,eAAO,MAAM,YAAY,sNAUxB,CAAA"}
|
package/dist/templates.js
CHANGED
|
@@ -20,6 +20,16 @@ export const WRANGLER_VERSION = '^4.105.0';
|
|
|
20
20
|
export const DEFAULT_HARNESS_IMAGE = 'ghcr.io/kibertoad/cat-factory-executor:latest';
|
|
21
21
|
/** The container runtimes the local facade understands (`LOCAL_CONTAINER_RUNTIME`). */
|
|
22
22
|
export const CONTAINER_RUNTIMES = ['docker', 'podman', 'orbstack', 'colima', 'apple'];
|
|
23
|
+
/**
|
|
24
|
+
* How agent jobs execute in local mode:
|
|
25
|
+
* - `pool` — per-run Docker-family containers from the executor image, optionally kept
|
|
26
|
+
* warm in a pool (the default, isolated, works with every model).
|
|
27
|
+
* - `native` — a host process driving the developer's OWN installed `claude` / `codex` CLI
|
|
28
|
+
* (`LOCAL_NATIVE_AGENTS`): ambient login, no container, no leased credential.
|
|
29
|
+
*/
|
|
30
|
+
export const EXECUTION_MODES = ['pool', 'native'];
|
|
31
|
+
/** The subscription harnesses local mode can drive as a NATIVE host process (`LOCAL_NATIVE_AGENTS`). */
|
|
32
|
+
export const NATIVE_HARNESSES = ['claude-code', 'codex'];
|
|
23
33
|
export const localPackageJson = (projectName) => `${JSON.stringify({
|
|
24
34
|
name: `${projectName}-local`,
|
|
25
35
|
version: '0.1.0',
|
|
@@ -102,10 +112,29 @@ volumes:
|
|
|
102
112
|
`;
|
|
103
113
|
};
|
|
104
114
|
export const localEnvExample = (input = {}) => {
|
|
105
|
-
const { provider = 'github', containerRuntime = 'docker', databaseUrl = 'postgres://cat:cat@localhost:5432/catfactory', port = 8787, harnessImage = DEFAULT_HARNESS_IMAGE, } = input;
|
|
115
|
+
const { provider = 'github', containerRuntime = 'docker', databaseUrl = 'postgres://cat:cat@localhost:5432/catfactory', port = 8787, harnessImage = DEFAULT_HARNESS_IMAGE, executionMode = 'pool', nativeHarnesses, } = input;
|
|
106
116
|
// Show the chosen provider's PAT var active and the other commented, so the example matches
|
|
107
117
|
// the populated `.env` the CLI writes for that provider.
|
|
108
118
|
const tokenLines = provider === 'gitlab' ? ['# GITHUB_PAT=', 'GITLAB_PAT='] : ['GITHUB_PAT=', '# GITLAB_PAT='];
|
|
119
|
+
// Mirror the execution mode: native shows LOCAL_NATIVE_AGENTS + LOCAL_HARNESS_ENTRY active;
|
|
120
|
+
// pool shows them commented (with the warm-pool pointer to the UI).
|
|
121
|
+
const nativeList = nativeHarnesses?.length ? nativeHarnesses.join(',') : 'claude-code,codex';
|
|
122
|
+
const executionLines = executionMode === 'native'
|
|
123
|
+
? [
|
|
124
|
+
'# Execution mode: NATIVE host agents — steps whose model maps to a native vendor',
|
|
125
|
+
'# (Claude via claude-code, ChatGPT via codex) run as a host process driving your own',
|
|
126
|
+
'# installed CLI. Every other model still runs in a container (LOCAL_HARNESS_IMAGE).',
|
|
127
|
+
`LOCAL_NATIVE_AGENTS=${nativeList}`,
|
|
128
|
+
'# REQUIRED for native mode: the executor-harness server entry path.',
|
|
129
|
+
'LOCAL_HARNESS_ENTRY=',
|
|
130
|
+
]
|
|
131
|
+
: [
|
|
132
|
+
'# Execution mode: PREWARMED DOCKER POOL — per-run containers from LOCAL_HARNESS_IMAGE.',
|
|
133
|
+
'# Warm-pool sizing lives in the UI (Integrations > "Local mode"); recommended: size 3,',
|
|
134
|
+
'# pre-warm 1, idle 10m. To switch to native host agents instead, set these two:',
|
|
135
|
+
'# LOCAL_NATIVE_AGENTS=claude-code,codex',
|
|
136
|
+
'# LOCAL_HARNESS_ENTRY=',
|
|
137
|
+
];
|
|
109
138
|
return `# Example env for the local-mode backend. Copy to \`.env\` (gitignored) and fill in.
|
|
110
139
|
# \`cat-factory init\` generates a populated \`.env\` for you; this is the documented template
|
|
111
140
|
# (the non-secret values below mirror the ones you chose at scaffold time).
|
|
@@ -123,6 +152,7 @@ ${tokenLines.join('\n')}
|
|
|
123
152
|
LOCAL_HARNESS_IMAGE=${harnessImage}
|
|
124
153
|
# Container runtime that spawns agent jobs: ${CONTAINER_RUNTIMES.join(' | ')}.
|
|
125
154
|
LOCAL_CONTAINER_RUNTIME=${containerRuntime}
|
|
155
|
+
${executionLines.join('\n')}
|
|
126
156
|
# At least one model provider (Cloudflare Workers AI over REST shown; or a direct vendor key):
|
|
127
157
|
# CLOUDFLARE_ACCOUNT_ID=
|
|
128
158
|
# CLOUDFLARE_API_TOKEN=
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,+FAA+F;AAC/F,+DAA+D;AAE/D,gGAAgG;AAChG,iGAAiG;AACjG,4FAA4F;AAC5F,gGAAgG;AAChG,iGAAiG;AACjG,8FAA8F;AAC9F,gGAAgG;AAChG,8FAA8F;AAC9F,qFAAqF;AACrF,MAAM,CAAC,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAA;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAA;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAA;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAA;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qBAAqB,GAAG,+CAA+C,CAAA;AAEpF,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAG9F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAU,EAAE,CAC9D,GAAG,IAAI,CAAC,SAAS,CACf;IACE,IAAI,EAAE,GAAG,WAAW,QAAQ;IAC5B,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,6DAA6D;IAC1E,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE;QACP,0FAA0F;QAC1F,6CAA6C;QAC7C,IAAI,EAAE,MAAM;KACb;IACD,OAAO,EAAE;QACP,KAAK,EAAE,4CAA4C;QACnD,GAAG,EAAE,oDAAoD;QACzD,OAAO,EAAE,+BAA+B;QACxC,SAAS,EAAE,qBAAqB;KACjC;IACD,YAAY,EAAE;QACZ,2BAA2B,EAAE,oBAAoB;KAClD;IACD,eAAe,EAAE;QACf,aAAa,EAAE,kBAAkB;QACjC,UAAU,EAAE,kBAAkB;KAC/B;CACF,EACD,IAAI,EACJ,CAAC,CACF,IAAI,CAAA;AAEP,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;CAc1B,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE;IACrD,mFAAmF;IACnF,IAAI,IAAI,GAAG,KAAK,CAAA;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,EAAE,GAAG,YAAY,CAAA;IACrB,IAAI,IAAI,GAAG,MAAM,CAAA;IACjB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAA;QAC7C,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAA;QACrD,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;QACxC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;IAChD,CAAC;IACD,OAAO;;;;;;;;uBAQc,IAAI;2BACA,QAAQ;qBACd,EAAE;;WAEZ,IAAI;;;;2CAI4B,IAAI,OAAO,EAAE;;;;;;;CAOvD,CAAA;AACD,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cat-factory/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Bootstrap CLI for the Agent Architecture Board: scaffold a local-mode deployment (Node/local backend + frontend SPA) on your own machine — generates the crypto secrets, populates and gitignores the .env files, and mints a GitHub/GitLab personal access token by opening the browser at the right pre-scoped URL.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bootstrap",
|
|
@@ -41,13 +41,15 @@
|
|
|
41
41
|
"typescript": "7.0.1-rc",
|
|
42
42
|
"valibot": "^1.4.2",
|
|
43
43
|
"vitest": "^4.1.9",
|
|
44
|
-
"@cat-factory/contracts": "0.
|
|
44
|
+
"@cat-factory/contracts": "0.78.0",
|
|
45
|
+
"@cat-factory/kernel": "0.68.0"
|
|
45
46
|
},
|
|
46
47
|
"scripts": {
|
|
47
48
|
"build": "tsc -b tsconfig.build.json",
|
|
48
49
|
"start": "node dist/bin.js",
|
|
49
50
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
50
51
|
"test": "vitest",
|
|
51
|
-
"test:run": "vitest run"
|
|
52
|
+
"test:run": "vitest run",
|
|
53
|
+
"test:integration": "vitest run --config vitest.integration.config.ts"
|
|
52
54
|
}
|
|
53
55
|
}
|