@rosthq/cli 0.7.0 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -41877,7 +41877,7 @@ The Compass is drafted, then activated by a human through supersession.
41877
41877
  order: 15,
41878
41878
  title: "AICOS chat guide",
41879
41879
  summary: "How the AI Chief of Staff chat works in the authenticated app shell and what it can safely do today.",
41880
- version: "2026-07-02.3",
41880
+ version: "2026-07-02.6",
41881
41881
  public: true,
41882
41882
  audiences: ["human", "in_app_agent"],
41883
41883
  stages: ["company_setup", "operating_rhythm"],
@@ -41921,10 +41921,18 @@ You can reopen prior threads or start a new one. Session history is stored in te
41921
41921
 
41922
41922
  Each turn carries server-normalized page context: route template, current path, safe search state, selected seat or object ids when authorized, and onboarding state when relevant. The server derives tenant and user authority from the authenticated session. Client-supplied tenant context is never accepted as authority.
41923
41923
 
41924
- The current chat harness shows the effective lane and model. The initial lane is cloud, with a deterministic harness response while live model execution, action execution, and runner execution waves land. The contract is intentionally backend-neutral: future cloud and runner turns use the same sessions, messages, lane labels, sources, and linked artifacts.
41924
+ The current chat harness shows the effective lane and model. Cloud is the default and remains the enforced lane during onboarding, even if a post-onboarding lane has been selected. After onboarding, an owner or admin can select cloud, runner, or MCP only when the server says that lane is ready. Lane changes update the governed AICOS agent seat and write an append-only audit event; the browser never decides tenant authority or runner/MCP readiness.
41925
+
41926
+ Runner mode uses the same AICOS sessions and transcript. A web turn in runner mode records the user's message, queues a governed AICOS work order for the live AICOS agent, links that work order to the assistant message, and leaves the transcript visible while the paired runner claims and reports through the normal runner lane. A runner must be paired, execute-ready, and backed by the live AICOS agent before it can be selected.
41927
+
41928
+ MCP mode uses the existing tenant-authorized MCP surfaces. It requires an active seat-scoped MCP token for the AICOS seat and does not grant hidden tenant-admin access or run browser-side MCP tool calls. Users operate MCP AICOS from their authorized agent interface; the web chat remains the same readable thread surface.
41925
41929
 
41926
41930
  Model behavior is now explicit in the AICOS session contract. A thread can run in **Auto** or use a pinned compatible model from the guided catalog. Auto chooses a fast tier for short low-risk turns, the balanced default for normal operating help, and a higher-reasoning tier for onboarding synthesis or large context. The panel shows the effective model, disables lower-context choices once the active thread outgrows them, and tells the user to start a new session for those models. Session context is estimated and compacted into a durable summary when it crosses the configured threshold; raw messages remain in history, but future model calls can use the summary rather than resending the whole thread. 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.
41927
41931
 
41932
+ During onboarding, the deterministic harness may execute only explicit low-risk draft actions. In the Responsibility Graph step, a user with setup/action authority can ask AICOS to create one named draft seat per turn; the seat stays vacant, is traceable to the AICOS message through artifact sources, and still needs human review before staffing, Charters, manifests, or go-live. Compass and Charter help remains draft guidance and clarifying questions until the live drafting planner lands. AICOS never silently finishes onboarding, approves Compass or Charter content, signs manifests, goes live, stores credentials, changes autonomy policy, or invites external people; those actions remain human-confirmed.
41933
+
41934
+ AICOS posture is resolved on the server from the current user's AICOS access scope plus the tenant's Company guardrails. **Report-only** can read, explain, and draft guidance, but it cannot mutate setup or operating state. **Balanced** can perform narrow low-risk internal draft/setup actions and stops at human gates. **High autonomy** can perform allowed internal low-risk actions without changing the hard prohibitions: AICOS still cannot approve its own Charter or manifest, handle credentials, send externally, spend money, perform destructive/admin changes, go live, expand policy/access, or receive hidden sensitive data.
41935
+
41928
41936
  AICOS grounds answers from two source classes before producing user-visible setup or operating guidance:
41929
41937
 
41930
41938
  - **Reference documents** \u2014 public {{brand}} guides such as this chat guide, onboarding guidance, the Responsibility Graph playbook, tool-access guidance, and confirmation guidance. AICOS retrieves the narrowest relevant guide before setup, Charter, Signal, Friction, Cascade, Sync, tool-access, or onboarding advice.
@@ -44600,7 +44608,7 @@ Every notification should include the seat, cause, evidence, and requested decis
44600
44608
  order: 75,
44601
44609
  title: "Local runner guide",
44602
44610
  summary: "How local agent sessions and runner surfaces should operate through {{brand}} without bypassing Charters or audit.",
44603
- version: "2026-07-02.1",
44611
+ version: "2026-07-02.2",
44604
44612
  public: true,
44605
44613
  audiences: ["human", "cli", "mcp", "in_app_agent"],
44606
44614
  stages: ["staffing", "operating_rhythm"],
@@ -44632,7 +44640,7 @@ Use Local Runner when a Seat should run on a machine you control. Install it fro
44632
44640
 
44633
44641
  Recommended paths:
44634
44642
 
44635
- - **Always-on host:** \`{{cli}} runner install-service --name <runner-name> --execute\` installs a background service (macOS launchd user agent) that keeps the runner online across reboots. Manage it with \`{{cli}} runner start|stop|restart|status|logs|uninstall --name <runner-name>\`.
44643
+ - **Always-on host:** \`{{cli}} runner install-service --name <runner-name> --execute\` installs a background service (macOS launchd user agent, \`user/<uid>\` domain) that keeps the runner online. Manage it with \`{{cli}} runner start|stop|restart|status|logs|uninstall --name <runner-name>\`. On macOS this loads reliably when the runner user is logged in at the console; on a purely headless SSH box where that user is not at the console, run \`{{cli}} runner serve\` under a process supervisor instead.
44636
44644
  - **Manual smoke:** \`{{cli}} runner serve --once\` heartbeats once and exits; \`{{cli}} runner serve --execute\` claims and executes runner work orders while it runs.
44637
44645
 
44638
44646
  Two ways to authenticate and pair \u2014 both first-class, an agent can drive either entirely from the terminal:
@@ -49122,10 +49130,16 @@ async function pairIfNeeded(client, fetchImpl, appUrl2, config2, io) {
49122
49130
  `);
49123
49131
  return existing;
49124
49132
  }
49125
- if (!client) {
49126
- throw new Error(`No paired runner state at ${config2.stateFile}. Run with a CLI login once to pair this runner before starting without a CLI session.`);
49133
+ let userCode;
49134
+ if (config2.userCode !== void 0) {
49135
+ userCode = config2.userCode;
49136
+ } else if (client) {
49137
+ userCode = await startPairing(client, config2);
49138
+ } else {
49139
+ throw new Error(
49140
+ `No paired runner state at ${config2.stateFile}. Provide --user-code <code> from Settings > Runners (Add a runner), or run \`${cliBrand.binName} login --device\` once to pair this runner.`
49141
+ );
49127
49142
  }
49128
- const userCode = config2.userCode ?? await startPairing(client, config2);
49129
49143
  const claim = await post2(fetchImpl, appUrl2, "/api/runner/pairing/claim", { user_code: userCode });
49130
49144
  const runnerSecret = claim.json.runner_secret;
49131
49145
  const runnerId = claim.json.runner_id;
@@ -49264,10 +49278,12 @@ async function spawnRunnerTurn(appUrl2, workOrder, runtime) {
49264
49278
  task_id: workOrder.task_id ?? null,
49265
49279
  seat: workOrder.seat ?? null,
49266
49280
  charter: workOrder.charter ?? null,
49267
- permission_manifest: workOrder.permission_manifest ?? null
49281
+ permission_manifest: workOrder.permission_manifest ?? null,
49282
+ aicos: workOrder.aicos ?? null
49268
49283
  };
49284
+ const hasAicosContext = typeof workOrder.aicos === "object" && workOrder.aicos !== null;
49269
49285
  const prompt = [
49270
- `Load your ${cliBrand.name} context, report one read-only status, and stop.`,
49286
+ hasAicosContext ? `Load your ${cliBrand.name} context, answer the AICOS user turn using only seat-authorized context and tools, and stop.` : `Load your ${cliBrand.name} context, report one read-only status, and stop.`,
49271
49287
  "Do not call external systems or mutating tools.",
49272
49288
  `Claimed work order context: ${JSON.stringify(context).slice(0, 8e3)}`
49273
49289
  ].join("\n");
@@ -49679,10 +49695,10 @@ function serviceLabel(safeName) {
49679
49695
  return `com.${cliBrand.binName}.runner.${safeName}`;
49680
49696
  }
49681
49697
  function domainTarget(uid) {
49682
- return `gui/${uid}`;
49698
+ return `user/${uid}`;
49683
49699
  }
49684
49700
  function serviceTarget(uid, label) {
49685
- return `gui/${uid}/${label}`;
49701
+ return `user/${uid}/${label}`;
49686
49702
  }
49687
49703
  async function bootoutQuietly(exec, uid, plistPath) {
49688
49704
  try {