@rosthq/cli 0.7.76 → 0.7.77

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/index.js CHANGED
@@ -38310,6 +38310,30 @@ var CATALOG_ENTRIES = [
38310
38310
  // (script_run_secret_grants) gates availability on top of this — no grant, no call.
38311
38311
  default_access_policy: "always_ask"
38312
38312
  },
38313
+ {
38314
+ // DER-1739: the first named consumers of the generalized secret broker. They ride
38315
+ // the same server-side egress core as `secret.broker` — no credential ever enters
38316
+ // agent context; a `baserow` secret grant (secret_grant.grant) pins the host/token.
38317
+ id: "baserow.read",
38318
+ title: "Read Baserow rows (brokered)",
38319
+ provider: "baserow",
38320
+ description: "Call this to read rows from an approved Baserow table \u2014 list a table's rows or fetch one row by id. You supply only the table id, an optional row id, and optional query filters (page, size, search, filter/order params) \u2014 never a credential. A server-side broker injects the tenant's Baserow token, calls only the allowlisted host, and returns a size-capped, secret-scrubbed result. Read-only.",
38321
+ default_scope_tier: "read",
38322
+ scope_tiers: ["read"],
38323
+ // Resolved via a vault-ref `baserow` secret grant, injected server-side.
38324
+ credential_required: true,
38325
+ default_access_policy: "always_allow"
38326
+ },
38327
+ {
38328
+ id: "baserow.write",
38329
+ title: "Write Baserow row (brokered)",
38330
+ provider: "baserow",
38331
+ description: "Call this to request creating or updating a row in an approved Baserow table. You supply the table id, the field values, and \u2014 to UPDATE \u2014 the row id (omit it to CREATE). You never supply a credential. Every write is HELD for human approval before it is sent; on approval the broker injects the tenant's Baserow token server-side and audits the call. It never writes autonomously.",
38332
+ default_scope_tier: "write_with_approval",
38333
+ scope_tiers: ["write_with_approval"],
38334
+ credential_required: true,
38335
+ default_access_policy: "always_ask"
38336
+ },
38313
38337
  {
38314
38338
  id: "ap.invoices.read",
38315
38339
  title: "Read AP invoices",
@@ -38668,7 +38692,7 @@ function providerRequirementFor(entry) {
38668
38692
  if (!entry.credential_required) {
38669
38693
  return entry.provider === "rost" || entry.provider === "web" ? "platform_managed" : "none";
38670
38694
  }
38671
- return entry.id === "secret.broker" ? "vault_ref" : "connection";
38695
+ return entry.id === "secret.broker" || entry.id === "baserow.read" || entry.id === "baserow.write" ? "vault_ref" : "connection";
38672
38696
  }
38673
38697
  function trustedRequiredMetadataFor(entry) {
38674
38698
  if (entry.default_access_policy === "always_allow" && entry.default_scope_tier !== "write_with_approval") {
@@ -38693,7 +38717,7 @@ function enrichCatalogEntry(entry) {
38693
38717
  access_levels: accessLevels,
38694
38718
  default_access_level: accessLevelForScope(entry.default_scope_tier),
38695
38719
  provider_requirement: providerRequirementFor(entry),
38696
- cost_class: entry.id === "script.run" || entry.id === "secret.broker" ? "metered_standard" : entry.id === "web.search" || entry.id === "web.fetch" || entry.id === "browser.read" ? "metered_low" : "included",
38720
+ cost_class: entry.id === "script.run" || entry.id === "secret.broker" || entry.id === "baserow.read" || entry.id === "baserow.write" ? "metered_standard" : entry.id === "web.search" || entry.id === "web.fetch" || entry.id === "browser.read" ? "metered_low" : "included",
38697
38721
  lane_support: ["cloud", "runner", "mcp"],
38698
38722
  trusted_required_metadata: trustedRequiredMetadataFor(entry)
38699
38723
  };
@@ -44177,8 +44201,109 @@ var signalReadingProposalSchema = external_exports.object({
44177
44201
  }
44178
44202
  });
44179
44203
 
44180
- // ../../packages/protocol/src/software-factory.ts
44204
+ // ../../packages/protocol/src/secret-broker.ts
44181
44205
  var uuid10 = external_exports.string().uuid();
44206
+ var VAULT_REF_PROVIDER = /^(?:infisical|doppler|local-dev):\/\/\S+$/;
44207
+ var brokerVaultRefSchema = external_exports.string().min(1).max(500).regex(VAULT_REF_PROVIDER, "vault_ref must be a provider URI, e.g. infisical://path, doppler://path, or local-dev://path").refine((value) => !hasSecretShapedValue(value), {
44208
+ message: "vault_ref must be a pointer, never raw secret material"
44209
+ });
44210
+ var brokerGrantKeySchema = external_exports.string().trim().min(1).max(200).regex(/^[a-z0-9][a-z0-9._:-]*$/i, "grant_key must be a short identifier (letters, digits, . _ : -)").refine((value) => !hasSecretShapedValue(value), {
44211
+ message: "grant_key must be an identifier, never raw secret material"
44212
+ });
44213
+ var brokerProviderSchema = external_exports.string().trim().min(1).max(100).refine((value) => !hasSecretShapedValue(value), {
44214
+ message: "provider must be a label, never raw secret material"
44215
+ });
44216
+ var brokerAllowedHostSchema = external_exports.string().trim().min(1).max(255).regex(/^[a-zA-Z0-9.-]+$/, "allowed_host must be a bare hostname (letters, digits, dots, hyphens) \u2014 no scheme, port, or path");
44217
+ var brokerAllowedPathPrefixSchema = external_exports.string().min(1).max(512).refine((value) => value.startsWith("/"), { message: "allowed_path_prefix must start with /" }).refine((value) => !value.includes("//"), { message: "allowed_path_prefix must not contain //" }).refine((value) => !value.includes("\\"), { message: "allowed_path_prefix must not contain a backslash" }).refine((value) => !value.includes("://"), { message: "allowed_path_prefix must not contain a scheme" }).refine((value) => !value.includes("?") && !value.includes("#"), { message: "allowed_path_prefix must not contain a query or fragment" }).refine((value) => !value.includes(".."), { message: "allowed_path_prefix must not contain .." }).refine((value) => ![...value].some((ch) => ch <= " "), { message: "allowed_path_prefix must not contain whitespace or control characters" });
44218
+ var brokerHttpMethodSchema = external_exports.enum(["GET", "HEAD", "OPTIONS", "POST", "PUT", "PATCH", "DELETE"]);
44219
+ var READ_SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD", "OPTIONS"]);
44220
+ var brokerScopeTierSchema = external_exports.enum(["read", "write"]);
44221
+ var brokerInjectionModeSchema = external_exports.enum(["header_bearer", "header", "query"]);
44222
+ var brokerInjectionNameSchema = external_exports.string().min(1).max(100).regex(/^[A-Za-z0-9._-]+$/, "injection_name may contain only letters, digits, . _ -");
44223
+ var brokerAllowedMethodsSchema = external_exports.array(brokerHttpMethodSchema).min(1, "at least one allowed method is required").max(7).refine((methods) => new Set(methods).size === methods.length, { message: "allowed_methods must not contain duplicates" });
44224
+ var brokerGrantStatusSchema = external_exports.enum(["active", "revoked"]);
44225
+ function refineGrantShape(value, ctx) {
44226
+ if (value.scope_tier === "read" && value.allowed_methods.some((method) => !READ_SAFE_METHODS.has(method))) {
44227
+ ctx.addIssue({ code: "custom", path: ["allowed_methods"], message: "a read-tier grant may only allow GET, HEAD, or OPTIONS" });
44228
+ }
44229
+ const injectionMode = value.injection_mode ?? "header_bearer";
44230
+ if (injectionMode !== "header_bearer" && !value.injection_name) {
44231
+ ctx.addIssue({ code: "custom", path: ["injection_name"], message: "injection_name is required unless injection_mode is header_bearer" });
44232
+ }
44233
+ }
44234
+ var secretGrantRequestInputSchema = external_exports.object({
44235
+ seat_id: uuid10,
44236
+ grant_key: brokerGrantKeySchema,
44237
+ provider: brokerProviderSchema,
44238
+ allowed_host: brokerAllowedHostSchema,
44239
+ allowed_path_prefix: brokerAllowedPathPrefixSchema.optional(),
44240
+ allowed_methods: brokerAllowedMethodsSchema,
44241
+ scope_tier: brokerScopeTierSchema,
44242
+ reason: external_exports.string().max(2e3).refine((value) => !hasSecretShapedValue(value), { message: "reason must never contain secret material" }).optional()
44243
+ }).strict().superRefine((value, ctx) => refineGrantShape(value, ctx));
44244
+ var secretGrantRequestOutputSchema = external_exports.object({
44245
+ requested: external_exports.literal(true),
44246
+ event_id: uuid10,
44247
+ seat_id: uuid10,
44248
+ grant_key: external_exports.string(),
44249
+ scope_tier: brokerScopeTierSchema
44250
+ }).strict();
44251
+ var secretGrantGrantInputSchema = external_exports.object({
44252
+ seat_id: uuid10,
44253
+ grant_key: brokerGrantKeySchema,
44254
+ // POINTER only. The vault-ref refinement rejects any raw-secret value.
44255
+ vault_ref: brokerVaultRefSchema,
44256
+ provider: brokerProviderSchema,
44257
+ allowed_host: brokerAllowedHostSchema,
44258
+ allowed_path_prefix: brokerAllowedPathPrefixSchema.optional(),
44259
+ allowed_methods: brokerAllowedMethodsSchema,
44260
+ scope_tier: brokerScopeTierSchema,
44261
+ injection_mode: brokerInjectionModeSchema.default("header_bearer"),
44262
+ injection_name: brokerInjectionNameSchema.optional(),
44263
+ // ISO-8601; absent = no expiry.
44264
+ expires_at: external_exports.string().datetime({ offset: true }).optional()
44265
+ }).strict().superRefine((value, ctx) => refineGrantShape(value, ctx));
44266
+ var secretGrantGrantOutputSchema = external_exports.object({
44267
+ grant_id: uuid10,
44268
+ seat_id: uuid10,
44269
+ grant_key: external_exports.string(),
44270
+ scope_tier: brokerScopeTierSchema,
44271
+ status: brokerGrantStatusSchema
44272
+ }).strict();
44273
+ var secretGrantRevokeInputSchema = external_exports.object({
44274
+ grant_id: uuid10
44275
+ }).strict();
44276
+ var secretGrantRevokeOutputSchema = external_exports.object({
44277
+ grant_id: uuid10,
44278
+ status: brokerGrantStatusSchema
44279
+ }).strict();
44280
+ var secretGrantSummarySchema = external_exports.object({
44281
+ id: uuid10,
44282
+ seat_id: uuid10,
44283
+ grant_key: external_exports.string(),
44284
+ provider: external_exports.string(),
44285
+ allowed_host: external_exports.string(),
44286
+ allowed_path_prefix: external_exports.string(),
44287
+ allowed_methods: external_exports.array(external_exports.string()),
44288
+ scope_tier: brokerScopeTierSchema,
44289
+ injection_mode: brokerInjectionModeSchema,
44290
+ injection_name: external_exports.string().nullable(),
44291
+ status: brokerGrantStatusSchema,
44292
+ granted_by_user_id: uuid10,
44293
+ granted_at: external_exports.string(),
44294
+ revoked_at: external_exports.string().nullable(),
44295
+ expires_at: external_exports.string().nullable()
44296
+ }).strict();
44297
+ var secretGrantListInputSchema = external_exports.object({
44298
+ seat_id: uuid10.nullable().optional(),
44299
+ include_revoked: external_exports.boolean().optional()
44300
+ }).strict();
44301
+ var secretGrantListOutputSchema = external_exports.object({
44302
+ grants: external_exports.array(secretGrantSummarySchema)
44303
+ }).strict();
44304
+
44305
+ // ../../packages/protocol/src/software-factory.ts
44306
+ var uuid11 = external_exports.string().uuid();
44182
44307
  var SOFTWARE_PHASE_VALUES = [
44183
44308
  "intake",
44184
44309
  "discovery_scoping",
@@ -44289,7 +44414,7 @@ var softwareConfigValueKindSchema = external_exports.enum(["plain", "secret_ref"
44289
44414
  var softwareCredentialRequestStatusSchema = external_exports.enum(["pending", "fulfilled", "rejected", "canceled"]);
44290
44415
  var softwareSecretAccessOperationSchema = external_exports.enum(["use", "vercel_env_sync", "test_execution"]);
44291
44416
  var softwareProjectSummarySchema = external_exports.object({
44292
- id: uuid10,
44417
+ id: uuid11,
44293
44418
  name: external_exports.string().min(1),
44294
44419
  slug: external_exports.string().min(1),
44295
44420
  base_branch: external_exports.string().min(1),
@@ -44316,8 +44441,8 @@ var softwareProjectListInputSchema = external_exports.object({}).strict();
44316
44441
  var softwareProjectListOutputSchema = external_exports.object({
44317
44442
  projects: external_exports.array(softwareProjectSummarySchema)
44318
44443
  });
44319
- var VAULT_REF_PROVIDER = /^(?:infisical|doppler|local-dev):\/\/\S+$/;
44320
- var softwareVaultRefSchema = external_exports.string().min(1).max(500).regex(VAULT_REF_PROVIDER, "vault_ref must be a provider URI, e.g. infisical://path, doppler://path, or local-dev://path").refine((value) => !hasSecretShapedValue(value), {
44444
+ var VAULT_REF_PROVIDER2 = /^(?:infisical|doppler|local-dev):\/\/\S+$/;
44445
+ var softwareVaultRefSchema = external_exports.string().min(1).max(500).regex(VAULT_REF_PROVIDER2, "vault_ref must be a provider URI, e.g. infisical://path, doppler://path, or local-dev://path").refine((value) => !hasSecretShapedValue(value), {
44321
44446
  message: "vault_ref must be a pointer, never raw secret material"
44322
44447
  });
44323
44448
  var softwareSecretKeyNameSchema = external_exports.string().trim().min(1).max(200).refine((value) => !hasSecretShapedValue(value), {
@@ -44343,11 +44468,11 @@ var softwarePhaseSchedulerStateSchema = external_exports.object({
44343
44468
  ]).nullable(),
44344
44469
  message: external_exports.string(),
44345
44470
  remediation_href: external_exports.string().nullable(),
44346
- work_order_id: uuid10.nullable()
44471
+ work_order_id: uuid11.nullable()
44347
44472
  });
44348
44473
  var softwareBuildRequestSummarySchema = external_exports.object({
44349
- id: uuid10,
44350
- software_project_id: uuid10,
44474
+ id: uuid11,
44475
+ software_project_id: uuid11,
44351
44476
  title: external_exports.string(),
44352
44477
  source_channel: softwareSourceChannelSchema,
44353
44478
  source_ref: external_exports.string().nullable(),
@@ -44363,7 +44488,7 @@ var softwareBuildRequestSummarySchema = external_exports.object({
44363
44488
  scheduler_state: softwarePhaseSchedulerStateSchema.nullable()
44364
44489
  });
44365
44490
  var softwarePhaseRunSummarySchema = external_exports.object({
44366
- id: uuid10,
44491
+ id: uuid11,
44367
44492
  phase: softwarePhaseSchema,
44368
44493
  status: softwarePhaseRunStatusSchema,
44369
44494
  attempt_no: external_exports.number().int(),
@@ -44373,17 +44498,17 @@ var softwarePhaseRunSummarySchema = external_exports.object({
44373
44498
  scheduler_state: softwarePhaseSchedulerStateSchema.nullable()
44374
44499
  });
44375
44500
  var softwareGateSummarySchema = external_exports.object({
44376
- id: uuid10,
44501
+ id: uuid11,
44377
44502
  gate_type: softwareGateTypeSchema,
44378
44503
  status: external_exports.enum(["pending", "approved", "rejected", "held"]),
44379
- phase_run_id: uuid10.nullable(),
44380
- resolved_by_user_id: uuid10.nullable(),
44504
+ phase_run_id: uuid11.nullable(),
44505
+ resolved_by_user_id: uuid11.nullable(),
44381
44506
  rationale: external_exports.string().nullable(),
44382
44507
  created_at: external_exports.string()
44383
44508
  });
44384
44509
  var softwareChangesetSummarySchema = external_exports.object({
44385
- id: uuid10,
44386
- build_request_id: uuid10,
44510
+ id: uuid11,
44511
+ build_request_id: uuid11,
44387
44512
  ordinal: external_exports.number().int(),
44388
44513
  title: external_exports.string(),
44389
44514
  split_criterion: softwareChangesetSplitCriterionSchema,
@@ -44397,10 +44522,10 @@ var softwareChangesetSummarySchema = external_exports.object({
44397
44522
  created_at: external_exports.string()
44398
44523
  });
44399
44524
  var softwareTaskSummarySchema = external_exports.object({
44400
- id: uuid10,
44401
- build_request_id: uuid10,
44402
- changeset_id: uuid10,
44403
- plan_version_id: uuid10,
44525
+ id: uuid11,
44526
+ build_request_id: uuid11,
44527
+ changeset_id: uuid11,
44528
+ plan_version_id: uuid11,
44404
44529
  ordinal: external_exports.number().int(),
44405
44530
  task_key: external_exports.string(),
44406
44531
  title: external_exports.string(),
@@ -44415,8 +44540,8 @@ var softwareTaskSummarySchema = external_exports.object({
44415
44540
  created_at: external_exports.string()
44416
44541
  });
44417
44542
  var softwarePlanVersionSummarySchema = external_exports.object({
44418
- id: uuid10,
44419
- build_request_id: uuid10,
44543
+ id: uuid11,
44544
+ build_request_id: uuid11,
44420
44545
  version_no: external_exports.number().int(),
44421
44546
  status: softwarePlanVersionStatusSchema,
44422
44547
  summary: external_exports.string().nullable(),
@@ -44426,37 +44551,37 @@ var softwarePlanVersionSummarySchema = external_exports.object({
44426
44551
  question: external_exports.string(),
44427
44552
  answer: external_exports.string()
44428
44553
  })).default([]),
44429
- created_by_seat_id: uuid10.nullable(),
44554
+ created_by_seat_id: uuid11.nullable(),
44430
44555
  created_at: external_exports.string()
44431
44556
  });
44432
44557
  var softwarePlanConformanceFindingSummarySchema = external_exports.object({
44433
- id: uuid10,
44434
- build_request_id: uuid10,
44435
- changeset_id: uuid10.nullable(),
44436
- phase_run_id: uuid10.nullable(),
44437
- plan_version_id: uuid10.nullable(),
44558
+ id: uuid11,
44559
+ build_request_id: uuid11,
44560
+ changeset_id: uuid11.nullable(),
44561
+ phase_run_id: uuid11.nullable(),
44562
+ plan_version_id: uuid11.nullable(),
44438
44563
  severity: softwareConformanceSeveritySchema,
44439
44564
  category: softwareConformanceCategorySchema,
44440
44565
  summary: external_exports.string(),
44441
44566
  detail: external_exports.string().nullable(),
44442
44567
  status: softwareConformanceStatusSchema,
44443
- accepted_by_decision_id: uuid10.nullable(),
44568
+ accepted_by_decision_id: uuid11.nullable(),
44444
44569
  resolved_at: external_exports.string().nullable(),
44445
44570
  created_at: external_exports.string()
44446
44571
  });
44447
44572
  var softwareAuthorityProfileSummarySchema = external_exports.object({
44448
- id: uuid10,
44449
- software_project_id: uuid10.nullable(),
44573
+ id: uuid11,
44574
+ software_project_id: uuid11.nullable(),
44450
44575
  name: external_exports.string(),
44451
44576
  preset: softwareAuthorityPresetSchema,
44452
44577
  is_default: external_exports.boolean(),
44453
44578
  created_at: external_exports.string()
44454
44579
  });
44455
44580
  var softwareSecretGrantSummarySchema = external_exports.object({
44456
- id: uuid10,
44457
- software_project_id: uuid10,
44581
+ id: uuid11,
44582
+ software_project_id: uuid11,
44458
44583
  environment: softwareEnvironmentSchema,
44459
- seat_id: uuid10,
44584
+ seat_id: uuid11,
44460
44585
  action: external_exports.string(),
44461
44586
  key_name: external_exports.string(),
44462
44587
  vault_ref: external_exports.string(),
@@ -44465,8 +44590,8 @@ var softwareSecretGrantSummarySchema = external_exports.object({
44465
44590
  revoked_at: external_exports.string().nullable()
44466
44591
  });
44467
44592
  var softwareConfigEntrySummarySchema = external_exports.object({
44468
- id: uuid10,
44469
- software_project_id: uuid10,
44593
+ id: uuid11,
44594
+ software_project_id: uuid11,
44470
44595
  environment: softwareEnvironmentSchema,
44471
44596
  key_name: external_exports.string(),
44472
44597
  value_kind: softwareConfigValueKindSchema,
@@ -44476,20 +44601,20 @@ var softwareConfigEntrySummarySchema = external_exports.object({
44476
44601
  updated_at: external_exports.string()
44477
44602
  });
44478
44603
  var softwareCredentialRequestSummarySchema = external_exports.object({
44479
- id: uuid10,
44480
- software_project_id: uuid10,
44604
+ id: uuid11,
44605
+ software_project_id: uuid11,
44481
44606
  environment: softwareEnvironmentSchema,
44482
- requested_by_seat_id: uuid10,
44607
+ requested_by_seat_id: uuid11,
44483
44608
  action: external_exports.string(),
44484
44609
  key_name: external_exports.string(),
44485
44610
  reason: external_exports.string().nullable(),
44486
44611
  status: softwareCredentialRequestStatusSchema,
44487
- approval_task_id: uuid10.nullable(),
44612
+ approval_task_id: uuid11.nullable(),
44488
44613
  created_at: external_exports.string()
44489
44614
  });
44490
44615
  var softwareCapacityObservationSummarySchema = external_exports.object({
44491
- id: uuid10,
44492
- runner_id: uuid10,
44616
+ id: uuid11,
44617
+ runner_id: uuid11,
44493
44618
  observed_at: external_exports.string(),
44494
44619
  os: external_exports.string().nullable(),
44495
44620
  cpu_count: external_exports.number().int().nullable(),
@@ -44505,7 +44630,7 @@ var softwareRequestCreateInputSchema = external_exports.object({
44505
44630
  // this schema) enforces that exactly one resolves, with an actionable error
44506
44631
  // when neither is given or neither matches — keeping this shape a plain
44507
44632
  // `z.object` so JSON-schema/CLI-flag projection stays simple (no `.refine`).
44508
- software_project_id: uuid10.optional(),
44633
+ software_project_id: uuid11.optional(),
44509
44634
  project: external_exports.string().trim().min(1).max(200).optional(),
44510
44635
  // Untrusted display text (ADR-0018 §5) — bounded, never treated as an instruction.
44511
44636
  title: external_exports.string().trim().min(1).max(500),
@@ -44517,11 +44642,11 @@ var softwareRequestCreateInputSchema = external_exports.object({
44517
44642
  automation_mode: softwareAutomationModeSchema.optional()
44518
44643
  }).strict();
44519
44644
  var softwareRequestCreateOutputSchema = external_exports.object({
44520
- build_request_id: uuid10,
44521
- software_project_id: uuid10,
44645
+ build_request_id: uuid11,
44646
+ software_project_id: uuid11,
44522
44647
  status: softwareRequestStatusSchema,
44523
44648
  current_phase: softwarePhaseSchema,
44524
- phase_run_id: uuid10,
44649
+ phase_run_id: uuid11,
44525
44650
  scheduler_state: softwarePhaseSchedulerStateSchema
44526
44651
  });
44527
44652
  var softwareRequestListInputSchema = external_exports.object({
@@ -44531,7 +44656,7 @@ var softwareRequestListOutputSchema = external_exports.object({
44531
44656
  requests: external_exports.array(softwareBuildRequestSummarySchema)
44532
44657
  });
44533
44658
  var softwareRequestShowInputSchema = external_exports.object({
44534
- build_request_id: uuid10
44659
+ build_request_id: uuid11
44535
44660
  }).strict();
44536
44661
  var softwareRequestShowOutputSchema = external_exports.object({
44537
44662
  request: softwareBuildRequestSummarySchema,
@@ -44544,80 +44669,80 @@ var softwareRequestShowOutputSchema = external_exports.object({
44544
44669
  });
44545
44670
  var softwareRequestLifecycleReason = external_exports.string().trim().min(1).max(2e3);
44546
44671
  var softwareRequestPauseInputSchema = external_exports.object({
44547
- build_request_id: uuid10,
44672
+ build_request_id: uuid11,
44548
44673
  reason: softwareRequestLifecycleReason.optional()
44549
44674
  }).strict();
44550
44675
  var softwareRequestCancelInputSchema = external_exports.object({
44551
- build_request_id: uuid10,
44676
+ build_request_id: uuid11,
44552
44677
  reason: softwareRequestLifecycleReason.optional()
44553
44678
  }).strict();
44554
44679
  var softwareRequestResumeInputSchema = external_exports.object({
44555
- build_request_id: uuid10,
44680
+ build_request_id: uuid11,
44556
44681
  reason: softwareRequestLifecycleReason.optional(),
44557
44682
  termination_bound: softwareTerminationBoundSchema.optional()
44558
44683
  }).strict();
44559
44684
  var softwareRequestLifecycleOutputSchema = external_exports.object({
44560
- build_request_id: uuid10,
44685
+ build_request_id: uuid11,
44561
44686
  status: softwareRequestStatusSchema,
44562
44687
  current_phase: softwarePhaseSchema,
44563
- phase_run_id: uuid10.nullable(),
44564
- work_order_id: uuid10.nullable(),
44565
- resume_from_task_id: uuid10.nullable()
44688
+ phase_run_id: uuid11.nullable(),
44689
+ work_order_id: uuid11.nullable(),
44690
+ resume_from_task_id: uuid11.nullable()
44566
44691
  });
44567
44692
  var softwarePhaseAdvanceInputSchema = external_exports.object({
44568
- build_request_id: uuid10,
44693
+ build_request_id: uuid11,
44569
44694
  to_phase: softwarePhaseSchema,
44570
- owning_seat_id: uuid10.optional(),
44695
+ owning_seat_id: uuid11.optional(),
44571
44696
  note: external_exports.string().max(2e3).optional()
44572
44697
  }).strict();
44573
44698
  var softwarePhaseAdvanceOutputSchema = external_exports.object({
44574
- build_request_id: uuid10,
44699
+ build_request_id: uuid11,
44575
44700
  from_phase: softwarePhaseSchema,
44576
44701
  to_phase: softwarePhaseSchema,
44577
- phase_run_id: uuid10
44702
+ phase_run_id: uuid11
44578
44703
  });
44579
44704
  var softwareGateDecideInputSchema = external_exports.object({
44580
- gate_id: uuid10,
44705
+ gate_id: uuid11,
44581
44706
  decision: softwareGateDecisionSchema,
44582
44707
  rationale: external_exports.string().max(4e3).optional()
44583
44708
  }).strict();
44584
44709
  var softwareGateDecideOutputSchema = external_exports.object({
44585
- gate_id: uuid10,
44710
+ gate_id: uuid11,
44586
44711
  status: external_exports.enum(["approved", "rejected"]),
44587
- resolved_by_user_id: uuid10,
44588
- decision_id: uuid10.nullable()
44712
+ resolved_by_user_id: uuid11,
44713
+ decision_id: uuid11.nullable()
44589
44714
  });
44590
44715
  var forgeClarificationAnswer = external_exports.object({
44591
44716
  question: external_exports.string().trim().min(1).max(2e3),
44592
44717
  answer: external_exports.string().trim().min(1).max(4e3)
44593
44718
  }).strict();
44594
44719
  var softwareRequestAnswerClarificationInputSchema = external_exports.object({
44595
- build_request_id: uuid10,
44720
+ build_request_id: uuid11,
44596
44721
  answers: external_exports.array(forgeClarificationAnswer).min(1).max(50),
44597
44722
  // The planner marks the plan ready once its questions are resolved; the human/COS can
44598
44723
  // signal that here. Default false keeps the plan in needs_clarification.
44599
44724
  mark_ready_for_plan_review: external_exports.boolean().default(false)
44600
44725
  }).strict();
44601
44726
  var softwareRequestAnswerClarificationOutputSchema = external_exports.object({
44602
- build_request_id: uuid10,
44603
- plan_version_id: uuid10,
44727
+ build_request_id: uuid11,
44728
+ plan_version_id: uuid11,
44604
44729
  status: softwarePlanVersionStatusSchema,
44605
44730
  answered_count: external_exports.number().int()
44606
44731
  });
44607
44732
  var softwarePlanApproveInputSchema = external_exports.object({
44608
- build_request_id: uuid10,
44733
+ build_request_id: uuid11,
44609
44734
  rationale: external_exports.string().trim().min(1).max(4e3).optional()
44610
44735
  }).strict();
44611
44736
  var softwarePlanRejectInputSchema = external_exports.object({
44612
- build_request_id: uuid10,
44737
+ build_request_id: uuid11,
44613
44738
  // A rejection must say why (it routes the request back to discovery/scoping).
44614
44739
  rationale: external_exports.string().trim().min(1).max(4e3)
44615
44740
  }).strict();
44616
44741
  var softwarePlanDecisionOutputSchema = external_exports.object({
44617
- build_request_id: uuid10,
44618
- plan_version_id: uuid10,
44742
+ build_request_id: uuid11,
44743
+ plan_version_id: uuid11,
44619
44744
  status: external_exports.enum(["approved", "rejected"]),
44620
- decision_id: uuid10,
44745
+ decision_id: uuid11,
44621
44746
  current_phase: softwarePhaseSchema
44622
44747
  });
44623
44748
  var forgeConformanceFindingInput = external_exports.object({
@@ -44625,41 +44750,41 @@ var forgeConformanceFindingInput = external_exports.object({
44625
44750
  category: softwareConformanceCategorySchema.default("other"),
44626
44751
  summary: external_exports.string().trim().min(1).max(2e3),
44627
44752
  detail: external_exports.string().trim().min(1).max(8e3).optional(),
44628
- changeset_id: uuid10.optional(),
44629
- plan_version_id: uuid10.optional()
44753
+ changeset_id: uuid11.optional(),
44754
+ plan_version_id: uuid11.optional()
44630
44755
  }).strict();
44631
44756
  var softwareConformanceRecordFindingsInputSchema = external_exports.object({
44632
- build_request_id: uuid10,
44633
- phase_run_id: uuid10.optional(),
44757
+ build_request_id: uuid11,
44758
+ phase_run_id: uuid11.optional(),
44634
44759
  findings: external_exports.array(forgeConformanceFindingInput).min(1).max(50)
44635
44760
  }).strict();
44636
44761
  var softwareConformanceRecordFindingsOutputSchema = external_exports.object({
44637
- build_request_id: uuid10,
44762
+ build_request_id: uuid11,
44638
44763
  recorded_count: external_exports.number().int(),
44639
- finding_ids: external_exports.array(uuid10),
44764
+ finding_ids: external_exports.array(uuid11),
44640
44765
  open_finding_count: external_exports.number().int()
44641
44766
  }).strict();
44642
44767
  var softwareConformanceResolveFindingInputSchema = external_exports.object({
44643
- build_request_id: uuid10,
44644
- finding_ids: external_exports.array(uuid10).min(1).max(50),
44768
+ build_request_id: uuid11,
44769
+ finding_ids: external_exports.array(uuid11).min(1).max(50),
44645
44770
  // The re-review run that verified the fix — provenance only (rides into the append-only audit
44646
44771
  // event; the finding row's resolution state is the durable transition).
44647
- phase_run_id: uuid10.optional()
44772
+ phase_run_id: uuid11.optional()
44648
44773
  }).strict();
44649
44774
  var softwareConformanceResolveFindingOutputSchema = external_exports.object({
44650
- build_request_id: uuid10,
44775
+ build_request_id: uuid11,
44651
44776
  resolved_count: external_exports.number().int(),
44652
- resolved_finding_ids: external_exports.array(uuid10),
44777
+ resolved_finding_ids: external_exports.array(uuid11),
44653
44778
  open_finding_count: external_exports.number().int()
44654
44779
  }).strict();
44655
44780
  var softwareAuthorityProfileListInputSchema = external_exports.object({
44656
- software_project_id: uuid10.nullable().optional()
44781
+ software_project_id: uuid11.nullable().optional()
44657
44782
  }).strict();
44658
44783
  var softwareAuthorityProfileListOutputSchema = external_exports.object({
44659
44784
  profiles: external_exports.array(softwareAuthorityProfileSummarySchema)
44660
44785
  });
44661
44786
  var softwareAuthorityProfileCreateInputSchema = external_exports.object({
44662
- software_project_id: uuid10.nullable().optional(),
44787
+ software_project_id: uuid11.nullable().optional(),
44663
44788
  name: external_exports.string().trim().min(1).max(120),
44664
44789
  preset: softwareAuthorityPresetSchema.default("read_only"),
44665
44790
  // A closed capability map (booleans by capability key). Never derived from
@@ -44668,77 +44793,77 @@ var softwareAuthorityProfileCreateInputSchema = external_exports.object({
44668
44793
  is_default: external_exports.boolean().optional()
44669
44794
  }).strict();
44670
44795
  var softwareAuthorityProfileCreateOutputSchema = external_exports.object({
44671
- profile_id: uuid10,
44796
+ profile_id: uuid11,
44672
44797
  name: external_exports.string(),
44673
44798
  preset: softwareAuthorityPresetSchema
44674
44799
  });
44675
44800
  var softwareAuthorityGrantInputSchema = external_exports.object({
44676
- software_project_id: uuid10,
44677
- seat_id: uuid10,
44678
- authority_profile_id: uuid10
44801
+ software_project_id: uuid11,
44802
+ seat_id: uuid11,
44803
+ authority_profile_id: uuid11
44679
44804
  }).strict();
44680
44805
  var softwareAuthorityGrantOutputSchema = external_exports.object({
44681
- grant_id: uuid10,
44682
- software_project_id: uuid10,
44683
- seat_id: uuid10,
44684
- authority_profile_id: uuid10,
44806
+ grant_id: uuid11,
44807
+ software_project_id: uuid11,
44808
+ seat_id: uuid11,
44809
+ authority_profile_id: uuid11,
44685
44810
  status: softwareGrantStatusSchema
44686
44811
  });
44687
44812
  var softwareAuthorityRevokeInputSchema = external_exports.object({
44688
- grant_id: uuid10
44813
+ grant_id: uuid11
44689
44814
  }).strict();
44690
44815
  var softwareAuthorityRevokeOutputSchema = external_exports.object({
44691
- grant_id: uuid10,
44816
+ grant_id: uuid11,
44692
44817
  status: softwareGrantStatusSchema
44693
44818
  });
44694
44819
  var softwareSecretRequestInputSchema = external_exports.object({
44695
- software_project_id: uuid10,
44820
+ software_project_id: uuid11,
44696
44821
  environment: softwareEnvironmentSchema,
44697
- seat_id: uuid10,
44822
+ seat_id: uuid11,
44698
44823
  action: softwareSecretActionSchema,
44699
44824
  key_name: softwareSecretKeyNameSchema,
44700
44825
  reason: external_exports.string().max(2e3).optional()
44701
44826
  }).strict();
44702
44827
  var softwareSecretRequestOutputSchema = external_exports.object({
44703
44828
  requested: external_exports.literal(true),
44704
- credential_request_id: uuid10,
44705
- approval_task_id: uuid10,
44706
- software_project_id: uuid10,
44829
+ credential_request_id: uuid11,
44830
+ approval_task_id: uuid11,
44831
+ software_project_id: uuid11,
44707
44832
  environment: softwareEnvironmentSchema,
44708
- seat_id: uuid10,
44833
+ seat_id: uuid11,
44709
44834
  key_name: external_exports.string()
44710
44835
  });
44711
44836
  var softwareSecretGrantInputSchema = external_exports.object({
44712
- software_project_id: uuid10,
44837
+ software_project_id: uuid11,
44713
44838
  environment: softwareEnvironmentSchema,
44714
- seat_id: uuid10,
44839
+ seat_id: uuid11,
44715
44840
  action: softwareSecretActionSchema,
44716
44841
  key_name: softwareSecretKeyNameSchema,
44717
44842
  // POINTER only. The vault ref shape refinement rejects any raw-secret value.
44718
44843
  vault_ref: softwareVaultRefSchema
44719
44844
  }).strict();
44720
44845
  var softwareSecretGrantOutputSchema = external_exports.object({
44721
- grant_id: uuid10,
44846
+ grant_id: uuid11,
44722
44847
  key_name: external_exports.string(),
44723
44848
  environment: softwareEnvironmentSchema,
44724
44849
  status: softwareGrantStatusSchema
44725
44850
  });
44726
44851
  var softwareSecretRevokeInputSchema = external_exports.object({
44727
- grant_id: uuid10
44852
+ grant_id: uuid11
44728
44853
  }).strict();
44729
44854
  var softwareSecretRevokeOutputSchema = external_exports.object({
44730
- grant_id: uuid10,
44855
+ grant_id: uuid11,
44731
44856
  status: softwareGrantStatusSchema
44732
44857
  });
44733
44858
  var softwareConfigListInputSchema = external_exports.object({
44734
- software_project_id: uuid10.nullable().optional(),
44859
+ software_project_id: uuid11.nullable().optional(),
44735
44860
  environment: softwareEnvironmentSchema.nullable().optional()
44736
44861
  }).strict();
44737
44862
  var softwareConfigListOutputSchema = external_exports.object({
44738
44863
  entries: external_exports.array(softwareConfigEntrySummarySchema)
44739
44864
  });
44740
44865
  var softwareConfigSetInputSchema = external_exports.object({
44741
- software_project_id: uuid10,
44866
+ software_project_id: uuid11,
44742
44867
  environment: softwareEnvironmentSchema,
44743
44868
  key_name: softwareSecretKeyNameSchema,
44744
44869
  value_kind: softwareConfigValueKindSchema,
@@ -44758,24 +44883,24 @@ var softwareConfigSetInputSchema = external_exports.object({
44758
44883
  }
44759
44884
  });
44760
44885
  var softwareConfigSetOutputSchema = external_exports.object({
44761
- config_entry_id: uuid10,
44762
- software_project_id: uuid10,
44886
+ config_entry_id: uuid11,
44887
+ software_project_id: uuid11,
44763
44888
  environment: softwareEnvironmentSchema,
44764
44889
  key_name: external_exports.string(),
44765
44890
  value_kind: softwareConfigValueKindSchema,
44766
44891
  has_secret_ref: external_exports.boolean()
44767
44892
  });
44768
44893
  var softwareSecretRequestListInputSchema = external_exports.object({
44769
- software_project_id: uuid10.nullable().optional(),
44894
+ software_project_id: uuid11.nullable().optional(),
44770
44895
  status: softwareCredentialRequestStatusSchema.nullable().optional()
44771
44896
  }).strict();
44772
44897
  var softwareSecretRequestListOutputSchema = external_exports.object({
44773
44898
  requests: external_exports.array(softwareCredentialRequestSummarySchema)
44774
44899
  });
44775
44900
  var softwareSecretUseInputSchema = external_exports.object({
44776
- software_project_id: uuid10,
44901
+ software_project_id: uuid11,
44777
44902
  environment: softwareEnvironmentSchema,
44778
- seat_id: uuid10,
44903
+ seat_id: uuid11,
44779
44904
  action: softwareSecretActionSchema,
44780
44905
  key_name: softwareSecretKeyNameSchema,
44781
44906
  operation: softwareSecretAccessOperationSchema.default("use")
@@ -44786,12 +44911,12 @@ var softwareSecretUseOutputSchema = external_exports.object({
44786
44911
  key_name: external_exports.string(),
44787
44912
  environment: softwareEnvironmentSchema,
44788
44913
  operation: softwareSecretAccessOperationSchema,
44789
- access_log_id: uuid10,
44790
- missing_request_id: uuid10.nullable(),
44914
+ access_log_id: uuid11,
44915
+ missing_request_id: uuid11.nullable(),
44791
44916
  redacted_summary: external_exports.record(external_exports.string(), external_exports.unknown())
44792
44917
  });
44793
44918
  var softwareCapacityListInputSchema = external_exports.object({
44794
- runner_id: uuid10.nullable().optional(),
44919
+ runner_id: uuid11.nullable().optional(),
44795
44920
  limit: external_exports.number().int().positive().max(200).optional()
44796
44921
  }).strict();
44797
44922
  var softwareCapacityListOutputSchema = external_exports.object({
@@ -44846,9 +44971,9 @@ var forgeTrustedControlSchema = external_exports.object({
44846
44971
  automation_mode: softwareAutomationModeSchema,
44847
44972
  inferred_risk: softwareRiskLevelSchema,
44848
44973
  risk_ceiling: softwareRiskLevelSchema.nullable().default(null),
44849
- authority_profile_ids: external_exports.array(uuid10).max(50).default([]),
44974
+ authority_profile_ids: external_exports.array(uuid11).max(50).default([]),
44850
44975
  active_secret_grant_count: external_exports.number().int().nonnegative().max(1e3).default(0),
44851
- pending_gate_ids: external_exports.array(uuid10).max(50).default([])
44976
+ pending_gate_ids: external_exports.array(uuid11).max(50).default([])
44852
44977
  }).strict();
44853
44978
  var forgeSeatSkillSchema = external_exports.object({
44854
44979
  slug: external_exports.string().trim().min(1).max(200),
@@ -44857,9 +44982,9 @@ var forgeSeatSkillSchema = external_exports.object({
44857
44982
  }).strict();
44858
44983
  var forgeRuntimeContextPacketSchema = external_exports.object({
44859
44984
  schema_version: external_exports.literal(1),
44860
- phase_run_id: uuid10,
44861
- build_request_id: uuid10,
44862
- software_project_id: uuid10,
44985
+ phase_run_id: uuid11,
44986
+ build_request_id: uuid11,
44987
+ software_project_id: uuid11,
44863
44988
  phase: softwarePhaseSchema,
44864
44989
  request_status: softwareRequestStatusSchema,
44865
44990
  project: external_exports.object({
@@ -44868,7 +44993,7 @@ var forgeRuntimeContextPacketSchema = external_exports.object({
44868
44993
  }).strict(),
44869
44994
  scheduler: external_exports.object({
44870
44995
  lease_model: external_exports.literal("work_order_claim_heartbeat"),
44871
- runner_id: uuid10,
44996
+ runner_id: uuid11,
44872
44997
  max_runner_sessions: external_exports.number().int().positive().max(8),
44873
44998
  model_account_state: external_exports.string().min(1).max(80),
44874
44999
  account_alias: external_exports.string().min(1).max(200).nullable()
@@ -44952,7 +45077,7 @@ var runnerTurnReportSchema = external_exports.object({
44952
45077
  var softwareDeveloperTeamInstallInputSchema = external_exports.object({
44953
45078
  // The human-accountable steward seat for the installed team. Agent seats created
44954
45079
  // by the template chain through this seat so no agent occupancy can be orphaned.
44955
- steward_seat_id: uuid10,
45080
+ steward_seat_id: uuid11,
44956
45081
  // Optional project scope for authority grants. Authority profile presets are
44957
45082
  // installed tenant-wide either way; grants are project-scoped only when supplied.
44958
45083
  // DER-1241: `.nullable()` too — this command is human-confirmed, so its input is
@@ -44960,7 +45085,7 @@ var softwareDeveloperTeamInstallInputSchema = external_exports.object({
44960
45085
  // replay; an empty project round-trips as JSON `null`, which a bare `.optional()`
44961
45086
  // rejects (→ "Command input failed schema validation"). Matches the sibling
44962
45087
  // software-factory schemas that already use `.nullable().optional()`.
44963
- software_project_id: uuid10.nullable().optional(),
45088
+ software_project_id: uuid11.nullable().optional(),
44964
45089
  assign_skills: external_exports.boolean().default(true),
44965
45090
  // DER-1264: the install auto-staffs live agents at a pr_only, observe-first
44966
45091
  // posture. If the tenant's company autonomy ceiling (`agent_policy`) is MORE
@@ -44980,34 +45105,34 @@ var softwareDeveloperTeamInstallInputSchema = external_exports.object({
44980
45105
  }).strict();
44981
45106
  var softwareDeveloperTeamSeatSummarySchema = external_exports.object({
44982
45107
  role: softwareDeveloperTeamRoleSchema,
44983
- seat_id: uuid10,
45108
+ seat_id: uuid11,
44984
45109
  name: external_exports.string(),
44985
- charter_version_id: uuid10,
45110
+ charter_version_id: uuid11,
44986
45111
  created: external_exports.boolean()
44987
45112
  });
44988
45113
  var softwareDeveloperTeamSkillSummarySchema = external_exports.object({
44989
45114
  slug: external_exports.string(),
44990
- skill_id: uuid10,
44991
- skill_version_id: uuid10,
44992
- assigned_seat_ids: external_exports.array(uuid10)
45115
+ skill_id: uuid11,
45116
+ skill_version_id: uuid11,
45117
+ assigned_seat_ids: external_exports.array(uuid11)
44993
45118
  });
44994
45119
  var softwareDeveloperTeamAuthorityProfileSummarySchema = external_exports.object({
44995
45120
  preset: softwareAuthorityPresetSchema,
44996
- profile_id: uuid10,
45121
+ profile_id: uuid11,
44997
45122
  name: external_exports.string()
44998
45123
  });
44999
45124
  var softwareDeveloperTeamAuthorityGrantSummarySchema = external_exports.object({
45000
45125
  role: softwareDeveloperTeamRoleSchema,
45001
- software_project_id: uuid10,
45002
- seat_id: uuid10,
45003
- authority_profile_id: uuid10,
45004
- grant_id: uuid10,
45126
+ software_project_id: uuid11,
45127
+ seat_id: uuid11,
45128
+ authority_profile_id: uuid11,
45129
+ grant_id: uuid11,
45005
45130
  created: external_exports.boolean()
45006
45131
  });
45007
45132
  var softwareDeveloperTeamOccupancySummarySchema = external_exports.object({
45008
45133
  role: softwareDeveloperTeamRoleSchema,
45009
- seat_id: uuid10,
45010
- agent_id: uuid10,
45134
+ seat_id: uuid11,
45135
+ agent_id: uuid11,
45011
45136
  template_slug: external_exports.string(),
45012
45137
  status: external_exports.literal("live"),
45013
45138
  // false when a live agent already occupied the seat (idempotent re-install).
@@ -45027,7 +45152,7 @@ var softwareDeveloperTeamTokenBudgetSummarySchema = external_exports.object({
45027
45152
  set_by_install: external_exports.boolean()
45028
45153
  });
45029
45154
  var softwareDeveloperTeamGithubPolicySummarySchema = external_exports.object({
45030
- software_project_id: uuid10,
45155
+ software_project_id: uuid11,
45031
45156
  automation_mode_ceiling: softwareAutomationModeSchema,
45032
45157
  // false when a pre-existing policy was preserved (not created by this install).
45033
45158
  created: external_exports.boolean()
@@ -45055,8 +45180,8 @@ var softwareDeveloperTeamUninstallInputSchema = external_exports.object({
45055
45180
  }).strict();
45056
45181
  var softwareDeveloperTeamDecommissionedAgentSchema = external_exports.object({
45057
45182
  role: softwareDeveloperTeamRoleSchema.nullable(),
45058
- seat_id: uuid10,
45059
- agent_id: uuid10
45183
+ seat_id: uuid11,
45184
+ agent_id: uuid11
45060
45185
  });
45061
45186
  var softwareDeveloperTeamUninstallOutputSchema = external_exports.object({
45062
45187
  torn_down: external_exports.boolean(),
@@ -45206,8 +45331,8 @@ var forgeMemoryDraftArtifact = external_exports.object({
45206
45331
  follow_up_items: forgeArtifactList
45207
45332
  }).strict();
45208
45333
  var softwareGithubAutomationPolicyInputSchema = external_exports.object({
45209
- software_project_id: uuid10,
45210
- authority_profile_id: uuid10.nullable().optional(),
45334
+ software_project_id: uuid11,
45335
+ authority_profile_id: uuid11.nullable().optional(),
45211
45336
  automation_mode_ceiling: softwareAutomationModeSchema.default("plan_only"),
45212
45337
  allowed_actions: external_exports.array(softwareGithubActionSchema).max(20),
45213
45338
  // DER-1233: the element schema is a single FLATTENED enum (the union of the
@@ -45238,12 +45363,12 @@ var softwareGithubInstallationConnectInputSchema = external_exports.object({
45238
45363
  repositories: external_exports.array(softwareGithubConnectedRepositoryInputSchema).min(1).max(200)
45239
45364
  }).strict();
45240
45365
  var softwareGithubInstallationConnectOutputSchema = external_exports.object({
45241
- github_installation_id: uuid10,
45366
+ github_installation_id: uuid11,
45242
45367
  repositories_connected: external_exports.number().int().nonnegative()
45243
45368
  });
45244
45369
  var softwareGithubRepositoryBindMappingSchema = external_exports.object({
45245
45370
  repository_id: external_exports.number().int().positive(),
45246
- software_project_id: uuid10
45371
+ software_project_id: uuid11
45247
45372
  }).strict();
45248
45373
  var softwareGithubInstallationBindInputSchema = external_exports.object({
45249
45374
  app_slug: external_exports.string().trim().min(1).max(120).default("rost-forge"),
@@ -45251,7 +45376,7 @@ var softwareGithubInstallationBindInputSchema = external_exports.object({
45251
45376
  bindings: external_exports.array(softwareGithubRepositoryBindMappingSchema).min(1).max(100)
45252
45377
  }).strict();
45253
45378
  var softwareGithubInstallationBindOutputSchema = external_exports.object({
45254
- github_installation_id: uuid10,
45379
+ github_installation_id: uuid11,
45255
45380
  repositories_bound: external_exports.number().int().nonnegative()
45256
45381
  });
45257
45382
  var softwareGithubRepositoryUnbindInputSchema = external_exports.object({
@@ -45272,12 +45397,12 @@ var softwareGithubInstallationRepositoryViewSchema = external_exports.object({
45272
45397
  private: external_exports.boolean(),
45273
45398
  default_branch: external_exports.string(),
45274
45399
  status: external_exports.enum(["connected", "active"]),
45275
- software_project_id: uuid10.nullable(),
45400
+ software_project_id: uuid11.nullable(),
45276
45401
  software_project_name: external_exports.string().nullable(),
45277
45402
  software_project_slug: external_exports.string().nullable()
45278
45403
  });
45279
45404
  var softwareGithubInstallationViewSchema = external_exports.object({
45280
- id: uuid10,
45405
+ id: uuid11,
45281
45406
  installation_id: external_exports.number().int().positive(),
45282
45407
  account_login: external_exports.string(),
45283
45408
  account_id: external_exports.number().int().positive(),
@@ -45289,16 +45414,16 @@ var softwareGithubInstallationListOutputSchema = external_exports.object({
45289
45414
  installations: external_exports.array(softwareGithubInstallationViewSchema)
45290
45415
  });
45291
45416
  var softwareGithubAutomationPolicyUpsertOutputSchema = external_exports.object({
45292
- policy_id: uuid10,
45293
- software_project_id: uuid10,
45417
+ policy_id: uuid11,
45418
+ software_project_id: uuid11,
45294
45419
  automation_mode_ceiling: softwareAutomationModeSchema
45295
45420
  });
45296
45421
  var softwareGithubInstallationTokenCreateInputSchema = external_exports.object({
45297
- software_project_id: uuid10,
45422
+ software_project_id: uuid11,
45298
45423
  repository_id: external_exports.number().int().positive(),
45299
45424
  requested_actions: external_exports.array(softwareGithubActionSchema).min(1).max(20),
45300
45425
  requested_automation_mode: softwareAutomationModeSchema.default("plan_only"),
45301
- seat_id: uuid10.optional()
45426
+ seat_id: uuid11.optional()
45302
45427
  }).strict();
45303
45428
  var softwareGithubInstallationTokenCreateOutputSchema = external_exports.object({
45304
45429
  installation_id: external_exports.number().int().positive(),
@@ -45335,13 +45460,13 @@ var softwareVercelConnectionConnectInputSchema = external_exports.object({
45335
45460
  scopes: external_exports.array(external_exports.string().trim().min(1).max(120)).max(40).default([])
45336
45461
  }).strict();
45337
45462
  var softwareVercelConnectionConnectOutputSchema = external_exports.object({
45338
- vercel_connection_id: uuid10,
45463
+ vercel_connection_id: uuid11,
45339
45464
  account_id: external_exports.string(),
45340
45465
  team_id: external_exports.string().nullable()
45341
45466
  });
45342
45467
  var softwareVercelProjectLinkInputSchema = external_exports.object({
45343
- software_project_id: uuid10,
45344
- vercel_connection_id: uuid10,
45468
+ software_project_id: uuid11,
45469
+ vercel_connection_id: uuid11,
45345
45470
  vercel_project_id: external_exports.string().trim().min(1).max(200),
45346
45471
  vercel_project_name: external_exports.string().trim().min(1).max(255),
45347
45472
  framework: external_exports.string().trim().min(1).max(120).nullable().optional(),
@@ -45350,12 +45475,12 @@ var softwareVercelProjectLinkInputSchema = external_exports.object({
45350
45475
  git_repository: external_exports.record(external_exports.string().min(1), external_exports.unknown()).default({})
45351
45476
  }).strict();
45352
45477
  var softwareVercelProjectLinkOutputSchema = external_exports.object({
45353
- vercel_project_link_id: uuid10,
45354
- software_project_id: uuid10,
45478
+ vercel_project_link_id: uuid11,
45479
+ software_project_id: uuid11,
45355
45480
  vercel_project_id: external_exports.string()
45356
45481
  });
45357
45482
  var softwareVercelConnectionViewSchema = external_exports.object({
45358
- id: uuid10,
45483
+ id: uuid11,
45359
45484
  account_id: external_exports.string(),
45360
45485
  account_name: external_exports.string().nullable(),
45361
45486
  team_id: external_exports.string().nullable(),
@@ -45366,11 +45491,11 @@ var softwareVercelConnectionViewSchema = external_exports.object({
45366
45491
  connected_at: external_exports.string()
45367
45492
  });
45368
45493
  var softwareVercelProjectLinkViewSchema = external_exports.object({
45369
- id: uuid10,
45370
- software_project_id: uuid10,
45494
+ id: uuid11,
45495
+ software_project_id: uuid11,
45371
45496
  software_project_name: external_exports.string(),
45372
45497
  software_project_slug: external_exports.string(),
45373
- vercel_connection_id: uuid10,
45498
+ vercel_connection_id: uuid11,
45374
45499
  vercel_project_id: external_exports.string(),
45375
45500
  vercel_project_name: external_exports.string(),
45376
45501
  framework: external_exports.string().nullable(),
@@ -45384,16 +45509,16 @@ var softwareVercelProjectListOutputSchema = external_exports.object({
45384
45509
  project_links: external_exports.array(softwareVercelProjectLinkViewSchema)
45385
45510
  });
45386
45511
  var softwareVercelDeployPreviewInputSchema = external_exports.object({
45387
- software_project_id: uuid10,
45512
+ software_project_id: uuid11,
45388
45513
  commit_sha: external_exports.string().trim().regex(/^[A-Fa-f0-9]{7,64}$/),
45389
45514
  git_ref: external_exports.string().trim().min(1).max(255),
45390
- build_request_id: uuid10.optional(),
45391
- phase_run_id: uuid10.optional(),
45392
- seat_id: uuid10.optional(),
45515
+ build_request_id: uuid11.optional(),
45516
+ phase_run_id: uuid11.optional(),
45517
+ seat_id: uuid11.optional(),
45393
45518
  required_secret_keys: external_exports.array(external_exports.string().trim().min(1).max(200)).max(25).default([])
45394
45519
  }).strict();
45395
45520
  var softwareVercelDeployPreviewOutputSchema = external_exports.object({
45396
- vercel_deployment_record_id: uuid10,
45521
+ vercel_deployment_record_id: uuid11,
45397
45522
  deployment_id: external_exports.string(),
45398
45523
  deployment_url: external_exports.string().nullable(),
45399
45524
  commit_sha: external_exports.string(),
@@ -45401,18 +45526,18 @@ var softwareVercelDeployPreviewOutputSchema = external_exports.object({
45401
45526
  });
45402
45527
 
45403
45528
  // ../../packages/protocol/src/software-factory-events.ts
45404
- var uuid11 = external_exports.string().uuid();
45529
+ var uuid12 = external_exports.string().uuid();
45405
45530
  var softwareFactoryPhaseRunCompletedEventSchema = external_exports.object({
45406
- tenantId: uuid11,
45407
- phaseRunId: uuid11,
45408
- buildRequestId: uuid11.nullish(),
45531
+ tenantId: uuid12,
45532
+ phaseRunId: uuid12,
45533
+ buildRequestId: uuid12.nullish(),
45409
45534
  status: external_exports.enum(["passed", "failed"]),
45410
45535
  idempotencyKey: external_exports.string().min(1).optional()
45411
45536
  }).strict();
45412
45537
  var softwareFactoryBudgetExhaustedEventSchema = external_exports.object({
45413
- tenantId: uuid11,
45414
- phaseRunId: uuid11,
45415
- buildRequestId: uuid11,
45538
+ tenantId: uuid12,
45539
+ phaseRunId: uuid12,
45540
+ buildRequestId: uuid12,
45416
45541
  reason: external_exports.string().min(1),
45417
45542
  idempotencyKey: external_exports.string().min(1).optional()
45418
45543
  }).strict();
@@ -47267,7 +47392,7 @@ External connectors are being rolled out provider by provider, conservatively (r
47267
47392
  order: 48,
47268
47393
  title: "CLI and MCP installation guide",
47269
47394
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
47270
- version: "2026-07-13.4",
47395
+ version: "2026-07-13.6",
47271
47396
  public: true,
47272
47397
  audiences: ["human", "cli", "mcp", "in_app_agent"],
47273
47398
  stages: ["company_setup", "staffing"],
@@ -48058,6 +48183,15 @@ Forge Vercel access is through a tenant-bound OAuth connection, never a browser-
48058
48183
 
48059
48184
  Preview deployment creation is a governed command. \`software_factory.vercel.deploy_preview\` requires an active Vercel project link, a Vercel OAuth vault-ref connection, active \`deploy_preview\` Forge authority for the requesting seat when a seat is supplied, and any requested preview secret/config grants. It writes the deployment id, URL, commit SHA, checks, status, and error metadata into \`software_vercel_deployments\`; build-request deployments also write a Forge artifact and event. Raw OAuth tokens and vault refs are never returned.
48060
48185
 
48186
+ #### Secret broker grants (tenant-level)
48187
+
48188
+ Generalized brokered-secret egress beyond Forge (DER-1738). A human grants an agent seat a scoped secret the \`secret.broker\` egress tool and the \`baserow.read\`/\`baserow.write\` tools (DER-1739) resolve server-side; Postgres stores only a vault-ref pointer, never secret material. A seat agent asks for and lists its own grants through the seat-scoped \`secret_grant.request\` / \`secret_grant.list\` tools (in Seat-scoped operating tools below); a human grants and revokes here. Baserow authenticates with an \`Authorization: Token <key>\` header, so a Baserow grant uses \`injection_mode: "header"\`, \`injection_name: "Authorization"\`, and stores the full \`Token <key>\` string as its vault secret.
48189
+
48190
+ | Tool | Command | What it does | Scope | Notes |
48191
+ |---|---|---|---|---|
48192
+ | \`rost_grant_a_brokered_secret\` | \`secret_grant.grant\` | A human grants a seat scoped brokered-secret access by vault ref (host, path prefix, methods, injection). Postgres stores only the pointer, never secret material. Owner-only and human-gated; the secret.broker and baserow.* tools resolve it server-side and the secret never enters agent context. | Tenant-admin | Call with {"seat_id":"<seat-id>","grant_key":"baserow","provider":"baserow","allowed_host":"baserow.example.com","allowed_path_prefix":"/api/database/rows/","allowed_methods":["GET","POST","PATCH"],"scope_tier":"write","injection_mode":"header","injection_name":"Authorization","vault_ref":"infisical://prod/baserow-token"}. |
48193
+ | \`rost_revoke_a_brokered_secret_grant\` | \`secret_grant.revoke\` | Revoke a brokered secret grant (teardown \u2014 cut a compromised or over-scoped seat egress immediately; the next broker call fails closed). Owner-only and human-gated. | Tenant-admin | Call with {"grant_id":"<grant-id>"}; non-interactive callers receive a confirmation handoff. |
48194
+
48061
48195
  ### Seat-scoped operating tools
48062
48196
 
48063
48197
  Seat-scoped MCP tokens expose the operating protocol below. The server still checks the seat's permission manifest, Charter, task ownership, and tenant boundary. These are the **seat-token equivalents** of the CLI \`{{cli}} task\` / \`{{cli}} signal\` / \`{{cli}} friction\` wrappers and the tenant-admin task tools above: \`rost_get_tasks\`, \`{{cli}} task list\`, and \`task.list\` are the same operation reached three different ways. The command-id column makes the mapping explicit.
@@ -48078,6 +48212,8 @@ Seat-scoped MCP tokens expose the operating protocol below. The server still che
48078
48212
  | \`rost_attach_agent_deliverable\` | \`deliverable.attach\` | Attach a scrubbed deliverable to a source run, task, or work order after server-side seat validation. | Seat | Call with title, kind, and the source ids that belong to the acting seat. |
48079
48213
  | \`rost_request_a_forge_secret_grant\` | \`software_factory.secret.request\` | Request access to a project secret by key. It creates a durable credential request and approval Task, never accepts a secret value, and does not grant access by itself. | Seat | Call with \`{"software_project_id":"<project-id>","environment":"preview","seat_id":"<seat-id>","action":"test.run","key_name":"OPENAI_API_KEY"}\`. |
48080
48214
  | \`rost_verify_forge_secret_broker_access\` | \`software_factory.secret.use\` | Verify broker authorization for a Forge secret without opening the vault. Missing grants create or reuse a credential request + approval Task; allowed grants return a redacted authorization summary only. Runtime vault use happens runner-side. | Seat | Call with \`{"software_project_id":"<project-id>","environment":"preview","seat_id":"<seat-id>","action":"test.run","key_name":"OPENAI_API_KEY","operation":"test_execution"}\`. |
48215
+ | \`rost_request_a_brokered_secret_grant\` | \`secret_grant.request\` | A seat agent requests a scoped brokered-secret grant (for secret.broker / baserow.*) by naming the host, path prefix, methods, and scope it needs. Draft-and-confirm: no secret and no vault ref; returns an event id for a human to grant via secret_grant.grant. | Seat | Call with {"seat_id":"<seat-id>","grant_key":"baserow","provider":"baserow","allowed_host":"baserow.example.com","allowed_path_prefix":"/api/database/rows/","allowed_methods":["GET"],"scope_tier":"read"}. |
48216
+ | \`rost_list_brokered_secret_grants\` | \`secret_grant.list\` | List the seat's own brokered secret grants. Returns egress allowlist metadata only (host, path prefix, methods, scope, status), never the vault ref or any secret. | Seat | Call with {} (an agent is server-pinned to its own seat). |
48081
48217
  | \`rost_record_forge_conformance_findings\` | \`software_factory.conformance.record_findings\` | A Forge review seat (plan conformance, security, or QA) records structured findings as reviewer evidence. Set \`changeset_id\` on a finding that targets a specific changeset. Open findings route the request back to implementation; accepting a gap remains a separate human gate. Requires the seat's signed manifest grant. | Seat | Call with \`{"build_request_id":"<request-id>","findings":[{"severity":"major","category":"scope_gap","summary":"Missing migration verification","changeset_id":"<changeset-id>"}]}\`. |
48082
48218
  | \`rost_resolve_forge_conformance_finding\` | \`software_factory.conformance.resolve_finding\` | A Forge review seat marks a prior open finding resolved after re-reviewing the changeset and verifying it is fixed (reviewer verification, not human gap-acceptance). A resolved finding stops routing the request back to implementation, so the recycle loop converges. Requires the seat's signed manifest grant. | Seat | Call with \`{"build_request_id":"<request-id>","finding_ids":["<finding-id>"]}\`. |
48083
48219
 
@@ -51336,6 +51472,10 @@ var COMMAND_MANIFEST = [
51336
51472
  { "id": "seat.rename", "namespace": "seat", "action": "rename", "title": "Rename seat", "description": "Rename a Responsibility Graph seat.", "requiredScope": "seat", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "name", "flag": "name", "type": "string", "required": true }], "hasComplexInput": false, "help": "Seat names should describe the function and accountability clearly." },
51337
51473
  { "id": "seat.reparent", "namespace": "seat", "action": "reparent", "title": "Reparent seat", "description": "Move a Responsibility Graph seat under a new parent.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "new_parent_seat_id", "flag": "new-parent-seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Reparent seats only when it clarifies accountable structure and preserves a clean graph." },
51338
51474
  { "id": "seat.set_type", "namespace": "seat", "action": "set_type", "title": "Set seat type", "description": "Set a Responsibility Graph seat type.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "seat_type", "flag": "seat-type", "type": "enum", "required": true, "enumValues": ["human", "agent", "hybrid"] }], "hasComplexInput": false, "help": "Seat type should follow the work, risk, measurable, and stewardship model." },
51475
+ { "id": "secret_grant.grant", "namespace": "secret_grant", "action": "grant", "title": "Grant a brokered secret", "description": "A human grants a seat scoped access to a brokered secret by VAULT REF (host + path prefix + methods + scope + injection). Postgres stores only the pointer \u2014 never secret material (invariant #5). Owner-only, human-gated. The secret.broker/baserow.* tools resolve this grant server-side; the secret never enters agent context.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "grant_key", "flag": "grant-key", "type": "string", "required": true }, { "name": "vault_ref", "flag": "vault-ref", "type": "string", "required": true }, { "name": "provider", "flag": "provider", "type": "string", "required": true }, { "name": "allowed_host", "flag": "allowed-host", "type": "string", "required": true }, { "name": "allowed_path_prefix", "flag": "allowed-path-prefix", "type": "string", "required": false }, { "name": "allowed_methods", "flag": "allowed-methods", "type": "array", "required": true, "itemType": "string" }, { "name": "scope_tier", "flag": "scope-tier", "type": "enum", "required": true, "enumValues": ["read", "write"] }, { "name": "injection_mode", "flag": "injection-mode", "type": "enum", "required": false, "enumValues": ["header_bearer", "header", "query"] }, { "name": "injection_name", "flag": "injection-name", "type": "string", "required": false }, { "name": "expires_at", "flag": "expires-at", "type": "string", "required": false }], "hasComplexInput": false, "help": "A human grants a seat a scoped brokered secret by vault ref (host + path prefix + methods + injection). Postgres stores only the pointer, never secret material. Owner-only and human-gated; the secret.broker/baserow.* tools resolve it server-side." },
51476
+ { "id": "secret_grant.list", "namespace": "secret_grant", "action": "list", "title": "List brokered secret grants", "description": "List brokered secret grants for the tenant (or one seat). Returns the egress allowlist metadata only (host, path prefix, methods, scope, status) \u2014 never the vault ref or any secret. An agent sees only its own seat's grants.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }, { "name": "include_revoked", "flag": "include-revoked", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "List brokered secret grants for the tenant (or one seat). Returns the egress allowlist metadata only \u2014 host, path prefix, methods, scope, status \u2014 never the vault ref or any secret." },
51477
+ { "id": "secret_grant.request", "namespace": "secret_grant", "action": "request", "title": "Request a brokered secret grant", "description": "An agent or user REQUESTS a scoped brokered-secret grant by naming the egress it needs (grant key, host, path prefix, methods, scope). No secret and no vault ref are ever accepted (invariant #5) \u2014 this only records a durable ask for a human to grant.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }, { "name": "grant_key", "flag": "grant-key", "type": "string", "required": true }, { "name": "provider", "flag": "provider", "type": "string", "required": true }, { "name": "allowed_host", "flag": "allowed-host", "type": "string", "required": true }, { "name": "allowed_path_prefix", "flag": "allowed-path-prefix", "type": "string", "required": false }, { "name": "allowed_methods", "flag": "allowed-methods", "type": "array", "required": true, "itemType": "string" }, { "name": "scope_tier", "flag": "scope-tier", "type": "enum", "required": true, "enumValues": ["read", "write"] }, { "name": "reason", "flag": "reason", "type": "string", "required": false }], "hasComplexInput": false, "help": "An agent or user requests a brokered-secret egress grant by naming the host, path prefix, methods, and scope it needs. Draft-and-confirm: no secret or vault ref is accepted; a human grants it." },
51478
+ { "id": "secret_grant.revoke", "namespace": "secret_grant", "action": "revoke", "title": "Revoke a brokered secret grant", "description": "Revoke a brokered secret grant \u2014 a compromised or over-scoped seat's egress access can be cut immediately; the next broker call resolves no grant and fails closed. Owner-only, human-gated.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "grant_id", "flag": "grant-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Revoke a brokered secret grant (teardown \u2014 cut a compromised or over-scoped seat's egress immediately; the next broker call fails closed). Owner-only and human-gated." },
51339
51479
  { "id": "settings.agent_policy.get", "namespace": "settings", "action": "agent_policy.get", "title": "Get company autonomy ceiling", "description": "Read this company's Company Guardrails ceiling (ADR-0007): the profile, enforcement mode, and the most an agent may do autonomously (max_autonomous_risk). Returns metadata only.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read this company's autonomy ceiling (Company Guardrails, ADR-0007): profile, enforcement mode, and the most an agent may do autonomously." },
51340
51480
  { "id": "settings.agent_policy.update", "namespace": "settings", "action": "agent_policy.update", "title": "Set company autonomy ceiling", "description": "Set the Company Guardrails ceiling (ADR-0007): a named profile (locked_down, balanced, high_autonomy) or custom + max_autonomous_risk. Tenant-admin and human-gated. An explicitly set ceiling is ENFORCED by default; pass enforcement=observe to stage a change without blocking.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "profile", "flag": "profile", "type": "enum", "required": true, "enumValues": ["locked_down", "balanced", "high_autonomy", "custom"] }, { "name": "max_autonomous_risk", "flag": "max-autonomous-risk", "type": "enum", "required": false, "enumValues": ["low", "medium", "high", "critical"] }, { "name": "enforcement", "flag": "enforcement", "type": "enum", "required": false, "enumValues": ["observe", "enforce"] }], "hasComplexInput": false, "help": "Set the company autonomy ceiling: a profile (locked_down, balanced, high_autonomy) or custom + max_autonomous_risk. Owner-only, human-gated, and enforced by default." },
51341
51481
  { "id": "settings.confirmation_policy.get", "namespace": "settings", "action": "confirmation_policy.get", "title": "Get CLI confirmation mode", "description": "Read this company's CLI confirmation mode (DER-1490): careful (the strict default \u2014 the CLI cannot silently auto-approve a confirmation) or trusted_operator (an owner opt-in permitting silent auto-approval of non-dangerous confirmations). Returns metadata only.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "Read this company's CLI confirmation mode: careful (the strict default \u2014 the CLI cannot silently auto-approve a confirmation) or trusted_operator (an owner opt-in permitting silent auto-approval of non-dangerous confirmations)." },