@h-rig/cli 0.0.6-alpha.90 → 0.0.6-alpha.92

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.
Files changed (118) hide show
  1. package/README.md +18 -19
  2. package/dist/bin/build-rig-binaries.js +22 -10
  3. package/dist/bin/rig.d.ts +71 -1
  4. package/dist/bin/rig.js +15078 -11169
  5. package/dist/config/rig-default-config.yml +5 -0
  6. package/dist/src/app/drone-ui.d.ts +11 -14
  7. package/dist/src/app/drone-ui.js +70 -86
  8. package/dist/src/commands/_async-ui.d.ts +1 -4
  9. package/dist/src/commands/_async-ui.js +9 -111
  10. package/dist/src/commands/_cli-format.d.ts +16 -9
  11. package/dist/src/commands/_cli-format.js +167 -295
  12. package/dist/src/commands/_connection-state.d.ts +11 -1
  13. package/dist/src/commands/_connection-state.js +50 -5
  14. package/dist/src/commands/_doctor-checks.d.ts +0 -6
  15. package/dist/src/commands/_doctor-checks.js +79 -382
  16. package/dist/src/commands/_help-catalog.d.ts +1 -1
  17. package/dist/src/commands/_help-catalog.js +217 -157
  18. package/dist/src/commands/_inprocess-services.d.ts +33 -0
  19. package/dist/src/commands/_inprocess-services.js +102 -0
  20. package/dist/src/commands/_json-output.js +4 -0
  21. package/dist/src/commands/_lazy-reconcile.d.ts +34 -0
  22. package/dist/src/commands/_lazy-reconcile.js +102 -0
  23. package/dist/src/commands/_paths.js +1 -1
  24. package/dist/src/commands/_pi-frontend.d.ts +18 -10
  25. package/dist/src/commands/_pi-frontend.js +37 -715
  26. package/dist/src/commands/_pi-install.js +18 -36
  27. package/dist/src/commands/_policy.d.ts +1 -1
  28. package/dist/src/commands/_policy.js +56 -15
  29. package/dist/src/commands/_run-bridge.d.ts +114 -0
  30. package/dist/src/commands/_run-bridge.js +387 -0
  31. package/dist/src/commands/_run-diagnostics.d.ts +9 -0
  32. package/dist/src/commands/_run-diagnostics.js +51 -0
  33. package/dist/src/commands/_run-driver-helpers.d.ts +8 -81
  34. package/dist/src/commands/_run-driver-helpers.js +79 -283
  35. package/dist/src/commands/_run-projection.d.ts +50 -0
  36. package/dist/src/commands/_run-projection.js +349 -0
  37. package/dist/src/commands/_run-subcommands.d.ts +3 -0
  38. package/dist/src/commands/_run-subcommands.js +31 -0
  39. package/dist/src/commands/_spinner.js +1 -1
  40. package/dist/src/commands/agent.d.ts +1 -1
  41. package/dist/src/commands/agent.js +8559 -239
  42. package/dist/src/commands/dist.d.ts +1 -1
  43. package/dist/src/commands/dist.js +27 -19
  44. package/dist/src/commands/doctor.d.ts +1 -1
  45. package/dist/src/commands/doctor.js +93 -475
  46. package/dist/src/commands/github.d.ts +1 -1
  47. package/dist/src/commands/github.js +113 -387
  48. package/dist/src/commands/inbox.d.ts +22 -24
  49. package/dist/src/commands/inbox.js +420 -691
  50. package/dist/src/commands/init.d.ts +6 -16
  51. package/dist/src/commands/init.js +334 -971
  52. package/dist/src/commands/inspect.d.ts +19 -2
  53. package/dist/src/commands/inspect.js +644 -610
  54. package/dist/src/commands/pi.d.ts +1 -1
  55. package/dist/src/commands/plugin.d.ts +1 -1
  56. package/dist/src/commands/plugin.js +486 -7
  57. package/dist/src/commands/profile-and-review.d.ts +1 -1
  58. package/dist/src/commands/profile-and-review.js +94 -56
  59. package/dist/src/commands/queue.js +1 -21
  60. package/dist/src/commands/remote.d.ts +1 -1
  61. package/dist/src/commands/remote.js +837 -14
  62. package/dist/src/commands/repo-git-harness.d.ts +1 -1
  63. package/dist/src/commands/repo-git-harness.js +57 -14
  64. package/dist/src/commands/run.d.ts +20 -2
  65. package/dist/src/commands/run.js +17579 -1759
  66. package/dist/src/commands/server.d.ts +2 -6
  67. package/dist/src/commands/server.js +141 -723
  68. package/dist/src/commands/setup.d.ts +1 -1
  69. package/dist/src/commands/setup.js +102 -484
  70. package/dist/src/commands/stats.d.ts +13 -10
  71. package/dist/src/commands/stats.js +689 -761
  72. package/dist/src/commands/task-run-driver.d.ts +50 -88
  73. package/dist/src/commands/task-run-driver.js +116 -2717
  74. package/dist/src/commands/task.d.ts +34 -13
  75. package/dist/src/commands/task.js +668 -2523
  76. package/dist/src/commands/test.d.ts +1 -1
  77. package/dist/src/commands/triage.d.ts +11 -0
  78. package/dist/src/commands/triage.js +227 -0
  79. package/dist/src/commands/workspace.d.ts +1 -1
  80. package/dist/src/commands.d.ts +0 -16
  81. package/dist/src/commands.js +16657 -12250
  82. package/dist/src/index.js +16528 -12497
  83. package/dist/src/launcher.js +4 -0
  84. package/dist/src/operator-cli.d.ts +2 -0
  85. package/dist/src/operator-cli.js +17837 -0
  86. package/dist/src/operator-entry.d.ts +1 -0
  87. package/dist/src/operator-entry.js +3 -0
  88. package/package.json +18 -12
  89. package/dist/src/app/board.d.ts +0 -23
  90. package/dist/src/app/board.js +0 -1786
  91. package/dist/src/app/theme.d.ts +0 -47
  92. package/dist/src/app/theme.js +0 -150
  93. package/dist/src/commands/_authority-runs.d.ts +0 -22
  94. package/dist/src/commands/_authority-runs.js +0 -110
  95. package/dist/src/commands/_operator-surface.d.ts +0 -34
  96. package/dist/src/commands/_operator-surface.js +0 -220
  97. package/dist/src/commands/_operator-view.d.ts +0 -30
  98. package/dist/src/commands/_operator-view.js +0 -1070
  99. package/dist/src/commands/_preflight.d.ts +0 -22
  100. package/dist/src/commands/_preflight.js +0 -540
  101. package/dist/src/commands/_run-replay.d.ts +0 -24
  102. package/dist/src/commands/_run-replay.js +0 -142
  103. package/dist/src/commands/_server-client.d.ts +0 -186
  104. package/dist/src/commands/_server-client.js +0 -681
  105. package/dist/src/commands/_snapshot-upload.d.ts +0 -39
  106. package/dist/src/commands/_snapshot-upload.js +0 -455
  107. package/dist/src/commands/_task-picker.d.ts +0 -9
  108. package/dist/src/commands/_task-picker.js +0 -201
  109. package/dist/src/commands/browser.d.ts +0 -65
  110. package/dist/src/commands/browser.js +0 -1173
  111. package/dist/src/commands/connect.d.ts +0 -7
  112. package/dist/src/commands/connect.js +0 -419
  113. package/dist/src/commands/inspector.d.ts +0 -3
  114. package/dist/src/commands/inspector.js +0 -263
  115. package/dist/src/commands/task-report-bug.d.ts +0 -19
  116. package/dist/src/commands/task-report-bug.js +0 -1281
  117. package/dist/src/report-bug.d.ts +0 -44
  118. package/dist/src/report-bug.js +0 -260
@@ -1,5 +1,5 @@
1
1
  import { type RunnerContext } from "../runner";
2
- import type { CommandOutcome } from "@rig/runtime/control-plane/runtime/types";
2
+ import type { CommandOutcome } from "@rig/runtime";
3
3
  export declare function executeRepo(context: RunnerContext, args: string[]): Promise<CommandOutcome>;
4
4
  export declare function executeGit(context: RunnerContext, args: string[]): Promise<CommandOutcome>;
5
5
  export declare function executeHarness(context: RunnerContext, args: string[]): Promise<CommandOutcome>;
@@ -100,23 +100,67 @@ function withMutedConsole(mute, fn) {
100
100
  }
101
101
 
102
102
  // packages/cli/src/commands/_policy.ts
103
- import { appendFileSync, mkdirSync } from "fs";
103
+ import { appendFileSync, existsSync, mkdirSync, readFileSync } from "fs";
104
+ import { resolve as resolve2 } from "path";
105
+
106
+ // packages/cli/src/commands/_paths.ts
104
107
  import { resolve } from "path";
105
- import { evaluate as evaluate2, loadPolicy as loadPolicy2, resolveAction as resolveAction2 } from "@rig/runtime/control-plane/runtime/guard";
106
- import { resolveHarnessPaths } from "@rig/runtime/control-plane/native/utils";
108
+ import { resolveMonorepoRoot } from "@rig/runtime/layout";
109
+ function resolveControlPlaneHostStateRoot(projectRoot) {
110
+ return resolve(projectRoot, ".rig");
111
+ }
112
+ function resolveControlPlaneHostLogsDir(projectRoot) {
113
+ return resolve(resolveControlPlaneHostStateRoot(projectRoot), "logs");
114
+ }
115
+ function resolveControlPlaneDefinitionRoot(projectRoot) {
116
+ return resolve(projectRoot, "rig");
117
+ }
118
+
119
+ // packages/cli/src/commands/_policy.ts
120
+ function loadPolicyFile(projectRoot) {
121
+ const policyPath = resolve2(resolveControlPlaneDefinitionRoot(projectRoot), "policy", "policy.json");
122
+ if (!existsSync(policyPath)) {
123
+ return { mode: "observe", rules: [] };
124
+ }
125
+ try {
126
+ const parsed = JSON.parse(readFileSync(policyPath, "utf8"));
127
+ const mode = parsed.mode === "off" || parsed.mode === "observe" || parsed.mode === "enforce" ? parsed.mode : "observe";
128
+ const rules = Array.isArray(parsed.rules) ? parsed.rules.filter((value) => Boolean(value && typeof value === "object" && !Array.isArray(value))).map((value, index) => ({
129
+ id: typeof value.id === "string" && value.id.trim() ? value.id.trim() : `rule-${index + 1}`,
130
+ reason: typeof value.reason === "string" && value.reason.trim() ? value.reason.trim() : undefined,
131
+ match: typeof value.match === "string" && value.match.trim() ? value.match.trim() : undefined,
132
+ command: typeof value.command === "string" && value.command.trim() ? value.command.trim() : undefined
133
+ })) : [];
134
+ return { mode, rules };
135
+ } catch {
136
+ return { mode: "observe", rules: [] };
137
+ }
138
+ }
139
+ function matchingRules(command, rules) {
140
+ return rules.filter((rule) => {
141
+ const rawPattern = rule.command ?? rule.match;
142
+ if (!rawPattern)
143
+ return false;
144
+ try {
145
+ return new RegExp(rawPattern, "i").test(command);
146
+ } catch {
147
+ return command.includes(rawPattern);
148
+ }
149
+ });
150
+ }
107
151
  function resolveEffectivePolicyMode(context) {
108
152
  const envMode = process.env.RIG_BASH_MODE;
109
153
  if (envMode === "off" || envMode === "observe" || envMode === "enforce") {
110
154
  return envMode;
111
155
  }
112
- return context.policyMode || loadPolicy2(context.projectRoot).mode;
156
+ return context.policyMode ?? loadPolicyFile(context.projectRoot).mode;
113
157
  }
114
158
  function appendControlledBashAudit(context, mode, command, args, matchedRuleIds, action) {
115
159
  if (mode === "off") {
116
160
  return;
117
161
  }
118
- const logsDir = resolveHarnessPaths(context.projectRoot).logsDir;
119
- const logFile = resolve(logsDir, "controlled-bash.jsonl");
162
+ const logsDir = resolveControlPlaneHostLogsDir(context.projectRoot);
163
+ const logFile = resolve2(logsDir, "controlled-bash.jsonl");
120
164
  mkdirSync(logsDir, { recursive: true });
121
165
  const payload = {
122
166
  timestamp: new Date().toISOString(),
@@ -137,25 +181,24 @@ function appendControlledBashAudit(context, mode, command, args, matchedRuleIds,
137
181
  async function enforceNativeCommandPolicy(context, args, options) {
138
182
  const mode = resolveEffectivePolicyMode(context);
139
183
  const command = formatCommand([options.commandPrefix, ...args]);
140
- const decision = evaluate2({
141
- projectRoot: context.projectRoot,
142
- evaluation: { type: "command", command }
143
- });
144
- const action = resolveAction2(mode, decision.matchedRules);
145
- const matchedRuleIds = decision.matchedRules.map((rule) => rule.id);
184
+ const rules = matchingRules(command, loadPolicyFile(context.projectRoot).rules);
185
+ const matchedRuleIds = rules.map((rule) => rule.id);
186
+ const action = rules.length === 0 ? "allow" : mode === "enforce" ? "block" : "warn";
146
187
  await context.emitEvent("policy.decision", {
147
188
  target: "command",
148
189
  command,
149
190
  mode,
150
191
  allowed: action !== "block",
151
192
  matchedRuleIds,
152
- reasons: decision.matchedRules.map((rule) => rule.reason)
193
+ reasons: rules.map((rule) => rule.reason).filter(Boolean)
153
194
  });
154
195
  if (options.writeAuditLog) {
155
196
  appendControlledBashAudit(context, mode, command, args, matchedRuleIds, action === "block" ? "blocked" : action === "warn" ? "warn" : undefined);
156
197
  }
157
198
  if (action === "block") {
158
- throw new CliError(`Policy blocked command: ${command}`, 126, { hint: "Review rig/policy/policy.json, or re-run with `--policy-mode observe` to log instead of block." });
199
+ throw new CliError(`Policy blocked command: ${command}`, 126, {
200
+ hint: "Review rig/policy/policy.json, or re-run with `--policy-mode observe` to log instead of block."
201
+ });
159
202
  }
160
203
  }
161
204
 
@@ -1,3 +1,21 @@
1
1
  import { type RunnerContext } from "../runner";
2
- import type { CommandOutcome } from "@rig/runtime/control-plane/runtime/types";
3
- export declare function executeRun(context: RunnerContext, args: string[]): Promise<CommandOutcome>;
2
+ import type { CommandOutcome } from "@rig/runtime";
3
+ import { type RigExtensionTask, type RunControl } from "./_run-bridge";
4
+ import { type RunJoinTarget, type RunProjectionRecord } from "./_run-projection";
5
+ export type RunTaskLike = RigExtensionTask & Record<string, unknown>;
6
+ export interface RunExecutorDeps {
7
+ readonly listRuns?: (projectRoot: string) => Promise<RunProjectionRecord[]>;
8
+ readonly getRun?: (projectRoot: string, runId: string) => Promise<RunProjectionRecord | null>;
9
+ readonly resolveJoin?: (projectRoot: string, runId: string) => Promise<RunJoinTarget | null>;
10
+ readonly dispatch?: (input: {
11
+ readonly projectRoot: string;
12
+ readonly taskId: string;
13
+ readonly title?: string | null;
14
+ }) => Promise<{
15
+ readonly runId: string;
16
+ }>;
17
+ readonly listTasks?: (projectRoot: string) => Promise<readonly RunTaskLike[]>;
18
+ readonly appendLocal?: (record: RunProjectionRecord, text: string) => Promise<void>;
19
+ readonly deliverRemote?: (projectRoot: string, runId: string, control: RunControl) => Promise<void>;
20
+ }
21
+ export declare function executeRun(context: RunnerContext, args: string[], deps?: RunExecutorDeps): Promise<CommandOutcome>;