lossless-openclaw-orchestrator 0.1.0-beta.31
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/LICENSE +132 -0
- package/README.md +383 -0
- package/SECURITY.md +21 -0
- package/VISION.md +315 -0
- package/dist/packages/adapters/src/claude.js +15 -0
- package/dist/packages/adapters/src/codex-jsonrpc.js +296 -0
- package/dist/packages/adapters/src/index.js +1664 -0
- package/dist/packages/adapters/src/policy.js +143 -0
- package/dist/packages/adapters/src/redaction.js +33 -0
- package/dist/packages/cli/src/general-release-readiness.js +216 -0
- package/dist/packages/cli/src/index.js +2154 -0
- package/dist/packages/cli/src/live-control-smoke.js +180 -0
- package/dist/packages/cli/src/npm-install-diagnostics.js +51 -0
- package/dist/packages/cli/src/onboarding-status.js +274 -0
- package/dist/packages/cli/src/openclaw-dogfood.js +278 -0
- package/dist/packages/cli/src/openclaw-live-control-smoke.js +381 -0
- package/dist/packages/cli/src/openclaw-post-action-refresh-smoke.js +444 -0
- package/dist/packages/cli/src/openclaw-tool-smoke.js +792 -0
- package/dist/packages/cli/src/published-package-smoke.js +145 -0
- package/dist/packages/cli/src/release-bundle.js +72 -0
- package/dist/packages/cli/src/release-claim-scope.js +41 -0
- package/dist/packages/cli/src/release-demo-status.js +341 -0
- package/dist/packages/cli/src/release-preflight.js +228 -0
- package/dist/packages/cli/src/release-status.js +240 -0
- package/dist/packages/cli/src/runtime-proof-gate.js +145 -0
- package/dist/packages/cli/src/scenario-sweep.js +527 -0
- package/dist/packages/cli/src/scorecard-sweep.js +260 -0
- package/dist/packages/core/src/index.js +4059 -0
- package/dist/packages/core/src/session-sanitizer.js +158 -0
- package/dist/packages/local-mac-ui/src/shell.js +378 -0
- package/dist/packages/mcp-server/src/server.js +54 -0
- package/dist/packages/mcp-server/src/tools.js +787 -0
- package/dist/packages/openclaw-plugin/src/index.js +73 -0
- package/docs/BETA_RELEASE_DEMO.md +92 -0
- package/docs/BETA_RELEASE_RUNBOOK.md +453 -0
- package/docs/CLAIM_AUDIT.md +119 -0
- package/docs/CLAUDE_ADAPTER_BOUNDARY.md +100 -0
- package/docs/LOCAL_MAC_SEARCH_UI.md +113 -0
- package/docs/OPENCLAW_PLUGIN.md +56 -0
- package/docs/PRIVACY.md +24 -0
- package/docs/RELEASE_CHECKLIST.md +97 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.0.md +53 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.1.md +51 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.10.md +84 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.11.md +66 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.12.md +71 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.13.md +75 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.14.md +85 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.15.md +73 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.16.md +74 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.17.md +74 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.18.md +77 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.19.md +70 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.2.md +56 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.20.md +40 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.21.md +38 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.22.md +38 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.23.md +31 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.24.md +34 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.25.md +37 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.26.md +63 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.27.md +66 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.28.md +78 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.29.md +88 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.3.md +61 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.30.md +67 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.31.md +69 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.4.md +63 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.5.md +65 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.6.md +70 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.7.md +71 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.8.md +73 -0
- package/docs/RELEASE_NOTES_0.1.0-beta.9.md +75 -0
- package/docs/SAFE_SUMMARIES.md +33 -0
- package/docs/SOURCE_AUTHORITY_PROFILE.md +33 -0
- package/docs/WORKING_APP_PROOF_SPRINT.md +125 -0
- package/docs/sprints/brief-lco-codex-autonomy-cockpit-sprint-2026-07-01.md +71 -0
- package/evals/scenarios/v1/README.md +16 -0
- package/evals/scenarios/v1/brief-expansion-1k.json +43 -0
- package/evals/scenarios/v1/codex-autonomy-cockpit-p0.json +59 -0
- package/evals/scenarios/v1/control-dry-run-audit.json +41 -0
- package/evals/scenarios/v1/eva-operating-picture-dogfood.json +61 -0
- package/evals/scenarios/v1/eva-operating-picture-p0.json +65 -0
- package/evals/scenarios/v1/evidence-bundle-4k.json +43 -0
- package/evals/scenarios/v1/fail-closed-live-control.json +42 -0
- package/evals/scenarios/v1/final-message-retrieval.json +41 -0
- package/evals/scenarios/v1/m9-agent-dogfood-core-workflow.json +58 -0
- package/evals/scenarios/v1/m9-fresh-npm-clean-profile.json +57 -0
- package/evals/scenarios/v1/openclaw-gateway-dogfood.json +46 -0
- package/evals/scenarios/v1/plan-retrieval.json +42 -0
- package/evals/scenarios/v1/release-claim-audit.json +42 -0
- package/evals/scenarios/v1/session-map-triage.json +42 -0
- package/evals/scenarios/v1/touched-files-accuracy.json +41 -0
- package/evals/scenarios/v1.1/README.md +47 -0
- package/evals/scenarios/v1.1/connected-local-ui-proof.json +59 -0
- package/evals/scenarios/v1.1/desktop-collaboration-action-bound.json +56 -0
- package/evals/scenarios/v1.1/openclaw-gateway-live-codex.json +57 -0
- package/evals/scenarios/v1.1/post-action-refresh-reasoning.json +56 -0
- package/evals/scorecards/v1.0/README.md +18 -0
- package/evals/scorecards/v1.0/issue-scorecard-update-template.md +56 -0
- package/evals/scorecards/v1.0/local-agent-usability-review.json +96 -0
- package/evals/scorecards/v1.0/local-mac-search-ui-review.json +80 -0
- package/evals/scorecards/v1.0/orchestrator-leverage-prioritization.json +83 -0
- package/evals/scorecards/v1.0/packaging-install-review.json +69 -0
- package/evals/scorecards/v1.0/public-claim-review.json +45 -0
- package/evals/scorecards/v1.0/retrieval-quality-review.json +60 -0
- package/evals/scorecards/v1.0/safety-bypass-review.json +58 -0
- package/evals/scorecards/v1.0/working-app-runtime-proof-review.json +72 -0
- package/openclaw.plugin.json +1215 -0
- package/package.json +52 -0
- package/packages/adapters/src/claude.ts +15 -0
- package/packages/adapters/src/codex-jsonrpc.ts +364 -0
- package/packages/adapters/src/index.ts +2190 -0
- package/packages/adapters/src/policy.ts +152 -0
- package/packages/adapters/src/redaction.ts +36 -0
- package/packages/cli/src/general-release-readiness.ts +277 -0
- package/packages/cli/src/index.ts +2211 -0
- package/packages/cli/src/live-control-smoke.ts +265 -0
- package/packages/cli/src/npm-install-diagnostics.ts +76 -0
- package/packages/cli/src/onboarding-status.ts +372 -0
- package/packages/cli/src/openclaw-dogfood.ts +343 -0
- package/packages/cli/src/openclaw-live-control-smoke.ts +465 -0
- package/packages/cli/src/openclaw-post-action-refresh-smoke.ts +511 -0
- package/packages/cli/src/openclaw-tool-smoke.ts +899 -0
- package/packages/cli/src/published-package-smoke.ts +194 -0
- package/packages/cli/src/release-bundle.ts +108 -0
- package/packages/cli/src/release-claim-scope.ts +61 -0
- package/packages/cli/src/release-demo-status.ts +430 -0
- package/packages/cli/src/release-preflight.ts +303 -0
- package/packages/cli/src/release-status.ts +325 -0
- package/packages/cli/src/runtime-proof-gate.ts +191 -0
- package/packages/cli/src/scenario-sweep.ts +675 -0
- package/packages/cli/src/scorecard-sweep.ts +339 -0
- package/packages/core/src/index.ts +5148 -0
- package/packages/core/src/session-sanitizer.ts +250 -0
- package/packages/local-mac-ui/src/shell.ts +509 -0
- package/packages/mcp-server/src/server.ts +51 -0
- package/packages/mcp-server/src/tools.ts +847 -0
- package/packages/openclaw-plugin/openclaw.plugin.json +1215 -0
- package/packages/openclaw-plugin/src/index.ts +99 -0
- package/skills/lossless-openclaw-orchestrator/SKILL.md +100 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# PolyForm Noncommercial License 1.0.0
|
|
2
|
+
|
|
3
|
+
<https://polyformproject.org/licenses/noncommercial/1.0.0>
|
|
4
|
+
|
|
5
|
+
Required Notice: Copyright (c) 2026 Lossless OpenClaw Orchestrator contributors
|
|
6
|
+
## Acceptance
|
|
7
|
+
|
|
8
|
+
In order to get any license under these terms, you must agree
|
|
9
|
+
to them as both strict obligations and conditions to all
|
|
10
|
+
your licenses.
|
|
11
|
+
|
|
12
|
+
## Copyright License
|
|
13
|
+
|
|
14
|
+
The licensor grants you a copyright license for the
|
|
15
|
+
software to do everything you might do with the software
|
|
16
|
+
that would otherwise infringe the licensor's copyright
|
|
17
|
+
in it for any permitted purpose. However, you may
|
|
18
|
+
only distribute the software according to [Distribution
|
|
19
|
+
License](#distribution-license) and make changes or new works
|
|
20
|
+
based on the software according to [Changes and New Works
|
|
21
|
+
License](#changes-and-new-works-license).
|
|
22
|
+
|
|
23
|
+
## Distribution License
|
|
24
|
+
|
|
25
|
+
The licensor grants you an additional copyright license
|
|
26
|
+
to distribute copies of the software. Your license
|
|
27
|
+
to distribute covers distributing the software with
|
|
28
|
+
changes and new works permitted by [Changes and New Works
|
|
29
|
+
License](#changes-and-new-works-license).
|
|
30
|
+
|
|
31
|
+
## Notices
|
|
32
|
+
|
|
33
|
+
You must ensure that anyone who gets a copy of any part of
|
|
34
|
+
the software from you also gets a copy of these terms or the
|
|
35
|
+
URL for them above, as well as copies of any plain-text lines
|
|
36
|
+
beginning with `Required Notice:` that the licensor provided
|
|
37
|
+
with the software. For example:
|
|
38
|
+
|
|
39
|
+
> Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
|
|
40
|
+
|
|
41
|
+
## Changes and New Works License
|
|
42
|
+
|
|
43
|
+
The licensor grants you an additional copyright license to
|
|
44
|
+
make changes and new works based on the software for any
|
|
45
|
+
permitted purpose.
|
|
46
|
+
|
|
47
|
+
## Patent License
|
|
48
|
+
|
|
49
|
+
The licensor grants you a patent license for the software that
|
|
50
|
+
covers patent claims the licensor can license, or becomes able
|
|
51
|
+
to license, that you would infringe by using the software.
|
|
52
|
+
|
|
53
|
+
## Noncommercial Purposes
|
|
54
|
+
|
|
55
|
+
Any noncommercial purpose is a permitted purpose.
|
|
56
|
+
|
|
57
|
+
## Personal Uses
|
|
58
|
+
|
|
59
|
+
Personal use for research, experiment, and testing for
|
|
60
|
+
the benefit of public knowledge, personal study, private
|
|
61
|
+
entertainment, hobby projects, amateur pursuits, or religious
|
|
62
|
+
observance, without any anticipated commercial application,
|
|
63
|
+
is use for a permitted purpose.
|
|
64
|
+
|
|
65
|
+
## Noncommercial Organizations
|
|
66
|
+
|
|
67
|
+
Use by any charitable organization, educational institution,
|
|
68
|
+
public research organization, public safety or health
|
|
69
|
+
organization, environmental protection organization,
|
|
70
|
+
or government institution is use for a permitted purpose
|
|
71
|
+
regardless of the source of funding or obligations resulting
|
|
72
|
+
from the funding.
|
|
73
|
+
|
|
74
|
+
## Fair Use
|
|
75
|
+
|
|
76
|
+
You may have "fair use" rights for the software under the
|
|
77
|
+
law. These terms do not limit them.
|
|
78
|
+
|
|
79
|
+
## No Other Rights
|
|
80
|
+
|
|
81
|
+
These terms do not allow you to sublicense or transfer any of
|
|
82
|
+
your licenses to anyone else, or prevent the licensor from
|
|
83
|
+
granting licenses to anyone else. These terms do not imply
|
|
84
|
+
any other licenses.
|
|
85
|
+
|
|
86
|
+
## Patent Defense
|
|
87
|
+
|
|
88
|
+
If you make any written claim that the software infringes or
|
|
89
|
+
contributes to infringement of any patent, your patent license
|
|
90
|
+
for the software granted under these terms ends immediately. If
|
|
91
|
+
your company makes such a claim, your patent license ends
|
|
92
|
+
immediately for work on behalf of your company.
|
|
93
|
+
|
|
94
|
+
## Violations
|
|
95
|
+
|
|
96
|
+
The first time you are notified in writing that you have
|
|
97
|
+
violated any of these terms, or done anything with the software
|
|
98
|
+
not covered by your licenses, your licenses can nonetheless
|
|
99
|
+
continue if you come into full compliance with these terms,
|
|
100
|
+
and take practical steps to correct past violations, within
|
|
101
|
+
32 days of receiving notice. Otherwise, all your licenses
|
|
102
|
+
end immediately.
|
|
103
|
+
|
|
104
|
+
## No Liability
|
|
105
|
+
|
|
106
|
+
***As far as the law allows, the software comes as is, without
|
|
107
|
+
any warranty or condition, and the licensor will not be liable
|
|
108
|
+
to you for any damages arising out of these terms or the use
|
|
109
|
+
or nature of the software, under any kind of legal claim.***
|
|
110
|
+
|
|
111
|
+
## Definitions
|
|
112
|
+
|
|
113
|
+
The **licensor** is the individual or entity offering these
|
|
114
|
+
terms, and the **software** is the software the licensor makes
|
|
115
|
+
available under these terms.
|
|
116
|
+
|
|
117
|
+
**You** refers to the individual or entity agreeing to these
|
|
118
|
+
terms.
|
|
119
|
+
|
|
120
|
+
**Your company** is any legal entity, sole proprietorship,
|
|
121
|
+
or other kind of organization that you work for, plus all
|
|
122
|
+
organizations that have control over, are under the control of,
|
|
123
|
+
or are under common control with that organization. **Control**
|
|
124
|
+
means ownership of substantially all the assets of an entity,
|
|
125
|
+
or the power to direct its management and policies by vote,
|
|
126
|
+
contract, or otherwise. Control can be direct or indirect.
|
|
127
|
+
|
|
128
|
+
**Your licenses** are all the licenses granted to you for the
|
|
129
|
+
software under these terms.
|
|
130
|
+
|
|
131
|
+
**Use** means anything you do with the software requiring one
|
|
132
|
+
of your licenses.
|
package/README.md
ADDED
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
# Orchestrator CCC+L
|
|
2
|
+
|
|
3
|
+
**Lossless OpenClaw Orchestrator** turns local agent sessions into searchable,
|
|
4
|
+
summarizable, product-management objects for OpenClaw.
|
|
5
|
+
|
|
6
|
+
3C+L is the working shorthand for **Codex + Claude Code + Lossless**. The beta is
|
|
7
|
+
Codex-first: Claude Code support is intentionally shipped as an adapter stub
|
|
8
|
+
until its storage and control paths are proven.
|
|
9
|
+
|
|
10
|
+
[Vision](VISION.md) · [Current Sprint Brief](docs/sprints/brief-lco-codex-autonomy-cockpit-sprint-2026-07-01.md) · [Source Authority](docs/SOURCE_AUTHORITY_PROFILE.md) · [Agent Skill](skills/lossless-openclaw-orchestrator/SKILL.md) · [Release Checklist](docs/RELEASE_CHECKLIST.md) · [Working App Proof Sprint](docs/WORKING_APP_PROOF_SPRINT.md) · [OpenClaw Plugin](docs/OPENCLAW_PLUGIN.md) · [Claude Adapter Boundary](docs/CLAUDE_ADAPTER_BOUNDARY.md) · [Beta Demo](docs/BETA_RELEASE_DEMO.md) · [Beta Release Runbook](docs/BETA_RELEASE_RUNBOOK.md) · [Claim Audit](docs/CLAIM_AUDIT.md) · [PolyForm Noncommercial](LICENSE)
|
|
11
|
+
|
|
12
|
+
## Why This Exists
|
|
13
|
+
|
|
14
|
+
OpenClaw should be able to manage hundreds of local agent sessions without
|
|
15
|
+
spending its whole context window rereading raw transcripts.
|
|
16
|
+
|
|
17
|
+
LCO gives an orchestrator agent a staged recall loop:
|
|
18
|
+
|
|
19
|
+
1. Find likely sessions cheaply.
|
|
20
|
+
2. Describe the session as compact metadata.
|
|
21
|
+
3. Expand only the few sessions that need evidence.
|
|
22
|
+
4. Recommend or dry-run the next action with source refs.
|
|
23
|
+
|
|
24
|
+
The product goal is not "search all the logs." The goal is to help an
|
|
25
|
+
orchestrator decide what matters next with the least possible token load.
|
|
26
|
+
|
|
27
|
+
## Product Spine
|
|
28
|
+
|
|
29
|
+
The core product object is a managed session.
|
|
30
|
+
|
|
31
|
+
A useful managed session should expose:
|
|
32
|
+
|
|
33
|
+
- project, status, priority, owner, blocker, and next action
|
|
34
|
+
- proposed-plan refs, final-message refs, and closeout refs
|
|
35
|
+
- touched files, tool metadata, safe summaries, and source refs
|
|
36
|
+
- archive, fork, resume, steer, send, or interrupt recommendations
|
|
37
|
+
- bounded expansion profiles such as metadata-only, brief, and evidence bundle
|
|
38
|
+
|
|
39
|
+
The current beta already indexes and recalls Codex session evidence. The next
|
|
40
|
+
roadmap push is to make this spine explicit enough that an OpenClaw agent can
|
|
41
|
+
triage, prioritize, and manage many sessions as work objects instead of
|
|
42
|
+
rediscovering state from text every time.
|
|
43
|
+
|
|
44
|
+
## What Works Now
|
|
45
|
+
|
|
46
|
+
| Area | Status | Notes |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
| Codex session indexing | Beta | Imports local Codex session JSONL/archive data into local SQLite. |
|
|
49
|
+
| Search / describe / expand | Beta | Supports the staged `grep -> describe -> expand_query` recall loop. |
|
|
50
|
+
| Plans, finals, files, tools | Beta | Extracts proposed plans, final messages, touched files, tool-call metadata, and safe summaries. |
|
|
51
|
+
| MCP / OpenClaw tools | Beta | Exposes `loo_*` tools for OpenClaw and other MCP clients. |
|
|
52
|
+
| OpenClaw LCM peer reads | Experimental | Reads peer summary DBs read-only without merging stores. |
|
|
53
|
+
| Codex direct controls | Beta boundary | Resume/send/steer/interrupt are approval-gated and dry-run first; installed OpenClaw gateway live proof exists only inside its explicit proof boundary. |
|
|
54
|
+
| Desktop fallback | Experimental | CUA Driver and Peekaboo have backend-specific scratch no-focus proof; product GUI mutation still needs an action-bound proof gate. |
|
|
55
|
+
| Scorecards and release proof | Beta | Public-safe scorecards and release-status commands track what is proven. |
|
|
56
|
+
| QA Lab scenarios | Beta | Dry-run scenario contracts under `evals/scenarios/v1` turn orchestrator workflows into public-safe eval tasks. |
|
|
57
|
+
| Working app runtime proof | Completed proof | M7/#156 proved the named runtime path and proof gates; generic GUI mutation, Claude parity, and 1.0 readiness remain excluded. |
|
|
58
|
+
| Codex autonomy cockpit | P0 beta | Recent session cards, cockpit inbox, read-only watcher/resume-request packets, approval packets, and operating-picture tools are public-safe by default. |
|
|
59
|
+
| Eva operating picture | P0 beta | Business pulse and attention inbox use LCO/Codex, optional structured GitHub items, explicit PLAN_STATE pins, and source-authority coverage; P1 business adapters are not configured yet. |
|
|
60
|
+
| Claude Code adapter | Fixture inventory | Supports redacted metadata-only fixtures with `claude_session:*` refs; no Claude parity, live control, GUI mutation, or cloud sync claim. |
|
|
61
|
+
|
|
62
|
+
## Current Sprint: Codex Autonomy Cockpit + Eva Operating Picture
|
|
63
|
+
|
|
64
|
+
The roadmap is now ranked by one question:
|
|
65
|
+
|
|
66
|
+
> Does this help an OpenClaw orchestrator manage hundreds of sessions with less
|
|
67
|
+
> context, less rereading, and safer action?
|
|
68
|
+
|
|
69
|
+
The current sprint is tracked by
|
|
70
|
+
[#254](https://github.com/100yenadmin/Lossless-Codex-Orchestrator-LCO/issues/254),
|
|
71
|
+
[#255](https://github.com/100yenadmin/Lossless-Codex-Orchestrator-LCO/issues/255),
|
|
72
|
+
and first child
|
|
73
|
+
[#256](https://github.com/100yenadmin/Lossless-Codex-Orchestrator-LCO/issues/256).
|
|
74
|
+
The sprint brief is
|
|
75
|
+
[docs/sprints/brief-lco-codex-autonomy-cockpit-sprint-2026-07-01.md](docs/sprints/brief-lco-codex-autonomy-cockpit-sprint-2026-07-01.md).
|
|
76
|
+
|
|
77
|
+
The core Codex recall and M9 handoff paths are working; the current gap is
|
|
78
|
+
operating autonomy. Eva should be able to answer which Codex, project, and
|
|
79
|
+
business lanes need attention from compact cited cards without rereading raw
|
|
80
|
+
transcripts.
|
|
81
|
+
|
|
82
|
+
P0 is read-only and deterministic:
|
|
83
|
+
|
|
84
|
+
- #254 adds `loo_recent_sessions`, `loo_cockpit_inbox`, read-only
|
|
85
|
+
watcher/resume-request primitives, evidence-backed session cards, and
|
|
86
|
+
approval packets for dry-run control context.
|
|
87
|
+
- #260 adds read-only Codex app-server status/thread signals and
|
|
88
|
+
`loo_visible_codex_map`, a public-safe join between sanitized visible Codex
|
|
89
|
+
candidates and indexed session cards.
|
|
90
|
+
- #255 adds `loo_plan_state_pins`, `loo_github_operating_items`,
|
|
91
|
+
`loo_project_digest`, `loo_attention_inbox`, and `loo_business_pulse`.
|
|
92
|
+
- #264 adds a deterministic read-only GitHub operating-item collector so
|
|
93
|
+
issue/PR/check records become public-safe `github_items` before digest tools
|
|
94
|
+
summarize them.
|
|
95
|
+
- #271 cleans cockpit-card presentation so agent-facing titles, summaries, and
|
|
96
|
+
next actions do not expose directive fragments, markdown tables, duplicated
|
|
97
|
+
labels, or transcript-shaped excerpts.
|
|
98
|
+
- #272 adds `eva-operating-picture-dogfood-v1`, an end-to-end public-safe
|
|
99
|
+
workflow fixture for GitHub check fidelity, recent Codex cards, cockpit
|
|
100
|
+
ranking, customer/runtime/security priority, source coverage, and P1 gaps.
|
|
101
|
+
- #258 adds a public-safe [source authority profile](docs/SOURCE_AUTHORITY_PROFILE.md)
|
|
102
|
+
so P0 tools distinguish adapter coverage from who owns each truth claim.
|
|
103
|
+
- `PLAN_STATE.md` is demoted to bootloader, manual pins, approval boundaries,
|
|
104
|
+
stop conditions, and exception ledger. Unmarked prose is not current-state
|
|
105
|
+
truth.
|
|
106
|
+
- P1 sources such as Notion, support-control, Company Brain, Stripe,
|
|
107
|
+
dashboard/export, and model summarization remain `not_configured` until
|
|
108
|
+
separate read-only adapters prove source-backed collection.
|
|
109
|
+
|
|
110
|
+
What a local OpenClaw agent can do today:
|
|
111
|
+
|
|
112
|
+
- Search and describe local Codex sessions through `loo_search_sessions` and
|
|
113
|
+
`loo_describe_session`.
|
|
114
|
+
- Expand bounded evidence with `loo_expand_session` or `loo_expand_query`.
|
|
115
|
+
- Retrieve plans, finals, touched files, and session maps with the Codex detail
|
|
116
|
+
tools.
|
|
117
|
+
- List recent sessions and operating-picture attention items with
|
|
118
|
+
`loo_recent_sessions`, `loo_cockpit_inbox`, `loo_github_operating_items`,
|
|
119
|
+
`loo_project_digest`, `loo_attention_inbox`, and `loo_business_pulse`.
|
|
120
|
+
- Represent watcher-triggered follow-up requests with `loo_watchers_list`,
|
|
121
|
+
`loo_watcher_status`, `loo_watcher_dry_run`, and
|
|
122
|
+
`loo_resume_request_packet`; these tools create request packets only and do
|
|
123
|
+
not run live Codex control.
|
|
124
|
+
- Inspect Codex app-server readiness and visible-to-indexed session correlation
|
|
125
|
+
with `loo_codex_app_server_status`, `loo_codex_app_server_threads`, and
|
|
126
|
+
`loo_visible_codex_map`; these tools report source coverage, confidence, and
|
|
127
|
+
ambiguity without raw turns, screenshots, remote-control enablement, or GUI
|
|
128
|
+
mutation.
|
|
129
|
+
- Inspect `authorityCoverage` to see whether LCO, GitHub, or PLAN_STATE is
|
|
130
|
+
authoritative, fallback-only, unavailable, or not configured for a claim.
|
|
131
|
+
- Dry-run Codex control actions and inspect audit ids before any live action.
|
|
132
|
+
- Check package, plugin, gateway, and first-run readiness through `loo_doctor`,
|
|
133
|
+
`loo onboard status`, `loo openclaw dogfood`, `loo openclaw tool-smoke`, and
|
|
134
|
+
`loo openclaw published-smoke`.
|
|
135
|
+
|
|
136
|
+
Completed proof:
|
|
137
|
+
|
|
138
|
+
- The [Working App Proof Sprint](docs/WORKING_APP_PROOF_SPRINT.md) and #156
|
|
139
|
+
closed the M7 runtime proof lane for the named Codex-first surfaces.
|
|
140
|
+
- M9 closed the first-class agent skill, docs truth pass, agent dogfood,
|
|
141
|
+
fresh npm clean-profile smoke, and 1.0 readiness gate.
|
|
142
|
+
- Desktop fallback remains action-bound; generic GUI mutation and Codex GUI
|
|
143
|
+
mutation are not public beta claims.
|
|
144
|
+
- Claude Code remains an adapter stub and fixture inventory, not parity.
|
|
145
|
+
|
|
146
|
+
## Quick Start
|
|
147
|
+
|
|
148
|
+
Node.js 22 or newer is required.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
git clone https://github.com/100yenadmin/Lossless-Codex-Orchestrator-LCO.git
|
|
152
|
+
cd Lossless-Codex-Orchestrator-LCO
|
|
153
|
+
npm install
|
|
154
|
+
npm run build
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Published beta package target:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm install -g lossless-openclaw-orchestrator@beta
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### npm dist-tag policy
|
|
164
|
+
|
|
165
|
+
Until the first stable release exists, install the public beta through the
|
|
166
|
+
`beta` dist-tag. The `beta` tag must point at the newest public beta. The
|
|
167
|
+
`latest` tag currently remains `0.1.0-beta.4` and must not be promoted during
|
|
168
|
+
`0.1.x` beta releases unless a separate latest-promotion operation explicitly
|
|
169
|
+
claims and proves that change. At the first stable release, move `latest` to the
|
|
170
|
+
stable version and keep prereleases on prerelease tags such as `beta`. Do not publish a fake stable package just to move a dist-tag.
|
|
171
|
+
|
|
172
|
+
Default local database:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
export LOO_DB_PATH="$HOME/.openclaw/lossless-openclaw-orchestrator/orchestrator.sqlite"
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Optional read-only OpenClaw LCM peer DBs:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
export LOO_LCM_DB_PATHS="$HOME/.openclaw/lcm.db"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## CLI
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
loo onboard status --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/onboarding --now 2026-07-01T00:00:00.000Z --strict
|
|
188
|
+
loo doctor
|
|
189
|
+
loo index codex --max-files 150 ~/.codex/sessions ~/.codex/archived_sessions
|
|
190
|
+
loo search "proposed plan billing bridge"
|
|
191
|
+
loo grep --lcm-db ~/.openclaw/lcm.db "billing bridge"
|
|
192
|
+
loo describe codex_thread:019f-example
|
|
193
|
+
loo expand-query --profile brief "billing bridge"
|
|
194
|
+
loo sanitize sessions --thread-id 019f-example --repair-plan --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/issue-<number>-sanitizer
|
|
195
|
+
loo serve
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Desktop readiness checks:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
loo desktop see cua-driver
|
|
202
|
+
loo desktop see peekaboo --snapshot --max-nodes 50
|
|
203
|
+
loo desktop act cua-driver "click primary" # dry-run only in this beta
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Live desktop act requests are intentionally blocked in this beta. Through MCP or
|
|
207
|
+
OpenClaw, `loo_desktop_act` returns structured blockers for missing or
|
|
208
|
+
mismatched action-bound proof fields so an agent can continue through `loo_desktop_live_proof_harness`
|
|
209
|
+
and `loo_desktop_proof_report` without performing GUI mutation.
|
|
210
|
+
|
|
211
|
+
Scorecard and release proof commands:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
loo scorecards sweep --claim-scope codex-read-search-expand-dry-run --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/issue-<number>-scorecard-sweep --strict
|
|
215
|
+
loo eval scenarios --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/issue-<number>-qa-lab-v1 --strict
|
|
216
|
+
loo eval scenarios --scenario-dir evals/scenarios/v1.1 --runtime-proof-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/runtime-proofs --scenario-id openclaw-gateway-live-codex-v1-1 --scenario-id post-action-refresh-reasoning-v1-1 --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/issue-<number>-qa-lab-v1.1 --strict
|
|
217
|
+
loo release preflight --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-preflight
|
|
218
|
+
loo release status --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status --candidate-sha <release-candidate-sha> --approved-live-control-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/approved-live-control-smoke.json --npm-publish-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/npm-approval.json --github-release-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-release-approval.json --github-ci-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-ci.json --codeql-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/codeql.json
|
|
219
|
+
loo release demo-status --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/demo
|
|
220
|
+
loo release general-readiness --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/general-readiness --fresh-npm-evidence published-package-smoke.json --agent-dogfood-evidence openclaw-tool-smoke.json --strict
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
QA Lab dry-run scenarios live in `evals/scenarios/v1`. Runtime-required working
|
|
224
|
+
app proof scenarios live in `evals/scenarios/v1.1`. The current
|
|
225
|
+
`loo eval scenarios` command validates `v1` dry-run contracts and `v1.1`
|
|
226
|
+
runtime-required proof markers without performing the live actions itself.
|
|
227
|
+
Milestone 7 runtime scenarios stay incomplete until `--runtime-proof-dir`
|
|
228
|
+
contains public-safe `<scenario-id>.runtime-proof.json` markers from the later
|
|
229
|
+
child issues. Use repeated `--scenario-id` flags to scope the sweep to the
|
|
230
|
+
surfaces claimed by the release: a Codex-first working-app claim includes
|
|
231
|
+
`openclaw-gateway-live-codex-v1-1` and
|
|
232
|
+
`post-action-refresh-reasoning-v1-1`; add the desktop or local UI scenario ids
|
|
233
|
+
only when the release copy claims those surfaces.
|
|
234
|
+
|
|
235
|
+
For a release candidate that intentionally claims only read/search/describe/expand
|
|
236
|
+
plus dry-run control, name the smaller scope explicitly and do not pass
|
|
237
|
+
live-control proof:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
loo release preflight --claim-scope codex-read-search-expand-dry-run --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-preflight --strict
|
|
241
|
+
loo release bundle --claim-scope codex-read-search-expand-dry-run --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-bundle
|
|
242
|
+
loo release demo-status --claim-scope codex-read-search-expand-dry-run --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/demo --strict
|
|
243
|
+
loo release status --claim-scope codex-read-search-expand-dry-run --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status --candidate-sha <release-candidate-sha> --npm-publish-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/npm-approval.json --github-release-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-release-approval.json --github-ci-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-ci.json --codeql-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/codeql.json --strict
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
That scope records approved live Codex control and working-app runtime proof as
|
|
247
|
+
excluded claims. Use the default `codex-live-control` scope when the release
|
|
248
|
+
claims live send/resume/steer or interrupt proof but does not yet claim the
|
|
249
|
+
installed gateway plus post-action refresh loop.
|
|
250
|
+
|
|
251
|
+
Use `codex-working-app-proof` only when the release candidate has both the
|
|
252
|
+
approved live-control proof and public-safe v1.1 runtime marker files from #158
|
|
253
|
+
and #159:
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
loo release preflight --claim-scope codex-working-app-proof --runtime-proof-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/runtime-proof --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-preflight --approved-live-control-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/approved-live-control-smoke.json --strict
|
|
257
|
+
loo release status --claim-scope codex-working-app-proof --runtime-proof-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/runtime-proof --evidence-dir /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status --candidate-sha <release-candidate-sha> --approved-live-control-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/approved-live-control-smoke.json --npm-publish-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/npm-approval.json --github-release-approval-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-release-approval.json --github-ci-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/github-ci.json --codeql-evidence /Volumes/LEXAR/Codex/lossless-openclaw-orchestrator/YYYY-MM-DD/release-status/codeql.json --strict
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Without `openclaw-gateway-live-codex-v1-1.runtime-proof.json` and
|
|
261
|
+
`post-action-refresh-reasoning-v1-1.runtime-proof.json`, that scope fails closed
|
|
262
|
+
with `runtime_proof_missing:*` blockers.
|
|
263
|
+
|
|
264
|
+
The beta proof workflow lives in [docs/BETA_RELEASE_DEMO.md](docs/BETA_RELEASE_DEMO.md).
|
|
265
|
+
The release cadence and approval gates live in
|
|
266
|
+
[docs/BETA_RELEASE_RUNBOOK.md](docs/BETA_RELEASE_RUNBOOK.md).
|
|
267
|
+
|
|
268
|
+
## Beta Claim Boundary
|
|
269
|
+
|
|
270
|
+
Allowed public beta claim:
|
|
271
|
+
|
|
272
|
+
> Control and collaborate with local Codex sessions through OpenClaw using local
|
|
273
|
+
> indexing, bounded recall, and approval-gated controls.
|
|
274
|
+
|
|
275
|
+
Forbidden beta claims:
|
|
276
|
+
|
|
277
|
+
- Full Claude Code parity
|
|
278
|
+
- cloud sync
|
|
279
|
+
- unattended desktop takeover
|
|
280
|
+
- bypasses Codex permissions
|
|
281
|
+
- release-grade enterprise security
|
|
282
|
+
|
|
283
|
+
Detailed public-claim checks live in [docs/CLAIM_AUDIT.md](docs/CLAIM_AUDIT.md).
|
|
284
|
+
|
|
285
|
+
## MCP / OpenClaw Tools
|
|
286
|
+
|
|
287
|
+
Tool prefix: `loo_*`.
|
|
288
|
+
|
|
289
|
+
Read/search:
|
|
290
|
+
|
|
291
|
+
- `loo_index_sessions`
|
|
292
|
+
- `loo_grep`
|
|
293
|
+
- `loo_search_sessions`
|
|
294
|
+
- `loo_describe_ref`
|
|
295
|
+
- `loo_describe_session`
|
|
296
|
+
- `loo_expand_session`
|
|
297
|
+
- `loo_expand_query`
|
|
298
|
+
|
|
299
|
+
Codex details:
|
|
300
|
+
|
|
301
|
+
- `loo_codex_thread_map`
|
|
302
|
+
- `loo_codex_final_messages`
|
|
303
|
+
- `loo_codex_plans`
|
|
304
|
+
- `loo_codex_touched_files`
|
|
305
|
+
- `loo_codex_tool_calls`
|
|
306
|
+
|
|
307
|
+
Approval-gated controls:
|
|
308
|
+
|
|
309
|
+
- `loo_codex_control_dry_run`
|
|
310
|
+
- `loo_codex_resume_thread`
|
|
311
|
+
- `loo_codex_send_message`
|
|
312
|
+
- `loo_codex_steer_thread`
|
|
313
|
+
- `loo_codex_interrupt_thread`
|
|
314
|
+
|
|
315
|
+
Desktop fallback:
|
|
316
|
+
|
|
317
|
+
- `loo_desktop_see`
|
|
318
|
+
- `loo_desktop_act`
|
|
319
|
+
|
|
320
|
+
Admin:
|
|
321
|
+
|
|
322
|
+
- `loo_doctor`
|
|
323
|
+
- `loo_lcm_peer_dbs`
|
|
324
|
+
- `loo_permissions`
|
|
325
|
+
- `loo_audit_tail`
|
|
326
|
+
|
|
327
|
+
OpenClaw setup lives in [docs/OPENCLAW_PLUGIN.md](docs/OPENCLAW_PLUGIN.md).
|
|
328
|
+
|
|
329
|
+
## Architecture
|
|
330
|
+
|
|
331
|
+
- `packages/core`: SQLite schema, Codex import, search, expansion, extraction, source refs.
|
|
332
|
+
- `packages/mcp-server`: stdio MCP tool server.
|
|
333
|
+
- `packages/openclaw-plugin`: OpenClaw plugin metadata and registration.
|
|
334
|
+
- `packages/cli`: `loo` CLI.
|
|
335
|
+
- `packages/adapters`: Codex control, CUA/Peekaboo boundary, Claude Code stub.
|
|
336
|
+
- `evals/scorecards/v1.0`: beta scorecards for safety, retrieval, install, claims, usability, local Mac search UI, and orchestrator leverage.
|
|
337
|
+
- `evals/scorecards/v1.0/working-app-runtime-proof-review.json`: Milestone 7 runtime proof scorecard.
|
|
338
|
+
- `evals/scenarios/v1`: QA Lab dry-run scenario contracts for session map triage, retrieval, bounded expansion, control safety, gateway dogfood, and release claims.
|
|
339
|
+
- `evals/scenarios/v1.1`: runtime-required working-app proof contracts for installed gateway live control, post-action refresh, desktop collaboration, and connected UI proof.
|
|
340
|
+
- `docs/`: install, demo, privacy, safe summaries, release proof, release runbook, and public-claim boundaries.
|
|
341
|
+
|
|
342
|
+
Direct Codex protocol is preferred for thread work. GUI automation is a fallback
|
|
343
|
+
for visible app collaboration only.
|
|
344
|
+
|
|
345
|
+
## Development
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
npm run typecheck
|
|
349
|
+
npm test
|
|
350
|
+
npm run build
|
|
351
|
+
npm run check
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
The test suite uses redacted fixtures and Node's built-in test runner.
|
|
355
|
+
|
|
356
|
+
Every meaningful issue should include a failing test, fixture, smoke, or eval
|
|
357
|
+
scenario; minimal implementation; focused validation; public-safe evidence; and
|
|
358
|
+
an issue or PR status update.
|
|
359
|
+
|
|
360
|
+
## Privacy
|
|
361
|
+
|
|
362
|
+
The default index is local SQLite. The index stores safe text and metadata so
|
|
363
|
+
agents can search and expand bounded evidence. Raw local session files remain
|
|
364
|
+
the source of truth and should not be committed.
|
|
365
|
+
|
|
366
|
+
Public evidence should contain counts, refs, hashes, statuses, and redacted
|
|
367
|
+
metadata. It should not contain raw transcripts, raw prompts, SQLite databases,
|
|
368
|
+
tokens, cookies, API keys, screenshots, videos, or private customer data.
|
|
369
|
+
|
|
370
|
+
See [docs/PRIVACY.md](docs/PRIVACY.md) and [docs/SAFE_SUMMARIES.md](docs/SAFE_SUMMARIES.md).
|
|
371
|
+
|
|
372
|
+
## License
|
|
373
|
+
|
|
374
|
+
Current source is source-available under the
|
|
375
|
+
[PolyForm Noncommercial License 1.0.0](LICENSE). Noncommercial use is permitted
|
|
376
|
+
under those terms.
|
|
377
|
+
|
|
378
|
+
Commercial, internal-business, hosted-service, or product use requires a
|
|
379
|
+
separate commercial license from the project owner.
|
|
380
|
+
|
|
381
|
+
Historical beta releases published under the MIT License remain available under
|
|
382
|
+
the terms that applied to those releases. This license transition applies
|
|
383
|
+
prospectively to the current source and future releases.
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
The public beta supports the latest published `0.1.x` beta.
|
|
6
|
+
|
|
7
|
+
## Reporting A Vulnerability
|
|
8
|
+
|
|
9
|
+
Please open a private security advisory on GitHub or contact the maintainer privately before publishing details.
|
|
10
|
+
|
|
11
|
+
High-priority issues include:
|
|
12
|
+
|
|
13
|
+
- Live control running without a dry-run audit id.
|
|
14
|
+
- Raw tokens, cookies, connector URLs, or customer credentials written to shareable evidence.
|
|
15
|
+
- Local session text uploaded by default.
|
|
16
|
+
- Codex approvals or sandbox semantics bypassed.
|
|
17
|
+
- Desktop fallback stealing focus or acting on the wrong app/window.
|
|
18
|
+
|
|
19
|
+
## Local Privacy Boundary
|
|
20
|
+
|
|
21
|
+
This project is local-first. Do not attach raw Codex/Claude transcripts, private SQLite DBs, auth files, cookies, tokens, or screenshots containing secrets to public issues.
|