@rosthq/cli 0.7.20 → 0.7.21
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 +73 -10
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -38895,6 +38895,21 @@ var aicosSessionSchema = external_exports.object({
|
|
|
38895
38895
|
updatedAt: external_exports.string().datetime({ offset: true }),
|
|
38896
38896
|
createdAt: external_exports.string().datetime({ offset: true })
|
|
38897
38897
|
}).strict();
|
|
38898
|
+
var AICOS_ATTACHMENT_CONTENT_TYPES = ["image/png", "image/jpeg", "image/webp", "image/gif"];
|
|
38899
|
+
var AICOS_ATTACHMENT_MAX_BYTES = 10 * 1024 * 1024;
|
|
38900
|
+
var AICOS_MAX_ATTACHMENTS_PER_TURN = 4;
|
|
38901
|
+
var aicosAttachmentContentTypeSchema = external_exports.enum(AICOS_ATTACHMENT_CONTENT_TYPES);
|
|
38902
|
+
var aicosAttachmentSchema = external_exports.object({
|
|
38903
|
+
id: uuidSchema4,
|
|
38904
|
+
contentType: aicosAttachmentContentTypeSchema,
|
|
38905
|
+
sizeBytes: external_exports.number().int().positive(),
|
|
38906
|
+
width: external_exports.number().int().positive().nullable(),
|
|
38907
|
+
height: external_exports.number().int().positive().nullable(),
|
|
38908
|
+
filename: external_exports.string().max(255).nullable()
|
|
38909
|
+
}).strict();
|
|
38910
|
+
var aicosAttachmentUploadResultSchema = external_exports.object({
|
|
38911
|
+
attachment: aicosAttachmentSchema
|
|
38912
|
+
}).strict();
|
|
38898
38913
|
var aicosMessageSchema = external_exports.object({
|
|
38899
38914
|
id: uuidSchema4,
|
|
38900
38915
|
sessionId: uuidSchema4,
|
|
@@ -38907,6 +38922,7 @@ var aicosMessageSchema = external_exports.object({
|
|
|
38907
38922
|
linkedRunId: uuidSchema4.nullable(),
|
|
38908
38923
|
linkedWorkOrderId: uuidSchema4.nullable(),
|
|
38909
38924
|
sourceCount: external_exports.number().int().nonnegative().default(0),
|
|
38925
|
+
attachments: external_exports.array(aicosAttachmentSchema).default([]),
|
|
38910
38926
|
createdAt: external_exports.string().datetime({ offset: true })
|
|
38911
38927
|
}).strict();
|
|
38912
38928
|
var aicosSourceSchema = external_exports.object({
|
|
@@ -38922,7 +38938,11 @@ var aicosSourceSchema = external_exports.object({
|
|
|
38922
38938
|
var aicosTurnRequestSchema = external_exports.object({
|
|
38923
38939
|
sessionId: uuidSchema4.nullable().optional(),
|
|
38924
38940
|
purpose: aicosConversationPurposeSchema.default("general"),
|
|
38925
|
-
|
|
38941
|
+
// Empty is permitted only when attachments are present (an image-only turn);
|
|
38942
|
+
// runAicosTurn enforces the "message or attachment required" invariant so the
|
|
38943
|
+
// schema stays a plain object for downstream `.shape`/`.extend` consumers.
|
|
38944
|
+
message: external_exports.string().trim().max(12e3).default(""),
|
|
38945
|
+
attachmentIds: external_exports.array(uuidSchema4).max(AICOS_MAX_ATTACHMENTS_PER_TURN).default([]),
|
|
38926
38946
|
routeContext: aicosRouteContextSchema,
|
|
38927
38947
|
model: aicosModelRequestSchema.optional()
|
|
38928
38948
|
}).strict();
|
|
@@ -42552,7 +42572,15 @@ var softwareDeveloperTeamInstallInputSchema = external_exports.object({
|
|
|
42552
42572
|
// rejects (→ "Command input failed schema validation"). Matches the sibling
|
|
42553
42573
|
// software-factory schemas that already use `.nullable().optional()`.
|
|
42554
42574
|
software_project_id: uuid10.nullable().optional(),
|
|
42555
|
-
assign_skills: external_exports.boolean().default(true)
|
|
42575
|
+
assign_skills: external_exports.boolean().default(true),
|
|
42576
|
+
// DER-1264: the install auto-staffs live agents at a pr_only, observe-first
|
|
42577
|
+
// posture. If the tenant's company autonomy ceiling (`agent_policy`) is MORE
|
|
42578
|
+
// permissive than this design's envelope (resolved `max_autonomous_risk` >= high,
|
|
42579
|
+
// i.e. `high_autonomy` or a custom high/critical ceiling), the install refuses to
|
|
42580
|
+
// auto-activate unless the owner explicitly acknowledges that posture. Never
|
|
42581
|
+
// silently inherit a more-permissive-than-designed ceiling (invariant #10). A
|
|
42582
|
+
// tenant within the envelope (locked_down/balanced) never needs this.
|
|
42583
|
+
acknowledge_autonomy_ceiling: external_exports.boolean().default(false)
|
|
42556
42584
|
}).strict();
|
|
42557
42585
|
var softwareDeveloperTeamSeatSummarySchema = external_exports.object({
|
|
42558
42586
|
role: softwareDeveloperTeamRoleSchema,
|
|
@@ -42580,12 +42608,45 @@ var softwareDeveloperTeamAuthorityGrantSummarySchema = external_exports.object({
|
|
|
42580
42608
|
grant_id: uuid10,
|
|
42581
42609
|
created: external_exports.boolean()
|
|
42582
42610
|
});
|
|
42611
|
+
var softwareDeveloperTeamOccupancySummarySchema = external_exports.object({
|
|
42612
|
+
role: softwareDeveloperTeamRoleSchema,
|
|
42613
|
+
seat_id: uuid10,
|
|
42614
|
+
agent_id: uuid10,
|
|
42615
|
+
template_slug: external_exports.string(),
|
|
42616
|
+
status: external_exports.literal("live"),
|
|
42617
|
+
// false when a live agent already occupied the seat (idempotent re-install).
|
|
42618
|
+
created: external_exports.boolean()
|
|
42619
|
+
});
|
|
42620
|
+
var softwareDeveloperTeamAgentPolicySummarySchema = external_exports.object({
|
|
42621
|
+
profile: agentPolicyProfileSchema,
|
|
42622
|
+
enforcement: agentPolicyEnforcementSchema,
|
|
42623
|
+
max_autonomous_risk: autonomousRiskLevelSchema,
|
|
42624
|
+
// true when the resolved ceiling is more permissive than this design's envelope
|
|
42625
|
+
// (max_autonomous_risk >= high) and the owner acknowledged it to activate.
|
|
42626
|
+
more_permissive_than_envelope: external_exports.boolean()
|
|
42627
|
+
});
|
|
42628
|
+
var softwareDeveloperTeamTokenBudgetSummarySchema = external_exports.object({
|
|
42629
|
+
hard_cap_usd: external_exports.string().nullable(),
|
|
42630
|
+
soft_cap_usd: external_exports.string().nullable(),
|
|
42631
|
+
set_by_install: external_exports.boolean()
|
|
42632
|
+
});
|
|
42633
|
+
var softwareDeveloperTeamGithubPolicySummarySchema = external_exports.object({
|
|
42634
|
+
software_project_id: uuid10,
|
|
42635
|
+
automation_mode_ceiling: softwareAutomationModeSchema,
|
|
42636
|
+
// false when a pre-existing policy was preserved (not created by this install).
|
|
42637
|
+
created: external_exports.boolean()
|
|
42638
|
+
});
|
|
42583
42639
|
var softwareDeveloperTeamInstallOutputSchema = external_exports.object({
|
|
42584
42640
|
installed: external_exports.boolean(),
|
|
42585
42641
|
seats: external_exports.array(softwareDeveloperTeamSeatSummarySchema),
|
|
42586
42642
|
skills: external_exports.array(softwareDeveloperTeamSkillSummarySchema),
|
|
42587
42643
|
authority_profiles: external_exports.array(softwareDeveloperTeamAuthorityProfileSummarySchema),
|
|
42588
|
-
authority_grants: external_exports.array(softwareDeveloperTeamAuthorityGrantSummarySchema)
|
|
42644
|
+
authority_grants: external_exports.array(softwareDeveloperTeamAuthorityGrantSummarySchema),
|
|
42645
|
+
// DER-1264 auto-staffing additions.
|
|
42646
|
+
occupancies: external_exports.array(softwareDeveloperTeamOccupancySummarySchema),
|
|
42647
|
+
agent_policy: softwareDeveloperTeamAgentPolicySummarySchema,
|
|
42648
|
+
token_budget: softwareDeveloperTeamTokenBudgetSummarySchema,
|
|
42649
|
+
github_policy: softwareDeveloperTeamGithubPolicySummarySchema.nullable()
|
|
42589
42650
|
});
|
|
42590
42651
|
var forgeArtifactText = external_exports.string().trim().min(1).max(4e3);
|
|
42591
42652
|
var forgeArtifactList = external_exports.array(forgeArtifactText).max(50).default([]);
|
|
@@ -43533,7 +43594,7 @@ The Compass is drafted, then activated by a human through supersession.
|
|
|
43533
43594
|
order: 15,
|
|
43534
43595
|
title: "AICOS chat guide",
|
|
43535
43596
|
summary: "How the AI Chief of Staff chat works in the authenticated app shell and what it can safely do today.",
|
|
43536
|
-
version: "2026-07-04.
|
|
43597
|
+
version: "2026-07-04.11",
|
|
43537
43598
|
public: true,
|
|
43538
43599
|
audiences: ["human", "in_app_agent"],
|
|
43539
43600
|
stages: ["company_setup", "operating_rhythm"],
|
|
@@ -43601,6 +43662,8 @@ Model behavior is now explicit in the AICOS session contract. A thread can run i
|
|
|
43601
43662
|
|
|
43602
43663
|
Assistant answers render safe Markdown for headings, short lists, emphasis, code, tables, and in-app links. User messages remain plain escaped text. Links only become clickable when they target same-origin app routes such as \`/inbox\` or \`/settings\`; external, protocol, script, API-style, or traversal targets are stripped to plain text before transcript storage. When an answer includes a validated app route, the chat can surface one consent-required navigation suggestion and, if the user has enabled the local preference, open that route automatically. Navigation is never authorization; destination pages still enforce their own tenant, role, and seat checks.
|
|
43603
43664
|
|
|
43665
|
+
You can attach images to a message from the composer. {{brand}} accepts PNG, JPEG, WebP, and GIF up to 10 MB each, and up to four per message. Images are held in a tenant-scoped private store, stripped of embedded metadata such as EXIF on upload, and shown as thumbnails in your message; the panel loads each thumbnail through a short-lived signed link rather than a public URL. In the cloud lane the agent can view the image directly. Runner and MCP viewing of attached images is a scoped follow-up; today the agent still reads the accompanying text on those lanes.
|
|
43666
|
+
|
|
43604
43667
|
AICOS can also retrieve bounded summaries from prior sessions owned by the same tenant user and surface them as session-memory read models. Setup-limited users do not retrieve sensitive historical run or company-memory summaries through this path. This is a practical memory seam for AICOS continuity; it is not yet the future Company Brain, and it does not make unaccepted knowledge authoritative.
|
|
43605
43668
|
|
|
43606
43669
|
Platform allowance and BYOK state are checked before routing; an exhausted included allowance keeps AICOS in guided mode and points the user toward BYOK/manual continuation. Because the DER-1068 implementation still uses the deterministic harness, it does not create fake llm_calls rows or settle fake allowance usage; reservation/settlement belongs to the real provider call path.
|
|
@@ -44416,7 +44479,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
44416
44479
|
order: 48,
|
|
44417
44480
|
title: "CLI and MCP installation guide",
|
|
44418
44481
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
44419
|
-
version: "2026-07-04.
|
|
44482
|
+
version: "2026-07-04.11",
|
|
44420
44483
|
public: true,
|
|
44421
44484
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44422
44485
|
stages: ["company_setup", "staffing"],
|
|
@@ -45144,7 +45207,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
45144
45207
|
| \`rost_create_a_forge_authority_profile\` | \`software_factory.authority_profile.create\` | Define a Forge authority profile (a named seat capability preset). Owner-only; defaults to the read_only preset. | Tenant-admin | Call with \`{"name":"Builder","preset":"contributor"}\`. |
|
|
45145
45208
|
| \`rost_grant_forge_seat_authority\` | \`software_factory.authority.grant\` | Grant a seat a Forge authority profile on a project (seat \u2192 project \u2192 profile). Owner-only and human-gated; emits a durable authority-change event. | Tenant-admin | Call with \`{"software_project_id":"<project-id>","seat_id":"<seat-id>","authority_profile_id":"<profile-id>"}\`; non-interactive callers receive a confirmation handoff. |
|
|
45146
45209
|
| \`rost_revoke_forge_seat_authority\` | \`software_factory.authority.revoke\` | Revoke a Forge authority grant (teardown). Owner-only and human-gated. | Tenant-admin | Call with \`{"grant_id":"<grant-id>"}\`; non-interactive callers receive a confirmation handoff. |
|
|
45147
|
-
| \`rost_install_forge_developer_team\` | \`software_factory.developer_team.install\` | Install the governed Forge Developer Team
|
|
45210
|
+
| \`rost_install_forge_developer_team\` | \`software_factory.developer_team.install\` | Install AND activate the governed Forge Developer Team: Forge Lead (human) plus Planner, Builder, plan reviewer, security reviewer, QA/release, and Fold/Memory seats with draft Charters, first-party Forge Skills, and authority presets. Approving ALSO auto-staffs the 6 agent seats as live occupancies at a pull-request-only, observe-first posture (open pull requests, never merge/deploy without a human), steward-chained to the human lead, each with a signed manifest + passed sandbox dry-run; it sets a conservative default token budget (only if none) and, for a supplied project, a default pr_only GitHub automation policy (only if none \u2014 never widening a stricter one). Entitlement-gated and human-gated. | Tenant-admin | Call with \`{"steward_seat_id":"<human-steward-seat-id>"}\` \u2014 \`software_project_id\` is optional (when supplied it scopes authority grants to that project; the team installs tenant-wide either way). If the company autonomy ceiling is more permissive than the observe-first envelope, add \`{"acknowledge_autonomy_ceiling":true}\` to activate. Non-interactive callers receive a confirmation handoff. |
|
|
45148
45211
|
| \`rost_list_forge_config\` | \`software_factory.config.list\` | List active Forge configuration entries. Plain values may be returned only when they passed the non-secret guard; secret refs appear as metadata and never include the ref value. | Tenant | Call with \`{}\` or \`{"software_project_id":"<project-id>","environment":"preview"}\`. |
|
|
45149
45212
|
| \`rost_set_forge_config\` | \`software_factory.config.set\` | Human-gated config create/rotation for plain values or secret refs. Secret refs store only a vault pointer and raw secret-shaped plain values are rejected. | Tenant-admin | Call with \`{"software_project_id":"<project-id>","environment":"preview","key_name":"PUBLIC_BASE_URL","value_kind":"plain","plain_value":"https://preview.example.com"}\`. |
|
|
45150
45213
|
| \`rost_list_forge_secret_requests\` | \`software_factory.secret_request.list\` | List missing-secret requests and their approval Task ids/statuses. It returns request metadata only \u2014 no secret values and no vault refs. | Tenant | Call with \`{}\` or \`{"status":"pending"}\`. |
|
|
@@ -45154,7 +45217,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
45154
45217
|
| \`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"}\`. |
|
|
45155
45218
|
| \`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>"}\`. |
|
|
45156
45219
|
|
|
45157
|
-
The web Forge control room at \`/forge\` uses the same command path for project selection, build request creation/list/detail reads, runner capacity, configuration status, and Developer Team
|
|
45220
|
+
The web Forge control room at \`/forge\` uses the same command path for project selection, build request creation/list/detail reads, runner capacity, configuration status, and Developer Team install. The install button deliberately stages a pending confirmation before durable seats, Skills, authority grants, or live agent activation are applied; the install page states plainly that approving activates the 6 agents at a pull-request-only, observe-first posture and surfaces the company autonomy ceiling.
|
|
45158
45221
|
|
|
45159
45222
|
#### Forge GitHub App access
|
|
45160
45223
|
|
|
@@ -45746,7 +45809,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
45746
45809
|
order: 61,
|
|
45747
45810
|
title: "Signal guide",
|
|
45748
45811
|
summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
|
|
45749
|
-
version: "2026-07-
|
|
45812
|
+
version: "2026-07-04.1",
|
|
45750
45813
|
public: true,
|
|
45751
45814
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45752
45815
|
stages: ["operating_rhythm"],
|
|
@@ -45802,7 +45865,7 @@ Avoid vanity numbers, manual-only status fields, and metrics nobody can act on.
|
|
|
45802
45865
|
|
|
45803
45866
|
- Read: \`{{cli}} signal list --json\` / \`signal.list\` / \`rost_list_signals\` returns measurables with their latest reading and on/off-track state. \`signal.get\` / \`rost_get_signal\` returns one measurable's full reading history.
|
|
45804
45867
|
- Add a measurable: \`measurable.create\` (scope: seat) defines a measurable a seat owns \u2014 name, unit, direction, target, cadence. The seat owns it; readings attach to it afterward.
|
|
45805
|
-
- Record a reading: \`{{cli}} status record --measurable-id <id> --value <n>\` (\`status.record\`, scope: seat) writes a status event with the reading. This is not gated.
|
|
45868
|
+
- Record a reading: \`{{cli}} status record --measurable-id <id> --value <n>\` (\`status.record\`, scope: seat) writes a status event with the reading. This is not gated. An agent's \`status.record\` never downgrades a human-confirmed reading: a routine agent read that lands on a period a human already confirmed leaves the confirmed value and its confirmation intact (invariants #7/#8 \u2014 agents recommend; humans decide).
|
|
45806
45869
|
- Confirm a reading: \`{{cli}} signal confirm\` / \`signal.confirm_reading\` / \`rost_confirm_signal_reading\` marks a reading human-verified. \`signal.correct_reading\` / \`rost_correct_signal_reading\` overwrites a reading with a human-confirmed value.
|
|
45807
45870
|
|
|
45808
45871
|
## Run Signal without an agent
|
|
@@ -48334,7 +48397,7 @@ var COMMAND_MANIFEST = [
|
|
|
48334
48397
|
{ "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." },
|
|
48335
48398
|
{ "id": "software_factory.config.list", "namespace": "software_factory", "action": "config.list", "title": "List Forge config", "description": "List active Forge config metadata for project environments. Plain config values may be returned; secret refs are represented only as has_secret_ref.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": false }, { "name": "environment", "flag": "environment", "type": "enum", "required": false, "enumValues": ["development", "preview", "production"] }], "hasComplexInput": false, "help": "List active Forge config entries. Plain config may be shown; secret refs are represented only as metadata." },
|
|
48336
48399
|
{ "id": "software_factory.config.set", "namespace": "software_factory", "action": "config.set", "title": "Set Forge config", "description": "Create or rotate a Forge project config entry. Secret config stores only a vault ref pointer; raw values are never accepted for secret_ref entries.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": true }, { "name": "environment", "flag": "environment", "type": "enum", "required": true, "enumValues": ["development", "preview", "production"] }, { "name": "key_name", "flag": "key-name", "type": "string", "required": true }, { "name": "value_kind", "flag": "value-kind", "type": "enum", "required": true, "enumValues": ["plain", "secret_ref"] }, { "name": "plain_value", "flag": "plain-value", "type": "string", "required": false }, { "name": "vault_ref", "flag": "vault-ref", "type": "string", "required": false }], "hasComplexInput": false, "help": "Set or rotate a Forge project config key. Secret entries store only vault refs and are human-gated." },
|
|
48337
|
-
{ "id": "software_factory.developer_team.install", "namespace": "software_factory", "action": "developer_team.install", "title": "Install Forge Developer Team", "description": "Install the governed Forge Developer Team
|
|
48400
|
+
{ "id": "software_factory.developer_team.install", "namespace": "software_factory", "action": "developer_team.install", "title": "Install Forge Developer Team", "description": "Install AND activate the governed Forge Developer Team: 7 seats (1 human lead + 6 agents), first-party skills, authority presets, and a conservative token budget. Approving this ACTIVATES the 6 agents as live occupancies at a pr_only, observe-first posture: they open pull requests but never merge or deploy without a human. Entitlement-gated and human-confirmed.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "steward_seat_id", "flag": "steward-seat-id", "type": "string", "required": true }, { "name": "software_project_id", "flag": "software-project-id", "type": "string", "required": false }, { "name": "assign_skills", "flag": "assign-skills", "type": "boolean", "required": false }, { "name": "acknowledge_autonomy_ceiling", "flag": "acknowledge-autonomy-ceiling", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Install the governed Forge Developer Team template with seats, draft Charters, skills, project authority grants, and audit records. Tenant-admin and human-gated; creates no live agent occupancy." },
|
|
48338
48401
|
{ "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." },
|
|
48339
48402
|
{ "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." },
|
|
48340
48403
|
{ "id": "software_factory.github.installation.bind", "namespace": "software_factory", "action": "github.installation.bind", "title": "Bind a Forge GitHub installation", "description": "Bind a GitHub App installation and selected repositories to Forge projects from the authenticated Forge GitHub settings flow. Owner-only and human-gated; webhook payloads never supply tenant authority.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": false, "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 from the authenticated Forge GitHub settings flow. Owner-only and human-gated." },
|