open-research-protocol 0.3.0 → 0.4.1
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/INSTALL.md +19 -1
- package/README.md +16 -4
- package/cli/orp.py +1598 -14
- package/docs/DISCOVER.md +9 -13
- package/docs/NPM_RELEASE_CHECKLIST.md +7 -7
- package/docs/ORP_PUBLIC_LAUNCH_CHECKLIST.md +64 -0
- package/docs/ORP_WEB_DOMAIN_TRANSITION_PLAN.md +106 -0
- package/package.json +1 -1
- package/docs/CODA_ORP_CONTRACT.md +0 -222
package/docs/DISCOVER.md
CHANGED
|
@@ -12,7 +12,8 @@ The first concrete surface is a GitHub profile scanner:
|
|
|
12
12
|
- hand off the strongest match into `orp collaborate`
|
|
13
13
|
|
|
14
14
|
Today ORP scans public GitHub owner space by default. If richer access policy
|
|
15
|
-
or profile governance exists later,
|
|
15
|
+
or profile governance exists later, ORP should still own the portable profile
|
|
16
|
+
format and the resulting scan artifacts.
|
|
16
17
|
|
|
17
18
|
## Commands
|
|
18
19
|
|
|
@@ -52,18 +53,13 @@ GitHub scans write:
|
|
|
52
53
|
|
|
53
54
|
These are process-only recommendation artifacts, not evidence.
|
|
54
55
|
|
|
55
|
-
##
|
|
56
|
+
## Ownership
|
|
56
57
|
|
|
57
|
-
ORP
|
|
58
|
-
artifacts.
|
|
58
|
+
ORP owns:
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
- the portable discovery profile format
|
|
61
|
+
- GitHub scanning
|
|
62
|
+
- ranked discovery artifacts
|
|
61
63
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
- wrap ORP commands for a smoother operator UX
|
|
65
|
-
|
|
66
|
-
That keeps ORP as the protocol/runtime while letting Coda become a higher-level
|
|
67
|
-
profile manager if it earns its place.
|
|
68
|
-
|
|
69
|
-
For the fuller boundary, see `docs/CODA_ORP_CONTRACT.md`.
|
|
64
|
+
Other tools may read or trigger ORP discovery, but ORP does not depend on a
|
|
65
|
+
wrapper to manage active context or profile selection.
|
|
@@ -15,11 +15,11 @@ Use this checklist to publish professional, versioned ORP CLI releases.
|
|
|
15
15
|
1. Ensure `main` is green and local tests pass:
|
|
16
16
|
- `python3 -m unittest discover -s tests -v`
|
|
17
17
|
- `npm pack --dry-run --cache /tmp/orp-npm-cache`
|
|
18
|
-
2. Bump version in `package.json` (for example `0.
|
|
18
|
+
2. Bump version in `package.json` (for example `0.4.0`).
|
|
19
19
|
3. Commit and push the version bump to `main`.
|
|
20
20
|
4. Create and push a matching tag:
|
|
21
|
-
- `git tag v0.
|
|
22
|
-
- `git push origin v0.
|
|
21
|
+
- `git tag v0.4.0`
|
|
22
|
+
- `git push origin v0.4.0`
|
|
23
23
|
5. Watch workflow:
|
|
24
24
|
- `.github/workflows/npm-publish.yml`
|
|
25
25
|
- tag push is the normal publish trigger
|
|
@@ -32,8 +32,8 @@ Use this checklist to publish professional, versioned ORP CLI releases.
|
|
|
32
32
|
Tag version must match `package.json` exactly.
|
|
33
33
|
|
|
34
34
|
- Example:
|
|
35
|
-
- tag: `v0.
|
|
36
|
-
- package version: `0.
|
|
35
|
+
- tag: `v0.4.0`
|
|
36
|
+
- package version: `0.4.0`
|
|
37
37
|
|
|
38
38
|
The publish workflow hard-fails if these differ.
|
|
39
39
|
|
|
@@ -48,8 +48,8 @@ If automation is temporarily unavailable:
|
|
|
48
48
|
3. Publish:
|
|
49
49
|
- `npm publish --access public`
|
|
50
50
|
4. Create and push the matching tag:
|
|
51
|
-
- `git tag v0.
|
|
52
|
-
- `git push origin v0.
|
|
51
|
+
- `git tag v0.4.0`
|
|
52
|
+
- `git push origin v0.4.0`
|
|
53
53
|
5. Add release notes.
|
|
54
54
|
|
|
55
55
|
The tag-triggered workflow will still validate the version and will skip `npm publish` if that exact npm version already exists.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# ORP Public Launch Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist when releasing ORP as the unified public CLI and product surface.
|
|
4
|
+
|
|
5
|
+
## 1. CLI readiness
|
|
6
|
+
|
|
7
|
+
- Run:
|
|
8
|
+
- `python3 -m unittest discover -s tests -v`
|
|
9
|
+
- `npm pack --dry-run --cache /tmp/orp-npm-cache`
|
|
10
|
+
- Smoke-test in a fresh directory:
|
|
11
|
+
- `npm i -g open-research-protocol`
|
|
12
|
+
- `orp about --json`
|
|
13
|
+
- `orp auth login`
|
|
14
|
+
- `orp whoami --json`
|
|
15
|
+
- `orp ideas list --json`
|
|
16
|
+
|
|
17
|
+
## 2. Hosted workspace readiness
|
|
18
|
+
|
|
19
|
+
- Confirm the hosted workspace base URL is reachable.
|
|
20
|
+
- Confirm login / verify / whoami still work from the published `orp` binary.
|
|
21
|
+
- Confirm at least one real hosted idea can be:
|
|
22
|
+
- listed
|
|
23
|
+
- shown
|
|
24
|
+
- world-bound
|
|
25
|
+
- checkpoint-queued
|
|
26
|
+
|
|
27
|
+
## 3. Worker loop readiness
|
|
28
|
+
|
|
29
|
+
- Confirm one bound world can complete:
|
|
30
|
+
- `orp checkpoint queue --idea-id <idea-id> --json`
|
|
31
|
+
- `orp agent work --once --json`
|
|
32
|
+
- Confirm the checkpoint response lands back in the hosted workspace.
|
|
33
|
+
|
|
34
|
+
## 4. Package release
|
|
35
|
+
|
|
36
|
+
- Bump `package.json` version.
|
|
37
|
+
- Commit and push `main`.
|
|
38
|
+
- Tag and push:
|
|
39
|
+
- `git tag vX.Y.Z`
|
|
40
|
+
- `git push origin vX.Y.Z`
|
|
41
|
+
- Publish if needed:
|
|
42
|
+
- `npm publish --access public`
|
|
43
|
+
|
|
44
|
+
## 5. Transition messaging
|
|
45
|
+
|
|
46
|
+
- Treat ORP as the primary CLI surface.
|
|
47
|
+
- Point old `coda-cli` users toward:
|
|
48
|
+
- `npm i -g open-research-protocol`
|
|
49
|
+
- `orp`
|
|
50
|
+
- Legacy `@sproutseeds/coda-cli` package is deprecated with a migration note to `open-research-protocol`.
|
|
51
|
+
|
|
52
|
+
## 6. Post-release checks
|
|
53
|
+
|
|
54
|
+
- `npm view open-research-protocol version`
|
|
55
|
+
- `npm i -g open-research-protocol`
|
|
56
|
+
- `orp -h`
|
|
57
|
+
- `orp about --json`
|
|
58
|
+
|
|
59
|
+
## 7. Web app rollout coordination
|
|
60
|
+
|
|
61
|
+
- Keep the web app and CLI rollout loosely coupled.
|
|
62
|
+
- Launch the ORP CLI first if the web app/domain transition is still in progress.
|
|
63
|
+
- Do not change domain, auth, runner, and package names all in one step unless all staging checks are green.
|
|
64
|
+
- Follow [ORP_WEB_DOMAIN_TRANSITION_PLAN.md](/Users/codymitchell/Documents/code/orp/docs/ORP_WEB_DOMAIN_TRANSITION_PLAN.md) for the hosted cutover sequence.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ORP Web Domain Transition Plan
|
|
2
|
+
|
|
3
|
+
Use this as the rollout record and future reference for the hosted ORP web app domain transition from `codacli.com` to the ORP-aligned domains.
|
|
4
|
+
|
|
5
|
+
## Target shape
|
|
6
|
+
|
|
7
|
+
- Primary branded domain: `orp.earth`
|
|
8
|
+
- Full-name support domain: `openresearchprotocol.com`
|
|
9
|
+
- Legacy redirect domain: `codacli.com`
|
|
10
|
+
|
|
11
|
+
## Current live state
|
|
12
|
+
|
|
13
|
+
- CLI/package is already public as:
|
|
14
|
+
- `open-research-protocol`
|
|
15
|
+
- `orp`
|
|
16
|
+
- Hosted app canonical browser host:
|
|
17
|
+
- `https://orp.earth`
|
|
18
|
+
- Support domain:
|
|
19
|
+
- `https://openresearchprotocol.com`
|
|
20
|
+
- Legacy redirect domain:
|
|
21
|
+
- `https://codacli.com`
|
|
22
|
+
- CLI default hosted base URL:
|
|
23
|
+
- `https://orp.earth`
|
|
24
|
+
- Browser redirects are live:
|
|
25
|
+
- `www.orp.earth` -> `orp.earth`
|
|
26
|
+
- `openresearchprotocol.com` -> `orp.earth`
|
|
27
|
+
- `www.openresearchprotocol.com` -> `orp.earth`
|
|
28
|
+
- `codacli.com` -> `orp.earth`
|
|
29
|
+
- `www.codacli.com` -> `orp.earth`
|
|
30
|
+
|
|
31
|
+
## What is complete
|
|
32
|
+
|
|
33
|
+
- `orp.earth` and `openresearchprotocol.com` are attached to the Vercel project.
|
|
34
|
+
- Namecheap DNS points all new domains at Vercel.
|
|
35
|
+
- `orp.earth` is the canonical browser/app host.
|
|
36
|
+
- Browser traffic from the legacy domains redirects to `orp.earth`.
|
|
37
|
+
- ORP CLI now defaults to `https://orp.earth`.
|
|
38
|
+
- `ORP_BASE_URL` / `CODA_BASE_URL` overrides still work.
|
|
39
|
+
|
|
40
|
+
## Rollout order
|
|
41
|
+
|
|
42
|
+
### 1. Domain attachment
|
|
43
|
+
|
|
44
|
+
- Add `orp.earth` and `www.orp.earth` to the Vercel project.
|
|
45
|
+
- Add `openresearchprotocol.com` and `www.openresearchprotocol.com` to the same project.
|
|
46
|
+
- Keep `codacli.com` attached during the transition.
|
|
47
|
+
- Point Namecheap DNS at the Vercel records exactly as issued.
|
|
48
|
+
|
|
49
|
+
### 2. Canonical browser host
|
|
50
|
+
|
|
51
|
+
- Make `orp.earth` the canonical browser/app host.
|
|
52
|
+
- Update:
|
|
53
|
+
- app metadata
|
|
54
|
+
- canonical URLs
|
|
55
|
+
- OG/Twitter metadata
|
|
56
|
+
- sitemap / robots
|
|
57
|
+
- Treat `openresearchprotocol.com` as a support/canonical-name domain, not necessarily the primary user-facing host.
|
|
58
|
+
|
|
59
|
+
### 3. Auth and email
|
|
60
|
+
|
|
61
|
+
- Update auth base URLs and callback URLs for `orp.earth`.
|
|
62
|
+
- Update magic-link / verification email links to `orp.earth`.
|
|
63
|
+
- Confirm cookies and session behavior work cleanly on the new canonical host.
|
|
64
|
+
- Avoid running two browser-session domains in parallel longer than necessary.
|
|
65
|
+
|
|
66
|
+
### 4. Runner / websocket / terminal paths
|
|
67
|
+
|
|
68
|
+
- Inventory every host reference used by:
|
|
69
|
+
- runner
|
|
70
|
+
- websocket
|
|
71
|
+
- TTY / terminal pairing
|
|
72
|
+
- agent worker loops
|
|
73
|
+
- Move those to ORP-aligned hosts only after staging verification.
|
|
74
|
+
- If needed, use dedicated subdomains rather than mixing them into the app host.
|
|
75
|
+
|
|
76
|
+
### 5. Redirects
|
|
77
|
+
|
|
78
|
+
- Redirect browser traffic from `codacli.com` to `orp.earth`.
|
|
79
|
+
- Keep legacy API/worker compatibility only where needed during transition.
|
|
80
|
+
- Redirect `openresearchprotocol.com` to `orp.earth` unless there is a deliberate reason to keep it browsable.
|
|
81
|
+
|
|
82
|
+
### 6. CLI cutover
|
|
83
|
+
|
|
84
|
+
- After the hosted app is stable on `orp.earth`, update the CLI default hosted base URL.
|
|
85
|
+
- Keep `ORP_BASE_URL` / `CODA_BASE_URL` overrides working during the transition.
|
|
86
|
+
- Verify:
|
|
87
|
+
- `orp auth login`
|
|
88
|
+
- `orp whoami --json`
|
|
89
|
+
- `orp ideas list --json`
|
|
90
|
+
- `orp world bind ...`
|
|
91
|
+
- `orp checkpoint queue ...`
|
|
92
|
+
- `orp agent work --once --json`
|
|
93
|
+
|
|
94
|
+
## Verification checklist
|
|
95
|
+
|
|
96
|
+
- `orp.earth` serves the app correctly.
|
|
97
|
+
- Email verification links open on `orp.earth`.
|
|
98
|
+
- Existing users can log in without session confusion.
|
|
99
|
+
- Runner/worker flows still connect and post responses.
|
|
100
|
+
- `codacli.com` redirects cleanly.
|
|
101
|
+
- `openresearchprotocol.com` resolves as intended.
|
|
102
|
+
|
|
103
|
+
## Rollback
|
|
104
|
+
|
|
105
|
+
- If auth or runner behavior breaks, revert the canonical host before changing the CLI default.
|
|
106
|
+
- Keep `codacli.com` attached until the new host has passed real-user verification.
|
package/package.json
CHANGED
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
# Coda to ORP Contract
|
|
2
|
-
|
|
3
|
-
This document defines the boundary between:
|
|
4
|
-
|
|
5
|
-
- `codacli.com` / `coda-cli`
|
|
6
|
-
- `ORP`
|
|
7
|
-
|
|
8
|
-
The goal is to let both systems work together without turning ORP into an app
|
|
9
|
-
backend or turning Coda into a second protocol runtime.
|
|
10
|
-
|
|
11
|
-
## Repository Split
|
|
12
|
-
|
|
13
|
-
Recommended shape:
|
|
14
|
-
|
|
15
|
-
- `orp` repo
|
|
16
|
-
- protocol/runtime
|
|
17
|
-
- discovery execution
|
|
18
|
-
- collaboration execution
|
|
19
|
-
- packets, run records, summaries
|
|
20
|
-
- portable local-first CLI
|
|
21
|
-
- `coda-cli` repo
|
|
22
|
-
- operator-facing wrapper
|
|
23
|
-
- active profile selection
|
|
24
|
-
- auth/session handling
|
|
25
|
-
- Coda export retrieval
|
|
26
|
-
- convenience commands layered over ORP
|
|
27
|
-
- `codacli.com`
|
|
28
|
-
- authenticated web product
|
|
29
|
-
- user database
|
|
30
|
-
- idea cards
|
|
31
|
-
- feature scaffolds
|
|
32
|
-
- notes/detail sections
|
|
33
|
-
- export surface for agents and `coda-cli`
|
|
34
|
-
|
|
35
|
-
## Ownership Boundary
|
|
36
|
-
|
|
37
|
-
Coda owns:
|
|
38
|
-
|
|
39
|
-
- user identity
|
|
40
|
-
- database records
|
|
41
|
-
- idea cards
|
|
42
|
-
- categories
|
|
43
|
-
- feature scaffolds
|
|
44
|
-
- note/detail sections
|
|
45
|
-
- active context selection
|
|
46
|
-
- export APIs / export files
|
|
47
|
-
|
|
48
|
-
ORP owns:
|
|
49
|
-
|
|
50
|
-
- portable discovery profile format
|
|
51
|
-
- GitHub discovery scans
|
|
52
|
-
- collaboration workflows
|
|
53
|
-
- gate execution
|
|
54
|
-
- packets
|
|
55
|
-
- run summaries
|
|
56
|
-
- process artifacts
|
|
57
|
-
|
|
58
|
-
In short:
|
|
59
|
-
|
|
60
|
-
- Coda answers: "What does this user care about right now?"
|
|
61
|
-
- ORP answers: "How do we discover, structure, and execute the work?"
|
|
62
|
-
|
|
63
|
-
## MVP Rule
|
|
64
|
-
|
|
65
|
-
The MVP should be read-only from Coda into ORP.
|
|
66
|
-
|
|
67
|
-
That means:
|
|
68
|
-
|
|
69
|
-
- Coda exports context
|
|
70
|
-
- ORP consumes derived context
|
|
71
|
-
- ORP produces scan/run artifacts
|
|
72
|
-
- Coda may read those artifacts later
|
|
73
|
-
- ORP does not write back into Coda yet
|
|
74
|
-
|
|
75
|
-
This keeps the first integration simple and auditable.
|
|
76
|
-
|
|
77
|
-
## Canonical Coda Export
|
|
78
|
-
|
|
79
|
-
Coda should expose a canonical export that reflects the app's richer data
|
|
80
|
-
model.
|
|
81
|
-
|
|
82
|
-
Example shape:
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"schema_version": "1.0.0",
|
|
87
|
-
"user": {
|
|
88
|
-
"id": "user_123",
|
|
89
|
-
"handle": "cody"
|
|
90
|
-
},
|
|
91
|
-
"active_context": {
|
|
92
|
-
"idea_id": "idea_problem857",
|
|
93
|
-
"title": "Sunflower formalization work",
|
|
94
|
-
"categories": ["math", "lean", "formalization"]
|
|
95
|
-
},
|
|
96
|
-
"ideas": [
|
|
97
|
-
{
|
|
98
|
-
"id": "idea_problem857",
|
|
99
|
-
"title": "Sunflower formalization work",
|
|
100
|
-
"summary": "Look for repos and issues aligned with Problem 857 work.",
|
|
101
|
-
"tags": ["sunflower", "lean", "proof"],
|
|
102
|
-
"feature_scaffold": {
|
|
103
|
-
"areas": ["balance", "container", "docs"],
|
|
104
|
-
"notes": ["Prefer public repos first."]
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
ORP should not depend directly on the full Coda export schema.
|
|
112
|
-
|
|
113
|
-
## Derived ORP Inputs
|
|
114
|
-
|
|
115
|
-
`coda-cli` should derive smaller ORP-native inputs from the richer Coda export.
|
|
116
|
-
|
|
117
|
-
The first derived input is an ORP discovery profile.
|
|
118
|
-
|
|
119
|
-
Example:
|
|
120
|
-
|
|
121
|
-
```json
|
|
122
|
-
{
|
|
123
|
-
"schema_version": "1.0.0",
|
|
124
|
-
"profile_id": "idea_problem857",
|
|
125
|
-
"notes": [
|
|
126
|
-
"Derived from Coda active context."
|
|
127
|
-
],
|
|
128
|
-
"discover": {
|
|
129
|
-
"github": {
|
|
130
|
-
"owner": {
|
|
131
|
-
"login": "SproutSeeds",
|
|
132
|
-
"type": "org"
|
|
133
|
-
},
|
|
134
|
-
"signals": {
|
|
135
|
-
"keywords": ["sunflower", "formalization", "proof"],
|
|
136
|
-
"repo_topics": ["lean", "math"],
|
|
137
|
-
"languages": ["Lean"],
|
|
138
|
-
"areas": ["balance", "container", "docs"],
|
|
139
|
-
"people": []
|
|
140
|
-
},
|
|
141
|
-
"filters": {
|
|
142
|
-
"include_repos": [],
|
|
143
|
-
"exclude_repos": [],
|
|
144
|
-
"issue_states": ["open"],
|
|
145
|
-
"labels_any": [],
|
|
146
|
-
"exclude_labels": [],
|
|
147
|
-
"updated_within_days": 180
|
|
148
|
-
},
|
|
149
|
-
"ranking": {
|
|
150
|
-
"repo_sample_size": 30,
|
|
151
|
-
"max_repos": 12,
|
|
152
|
-
"max_issues": 24,
|
|
153
|
-
"max_people": 12,
|
|
154
|
-
"issues_per_repo": 30
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
Other future derived inputs may include:
|
|
162
|
-
|
|
163
|
-
- collaboration bootstrap hints
|
|
164
|
-
- target repo selection
|
|
165
|
-
- issue lane selection
|
|
166
|
-
- preferred adapters
|
|
167
|
-
|
|
168
|
-
## ORP Outputs Coda May Read
|
|
169
|
-
|
|
170
|
-
For the first integration, Coda should treat ORP outputs as read-only runtime
|
|
171
|
-
artifacts.
|
|
172
|
-
|
|
173
|
-
Useful outputs:
|
|
174
|
-
|
|
175
|
-
- `orp/discovery/github/<scan_id>/SCAN.json`
|
|
176
|
-
- `orp/discovery/github/<scan_id>/SCAN_SUMMARY.md`
|
|
177
|
-
- `orp/artifacts/<run_id>/RUN.json`
|
|
178
|
-
- `orp/artifacts/<run_id>/RUN_SUMMARY.md`
|
|
179
|
-
- `orp/packets/<packet_id>.json`
|
|
180
|
-
|
|
181
|
-
These let Coda display:
|
|
182
|
-
|
|
183
|
-
- recommended repos/issues/people
|
|
184
|
-
- latest collaboration run results
|
|
185
|
-
- packetized process context
|
|
186
|
-
|
|
187
|
-
## CLI Relationship
|
|
188
|
-
|
|
189
|
-
`coda-cli` should be a thin wrapper over ORP, not a second workflow engine.
|
|
190
|
-
|
|
191
|
-
Good examples:
|
|
192
|
-
|
|
193
|
-
- `coda profile export`
|
|
194
|
-
- `coda profile use <idea-id>`
|
|
195
|
-
- `coda discover`
|
|
196
|
-
- `coda collaborate init`
|
|
197
|
-
|
|
198
|
-
Under the hood, those should call ORP's JSON surfaces such as:
|
|
199
|
-
|
|
200
|
-
- `orp discover profile init --json`
|
|
201
|
-
- `orp discover github scan --json`
|
|
202
|
-
- `orp collaborate init --json`
|
|
203
|
-
- `orp collaborate run --json`
|
|
204
|
-
|
|
205
|
-
## Non-Goals For ORP
|
|
206
|
-
|
|
207
|
-
ORP should not own:
|
|
208
|
-
|
|
209
|
-
- authenticated user databases
|
|
210
|
-
- profile sharing semantics
|
|
211
|
-
- team/private visibility policy
|
|
212
|
-
- app-level note editing
|
|
213
|
-
- direct mutation of Coda records
|
|
214
|
-
|
|
215
|
-
Those belong in Coda.
|
|
216
|
-
|
|
217
|
-
## Practical Rule
|
|
218
|
-
|
|
219
|
-
When in doubt:
|
|
220
|
-
|
|
221
|
-
- if it is portable execution or protocol data, keep it in ORP
|
|
222
|
-
- if it is user/app context or authenticated product state, keep it in Coda
|