open-research-protocol 0.4.26 → 0.4.28

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.
@@ -40,20 +40,24 @@ If the agent only remembers one ORP loop, it should be this:
40
40
  ```bash
41
41
  orp status --json
42
42
  ```
43
- 3. resolve the right secret
43
+ 3. classify dirty worktree state before expansion
44
+ ```bash
45
+ orp hygiene --json
46
+ ```
47
+ 4. resolve the right secret
44
48
  ```bash
45
49
  orp secrets ensure --alias <alias> --provider <provider> --current-project --json
46
50
  ```
47
- 4. inspect the current frontier
51
+ 5. inspect the current frontier
48
52
  ```bash
49
53
  orp frontier state --json
50
54
  ```
51
- 5. if the work feels confusing or too large, break it down before moving
55
+ 6. if the work feels confusing or too large, break it down before moving
52
56
  ```bash
53
57
  orp mode breakdown granular-breakdown --json
54
58
  ```
55
- 6. do the next honest move
56
- 7. checkpoint it honestly
59
+ 7. do the next honest move
60
+ 8. checkpoint it honestly
57
61
  ```bash
58
62
  orp checkpoint create -m "checkpoint note" --json
59
63
  ```
@@ -62,6 +66,7 @@ That is the ORP rhythm in one line:
62
66
 
63
67
  - recover continuity
64
68
  - inspect repo safety
69
+ - classify dirty state and stop if anything is unowned
65
70
  - resolve access
66
71
  - inspect context
67
72
  - break down complexity when comprehension would help
@@ -98,6 +103,11 @@ artifact paths (code/data/proofs/logs/papers).
98
103
  - Treat **failed paths** as assets: record dead ends as a `Failed Path Record` with the blocking reason/counterexample and a
99
104
  next hook.
100
105
  - Resolve disputes by **verification or downgrade**, not argument.
106
+ - Run `orp hygiene --json` before long delegation, after material writeback, before API/remote/paid compute, and when dirty
107
+ state grows unexpectedly.
108
+ - Stop long-running expansion while hygiene reports `dirty_unclassified`; classify, refresh generated surfaces, canonicalize
109
+ useful scratch, or write a blocker before continuing.
110
+ - Hygiene is non-destructive: never reset, checkout, or delete files merely to hide dirty state.
101
111
 
102
112
  ### How to work in an ORP repo
103
113
 
package/CHANGELOG.md CHANGED
@@ -6,6 +6,62 @@ 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.28 - 2026-04-22
10
+
11
+ This release tightens the ORP project-startup and research-spend loops, then
12
+ refreshes the public README presentation with a mascot-led terminal animation.
13
+
14
+ ### Added
15
+
16
+ - Added `orp init --project-startup` support for a fuller new-project ritual:
17
+ private GitHub remote setup, `main` workspace ledger tracking, Codex session
18
+ capture, bootstrap command storage, and optional Clawdad delegation setup.
19
+ - Added local research spend guardrails for provider-backed research lanes:
20
+ per-secret daily spend cap metadata, dashboard limit notes, local spend
21
+ ledger records, and OpenAI preflight blocking when a lane would exceed the
22
+ configured cap.
23
+ - Added a mascot-led ORP terminal animation that explains workspace ledgers,
24
+ secrets, research lanes, governance checkpoints, breakdown mode, and
25
+ agent-readable handoffs in simple language.
26
+
27
+ ### Changed
28
+
29
+ - Promoted the refreshed terminal animation to the top of the README with a
30
+ short greeting and updated the walkthrough copy to match the current ORP
31
+ command surface.
32
+ - Simplified generated animation scenes from a crowded command survey into a
33
+ cleaner seven-scene story with an expressive mascot and real CLI commands.
34
+
35
+ ## v0.4.27 - 2026-04-18
36
+
37
+ This release adds a staged OpenAI research profile and default-on worktree
38
+ hygiene for agent loops. ORP-initialized repos now teach agents when to stop,
39
+ classify dirty paths, refresh generated surfaces, canonicalize scratch, or
40
+ write a blocker instead of letting unowned worktree state become invisible.
41
+
42
+ ### Added
43
+
44
+ - Added the built-in `deep-think-web-think-deep` research profile: Deep
45
+ Research, high-reasoning think, think plus web synthesis, high-reasoning
46
+ think, and a final Deep Research pass.
47
+ - Added profile listing/show commands and MCP exposure so Codex-like clients
48
+ can discover staged research templates and fill project-specific fields.
49
+ - Added `orp hygiene --json` and the `orp workspace hygiene --json` alias for
50
+ non-destructive worktree classification with dirty counts, categories,
51
+ unclassified and scratch counts, required action, and recommended next checks.
52
+ - Added `orp/hygiene-policy.json` scaffolding during `orp init` so each project
53
+ can customize canonical surfaces, artifact roots, scratch paths, and
54
+ classification rules.
55
+
56
+ ### Changed
57
+
58
+ - Updated ORP agent docs, generated handoffs, agent policy, project context,
59
+ home/about metadata, and workspace help to include the hygiene stop rule:
60
+ no long-running expansion while dirty paths are unclassified.
61
+ - Research runs now persist generated lane prompts and can pass prior lane
62
+ outputs into later staged prompts while skipping live later-stage calls when
63
+ prerequisites are incomplete.
64
+
9
65
  ## v0.4.26 - 2026-04-17
10
66
 
11
67
  This release adds ORP-native project context and OpenAI research-loop support,
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,6 +454,7 @@ 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
@@ -570,6 +574,7 @@ Stable artifact paths:
570
574
  1. Copy this folder into a new project directory.
571
575
  2. If you keep projects under one umbrella directory, run `orp agents root set /absolute/path/to/projects` once from anywhere.
572
576
  3. Run `orp init` immediately so the repo starts ORP-governed, scaffolds or updates `AGENTS.md` and `CLAUDE.md`, and creates `orp/project.json`.
577
+ 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
578
  4. Edit `PROTOCOL.md` to define your canonical paths and claim labels.
574
579
  5. Run `orp project refresh --json` whenever the directory gains new roadmap, spec, docs, manifest, or command-surface files.
575
580
  6. Run `orp agents audit` to confirm the repo-level agent files are aligned and still preserving human notes.
@@ -769,3 +774,7 @@ python3 scripts/orp-pack-render.py --pack packs/erdos-open-problems --template s
769
774
  python3 scripts/orp-pack-render.py --pack packs/erdos-open-problems --template erdos_problems_catalog_sync \
770
775
  --var TARGET_REPO_ROOT=/path/to/repo --var ORP_REPO_ROOT=/path/to/orp --out /path/to/repo/orp.erdos-catalog-sync.yml
771
776
  ```
777
+
778
+ ## Support
779
+
780
+ 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
@@ -36,24 +36,14 @@ async function runWorkspace(args) {
36
36
  process.exit(code == null ? 0 : code);
37
37
  }
38
38
 
39
- async function main() {
40
- if (argv[0] === "compute") {
41
- await runCompute(argv.slice(1));
42
- return;
43
- }
44
- if (argv[0] === "workspace") {
45
- await runWorkspace(argv.slice(1));
46
- return;
47
- }
48
-
49
- const captureOutput = isTopLevelHelp(argv);
39
+ function runPythonCli(args, { captureOutput }) {
50
40
  let lastErr = null;
51
41
 
52
42
  for (const py of candidates) {
53
- const args = py === "py" ? ["-3", cliPath, ...argv] : [cliPath, ...argv];
43
+ const pyArgs = py === "py" ? ["-3", cliPath, ...args] : [cliPath, ...args];
54
44
  const result = spawnSync(
55
45
  py,
56
- args,
46
+ pyArgs,
57
47
  captureOutput
58
48
  ? { encoding: "utf8" }
59
49
  : { stdio: "inherit" },
@@ -68,7 +58,7 @@ async function main() {
68
58
  process.stderr.write(result.stderr);
69
59
  }
70
60
  if (result.status === 0) {
71
- process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n orp workspace tabs -h\n");
61
+ process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n orp workspace tabs -h\n orp workspace hygiene --json\n");
72
62
  }
73
63
  }
74
64
  process.exit(result.status == null ? 1 : result.status);
@@ -88,6 +78,23 @@ async function main() {
88
78
  process.exit(1);
89
79
  }
90
80
 
81
+ async function main() {
82
+ if (argv[0] === "compute") {
83
+ await runCompute(argv.slice(1));
84
+ return;
85
+ }
86
+ if (argv[0] === "workspace" && argv[1] === "hygiene") {
87
+ runPythonCli(["hygiene", ...argv.slice(2)], { captureOutput: false });
88
+ return;
89
+ }
90
+ if (argv[0] === "workspace") {
91
+ await runWorkspace(argv.slice(1));
92
+ return;
93
+ }
94
+
95
+ runPythonCli(argv, { captureOutput: isTopLevelHelp(argv) });
96
+ }
97
+
91
98
  main().catch((error) => {
92
99
  console.error(String(error && error.stack ? error.stack : error));
93
100
  process.exit(1);