@rosthq/cli 0.7.51 → 0.7.52
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/generator/groups.d.ts.map +1 -1
- package/dist/index.js +39 -3
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/generator/groups.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAM1D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKhF,CAAC;
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/generator/groups.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAM1D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAKhF,CAAC;AAonCF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA2OjD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -41339,7 +41339,9 @@ var graphNodeSchema = external_exports.object({
|
|
|
41339
41339
|
}).strict().nullable(),
|
|
41340
41340
|
signal_state: rollupStateSchema,
|
|
41341
41341
|
cascade_state: rollupStateSchema,
|
|
41342
|
-
open_task_count: external_exports.number().int().nonnegative()
|
|
41342
|
+
open_task_count: external_exports.number().int().nonnegative(),
|
|
41343
|
+
unassigned: external_exports.boolean(),
|
|
41344
|
+
is_peer: external_exports.boolean()
|
|
41343
41345
|
}).strict();
|
|
41344
41346
|
var graphEdgeSchema = external_exports.object({
|
|
41345
41347
|
parent_seat_id: uuidSchema11,
|
|
@@ -44516,7 +44518,7 @@ Treat AICOS as a coordinator over the operating system. It can become more usefu
|
|
|
44516
44518
|
order: 20,
|
|
44517
44519
|
title: "Responsibility Graph playbook",
|
|
44518
44520
|
summary: "How to build a functions-first graph with seats, owners, Stewards, vacancies, and clean authority.",
|
|
44519
|
-
version: "2026-07-
|
|
44521
|
+
version: "2026-07-06.2",
|
|
44520
44522
|
public: true,
|
|
44521
44523
|
audiences: ["human", "cli", "mcp", "in_app_agent"],
|
|
44522
44524
|
stages: ["graph_design", "staffing"],
|
|
@@ -44549,6 +44551,23 @@ The Responsibility Graph is the company's operating structure. It answers who ow
|
|
|
44549
44551
|
- Give every agent seat a human Steward chain.
|
|
44550
44552
|
- Attach goals, measurables, and tasks to seats, not directly to people.
|
|
44551
44553
|
|
|
44554
|
+
## Single-root chart and parent resolution
|
|
44555
|
+
|
|
44556
|
+
The graph always resolves to a single canonical root seat (Founder & CEO in the standard shape) so the web canvas, CLI \`rost graph show\`, and MCP \`graph.get\` all agree on the same structure. The parent of each seat is derived deterministically:
|
|
44557
|
+
|
|
44558
|
+
1. An explicit parent seat id, when it names a live seat in the same chart.
|
|
44559
|
+
2. The seat at the ltree parent path, when one exists.
|
|
44560
|
+
3. The steward seat, when the seat is not AICOS and the steward is a live non-self seat.
|
|
44561
|
+
4. Otherwise the seat has no parent.
|
|
44562
|
+
|
|
44563
|
+
AICOS always stays a peer of the root (never a child of its steward) and never appears as an orphan in the unassigned set \u2014 this is intentional and not a data-quality issue.
|
|
44564
|
+
|
|
44565
|
+
Seats that do not reach the single root through the resolved parent chain are listed as **unassigned** (with \`unassigned: true\` and no incoming edge). Each \`graph.get\` node carries an \`unassigned\` boolean, and the CLI \`rost graph show\` output prints unassigned seats under a separate \`Unassigned\` section so operators can see which parts of the chart need attention. The web canvas parks unassigned seats at the bottom of the chart instead of inventing fake root edges.
|
|
44566
|
+
|
|
44567
|
+
## Forge Developer Team seats are pinned
|
|
44568
|
+
|
|
44569
|
+
Seats under \`forge.developer_team\` are resolved by Forge build dispatch using their exact path, so they cannot be reparented or merged from the graph, CLI, or MCP \u2014 moving a seat (or an ancestor whose subtree holds them) would eject them from dispatch, and no command can restore the path. To change who is accountable for one of these seats, update its steward with \`agent_setup.update\`; the reporting path stays fixed. To stand the team down, use the governed Forge team teardown flow, not a merge or decommission.
|
|
44570
|
+
|
|
44552
44571
|
## Add an agent from the graph
|
|
44553
44572
|
|
|
44554
44573
|
Agent creation is a first-class graph action. From a seat in the Responsibility Graph you can open the agent setup wizard with the seat already chosen as the parent:
|
|
@@ -44619,7 +44638,7 @@ Each seat needs:
|
|
|
44619
44638
|
|
|
44620
44639
|
Read before you write. Load the whole graph first so seat ids, parents, and occupancy are known.
|
|
44621
44640
|
|
|
44622
|
-
- CLI: \`{{cli}} command graph.get --json '{}'\` (scope: tenant). Returns seats, edges, root, occupants, and
|
|
44641
|
+
- CLI: \`{{cli}} command graph.get --json '{}'\` (scope: tenant). Returns seats, edges, root, occupants, status rollups, and unassigned-seat flags. The output includes a single \`root_seat_id\`, exactly one \`is_root: true\` node, and unassigned seats listed under their own section with a data-quality note.
|
|
44623
44642
|
- MCP tool: \`rost_get_responsibility_graph\` with \`{}\`; or read the resource \`rost://graph\` (tenant-admin token).
|
|
44624
44643
|
- One seat: \`{{cli}} command seat.get --json '{"seat_id":"<seat-id>"}'\` or \`rost_get_seat_detail\`.
|
|
44625
44644
|
|
|
@@ -49864,10 +49883,27 @@ function renderGraph(output) {
|
|
|
49864
49883
|
`root_seat_id=${field(record2, "root_seat_id")}`,
|
|
49865
49884
|
"seat_id parent_seat_id type status name"
|
|
49866
49885
|
];
|
|
49886
|
+
const assigned = [];
|
|
49887
|
+
const unassigned = [];
|
|
49867
49888
|
for (const node of nodes) {
|
|
49868
49889
|
const row = asRecord(node);
|
|
49890
|
+
if (row.unassigned) {
|
|
49891
|
+
unassigned.push(row);
|
|
49892
|
+
} else {
|
|
49893
|
+
assigned.push(row);
|
|
49894
|
+
}
|
|
49895
|
+
}
|
|
49896
|
+
for (const row of assigned) {
|
|
49869
49897
|
lines.push(`${field(row, "seat_id")} ${field(row, "parent_seat_id")} ${field(row, "seat_type")} ${field(row, "status")} ${field(row, "name")}`);
|
|
49870
49898
|
}
|
|
49899
|
+
if (unassigned.length > 0) {
|
|
49900
|
+
lines.push("");
|
|
49901
|
+
lines.push("Unassigned (no path to root \u2014 data-quality signal)");
|
|
49902
|
+
lines.push("seat_id parent_seat_id type status name");
|
|
49903
|
+
for (const row of unassigned) {
|
|
49904
|
+
lines.push(`${field(row, "seat_id")} ${field(row, "parent_seat_id")} ${field(row, "seat_type")} ${field(row, "status")} ${field(row, "name")}`);
|
|
49905
|
+
}
|
|
49906
|
+
}
|
|
49871
49907
|
return lines.join("\n");
|
|
49872
49908
|
}
|
|
49873
49909
|
function renderSeatList(output) {
|