@openlife/cli 1.7.4 → 1.7.5
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/CHANGELOG.md +186 -0
- package/CODE_OF_CONDUCT.md +31 -0
- package/CONTRIBUTING.md +133 -0
- package/README.md +25 -9
- package/package.json +10 -2
- package/docs/CHANGELOG_FEATURE_ROLLOUT_DESIGNMD.md +0 -43
- package/docs/EXTERNAL_SOURCES_AND_SECURITY_GUARD.md +0 -33
- package/docs/OPENLIFE_AUDIT_2026-05-06.md +0 -170
- package/docs/OPENLIFE_CONSOLIDATED_PLAN_2026-05-06.md +0 -299
- package/docs/OPENLIFE_DUAL_MODE_IMPLEMENTATION_PLAN.md +0 -205
- package/docs/OPENLIFE_EVOLUTION_SURFACE_2026-05-07.md +0 -53
- package/docs/OPENLIFE_SKILLS_IMPORT_2026-05-07.json +0 -223
- package/docs/OPENLIFE_SQUADS_IMPORT_2026-05-07.json +0 -184
- package/docs/PAPERCLIP_OPENLIFE_INVESTIGATION.md +0 -85
- package/docs/RELEASE_ORGANIZATION_PLAN.md +0 -164
- package/docs/audit/CLI-EXECUTION-RESULTS.md +0 -113
- package/docs/audit/CLI-MATRIX.md +0 -556
- package/docs/audit/DOC-PARITY-GAPS.md +0 -351
- package/docs/audit/ORCHESTRATOR-MATRIX.md +0 -136
- package/docs/audit/TEST-COVERAGE-GAPS.md +0 -334
- package/docs/audit/integrations/SKIPPED.md +0 -101
- package/docs/autonomous-install.md +0 -79
- package/docs/capability-genesis.md +0 -137
- package/docs/capability-pack-schema.md +0 -157
- package/docs/commands.md +0 -82
- package/docs/deep-research-capability.md +0 -114
- package/docs/development/typescript-conventions.md +0 -95
- package/docs/host-installers.md +0 -68
- package/docs/install/aiobuilder.md +0 -70
- package/docs/install/claude-code.md +0 -83
- package/docs/install/codex.md +0 -64
- package/docs/install/gemini-cli.md +0 -64
- package/docs/install/runtime-profiles.md +0 -83
- package/docs/openlife-agent-os-blueprint.md +0 -114
- package/docs/openlife-install-backlog.md +0 -115
- package/docs/openlife-install-spec.md +0 -306
- package/docs/operations/CLOUD_CUTOVER_AUDIT.md +0 -37
- package/docs/operations/PHASE_PROGRESS_CONTINUATION.md +0 -24
- package/docs/performance-benchmarks.md +0 -83
- package/docs/planning/v1.3-capability-genesis.md +0 -157
- package/docs/plans/2026-05-05-admin-interface-professional-dark-premium-plan.md +0 -84
- package/docs/plans/2026-05-05-openlife-autonomous-domain-marketplace-masterplan.md +0 -122
- package/docs/roadmap/OPENLIFE_MASTER_PLAN_CLOUD_V3.md +0 -97
- package/docs/sandboxing-research.md +0 -117
- package/docs/stories/epic-feature-audit/1.1.story.md +0 -84
- package/docs/stories/epic-feature-audit/1.2.story.md +0 -102
- package/docs/stories/epic-feature-audit/1.3.story.md +0 -93
- package/docs/stories/epic-feature-audit/1.5.story.md +0 -121
- package/docs/stories/epic-feature-audit/1.6.story.md +0 -80
- package/docs/stories/epic-feature-completeness/2.1.story.md +0 -70
- package/docs/stories/epic-feature-completeness/2.2.story.md +0 -49
- package/docs/stories/epic-feature-completeness/2.3.story.md +0 -74
- package/docs/stories/epic-feature-completeness/2.4.story.md +0 -71
- package/docs/stories/epic-feature-completeness/3.1.story.md +0 -56
- package/docs/stories/epic-feature-completeness/3.2.story.md +0 -80
- package/docs/stories/epic-feature-completeness/3.3.story.md +0 -68
- package/docs/stories/epic-feature-completeness/3.4.story.md +0 -71
- package/docs/stories/epic-feature-completeness/3.5.story.md +0 -72
- package/docs/stories/epic-feature-completeness/3.6.story.md +0 -69
- package/docs/stories/epic-feature-completeness/3.7.story.md +0 -68
- package/docs/stories/epic-feature-completeness/3.8.story.md +0 -57
- package/docs/v1.4-changelog.md +0 -159
- package/docs/v1.5-changelog.md +0 -106
- package/docs/v1.5-roadmap.md +0 -121
- package/docs/v1.6-changelog.md +0 -67
- package/docs/v1.6-roadmap.md +0 -89
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to OpenLife CLI (`@openlife/cli`) are documented here.
|
|
4
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
5
|
+
Project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
Detailed per-milestone notes (story-level breakdown, commit map, scorecard
|
|
8
|
+
deltas) live in `docs/v<N>-changelog.md`.
|
|
9
|
+
|
|
10
|
+
## [Unreleased]
|
|
11
|
+
|
|
12
|
+
Hit-10 sprint in progress — see plan for M2→M6 (docs hygiene, first-run
|
|
13
|
+
wizard, observability, aiobuilder depth, self-update).
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## [1.7.4] — 2026-05-14
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- `openlife --version` now reads dynamically from `package.json` instead
|
|
21
|
+
of a hardcoded `1.0.0`. After install, the reported version matches
|
|
22
|
+
the npm tag.
|
|
23
|
+
|
|
24
|
+
## [1.7.3] — 2026-05-14
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- `LICENSE` (MIT) at repository root and registered in `package.json`
|
|
28
|
+
`files[]` so the tarball ships it.
|
|
29
|
+
- `.npmignore` to enforce exclusions over `files[]` whitelist when
|
|
30
|
+
needed.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Cleaned external dev-kit branding (AIOX, GSD, AIOS) from every
|
|
34
|
+
user-facing surface: 33 catalog files scrubbed, 8 unused legacy
|
|
35
|
+
catalog entries removed, source comments and test function names
|
|
36
|
+
generalized, `dist-templates/workflows/AIOX_PORT_NOTES.md` renamed
|
|
37
|
+
to `PORTED_WORKFLOWS.md`.
|
|
38
|
+
- `.planning/` and `CLAUDE.md` untracked and `.gitignore`'d — they
|
|
39
|
+
remain on disk for the maintainer but never ship publicly.
|
|
40
|
+
- Compact, OpenLife-only `CLAUDE.md` content (local-only).
|
|
41
|
+
|
|
42
|
+
### Removed
|
|
43
|
+
- 7 unused `aios-*` agents + 1 squad from `.catalog/` (imported mirrors
|
|
44
|
+
with zero runtime consumers).
|
|
45
|
+
- Internal strategy/study docs moved out of public `docs/`.
|
|
46
|
+
|
|
47
|
+
## [1.7.2] — 2026-05-14
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- Package renamed from `@open-life/cli` → `@openlife/cli` to match
|
|
51
|
+
the existing npm organization (`openlife`). No code/behavior change.
|
|
52
|
+
|
|
53
|
+
## [1.7.1] — 2026-05-13
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
- `SystemDoctor` graceful downgrade when running on Node 20+ builds
|
|
57
|
+
that lack `--permission` flag support (e.g. CI runners). Sandbox
|
|
58
|
+
enforcement check no longer false-fails on unsupported runtimes.
|
|
59
|
+
|
|
60
|
+
## [1.7.0] — 2026-05-13 — "Enforcement at scale"
|
|
61
|
+
|
|
62
|
+
See `docs/v1.7-changelog.md` for full per-story breakdown.
|
|
63
|
+
|
|
64
|
+
### Added
|
|
65
|
+
- Toolset enforcement coverage expanded from 2 to **13 categories**
|
|
66
|
+
(memory, tts, cron, mcp, skills, workflows, squads, web, file,
|
|
67
|
+
vision, gateway, plus terminal and delegation from v1.4). Behind
|
|
68
|
+
`OPENLIFE_TOOLSET_ENFORCEMENT=on` (default still off, calendar-gated
|
|
69
|
+
flip in 20.1).
|
|
70
|
+
- `OrchestrationLoop` now branches on `OPENLIFE_BRAIN_FORECAST=on` to
|
|
71
|
+
reach `ConsequenceForecaster.forecastWithBrain()` (shipped v1.5,
|
|
72
|
+
unwired until now). Brain verdict / risk amplifiers / opportunity
|
|
73
|
+
factors surfaced into the attempt trace.
|
|
74
|
+
- `test_forecast_brain_wiring.ts` regression guard catches the
|
|
75
|
+
"shipped but unwired" class of bug.
|
|
76
|
+
- Consolidated `docs/release-process.md` runbook.
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
- CI lint `any`-budget grep filter (`-h` flag was stripping filenames,
|
|
80
|
+
causing test-file matches to count as production). Production `any`
|
|
81
|
+
count driven to **0** against a filename-aware grep.
|
|
82
|
+
|
|
83
|
+
### Note on prior measurement
|
|
84
|
+
The v1.4–v1.6 `any` counts (172, 109, 83) reflected the broken filter
|
|
85
|
+
and were inflated. Real production counts were ~30, ~20, 12–14.
|
|
86
|
+
Historical changelogs are not retroactively edited; the correction is
|
|
87
|
+
documented in `docs/v1.7-changelog.md`.
|
|
88
|
+
|
|
89
|
+
## [1.6.0] — 2026-05-13 — "Sandbox rollout"
|
|
90
|
+
|
|
91
|
+
See `docs/v1.6-changelog.md`.
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
- `ProcessSandbox` (Story 18.1): Node 20+ `--permission` flag-based
|
|
95
|
+
process sandboxing. First production wire-in via `openlife doctor`
|
|
96
|
+
with graceful downgrade when unsupported.
|
|
97
|
+
- `TaskExecutor` opt-in sandbox (Story 18.2) via
|
|
98
|
+
`OPENLIFE_SANDBOX_TASK_EXEC=on`.
|
|
99
|
+
- Distributed lock primitive for multi-process queue coordination.
|
|
100
|
+
|
|
101
|
+
### Changed
|
|
102
|
+
- `RuntimeHealthMonitor` exponential backoff (10s base → 1h cap) with
|
|
103
|
+
10-failure budget per 1h window.
|
|
104
|
+
|
|
105
|
+
## [1.5.0] — 2026-05-13 — "Evaluation + remote publishing"
|
|
106
|
+
|
|
107
|
+
See `docs/v1.5-changelog.md` and `docs/v1.5-roadmap.md`.
|
|
108
|
+
|
|
109
|
+
### Added
|
|
110
|
+
- Brain-driven post-mission evaluation (Story 13.1) — automatic
|
|
111
|
+
`quality / governance / actionability` scoring via `eval judge`
|
|
112
|
+
command, results in `.openlife/evaluations/`.
|
|
113
|
+
- SHA-chained governance scope ledger (Story 14.2):
|
|
114
|
+
`.openlife/governance-ledger.jsonl` with tamper detection via chain
|
|
115
|
+
walk. PII protection by hashing goals before persistence.
|
|
116
|
+
- Remote asset publishing over HTTPS (Story 14.1) —
|
|
117
|
+
`RemotePublisher` + signed manifests for catalog distribution.
|
|
118
|
+
- `ConsequenceForecaster.forecastWithBrain()` API (wiring in v1.7).
|
|
119
|
+
- Type safety improvements: structured Telegram API parsing, event
|
|
120
|
+
iteration typing.
|
|
121
|
+
|
|
122
|
+
## [1.4.0] / [1.4.1] — 2026-05-12/13 — "Path to 10/10"
|
|
123
|
+
|
|
124
|
+
See `docs/v1.4-changelog.md`.
|
|
125
|
+
|
|
126
|
+
### Added (consolidation milestone — no new pillars)
|
|
127
|
+
- Intelligence wiring: `Brain.isAnyProviderAvailable()` opt-in,
|
|
128
|
+
`SquadCreator/SkillCreator.designWithBrain()`, post-mission memory
|
|
129
|
+
consolidation hook.
|
|
130
|
+
- Real I/O: `SecurityDownloadGuard.downloadAndScan()` with size cap +
|
|
131
|
+
filename-pattern scanning; `HostInstaller` real implementations for
|
|
132
|
+
Gemini CLI and Codex (no longer stubs); seeded
|
|
133
|
+
`dist-templates/{gemini-cli,codex}/`.
|
|
134
|
+
- Toolset enforcement kernel: `assertToolsetAllowed()` at
|
|
135
|
+
`TaskExecutor` and `Brain` CLI sites (terminal + delegation
|
|
136
|
+
categories).
|
|
137
|
+
- Workflow condition parser: tokenize → recursive-descent → evaluate
|
|
138
|
+
pipeline supporting `AND/OR/NOT/==/!=` + parens + dotted identifiers.
|
|
139
|
+
- CI + perf telemetry: `npm run test:performance-latency`,
|
|
140
|
+
`.github/workflows/{test,build,lint}.yml`.
|
|
141
|
+
|
|
142
|
+
### v1.4.1 — Maintenance cut
|
|
143
|
+
- Backport-eligible bug fixes for v1.4 line.
|
|
144
|
+
|
|
145
|
+
## [1.3.0] — 2026-05-12 — "Agent OS Integration"
|
|
146
|
+
|
|
147
|
+
### Added
|
|
148
|
+
- 5 blueprint docs covering Agent OS integration architecture.
|
|
149
|
+
- Service Mode contract caller fixes (required `actor` parameter).
|
|
150
|
+
- v1.3 placeholder commands now have real implementations.
|
|
151
|
+
- Capability Pack schema + Capability Genesis Engine — turns free-text
|
|
152
|
+
briefs into draft capability packs (Stories 1.1, 2.1–2.4, 3.1–3.3).
|
|
153
|
+
|
|
154
|
+
## [1.2.0] — 2026-05-12 — "Royal Stack"
|
|
155
|
+
|
|
156
|
+
### Added
|
|
157
|
+
- Workflow engine: `WorkflowSchema` + `WorkflowParser` +
|
|
158
|
+
`WorkflowEngine` with atomic state persistence and phase-step
|
|
159
|
+
execution model (Story 4.1).
|
|
160
|
+
- 4 ported workflows shipped in `dist-templates/workflows/`:
|
|
161
|
+
`story-development-cycle`, `greenfield-fullstack`,
|
|
162
|
+
`brownfield-discovery`, `qa-loop` (Story 4.4).
|
|
163
|
+
- Squad + Skill creators with interactive UX and Brain-driven design
|
|
164
|
+
modes (Stories 5.1–5.5).
|
|
165
|
+
- Atomic writer + mission checkpoint API (Stories 6.1–6.2).
|
|
166
|
+
- Runtime reliability: heartbeat, watchdog, distributed lock,
|
|
167
|
+
exponential backoff health monitor.
|
|
168
|
+
- `aiobuilder` CLI surface with 16 sub-commands (`mode`, `create-agent`,
|
|
169
|
+
`create-squad`, `build-skill`, `generate-ui`, `discover`, `plan`,
|
|
170
|
+
`build`, `test`, `preview`, `release`, `infra`, `score`, `evolve`,
|
|
171
|
+
`ship`, `chat`, `canonize`, `create-capability`).
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
[Unreleased]: https://github.com/GOOODZ/openlife-core/compare/v1.7.4...HEAD
|
|
176
|
+
[1.7.4]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.7.4
|
|
177
|
+
[1.7.3]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.7.3
|
|
178
|
+
[1.7.2]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.7.2
|
|
179
|
+
[1.7.1]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.7.1
|
|
180
|
+
[1.7.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.7.0
|
|
181
|
+
[1.6.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.6.0
|
|
182
|
+
[1.5.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.5.0
|
|
183
|
+
[1.4.1]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.4.1
|
|
184
|
+
[1.4.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.4.0
|
|
185
|
+
[1.3.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.3.0
|
|
186
|
+
[1.2.0]: https://github.com/GOOODZ/openlife-core/releases/tag/v1.2.0
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
This project welcomes contributions from anyone willing to engage
|
|
4
|
+
constructively. To keep collaboration productive and respectful, all
|
|
5
|
+
participants are expected to:
|
|
6
|
+
|
|
7
|
+
- Communicate professionally and assume good faith.
|
|
8
|
+
- Focus discussion on ideas, code, and project goals.
|
|
9
|
+
- Accept constructive feedback gracefully and offer it the same way.
|
|
10
|
+
- Respect differing viewpoints and experience levels.
|
|
11
|
+
- Help maintain a focused, useful technical environment.
|
|
12
|
+
|
|
13
|
+
## Scope
|
|
14
|
+
|
|
15
|
+
This Code of Conduct applies to all project spaces — issues, pull
|
|
16
|
+
requests, discussions, and any public communication associated with
|
|
17
|
+
OpenLife CLI.
|
|
18
|
+
|
|
19
|
+
## Reporting
|
|
20
|
+
|
|
21
|
+
If a concern arises, please contact the maintainer privately by opening
|
|
22
|
+
a confidential issue or via email at the address listed in
|
|
23
|
+
`package.json`. Reports will be reviewed and addressed by the
|
|
24
|
+
maintainer.
|
|
25
|
+
|
|
26
|
+
## Enforcement
|
|
27
|
+
|
|
28
|
+
The maintainer is responsible for clarifying acceptable behavior and
|
|
29
|
+
may take appropriate corrective action for participation that disrupts
|
|
30
|
+
the project, including edits to or removal of contributions and, where
|
|
31
|
+
necessary, blocking continued participation.
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# Contributing to OpenLife CLI
|
|
2
|
+
|
|
3
|
+
Thanks for your interest in improving OpenLife. This document covers the
|
|
4
|
+
dev setup, test discipline, commit conventions, and PR process used in
|
|
5
|
+
this project.
|
|
6
|
+
|
|
7
|
+
## Quick start (dev setup)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
git clone https://github.com/GOOODZ/openlife-core.git
|
|
11
|
+
cd openlife-core
|
|
12
|
+
npm install # postinstall runs scripts/postinstall-check.sh
|
|
13
|
+
npm run build # tsc → dist/
|
|
14
|
+
node bin/openlife.js --help # verify the CLI loads
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
For interactive development without rebuilding each time:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm run dev # ts-node src/index.ts
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Test discipline
|
|
24
|
+
|
|
25
|
+
OpenLife does **not** use Jest. Each test is a standalone executable in
|
|
26
|
+
`src/test_*.ts` that the `test:*` script in `package.json` compiles and
|
|
27
|
+
runs directly. Tests `throw` or `process.exit(1)` on failure; success
|
|
28
|
+
prints a summary line ending with `TEST_<NAME>_OK`.
|
|
29
|
+
|
|
30
|
+
Run the full canonical suite before committing:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm run test:all
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Run an individual test:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm run test:workflow-parser
|
|
40
|
+
# or ad-hoc without script:
|
|
41
|
+
npm run build && node dist/test_<name>.js
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`prepublishOnly` runs `test:all` automatically — publish will block on
|
|
45
|
+
the suite. Add new tests by:
|
|
46
|
+
|
|
47
|
+
1. Create `src/test_<feature>.ts` following the existing pattern (use a
|
|
48
|
+
neighboring test file as template).
|
|
49
|
+
2. Add a matching `test:<feature>` script in `package.json`.
|
|
50
|
+
3. If the test is canonical, append it to the `test:all` chain.
|
|
51
|
+
|
|
52
|
+
## Commit conventions
|
|
53
|
+
|
|
54
|
+
- Use [Conventional Commits](https://www.conventionalcommits.org/):
|
|
55
|
+
`feat:`, `fix:`, `docs:`, `chore:`, `refactor:`, `test:`, `ci:`,
|
|
56
|
+
`style:`, `perf:`, `build:`.
|
|
57
|
+
- Reference the story or issue: `feat(workflow): add idempotent flag (Story 4.2, v1.2)`.
|
|
58
|
+
- Keep commits atomic — one logical change per commit. Pre-commit
|
|
59
|
+
validation runs `npm run test:all` indirectly via prepublish gate.
|
|
60
|
+
|
|
61
|
+
## TypeScript conventions
|
|
62
|
+
|
|
63
|
+
- **Strict mode** is enforced (`tsconfig.json` has `"strict": true`).
|
|
64
|
+
Production code must not use `any` — `unknown` + type narrowing is the
|
|
65
|
+
idiomatic alternative. Test files may use `(x as any)` as a test seam.
|
|
66
|
+
- **Lazy imports** for heavy classes inside `src/index.ts` Commander
|
|
67
|
+
handlers — never move `Gateway`, `Brain`, `TestHarness`,
|
|
68
|
+
`OrchestrationLoop`, etc. to module scope. They are inside
|
|
69
|
+
`.action(...)` via `require(...)` so that deterministic commands
|
|
70
|
+
(`--help`, `plugin`, tests) stay fast.
|
|
71
|
+
- **Error contract for CLI handlers**: return JSON via
|
|
72
|
+
`JSON.stringify(...)` with `{ ok: false, error: '<snake_case_code>',
|
|
73
|
+
... }`. Use `process.exitCode = 1` (not `process.exit(1)`) for
|
|
74
|
+
failures in handlers.
|
|
75
|
+
- **Provider pattern**: new asset sources follow `Composite{X}Provider`
|
|
76
|
+
→ `File{X}Provider` / `Cloud{X}Provider` in
|
|
77
|
+
`src/orchestrator/providers/`.
|
|
78
|
+
- **No external dev-kit paths at runtime** — runtime must not import
|
|
79
|
+
from `~/.hermes`, Obsidian vaults, or local-only dev-kit dirs.
|
|
80
|
+
|
|
81
|
+
## Pull request process
|
|
82
|
+
|
|
83
|
+
1. Fork the repository or create a feature branch (`feat/<short-name>`
|
|
84
|
+
or `fix/<short-name>`).
|
|
85
|
+
2. Make atomic commits with conventional commit messages.
|
|
86
|
+
3. Ensure `npm run test:all` passes locally.
|
|
87
|
+
4. Run `npm run build` to confirm clean TypeScript compilation.
|
|
88
|
+
5. Open a PR against `main`. Include in the description:
|
|
89
|
+
- **Summary** of the change (1-3 bullets).
|
|
90
|
+
- **Tests added/changed** with file paths.
|
|
91
|
+
- **Risk assessment** for any runtime-behavior change.
|
|
92
|
+
6. CI (`.github/workflows/test.yml`, `build.yml`, `lint.yml`) must pass.
|
|
93
|
+
7. A maintainer will review and merge. **Push to `main` and
|
|
94
|
+
`gh pr merge` are restricted to the maintainer** to keep the release
|
|
95
|
+
pipeline deterministic.
|
|
96
|
+
|
|
97
|
+
## Filing issues
|
|
98
|
+
|
|
99
|
+
Use the templates in `.github/ISSUE_TEMPLATE/`:
|
|
100
|
+
|
|
101
|
+
- **Bug report** — for unexpected behavior, crashes, or regressions.
|
|
102
|
+
- **Feature request** — for new capabilities or enhancements.
|
|
103
|
+
- **Question** — for usage questions that don't fit the above.
|
|
104
|
+
|
|
105
|
+
Include OS, Node version, OpenLife version (`openlife --version`),
|
|
106
|
+
reproduction steps, and expected vs actual behavior.
|
|
107
|
+
|
|
108
|
+
## Where to put new code
|
|
109
|
+
|
|
110
|
+
| Adding... | Lives in... |
|
|
111
|
+
|---|---|
|
|
112
|
+
| Commander command | `src/index.ts` (near related commands, reuse banner sections) |
|
|
113
|
+
| Orchestrator class | `src/orchestrator/<ClassName>.ts` |
|
|
114
|
+
| CLI installer/wizard | `src/cli/<ClassName>.ts` |
|
|
115
|
+
| Memory provider | `src/memory/<Name>Provider.ts` + register in `MemoryProviderRegistry.ts` |
|
|
116
|
+
| Asset provider | `src/orchestrator/providers/{File,Cloud,Composite}<X>Provider.ts` |
|
|
117
|
+
| Reversa contract/executor | `src/reversa/Reversa<Name>.ts` |
|
|
118
|
+
| Test | `src/test_<feature>.ts` + matching `test:<feature>` script |
|
|
119
|
+
|
|
120
|
+
## Code of Conduct
|
|
121
|
+
|
|
122
|
+
This project adheres to a Contributor Covenant. See
|
|
123
|
+
[CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md). By participating, you agree
|
|
124
|
+
to abide by its terms.
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
By contributing, you agree that your contributions will be licensed
|
|
129
|
+
under the [MIT License](./LICENSE).
|
|
130
|
+
|
|
131
|
+
## Questions
|
|
132
|
+
|
|
133
|
+
Open a question issue or check `docs/getting-started.md` (coming soon).
|
package/README.md
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
# OpenLife CLI
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@openlife/cli)
|
|
4
|
+
[](https://github.com/GOOODZ/openlife-core/actions/workflows/test.yml)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://nodejs.org)
|
|
7
|
+
[](https://www.npmjs.com/package/@openlife/cli)
|
|
8
|
+
|
|
3
9
|
OpenLife é um CLI/framework de orquestração com dois modos principais:
|
|
4
10
|
|
|
5
11
|
- **CLI framework**: uso local por terminal, automações e comandos de operador.
|
|
6
12
|
- **Agente autônomo**: runtime contínuo com daemon, Telegram e governança.
|
|
7
13
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Fonte executável canônica
|
|
11
|
-
|
|
12
|
-
- Código/dev: `D:\VSCODDE-DEV\openlife-core-main`
|
|
13
|
-
- WSL: `/mnt/d/VSCODDE-DEV/openlife-core-main`
|
|
14
|
-
- GitHub: `https://github.com/GOOODZ/openlife-core`
|
|
15
|
-
|
|
16
|
-
Obsidian (`OPENLIFE_PRODUCTION` e `LARA/OPEN-LIFE`) é camada estratégica/documental. Catálogos runtime devem viver no repo/cloud, por exemplo:
|
|
14
|
+
OpenLife é um produto standalone. Catálogos runtime vivem no repositório
|
|
15
|
+
e não dependem de dev-kits externos ou pastas de terceiros.
|
|
17
16
|
|
|
18
17
|
```txt
|
|
19
18
|
.catalog/agents/
|
|
@@ -22,6 +21,23 @@ Obsidian (`OPENLIFE_PRODUCTION` e `LARA/OPEN-LIFE`) é camada estratégica/docum
|
|
|
22
21
|
.catalog/mcps/
|
|
23
22
|
```
|
|
24
23
|
|
|
24
|
+
## Quickstart
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @openlife/cli
|
|
28
|
+
openlife init # wizard interativo com banner, chaves, OAuth, Telegram
|
|
29
|
+
openlife ask "hello, what can you do?"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Mais detalhes em [INSTALL.md](INSTALL.md) e [docs/getting-started.md](docs/getting-started.md).
|
|
33
|
+
|
|
34
|
+
## Repositório
|
|
35
|
+
|
|
36
|
+
- GitHub: <https://github.com/GOOODZ/openlife-core>
|
|
37
|
+
- npm: <https://www.npmjs.com/package/@openlife/cli>
|
|
38
|
+
- Issues: <https://github.com/GOOODZ/openlife-core/issues>
|
|
39
|
+
- Changelog: [CHANGELOG.md](CHANGELOG.md)
|
|
40
|
+
|
|
25
41
|
## Quick Start
|
|
26
42
|
|
|
27
43
|
### Caminho recomendado — wizard interativo
|
package/package.json
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openlife/cli",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.5",
|
|
4
4
|
"description": "OPEN-LIFE Córtex Orquestrador Dual-Core",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
8
8
|
"bin",
|
|
9
9
|
"scripts",
|
|
10
|
-
"docs",
|
|
11
10
|
"dist-templates",
|
|
11
|
+
"docs/README.md",
|
|
12
|
+
"docs/quickstart.md",
|
|
13
|
+
"docs/workflow-schema.md",
|
|
14
|
+
"docs/toolset-enforcement.md",
|
|
15
|
+
"docs/release-process.md",
|
|
16
|
+
"docs/v1.7-changelog.md",
|
|
17
|
+
"CHANGELOG.md",
|
|
12
18
|
"LICENSE",
|
|
13
19
|
"README.md",
|
|
14
20
|
"INSTALL.md",
|
|
21
|
+
"CONTRIBUTING.md",
|
|
22
|
+
"CODE_OF_CONDUCT.md",
|
|
15
23
|
"package.json"
|
|
16
24
|
],
|
|
17
25
|
"repository": {
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# OpenLife Feature Rollout Changelog (Dual Mode + Reversa + DesignMD)
|
|
2
|
-
|
|
3
|
-
## Completed in this cycle
|
|
4
|
-
|
|
5
|
-
### Core execution
|
|
6
|
-
- Dual mode persisted in mission lifecycle (`task` default, `service` explicit)
|
|
7
|
-
- Formal job lifecycle with events (`enqueued/claimed/started/completed/failed/blocked`)
|
|
8
|
-
- Destructive guardrails enforced (delete/remove/erase requires explicit consent)
|
|
9
|
-
|
|
10
|
-
### Service operations
|
|
11
|
-
- CLI operations: `service status/pause/resume/events`
|
|
12
|
-
- Task introspection: `task status`
|
|
13
|
-
- Budget hard-stop -> service paused + event log
|
|
14
|
-
|
|
15
|
-
### Workspace foundations
|
|
16
|
-
- Workspace-aware artifacts path under `.artifacts/workspaces/<workspaceId>/...`
|
|
17
|
-
- Service state/events now namespaced by workspace
|
|
18
|
-
|
|
19
|
-
### Runtime and orchestration
|
|
20
|
-
- Runtime registry probe/list baseline
|
|
21
|
-
- Teammate board baseline (owner/status/blockers/comments)
|
|
22
|
-
- Learning loop baseline (governed skill candidates)
|
|
23
|
-
|
|
24
|
-
### Reversa and DesignMD
|
|
25
|
-
- Reversa state now supports mode metadata (`default` | `designmd`)
|
|
26
|
-
- New mode setter in Reversa (`setMode`)
|
|
27
|
-
- New `DesignMdMode` manager to apply/design profile and write root `DESIGN.md`
|
|
28
|
-
- CLI surface:
|
|
29
|
-
- `reversa mode --set <default|designmd> --profile <id>`
|
|
30
|
-
- `designmd status`
|
|
31
|
-
- `designmd apply <profileId> <source> <title> <designPath>`
|
|
32
|
-
- `aiobuilder mode --set <default|designmd> --profile <id>`
|
|
33
|
-
|
|
34
|
-
## Validation status
|
|
35
|
-
- TypeScript build: passing
|
|
36
|
-
- Automated tests passing for dual mode, guardrails, lifecycle, runtime, reversa-lite, service CLI, teammate/learning
|
|
37
|
-
|
|
38
|
-
## Next integration step (pending your references/models)
|
|
39
|
-
1. Add importer for Awesome DESIGN.md catalog profile manifests
|
|
40
|
-
2. Add profile templates bundle under `design/profiles/`
|
|
41
|
-
3. Wire Reversa generation phase to enforce active DesignMD profile tokens
|
|
42
|
-
4. Wire AIOBUILDER scaffolding prompts to DesignMD profile context
|
|
43
|
-
5. Add regression tests for DesignMD profile switching and output consistency
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# OpenLife External Sources & Security Guard
|
|
2
|
-
|
|
3
|
-
## New source catalog commands
|
|
4
|
-
- `openlife sources list`
|
|
5
|
-
- `openlife sources guard-check <url>`
|
|
6
|
-
- `openlife sources scaffold <type> <id> --notes "..."`
|
|
7
|
-
|
|
8
|
-
## Autonomous creation baselines (local)
|
|
9
|
-
- `openlife agents create <id> --role <role> --notes "..."`
|
|
10
|
-
- `openlife squads create <id> --domain <domain> --notes "..."`
|
|
11
|
-
- `openlife skills create <id> --notes "..."`
|
|
12
|
-
- `openlife mcp create <id> --transport <stdio|http> --entry "..."`
|
|
13
|
-
|
|
14
|
-
Created artifacts:
|
|
15
|
-
- `.catalog/agents/<id>/AGENT.md`
|
|
16
|
-
- `.catalog/squads/<id>/SQUAD.md`
|
|
17
|
-
- `.catalog/skills/<id>/SKILL.md`
|
|
18
|
-
- `.catalog/mcps/<id>/mcp.json`
|
|
19
|
-
|
|
20
|
-
## Default reference sources configured
|
|
21
|
-
- https://skills.sh/
|
|
22
|
-
- https://clawhub.ai/
|
|
23
|
-
- https://mcpmarket.com/
|
|
24
|
-
- https://mcpservers.org/
|
|
25
|
-
- https://github.com/ (import-allowed with guard)
|
|
26
|
-
|
|
27
|
-
## Cybersecurity guard (mandatory pre-download)
|
|
28
|
-
1. Validate source URL trust.
|
|
29
|
-
2. Scan file list / extracted directory for blocked patterns.
|
|
30
|
-
3. Reject package when blocked files are present.
|
|
31
|
-
|
|
32
|
-
Active enforcement:
|
|
33
|
-
- `designmd import` runs guard before import and blocks when malicious patterns exist.
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
# OpenLife — Auditoria Geral (2026-05-06)
|
|
2
|
-
|
|
3
|
-
## Escopo
|
|
4
|
-
|
|
5
|
-
Auditoria executada em `D:\\VSCODDE-DEV\\openlife-core-main` (`/mnt/d/VSCODDE-DEV/openlife-core-main`).
|
|
6
|
-
|
|
7
|
-
Sem ações destrutivas, sem commit/push/deploy.
|
|
8
|
-
|
|
9
|
-
## Estado geral
|
|
10
|
-
|
|
11
|
-
- Repo correto: `https://github.com/GOOODZ/openlife-core.git`
|
|
12
|
-
- Branch: `main`
|
|
13
|
-
- Build TypeScript: OK
|
|
14
|
-
- CLI principal: operacional via `node bin/openlife.js`
|
|
15
|
-
- Testes oficiais de package:
|
|
16
|
-
- `npm run test:distribution`: OK
|
|
17
|
-
- `npm run test:orchestration`: OK
|
|
18
|
-
- Skill `design-extractor`: instalada e reconhecida pelo OpenLife runtime.
|
|
19
|
-
|
|
20
|
-
## Correções aplicadas após a auditoria
|
|
21
|
-
|
|
22
|
-
- Runtime-source truth corrigido: `agents list` e `squads list` agora usam `.catalog/agents` e `.catalog/squads` por padrão.
|
|
23
|
-
- `FileAgentProvider` e `FileSquadProvider` aceitam estrutura recursiva `.catalog/<tipo>/<id>/AGENT.md|SQUAD.md`.
|
|
24
|
-
- `phase1-check` não falha mais falsamente quando a fixture de imagem não existe; o check multimodal vira skip explícito.
|
|
25
|
-
- README atualizado para comandos reais (`install`, `system setup`, `up`, `start --daemon`, `chat`).
|
|
26
|
-
- `npm audit fix` aplicado para `axios`/`follow-redirects`; resta apenas advisory moderado de `@anthropic-ai/sdk` com fix breaking.
|
|
27
|
-
- `postinstall-check.sh` atualizado para npm moderno (`npm prefix -g`).
|
|
28
|
-
- Adicionados `test:runtime-source` e `test:all`.
|
|
29
|
-
- Material extra de referência encontrado em `LARA/OPEN-LIFE`; continua tratado como estratégia/documentação, não runtime.
|
|
30
|
-
|
|
31
|
-
## Achados críticos remanescentes
|
|
32
|
-
|
|
33
|
-
### 1. Railway último deploy falhou
|
|
34
|
-
|
|
35
|
-
`railway status` aponta:
|
|
36
|
-
|
|
37
|
-
- Project: `openlife-01`
|
|
38
|
-
- Environment: `production`
|
|
39
|
-
- Service: `openlife-01`
|
|
40
|
-
|
|
41
|
-
Último deploy listado: `FAILED` (`efaa3b3f-97b4-4012-a4a2-d6f2f826dec6`).
|
|
42
|
-
|
|
43
|
-
Logs via CLI não retornaram conteúdo útil nesta auditoria.
|
|
44
|
-
|
|
45
|
-
Recomendação: investigar pelo Railway UI ou redeploy controlado somente com aprovação explícita.
|
|
46
|
-
|
|
47
|
-
### 3. `phase1-check` falha em gateway-image
|
|
48
|
-
|
|
49
|
-
Resultado:
|
|
50
|
-
|
|
51
|
-
- `gateway-image`: falha por imagem de teste ausente em `.temp_images`.
|
|
52
|
-
|
|
53
|
-
Recomendação: criar fixture estável de imagem de teste ou tornar o check opcional/skip explícito quando fixture não existir.
|
|
54
|
-
|
|
55
|
-
### 4. Vulnerabilidades npm
|
|
56
|
-
|
|
57
|
-
`npm audit --omit=dev` reportou:
|
|
58
|
-
|
|
59
|
-
- `axios`: high
|
|
60
|
-
- `follow-redirects`: moderate
|
|
61
|
-
- `@anthropic-ai/sdk`: moderate, fix com breaking change
|
|
62
|
-
|
|
63
|
-
Recomendação: aplicar `npm audit fix` para axios/follow-redirects e avaliar upgrade controlado do Anthropic SDK.
|
|
64
|
-
|
|
65
|
-
## Achados importantes
|
|
66
|
-
|
|
67
|
-
### 5. README tem drift de comandos
|
|
68
|
-
|
|
69
|
-
README documenta:
|
|
70
|
-
|
|
71
|
-
- `openlife agent start`
|
|
72
|
-
|
|
73
|
-
Mas o CLI atual não lista comando `agent`; o caminho real é:
|
|
74
|
-
|
|
75
|
-
- `openlife start --daemon`
|
|
76
|
-
- `openlife up`
|
|
77
|
-
|
|
78
|
-
Recomendação: atualizar README/INSTALL/docs/commands para superfície real.
|
|
79
|
-
|
|
80
|
-
### 6. Doctor textual `system doctor` mostra Anthropic ausente como ❌
|
|
81
|
-
|
|
82
|
-
Mesmo com `OPENLIFE_RUNTIME_PROFILE=oauth-only`, o comando textual `system doctor` ainda imprime `❌ env:ANTHROPIC_API_KEY`.
|
|
83
|
-
|
|
84
|
-
O doctor universal (`openlife doctor`) classifica corretamente como `severity: info`.
|
|
85
|
-
|
|
86
|
-
Recomendação: alinhar `system doctor` com severidade do doctor universal para não assustar operador.
|
|
87
|
-
|
|
88
|
-
### 7. Railway variables parecem incompletas vs local
|
|
89
|
-
|
|
90
|
-
Railway mostrou `GEMINI_API_KEY`, `TELEGRAM_BOT_TOKEN`, Nixpacks commands e Railway vars. Não apareceram no recorte:
|
|
91
|
-
|
|
92
|
-
- `OPENLIFE_TELEGRAM_ALLOWED_USER_ID`
|
|
93
|
-
- `OPENLIFE_RUNTIME_PROFILE`
|
|
94
|
-
- `OPENLIFE_ALLOWED_LLM_EXECUTORS`
|
|
95
|
-
- `OPENAI_API_KEY`
|
|
96
|
-
|
|
97
|
-
Recomendação: validar vars de produção antes de redeploy/start.
|
|
98
|
-
|
|
99
|
-
### 8. Não há daemon OpenLife local rodando
|
|
100
|
-
|
|
101
|
-
Processos locais não mostram `openlife.js start --daemon`; só `telegram-proxy.js`.
|
|
102
|
-
|
|
103
|
-
Recomendação: se a operação local for desejada, iniciar com `openlife up` após confirmar single-poller e token correto.
|
|
104
|
-
|
|
105
|
-
## Pontos positivos
|
|
106
|
-
|
|
107
|
-
- `npm run build`: OK
|
|
108
|
-
- `node bin/openlife.js --help`: OK
|
|
109
|
-
- `node bin/openlife.js status`: OK
|
|
110
|
-
- `node bin/openlife.js doctor`: JSON com severidade e sem blocker de Anthropic no perfil oauth-only
|
|
111
|
-
- Telegram token local valida com `getMe` para `@openlife_master_bot`
|
|
112
|
-
- MCP real detecta `mcporter`, `claude`, `codex`
|
|
113
|
-
- Inventário determinístico existe:
|
|
114
|
-
- 323 agentes
|
|
115
|
-
- 47 squads
|
|
116
|
-
- 71 skills
|
|
117
|
-
- `design-extractor` aparece em `skills list` via `/home/rafaleao/skills/design-extractor/SKILL.md`
|
|
118
|
-
- Segurança de delete tem testes dedicados.
|
|
119
|
-
- `Procfile` e `NIXPACKS_START_CMD` usam `node dist/index.js start --daemon`.
|
|
120
|
-
|
|
121
|
-
## Plano de ação recomendado
|
|
122
|
-
|
|
123
|
-
### P0 — Estabilização operacional
|
|
124
|
-
|
|
125
|
-
1. Remover dependência runtime de Obsidian/LARA para agents/squads.
|
|
126
|
-
2. Corrigir Railway vars e investigar último deploy falho.
|
|
127
|
-
3. Atualizar README/INSTALL para comandos reais (`install`, `up`, `start --daemon`).
|
|
128
|
-
4. Corrigir `phase1-check gateway-image` com fixture ou skip controlado.
|
|
129
|
-
|
|
130
|
-
### P1 — Segurança e governança
|
|
131
|
-
|
|
132
|
-
1. Rodar upgrade controlado de `axios`/`follow-redirects`.
|
|
133
|
-
2. Avaliar upgrade do `@anthropic-ai/sdk` sem reintroduzir Anthropic obrigatório.
|
|
134
|
-
3. Trocar `execSync(curl ... token ...)` por `fetch`/axios sem interpolar token em shell em `InstallModules.ts`.
|
|
135
|
-
4. Garantir que Railway usa `OPENLIFE_TELEGRAM_ALLOWED_USER_ID`.
|
|
136
|
-
|
|
137
|
-
### P2 — Produto/UX
|
|
138
|
-
|
|
139
|
-
1. Consolidar doctor único com severidade clara.
|
|
140
|
-
2. Criar comando `openlife audit` ou `system audit`.
|
|
141
|
-
3. Criar `media route-status` como alias de status, pois `media status` falha.
|
|
142
|
-
4. Documentar separação Hermes vs OpenLife no README principal.
|
|
143
|
-
|
|
144
|
-
### P3 — Qualidade contínua
|
|
145
|
-
|
|
146
|
-
1. Criar script `test:all` para os 44 testes `src/test_*.ts`.
|
|
147
|
-
2. Separar testes mutantes dos testes puros.
|
|
148
|
-
3. Criar CI com build + audit + testes essenciais.
|
|
149
|
-
4. Adicionar smoke Railway pós-deploy.
|
|
150
|
-
|
|
151
|
-
## Comandos usados
|
|
152
|
-
|
|
153
|
-
```bash
|
|
154
|
-
npm run build
|
|
155
|
-
node bin/openlife.js --help
|
|
156
|
-
node bin/openlife.js system status
|
|
157
|
-
OPENLIFE_RUNTIME_PROFILE=oauth-only node bin/openlife.js system doctor
|
|
158
|
-
node bin/openlife.js doctor
|
|
159
|
-
node bin/openlife.js status
|
|
160
|
-
node bin/openlife.js agents list
|
|
161
|
-
node bin/openlife.js squads list
|
|
162
|
-
node bin/openlife.js skills list
|
|
163
|
-
node bin/openlife.js mcp status --real
|
|
164
|
-
node bin/openlife.js phase1-check
|
|
165
|
-
npm run test:distribution
|
|
166
|
-
npm run test:orchestration
|
|
167
|
-
npm audit --omit=dev
|
|
168
|
-
railway status
|
|
169
|
-
railway deployment list
|
|
170
|
-
```
|