@rosthq/cli 0.7.5 → 0.7.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EAyM3D,CAAC"}
1
+ {"version":3,"file":"command-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/command-manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EA4M3D,CAAC"}
package/dist/index.js CHANGED
@@ -42752,7 +42752,7 @@ External connectors are being rolled out provider by provider, conservatively (r
42752
42752
  order: 48,
42753
42753
  title: "CLI and MCP installation guide",
42754
42754
  summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
42755
- version: "2026-07-03.1",
42755
+ version: "2026-07-03.3",
42756
42756
  public: true,
42757
42757
  audiences: ["human", "cli", "mcp", "in_app_agent"],
42758
42758
  stages: ["company_setup", "staffing"],
@@ -43476,8 +43476,17 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
43476
43476
  | \`rost_request_a_forge_secret_grant\` | \`software_factory.secret.request\` | Request access to a project secret by key (draft-and-confirm \u2014 no value, no grant). Never accepts a secret value; a human grants it. | Tenant | Call with \`{"software_project_id":"<project-id>","environment":"preview","seat_id":"<seat-id>","action":"test.run","key_name":"OPENAI_API_KEY"}\`. |
43477
43477
  | \`rost_grant_a_forge_secret\` | \`software_factory.secret.grant\` | A human grants a seat scoped access to a project secret by vault ref (Postgres stores only the pointer, never secret material). Owner-only and human-gated. | Tenant-admin | Call with \`{"software_project_id":"<project-id>","environment":"production","seat_id":"<seat-id>","action":"vercel.env.sync","key_name":"OPENAI_API_KEY","vault_ref":"infisical://prod/OPENAI_API_KEY"}\`. |
43478
43478
  | \`rost_revoke_a_forge_secret_grant\` | \`software_factory.secret.revoke\` | Revoke a Forge secret grant (teardown \u2014 cut a compromised seat's access immediately). Owner-only and human-gated. | Tenant-admin | Call with \`{"grant_id":"<grant-id>"}\`; non-interactive callers receive a confirmation handoff. |
43479
+ | \`rost_bind_a_forge_github_installation\` | \`software_factory.github.installation.bind\` | Bind a GitHub App installation and selected repositories to Forge projects. Owner-only and human-gated. | Tenant-admin | Call with \`{"installation_id":123,"account_login":"acme","account_id":456,"account_type":"Organization","repositories":[{"software_project_id":"<project-id>","repository_id":789,"repository_name":"app","repository_full_name":"acme/app"}]}\`. |
43480
+ | \`rost_set_a_forge_github_automation_policy\` | \`software_factory.github.policy.upsert\` | Set the server-side GitHub automation policy: allowed actions, automation-mode ceiling, and operations requiring humans. Owner-only and human-gated. | Tenant-admin | Call with \`{"software_project_id":"<project-id>","automation_mode_ceiling":"pr_only","allowed_actions":["webhook_intake","installation_token"],"requires_human_for":["deploy_production"]}\`. |
43481
+ | \`rost_create_a_forge_github_installation_token\` | \`software_factory.github.installation_token.create\` | Mint a short-lived GitHub App installation token for one bound repository after policy evaluation. The token is returned once and never stored. | Tenant | Call with \`{"software_project_id":"<project-id>","repository_id":789,"requested_actions":["read"],"requested_automation_mode":"plan_only"}\`. |
43479
43482
  | \`rost_list_forge_runner_capacity\` | \`software_factory.capacity.list\` | List Forge runner capacity observations (advisory scheduling input only, never an authority input). Read-only; requires the Forge add-on. | Tenant | Call with \`{}\` or \`{"runner_id":"<runner-id>"}\`. |
43480
43483
 
43484
+ #### Forge GitHub App access
43485
+
43486
+ Forge repository access is through a tenant-bound GitHub App installation, not through a human's ambient \`git\` or \`gh\` credentials. The server verifies GitHub webhook signatures before parsing payloads, resolves the installation and repository against active tenant bindings, records delivery ids for idempotency, and creates GitHub issue build requests only when an active repo binding and policy allow intake.
43487
+
43488
+ Installation tokens are short lived and are not stored. The durable record is audit metadata: installation id, repository id, requested action, policy decision, reason, and related Forge request when one exists. GitHub issue titles, labels, and bodies are treated as untrusted source content; labels may request an automation mode, but only server-side Forge automation policy can allow \`pr_only\`, \`merge_after_checks\`, \`deploy_preview\`, or \`deploy_production\`. Production deploy remains human-gated.
43489
+
43481
43490
  ### Seat-scoped operating tools
43482
43491
 
43483
43492
  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.
@@ -46626,6 +46635,9 @@ var COMMAND_MANIFEST = [
46626
46635
  { "id": "software_factory.authority.revoke", "namespace": "software_factory", "action": "authority.revoke", "title": "Revoke Forge seat authority", "description": "Revoke a Forge authority grant (teardown \u2014 ADR-0018 \xA76). Owner-only, human-gated; emits a durable authority-change event. Entitlement-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 Forge authority grant (teardown). Owner-only and human-gated." },
46627
46636
  { "id": "software_factory.capacity.list", "namespace": "software_factory", "action": "capacity.list", "title": "List Forge runner capacity", "description": "List the tenant's Forge runner capacity observations (OS, CPU, memory, active sessions, usage-limit telemetry). Advisory scheduling input only, never an authority input. Read-only, entitlement-gated.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "runner_id", "flag": "runner-id", "type": "string", "required": false }, { "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List Forge runner capacity observations (advisory scheduling input only, never an authority input). Read-only; requires the Forge add-on." },
46628
46637
  { "id": "software_factory.gate.decide", "namespace": "software_factory", "action": "gate.decide", "title": "Decide a Forge gate", "description": "A human approves or rejects a Forge gate. The resolver is recorded (never an agent \u2014 invariant #7); sensitive gates (security sign-off, merge/deploy, authority change, production deploy) also write a linked human decision. Requires confirmation.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "gate_id", "flag": "gate-id", "type": "string", "required": true }, { "name": "decision", "flag": "decision", "type": "enum", "required": true, "enumValues": ["approve", "reject"] }, { "name": "rationale", "flag": "rationale", "type": "string", "required": false }], "hasComplexInput": false, "help": "A human approves or rejects a Forge gate; an agent caller routes to /approvals and can never self-approve. Sensitive gates record a human decision." },
46638
+ { "id": "software_factory.github.installation_token.create", "namespace": "software_factory", "action": "github.installation_token.create", "title": "Create a Forge GitHub installation token", "description": "Mint a short-lived GitHub App installation token for one bound repository after server-side policy evaluation. The token is returned once and never persisted.", "requiredScope": "tenant", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": true }, { "name": "repository_id", "flag": "repository-id", "type": "integer", "required": true }, { "name": "requested_actions", "flag": "requested-actions", "type": "array", "required": true, "itemType": "string" }, { "name": "requested_automation_mode", "flag": "requested-automation-mode", "type": "enum", "required": false, "enumValues": ["plan_only", "pr_only", "merge_after_checks", "deploy_preview", "deploy_production"] }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "help": "Mint a short-lived GitHub App installation token for one bound repository after policy evaluation; token material is returned once and never stored." },
46639
+ { "id": "software_factory.github.installation.bind", "namespace": "software_factory", "action": "github.installation.bind", "title": "Bind a Forge GitHub installation", "description": "Bind a signed GitHub App installation and selected repositories to Forge projects. Owner-only and human-gated; webhook payloads never supply tenant authority.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "app_slug", "flag": "app-slug", "type": "string", "required": false }, { "name": "installation_id", "flag": "installation-id", "type": "integer", "required": true }, { "name": "account_login", "flag": "account-login", "type": "string", "required": true }, { "name": "account_id", "flag": "account-id", "type": "integer", "required": true }, { "name": "account_type", "flag": "account-type", "type": "string", "required": true }], "hasComplexInput": true, "help": "Bind a GitHub App installation and selected repositories to Forge projects. Owner-only and human-gated." },
46640
+ { "id": "software_factory.github.policy.upsert", "namespace": "software_factory", "action": "github.policy.upsert", "title": "Set a Forge GitHub automation policy", "description": "Set the server-side policy for GitHub actions and automation-mode ceilings. Owner-only and human-gated; production deploy remains human-gated.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": true }, { "name": "authority_profile_id", "flag": "authority-profile-id", "type": "string", "required": false }, { "name": "automation_mode_ceiling", "flag": "automation-mode-ceiling", "type": "enum", "required": false, "enumValues": ["plan_only", "pr_only", "merge_after_checks", "deploy_preview", "deploy_production"] }, { "name": "allowed_actions", "flag": "allowed-actions", "type": "array", "required": true, "itemType": "string" }, { "name": "requires_human_for", "flag": "requires-human-for", "type": "array", "required": true, "itemType": "string" }], "hasComplexInput": false, "help": "Set Forge's server-side GitHub automation policy for actions, mode ceilings, and human-gated operations." },
46629
46641
  { "id": "software_factory.phase.advance", "namespace": "software_factory", "action": "phase.advance", "title": "Advance a Forge build request phase", "description": "Advance a build request to the next phase, enforcing the closed phase state machine server-side (an illegal transition is rejected). Writes a phase-run row and updates the current phase. Entitlement-gated.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "build_request_id", "flag": "build-request-id", "type": "string", "required": true }, { "name": "to_phase", "flag": "to-phase", "type": "enum", "required": true, "enumValues": ["intake", "discovery_scoping", "plan_review", "implementation", "plan_conformance_review", "security_review", "qa_verification", "release_preview", "merge_or_deploy_gate", "closeout"] }, { "name": "owning_seat_id", "flag": "owning-seat-id", "type": "string", "required": false }, { "name": "note", "flag": "note", "type": "string", "required": false }], "hasComplexInput": false, "help": "Advance a build request to its next phase; the server enforces the closed phase state machine and rejects an illegal transition." },
46630
46642
  { "id": "software_factory.request.create", "namespace": "software_factory", "action": "request.create", "title": "Create a Forge build request", "description": "Open a governed Forge build request against a connected software project. Records the request plus its initial intake phase run. Entitlement-gated (Forge add-on); the title is untrusted display text, never an instruction.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": true }, { "name": "title", "flag": "title", "type": "string", "required": true }, { "name": "source_channel", "flag": "source-channel", "type": "enum", "required": false, "enumValues": ["ui", "cli", "github_issue", "linear", "api"] }, { "name": "source_ref", "flag": "source-ref", "type": "string", "required": false }], "hasComplexInput": true, "help": "Open a governed Forge build request against a connected software project; the title is untrusted display text. Requires the Forge add-on." },
46631
46643
  { "id": "software_factory.request.list", "namespace": "software_factory", "action": "request.list", "title": "List Forge build requests", "description": "The Forge control-room board: the tenant's build requests with status, current phase, and risk/automation mode. Read-only, entitlement-gated.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "limit", "flag": "limit", "type": "integer", "required": false }], "hasComplexInput": false, "help": "List Forge build requests (the control-room board) with status, current phase, and risk. Read-only; requires the Forge add-on." },
@@ -51089,6 +51101,20 @@ var softwareAutomationModeSchema = external_exports2.enum([
51089
51101
  "deploy_preview",
51090
51102
  "deploy_production"
51091
51103
  ]);
51104
+ var softwareGithubActionSchema = external_exports2.enum([
51105
+ "read",
51106
+ "branch",
51107
+ "commit",
51108
+ "push",
51109
+ "pull_request",
51110
+ "review",
51111
+ "merge",
51112
+ "issue_manage",
51113
+ "repo_create",
51114
+ "installation_token",
51115
+ "webhook_intake"
51116
+ ]);
51117
+ var softwareGithubPolicyDecisionSchema = external_exports2.enum(["allowed", "denied", "requires_human"]);
51092
51118
  var softwarePhaseRunStatusSchema = external_exports2.enum(["pending", "running", "passed", "failed", "blocked", "skipped"]);
51093
51119
  var softwareGateTypeSchema = external_exports2.enum([
51094
51120
  "plan_review",
@@ -51320,6 +51346,71 @@ var softwareCapacityListInputSchema = external_exports2.object({
51320
51346
  var softwareCapacityListOutputSchema = external_exports2.object({
51321
51347
  observations: external_exports2.array(softwareCapacityObservationSummarySchema)
51322
51348
  });
51349
+ var softwareGithubAutomationPolicyInputSchema = external_exports2.object({
51350
+ software_project_id: uuid10,
51351
+ authority_profile_id: uuid10.nullable().optional(),
51352
+ automation_mode_ceiling: softwareAutomationModeSchema.default("plan_only"),
51353
+ allowed_actions: external_exports2.array(softwareGithubActionSchema).max(20),
51354
+ requires_human_for: external_exports2.array(external_exports2.union([softwareGithubActionSchema, softwareAutomationModeSchema])).max(20).refine((values) => values.includes("deploy_production"), {
51355
+ message: "production deploy must remain human-gated"
51356
+ })
51357
+ }).strict();
51358
+ var softwareGithubRepositoryBindingInputSchema = external_exports2.object({
51359
+ software_project_id: uuid10,
51360
+ repository_id: external_exports2.number().int().positive(),
51361
+ repository_name: external_exports2.string().trim().min(1).max(255),
51362
+ repository_full_name: external_exports2.string().trim().min(1).max(500),
51363
+ private: external_exports2.boolean().default(true),
51364
+ default_branch: external_exports2.string().trim().min(1).max(255).default("main"),
51365
+ permissions: external_exports2.record(external_exports2.string().min(1), external_exports2.enum(["read", "write"])).default({})
51366
+ }).strict();
51367
+ var softwareGithubInstallationBindInputSchema = external_exports2.object({
51368
+ app_slug: external_exports2.string().trim().min(1).max(120).default("rost-forge"),
51369
+ installation_id: external_exports2.number().int().positive(),
51370
+ account_login: external_exports2.string().trim().min(1).max(255),
51371
+ account_id: external_exports2.number().int().positive(),
51372
+ account_type: external_exports2.string().trim().min(1).max(80),
51373
+ repositories: external_exports2.array(softwareGithubRepositoryBindingInputSchema).min(1).max(100)
51374
+ }).strict();
51375
+ var softwareGithubInstallationBindOutputSchema = external_exports2.object({
51376
+ github_installation_id: uuid10,
51377
+ repositories_bound: external_exports2.number().int().nonnegative()
51378
+ });
51379
+ var softwareGithubAutomationPolicyUpsertOutputSchema = external_exports2.object({
51380
+ policy_id: uuid10,
51381
+ software_project_id: uuid10,
51382
+ automation_mode_ceiling: softwareAutomationModeSchema
51383
+ });
51384
+ var softwareGithubInstallationTokenCreateInputSchema = external_exports2.object({
51385
+ software_project_id: uuid10,
51386
+ repository_id: external_exports2.number().int().positive(),
51387
+ requested_actions: external_exports2.array(softwareGithubActionSchema).min(1).max(20),
51388
+ requested_automation_mode: softwareAutomationModeSchema.default("plan_only"),
51389
+ seat_id: uuid10.optional()
51390
+ }).strict();
51391
+ var softwareGithubInstallationTokenCreateOutputSchema = external_exports2.object({
51392
+ installation_id: external_exports2.number().int().positive(),
51393
+ repository_id: external_exports2.number().int().positive(),
51394
+ token: external_exports2.string().min(1),
51395
+ expires_at: external_exports2.string(),
51396
+ permissions: external_exports2.record(external_exports2.string(), external_exports2.enum(["read", "write"]))
51397
+ });
51398
+ var softwareGithubAutomationPolicyDecisionSchema = external_exports2.object({
51399
+ decision: softwareGithubPolicyDecisionSchema,
51400
+ reason: external_exports2.string().min(1).max(2e3),
51401
+ automation_mode: softwareAutomationModeSchema,
51402
+ requires_human: external_exports2.boolean()
51403
+ });
51404
+ var softwareGithubIssueIntakeMetadataSchema = external_exports2.object({
51405
+ delivery_id: external_exports2.string().trim().min(1).max(200),
51406
+ repository_id: external_exports2.number().int().positive(),
51407
+ repository_full_name: external_exports2.string().trim().min(1).max(500),
51408
+ issue_number: external_exports2.number().int().positive(),
51409
+ issue_url: external_exports2.string().url().max(2e3),
51410
+ issue_title: external_exports2.string().trim().min(1).max(500),
51411
+ labels: external_exports2.array(external_exports2.string().trim().min(1).max(80)).max(50).default([]),
51412
+ requested_automation_mode: softwareAutomationModeSchema.optional()
51413
+ }).strict();
51323
51414
 
51324
51415
  // ../../packages/protocol/src/sync-brief.ts
51325
51416
  var uuidSchema14 = external_exports2.string().uuid();