open-research-protocol 0.4.14 → 0.4.16
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 +50 -0
- package/README.md +273 -144
- package/bin/orp.js +14 -1
- package/cli/orp.py +14846 -9925
- package/docs/AGENT_LOOP.md +13 -0
- package/docs/AGENT_MODES.md +79 -0
- package/docs/CANONICAL_CLI_BOUNDARY.md +15 -0
- package/docs/EXCHANGE.md +94 -0
- package/docs/LAUNCH_KIT.md +107 -0
- package/docs/ORP_HOSTED_WORKSPACE_CONTRACT.md +295 -0
- package/docs/ORP_PUBLIC_LAUNCH_CHECKLIST.md +5 -0
- package/docs/START_HERE.md +567 -0
- package/package.json +4 -2
- package/packages/lifeops-orp/README.md +67 -0
- package/packages/lifeops-orp/package.json +48 -0
- package/packages/lifeops-orp/src/index.d.ts +106 -0
- package/packages/lifeops-orp/src/index.js +7 -0
- package/packages/lifeops-orp/src/mapping.js +309 -0
- package/packages/lifeops-orp/src/workspace.js +108 -0
- package/packages/lifeops-orp/test/orp.test.js +187 -0
- package/packages/orp-workspace-launcher/README.md +82 -0
- package/packages/orp-workspace-launcher/package.json +39 -0
- package/packages/orp-workspace-launcher/src/commands.js +77 -0
- package/packages/orp-workspace-launcher/src/core-plan.js +506 -0
- package/packages/orp-workspace-launcher/src/hosted-state.js +208 -0
- package/packages/orp-workspace-launcher/src/index.js +82 -0
- package/packages/orp-workspace-launcher/src/ledger.js +745 -0
- package/packages/orp-workspace-launcher/src/list.js +488 -0
- package/packages/orp-workspace-launcher/src/orp-command.js +126 -0
- package/packages/orp-workspace-launcher/src/orp.js +912 -0
- package/packages/orp-workspace-launcher/src/registry.js +558 -0
- package/packages/orp-workspace-launcher/src/slot.js +188 -0
- package/packages/orp-workspace-launcher/src/sync.js +363 -0
- package/packages/orp-workspace-launcher/src/tabs.js +166 -0
- package/packages/orp-workspace-launcher/test/commands.test.js +164 -0
- package/packages/orp-workspace-launcher/test/core-plan.test.js +253 -0
- package/packages/orp-workspace-launcher/test/fixtures/smoke-notes.txt +2 -0
- package/packages/orp-workspace-launcher/test/fixtures/workspace-manifest.json +17 -0
- package/packages/orp-workspace-launcher/test/ledger.test.js +244 -0
- package/packages/orp-workspace-launcher/test/list.test.js +299 -0
- package/packages/orp-workspace-launcher/test/orp-command.test.js +44 -0
- package/packages/orp-workspace-launcher/test/orp.test.js +224 -0
- package/packages/orp-workspace-launcher/test/tabs.test.js +168 -0
- package/scripts/orp-kernel-agent-pilot.py +10 -1
- package/scripts/orp-kernel-agent-replication.py +10 -1
- package/scripts/orp-kernel-canonical-continuation.py +10 -1
- package/scripts/orp-kernel-continuation-pilot.py +10 -1
- package/scripts/render-terminal-demo.py +416 -0
- package/spec/v1/exchange-report.schema.json +105 -0
- package/spec/v1/hosted-workspace-event.schema.json +102 -0
- package/spec/v1/hosted-workspace.schema.json +332 -0
- package/spec/v1/workspace.schema.json +108 -0
package/AGENT_INTEGRATION.md
CHANGED
|
@@ -6,10 +6,60 @@ integrate ORP by adding an **ORP section** to that file.
|
|
|
6
6
|
This makes ORP the agent’s default operating mode: explicit claim levels, reproducible verification, first-class failed paths,
|
|
7
7
|
and dispute resolution by verification/downgrade (not debate).
|
|
8
8
|
|
|
9
|
+
## Core Rule
|
|
10
|
+
|
|
11
|
+
Do not let ORP process scaffolding masquerade as evidence or repository truth.
|
|
12
|
+
|
|
13
|
+
ORP should keep the agent honest about:
|
|
14
|
+
|
|
15
|
+
- where ongoing work lives
|
|
16
|
+
- whether the repo is in a safe state
|
|
17
|
+
- which secret or credential should be used
|
|
18
|
+
- where the work sits in the larger frontier
|
|
19
|
+
- when a checkpoint should be created
|
|
20
|
+
|
|
21
|
+
But evidence still lives in canonical project artifacts: code, data, logs, papers, proofs, outputs.
|
|
22
|
+
|
|
23
|
+
## Minimum Working Loop
|
|
24
|
+
|
|
25
|
+
If the agent only remembers one ORP loop, it should be this:
|
|
26
|
+
|
|
27
|
+
1. recover the workspace ledger
|
|
28
|
+
```bash
|
|
29
|
+
orp workspace tabs main
|
|
30
|
+
```
|
|
31
|
+
2. inspect repo safety
|
|
32
|
+
```bash
|
|
33
|
+
orp status --json
|
|
34
|
+
```
|
|
35
|
+
3. resolve the right secret
|
|
36
|
+
```bash
|
|
37
|
+
orp secrets ensure --alias <alias> --provider <provider> --current-project --json
|
|
38
|
+
```
|
|
39
|
+
4. inspect the current frontier
|
|
40
|
+
```bash
|
|
41
|
+
orp frontier state --json
|
|
42
|
+
```
|
|
43
|
+
5. do the next honest move
|
|
44
|
+
6. checkpoint it honestly
|
|
45
|
+
```bash
|
|
46
|
+
orp checkpoint create -m "checkpoint note" --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
That is the ORP rhythm in one line:
|
|
50
|
+
|
|
51
|
+
- recover continuity
|
|
52
|
+
- inspect repo safety
|
|
53
|
+
- resolve access
|
|
54
|
+
- inspect context
|
|
55
|
+
- do the work
|
|
56
|
+
- checkpoint it honestly
|
|
57
|
+
|
|
9
58
|
## Agent discovery surfaces
|
|
10
59
|
|
|
11
60
|
Before deeper work, agents can discover ORP through three lightweight entry points:
|
|
12
61
|
|
|
62
|
+
- `docs/START_HERE.md` — canonical human/operator onboarding path for local-first ORP usage.
|
|
13
63
|
- `llms.txt` — concise repo/package map for agents that scan docs before acting.
|
|
14
64
|
- `orp about --json` — machine-readable tool metadata, stable artifact paths, schemas, and available packs.
|
|
15
65
|
- `orp pack list --json` — machine-readable inventory of bundled packs.
|
package/README.md
CHANGED
|
@@ -1,68 +1,54 @@
|
|
|
1
|
-
# ORP — Open Research Protocol
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
- `
|
|
38
|
-
- `
|
|
39
|
-
- `
|
|
40
|
-
- `
|
|
41
|
-
- `
|
|
42
|
-
- `
|
|
43
|
-
- `
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
ORP should feel like one CLI with built-in abilities:
|
|
53
|
-
|
|
54
|
-
- `workspace` for hosted auth, idea, feature, world, checkpoint, and worker operations
|
|
55
|
-
- `youtube` for public video metadata and transcript ingestion
|
|
56
|
-
- `governance` for local-first repo initialization, branch safety, checkpoint commits, backup refs, readiness, repair, and cleanup
|
|
57
|
-
- `discover` for profile-based GitHub scanning and opportunity selection
|
|
58
|
-
- `collaborate` for repository collaboration setup and workflow execution
|
|
59
|
-
- `erdos` for Erdos-specific data and workflow support
|
|
60
|
-
- `report` and `packet` for ORP artifacts
|
|
61
|
-
- `compute` for targeted compute admission, local execution, and paid approval gating
|
|
62
|
-
- `frontier` for exact live-point control, active-milestone views, near-term checklist management, and farther version-stack planning
|
|
63
|
-
|
|
64
|
-
The `pack` layer still exists, but it is now an advanced/internal surface rather
|
|
65
|
-
than the main product story.
|
|
1
|
+
# ORP — Open Research Protocol
|
|
2
|
+
|
|
3
|
+
Maintained by Fractal Research Group (`frg.earth`).
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/open-research-protocol)
|
|
6
|
+
[](https://www.npmjs.com/package/open-research-protocol)
|
|
7
|
+
[](https://github.com/SproutSeeds/orp/stargazers)
|
|
8
|
+
[](https://github.com/SproutSeeds/orp/issues)
|
|
9
|
+
[](./LICENSE)
|
|
10
|
+
[](https://www.npmjs.com/package/open-research-protocol)
|
|
11
|
+
|
|
12
|
+
> Agent-first CLI for workspace ledgers, local governance, secrets, scheduling, packets, reports, and research workflows.
|
|
13
|
+
|
|
14
|
+
**Links:** [GitHub](https://github.com/SproutSeeds/orp) · [npm](https://www.npmjs.com/package/open-research-protocol) · [frg.earth](https://frg.earth)
|
|
15
|
+
|
|
16
|
+
ORP is a unified CLI for research and research-like engineering. It helps humans and agents:
|
|
17
|
+
|
|
18
|
+
- keep a durable workspace ledger
|
|
19
|
+
- resolve the right secret
|
|
20
|
+
- schedule the next loop
|
|
21
|
+
- checkpoint and protect progress
|
|
22
|
+
- emit packets and reports
|
|
23
|
+
- keep hosted and local state aligned
|
|
24
|
+
|
|
25
|
+
**Boundary (non-negotiable):** ORP files are process-only. They are not evidence and must not be cited as proof. Evidence lives in canonical project artifacts such as code, data, papers, proofs, and logs.
|
|
26
|
+
|
|
27
|
+
ORP also supports optional modular **Instruments** for shaping inquiry upstream of claims. Instruments are process-only and do not change the verification boundary. See `modules/instruments/README.md` and `docs/WHY_INSTRUMENTS.md`.
|
|
28
|
+
|
|
29
|
+
## Watch It Run
|
|
30
|
+
|
|
31
|
+
A short ORP command-family walkthrough:
|
|
32
|
+
|
|
33
|
+

|
|
34
|
+
|
|
35
|
+
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:
|
|
36
|
+
|
|
37
|
+
- `home` for discovery and next actions
|
|
38
|
+
- `hosted` for ideas, workspaces, runners, and the control plane
|
|
39
|
+
- `secrets` for create-or-reuse plus local Keychain sync
|
|
40
|
+
- `workspace` for the hosted + local saved workspace ledger and recovery commands
|
|
41
|
+
- `schedule` for recurring Codex jobs
|
|
42
|
+
- `governance` for local checkpoints and repo safety
|
|
43
|
+
- `planning` for frontier, compute, packet, and report surfaces
|
|
44
|
+
- `synthesis` for discover, exchange, collaborate, and YouTube ingestion
|
|
45
|
+
- `mode` for optional perspective-shift nudges
|
|
46
|
+
|
|
47
|
+
Maintainer asset generation:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm run render:terminal-demo
|
|
51
|
+
```
|
|
66
52
|
|
|
67
53
|
## Install CLI (npm)
|
|
68
54
|
|
|
@@ -79,57 +65,205 @@ Prerequisites:
|
|
|
79
65
|
- Python 3 available on `PATH`
|
|
80
66
|
- `PyYAML` in that Python environment (`python3 -m pip install pyyaml`)
|
|
81
67
|
|
|
82
|
-
|
|
68
|
+
Local repo usage still works:
|
|
83
69
|
|
|
84
70
|
```bash
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
71
|
+
./scripts/orp -h
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Start Here
|
|
75
|
+
|
|
76
|
+
If you are new to ORP, use one canonical onboarding path:
|
|
77
|
+
|
|
78
|
+
- [docs/START_HERE.md](docs/START_HERE.md)
|
|
79
|
+
|
|
80
|
+
That guide now follows the same clearer rhythm we liked in `erdos-problems`:
|
|
81
|
+
|
|
82
|
+
- a fast `Start In 60 Seconds` path
|
|
83
|
+
- a zero-assumption `Beginner Flow`
|
|
84
|
+
- a practical `Daily Loop`
|
|
85
|
+
- a compact `Minimum Working Loop` for agents and operators
|
|
86
|
+
- the checkpoint governance loop in plain English
|
|
87
|
+
|
|
88
|
+
It walks through:
|
|
89
|
+
|
|
90
|
+
- `orp init`
|
|
91
|
+
- local-first workspace ledgers
|
|
92
|
+
- saved Codex and Claude resume commands
|
|
93
|
+
- secrets setup
|
|
94
|
+
- the checkpoint and governance loop
|
|
95
|
+
- optional hosted sync later
|
|
96
|
+
|
|
97
|
+
## Daily ORP Operating System
|
|
98
|
+
|
|
99
|
+
If you want the shortest honest map of day-to-day ORP, start here:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
orp
|
|
103
|
+
orp home
|
|
104
|
+
orp workspace tabs main
|
|
105
|
+
orp secrets ensure --alias openai-primary --provider openai --current-project
|
|
106
|
+
orp checkpoint create -m "capture loop state"
|
|
95
107
|
orp packet emit --profile default
|
|
96
108
|
orp report summary
|
|
97
|
-
|
|
109
|
+
orp frontier state
|
|
110
|
+
orp schedule list
|
|
111
|
+
orp mode nudge sleek-minimal-progressive
|
|
98
112
|
```
|
|
99
113
|
|
|
100
|
-
|
|
114
|
+
That sequence covers discovery, workspace recovery, secret resolution, governance, artifacts, planning, automation, and perspective-shift support.
|
|
101
115
|
|
|
102
|
-
|
|
103
|
-
- running bare `orp` opens the CLI home screen with packs and quick actions,
|
|
104
|
-
- the runtime can initialize a repo-local ORP-governed workspace,
|
|
105
|
-
- branch safety and checkpoint mechanics are available locally from day one,
|
|
106
|
-
- a gate run writes `RUN.json`,
|
|
107
|
-
- readiness can be marked explicitly after validation plus checkpointing,
|
|
108
|
-
- packet emit writes process metadata to `orp/packets/`,
|
|
109
|
-
- and report summary renders a one-page digest from the last run.
|
|
116
|
+
The shorter rule is:
|
|
110
117
|
|
|
111
|
-
|
|
118
|
+
- recover the workspace
|
|
119
|
+
- inspect repo safety
|
|
120
|
+
- resolve the right secret
|
|
121
|
+
- inspect the current frontier
|
|
122
|
+
- do the next honest move
|
|
123
|
+
- checkpoint at honest boundaries
|
|
124
|
+
|
|
125
|
+
## Secrets Quick Start
|
|
126
|
+
|
|
127
|
+
Today, ORP secrets use the hosted ORP secret inventory as the canonical store, with optional local macOS Keychain caching. That means the real first step for secrets is:
|
|
112
128
|
|
|
113
129
|
```bash
|
|
114
|
-
|
|
130
|
+
orp auth login
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
After that, there are two normal ways to save a secret.
|
|
134
|
+
|
|
135
|
+
For a human at the terminal, use the interactive path:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
orp secrets add --alias openai-primary --label "OpenAI Primary" --provider openai
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
ORP then prompts:
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
Secret value:
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
That is where you paste the real key.
|
|
148
|
+
|
|
149
|
+
For an agent or script, use stdin:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
printf '%s' 'sk-...' | orp secrets add --alias openai-primary --label "OpenAI Primary" --provider openai --value-stdin
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
After that:
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
orp secrets list
|
|
159
|
+
orp secrets show openai-primary
|
|
160
|
+
orp secrets resolve openai-primary --reveal
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
If you want the convenience command, `ensure` means:
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
use this saved key if it already exists, otherwise prompt for it and save it
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
So this command:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
orp secrets ensure --alias openai-primary --provider openai --current-project
|
|
115
173
|
```
|
|
116
174
|
|
|
117
|
-
|
|
175
|
+
does not contain the key itself. It means:
|
|
176
|
+
|
|
177
|
+
- look for a saved secret called `openai-primary`
|
|
178
|
+
- if it exists, reuse it
|
|
179
|
+
- if it does not exist, prompt for the key and save it
|
|
180
|
+
- attach it to the current project if needed
|
|
181
|
+
|
|
182
|
+
For secrets, the simplest plain-English rule is:
|
|
183
|
+
|
|
184
|
+
- `orp secrets add ...` = save a new key
|
|
185
|
+
- `orp secrets list` = see what is saved
|
|
186
|
+
- `orp secrets show ...` = inspect one saved key record
|
|
187
|
+
- `orp secrets resolve ...` = get the key value for use right now
|
|
188
|
+
- `orp secrets ensure ...` = use the saved key if it exists, otherwise create it
|
|
189
|
+
- `orp secrets sync-keychain ...` = keep a secure local Mac copy too
|
|
190
|
+
|
|
191
|
+
You can ignore `--env-var-name` at first. It is optional metadata like `OPENAI_API_KEY`, not the key itself.
|
|
192
|
+
|
|
193
|
+
## Product Map
|
|
194
|
+
|
|
195
|
+
Think of ORP as one CLI with a few major lanes:
|
|
196
|
+
|
|
197
|
+
- `home`, `about`, `mode`, `update`, `maintenance`
|
|
198
|
+
Discovery, status, creativity overlays, and ORP self-upkeep.
|
|
199
|
+
- `auth`, `ideas`, `world`, `workspaces`, `checkpoint queue`, `runner`, `agent`
|
|
200
|
+
Hosted control-plane operations.
|
|
201
|
+
- `workspace`, `secrets`, `schedule`
|
|
202
|
+
Workspace ledger recovery, API-key management, and recurring Codex jobs.
|
|
203
|
+
- `init`, `status`, `branch`, `checkpoint create`, `backup`, `ready`, `doctor`, `cleanup`
|
|
204
|
+
Local repo governance and safe operator flow.
|
|
205
|
+
- `packet`, `report`, `frontier`, `compute`
|
|
206
|
+
Structured artifacts, planning, and bounded compute control.
|
|
207
|
+
- `discover`, `exchange`, `collaborate`, `youtube`, `erdos`
|
|
208
|
+
Scanning, synthesis, workflow scaffolding, external source ingestion, and domain-specific support.
|
|
209
|
+
|
|
210
|
+
The `pack` layer still exists, but it is now an advanced/internal surface rather than the main product story.
|
|
211
|
+
|
|
212
|
+
For agents and machine integrations, the `--json` variants remain the canonical structured interface. The public demo and launch materials use the human-facing command output on purpose so the walkthrough matches what a person actually sees.
|
|
213
|
+
|
|
214
|
+
## Command Families
|
|
215
|
+
|
|
216
|
+
Landing and discovery:
|
|
118
217
|
|
|
119
218
|
```bash
|
|
120
219
|
orp
|
|
121
220
|
orp home --json
|
|
122
221
|
orp about --json
|
|
222
|
+
orp mode list --json
|
|
223
|
+
orp mode show sleek-minimal-progressive --json
|
|
224
|
+
orp mode nudge sleek-minimal-progressive --json
|
|
225
|
+
orp update --json
|
|
226
|
+
orp maintenance status --json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Hosted control plane:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
123
232
|
orp auth login
|
|
124
233
|
orp whoami --json
|
|
125
|
-
orp youtube inspect https://www.youtube.com/watch?v=<video_id> --json
|
|
126
|
-
orp youtube inspect https://www.youtube.com/watch?v=<video_id> --save --json
|
|
127
234
|
orp ideas list --json
|
|
128
|
-
orp
|
|
235
|
+
orp workspaces list --json
|
|
236
|
+
orp workspaces show <workspace-id> --json
|
|
129
237
|
orp checkpoint queue --idea-id <idea-id> --json
|
|
130
238
|
orp runner work --once --json
|
|
131
|
-
orp
|
|
132
|
-
|
|
239
|
+
orp agent work --once --json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Local desk and automation:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
orp workspace create main-cody-1
|
|
246
|
+
orp workspace list
|
|
247
|
+
orp workspace tabs main
|
|
248
|
+
orp workspace add-tab main --path /absolute/path/to/project --resume-command "codex resume <id>"
|
|
249
|
+
orp workspace remove-tab main --path /absolute/path/to/project
|
|
250
|
+
orp workspace sync main
|
|
251
|
+
orp secrets list --json
|
|
252
|
+
orp secrets ensure --alias openai-primary --provider openai --current-project --json
|
|
253
|
+
orp secrets sync-keychain openai-primary --json
|
|
254
|
+
orp schedule add codex --name morning-summary --prompt "Summarize this repo" --json
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
For secrets, the simplest plain-English rule is:
|
|
258
|
+
|
|
259
|
+
- `orp secrets ensure ...` = use the saved key if it already exists, or ask for it and create it if it does not
|
|
260
|
+
- `orp secrets resolve ...` = return the actual key value for use right now
|
|
261
|
+
- you can ignore `--env-var-name` at first; it is optional metadata, not the key itself
|
|
262
|
+
|
|
263
|
+
Local governance:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
orp init
|
|
133
267
|
orp status --json
|
|
134
268
|
orp branch start work/<topic> --json
|
|
135
269
|
orp checkpoint create -m "describe completed unit" --json
|
|
@@ -137,56 +271,57 @@ orp backup -m "backup current work" --json
|
|
|
137
271
|
orp ready --json
|
|
138
272
|
orp doctor --json
|
|
139
273
|
orp cleanup --json
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
orp pack list --json
|
|
146
|
-
orp pack install --pack-id erdos-open-problems --json
|
|
147
|
-
orp pack fetch --source <git-url> --pack-id <pack-id> --install-target . --json
|
|
148
|
-
orp gate run --profile default --json
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Artifacts, planning, and compute:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
149
279
|
orp packet emit --profile default --json
|
|
150
|
-
orp
|
|
151
|
-
orp compute decide --project-map orp.compute-map.json --point-id adult-vs-developmental-rgc-opponent --json
|
|
152
|
-
orp compute run-local --input orp.compute.json --task orp.compute.task.json --json
|
|
153
|
-
orp compute run-local --project-map orp.compute-map.json --point-id adult-vs-developmental-rgc-opponent --task orp.compute.task.json --json
|
|
154
|
-
orp frontier init --program-id ocular-controller --json
|
|
155
|
-
orp frontier add-version --id v10 --label "Certified generalization arc" --json
|
|
156
|
-
orp frontier add-milestone --version v10 --id v10.3 --label "Figure specification and data contract freeze" --band exact --json
|
|
157
|
-
orp frontier add-phase --milestone v10.3 --id 395 --label "Figure specification and data contract freeze" --compute-point-id adult-vs-developmental-rgc-opponent --allowed-rung local-4090 --paid-requires-user-approval --json
|
|
158
|
-
orp frontier set-live --version v10 --milestone v10.3 --phase 395 --band exact --next-action "Execute Phase 395" --json
|
|
280
|
+
orp report summary --json
|
|
159
281
|
orp frontier state --json
|
|
160
282
|
orp frontier roadmap --json
|
|
161
283
|
orp frontier checklist --json
|
|
162
|
-
orp
|
|
163
|
-
orp
|
|
164
|
-
|
|
284
|
+
orp compute decide --input orp.compute.json --json
|
|
285
|
+
orp compute run-local --input orp.compute.json --task orp.compute.task.json --json
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Scanning, synthesis, and collaboration:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
orp discover github scan --profile orp.profile.default.json --json
|
|
292
|
+
orp exchange repo synthesize /path/to/source --json
|
|
293
|
+
orp collaborate workflows --json
|
|
294
|
+
orp collaborate run --workflow full_flow --json
|
|
295
|
+
orp youtube inspect https://www.youtube.com/watch?v=<video_id> --json
|
|
296
|
+
orp erdos sync --json
|
|
165
297
|
```
|
|
166
298
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
- `
|
|
172
|
-
- `
|
|
173
|
-
- `
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
- `
|
|
181
|
-
- `
|
|
182
|
-
- `
|
|
183
|
-
- `
|
|
184
|
-
- `
|
|
185
|
-
- `docs/
|
|
186
|
-
- `docs/
|
|
187
|
-
- `
|
|
188
|
-
-
|
|
189
|
-
-
|
|
299
|
+
## Life Ops Bridge
|
|
300
|
+
|
|
301
|
+
ORP and Life Ops are meant to connect, but they are not the same package.
|
|
302
|
+
|
|
303
|
+
- `open-research-protocol` stays the main ORP CLI/runtime surface.
|
|
304
|
+
- `@lifeops/core` is the Life Ops SDK for normalized agenda items, outreach, and structured share-email drafting.
|
|
305
|
+
- `@lifeops/orp` is the bridge package that turns ORP JSON surfaces into Life Ops-compatible items and share-ready project input.
|
|
306
|
+
|
|
307
|
+
The bridge package lives at `packages/lifeops-orp/`.
|
|
308
|
+
|
|
309
|
+
## Key Docs
|
|
310
|
+
|
|
311
|
+
- `docs/START_HERE.md` for the canonical step-by-step starter path
|
|
312
|
+
- `AGENT_INTEGRATION.md` for integrating ORP into an agent's primary instructions
|
|
313
|
+
- `INSTALL.md` for adopting ORP in an existing repo or new project
|
|
314
|
+
- `docs/AGENT_LOOP.md` for the intended operator rhythm
|
|
315
|
+
- `docs/AGENT_MODES.md` for optional creativity and perspective overlays
|
|
316
|
+
- `docs/EXCHANGE.md` for repository/project synthesis
|
|
317
|
+
- `docs/CANONICAL_CLI_BOUNDARY.md` for CLI, Rust, and web responsibility boundaries
|
|
318
|
+
- `docs/ORP_HOSTED_WORKSPACE_CONTRACT.md` for the first-class hosted workspace model
|
|
319
|
+
- `docs/LAUNCH_KIT.md` for public positioning, demo flow, and launch copy
|
|
320
|
+
- `docs/NPM_RELEASE_CHECKLIST.md` and `docs/ORP_PUBLIC_LAUNCH_CHECKLIST.md` for release execution
|
|
321
|
+
- `llms.txt` for concise agent/LLM discovery
|
|
322
|
+
|
|
323
|
+
Stable artifact paths:
|
|
324
|
+
|
|
190
325
|
- `orp/state.json`
|
|
191
326
|
- `orp/artifacts/<run_id>/RUN.json`
|
|
192
327
|
- `orp/artifacts/<run_id>/RUN_SUMMARY.md`
|
|
@@ -195,12 +330,6 @@ These surfaces are meant to help automated systems discover ORP quickly:
|
|
|
195
330
|
- `orp/discovery/github/<scan_id>/SCAN.json`
|
|
196
331
|
- `orp/discovery/github/<scan_id>/SCAN_SUMMARY.md`
|
|
197
332
|
|
|
198
|
-
Release process:
|
|
199
|
-
|
|
200
|
-
- `docs/NPM_RELEASE_CHECKLIST.md`
|
|
201
|
-
- `docs/ORP_PUBLIC_LAUNCH_CHECKLIST.md`
|
|
202
|
-
- `.github/workflows/npm-publish.yml` (publishes on `v*` tags)
|
|
203
|
-
|
|
204
333
|
## Quick start (existing repo)
|
|
205
334
|
|
|
206
335
|
1. Copy this folder into your repo (recommended location: `orp/`).
|
package/bin/orp.js
CHANGED
|
@@ -6,6 +6,9 @@ const { spawnSync } = require("child_process");
|
|
|
6
6
|
|
|
7
7
|
const cliPath = path.resolve(__dirname, "..", "cli", "orp.py");
|
|
8
8
|
const computeCliUrl = pathToFileURL(path.resolve(__dirname, "orp-compute.mjs")).href;
|
|
9
|
+
const workspaceCliUrl = pathToFileURL(
|
|
10
|
+
path.resolve(__dirname, "..", "packages", "orp-workspace-launcher", "src", "orp-command.js"),
|
|
11
|
+
).href;
|
|
9
12
|
const argv = process.argv.slice(2);
|
|
10
13
|
|
|
11
14
|
const candidates = [];
|
|
@@ -27,11 +30,21 @@ async function runCompute(args) {
|
|
|
27
30
|
process.exit(code == null ? 0 : code);
|
|
28
31
|
}
|
|
29
32
|
|
|
33
|
+
async function runWorkspace(args) {
|
|
34
|
+
const mod = await import(workspaceCliUrl);
|
|
35
|
+
const code = await mod.runOrpWorkspaceCommand(args);
|
|
36
|
+
process.exit(code == null ? 0 : code);
|
|
37
|
+
}
|
|
38
|
+
|
|
30
39
|
async function main() {
|
|
31
40
|
if (argv[0] === "compute") {
|
|
32
41
|
await runCompute(argv.slice(1));
|
|
33
42
|
return;
|
|
34
43
|
}
|
|
44
|
+
if (argv[0] === "workspace") {
|
|
45
|
+
await runWorkspace(argv.slice(1));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
35
48
|
|
|
36
49
|
const captureOutput = isTopLevelHelp(argv);
|
|
37
50
|
let lastErr = null;
|
|
@@ -55,7 +68,7 @@ async function main() {
|
|
|
55
68
|
process.stderr.write(result.stderr);
|
|
56
69
|
}
|
|
57
70
|
if (result.status === 0) {
|
|
58
|
-
process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n");
|
|
71
|
+
process.stdout.write("\nAdditional wrapper surface:\n orp compute -h\n orp workspace tabs -h\n");
|
|
59
72
|
}
|
|
60
73
|
}
|
|
61
74
|
process.exit(result.status == null ? 1 : result.status);
|