open-research-protocol 0.4.0 → 0.4.2
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/cli/orp.py
CHANGED
|
@@ -104,7 +104,7 @@ ORP_TOOL_VERSION = _tool_version()
|
|
|
104
104
|
ORP_PACKAGE_NAME = _tool_package_name()
|
|
105
105
|
DEFAULT_DISCOVER_PROFILE = "orp.profile.default.json"
|
|
106
106
|
DEFAULT_DISCOVER_SCAN_ROOT = "orp/discovery/github"
|
|
107
|
-
DEFAULT_HOSTED_BASE_URL = "https://
|
|
107
|
+
DEFAULT_HOSTED_BASE_URL = "https://orp.earth"
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
class HostedApiError(RuntimeError):
|
|
@@ -279,6 +279,14 @@ def _prompt_value(label: str, *, secret: bool = False) -> str:
|
|
|
279
279
|
return input(f"{label}: ").strip()
|
|
280
280
|
|
|
281
281
|
|
|
282
|
+
def _read_value_from_stdin() -> str:
|
|
283
|
+
try:
|
|
284
|
+
raw = sys.stdin.read()
|
|
285
|
+
except Exception:
|
|
286
|
+
return ""
|
|
287
|
+
return raw.rstrip("\r\n")
|
|
288
|
+
|
|
289
|
+
|
|
282
290
|
def _session_summary(session: dict[str, Any]) -> dict[str, Any]:
|
|
283
291
|
user = session.get("user") if isinstance(session.get("user"), dict) else None
|
|
284
292
|
pending = session.get("pending_verification")
|
|
@@ -3588,7 +3596,12 @@ def cmd_auth_login(args: argparse.Namespace) -> int:
|
|
|
3588
3596
|
if not email:
|
|
3589
3597
|
raise RuntimeError("Email is required.")
|
|
3590
3598
|
|
|
3599
|
+
password_from_stdin = bool(getattr(args, "password_stdin", False))
|
|
3591
3600
|
password = str(getattr(args, "password", "")).strip()
|
|
3601
|
+
if password_from_stdin and password:
|
|
3602
|
+
raise RuntimeError("Use either --password or --password-stdin, not both.")
|
|
3603
|
+
if password_from_stdin:
|
|
3604
|
+
password = _read_value_from_stdin()
|
|
3592
3605
|
if not password:
|
|
3593
3606
|
password = _prompt_value("Password", secret=True)
|
|
3594
3607
|
if not password:
|
|
@@ -3647,7 +3660,12 @@ def cmd_auth_verify(args: argparse.Namespace) -> int:
|
|
|
3647
3660
|
if not email:
|
|
3648
3661
|
raise RuntimeError("Email is required.")
|
|
3649
3662
|
|
|
3663
|
+
code_from_stdin = bool(getattr(args, "code_stdin", False))
|
|
3650
3664
|
code = str(getattr(args, "code", "")).strip()
|
|
3665
|
+
if code_from_stdin and code:
|
|
3666
|
+
raise RuntimeError("Use either --code or --code-stdin, not both.")
|
|
3667
|
+
if code_from_stdin:
|
|
3668
|
+
code = _read_value_from_stdin()
|
|
3651
3669
|
if not code:
|
|
3652
3670
|
code = _prompt_value("Verification code")
|
|
3653
3671
|
if not code:
|
|
@@ -4419,6 +4437,11 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
4419
4437
|
s_auth_login = auth_sub.add_parser("login", help="Start hosted workspace login flow")
|
|
4420
4438
|
s_auth_login.add_argument("--email", default="", help="Hosted account email")
|
|
4421
4439
|
s_auth_login.add_argument("--password", default="", help="Hosted account password")
|
|
4440
|
+
s_auth_login.add_argument(
|
|
4441
|
+
"--password-stdin",
|
|
4442
|
+
action="store_true",
|
|
4443
|
+
help="Read the hosted account password from stdin",
|
|
4444
|
+
)
|
|
4422
4445
|
add_base_url_flag(s_auth_login)
|
|
4423
4446
|
add_json_flag(s_auth_login)
|
|
4424
4447
|
s_auth_login.set_defaults(func=cmd_auth_login, json_output=False)
|
|
@@ -4426,6 +4449,11 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
4426
4449
|
s_auth_verify = auth_sub.add_parser("verify", help="Complete hosted workspace verification")
|
|
4427
4450
|
s_auth_verify.add_argument("--email", default="", help="Hosted account email")
|
|
4428
4451
|
s_auth_verify.add_argument("--code", default="", help="Verification code")
|
|
4452
|
+
s_auth_verify.add_argument(
|
|
4453
|
+
"--code-stdin",
|
|
4454
|
+
action="store_true",
|
|
4455
|
+
help="Read the verification code from stdin",
|
|
4456
|
+
)
|
|
4429
4457
|
add_base_url_flag(s_auth_verify)
|
|
4430
4458
|
add_json_flag(s_auth_verify)
|
|
4431
4459
|
s_auth_verify.set_defaults(func=cmd_auth_verify, json_output=False)
|
|
@@ -47,7 +47,7 @@ Use this checklist when releasing ORP as the unified public CLI and product surf
|
|
|
47
47
|
- Point old `coda-cli` users toward:
|
|
48
48
|
- `npm i -g open-research-protocol`
|
|
49
49
|
- `orp`
|
|
50
|
-
-
|
|
50
|
+
- Legacy `@sproutseeds/coda-cli` package is deprecated with a migration note to `open-research-protocol`.
|
|
51
51
|
|
|
52
52
|
## 6. Post-release checks
|
|
53
53
|
|
|
@@ -61,3 +61,4 @@ Use this checklist when releasing ORP as the unified public CLI and product surf
|
|
|
61
61
|
- Keep the web app and CLI rollout loosely coupled.
|
|
62
62
|
- Launch the ORP CLI first if the web app/domain transition is still in progress.
|
|
63
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