@rosthq/cli 0.7.20 → 0.7.22
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,
|
|
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,EAwN3D,CAAC"}
|
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([]);
|
|
@@ -42642,8 +42703,7 @@ var softwareGithubAutomationPolicyInputSchema = external_exports.object({
|
|
|
42642
42703
|
message: "production deploy must remain human-gated"
|
|
42643
42704
|
})
|
|
42644
42705
|
}).strict();
|
|
42645
|
-
var
|
|
42646
|
-
software_project_id: uuid10,
|
|
42706
|
+
var softwareGithubConnectedRepositoryInputSchema = external_exports.object({
|
|
42647
42707
|
repository_id: external_exports.number().int().positive(),
|
|
42648
42708
|
repository_name: external_exports.string().trim().min(1).max(255),
|
|
42649
42709
|
repository_full_name: external_exports.string().trim().min(1).max(500),
|
|
@@ -42651,18 +42711,65 @@ var softwareGithubRepositoryBindingInputSchema = external_exports.object({
|
|
|
42651
42711
|
default_branch: external_exports.string().trim().min(1).max(255).default("main"),
|
|
42652
42712
|
permissions: external_exports.record(external_exports.string().min(1), external_exports.enum(["read", "write"])).default({})
|
|
42653
42713
|
}).strict();
|
|
42654
|
-
var
|
|
42714
|
+
var softwareGithubInstallationConnectInputSchema = external_exports.object({
|
|
42655
42715
|
app_slug: external_exports.string().trim().min(1).max(120).default("rost-forge"),
|
|
42656
42716
|
installation_id: external_exports.number().int().positive(),
|
|
42657
42717
|
account_login: external_exports.string().trim().min(1).max(255),
|
|
42658
42718
|
account_id: external_exports.number().int().positive(),
|
|
42659
42719
|
account_type: external_exports.string().trim().min(1).max(80),
|
|
42660
|
-
repositories: external_exports.array(
|
|
42720
|
+
repositories: external_exports.array(softwareGithubConnectedRepositoryInputSchema).min(1).max(200)
|
|
42721
|
+
}).strict();
|
|
42722
|
+
var softwareGithubInstallationConnectOutputSchema = external_exports.object({
|
|
42723
|
+
github_installation_id: uuid10,
|
|
42724
|
+
repositories_connected: external_exports.number().int().nonnegative()
|
|
42725
|
+
});
|
|
42726
|
+
var softwareGithubRepositoryBindMappingSchema = external_exports.object({
|
|
42727
|
+
repository_id: external_exports.number().int().positive(),
|
|
42728
|
+
software_project_id: uuid10
|
|
42729
|
+
}).strict();
|
|
42730
|
+
var softwareGithubInstallationBindInputSchema = external_exports.object({
|
|
42731
|
+
app_slug: external_exports.string().trim().min(1).max(120).default("rost-forge"),
|
|
42732
|
+
installation_id: external_exports.number().int().positive(),
|
|
42733
|
+
bindings: external_exports.array(softwareGithubRepositoryBindMappingSchema).min(1).max(100)
|
|
42661
42734
|
}).strict();
|
|
42662
42735
|
var softwareGithubInstallationBindOutputSchema = external_exports.object({
|
|
42663
42736
|
github_installation_id: uuid10,
|
|
42664
42737
|
repositories_bound: external_exports.number().int().nonnegative()
|
|
42665
42738
|
});
|
|
42739
|
+
var softwareGithubRepositoryUnbindInputSchema = external_exports.object({
|
|
42740
|
+
app_slug: external_exports.string().trim().min(1).max(120).default("rost-forge"),
|
|
42741
|
+
installation_id: external_exports.number().int().positive(),
|
|
42742
|
+
repository_id: external_exports.number().int().positive(),
|
|
42743
|
+
disconnect: external_exports.boolean().default(false)
|
|
42744
|
+
}).strict();
|
|
42745
|
+
var softwareGithubRepositoryUnbindOutputSchema = external_exports.object({
|
|
42746
|
+
repository_id: external_exports.number().int().positive(),
|
|
42747
|
+
status: external_exports.enum(["connected", "revoked"])
|
|
42748
|
+
});
|
|
42749
|
+
var softwareGithubInstallationListInputSchema = external_exports.object({ app_slug: external_exports.string().trim().min(1).max(120).default("rost-forge") }).strict();
|
|
42750
|
+
var softwareGithubInstallationRepositoryViewSchema = external_exports.object({
|
|
42751
|
+
repository_id: external_exports.number().int().positive(),
|
|
42752
|
+
repository_name: external_exports.string(),
|
|
42753
|
+
repository_full_name: external_exports.string(),
|
|
42754
|
+
private: external_exports.boolean(),
|
|
42755
|
+
default_branch: external_exports.string(),
|
|
42756
|
+
status: external_exports.enum(["connected", "active"]),
|
|
42757
|
+
software_project_id: uuid10.nullable(),
|
|
42758
|
+
software_project_name: external_exports.string().nullable(),
|
|
42759
|
+
software_project_slug: external_exports.string().nullable()
|
|
42760
|
+
});
|
|
42761
|
+
var softwareGithubInstallationViewSchema = external_exports.object({
|
|
42762
|
+
id: uuid10,
|
|
42763
|
+
installation_id: external_exports.number().int().positive(),
|
|
42764
|
+
account_login: external_exports.string(),
|
|
42765
|
+
account_id: external_exports.number().int().positive(),
|
|
42766
|
+
account_type: external_exports.string(),
|
|
42767
|
+
status: external_exports.enum(["active", "suspended", "revoked"]),
|
|
42768
|
+
repositories: external_exports.array(softwareGithubInstallationRepositoryViewSchema)
|
|
42769
|
+
});
|
|
42770
|
+
var softwareGithubInstallationListOutputSchema = external_exports.object({
|
|
42771
|
+
installations: external_exports.array(softwareGithubInstallationViewSchema)
|
|
42772
|
+
});
|
|
42666
42773
|
var softwareGithubAutomationPolicyUpsertOutputSchema = external_exports.object({
|
|
42667
42774
|
policy_id: uuid10,
|
|
42668
42775
|
software_project_id: uuid10,
|
|
@@ -43533,7 +43640,7 @@ The Compass is drafted, then activated by a human through supersession.
|
|
|
43533
43640
|
order: 15,
|
|
43534
43641
|
title: "AICOS chat guide",
|
|
43535
43642
|
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.
|
|
43643
|
+
version: "2026-07-04.11",
|
|
43537
43644
|
public: true,
|
|
43538
43645
|
audiences: ["human", "in_app_agent"],
|
|
43539
43646
|
stages: ["company_setup", "operating_rhythm"],
|
|
@@ -43601,6 +43708,8 @@ Model behavior is now explicit in the AICOS session contract. A thread can run i
|
|
|
43601
43708
|
|
|
43602
43709
|
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
43710
|
|
|
43711
|
+
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.
|
|
43712
|
+
|
|
43604
43713
|
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
43714
|
|
|
43606
43715
|
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 +44525,7 @@ External connectors are being rolled out provider by provider, conservatively (r
|
|
|
44416
44525
|
order: 48,
|
|
44417
44526
|
title: "CLI and MCP installation guide",
|
|
44418
44527
|
summary: "Install the public CLI, register remote token-backed MCP clients, and find the full command and tool catalog.",
|
|
44419
|
-
version: "2026-07-04.
|
|
44528
|
+
version: "2026-07-04.14",
|
|
44420
44529
|
public: true,
|
|
44421
44530
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44422
44531
|
stages: ["company_setup", "staffing"],
|
|
@@ -45144,17 +45253,18 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
|
|
|
45144
45253
|
| \`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
45254
|
| \`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
45255
|
| \`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
|
|
45256
|
+
| \`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
45257
|
| \`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
45258
|
| \`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
45259
|
| \`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"}\`. |
|
|
45151
45260
|
| \`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"}\`. |
|
|
45152
45261
|
| \`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. |
|
|
45153
|
-
| \`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"]}\`. |
|
|
45262
|
+
| \`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. The allowed-actions and human-gated-actions lists are stored server-side as structured JSON arrays. 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"]}\`. |
|
|
45154
45263
|
| \`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"}\`. |
|
|
45264
|
+
| \`rost_list_forge_github_installations\` | \`software_factory.github.installation.list\` | List connected GitHub App installations and each repository's bind state (connected or active) with the Forge project it maps to. Read-only. | Tenant | Call with \`{}\`; a \`connected\` repository is verified but not yet bound to a project. |
|
|
45155
45265
|
| \`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
45266
|
|
|
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
|
|
45267
|
+
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
45268
|
|
|
45159
45269
|
#### Forge GitHub App access
|
|
45160
45270
|
|
|
@@ -45162,7 +45272,7 @@ Forge repository access is through a tenant-bound GitHub App installation, not t
|
|
|
45162
45272
|
|
|
45163
45273
|
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.
|
|
45164
45274
|
|
|
45165
|
-
Tenant GitHub App
|
|
45275
|
+
Tenant GitHub App connect and bind are intentionally not CLI or MCP mutation tools; only the read \`software_factory.github.installation.list\` is exposed. Start at \`/forge/settings/github\`. Connect and bind are decoupled (DER-1281): user-scoped GitHub App authorization verifies the repositories you administer server-side and records them as **connected** (unbound, no project) via \`software_factory.github.installation.connect\` \u2014 this persists on any successful ownership proof, not only the one-shot post-install redirect, so a missed setup redirect is no longer fatal (a persistent "Verify ownership & add repositories" action re-runs it any time). Binding is a separate, always-available step: \`software_factory.github.installation.bind\` maps a connected repository to a Forge project (no GitHub re-authorization), and \`software_factory.github.repository.unbind\` returns a repository to connected/unbound (re-bindable) or disconnects it. Token minting and issue intake only ever see \`active\` (bound) repositories, so an unbound repository never enters automation.
|
|
45166
45276
|
|
|
45167
45277
|
The Forge GitHub App itself is org-owned. App private key, webhook secret, and client secret values are platform-owned ROST operator credentials stored through the vault's reserved ROST system namespace, not through a customer tenant namespace or a tenant UUID deployment variable. Manifest conversion and manual secret storage also require the app-level \`GITHUB_APP_OPERATOR_EMAILS\` allowlist, which should contain only approved ROST platform operator emails. Deployment config carries only refs (\`GITHUB_APP_PRIVATE_KEY_REF\`, \`GITHUB_APP_WEBHOOK_SECRET_REF\`, \`GITHUB_APP_CLIENT_SECRET_REF\`); raw secret env vars are local/legacy compatibility only. The dogfood app is \`ROST Forge\` under \`agenticoperatingsystem\` with App ID \`4208495\` and Client ID \`Iv23liImH7qlBvXYQ0Wx\`. The base app omits \`administration\` and \`workflows\`; elevated repo creation or workflow mutation needs a separate human-approved power path.
|
|
45168
45278
|
|
|
@@ -45746,7 +45856,7 @@ Agents can suggest commitments and report progress. They should not create a new
|
|
|
45746
45856
|
order: 61,
|
|
45747
45857
|
title: "Signal guide",
|
|
45748
45858
|
summary: "How to define and read measurables so the company runs on evidence instead of status theater.",
|
|
45749
|
-
version: "2026-07-
|
|
45859
|
+
version: "2026-07-04.1",
|
|
45750
45860
|
public: true,
|
|
45751
45861
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
45752
45862
|
stages: ["operating_rhythm"],
|
|
@@ -45802,7 +45912,7 @@ Avoid vanity numbers, manual-only status fields, and metrics nobody can act on.
|
|
|
45802
45912
|
|
|
45803
45913
|
- 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
45914
|
- 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.
|
|
45915
|
+
- 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
45916
|
- 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
45917
|
|
|
45808
45918
|
## Run Signal without an agent
|
|
@@ -48334,11 +48444,14 @@ var COMMAND_MANIFEST = [
|
|
|
48334
48444
|
{ "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
48445
|
{ "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
48446
|
{ "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
|
|
48447
|
+
{ "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
48448
|
{ "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
48449
|
{ "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
|
-
{ "id": "software_factory.github.installation.bind", "namespace": "software_factory", "action": "github.installation.bind", "title": "Bind
|
|
48450
|
+
{ "id": "software_factory.github.installation.bind", "namespace": "software_factory", "action": "github.installation.bind", "title": "Bind Forge GitHub repositories to projects", "description": "Bind already-connected GitHub repositories to Forge projects. Owner-only and human-gated; operates on repositories already verified and connected in this tenant, so no GitHub re-authorization is required. Available any time, add or re-map bindings.", "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 }], "hasComplexInput": true, "help": "Bind already-connected GitHub repositories to Forge projects from the Forge GitHub settings flow. Owner-only and human-gated; no GitHub re-authorization required." },
|
|
48451
|
+
{ "id": "software_factory.github.installation.connect", "namespace": "software_factory", "action": "github.installation.connect", "title": "Connect a Forge GitHub installation", "description": "Record a proven GitHub App installation and its verified repositories as connected (unbound) so they can be bound to Forge projects later. Owner-only and human-gated; starts from the authenticated Forge GitHub settings flow. Idempotent \u2014 re-connecting reconciles metadata and never unbinds an already-bound repository.", "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": "Record a verified GitHub App installation and its repositories as connected (unbound) so they can be bound to Forge projects later. Owner-only and human-gated." },
|
|
48452
|
+
{ "id": "software_factory.github.installation.list", "namespace": "software_factory", "action": "github.installation.list", "title": "List Forge GitHub installations", "description": "List connected GitHub App installations and their repositories with bind state (connected or active) and the Forge project each bound repository maps to. Read-only; requires the Forge add-on.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "app_slug", "flag": "app-slug", "type": "string", "required": false }], "hasComplexInput": false, "help": "List connected GitHub App installations and each repository's bind state (connected or active) with the Forge project it maps to. Read-only." },
|
|
48341
48453
|
{ "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." },
|
|
48454
|
+
{ "id": "software_factory.github.repository.unbind", "namespace": "software_factory", "action": "github.repository.unbind", "title": "Unbind a Forge GitHub repository", "description": "Remove a GitHub repository's Forge project binding. By default the repository stays connected (unbound) and can be re-bound later; pass disconnect to remove it entirely. Owner-only and human-gated.", "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": "repository_id", "flag": "repository-id", "type": "integer", "required": true }, { "name": "disconnect", "flag": "disconnect", "type": "boolean", "required": false }], "hasComplexInput": false, "help": "Remove a GitHub repository's Forge project binding; the repository stays connected for re-binding unless disconnect is set. Owner-only and human-gated." },
|
|
48342
48455
|
{ "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." },
|
|
48343
48456
|
{ "id": "software_factory.project.create", "namespace": "software_factory", "action": "project.create", "title": "Create a Forge project", "description": "Create an active Forge software project before binding repositories or opening build requests. Tenant-admin, human-gated, and entitlement-gated.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "name", "flag": "name", "type": "string", "required": true }, { "name": "slug", "flag": "slug", "type": "string", "required": false }, { "name": "base_branch", "flag": "base-branch", "type": "string", "required": false }, { "name": "repo_ref", "flag": "repo-ref", "type": "string", "required": false }], "hasComplexInput": false, "help": "Create an active Forge software project before binding repositories or opening build requests. Tenant-admin and human-gated; requires the Forge add-on." },
|
|
48344
48457
|
{ "id": "software_factory.project.list", "namespace": "software_factory", "action": "project.list", "title": "List Forge projects", "description": "List active Forge software projects so a tenant can choose a project for build requests, GitHub repository bindings, and config. Read-only and entitlement-gated.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List active Forge software projects so a tenant can choose a project for build requests, GitHub repository bindings, and config. Read-only; requires the Forge add-on." },
|