overlord-cli 0.2609250853.0 → 0.2609280950.0

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/README.md CHANGED
@@ -202,6 +202,8 @@ Notes for headless use:
202
202
  - `ovld agent-setup` accepts `--home <dir>` to target a specific `OVLD_HOME`,
203
203
  `--dry-run` to preview, and `--json` for machine-readable output. List
204
204
  installable connectors with `ovld agent-setup --json`.
205
+ - `ovld agent-setup codex --export <dir>` renders the self-contained plugin
206
+ package into an empty directory without changing the user's Codex setup.
205
207
  - Set `OVLD_HOME=/some/writable/dir` if the default `~/.ovld` is not writable in
206
208
  your container; it relocates the entire CLI data directory.
207
209
  - Interactive `ovld auth login` / `ovld config set` (no args) and `ovld setup`
@@ -1 +1 @@
1
- 0.3.48
1
+ 0.3.49
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.48",
4
+ "version": "0.3.49",
5
5
  "description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
6
6
  "author": {
7
7
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.48",
3
+ "version": "0.3.49",
4
4
  "description": "Overlord mission protocol workflow for Claude Code — attach/update/ask/deliver, slash commands, and hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -52,15 +52,6 @@ The plugin prompts for `overlord_url` and, when needed for non-interactive use,
52
52
  claude --plugin-dir /absolute/path/to/Overlord/connectors/adapters/claude
53
53
  ```
54
54
 
55
- ### Install (published marketplace)
56
-
57
- Once published:
58
-
59
- ```bash
60
- claude plugin marketplace add cooperativ/overlord-marketplace
61
- claude plugin install overlord@cooperativ
62
- ```
63
-
64
55
  ### Namespaced components
65
56
 
66
57
  Inside Claude Code the components are surfaced with the plugin prefix:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.48",
3
+ "version": "0.3.49",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.48",
3
+ "version": "0.3.49",
4
4
  "description": "Overlord mission protocol workflow for Cursor — attach/update/ask/deliver, slash commands, MCP bridge, and follow-up capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -222,8 +222,8 @@ nothing qualifies. Omit the report when none of these facts apply.
222
222
 
223
223
  #### Writing a human action the operator can complete
224
224
 
225
- Human actions are collected across every mission into the Feed page's **Human actions** rail,
226
- where the operator reads them without the delivery context. Each item must stand alone:
225
+ Human actions are shown on the delivery card, where the operator reads them without your
226
+ session transcript. Each item must stand alone:
227
227
 
228
228
  | Field | Expected | What to write |
229
229
  | ---------- | ---------- | ------------------------------------------------------------------------------------------------- |
@@ -241,7 +241,7 @@ Vague (the operator has to rediscover everything):
241
241
  { "action": "Set up the env var for Gemini." }
242
242
  ```
243
243
 
244
- Good (the operator can finish it from the rail alone):
244
+ Good (the operator can finish it from the card alone):
245
245
 
246
246
  ```json
247
247
  {
@@ -1228,7 +1228,7 @@ process.stdin.on('data', async chunk => {
1228
1228
  result: {
1229
1229
  protocolVersion: PROTOCOL_VERSION,
1230
1230
  capabilities: { tools: { listChanged: false } },
1231
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.48' }
1231
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.49' }
1232
1232
  }
1233
1233
  });
1234
1234
  continue;
package/dist/index.js CHANGED
@@ -2952,13 +2952,25 @@ function setupConnector({
2952
2952
  agentKey,
2953
2953
  home,
2954
2954
  configureCodexPermissions = true,
2955
- dryRun = false
2955
+ dryRun = false,
2956
+ exportPath
2956
2957
  }) {
2958
+ if (exportPath && agentKey !== "codex") {
2959
+ throw new CliError({
2960
+ message: "Export mode is currently supported only for the Codex connector."
2961
+ });
2962
+ }
2957
2963
  const manifest = readConnectorManifest(agentKey);
2958
2964
  const resolvedHome = resolveHome(home);
2959
- const installPath = expandInstallPath(manifest.connector.installPath, resolvedHome);
2965
+ const installPath = exportPath ? path6.resolve(exportPath) : expandInstallPath(manifest.connector.installPath, resolvedHome);
2960
2966
  const sourceDir = connectorDir(agentKey);
2961
2967
  const warnings = [];
2968
+ if (exportPath) {
2969
+ mkdirSync3(installPath, { recursive: true });
2970
+ if (readdirSync(installPath).length > 0) {
2971
+ throw new CliError({ message: `Export destination must be empty: ${installPath}` });
2972
+ }
2973
+ }
2962
2974
  const files = [];
2963
2975
  const stateFiles = [];
2964
2976
  const previousState = readInstallState(agentKey, resolvedHome);
@@ -3032,10 +3044,10 @@ function setupConnector({
3032
3044
  `Agent binary "${binaryName}" not found on PATH. The connector is installed; install ${binaryName} to launch this agent.`
3033
3045
  );
3034
3046
  }
3035
- if (agentKey === "cursor") {
3047
+ if (!exportPath && agentKey === "cursor") {
3036
3048
  warnings.push(...configureCursorHarness({ home: resolvedHome, dryRun }));
3037
3049
  }
3038
- if (agentKey === "codex") {
3050
+ if (!exportPath && agentKey === "codex") {
3039
3051
  warnings.push(
3040
3052
  ...configureCodexHarness({
3041
3053
  home: resolvedHome,
@@ -3045,10 +3057,10 @@ function setupConnector({
3045
3057
  })
3046
3058
  );
3047
3059
  }
3048
- if (agentKey === "claude") {
3060
+ if (!exportPath && agentKey === "claude") {
3049
3061
  warnings.push(...configureClaudeHarness({ home: resolvedHome, installPath, dryRun }));
3050
3062
  }
3051
- if (!dryRun) {
3063
+ if (!dryRun && !exportPath) {
3052
3064
  const installedStateFiles = manifest.connector.managedFiles.map((relativePath) => {
3053
3065
  const target = path6.join(installPath, relativePath);
3054
3066
  if (!existsSync6(target)) return null;
@@ -4026,8 +4038,12 @@ async function runAgentSetupCommand({
4026
4038
  const target = parsed.positional[0];
4027
4039
  const dryRun = flagBoolean(parsed.flags, "--dry-run");
4028
4040
  const home = flagValue(parsed.flags, "--home");
4041
+ const exportPath = flagValue(parsed.flags, "--export");
4042
+ if (exportPath && target !== "codex") {
4043
+ throw new CliError({ message: "`--export` requires `agent-setup codex`." });
4044
+ }
4029
4045
  const shouldConfigureCodexPermissions = async (agentKey) => {
4030
- if (agentKey !== "codex" || dryRun || json2 || !process.stdin.isTTY) return true;
4046
+ if (agentKey !== "codex" || exportPath || dryRun || json2 || !process.stdin.isTTY) return true;
4031
4047
  return promptYesNo(
4032
4048
  "Configure Codex permissions to allow it to communicate with the Overlord server?",
4033
4049
  true
@@ -4055,15 +4071,21 @@ async function runAgentSetupCommand({
4055
4071
  setupConnector({
4056
4072
  agentKey: target,
4057
4073
  home,
4074
+ exportPath,
4058
4075
  dryRun,
4059
4076
  configureCodexPermissions: await shouldConfigureCodexPermissions(target)
4060
4077
  })
4061
4078
  ];
4062
4079
  if (json2) {
4063
- printJson({ ok: true, dryRun, results });
4080
+ printJson({ ok: true, dryRun, exported: Boolean(exportPath), results });
4064
4081
  } else {
4065
4082
  for (const result of results) {
4066
- printHumanResult(result);
4083
+ if (exportPath) {
4084
+ printLine(`Exported connector "${result.agentKey}" \u2192 ${result.installPath}`);
4085
+ for (const file2 of result.files) printLine(` + ${file2.path}`);
4086
+ } else {
4087
+ printHumanResult(result);
4088
+ }
4067
4089
  }
4068
4090
  }
4069
4091
  }
@@ -20364,6 +20386,23 @@ var init_errors2 = __esm({
20364
20386
  }
20365
20387
  });
20366
20388
 
20389
+ // ../packages/core/dist/service/worker-jobs.js
20390
+ var init_worker_jobs = __esm({
20391
+ "../packages/core/dist/service/worker-jobs.js"() {
20392
+ "use strict";
20393
+ init_util2();
20394
+ }
20395
+ });
20396
+
20397
+ // ../packages/core/dist/service/live-activity-jobs.js
20398
+ var init_live_activity_jobs = __esm({
20399
+ "../packages/core/dist/service/live-activity-jobs.js"() {
20400
+ "use strict";
20401
+ init_util2();
20402
+ init_worker_jobs();
20403
+ }
20404
+ });
20405
+
20367
20406
  // ../database/dist/better-sqlite3-loader.js
20368
20407
  var init_better_sqlite3_loader = __esm({
20369
20408
  "../database/dist/better-sqlite3-loader.js"() {
@@ -35713,6 +35752,7 @@ var init_requests = __esm({
35713
35752
  "use strict";
35714
35753
  init_change_feed();
35715
35754
  init_errors2();
35755
+ init_live_activity_jobs();
35716
35756
  init_util2();
35717
35757
  init_webhook_events();
35718
35758
  init_window();
@@ -38674,8 +38714,8 @@ deliver:
38674
38714
  "link": ".env.example" // when known. HTTP(S) URL or repo-relative path only.
38675
38715
  }
38676
38716
  Vague: { "action": "Set up the env var for Gemini." } forces the operator to rediscover
38677
- the name, the place, and the check. Actions are read from the Feed rail without the
38678
- delivery, so each must stand alone. Overlord adds deterministic_rule actions for new
38717
+ the name, the place, and the check. Actions are read from the delivery card without
38718
+ your transcript, so each must stand alone. Overlord adds deterministic_rule actions for new
38679
38719
  migrations, .env.example edits, dependency manifests, and CI workflow files on its own;
38680
38720
  report those yourself when you can supply the real command and verify step.
38681
38721
  Optional:
@@ -41650,7 +41690,7 @@ var COMMAND_FLAGS = {
41650
41690
  init: [],
41651
41691
  doctor: [],
41652
41692
  setup: [],
41653
- "agent-setup": ["--dry-run", "--home"],
41693
+ "agent-setup": ["--dry-run", "--home", "--export"],
41654
41694
  config: ["--path", "--url"],
41655
41695
  auth: ["--token", "--organization-id"],
41656
41696
  "user-token": ["--label", "--expires-in", "--no-expiry", "--scope", "--id"],
@@ -41801,8 +41841,9 @@ General:
41801
41841
 
41802
41842
  Connectors:
41803
41843
  ${primaryCommand} agent-setup [--json] List installable agent connectors
41804
- ${primaryCommand} agent-setup <agent> [--dry-run]
41805
- Install/repair one connector (e.g. claude)
41844
+ ${primaryCommand} agent-setup <agent> [--dry-run] [--export <dir>]
41845
+ Install/repair one connector; Codex --export
41846
+ writes a package without installing it
41806
41847
  ${primaryCommand} agent-setup all [--dry-run] Install/repair all supported connectors
41807
41848
  ${primaryCommand} agent-session capabilities [<agent>] [--json]
41808
41849
  What a harness can really do on the agent-session