open-research-protocol 0.4.27 → 0.4.29

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/CHANGELOG.md CHANGED
@@ -6,6 +6,54 @@ There was no prior in-repo changelog file, so the first formal entry starts
6
6
  with the currently shipped `v0.4.4` release and summarizes the full release
7
7
  delta reflected in this repo.
8
8
 
9
+ ## v0.4.29 - 2026-04-25
10
+
11
+ This release adds ORP-managed Codex session tracking so starting a Codex thread
12
+ from a repo can automatically refresh the saved workspace session for that
13
+ directory.
14
+
15
+ ### Added
16
+
17
+ - Added `orp codex` as the default tracked Codex launcher: it resolves the repo
18
+ root, starts Codex there, watches local session metadata, and saves the new
19
+ Codex resume id into workspace `main`.
20
+ - Added `orp codex status` and `orp codex reconcile` for checking stale saved
21
+ Codex sessions and refreshing tracked workspace tabs from recent local Codex
22
+ session metadata.
23
+ - Added safeguards that ignore delegated/subagent sessions by default and refuse
24
+ broad roots or artifact-output repos unless explicitly overridden.
25
+
26
+ ### Changed
27
+
28
+ - Documented the ORP/Codex compatibility workflow and exposed the new wrapper
29
+ command in the npm CLI help surface.
30
+
31
+ ## v0.4.28 - 2026-04-22
32
+
33
+ This release tightens the ORP project-startup and research-spend loops, then
34
+ refreshes the public README presentation with a mascot-led terminal animation.
35
+
36
+ ### Added
37
+
38
+ - Added `orp init --project-startup` support for a fuller new-project ritual:
39
+ private GitHub remote setup, `main` workspace ledger tracking, Codex session
40
+ capture, bootstrap command storage, and optional Clawdad delegation setup.
41
+ - Added local research spend guardrails for provider-backed research lanes:
42
+ per-secret daily spend cap metadata, dashboard limit notes, local spend
43
+ ledger records, and OpenAI preflight blocking when a lane would exceed the
44
+ configured cap.
45
+ - Added a mascot-led ORP terminal animation that explains workspace ledgers,
46
+ secrets, research lanes, governance checkpoints, breakdown mode, and
47
+ agent-readable handoffs in simple language.
48
+
49
+ ### Changed
50
+
51
+ - Promoted the refreshed terminal animation to the top of the README with a
52
+ short greeting and updated the walkthrough copy to match the current ORP
53
+ command surface.
54
+ - Simplified generated animation scenes from a crowded command survey into a
55
+ cleaner seven-scene story with an expressive mascot and real CLI commands.
56
+
9
57
  ## v0.4.27 - 2026-04-18
10
58
 
11
59
  This release adds a staged OpenAI research profile and default-on worktree
package/README.md CHANGED
@@ -9,6 +9,12 @@ Maintained by SproutSeeds. Research stewardship: Fractal Research Group ([frg.ea
9
9
  [![license](https://img.shields.io/npm/l/open-research-protocol?color=111111&label=license)](./LICENSE)
10
10
  [![node](https://img.shields.io/node/v/open-research-protocol?color=111111&label=node)](https://www.npmjs.com/package/open-research-protocol)
11
11
 
12
+ <p align="center">
13
+ <img src="https://raw.githubusercontent.com/SproutSeeds/orp/main/assets/terminal-demo.gif" alt="open-research-protocol mascot terminal demo">
14
+ </p>
15
+
16
+ <p align="center"><strong>Hello, researcher.</strong> Keep the loop open, recoverable, and kind.</p>
17
+
12
18
  > Agent-first CLI for workspace ledgers, operating agendas, local governance, secrets, scheduling, packets, reports, and research workflows.
13
19
 
14
20
  **Links:** [GitHub](https://github.com/SproutSeeds/orp) · [npm](https://www.npmjs.com/package/open-research-protocol) · [frg.earth](https://frg.earth)
@@ -38,24 +44,21 @@ checkpoint layer. See
38
44
 
39
45
  ## Watch It Run
40
46
 
41
- A short ORP command-family walkthrough:
42
-
43
- ![open-research-protocol terminal demo](https://raw.githubusercontent.com/SproutSeeds/orp/main/assets/terminal-demo.gif)
47
+ The current animation introduces a small protocol mascot for the ORP message:
48
+ context before claims, saved threads before crashes, hidden keys before exposed
49
+ secrets, dry-run research before spend, checkpoints before handoffs, and
50
+ breakdowns before overwhelm. The terminal still uses real ORP command surfaces
51
+ rather than a fabricated UI.
44
52
 
45
- The current animation intentionally uses the same human-facing command surfaces ORP prints in the terminal. It is not a fabricated UI layer. It currently shows ORP from multiple angles:
53
+ It currently shows ORP from seven angles:
46
54
 
47
55
  - `home` for discovery and next actions
48
- - `hosted` for ideas, workspaces, runners, and the control plane
49
- - `secrets` for create-or-reuse plus local Keychain sync
50
- - `workspace` for the hosted + local saved workspace ledger and recovery commands
51
- - `agenda` for Codex-ranked actions and suggestions across current work
52
- - `connections` for service accounts, data sources, deploy targets, and research destinations
53
- - `opportunities` for contests, programs, grants, and other tracked openings
54
- - `schedule` for recurring Codex jobs
56
+ - `workspace` for grouped project/session ledgers and recovery commands
57
+ - `secrets` for local reusable credentials and spend policy metadata
58
+ - `research` for dry-run-first research lanes with an OpenAI-ready provider path
55
59
  - `governance` for local checkpoints and repo safety
56
- - `planning` for frontier, compute, packet, and report surfaces
57
- - `synthesis` for discover, exchange, collaborate, and YouTube ingestion
58
- - `mode` for optional perspective-shift nudges
60
+ - `breakdown` for broad-to-atomic comprehension loops
61
+ - `publish` for agent-readable reports, handoffs, and open research messaging
59
62
 
60
63
  Maintainer asset generation:
61
64
 
@@ -451,10 +454,14 @@ Local desk and automation:
451
454
  orp workspace create mac-main --machine-label "Mac Studio"
452
455
  orp workspace list
453
456
  orp workspace tabs main
457
+ orp init --project-startup --github-repo owner/repo --current-codex
454
458
  orp workspace add-tab main --path /absolute/path/to/project --remote-url git@github.com:org/project.git --bootstrap-command "npm install" --resume-command "codex resume <id>"
455
459
  orp workspace add-tab main --path /absolute/path/to/project --title "second active thread" --resume-tool claude --resume-session-id <id> --append
456
460
  orp workspace remove-tab main --path /absolute/path/to/project
457
461
  orp workspace sync main
462
+ orp codex status
463
+ orp codex reconcile --dry-run
464
+ orp codex --search
458
465
  orp secrets list --json
459
466
  orp secrets ensure --alias openai-primary --provider openai --current-project --json
460
467
  orp secrets keychain-add --alias openai-primary --provider openai --env-var-name OPENAI_API_KEY --value-stdin --json
@@ -462,6 +469,19 @@ orp secrets sync-keychain openai-primary --json
462
469
  orp schedule add codex --name morning-summary --prompt "Summarize this repo" --json
463
470
  ```
464
471
 
472
+ `orp codex` is a local compatibility layer for keeping workspace `main`
473
+ aligned with Codex sessions. `status` compares the current repo against the
474
+ latest local Codex session metadata, `reconcile` refreshes stale saved sessions,
475
+ and bare `orp codex` launches Codex from the repo root while watching for the new
476
+ session id. Delegated/subagent sessions are ignored by default, and
477
+ artifact-output repos should be left untracked when a separate lab repo is the
478
+ source of truth. Use `--` before Codex args that conflict with ORP wrapper
479
+ options. The manual fallback from inside Codex is still:
480
+
481
+ ```bash
482
+ orp workspace add-tab main --here --current-codex
483
+ ```
484
+
465
485
  For secrets, the simplest plain-English rule is:
466
486
 
467
487
  - `orp secrets ensure ...` = use the saved key if it already exists, or ask for it and create it if it does not
@@ -570,6 +590,7 @@ Stable artifact paths:
570
590
  1. Copy this folder into a new project directory.
571
591
  2. If you keep projects under one umbrella directory, run `orp agents root set /absolute/path/to/projects` once from anywhere.
572
592
  3. Run `orp init` immediately so the repo starts ORP-governed, scaffolds or updates `AGENTS.md` and `CLAUDE.md`, and creates `orp/project.json`.
593
+ For the fuller new-project ritual, run `orp init --project-startup --github-repo owner/repo --current-codex`; ORP will create a private GitHub remote through `gh`, save the path/session in workspace `main`, and register Clawdad delegation when `clawdad` is installed. Use `--startup-dry-run --json` first when you want to inspect the planned external commands.
573
594
  4. Edit `PROTOCOL.md` to define your canonical paths and claim labels.
574
595
  5. Run `orp project refresh --json` whenever the directory gains new roadmap, spec, docs, manifest, or command-surface files.
575
596
  6. Run `orp agents audit` to confirm the repo-level agent files are aligned and still preserving human notes.
@@ -769,3 +790,7 @@ python3 scripts/orp-pack-render.py --pack packs/erdos-open-problems --template s
769
790
  python3 scripts/orp-pack-render.py --pack packs/erdos-open-problems --template erdos_problems_catalog_sync \
770
791
  --var TARGET_REPO_ROOT=/path/to/repo --var ORP_REPO_ROOT=/path/to/orp --out /path/to/repo/orp.erdos-catalog-sync.yml
771
792
  ```
793
+
794
+ ## Support
795
+
796
+ Everything here is released for public use. If ORP saved you time or you want to keep the work moving, you can [support public FRG releases](https://frg.earth/support?utm_source=readme&utm_medium=repo&utm_campaign=public_work_support&package=open-research-protocol).
package/bin/orp.js CHANGED
@@ -9,6 +9,9 @@ const computeCliUrl = pathToFileURL(path.resolve(__dirname, "orp-compute.mjs")).
9
9
  const workspaceCliUrl = pathToFileURL(
10
10
  path.resolve(__dirname, "..", "packages", "orp-workspace-launcher", "src", "orp-command.js"),
11
11
  ).href;
12
+ const codexCliUrl = pathToFileURL(
13
+ path.resolve(__dirname, "..", "packages", "orp-workspace-launcher", "src", "codex.js"),
14
+ ).href;
12
15
  const argv = process.argv.slice(2);
13
16
 
14
17
  const candidates = [];
@@ -36,6 +39,12 @@ async function runWorkspace(args) {
36
39
  process.exit(code == null ? 0 : code);
37
40
  }
38
41
 
42
+ async function runCodex(args) {
43
+ const mod = await import(codexCliUrl);
44
+ const code = await mod.runOrpCodexCommand(args);
45
+ process.exit(code == null ? 0 : code);
46
+ }
47
+
39
48
  function runPythonCli(args, { captureOutput }) {
40
49
  let lastErr = null;
41
50
 
@@ -58,7 +67,7 @@ function runPythonCli(args, { captureOutput }) {
58
67
  process.stderr.write(result.stderr);
59
68
  }
60
69
  if (result.status === 0) {
61
- process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n orp workspace tabs -h\n orp workspace hygiene --json\n");
70
+ process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n orp workspace tabs -h\n orp workspace hygiene --json\n orp codex status -h\n");
62
71
  }
63
72
  }
64
73
  process.exit(result.status == null ? 1 : result.status);
@@ -91,6 +100,10 @@ async function main() {
91
100
  await runWorkspace(argv.slice(1));
92
101
  return;
93
102
  }
103
+ if (argv[0] === "codex") {
104
+ await runCodex(argv.slice(1));
105
+ return;
106
+ }
94
107
 
95
108
  runPythonCli(argv, { captureOutput: isTopLevelHelp(argv) });
96
109
  }