open-research-protocol 0.4.19 → 0.4.21
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 +8 -0
- package/README.md +204 -16
- package/cli/orp.py +14969 -10304
- package/docs/AGENT_LOOP.md +39 -0
- package/docs/ORP_AUTONOMY_PROJECT_COMPILATION_MODEL.md +252 -0
- package/docs/START_HERE.md +241 -9
- package/package.json +1 -1
- package/packages/orp-workspace-launcher/README.md +19 -1
- package/packages/orp-workspace-launcher/src/core-plan.js +72 -2
- package/packages/orp-workspace-launcher/src/hosted-state.js +9 -0
- package/packages/orp-workspace-launcher/src/index.js +2 -0
- package/packages/orp-workspace-launcher/src/ledger.js +74 -2
- package/packages/orp-workspace-launcher/src/list.js +18 -0
- package/packages/orp-workspace-launcher/src/orp-command.js +8 -4
- package/packages/orp-workspace-launcher/src/orp.js +13 -0
- package/packages/orp-workspace-launcher/src/registry.js +10 -0
- package/packages/orp-workspace-launcher/src/sync.js +12 -0
- package/packages/orp-workspace-launcher/src/tabs.js +39 -2
- package/packages/orp-workspace-launcher/test/core-plan.test.js +13 -0
- package/packages/orp-workspace-launcher/test/ledger.test.js +50 -0
- package/packages/orp-workspace-launcher/test/list.test.js +19 -0
- package/packages/orp-workspace-launcher/test/tabs.test.js +51 -6
- package/spec/v1/workspace.schema.json +36 -2
package/docs/AGENT_LOOP.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Use this loop when an AI agent is the primary operator of an ORP-enabled repo.
|
|
4
4
|
|
|
5
|
+
For the longer-horizon model where ORP scans a project's specs, roadmaps, and
|
|
6
|
+
codebase, compiles what is autonomous, and runs until a true human gate, also
|
|
7
|
+
read:
|
|
8
|
+
|
|
9
|
+
- `docs/ORP_AUTONOMY_PROJECT_COMPILATION_MODEL.md`
|
|
10
|
+
|
|
5
11
|
## 1. Discover
|
|
6
12
|
|
|
7
13
|
- Read `llms.txt`.
|
|
@@ -12,6 +18,7 @@ Use this loop when an AI agent is the primary operator of an ORP-enabled repo.
|
|
|
12
18
|
- Treat it as an optional lens for deeper, wider, top-down, or rotated perspective shifts.
|
|
13
19
|
- If packs matter, run `orp pack list --json`.
|
|
14
20
|
- Read `PROTOCOL.md` before making claims.
|
|
21
|
+
- If the repo uses parent/child agent guidance, run `orp agents audit --json` so you know `AGENTS.md` and `CLAUDE.md` are aligned before taking a long-running path.
|
|
15
22
|
- If the task is external OSS contribution workflow or PR governance, read
|
|
16
23
|
`docs/EXTERNAL_CONTRIBUTION_GOVERNANCE.md` before selecting work.
|
|
17
24
|
- For the more detailed external-contribution operator rhythm, then read
|
|
@@ -20,9 +27,41 @@ Use this loop when an AI agent is the primary operator of an ORP-enabled repo.
|
|
|
20
27
|
## 2. Select Work
|
|
21
28
|
|
|
22
29
|
- Identify the target profile and canonical artifact paths.
|
|
30
|
+
- If the task depends on the current highest-leverage action slice, refresh ORP's agenda first:
|
|
31
|
+
- `orp agenda refresh --json`
|
|
32
|
+
- `orp agenda refresh-status --json`
|
|
33
|
+
- `orp agenda enable-refreshes --json`
|
|
34
|
+
- `orp agenda enable-refreshes --morning 08:30 --afternoon 13:00 --evening 18:30 --json`
|
|
35
|
+
- `orp agenda disable-refreshes --json`
|
|
36
|
+
- `orp agenda actions --json`
|
|
37
|
+
- `orp agenda suggestions --json`
|
|
38
|
+
- `orp agenda focus --json`
|
|
39
|
+
- `orp agenda set-north-star "Advance the ocular controller and ORP ecosystems" --json`
|
|
40
|
+
- If the task depends on umbrella guidance or project-specific agent instructions, inspect or refresh the managed files first:
|
|
41
|
+
- `orp agents root show --json`
|
|
42
|
+
- `orp agents sync --json`
|
|
43
|
+
- `orp agents audit --json`
|
|
44
|
+
- If the task depends on an external service, deployment target, dataset platform, or publishing destination, inspect the saved connections first:
|
|
45
|
+
- `orp connections providers --json`
|
|
46
|
+
- `orp connections list --json`
|
|
47
|
+
- `orp connections show <connection> --json`
|
|
48
|
+
- `orp connections add <connection-id> --provider github --auth-secret-alias <alias> --secret-binding releases=<alias> --json`
|
|
49
|
+
- `orp connections add <connection-id> --provider custom --label "Custom Service" --url https://example.org --secret-binding primary=<alias> --json`
|
|
50
|
+
- `orp connections update <connection> --status paused --json`
|
|
51
|
+
- `orp connections sync --json`
|
|
52
|
+
- `orp connections pull --json`
|
|
53
|
+
- If the task is shaped by contests, programs, grants, or similar openings, inspect the saved board first:
|
|
54
|
+
- `orp opportunities list --json`
|
|
55
|
+
- `orp opportunities show <board> --json`
|
|
56
|
+
- `orp opportunities focus <board> --limit 5 --json`
|
|
57
|
+
- `orp opportunities add <board> --title "<title>" --kind contest --section <section> --priority high --json`
|
|
58
|
+
- `orp opportunities update <board> <item-id> --status submitted --json`
|
|
59
|
+
- `orp opportunities sync <board> --json`
|
|
60
|
+
- `orp opportunities pull <board> --json`
|
|
23
61
|
- If the task needs an API key or token that is not already available, save it first:
|
|
24
62
|
- human interactive path:
|
|
25
63
|
- `orp secrets add --alias <alias> --label "<label>" --provider <provider>`
|
|
64
|
+
- `orp secrets add --alias <alias> --label "<label>" --provider <provider> --kind password --username <login>`
|
|
26
65
|
- agent/script path:
|
|
27
66
|
- `printf '%s' '<secret>' | orp secrets add --alias <alias> --label "<label>" --provider <provider> --value-stdin`
|
|
28
67
|
- convenience path:
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
# ORP Autonomy Project Compilation Model
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Define the product model for turning a real repo with specs, roadmap docs, and
|
|
6
|
+
code into an autonomous ORP lane that runs until a true human gate.
|
|
7
|
+
|
|
8
|
+
This is the missing bridge between:
|
|
9
|
+
|
|
10
|
+
- "the roadmap exists"
|
|
11
|
+
- and "the agent can actually keep going unattended"
|
|
12
|
+
|
|
13
|
+
## Core Claim
|
|
14
|
+
|
|
15
|
+
ORP should not require users to manually hand-build a runtime registry before
|
|
16
|
+
autonomy becomes useful.
|
|
17
|
+
|
|
18
|
+
Instead, ORP should:
|
|
19
|
+
|
|
20
|
+
1. scan the project's authority surfaces
|
|
21
|
+
2. infer what work is already executable
|
|
22
|
+
3. identify what still requires human judgment or real-world action
|
|
23
|
+
4. scaffold the missing runtime contracts
|
|
24
|
+
5. run the admissible work until a true stop gate
|
|
25
|
+
|
|
26
|
+
## The Problem This Solves
|
|
27
|
+
|
|
28
|
+
In real projects, a capable agent can often continue from:
|
|
29
|
+
|
|
30
|
+
- `AGENTS.md`
|
|
31
|
+
- roadmap/spec documents
|
|
32
|
+
- active notes
|
|
33
|
+
- codebase scripts and commands
|
|
34
|
+
|
|
35
|
+
But an unattended runtime cannot rely on implicit operator judgment.
|
|
36
|
+
|
|
37
|
+
The unattended system needs explicit answers to:
|
|
38
|
+
|
|
39
|
+
- what is the source of truth?
|
|
40
|
+
- what is a roadmap vs a pause policy?
|
|
41
|
+
- what step is next?
|
|
42
|
+
- what command actually runs that step?
|
|
43
|
+
- what output proves the step is done?
|
|
44
|
+
- what requires a human?
|
|
45
|
+
|
|
46
|
+
This model gives ORP a way to infer and scaffold those answers instead of
|
|
47
|
+
making the user encode them all by hand first.
|
|
48
|
+
|
|
49
|
+
## Core Concepts
|
|
50
|
+
|
|
51
|
+
### 1. Authority Surfaces
|
|
52
|
+
|
|
53
|
+
These are the repo objects that define what the project is allowed to treat as
|
|
54
|
+
planning authority.
|
|
55
|
+
|
|
56
|
+
Typical sources:
|
|
57
|
+
|
|
58
|
+
- `AGENTS.md`
|
|
59
|
+
- `llms.txt`
|
|
60
|
+
- roadmap/spec docs
|
|
61
|
+
- current frontier or "next step" notes
|
|
62
|
+
- state files
|
|
63
|
+
- package manifests
|
|
64
|
+
- scripts and make targets
|
|
65
|
+
- protocol docs
|
|
66
|
+
|
|
67
|
+
### 2. Coverage Map
|
|
68
|
+
|
|
69
|
+
ORP should build a row-by-row map of project nodes:
|
|
70
|
+
|
|
71
|
+
- already executable
|
|
72
|
+
- partially executable
|
|
73
|
+
- strategic only
|
|
74
|
+
- human gated
|
|
75
|
+
|
|
76
|
+
This is the bridge from roadmap language to runtime truth.
|
|
77
|
+
|
|
78
|
+
### 3. Runtime Unit
|
|
79
|
+
|
|
80
|
+
A roadmap node becomes runnable only when ORP can associate it with:
|
|
81
|
+
|
|
82
|
+
1. one recognized next-step surface
|
|
83
|
+
2. one concrete command or builder
|
|
84
|
+
3. expected outputs
|
|
85
|
+
4. verification/closeout
|
|
86
|
+
5. one stop-gate interpretation
|
|
87
|
+
|
|
88
|
+
### 4. True Human Gate
|
|
89
|
+
|
|
90
|
+
A true gate is not "the agent feels uncertain."
|
|
91
|
+
|
|
92
|
+
A true gate is a boundary like:
|
|
93
|
+
|
|
94
|
+
- spend or purchase
|
|
95
|
+
- outreach or counterparty contact
|
|
96
|
+
- provider/vendor selection with real consequences
|
|
97
|
+
- legal/oversight/compliance judgment
|
|
98
|
+
- external release
|
|
99
|
+
- claim-bearing promotion
|
|
100
|
+
- destructive irreversible action
|
|
101
|
+
- real-world biological/physical execution
|
|
102
|
+
|
|
103
|
+
## Proposed ORP Flow
|
|
104
|
+
|
|
105
|
+
### `orp autonomy scan`
|
|
106
|
+
|
|
107
|
+
Purpose:
|
|
108
|
+
|
|
109
|
+
- inspect the repo and identify the candidate authority surfaces
|
|
110
|
+
|
|
111
|
+
Outputs:
|
|
112
|
+
|
|
113
|
+
- authority stack
|
|
114
|
+
- route split if multiple roadmap families exist
|
|
115
|
+
- likely live frontier docs
|
|
116
|
+
- possible command/build surfaces
|
|
117
|
+
|
|
118
|
+
### `orp autonomy coverage`
|
|
119
|
+
|
|
120
|
+
Purpose:
|
|
121
|
+
|
|
122
|
+
- build the roadmap-to-runtime coverage matrix
|
|
123
|
+
|
|
124
|
+
Outputs:
|
|
125
|
+
|
|
126
|
+
- executable nodes
|
|
127
|
+
- partial nodes
|
|
128
|
+
- human-gated nodes
|
|
129
|
+
- missing compilation requirements
|
|
130
|
+
|
|
131
|
+
### `orp autonomy compile`
|
|
132
|
+
|
|
133
|
+
Purpose:
|
|
134
|
+
|
|
135
|
+
- scaffold runtime units for uncovered but admissible roadmap work
|
|
136
|
+
|
|
137
|
+
Outputs:
|
|
138
|
+
|
|
139
|
+
- task contracts
|
|
140
|
+
- mission contracts
|
|
141
|
+
- gate dossiers
|
|
142
|
+
- checkpoint/closeout contracts
|
|
143
|
+
|
|
144
|
+
### `orp autonomy run`
|
|
145
|
+
|
|
146
|
+
Purpose:
|
|
147
|
+
|
|
148
|
+
- execute the compiled lane until a true gate, no-runnable boundary, or failure
|
|
149
|
+
|
|
150
|
+
Behavior:
|
|
151
|
+
|
|
152
|
+
- derive next admissible task
|
|
153
|
+
- execute
|
|
154
|
+
- checkpoint
|
|
155
|
+
- refresh workspace state
|
|
156
|
+
- repeat
|
|
157
|
+
- stop only at true gates
|
|
158
|
+
|
|
159
|
+
### `orp autonomy gates`
|
|
160
|
+
|
|
161
|
+
Purpose:
|
|
162
|
+
|
|
163
|
+
- show active gates and what human decisions they require
|
|
164
|
+
|
|
165
|
+
Outputs:
|
|
166
|
+
|
|
167
|
+
- gate id
|
|
168
|
+
- exact trigger
|
|
169
|
+
- current packet/dossier
|
|
170
|
+
- safe parallel work
|
|
171
|
+
|
|
172
|
+
### `orp autonomy resume`
|
|
173
|
+
|
|
174
|
+
Purpose:
|
|
175
|
+
|
|
176
|
+
- reopen a paused lane after a human gate is explicitly approved
|
|
177
|
+
|
|
178
|
+
Outputs:
|
|
179
|
+
|
|
180
|
+
- resumed runtime context
|
|
181
|
+
- reopened next step
|
|
182
|
+
- continuation receipt
|
|
183
|
+
|
|
184
|
+
## Compilation Heuristics
|
|
185
|
+
|
|
186
|
+
ORP should infer aggressively but conservatively.
|
|
187
|
+
|
|
188
|
+
Good candidates for automatic compilation:
|
|
189
|
+
|
|
190
|
+
- builder scripts that emit canonical artifacts
|
|
191
|
+
- docs that use exact next-step language
|
|
192
|
+
- repeated checkpoint patterns
|
|
193
|
+
- task-specific notes with strong input/output structure
|
|
194
|
+
|
|
195
|
+
Bad candidates for automatic compilation:
|
|
196
|
+
|
|
197
|
+
- vague strategic narratives with no runnable command
|
|
198
|
+
- tasks that imply counterparty contact
|
|
199
|
+
- tasks that imply money
|
|
200
|
+
- steps that promote support-only outputs into authority
|
|
201
|
+
|
|
202
|
+
## What ORP Should Emit
|
|
203
|
+
|
|
204
|
+
For a real project, the compiled autonomy packet should include:
|
|
205
|
+
|
|
206
|
+
- authority surfaces
|
|
207
|
+
- roadmap hierarchy
|
|
208
|
+
- coverage matrix
|
|
209
|
+
- task registry
|
|
210
|
+
- mission queue
|
|
211
|
+
- stop-gate policy
|
|
212
|
+
- human dossier templates
|
|
213
|
+
- run-until-gate launch surface
|
|
214
|
+
- resume-after-gate surface
|
|
215
|
+
|
|
216
|
+
## Boundary Rule
|
|
217
|
+
|
|
218
|
+
ORP remains process/governance infrastructure.
|
|
219
|
+
|
|
220
|
+
It can compile, route, checkpoint, and pause.
|
|
221
|
+
|
|
222
|
+
It must not treat its own packets as scientific or operational evidence.
|
|
223
|
+
Evidence still lives in the repo's canonical artifacts.
|
|
224
|
+
|
|
225
|
+
## Example Pattern
|
|
226
|
+
|
|
227
|
+
The controller benchmark experiment surfaced the exact shape:
|
|
228
|
+
|
|
229
|
+
1. exploit public/support-only work fully
|
|
230
|
+
2. compile the remaining pre-outreach tasks
|
|
231
|
+
3. keep drafts unsent
|
|
232
|
+
4. stop only when the next step would actually contact a counterparty or spend
|
|
233
|
+
5. emit a gate dossier
|
|
234
|
+
6. resume only after the human opens that gate
|
|
235
|
+
|
|
236
|
+
That pattern is generalizable well beyond one biotech project.
|
|
237
|
+
|
|
238
|
+
## Success Criteria
|
|
239
|
+
|
|
240
|
+
This model is working when ORP can take a repo with real specs and roadmaps and
|
|
241
|
+
produce:
|
|
242
|
+
|
|
243
|
+
- one honest "what can be done autonomously?" map
|
|
244
|
+
- one honest "where do humans still matter?" map
|
|
245
|
+
- one runnable autonomous lane
|
|
246
|
+
- one clean pause packet at the first real human boundary
|
|
247
|
+
|
|
248
|
+
## One-Sentence Version
|
|
249
|
+
|
|
250
|
+
ORP should compile a project's real planning surfaces into an executable
|
|
251
|
+
autonomous lane that keeps going until the work reaches a true human gate,
|
|
252
|
+
instead of requiring users to hand-author the whole runtime first.
|
package/docs/START_HERE.md
CHANGED
|
@@ -7,6 +7,10 @@ The design goal is simple:
|
|
|
7
7
|
- local-first by default
|
|
8
8
|
- hosted sync is optional
|
|
9
9
|
- the workspace ledger remembers where ongoing work lives
|
|
10
|
+
- `AGENTS.md` and `CLAUDE.md` keep umbrella and child guidance aligned
|
|
11
|
+
- the agenda keeps two ranked lists for what matters now and what to expand next
|
|
12
|
+
- the connections registry remembers which services, accounts, and secret aliases power your tooling
|
|
13
|
+
- opportunity boards remember contests, programs, grants, and similar openings
|
|
10
14
|
- repo governance keeps work intentional
|
|
11
15
|
- the agent uses ORP as its operating lens, not as an afterthought
|
|
12
16
|
|
|
@@ -17,6 +21,7 @@ Do not let ORP process scaffolding masquerade as evidence or repository truth.
|
|
|
17
21
|
ORP is there to:
|
|
18
22
|
|
|
19
23
|
- keep the workspace ledger honest
|
|
24
|
+
- keep connection identities and auth references organized
|
|
20
25
|
- keep repo governance explicit
|
|
21
26
|
- keep secrets and continuity usable
|
|
22
27
|
- help the agent stay aligned
|
|
@@ -35,9 +40,19 @@ If you already know you want the standard local-first ORP loop in a repo, the fa
|
|
|
35
40
|
|
|
36
41
|
```bash
|
|
37
42
|
orp home
|
|
43
|
+
orp agents root set /absolute/path/to/projects
|
|
38
44
|
orp init
|
|
45
|
+
orp agents audit
|
|
39
46
|
orp workspace create main-cody-1
|
|
40
47
|
orp workspace tabs main
|
|
48
|
+
orp agenda refresh --json
|
|
49
|
+
orp agenda focus
|
|
50
|
+
orp connections providers
|
|
51
|
+
orp connections add github-main --provider github --label "GitHub Main" --auth-secret-alias github-main
|
|
52
|
+
orp connections add huggingface-main --provider huggingface --label "Hugging Face" --secret-binding primary=hf-main --secret-binding publish=hf-publish
|
|
53
|
+
orp connections add my-science-portal --provider custom --label "My Science Portal" --url https://example.org --secret-binding primary=my-science-token
|
|
54
|
+
orp opportunities create main-opportunities --label "Main Opportunities"
|
|
55
|
+
orp opportunities list
|
|
41
56
|
orp secrets ensure --alias openai-primary --provider openai --current-project --json
|
|
42
57
|
orp status --json
|
|
43
58
|
orp checkpoint create -m "capture loop state" --json
|
|
@@ -46,9 +61,14 @@ orp checkpoint create -m "capture loop state" --json
|
|
|
46
61
|
That gets you:
|
|
47
62
|
|
|
48
63
|
- the discovery screen
|
|
64
|
+
- an optional umbrella projects root for parent/child agent guidance
|
|
49
65
|
- repo governance initialized
|
|
66
|
+
- repo-level AGENTS.md and CLAUDE.md scaffolded or refreshed
|
|
50
67
|
- a local workspace ledger
|
|
51
68
|
- the main recovery surface
|
|
69
|
+
- a local operating agenda
|
|
70
|
+
- a saved connection record for a real integration
|
|
71
|
+
- a separate opportunities board for contests/programs/grants
|
|
52
72
|
- secrets setup
|
|
53
73
|
- a clean repo-governance read
|
|
54
74
|
- a first intentional checkpoint
|
|
@@ -97,6 +117,9 @@ More concretely, `orp init` does these jobs:
|
|
|
97
117
|
- `orp/HANDOFF.md`
|
|
98
118
|
- `orp/checkpoints/CHECKPOINT_LOG.md`
|
|
99
119
|
- `analysis/orp.kernel.task.yml`
|
|
120
|
+
- scaffolds or updates:
|
|
121
|
+
- `AGENTS.md`
|
|
122
|
+
- `CLAUDE.md`
|
|
100
123
|
- writes governance metadata like:
|
|
101
124
|
- `orp/governance.json`
|
|
102
125
|
- `orp/agent-policy.json`
|
|
@@ -104,6 +127,31 @@ More concretely, `orp init` does these jobs:
|
|
|
104
127
|
|
|
105
128
|
So `orp init` is not "start doing the work." It is "make this repo legible and governable for humans and agents."
|
|
106
129
|
|
|
130
|
+
The important subtlety is that ORP does not own those agent files outright:
|
|
131
|
+
|
|
132
|
+
- if `AGENTS.md` or `CLAUDE.md` already exists, ORP preserves the human-written content and only refreshes its own marked blocks
|
|
133
|
+
- if the file is missing, ORP scaffolds it with a sensible starter structure
|
|
134
|
+
- the ORP-managed blocks can point a child repo back to a higher-level umbrella projects root when you configure one
|
|
135
|
+
|
|
136
|
+
If you keep many repos under one shared parent directory, set that umbrella root once:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
orp agents root set /absolute/path/to/projects
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Then initialize or resync a child repo with the parent explicitly linked:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
orp init --projects-root /absolute/path/to/projects
|
|
146
|
+
orp agents audit
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
If you want to refresh the files later without rerunning the full repo bootstrap:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
orp agents sync
|
|
153
|
+
```
|
|
154
|
+
|
|
107
155
|
After that, check the repo state:
|
|
108
156
|
|
|
109
157
|
```bash
|
|
@@ -115,7 +163,7 @@ orp status --json
|
|
|
115
163
|
This is the local-first memory layer for ongoing work.
|
|
116
164
|
|
|
117
165
|
```bash
|
|
118
|
-
orp workspace create main-
|
|
166
|
+
orp workspace create mac-main --machine-label "Mac Studio"
|
|
119
167
|
orp workspace list
|
|
120
168
|
orp workspace tabs main
|
|
121
169
|
```
|
|
@@ -126,15 +174,21 @@ The important idea is:
|
|
|
126
174
|
|
|
127
175
|
- the workspace ledger is not a GUI tab manager
|
|
128
176
|
- it is the saved memory of where work lives
|
|
129
|
-
- it stores paths plus exact resumable command lines
|
|
177
|
+
- it stores machine-specific paths plus exact resumable command lines
|
|
178
|
+
- it can also store portable remote repo URLs and bootstrap commands for another machine
|
|
130
179
|
- it is the crash-recovery layer for you and the agent
|
|
131
180
|
|
|
181
|
+
This is separate from the agent-instruction hierarchy:
|
|
182
|
+
|
|
183
|
+
- `workspace` remembers concrete working continuity like paths and resume commands
|
|
184
|
+
- `agents` keeps the higher-level parent/child guidance files aligned
|
|
185
|
+
|
|
132
186
|
### 5. Save ongoing tabs and sessions
|
|
133
187
|
|
|
134
188
|
If you want ORP to remember an ongoing repo path plus a resumable session, add it explicitly:
|
|
135
189
|
|
|
136
190
|
```bash
|
|
137
|
-
orp workspace add-tab main --path /absolute/path/to/project --resume-command "codex resume <session-id>"
|
|
191
|
+
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 <session-id>"
|
|
138
192
|
```
|
|
139
193
|
|
|
140
194
|
For Claude:
|
|
@@ -161,6 +215,17 @@ or:
|
|
|
161
215
|
resume: cd '/absolute/path/to/project' && claude --resume <session-id>
|
|
162
216
|
```
|
|
163
217
|
|
|
218
|
+
If you also save a remote repo and bootstrap command, `orp workspace tabs main` will show extra lines like:
|
|
219
|
+
|
|
220
|
+
```text
|
|
221
|
+
remote: git@github.com:org/project.git [branch main]
|
|
222
|
+
clone: git clone 'git@github.com:org/project.git' 'project'
|
|
223
|
+
bootstrap: npm install
|
|
224
|
+
setup: git clone 'git@github.com:org/project.git' 'project' && cd 'project' && npm install
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
That is the portable part a second machine can use. The local `path` and the local `resume:` line still belong to the machine that saved the session.
|
|
228
|
+
|
|
164
229
|
To remove something from the saved ledger:
|
|
165
230
|
|
|
166
231
|
```bash
|
|
@@ -170,12 +235,168 @@ orp workspace remove-tab main --path /absolute/path/to/project
|
|
|
170
235
|
So the `workspace` lane is really:
|
|
171
236
|
|
|
172
237
|
- `create` a ledger
|
|
173
|
-
- `add-tab` to remember a path/session
|
|
238
|
+
- `add-tab` to remember a path/session and, optionally, the remote/bootstrap details needed on another rig
|
|
174
239
|
- `remove-tab` to prune old work
|
|
175
240
|
- `tabs` to inspect exact saved recovery commands
|
|
176
241
|
- `list` to see all saved workspaces
|
|
177
242
|
|
|
178
|
-
### 6.
|
|
243
|
+
### 6. Create one agenda lane
|
|
244
|
+
|
|
245
|
+
This is the separate memory lane for ranked action pressure and ranked suggestions. It is intentionally distinct from `workspace`, `connections`, and `opportunities`.
|
|
246
|
+
|
|
247
|
+
Run one refresh:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
orp agenda refresh --json
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
Check whether recurring refreshes are enabled:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
orp agenda refresh-status --json
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
If you want ORP to refresh the agenda on a schedule, you must opt in explicitly. Nothing starts making recurring Codex calls until you enable it yourself. The starter preset is morning, afternoon, and evening:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
orp agenda enable-refreshes --json
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
If you want your own times instead, override them directly:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
orp agenda enable-refreshes --morning 08:30 --afternoon 13:00 --evening 18:30 --json
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
Disable the recurring refreshes any time:
|
|
272
|
+
|
|
273
|
+
```bash
|
|
274
|
+
orp agenda disable-refreshes --json
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Inspect the saved outputs:
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
orp agenda actions
|
|
281
|
+
orp agenda suggestions
|
|
282
|
+
orp agenda focus
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
If you want ORP to optimize around one explicit north star instead of inferring it from current context:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
orp agenda set-north-star "Advance the ocular controller and ORP ecosystems"
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
The practical model is:
|
|
292
|
+
|
|
293
|
+
- `agenda refresh` is a real Codex reasoning pass
|
|
294
|
+
- it reads current main-workspace context, GitHub pressure, opportunities, and connections
|
|
295
|
+
- it writes two saved ranked lists locally:
|
|
296
|
+
- `actions`
|
|
297
|
+
- `suggestions`
|
|
298
|
+
- recurring agenda refreshes are disabled by default until the user enables them
|
|
299
|
+
- the built-in default schedule is morning, afternoon, and evening, but user-chosen times win
|
|
300
|
+
- `focus` is the fastest operator and agent recall surface
|
|
301
|
+
|
|
302
|
+
### 7. Create one connections registry
|
|
303
|
+
|
|
304
|
+
This is the separate memory lane for service accounts, data sources, deploy targets, databases, archives, and public research destinations. It is intentionally distinct from both `workspace` and `secrets`.
|
|
305
|
+
|
|
306
|
+
Inspect the built-in provider templates first if they help:
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
orp connections providers
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
Add one saved connection that references a saved ORP secret alias:
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
orp connections add github-main --provider github --label "GitHub Main" --account cody --organization sproutseeds --auth-secret-alias github-main
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
If the same service needs multiple tokens, keep them together under named secret bindings:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
orp connections add huggingface-main --provider huggingface --label "Hugging Face" --account cody --secret-binding primary=hf-main --secret-binding publish=hf-publish --secret-binding inference=hf-inference
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
If ORP has never seen the service before, use `custom` and keep going:
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
orp connections add my-science-portal --provider custom --label "My Science Portal" --url https://example.org --secret-binding primary=my-science-token
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Inspect or update it later:
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
orp connections show github-main
|
|
334
|
+
orp connections list
|
|
335
|
+
orp connections update github-main --status paused
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
Mirror the same registry to hosted ORP when you want the same setup on another machine:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
orp auth login
|
|
342
|
+
orp connections sync --json
|
|
343
|
+
orp connections pull --json
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
The important idea is:
|
|
347
|
+
|
|
348
|
+
- `secrets` stores the actual sensitive value
|
|
349
|
+
- `connections` stores the provider/account/capability record and which secret alias or named secret bindings power it
|
|
350
|
+
- `workspace` stores where current work lives
|
|
351
|
+
- built-in providers are optional; `custom` is the straight path for anything new or specialized
|
|
352
|
+
|
|
353
|
+
### 8. Create one opportunities board
|
|
354
|
+
|
|
355
|
+
This is the separate memory lane for contests, programs, grants, fellowships, and similar openings. It is intentionally distinct from `workspace`.
|
|
356
|
+
|
|
357
|
+
Create one board:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
orp opportunities create main-opportunities --label "Main Opportunities"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
Add one tracked item:
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
orp opportunities add main-opportunities --title "vision-prize" --kind contest --section ocular-longevity --priority high --url https://example.com/vision-prize
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
Inspect the board:
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
orp opportunities show main-opportunities
|
|
373
|
+
orp opportunities focus main-opportunities --limit 5
|
|
374
|
+
orp opportunities list
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Update or remove one item:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
orp opportunities update main-opportunities vision-prize --status submitted
|
|
381
|
+
orp opportunities remove main-opportunities vision-prize
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
If you authenticate later and want the same board on another machine, mirror it:
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
orp auth login
|
|
388
|
+
orp opportunities sync main-opportunities --json
|
|
389
|
+
orp opportunities pull main-opportunities --json
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
The important idea is:
|
|
393
|
+
|
|
394
|
+
- `workspace` remembers where active sessions live
|
|
395
|
+
- `opportunities` remembers what external openings matter
|
|
396
|
+
- agents can read and update both, but they should stay separate
|
|
397
|
+
- local-first is the default; hosted sync is optional
|
|
398
|
+
|
|
399
|
+
### 9. Set up secrets
|
|
179
400
|
|
|
180
401
|
Today, secrets are the one part of ORP that still starts from the hosted ORP account layer. So before you save or resolve secrets, log in:
|
|
181
402
|
|
|
@@ -220,6 +441,17 @@ That is the clearest beginner flow:
|
|
|
220
441
|
4. list or show it later
|
|
221
442
|
5. resolve it when you need to use it
|
|
222
443
|
|
|
444
|
+
If the service needs a username too, save that alongside the secret:
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
orp secrets add --alias huggingface-login --label "Hugging Face Login" --provider huggingface --kind password --username cody
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
That means ORP can remember both:
|
|
451
|
+
|
|
452
|
+
- the secret value
|
|
453
|
+
- the related username/login identifier
|
|
454
|
+
|
|
223
455
|
#### Agent or script flow
|
|
224
456
|
|
|
225
457
|
If an agent or script needs to save a key non-interactively, use stdin:
|
|
@@ -320,7 +552,7 @@ The right mental model is:
|
|
|
320
552
|
- if the key is missing and you did not pass a value, ORP prompts you for it
|
|
321
553
|
- `add` is the clearest first command for a brand-new human user
|
|
322
554
|
|
|
323
|
-
###
|
|
555
|
+
### 10. Start working safely
|
|
324
556
|
|
|
325
557
|
ORP's default repo-governance loop is:
|
|
326
558
|
|
|
@@ -396,7 +628,7 @@ So the checkpoint governance loop is really:
|
|
|
396
628
|
|
|
397
629
|
That is the part of ORP that keeps the human, the agent, and the repo in check together.
|
|
398
630
|
|
|
399
|
-
###
|
|
631
|
+
### 11. Keep the program context visible
|
|
400
632
|
|
|
401
633
|
If the work belongs to a longer-running research or product trajectory:
|
|
402
634
|
|
|
@@ -412,7 +644,7 @@ The distinction is:
|
|
|
412
644
|
- `workspace` answers: where is the work physically happening?
|
|
413
645
|
- `frontier` answers: where are we logically in the larger program?
|
|
414
646
|
|
|
415
|
-
###
|
|
647
|
+
### 12. Use optional perspective support
|
|
416
648
|
|
|
417
649
|
When the work feels too linear, too trapped, or too narrow:
|
|
418
650
|
|
|
@@ -429,7 +661,7 @@ It is there to help with:
|
|
|
429
661
|
- rotating the angle of attack
|
|
430
662
|
- keeping the work fresh without making the workflow sloppy
|
|
431
663
|
|
|
432
|
-
###
|
|
664
|
+
### 13. Optional hosted sync
|
|
433
665
|
|
|
434
666
|
Hosted ORP is not required for the local workspace ledger or repo-governance loop.
|
|
435
667
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "open-research-protocol",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.21",
|
|
4
4
|
"description": "ORP CLI (Open Research Protocol): workspace ledgers, secrets, scheduling, governed execution, and agent-friendly research workflows.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Fractal Research Group <cody@frg.earth>",
|