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.
- package/AGENT_INTEGRATION.md +15 -5
- package/CHANGELOG.md +56 -0
- package/README.md +23 -14
- package/bin/orp.js +21 -14
- package/cli/orp.py +2402 -66
- package/docs/AGENT_LOOP.md +9 -0
- package/docs/RESEARCH_COUNCIL.md +48 -0
- package/docs/START_HERE.md +32 -9
- package/package.json +5 -1
- package/packages/orp-workspace-launcher/src/orp-command.js +54 -0
- package/packages/orp-workspace-launcher/test/orp-command.test.js +1 -0
- package/scripts/orp-mcp +52 -1
- package/scripts/render-terminal-demo.py +262 -134
package/AGENT_INTEGRATION.md
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
51
|
+
5. inspect the current frontier
|
|
48
52
|
```bash
|
|
49
53
|
orp frontier state --json
|
|
50
54
|
```
|
|
51
|
-
|
|
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
|
-
|
|
56
|
-
|
|
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)
|
|
10
10
|
[](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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
53
|
+
It currently shows ORP from seven angles:
|
|
46
54
|
|
|
47
55
|
- `home` for discovery and next actions
|
|
48
|
-
- `
|
|
49
|
-
- `secrets` for
|
|
50
|
-
- `
|
|
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
|
-
- `
|
|
57
|
-
- `
|
|
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
|
-
|
|
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
|
|
43
|
+
const pyArgs = py === "py" ? ["-3", cliPath, ...args] : [cliPath, ...args];
|
|
54
44
|
const result = spawnSync(
|
|
55
45
|
py,
|
|
56
|
-
|
|
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);
|