open-research-protocol 0.4.13 → 0.4.15

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.
Files changed (52) hide show
  1. package/AGENT_INTEGRATION.md +50 -0
  2. package/README.md +273 -144
  3. package/bin/orp.js +14 -1
  4. package/cli/orp.py +14846 -9925
  5. package/docs/AGENT_LOOP.md +13 -0
  6. package/docs/AGENT_MODES.md +79 -0
  7. package/docs/CANONICAL_CLI_BOUNDARY.md +15 -0
  8. package/docs/EXCHANGE.md +94 -0
  9. package/docs/LAUNCH_KIT.md +107 -0
  10. package/docs/ORP_HOSTED_WORKSPACE_CONTRACT.md +295 -0
  11. package/docs/ORP_PUBLIC_LAUNCH_CHECKLIST.md +5 -0
  12. package/docs/START_HERE.md +567 -0
  13. package/package.json +5 -2
  14. package/packages/lifeops-orp/README.md +67 -0
  15. package/packages/lifeops-orp/package.json +48 -0
  16. package/packages/lifeops-orp/src/index.d.ts +106 -0
  17. package/packages/lifeops-orp/src/index.js +7 -0
  18. package/packages/lifeops-orp/src/mapping.js +309 -0
  19. package/packages/lifeops-orp/src/workspace.js +108 -0
  20. package/packages/lifeops-orp/test/orp.test.js +187 -0
  21. package/packages/orp-workspace-launcher/README.md +82 -0
  22. package/packages/orp-workspace-launcher/package.json +39 -0
  23. package/packages/orp-workspace-launcher/src/commands.js +77 -0
  24. package/packages/orp-workspace-launcher/src/core-plan.js +506 -0
  25. package/packages/orp-workspace-launcher/src/hosted-state.js +208 -0
  26. package/packages/orp-workspace-launcher/src/index.js +82 -0
  27. package/packages/orp-workspace-launcher/src/ledger.js +745 -0
  28. package/packages/orp-workspace-launcher/src/list.js +488 -0
  29. package/packages/orp-workspace-launcher/src/orp-command.js +126 -0
  30. package/packages/orp-workspace-launcher/src/orp.js +912 -0
  31. package/packages/orp-workspace-launcher/src/registry.js +558 -0
  32. package/packages/orp-workspace-launcher/src/slot.js +188 -0
  33. package/packages/orp-workspace-launcher/src/sync.js +363 -0
  34. package/packages/orp-workspace-launcher/src/tabs.js +166 -0
  35. package/packages/orp-workspace-launcher/test/commands.test.js +164 -0
  36. package/packages/orp-workspace-launcher/test/core-plan.test.js +253 -0
  37. package/packages/orp-workspace-launcher/test/fixtures/smoke-notes.txt +2 -0
  38. package/packages/orp-workspace-launcher/test/fixtures/workspace-manifest.json +17 -0
  39. package/packages/orp-workspace-launcher/test/ledger.test.js +244 -0
  40. package/packages/orp-workspace-launcher/test/list.test.js +299 -0
  41. package/packages/orp-workspace-launcher/test/orp-command.test.js +44 -0
  42. package/packages/orp-workspace-launcher/test/orp.test.js +224 -0
  43. package/packages/orp-workspace-launcher/test/tabs.test.js +168 -0
  44. package/scripts/orp-kernel-agent-pilot.py +10 -1
  45. package/scripts/orp-kernel-agent-replication.py +10 -1
  46. package/scripts/orp-kernel-canonical-continuation.py +10 -1
  47. package/scripts/orp-kernel-continuation-pilot.py +10 -1
  48. package/scripts/render-terminal-demo.py +416 -0
  49. package/spec/v1/exchange-report.schema.json +105 -0
  50. package/spec/v1/hosted-workspace-event.schema.json +102 -0
  51. package/spec/v1/hosted-workspace.schema.json +332 -0
  52. package/spec/v1/workspace.schema.json +108 -0
@@ -0,0 +1,567 @@
1
+ # Start Here
2
+
3
+ Use this guide when you are new to ORP and want the shortest correct path from "fresh repo" to "agent and repo are operating in lockstep."
4
+
5
+ The design goal is simple:
6
+
7
+ - local-first by default
8
+ - hosted sync is optional
9
+ - the workspace ledger remembers where ongoing work lives
10
+ - repo governance keeps work intentional
11
+ - the agent uses ORP as its operating lens, not as an afterthought
12
+
13
+ ## Core Rule
14
+
15
+ Do not let ORP process scaffolding masquerade as evidence or repository truth.
16
+
17
+ ORP is there to:
18
+
19
+ - keep the workspace ledger honest
20
+ - keep repo governance explicit
21
+ - keep secrets and continuity usable
22
+ - help the agent stay aligned
23
+
24
+ But canonical evidence still lives in the repo's real artifacts: code, data, proofs, papers, logs, and outputs.
25
+
26
+ ## Start In 60 Seconds
27
+
28
+ Install:
29
+
30
+ ```bash
31
+ npm i -g open-research-protocol
32
+ ```
33
+
34
+ If you already know you want the standard local-first ORP loop in a repo, the fastest path is:
35
+
36
+ ```bash
37
+ orp home
38
+ orp init
39
+ orp workspace create main-cody-1
40
+ orp workspace tabs main
41
+ orp secrets ensure --alias openai-primary --provider openai --current-project --json
42
+ orp status --json
43
+ orp checkpoint create -m "capture loop state" --json
44
+ ```
45
+
46
+ That gets you:
47
+
48
+ - the discovery screen
49
+ - repo governance initialized
50
+ - a local workspace ledger
51
+ - the main recovery surface
52
+ - secrets setup
53
+ - a clean repo-governance read
54
+ - a first intentional checkpoint
55
+
56
+ ## Beginner Flow
57
+
58
+ This is the zero-assumption path for a new user.
59
+
60
+ ### 1. Install the CLI once
61
+
62
+ ```bash
63
+ npm i -g open-research-protocol
64
+ ```
65
+
66
+ This gives you a global `orp` command.
67
+
68
+ ### 2. Start with the home screen
69
+
70
+ ```bash
71
+ orp home
72
+ ```
73
+
74
+ Use `orp home` when you want the main operator screen:
75
+
76
+ - what ORP is
77
+ - what the current daily loop is
78
+ - what command families exist
79
+ - what discovery docs to read next
80
+
81
+ ### 3. Initialize the repo
82
+
83
+ From the repo root:
84
+
85
+ ```bash
86
+ orp init
87
+ ```
88
+
89
+ `orp init` makes the repo ORP-governed. It creates the starter config/runtime scaffolding, seeds the handoff and checkpoint log, and records the repo's governance state.
90
+
91
+ More concretely, `orp init` does these jobs:
92
+
93
+ - creates a git repo if one does not already exist
94
+ - creates `orp.yml` if it is missing
95
+ - creates the ORP runtime directories under `orp/`
96
+ - seeds:
97
+ - `orp/HANDOFF.md`
98
+ - `orp/checkpoints/CHECKPOINT_LOG.md`
99
+ - `analysis/orp.kernel.task.yml`
100
+ - writes governance metadata like:
101
+ - `orp/governance.json`
102
+ - `orp/agent-policy.json`
103
+ - `orp/state.json`
104
+
105
+ So `orp init` is not "start doing the work." It is "make this repo legible and governable for humans and agents."
106
+
107
+ After that, check the repo state:
108
+
109
+ ```bash
110
+ orp status --json
111
+ ```
112
+
113
+ ### 4. Create the workspace ledger
114
+
115
+ This is the local-first memory layer for ongoing work.
116
+
117
+ ```bash
118
+ orp workspace create main-cody-1
119
+ orp workspace list
120
+ orp workspace tabs main
121
+ ```
122
+
123
+ You do not need a hosted account for this. The workspace ledger works locally out of the box.
124
+
125
+ The important idea is:
126
+
127
+ - the workspace ledger is not a GUI tab manager
128
+ - it is the saved memory of where work lives
129
+ - it stores paths plus exact resumable command lines
130
+ - it is the crash-recovery layer for you and the agent
131
+
132
+ ### 5. Save ongoing tabs and sessions
133
+
134
+ If you want ORP to remember an ongoing repo path plus a resumable session, add it explicitly:
135
+
136
+ ```bash
137
+ orp workspace add-tab main --path /absolute/path/to/project --resume-command "codex resume <session-id>"
138
+ ```
139
+
140
+ For Claude:
141
+
142
+ ```bash
143
+ orp workspace add-tab main --path /absolute/path/to/project --resume-tool claude --resume-session-id <session-id>
144
+ ```
145
+
146
+ To inspect what is saved:
147
+
148
+ ```bash
149
+ orp workspace tabs main
150
+ ```
151
+
152
+ The `resume:` line is the exact copyable recovery command:
153
+
154
+ ```text
155
+ resume: cd '/absolute/path/to/project' && codex resume <session-id>
156
+ ```
157
+
158
+ or:
159
+
160
+ ```text
161
+ resume: cd '/absolute/path/to/project' && claude --resume <session-id>
162
+ ```
163
+
164
+ To remove something from the saved ledger:
165
+
166
+ ```bash
167
+ orp workspace remove-tab main --path /absolute/path/to/project
168
+ ```
169
+
170
+ So the `workspace` lane is really:
171
+
172
+ - `create` a ledger
173
+ - `add-tab` to remember a path/session
174
+ - `remove-tab` to prune old work
175
+ - `tabs` to inspect exact saved recovery commands
176
+ - `list` to see all saved workspaces
177
+
178
+ ### 6. Set up secrets
179
+
180
+ 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
+
182
+ ```bash
183
+ orp auth login
184
+ ```
185
+
186
+ After that, think about secrets in two separate user flows:
187
+
188
+ - human operator flow
189
+ - agent/script flow
190
+
191
+ #### Human operator flow
192
+
193
+ If you are at the terminal and want to save a new key manually, use:
194
+
195
+ ```bash
196
+ orp secrets add --alias openai-primary --label "OpenAI Primary" --provider openai
197
+ ```
198
+
199
+ ORP then prompts:
200
+
201
+ ```text
202
+ Secret value:
203
+ ```
204
+
205
+ That is where you paste the real key.
206
+
207
+ After that, you can inspect and reuse it:
208
+
209
+ ```bash
210
+ orp secrets list
211
+ orp secrets show openai-primary
212
+ orp secrets resolve openai-primary --reveal
213
+ ```
214
+
215
+ That is the clearest beginner flow:
216
+
217
+ 1. log in
218
+ 2. add the key
219
+ 3. paste the value when prompted
220
+ 4. list or show it later
221
+ 5. resolve it when you need to use it
222
+
223
+ #### Agent or script flow
224
+
225
+ If an agent or script needs to save a key non-interactively, use stdin:
226
+
227
+ ```bash
228
+ printf '%s' 'sk-...' | orp secrets add --alias openai-primary --label "OpenAI Primary" --provider openai --value-stdin
229
+ ```
230
+
231
+ This is the safe automation path because the secret value is not typed into the command line flags directly.
232
+
233
+ #### Convenience flow: `ensure`
234
+
235
+ If the repo or agent needs an API key and you want ORP to handle both "already exists" and "missing" cases, use:
236
+
237
+ ```bash
238
+ orp secrets ensure --alias openai-primary --provider openai --current-project
239
+ ```
240
+
241
+ In plain English, that means:
242
+
243
+ ```text
244
+ Make sure this project has an OpenAI key available to it.
245
+ ```
246
+
247
+ The important thing to understand is:
248
+
249
+ - this command does not contain the key itself
250
+ - it is a lookup-or-create command
251
+ - the actual key is either already saved, or ORP will ask you for it
252
+
253
+ `ensure` is the beginner-friendly path because it handles both cases:
254
+
255
+ - if the secret already exists in ORP, reuse it
256
+ - if it does not exist yet, create it
257
+ - if `--current-project` is present, bind it to the repo you are in now
258
+
259
+ If the secret does not exist yet, ORP will ask you for the secret value securely unless you provide it explicitly with `--value` or `--value-stdin`.
260
+
261
+ That means the common beginner flow is simply:
262
+
263
+ 1. run:
264
+ ```bash
265
+ orp secrets ensure --alias openai-primary --provider openai --current-project
266
+ ```
267
+ 2. if ORP already knows the key, it reuses it
268
+ 3. if ORP does not know the key yet, it prompts:
269
+ ```text
270
+ Secret value:
271
+ ```
272
+ 4. paste the real key there
273
+
274
+ So the easiest path for a new user is still:
275
+
276
+ ```bash
277
+ orp secrets ensure --alias openai-primary --provider openai --current-project
278
+ ```
279
+
280
+ If ORP already knows that key, it reuses it.
281
+ If ORP does not know that key yet, it prompts for the value and then saves it.
282
+
283
+ If you want to be explicit and add a brand-new key first, you can also do it in two steps:
284
+
285
+ ```bash
286
+ orp secrets add --alias openai-primary --provider openai --current-project
287
+ orp secrets ensure --alias openai-primary --provider openai --current-project
288
+ ```
289
+
290
+ The mental model is:
291
+
292
+ - `add` = I know this is a brand-new secret
293
+ - `ensure` = use the existing one, or create it if missing
294
+ - `list` = show me what is saved
295
+ - `show` = show me one saved secret record
296
+ - `resolve` = give me the actual value so I can use it now
297
+ - `sync-keychain` = keep a secure local Mac copy too
298
+
299
+ You can ignore `--env-var-name` at first.
300
+ It is only optional metadata like `OPENAI_API_KEY`.
301
+ It is not the secret value itself.
302
+
303
+ For example:
304
+
305
+ ```bash
306
+ orp secrets resolve --provider openai --current-project --reveal
307
+ ```
308
+
309
+ If you want a local secure copy on macOS too:
310
+
311
+ ```bash
312
+ orp secrets sync-keychain openai-primary --json
313
+ ```
314
+
315
+ The right mental model is:
316
+
317
+ - hosted ORP secret inventory can be the canonical source of truth
318
+ - local Keychain can be the secure local cache
319
+ - `ensure` means "reuse it if it exists, create it if it doesn't, and bind it if needed"
320
+ - if the key is missing and you did not pass a value, ORP prompts you for it
321
+ - `add` is the clearest first command for a brand-new human user
322
+
323
+ ### 7. Start working safely
324
+
325
+ ORP's default repo-governance loop is:
326
+
327
+ ```bash
328
+ orp branch start work/<topic> --json
329
+ orp checkpoint create -m "describe completed unit" --json
330
+ orp backup -m "backup current work" --json
331
+ orp ready --json
332
+ ```
333
+
334
+ The most important habit is simple:
335
+
336
+ - do meaningful work on a work branch
337
+ - checkpoint intentionally
338
+ - keep the repo status honest
339
+
340
+ That is the boundary between "we are just editing files" and "we are working in a governed research or engineering loop."
341
+
342
+ This is the checkpoint governance loop:
343
+
344
+ 1. `orp status --json`
345
+ Inspect whether the repo is safe for work right now.
346
+ This tells you things like:
347
+ - whether the repo is ORP-governed
348
+ - whether git is present
349
+ - whether the worktree is dirty
350
+ - whether you are on a protected branch
351
+ - whether validation and readiness are in a good state
352
+
353
+ 2. `orp branch start work/<topic> --json`
354
+ Create or switch to a safe work branch.
355
+ ORP wants meaningful edits to happen on a non-protected work branch unless you have explicitly allowed protected-branch work.
356
+
357
+ 3. `orp checkpoint create -m "describe completed unit" --json`
358
+ Create an intentional checkpoint commit.
359
+ This is the core save-state action.
360
+ It does not mean "ship the work." It means:
361
+ - record a meaningful completed unit
362
+ - make the state recoverable
363
+ - update the checkpoint log and local governance runtime
364
+
365
+ 4. `orp backup -m "backup current work" --json`
366
+ Create a safer backup snapshot, and push it to a dedicated remote ref when possible.
367
+ If the repo is dirty in a risky context, ORP can create a backup work branch first.
368
+ So `backup` is the "make sure this state exists off-machine too" step.
369
+
370
+ 5. `orp ready --json`
371
+ Mark the repo locally ready only when the real conditions are met.
372
+ `ready` is stricter than "I feel done."
373
+ It checks things like:
374
+ - handoff/checkpoint files exist
375
+ - working tree is clean
376
+ - branch policy is respected
377
+ - the latest validation run passed
378
+ - there is a checkpoint after that passing validation
379
+
380
+ 6. `orp doctor --json`
381
+ Inspect governance health and optionally repair missing ORP files with `--fix`.
382
+ Use this when the repo feels out of sync with ORP.
383
+
384
+ 7. `orp cleanup --json`
385
+ Inspect stale branch cleanup candidates.
386
+ This is the "help me prune old branch debris safely" step, not a destructive reset tool.
387
+
388
+ So the checkpoint governance loop is really:
389
+
390
+ - inspect the repo
391
+ - move onto a safe work branch
392
+ - checkpoint meaningful progress
393
+ - back it up when needed
394
+ - mark readiness honestly
395
+ - doctor and cleanup when the repo drifts
396
+
397
+ That is the part of ORP that keeps the human, the agent, and the repo in check together.
398
+
399
+ ### 8. Keep the program context visible
400
+
401
+ If the work belongs to a longer-running research or product trajectory:
402
+
403
+ ```bash
404
+ orp frontier state --json
405
+ orp frontier roadmap --json
406
+ ```
407
+
408
+ This is the "where are we in the program?" layer.
409
+
410
+ The distinction is:
411
+
412
+ - `workspace` answers: where is the work physically happening?
413
+ - `frontier` answers: where are we logically in the larger program?
414
+
415
+ ### 9. Use optional perspective support
416
+
417
+ When the work feels too linear, too trapped, or too narrow:
418
+
419
+ ```bash
420
+ orp mode nudge sleek-minimal-progressive --json
421
+ ```
422
+
423
+ This is optional. It does not override the protocol. It just gives the agent or operator a lightweight perspective shift.
424
+
425
+ It is there to help with:
426
+
427
+ - getting unstuck
428
+ - zooming in or out
429
+ - rotating the angle of attack
430
+ - keeping the work fresh without making the workflow sloppy
431
+
432
+ ### 10. Optional hosted sync
433
+
434
+ Hosted ORP is not required for the local workspace ledger or repo-governance loop.
435
+
436
+ If you want hosted identity, ideas, workspace sync, or runners later:
437
+
438
+ ```bash
439
+ orp auth login
440
+ orp whoami --json
441
+ orp workspaces list --json
442
+ orp workspace sync main
443
+ ```
444
+
445
+ So the rule is:
446
+
447
+ - local-first works immediately
448
+ - hosted adds sync and control-plane features later
449
+
450
+ ## Daily Loop
451
+
452
+ Once a repo is ORP-governed and the workspace ledger already exists, this is the main operating loop:
453
+
454
+ ```bash
455
+ orp workspace tabs main
456
+ orp status --json
457
+ orp secrets ensure --alias <alias> --provider <provider> --current-project --json
458
+ orp frontier state --json
459
+ ```
460
+
461
+ Then do the next meaningful unit of work.
462
+
463
+ After a real step, checkpoint it:
464
+
465
+ ```bash
466
+ orp checkpoint create -m "describe completed unit" --json
467
+ ```
468
+
469
+ If the current state should exist off-machine too:
470
+
471
+ ```bash
472
+ orp backup -m "backup current work" --json
473
+ ```
474
+
475
+ When the work is truly in a ready state:
476
+
477
+ ```bash
478
+ orp ready --json
479
+ ```
480
+
481
+ The guiding rule is simple:
482
+
483
+ - recover the saved workspace
484
+ - inspect repo safety
485
+ - resolve the right secret
486
+ - inspect the current frontier
487
+ - do the next honest move
488
+ - checkpoint at honest boundaries
489
+
490
+ ## Minimum Working Loop
491
+
492
+ If you only want the irreducible ORP loop, it is this:
493
+
494
+ 1. recover the workspace ledger
495
+ ```bash
496
+ orp workspace tabs main
497
+ ```
498
+ 2. inspect repo safety
499
+ ```bash
500
+ orp status --json
501
+ ```
502
+ 3. resolve the right secret
503
+ ```bash
504
+ orp secrets ensure --alias <alias> --provider <provider> --current-project --json
505
+ ```
506
+ 4. inspect the current frontier
507
+ ```bash
508
+ orp frontier state --json
509
+ ```
510
+ 5. do the next honest move
511
+ 6. checkpoint it
512
+ ```bash
513
+ orp checkpoint create -m "describe completed unit" --json
514
+ ```
515
+
516
+ That is the shortest version of the protocol:
517
+
518
+ - recover continuity
519
+ - inspect safety
520
+ - resolve access
521
+ - inspect context
522
+ - do the work
523
+ - checkpoint it honestly
524
+
525
+ ## Agent Contract
526
+
527
+ If you want the agent to stay aligned with ORP, the default check sequence should be:
528
+
529
+ ```bash
530
+ orp workspace tabs main
531
+ orp status --json
532
+ orp secrets ensure --alias <alias> --provider <provider> --current-project --json
533
+ orp frontier state --json
534
+ ```
535
+
536
+ And before handoff or a meaningful completed unit:
537
+
538
+ ```bash
539
+ orp checkpoint create -m "checkpoint note" --json
540
+ ```
541
+
542
+ That is the practical ORP loop:
543
+
544
+ 1. recover the workspace ledger
545
+ 2. inspect repo safety
546
+ 3. resolve the right key
547
+ 4. inspect the current frontier
548
+ 5. do the work
549
+ 6. checkpoint it honestly
550
+
551
+ The key point is that ORP should become the lens:
552
+
553
+ - not "something we remember to use sometimes"
554
+ - but the operating frame the agent checks before and after meaningful work
555
+
556
+ ## If You Only Remember 8 Commands
557
+
558
+ ```bash
559
+ orp home
560
+ orp init
561
+ orp workspace create main-cody-1
562
+ orp workspace tabs main
563
+ orp workspace add-tab main --path /absolute/path/to/project --resume-command "codex resume <id>"
564
+ orp secrets ensure --alias openai-primary --provider openai --current-project --json
565
+ orp status --json
566
+ orp checkpoint create -m "capture loop state" --json
567
+ ```
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "open-research-protocol",
3
- "version": "0.4.13",
4
- "description": "ORP CLI (Open Research Protocol): agent-friendly research workflows, runtime, reports, and pack tooling.",
3
+ "version": "0.4.15",
4
+ "description": "ORP CLI (Open Research Protocol): workspace ledgers, secrets, scheduling, governed execution, and agent-friendly research workflows.",
5
5
  "license": "MIT",
6
+ "author": "Fractal Research Group <cody@frg.earth>",
6
7
  "repository": {
7
8
  "type": "git",
8
9
  "url": "git+https://github.com/SproutSeeds/orp.git"
@@ -21,6 +22,7 @@
21
22
  "docs/",
22
23
  "examples/",
23
24
  "modules/",
25
+ "packages/",
24
26
  "packs/",
25
27
  "scripts/",
26
28
  "spec/",
@@ -41,6 +43,7 @@
41
43
  "scripts": {
42
44
  "postinstall": "node scripts/npm-postinstall-check.js",
43
45
  "prepublishOnly": "node scripts/npm-prepublish-guard.js",
46
+ "render:terminal-demo": "python3 scripts/render-terminal-demo.py",
44
47
  "test": "python3 -m unittest discover -s tests -v"
45
48
  },
46
49
  "keywords": [
@@ -0,0 +1,67 @@
1
+ # @lifeops/orp
2
+
3
+ `@lifeops/orp` is the bridge between ORP and Life Ops.
4
+
5
+ It reads ORP's machine-readable surfaces and turns them into:
6
+
7
+ - Life Ops-compatible agenda items
8
+ - share-ready project context
9
+ - structured prompts for outbound follow-up and project sharing
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ npm install @lifeops/orp
15
+ ```
16
+
17
+ If you also want the Life Ops SDK:
18
+
19
+ ```bash
20
+ npm install @lifeops/core @lifeops/orp
21
+ ```
22
+
23
+ ## What it does
24
+
25
+ - runs ORP JSON commands like `status`, `frontier state`, `frontier roadmap`, and `frontier checklist`
26
+ - maps readiness, next actions, frontier phases, and checklist items into Life Ops item objects
27
+ - derives a share-ready project input object that can be passed into `@lifeops/core`
28
+ - optionally builds a full project-share packet if you inject `buildProjectSharePacket` from `@lifeops/core`
29
+
30
+ ## Quick example
31
+
32
+ ```js
33
+ import { LifeOpsClient, buildProjectSharePacket } from "@lifeops/core";
34
+ import {
35
+ createOrpConnector,
36
+ buildOrpProjectSharePacket,
37
+ } from "@lifeops/orp";
38
+
39
+ const connector = createOrpConnector({
40
+ repoRoot: "/abs/path/to/repo",
41
+ orpCommand: "orp",
42
+ projectName: "My Research Project",
43
+ organization: "ORP",
44
+ });
45
+
46
+ const client = new LifeOpsClient({
47
+ connectors: [connector],
48
+ });
49
+
50
+ const agenda = await client.agenda({
51
+ timezone: "America/Chicago",
52
+ });
53
+
54
+ const sharePacket = await buildOrpProjectSharePacket({
55
+ repoRoot: "/abs/path/to/repo",
56
+ projectName: "My Research Project",
57
+ repoUrl: "https://github.com/example/project",
58
+ recipients: [
59
+ {
60
+ name: "Alicia",
61
+ email: "alicia@example.com",
62
+ whyRecipient: "You care about agent-native workflows and research tooling.",
63
+ },
64
+ ],
65
+ buildProjectSharePacket,
66
+ });
67
+ ```
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@lifeops/orp",
3
+ "version": "0.1.0",
4
+ "description": "ORP companion connector for Life Ops agendas, readiness surfaces, and structured project sharing.",
5
+ "author": "Fractal Research Group <cody@frg.earth>",
6
+ "homepage": "https://github.com/SproutSeeds/orp/tree/main/packages/lifeops-orp",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/SproutSeeds/orp.git",
10
+ "directory": "packages/lifeops-orp"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/SproutSeeds/orp/issues"
14
+ },
15
+ "type": "module",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./src/index.d.ts",
19
+ "import": "./src/index.js"
20
+ }
21
+ },
22
+ "files": [
23
+ "src",
24
+ "README.md"
25
+ ],
26
+ "scripts": {
27
+ "test": "node --test"
28
+ },
29
+ "engines": {
30
+ "node": ">=20"
31
+ },
32
+ "peerDependencies": {
33
+ "@lifeops/core": "^0.1.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "@lifeops/core": {
37
+ "optional": true
38
+ }
39
+ },
40
+ "keywords": [
41
+ "lifeops",
42
+ "orp",
43
+ "open-research-protocol",
44
+ "agenda",
45
+ "workflow"
46
+ ],
47
+ "license": "MIT"
48
+ }