@m8t-stack/cli 0.2.13 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +278 -146
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -781,7 +781,10 @@ var init_brain_yaml_mirror = __esm({
|
|
|
781
781
|
` enabled: true`,
|
|
782
782
|
` lifecycle: { inbox: 14d, stale: 30d, archive: 90d }`,
|
|
783
783
|
` artifactRetention: 30d`,
|
|
784
|
-
` digestRetention: 90d
|
|
784
|
+
` digestRetention: 90d`,
|
|
785
|
+
` costReport:`,
|
|
786
|
+
` enabled: true`,
|
|
787
|
+
` cadenceDays: 14`
|
|
785
788
|
].join("\n");
|
|
786
789
|
MIRROR_BANNER = [
|
|
787
790
|
`# \u2500\u2500 MIRROR \u2014 link record convenience copy. NOT the source of truth \u2014`,
|
|
@@ -1195,7 +1198,7 @@ var init_enable_hosted_brain = __esm({
|
|
|
1195
1198
|
import { Builtins, Cli } from "clipanion";
|
|
1196
1199
|
|
|
1197
1200
|
// src/lib/package-version.ts
|
|
1198
|
-
var CLI_VERSION = "0.2.
|
|
1201
|
+
var CLI_VERSION = "0.2.14";
|
|
1199
1202
|
|
|
1200
1203
|
// src/lib/render-error.ts
|
|
1201
1204
|
init_errors();
|
|
@@ -17425,9 +17428,134 @@ var PlatformUpdateCommand = class extends M8tCommand {
|
|
|
17425
17428
|
}
|
|
17426
17429
|
};
|
|
17427
17430
|
|
|
17428
|
-
// src/commands/
|
|
17431
|
+
// src/commands/platform/enable-cost-report.ts
|
|
17429
17432
|
import { Command as Command33, Option as Option31 } from "clipanion";
|
|
17430
17433
|
|
|
17434
|
+
// src/lib/wire-gateway-acs.ts
|
|
17435
|
+
init_rbac();
|
|
17436
|
+
async function wireGatewayForAcs(args) {
|
|
17437
|
+
try {
|
|
17438
|
+
await args.az([
|
|
17439
|
+
"role",
|
|
17440
|
+
"assignment",
|
|
17441
|
+
"create",
|
|
17442
|
+
"--assignee-object-id",
|
|
17443
|
+
args.gatewayPrincipalId,
|
|
17444
|
+
"--assignee-principal-type",
|
|
17445
|
+
"ServicePrincipal",
|
|
17446
|
+
"--role",
|
|
17447
|
+
CONTRIBUTOR_ROLE_ID,
|
|
17448
|
+
"--scope",
|
|
17449
|
+
args.acsResourceId
|
|
17450
|
+
]);
|
|
17451
|
+
} catch (e) {
|
|
17452
|
+
if (!(e instanceof Error && /RoleAssignmentExists/i.test(e.message))) throw e;
|
|
17453
|
+
}
|
|
17454
|
+
await args.az([
|
|
17455
|
+
"containerapp",
|
|
17456
|
+
"update",
|
|
17457
|
+
"-n",
|
|
17458
|
+
args.gatewayApp,
|
|
17459
|
+
"-g",
|
|
17460
|
+
args.resourceGroup,
|
|
17461
|
+
"--set-env-vars",
|
|
17462
|
+
`M8T_ACS_ENDPOINT=${args.endpoint}`,
|
|
17463
|
+
`M8T_ACS_SENDER=${args.sender}`,
|
|
17464
|
+
"M8T_ENABLE_COST_REPORTER=1"
|
|
17465
|
+
]);
|
|
17466
|
+
}
|
|
17467
|
+
|
|
17468
|
+
// src/commands/platform/enable-cost-report.ts
|
|
17469
|
+
init_errors();
|
|
17470
|
+
var PlatformEnableCostReportCommand = class extends M8tCommand {
|
|
17471
|
+
static paths = [["platform", "enable-cost-report"]];
|
|
17472
|
+
static usage = Command33.Usage({
|
|
17473
|
+
description: "Wire the deployed gateway to send the bi-weekly cost report via ACS Email.",
|
|
17474
|
+
details: "Discovers the live gateway Container App, grants its managed identity Contributor at the ACS resource scope (authorising the ACS Email send), and sets M8T_ACS_ENDPOINT / M8T_ACS_SENDER / M8T_ENABLE_COST_REPORTER=1 on the gateway. Idempotent \u2014 safely re-runnable. ACS is created during the executor deploy; pass its endpoint, sender, and resource id (from that deploy or 'az communication list')."
|
|
17475
|
+
});
|
|
17476
|
+
subscription = Option31.String("--subscription");
|
|
17477
|
+
resourceGroup = Option31.String("--resource-group", {
|
|
17478
|
+
description: "m8t-stack resource group to disambiguate the gateway (multi-deployment subscriptions)."
|
|
17479
|
+
});
|
|
17480
|
+
acsEndpoint = Option31.String("--acs-endpoint", { required: true, description: "ACS data-plane endpoint, e.g. https://acs-<name>.communication.azure.com/" });
|
|
17481
|
+
acsSender = Option31.String("--acs-sender", { required: true, description: "Managed-domain sender address, e.g. DoNotReply@<guid>.azurecomm.net" });
|
|
17482
|
+
acsResourceId = Option31.String("--acs-resource-id", { required: true, description: "ARM resource id of the acs-<name> Communication Service \u2014 the role-grant scope." });
|
|
17483
|
+
output = Option31.String("--output");
|
|
17484
|
+
async executeCommand() {
|
|
17485
|
+
const mode = resolveOutputMode(
|
|
17486
|
+
this.output,
|
|
17487
|
+
this.context.stdout
|
|
17488
|
+
);
|
|
17489
|
+
const log = (msg) => {
|
|
17490
|
+
if (mode !== "json") this.context.stdout.write(msg + "\n");
|
|
17491
|
+
};
|
|
17492
|
+
const ctx = await resolveGatewayContext({
|
|
17493
|
+
interactive: mode !== "json",
|
|
17494
|
+
subscriptionId: this.subscription,
|
|
17495
|
+
resourceGroup: this.resourceGroup
|
|
17496
|
+
});
|
|
17497
|
+
const { resourceGroup, name } = parseContainerAppResourceId(ctx.containerAppResourceId);
|
|
17498
|
+
const gatewayPrincipalId = (await runAz([
|
|
17499
|
+
"containerapp",
|
|
17500
|
+
"show",
|
|
17501
|
+
"-n",
|
|
17502
|
+
name,
|
|
17503
|
+
"-g",
|
|
17504
|
+
resourceGroup,
|
|
17505
|
+
"--query",
|
|
17506
|
+
"identity.principalId",
|
|
17507
|
+
"-o",
|
|
17508
|
+
"tsv"
|
|
17509
|
+
])).trim();
|
|
17510
|
+
if (gatewayPrincipalId === "") {
|
|
17511
|
+
throw new LocalCliError({
|
|
17512
|
+
code: "GATEWAY_NO_MANAGED_IDENTITY",
|
|
17513
|
+
message: `Gateway '${name}' has no managed identity principalId to grant.`,
|
|
17514
|
+
hint: "Assign a system-assigned identity to the gateway Container App, then re-run."
|
|
17515
|
+
});
|
|
17516
|
+
}
|
|
17517
|
+
await wireGatewayForAcs({
|
|
17518
|
+
az: runAz,
|
|
17519
|
+
resourceGroup,
|
|
17520
|
+
acsResourceId: this.acsResourceId,
|
|
17521
|
+
gatewayApp: name,
|
|
17522
|
+
endpoint: this.acsEndpoint,
|
|
17523
|
+
sender: this.acsSender,
|
|
17524
|
+
gatewayPrincipalId
|
|
17525
|
+
});
|
|
17526
|
+
if (mode === "json") {
|
|
17527
|
+
this.context.stdout.write(
|
|
17528
|
+
renderJson({
|
|
17529
|
+
gateway: name,
|
|
17530
|
+
resourceGroup,
|
|
17531
|
+
roleGranted: "Contributor",
|
|
17532
|
+
scope: this.acsResourceId,
|
|
17533
|
+
envSet: {
|
|
17534
|
+
M8T_ACS_ENDPOINT: this.acsEndpoint,
|
|
17535
|
+
M8T_ACS_SENDER: this.acsSender,
|
|
17536
|
+
M8T_ENABLE_COST_REPORTER: "1"
|
|
17537
|
+
}
|
|
17538
|
+
}) + "\n"
|
|
17539
|
+
);
|
|
17540
|
+
return 0;
|
|
17541
|
+
}
|
|
17542
|
+
this.context.stdout.write(
|
|
17543
|
+
renderKeyValueBlock([
|
|
17544
|
+
{ key: "gateway", value: name },
|
|
17545
|
+
{ key: "role granted", value: `Contributor @ ${this.acsResourceId}` },
|
|
17546
|
+
{ key: "M8T_ACS_ENDPOINT", value: this.acsEndpoint },
|
|
17547
|
+
{ key: "M8T_ACS_SENDER", value: this.acsSender },
|
|
17548
|
+
{ key: "M8T_ENABLE_COST_REPORTER", value: "1" }
|
|
17549
|
+
]) + "\n"
|
|
17550
|
+
);
|
|
17551
|
+
log(colors.success("cost report enabled \u2014 the gateway will send it via ACS \u2713"));
|
|
17552
|
+
return 0;
|
|
17553
|
+
}
|
|
17554
|
+
};
|
|
17555
|
+
|
|
17556
|
+
// src/commands/deploy.ts
|
|
17557
|
+
import { Command as Command34, Option as Option32 } from "clipanion";
|
|
17558
|
+
|
|
17431
17559
|
// src/lib/app-reg.ts
|
|
17432
17560
|
init_errors();
|
|
17433
17561
|
var APP_NAME = "m8t-stack-webapp";
|
|
@@ -17960,24 +18088,24 @@ function classifyWhatIf(changes) {
|
|
|
17960
18088
|
var DEFAULT_IMAGE_REF = "ghcr.io/m8t-run/m8t:latest";
|
|
17961
18089
|
var DeployCommand = class extends M8tCommand {
|
|
17962
18090
|
static paths = [["deploy"]];
|
|
17963
|
-
static usage =
|
|
18091
|
+
static usage = Command34.Usage({
|
|
17964
18092
|
description: "Deploy (or update) the m8t gateway/webapp stack via Bicep.",
|
|
17965
18093
|
details: "Ensures the Entra app reg (or pass --client-id to reuse an existing one \u2014 required if you can't create app regs), writes ~/.m8t-stack/config.yaml, ensures the resource group, and runs deploy/main.bicep. The repo is located via ~/.m8t-stack/repo-root."
|
|
17966
18094
|
});
|
|
17967
|
-
subscription =
|
|
17968
|
-
resourceGroup =
|
|
17969
|
-
location =
|
|
17970
|
-
suffix =
|
|
17971
|
-
imageRef =
|
|
17972
|
-
acrPullIdentity =
|
|
17973
|
-
acrResourceId =
|
|
17974
|
-
foundryEndpoint =
|
|
17975
|
-
foundryResourceId =
|
|
17976
|
-
foundryTracing =
|
|
18095
|
+
subscription = Option32.String("--subscription");
|
|
18096
|
+
resourceGroup = Option32.String("--resource-group", "rg-m8t-stack");
|
|
18097
|
+
location = Option32.String("--location", "eastus");
|
|
18098
|
+
suffix = Option32.String("--suffix", "");
|
|
18099
|
+
imageRef = Option32.String("--image-ref", DEFAULT_IMAGE_REF);
|
|
18100
|
+
acrPullIdentity = Option32.String("--acrpull-identity");
|
|
18101
|
+
acrResourceId = Option32.String("--acr-resource-id");
|
|
18102
|
+
foundryEndpoint = Option32.String("--foundry-endpoint");
|
|
18103
|
+
foundryResourceId = Option32.String("--foundry-resource-id");
|
|
18104
|
+
foundryTracing = Option32.String("--foundry-tracing");
|
|
17977
18105
|
// project | account | skip (bicep default: project)
|
|
17978
|
-
clientId =
|
|
17979
|
-
whatIf =
|
|
17980
|
-
output =
|
|
18106
|
+
clientId = Option32.String("--client-id");
|
|
18107
|
+
whatIf = Option32.Boolean("--what-if", false);
|
|
18108
|
+
output = Option32.String("--output");
|
|
17981
18109
|
async executeCommand() {
|
|
17982
18110
|
const mode = resolveOutputMode(
|
|
17983
18111
|
this.output,
|
|
@@ -18091,7 +18219,7 @@ var DeployCommand = class extends M8tCommand {
|
|
|
18091
18219
|
|
|
18092
18220
|
// src/commands/eval/skill.ts
|
|
18093
18221
|
import { spawnSync as spawnSync3 } from "child_process";
|
|
18094
|
-
import { Command as
|
|
18222
|
+
import { Command as Command35, Option as Option33 } from "clipanion";
|
|
18095
18223
|
init_errors();
|
|
18096
18224
|
var DECISIONS = /* @__PURE__ */ new Set(["promote", "reject", "needs_review"]);
|
|
18097
18225
|
var JUDGE_STATUSES = /* @__PURE__ */ new Set(["ok", "skipped", "unavailable"]);
|
|
@@ -18116,14 +18244,14 @@ function parseVerdict(stdout) {
|
|
|
18116
18244
|
}
|
|
18117
18245
|
var EvalSkillCommand = class extends M8tCommand {
|
|
18118
18246
|
static paths = [["eval", "skill"]];
|
|
18119
|
-
static usage =
|
|
18247
|
+
static usage = Command35.Usage({
|
|
18120
18248
|
description: "Vet one inbox skill candidate (Brain Faculties Eval F1): promote / reject / needs_review. Shells out to the Python `brain-eval` core (override its path with $BRAIN_EVAL_BIN)."
|
|
18121
18249
|
});
|
|
18122
|
-
candidate =
|
|
18123
|
-
skillsDir =
|
|
18124
|
-
noJudge =
|
|
18125
|
-
deployment =
|
|
18126
|
-
output =
|
|
18250
|
+
candidate = Option33.String();
|
|
18251
|
+
skillsDir = Option33.String("--skills-dir");
|
|
18252
|
+
noJudge = Option33.Boolean("--no-judge", false);
|
|
18253
|
+
deployment = Option33.String("--deployment");
|
|
18254
|
+
output = Option33.String("--output");
|
|
18127
18255
|
executeCommand() {
|
|
18128
18256
|
return Promise.resolve(this._runCommand());
|
|
18129
18257
|
}
|
|
@@ -18182,7 +18310,7 @@ var EvalSkillCommand = class extends M8tCommand {
|
|
|
18182
18310
|
import { spawnSync as spawnSync4 } from "child_process";
|
|
18183
18311
|
import { writeFileSync as writeFileSync3, mkdirSync as mkdirSync3, readFileSync as readFileSync13, existsSync as existsSync12, readdirSync } from "fs";
|
|
18184
18312
|
import { join as join19 } from "path";
|
|
18185
|
-
import { Command as
|
|
18313
|
+
import { Command as Command36, Option as Option34 } from "clipanion";
|
|
18186
18314
|
init_errors();
|
|
18187
18315
|
init_esm();
|
|
18188
18316
|
function parseArmToken(tok, opts) {
|
|
@@ -18396,23 +18524,23 @@ function buildPlan(args) {
|
|
|
18396
18524
|
}
|
|
18397
18525
|
var EvalExamCommand = class extends M8tCommand {
|
|
18398
18526
|
static paths = [["eval", "exam"]];
|
|
18399
|
-
static usage =
|
|
18527
|
+
static usage = Command36.Usage({
|
|
18400
18528
|
description: "Run a brain exam (Brain Referee E2-F2): impact A/B + dream-delta. Resolves the plan, then shells out to the Python `brain-exam` orchestrator (override its path with $BRAIN_EXAM_BIN). Renders an ExamVerdict: three-valued verdict + power note + per-task flips."
|
|
18401
18529
|
});
|
|
18402
|
-
worker =
|
|
18403
|
-
arms =
|
|
18404
|
-
taskSet =
|
|
18405
|
-
examType =
|
|
18406
|
-
reps =
|
|
18407
|
-
probes =
|
|
18408
|
-
pool =
|
|
18409
|
-
out =
|
|
18410
|
-
dryRun =
|
|
18411
|
-
keepArms =
|
|
18412
|
-
allowStub =
|
|
18413
|
-
deployment =
|
|
18414
|
-
output =
|
|
18415
|
-
observeWaitS =
|
|
18530
|
+
worker = Option34.String();
|
|
18531
|
+
arms = Option34.String("--arms");
|
|
18532
|
+
taskSet = Option34.String("--task-set");
|
|
18533
|
+
examType = Option34.String("--exam-type");
|
|
18534
|
+
reps = Option34.String("-n,--reps");
|
|
18535
|
+
probes = Option34.String("--probes");
|
|
18536
|
+
pool = Option34.String("--pool");
|
|
18537
|
+
out = Option34.String("--out");
|
|
18538
|
+
dryRun = Option34.Boolean("--dry-run", false);
|
|
18539
|
+
keepArms = Option34.Boolean("--keep-arms", false);
|
|
18540
|
+
allowStub = Option34.Boolean("--allow-stub", false);
|
|
18541
|
+
deployment = Option34.String("--deployment");
|
|
18542
|
+
output = Option34.String("--output");
|
|
18543
|
+
observeWaitS = Option34.String("--observe-wait-s");
|
|
18416
18544
|
async executeCommand() {
|
|
18417
18545
|
await Promise.resolve();
|
|
18418
18546
|
const worker = typeof this.worker === "string" ? this.worker : void 0;
|
|
@@ -18526,10 +18654,10 @@ var EvalExamCommand = class extends M8tCommand {
|
|
|
18526
18654
|
};
|
|
18527
18655
|
|
|
18528
18656
|
// src/commands/version.ts
|
|
18529
|
-
import { Command as
|
|
18657
|
+
import { Command as Command37, Option as Option35 } from "clipanion";
|
|
18530
18658
|
var VersionCommand = class extends M8tCommand {
|
|
18531
18659
|
static paths = [["version"], ["--version"], ["-v"]];
|
|
18532
|
-
static usage =
|
|
18660
|
+
static usage = Command37.Usage({
|
|
18533
18661
|
description: "Print the CLI version.",
|
|
18534
18662
|
details: "Prints the m8t CLI version. With --verbose, also prints Node version and platform.",
|
|
18535
18663
|
examples: [
|
|
@@ -18537,8 +18665,8 @@ var VersionCommand = class extends M8tCommand {
|
|
|
18537
18665
|
["Print as JSON", "$0 version --output json"]
|
|
18538
18666
|
]
|
|
18539
18667
|
});
|
|
18540
|
-
output =
|
|
18541
|
-
verbose =
|
|
18668
|
+
output = Option35.String("--output", { description: "pretty | json | auto (default)" });
|
|
18669
|
+
verbose = Option35.Boolean("--verbose", false);
|
|
18542
18670
|
executeCommand() {
|
|
18543
18671
|
const mode = resolveOutputMode(
|
|
18544
18672
|
this.output ?? "auto",
|
|
@@ -18569,18 +18697,18 @@ var VersionCommand = class extends M8tCommand {
|
|
|
18569
18697
|
};
|
|
18570
18698
|
|
|
18571
18699
|
// src/commands/whoami.ts
|
|
18572
|
-
import { Command as
|
|
18700
|
+
import { Command as Command38, Option as Option36 } from "clipanion";
|
|
18573
18701
|
var WhoamiCommand = class extends M8tCommand {
|
|
18574
18702
|
static paths = [["whoami"]];
|
|
18575
|
-
static usage =
|
|
18703
|
+
static usage = Command38.Usage({
|
|
18576
18704
|
description: "Show your identity + the gateway you'll talk to. Probes the backend."
|
|
18577
18705
|
});
|
|
18578
|
-
output =
|
|
18579
|
-
verbose =
|
|
18580
|
-
subscription =
|
|
18706
|
+
output = Option36.String("--output");
|
|
18707
|
+
verbose = Option36.Boolean("--verbose", false);
|
|
18708
|
+
subscription = Option36.String("--subscription", {
|
|
18581
18709
|
description: "Azure subscription ID to discover gateway in (defaults to active az subscription)."
|
|
18582
18710
|
});
|
|
18583
|
-
resourceGroup =
|
|
18711
|
+
resourceGroup = Option36.String("--resource-group", {
|
|
18584
18712
|
description: "m8t-stack resource group to disambiguate the gateway (multi-deployment subscriptions)."
|
|
18585
18713
|
});
|
|
18586
18714
|
async executeCommand() {
|
|
@@ -18645,7 +18773,7 @@ var WhoamiCommand = class extends M8tCommand {
|
|
|
18645
18773
|
};
|
|
18646
18774
|
|
|
18647
18775
|
// src/commands/status.ts
|
|
18648
|
-
import { Command as
|
|
18776
|
+
import { Command as Command39, Option as Option37 } from "clipanion";
|
|
18649
18777
|
|
|
18650
18778
|
// src/lib/azd.ts
|
|
18651
18779
|
init_errors();
|
|
@@ -18710,10 +18838,10 @@ async function resolveLocalContext() {
|
|
|
18710
18838
|
// src/commands/status.ts
|
|
18711
18839
|
var StatusCommand = class extends M8tCommand {
|
|
18712
18840
|
static paths = [["status"]];
|
|
18713
|
-
static usage =
|
|
18841
|
+
static usage = Command39.Usage({
|
|
18714
18842
|
description: "Show the local m8t context: identity, config.yaml, gateway cache, azd mode."
|
|
18715
18843
|
});
|
|
18716
|
-
output =
|
|
18844
|
+
output = Option37.String("--output");
|
|
18717
18845
|
async executeCommand() {
|
|
18718
18846
|
const mode = resolveOutputMode(
|
|
18719
18847
|
this.output,
|
|
@@ -18751,7 +18879,7 @@ var StatusCommand = class extends M8tCommand {
|
|
|
18751
18879
|
};
|
|
18752
18880
|
|
|
18753
18881
|
// src/commands/doctor.ts
|
|
18754
|
-
import { Command as
|
|
18882
|
+
import { Command as Command40, Option as Option38 } from "clipanion";
|
|
18755
18883
|
import { DefaultAzureCredential as DefaultAzureCredential16 } from "@azure/identity";
|
|
18756
18884
|
import * as fs19 from "fs";
|
|
18757
18885
|
import * as os9 from "os";
|
|
@@ -19002,12 +19130,12 @@ function probeRepoRoot() {
|
|
|
19002
19130
|
}
|
|
19003
19131
|
var DoctorCommand = class extends M8tCommand {
|
|
19004
19132
|
static paths = [["doctor"]];
|
|
19005
|
-
static usage =
|
|
19133
|
+
static usage = Command40.Usage({
|
|
19006
19134
|
description: "Diagnose the local m8t setup: az login, config.yaml, gateway, Foundry data-plane."
|
|
19007
19135
|
});
|
|
19008
|
-
output =
|
|
19009
|
-
agent =
|
|
19010
|
-
resourceGroup =
|
|
19136
|
+
output = Option38.String("--output");
|
|
19137
|
+
agent = Option38.String("--agent");
|
|
19138
|
+
resourceGroup = Option38.String("--resource-group", {
|
|
19011
19139
|
description: "m8t-stack resource group to disambiguate the gateway (multi-deployment subscriptions)."
|
|
19012
19140
|
});
|
|
19013
19141
|
async executeCommand() {
|
|
@@ -19123,7 +19251,7 @@ var DoctorCommand = class extends M8tCommand {
|
|
|
19123
19251
|
};
|
|
19124
19252
|
|
|
19125
19253
|
// src/commands/switch.ts
|
|
19126
|
-
import { Command as
|
|
19254
|
+
import { Command as Command41, Option as Option39 } from "clipanion";
|
|
19127
19255
|
|
|
19128
19256
|
// src/lib/profiles.ts
|
|
19129
19257
|
import * as fs20 from "fs/promises";
|
|
@@ -19263,14 +19391,14 @@ async function profileSwitch(name, asName) {
|
|
|
19263
19391
|
init_errors();
|
|
19264
19392
|
var SwitchCommand = class extends M8tCommand {
|
|
19265
19393
|
static paths = [["switch"]];
|
|
19266
|
-
static usage =
|
|
19394
|
+
static usage = Command41.Usage({
|
|
19267
19395
|
description: "Re-point local config at another deployment: --subscription <id|name> (discovery) or <profile>."
|
|
19268
19396
|
});
|
|
19269
|
-
profile =
|
|
19270
|
-
subscription =
|
|
19271
|
-
list =
|
|
19272
|
-
as =
|
|
19273
|
-
output =
|
|
19397
|
+
profile = Option39.String({ required: false });
|
|
19398
|
+
subscription = Option39.String("--subscription");
|
|
19399
|
+
list = Option39.Boolean("--list", false);
|
|
19400
|
+
as = Option39.String("--as");
|
|
19401
|
+
output = Option39.String("--output");
|
|
19274
19402
|
async executeCommand() {
|
|
19275
19403
|
const mode = resolveOutputMode(
|
|
19276
19404
|
this.output,
|
|
@@ -19327,7 +19455,7 @@ var SwitchCommand = class extends M8tCommand {
|
|
|
19327
19455
|
|
|
19328
19456
|
// src/commands/open.ts
|
|
19329
19457
|
import { spawn as spawn5 } from "child_process";
|
|
19330
|
-
import { Command as
|
|
19458
|
+
import { Command as Command42, Option as Option40 } from "clipanion";
|
|
19331
19459
|
|
|
19332
19460
|
// src/lib/open-targets.ts
|
|
19333
19461
|
init_errors();
|
|
@@ -19373,14 +19501,14 @@ function openUrl(url) {
|
|
|
19373
19501
|
}
|
|
19374
19502
|
var OpenCommand = class extends M8tCommand {
|
|
19375
19503
|
static paths = [["open"]];
|
|
19376
|
-
static usage =
|
|
19504
|
+
static usage = Command42.Usage({
|
|
19377
19505
|
description: "Open the deployed webapp (default), the Foundry portal, or the resource group.",
|
|
19378
19506
|
details: "Targets: webapp (deployed app, default) | foundry (ai.azure.com) | portal (resource group in the Azure portal). Pass --print to emit the URL instead of launching a browser (also the default when stdout isn't a TTY)."
|
|
19379
19507
|
});
|
|
19380
|
-
target =
|
|
19381
|
-
print =
|
|
19382
|
-
output =
|
|
19383
|
-
resourceGroup =
|
|
19508
|
+
target = Option40.String({ required: false });
|
|
19509
|
+
print = Option40.Boolean("--print", false);
|
|
19510
|
+
output = Option40.String("--output");
|
|
19511
|
+
resourceGroup = Option40.String("--resource-group", {
|
|
19384
19512
|
description: "m8t-stack resource group to disambiguate the gateway (multi-deployment subscriptions)."
|
|
19385
19513
|
});
|
|
19386
19514
|
async executeCommand() {
|
|
@@ -19424,7 +19552,7 @@ var OpenCommand = class extends M8tCommand {
|
|
|
19424
19552
|
};
|
|
19425
19553
|
|
|
19426
19554
|
// src/commands/dream/run.ts
|
|
19427
|
-
import { Command as
|
|
19555
|
+
import { Command as Command43, Option as Option41 } from "clipanion";
|
|
19428
19556
|
import { AzureCliCredential } from "@azure/identity";
|
|
19429
19557
|
import { TableClient as TableClient2 } from "@azure/data-tables";
|
|
19430
19558
|
import { AIProjectClient as AIProjectClient3 } from "@azure/ai-projects";
|
|
@@ -21441,14 +21569,17 @@ function parseDreamerConfig(rawYaml, env) {
|
|
|
21441
21569
|
};
|
|
21442
21570
|
}
|
|
21443
21571
|
|
|
21572
|
+
// ../../packages/brain/engine/dist/esm/cost-report/config.js
|
|
21573
|
+
import { parse as parseYaml11 } from "yaml";
|
|
21574
|
+
|
|
21444
21575
|
// ../../packages/brain/engine/dist/esm/librarian/codify/persistence-guard.js
|
|
21445
21576
|
var ZERO_WIDTH_RE = new RegExp("\u200B|\u200C|\u200D|\uFEFF", "g");
|
|
21446
21577
|
|
|
21447
21578
|
// ../../packages/brain/engine/dist/esm/librarian/janitor/frontmatter.js
|
|
21448
|
-
import { parse as
|
|
21579
|
+
import { parse as parseYaml12, stringify as stringifyYaml5 } from "yaml";
|
|
21449
21580
|
|
|
21450
21581
|
// ../../packages/brain/engine/dist/esm/librarian/config.js
|
|
21451
|
-
import { parse as
|
|
21582
|
+
import { parse as parseYaml13 } from "yaml";
|
|
21452
21583
|
|
|
21453
21584
|
// src/lib/dream-discovery.ts
|
|
21454
21585
|
init_http();
|
|
@@ -21565,20 +21696,20 @@ function redactTranscripts(input) {
|
|
|
21565
21696
|
}
|
|
21566
21697
|
var DreamRunCommand = class extends M8tCommand {
|
|
21567
21698
|
static paths = [["dream", "run"]];
|
|
21568
|
-
static usage =
|
|
21699
|
+
static usage = Command43.Usage({
|
|
21569
21700
|
description: "Dry-run the brain consumption pipeline for one worker (no model call, no writes).",
|
|
21570
21701
|
details: "Builds AzureCliCredential + resolves the Foundry project, ledger table, and Log Analytics workspace, runs the consumption pipeline, and prints the skip-ledger, the partition invariant, and harvest stats. Transcripts are metadata-only unless --show-transcripts is passed."
|
|
21571
21702
|
});
|
|
21572
|
-
worker =
|
|
21573
|
-
dryRun =
|
|
21574
|
-
since =
|
|
21575
|
-
reset =
|
|
21576
|
-
showTranscripts =
|
|
21703
|
+
worker = Option41.String("--worker", { description: "Worker (canonical name) to harvest. Required." });
|
|
21704
|
+
dryRun = Option41.Boolean("--dry-run", false, { description: "Read-only harvest; no model call, no writes." });
|
|
21705
|
+
since = Option41.String("--since", { description: "ISO-8601 start override (rejected if malformed or future)." });
|
|
21706
|
+
reset = Option41.Boolean("--reset", false, { description: "Ignore the stored cursor; read from the beginning." });
|
|
21707
|
+
showTranscripts = Option41.Boolean("--show-transcripts", false, {
|
|
21577
21708
|
description: "Print transcript bodies (default: metadata only)."
|
|
21578
21709
|
});
|
|
21579
|
-
subscription =
|
|
21580
|
-
endpoint =
|
|
21581
|
-
output =
|
|
21710
|
+
subscription = Option41.String("--subscription");
|
|
21711
|
+
endpoint = Option41.String("--endpoint");
|
|
21712
|
+
output = Option41.String("--output");
|
|
21582
21713
|
// Resolution seam — overridden by tests; built lazily at runtime otherwise.
|
|
21583
21714
|
deps;
|
|
21584
21715
|
async executeCommand() {
|
|
@@ -21926,7 +22057,7 @@ function defaultDeps(overrides) {
|
|
|
21926
22057
|
}
|
|
21927
22058
|
|
|
21928
22059
|
// src/commands/foundry/create.ts
|
|
21929
|
-
import { Command as
|
|
22060
|
+
import { Command as Command44, Option as Option42 } from "clipanion";
|
|
21930
22061
|
|
|
21931
22062
|
// src/lib/foundry-create.ts
|
|
21932
22063
|
init_errors();
|
|
@@ -22164,7 +22295,7 @@ async function createFoundryProject(args) {
|
|
|
22164
22295
|
init_errors();
|
|
22165
22296
|
var FoundryCreateCommand = class extends M8tCommand {
|
|
22166
22297
|
static paths = [["foundry", "create"]];
|
|
22167
|
-
static usage =
|
|
22298
|
+
static usage = Command44.Usage({
|
|
22168
22299
|
description: "Create an AI Foundry (AIServices) account + project + model deployment from scratch.",
|
|
22169
22300
|
details: "Non-interactive and idempotent. Creates the AIServices account (custom subdomain + project management), a project, and a model deployment (default gpt-4.1-mini @ capacity 50). Region must be hosted-agent-eligible. Emits the project endpoint as structured output. Re-run is a clean no-op (account/project skipped if present; deployment capacity converges UP, never down).",
|
|
22170
22301
|
examples: [
|
|
@@ -22173,16 +22304,16 @@ var FoundryCreateCommand = class extends M8tCommand {
|
|
|
22173
22304
|
["Higher capacity for a reasoning model", "$0 foundry create --resource-group rg-m8t-stack --location eastus2 --model gpt-5-mini --capacity 250"]
|
|
22174
22305
|
]
|
|
22175
22306
|
});
|
|
22176
|
-
resourceGroup =
|
|
22177
|
-
location =
|
|
22178
|
-
account =
|
|
22179
|
-
project =
|
|
22180
|
-
model =
|
|
22181
|
-
modelVersion =
|
|
22182
|
-
capacity =
|
|
22183
|
-
subscription =
|
|
22184
|
-
skipQuotaCheck =
|
|
22185
|
-
output =
|
|
22307
|
+
resourceGroup = Option42.String("--resource-group");
|
|
22308
|
+
location = Option42.String("--location");
|
|
22309
|
+
account = Option42.String("--account");
|
|
22310
|
+
project = Option42.String("--project", "m8t");
|
|
22311
|
+
model = Option42.String("--model", "gpt-4.1-mini");
|
|
22312
|
+
modelVersion = Option42.String("--model-version", "2025-04-14");
|
|
22313
|
+
capacity = Option42.String("--capacity", "50");
|
|
22314
|
+
subscription = Option42.String("--subscription");
|
|
22315
|
+
skipQuotaCheck = Option42.Boolean("--skip-quota-check", false);
|
|
22316
|
+
output = Option42.String("--output");
|
|
22186
22317
|
async executeCommand() {
|
|
22187
22318
|
const mode = resolveOutputMode(
|
|
22188
22319
|
this.output,
|
|
@@ -22254,22 +22385,22 @@ var FoundryCreateCommand = class extends M8tCommand {
|
|
|
22254
22385
|
};
|
|
22255
22386
|
|
|
22256
22387
|
// src/commands/foundry/await-ready.ts
|
|
22257
|
-
import { Command as
|
|
22388
|
+
import { Command as Command45, Option as Option43 } from "clipanion";
|
|
22258
22389
|
import { AzureCliCredential as AzureCliCredential2 } from "@azure/identity";
|
|
22259
22390
|
init_errors();
|
|
22260
22391
|
var FoundryAwaitReadyCommand = class extends M8tCommand {
|
|
22261
22392
|
static paths = [["foundry", "await-ready"]];
|
|
22262
|
-
static usage =
|
|
22393
|
+
static usage = Command45.Usage({
|
|
22263
22394
|
description: "Wait until a freshly-created Foundry project's data plane reliably serves it.",
|
|
22264
22395
|
details: "Probes the project (GET /agents) until it returns 200 on a few consecutive tries, or fails clearly after a bounded budget. A newly-created account can serve intermittent 404 'Project not found' for minutes; run this after 'foundry create' and before deploying agents so the worker phase doesn't catch the unstable window.",
|
|
22265
22396
|
examples: [["Wait for a project to be ready", "$0 foundry await-ready --endpoint https://acc.services.ai.azure.com/api/projects/m8t"]]
|
|
22266
22397
|
});
|
|
22267
|
-
endpoint =
|
|
22268
|
-
consecutive =
|
|
22269
|
-
attempts =
|
|
22270
|
-
interval =
|
|
22271
|
-
subscription =
|
|
22272
|
-
output =
|
|
22398
|
+
endpoint = Option43.String("--endpoint");
|
|
22399
|
+
consecutive = Option43.String("--consecutive", "3");
|
|
22400
|
+
attempts = Option43.String("--attempts", "60");
|
|
22401
|
+
interval = Option43.String("--interval", "5");
|
|
22402
|
+
subscription = Option43.String("--subscription");
|
|
22403
|
+
output = Option43.String("--output");
|
|
22273
22404
|
async executeCommand() {
|
|
22274
22405
|
const mode = resolveOutputMode(this.output, this.context.stdout);
|
|
22275
22406
|
const endpoint = typeof this.endpoint === "string" ? this.endpoint : void 0;
|
|
@@ -22303,7 +22434,7 @@ var FoundryAwaitReadyCommand = class extends M8tCommand {
|
|
|
22303
22434
|
};
|
|
22304
22435
|
|
|
22305
22436
|
// src/commands/bootstrap/preflight.ts
|
|
22306
|
-
import { Command as
|
|
22437
|
+
import { Command as Command46, Option as Option44 } from "clipanion";
|
|
22307
22438
|
init_errors();
|
|
22308
22439
|
|
|
22309
22440
|
// src/lib/bootstrap-preflight.ts
|
|
@@ -22377,7 +22508,7 @@ function buildPreflightBanner(who) {
|
|
|
22377
22508
|
// src/commands/bootstrap/preflight.ts
|
|
22378
22509
|
var BootstrapPreflightCommand = class extends M8tCommand {
|
|
22379
22510
|
static paths = [["bootstrap", "preflight"]];
|
|
22380
|
-
static usage =
|
|
22511
|
+
static usage = Command46.Usage({
|
|
22381
22512
|
description: "Loudly verify you can install m8t-stack (Owner/UAA + directory admin) and hard-stop if not.",
|
|
22382
22513
|
details: "Step 1 of `m8t bootstrap`. Prints an unmissable admin-credentials notice, then checks: Owner or User Access Administrator at subscription scope (hard requirement), directory-admin capability to register the app (or pass --client-id), and registers Microsoft.ContainerInstance. Exits non-zero with the exact failing check + remedy.",
|
|
22383
22514
|
examples: [
|
|
@@ -22385,8 +22516,8 @@ var BootstrapPreflightCommand = class extends M8tCommand {
|
|
|
22385
22516
|
["BYO app registration (directory guests)", "$0 bootstrap preflight --client-id <appId>"]
|
|
22386
22517
|
]
|
|
22387
22518
|
});
|
|
22388
|
-
clientId =
|
|
22389
|
-
subscription =
|
|
22519
|
+
clientId = Option44.String("--client-id");
|
|
22520
|
+
subscription = Option44.String("--subscription");
|
|
22390
22521
|
async executeCommand() {
|
|
22391
22522
|
const clientId = typeof this.clientId === "string" ? this.clientId : void 0;
|
|
22392
22523
|
const account = await getAzAccount();
|
|
@@ -22445,7 +22576,7 @@ ${colors.error(" " + why)}
|
|
|
22445
22576
|
import * as fs23 from "fs";
|
|
22446
22577
|
import * as os12 from "os";
|
|
22447
22578
|
import * as path24 from "path";
|
|
22448
|
-
import { Command as
|
|
22579
|
+
import { Command as Command47, Option as Option45 } from "clipanion";
|
|
22449
22580
|
init_errors();
|
|
22450
22581
|
|
|
22451
22582
|
// src/lib/bootstrap-mi.ts
|
|
@@ -22698,7 +22829,7 @@ var ACI_NAME = "m8t-installer";
|
|
|
22698
22829
|
var MI_NAME = "m8t-installer-mi";
|
|
22699
22830
|
var BootstrapLaunchCommand = class extends M8tCommand {
|
|
22700
22831
|
static paths = [["bootstrap", "launch"]];
|
|
22701
|
-
static usage =
|
|
22832
|
+
static usage = Command47.Usage({
|
|
22702
22833
|
description: "Create + authorize the installer managed identity, then kick the cloud installer.",
|
|
22703
22834
|
details: "Step 2 of `m8t bootstrap` (run after `preflight`). Ensures the resource group, creates the m8t-stack app registration (or uses --client-id), creates a user-assigned managed identity granted Owner at subscription scope, and launches the published m8t-installer image as an ACI run-to-completion job under that identity. Writes ~/.m8t-stack/bootstrap.json for `status`/`reap`/`finish`.",
|
|
22704
22835
|
examples: [
|
|
@@ -22707,13 +22838,13 @@ var BootstrapLaunchCommand = class extends M8tCommand {
|
|
|
22707
22838
|
["Pin a specific installer tag", "$0 bootstrap launch --location eastus2 --installer-tag v0.1.0"]
|
|
22708
22839
|
]
|
|
22709
22840
|
});
|
|
22710
|
-
location =
|
|
22711
|
-
resourceGroup =
|
|
22712
|
-
clientId =
|
|
22713
|
-
subscription =
|
|
22714
|
-
installerTag =
|
|
22715
|
-
gatewayImageRef =
|
|
22716
|
-
githubAppCreds =
|
|
22841
|
+
location = Option45.String("--location");
|
|
22842
|
+
resourceGroup = Option45.String("--resource-group");
|
|
22843
|
+
clientId = Option45.String("--client-id");
|
|
22844
|
+
subscription = Option45.String("--subscription");
|
|
22845
|
+
installerTag = Option45.String("--installer-tag");
|
|
22846
|
+
gatewayImageRef = Option45.String("--gateway-image-ref");
|
|
22847
|
+
githubAppCreds = Option45.String("--github-app-creds");
|
|
22717
22848
|
async executeCommand() {
|
|
22718
22849
|
const location = typeof this.location === "string" ? this.location : void 0;
|
|
22719
22850
|
if (!location) {
|
|
@@ -22814,7 +22945,7 @@ var BootstrapLaunchCommand = class extends M8tCommand {
|
|
|
22814
22945
|
};
|
|
22815
22946
|
|
|
22816
22947
|
// src/commands/bootstrap/status.ts
|
|
22817
|
-
import { Command as
|
|
22948
|
+
import { Command as Command48, Option as Option46 } from "clipanion";
|
|
22818
22949
|
init_errors();
|
|
22819
22950
|
|
|
22820
22951
|
// src/lib/bootstrap-aci-state.ts
|
|
@@ -22842,13 +22973,13 @@ async function getAciState(opts) {
|
|
|
22842
22973
|
// src/commands/bootstrap/status.ts
|
|
22843
22974
|
var BootstrapStatusCommand = class extends M8tCommand {
|
|
22844
22975
|
static paths = [["bootstrap", "status"]];
|
|
22845
|
-
static usage =
|
|
22976
|
+
static usage = Command48.Usage({
|
|
22846
22977
|
description: "Show the cloud installer's live status (phase, progress, result).",
|
|
22847
22978
|
details: "Reads the durable status blob written by the installer. --watch polls until the install reaches done or failed.",
|
|
22848
22979
|
examples: [["One read", "$0 bootstrap status"], ["Watch to completion", "$0 bootstrap status --watch"]]
|
|
22849
22980
|
});
|
|
22850
|
-
watch =
|
|
22851
|
-
output =
|
|
22981
|
+
watch = Option46.Boolean("--watch", false);
|
|
22982
|
+
output = Option46.String("--output");
|
|
22852
22983
|
async executeCommand() {
|
|
22853
22984
|
const state = await readBootstrapState();
|
|
22854
22985
|
if (!state) {
|
|
@@ -22919,7 +23050,7 @@ function formatStatus(d) {
|
|
|
22919
23050
|
}
|
|
22920
23051
|
|
|
22921
23052
|
// src/commands/bootstrap/reap.ts
|
|
22922
|
-
import { Command as
|
|
23053
|
+
import { Command as Command49, Option as Option47 } from "clipanion";
|
|
22923
23054
|
init_errors();
|
|
22924
23055
|
|
|
22925
23056
|
// src/lib/bootstrap-reap.ts
|
|
@@ -22995,14 +23126,14 @@ async function reapInstaller(opts) {
|
|
|
22995
23126
|
// src/commands/bootstrap/reap.ts
|
|
22996
23127
|
var BootstrapReapCommand = class extends M8tCommand {
|
|
22997
23128
|
static paths = [["bootstrap", "reap"]];
|
|
22998
|
-
static usage =
|
|
23129
|
+
static usage = Command49.Usage({
|
|
22999
23130
|
description: "Tear down the installer scaffolding (ACI \u2192 MI \u2192 its role assignments) after a successful install.",
|
|
23000
23131
|
details: "Runs locally on the 'done' signal (the installer can't delete its own identity). The platform RG and the gateway's own assignments persist. A failed install is left intact for diagnosis unless --force.",
|
|
23001
23132
|
examples: [["Reap after done", "$0 bootstrap reap"]]
|
|
23002
23133
|
});
|
|
23003
|
-
force =
|
|
23004
|
-
sweepOrphans =
|
|
23005
|
-
yes =
|
|
23134
|
+
force = Option47.Boolean("--force", false);
|
|
23135
|
+
sweepOrphans = Option47.Boolean("--sweep-orphans", false);
|
|
23136
|
+
yes = Option47.Boolean("--yes", false);
|
|
23006
23137
|
async executeCommand() {
|
|
23007
23138
|
if (this.sweepOrphans === true) {
|
|
23008
23139
|
const { subscriptionId: sub } = await getAzAccount();
|
|
@@ -23070,7 +23201,7 @@ Found ${String(found.length)} orphaned Owner@sub assignment(s) (dry-run). ${colo
|
|
|
23070
23201
|
import * as fs24 from "fs/promises";
|
|
23071
23202
|
import * as os14 from "os";
|
|
23072
23203
|
import * as path26 from "path";
|
|
23073
|
-
import { Command as
|
|
23204
|
+
import { Command as Command50, Option as Option48 } from "clipanion";
|
|
23074
23205
|
init_errors();
|
|
23075
23206
|
|
|
23076
23207
|
// src/lib/company-profile-seed.ts
|
|
@@ -23400,14 +23531,14 @@ function renderInstallSummary(args) {
|
|
|
23400
23531
|
// src/commands/bootstrap/finish.ts
|
|
23401
23532
|
var BootstrapFinishCommand = class extends M8tCommand {
|
|
23402
23533
|
static paths = [["bootstrap", "finish"]];
|
|
23403
|
-
static usage =
|
|
23534
|
+
static usage = Command50.Usage({
|
|
23404
23535
|
description: "Point your local tools at the now-live platform (repo-root marker, discovery cache, next steps).",
|
|
23405
23536
|
details: "Final step of `m8t bootstrap` (after the install reaches done). Writes ~/.m8t-stack/repo-root, points your local tools at the live gateway, and \u2014 if you completed the onboarding questionnaire \u2014 seeds your brain-backed advisor's brain with your company profile (best-effort; never blocks finish). Run `m8t bootstrap seed-profile` to seed manually later.",
|
|
23406
23537
|
examples: [["Finish local", "$0 bootstrap finish --repo-root /path/to/m8t"]]
|
|
23407
23538
|
});
|
|
23408
|
-
repoRoot =
|
|
23409
|
-
subscription =
|
|
23410
|
-
resourceGroup =
|
|
23539
|
+
repoRoot = Option48.String("--repo-root");
|
|
23540
|
+
subscription = Option48.String("--subscription");
|
|
23541
|
+
resourceGroup = Option48.String("--resource-group");
|
|
23411
23542
|
async executeCommand() {
|
|
23412
23543
|
const state = await readBootstrapState();
|
|
23413
23544
|
if (!state) {
|
|
@@ -23494,7 +23625,7 @@ ${colors.field("Then open a brand new chat/session")} \u2014 new skills + MCP se
|
|
|
23494
23625
|
import * as fs26 from "fs";
|
|
23495
23626
|
import * as os16 from "os";
|
|
23496
23627
|
import * as path28 from "path";
|
|
23497
|
-
import { Command as
|
|
23628
|
+
import { Command as Command51, Option as Option49 } from "clipanion";
|
|
23498
23629
|
import { DefaultAzureCredential as DefaultAzureCredential17 } from "@azure/identity";
|
|
23499
23630
|
init_errors();
|
|
23500
23631
|
|
|
@@ -23765,7 +23896,7 @@ async function deploySimpleStacey(args) {
|
|
|
23765
23896
|
// src/commands/bootstrap/ui.ts
|
|
23766
23897
|
var BootstrapUiCommand = class extends M8tCommand {
|
|
23767
23898
|
static paths = [["bootstrap", "ui"]];
|
|
23768
|
-
static usage =
|
|
23899
|
+
static usage = Command51.Usage({
|
|
23769
23900
|
description: "Deploy Simple Stacey + start the local onboarding chat UI in the background (returns immediately).",
|
|
23770
23901
|
details: [
|
|
23771
23902
|
"Run after `m8t bootstrap launch`, in parallel with `status --watch`. Waits for the cloud",
|
|
@@ -23783,15 +23914,15 @@ var BootstrapUiCommand = class extends M8tCommand {
|
|
|
23783
23914
|
["Foreground (blocking, old behaviour)", "$0 bootstrap ui --repo-root /path/to/m8t --foreground"]
|
|
23784
23915
|
]
|
|
23785
23916
|
});
|
|
23786
|
-
repoRoot =
|
|
23787
|
-
port =
|
|
23788
|
-
endpoint =
|
|
23917
|
+
repoRoot = Option49.String("--repo-root");
|
|
23918
|
+
port = Option49.String("--port", "3000");
|
|
23919
|
+
endpoint = Option49.String("--endpoint", {
|
|
23789
23920
|
description: "Foundry project endpoint to target \u2014 disambiguates when the subscription has multiple projects."
|
|
23790
23921
|
});
|
|
23791
|
-
prepOnly =
|
|
23792
|
-
skipInstall =
|
|
23793
|
-
stop =
|
|
23794
|
-
foreground =
|
|
23922
|
+
prepOnly = Option49.Boolean("--prep-only", false);
|
|
23923
|
+
skipInstall = Option49.Boolean("--skip-install", false);
|
|
23924
|
+
stop = Option49.Boolean("--stop", false);
|
|
23925
|
+
foreground = Option49.Boolean("--foreground", false);
|
|
23795
23926
|
async executeCommand() {
|
|
23796
23927
|
if (this.stop === true) {
|
|
23797
23928
|
const stopped = stopOnboardingUi();
|
|
@@ -23898,10 +24029,10 @@ var BootstrapUiCommand = class extends M8tCommand {
|
|
|
23898
24029
|
};
|
|
23899
24030
|
|
|
23900
24031
|
// src/commands/bootstrap/seed-profile.ts
|
|
23901
|
-
import { Command as
|
|
24032
|
+
import { Command as Command52, Option as Option50 } from "clipanion";
|
|
23902
24033
|
var BootstrapSeedProfileCommand = class extends M8tCommand {
|
|
23903
24034
|
static paths = [["bootstrap", "seed-profile"]];
|
|
23904
|
-
static usage =
|
|
24035
|
+
static usage = Command52.Usage({
|
|
23905
24036
|
description: "Seed your advisors' brains with the founder + company profile from the onboarding questionnaire.",
|
|
23906
24037
|
details: "Reads the latest stacey-intake conversation, renders memory/founder.md + memory/company-profile.md (+ their MEMORY.md index lines), and commits them to both <org>/stacey-brain and <org>/azzy-brain via the GitHub App. Idempotent. --watch polls until the founder completes the questionnaire.",
|
|
23907
24038
|
examples: [
|
|
@@ -23909,11 +24040,11 @@ var BootstrapSeedProfileCommand = class extends M8tCommand {
|
|
|
23909
24040
|
["Wait for the founder to finish", "$0 bootstrap seed-profile --watch"]
|
|
23910
24041
|
]
|
|
23911
24042
|
});
|
|
23912
|
-
endpoint =
|
|
23913
|
-
brain =
|
|
23914
|
-
watch =
|
|
23915
|
-
timeout =
|
|
23916
|
-
githubAppCreds =
|
|
24043
|
+
endpoint = Option50.String("--endpoint", { description: "Override the Foundry endpoint (else read from the install status)." });
|
|
24044
|
+
brain = Option50.String("--brain", { description: "Override the brain repo (default <org>/stacey-brain)." });
|
|
24045
|
+
watch = Option50.Boolean("--watch", false, { description: "Poll until the questionnaire completes (or --timeout)." });
|
|
24046
|
+
timeout = Option50.String("--timeout", { description: "Watch timeout in minutes (default 20)." });
|
|
24047
|
+
githubAppCreds = Option50.String("--github-app-creds");
|
|
23917
24048
|
async executeCommand() {
|
|
23918
24049
|
const ctx = await resolveSeedContext({
|
|
23919
24050
|
endpointOverride: typeof this.endpoint === "string" ? this.endpoint : void 0,
|
|
@@ -23998,6 +24129,7 @@ cli.register(CoderTeardownCommand);
|
|
|
23998
24129
|
cli.register(AzureExecDeployCommand);
|
|
23999
24130
|
cli.register(PlatformStatusCommand);
|
|
24000
24131
|
cli.register(PlatformUpdateCommand);
|
|
24132
|
+
cli.register(PlatformEnableCostReportCommand);
|
|
24001
24133
|
cli.register(DeployCommand);
|
|
24002
24134
|
cli.register(AgentDeployAdvisorCommand);
|
|
24003
24135
|
cli.register(AgentRemoveCommand);
|