@prodero/curator 0.1.0 → 0.2.0
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/ARCHITECTURE.md +1 -1
- package/CHANGELOG.md +19 -2
- package/README.md +32 -33
- package/dist/cli.js +58 -20
- package/dist/contracts.js +1 -0
- package/dist/conversation-presentation.js +62 -27
- package/dist/core/agent-instructions.js +31 -18
- package/dist/core/curation-graphical.js +22 -10
- package/dist/core/curation-question.js +28 -0
- package/dist/core/curation-semantic-contract.js +4 -1
- package/dist/core/curation-semantic-jobs.js +78 -18
- package/dist/core/knowledge-graph.js +5 -4
- package/dist/core/local-preferences.js +76 -0
- package/dist/core/memory-index.js +2 -0
- package/dist/core/memory-link-repair.js +6 -2
- package/dist/core/memory-sync-curator.js +25 -5
- package/dist/core/memory-sync.js +124 -29
- package/dist/core/npm-update.js +289 -0
- package/dist/core/project.js +8 -8
- package/dist/core/session-index.js +10 -6
- package/dist/core/sessions.js +3 -3
- package/dist/core/settings.js +34 -16
- package/dist/core/skills.js +21 -2
- package/dist/core/storage.js +55 -1
- package/dist/core/sync-transaction.js +85 -49
- package/dist/core/update.js +9 -3
- package/dist/curation-review-adapter.js +1 -1
- package/dist/diagnostic-boundary.js +4 -3
- package/dist/memory-presentation.js +26 -16
- package/dist/memory-sync-operation.js +88 -0
- package/dist/presentation-server.js +25 -10
- package/dist/presentation.js +92 -61
- package/dist/server.js +59 -51
- package/dist/settings-definition.js +3 -3
- package/dist/status-presentation.js +20 -0
- package/dist/text-layout.js +278 -0
- package/dist/update-command.js +53 -0
- package/dist/update-instructions.js +4 -0
- package/dist-ui/index.html +117 -115
- package/docs/COMPATIBILITY.md +29 -10
- package/docs/MIGRATIONS.md +4 -0
- package/docs/RECOVERY.md +3 -1
- package/docs/RELEASING.md +68 -10
- package/docs/hosts.md +25 -7
- package/docs/images/prodero-context-ready-cropped.png +0 -0
- package/docs/images/prodero-overview-cropped.png +0 -0
- package/docs/images/prodero-session-learned-cropped.png +0 -0
- package/docs/ui-themes.md +10 -4
- package/instructions/AGENTS.md +24 -18
- package/package.json +6 -2
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Compatibility and verification
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This document covers the **0.2.0** release contract and evidence recorded through 2026-10-23. A checkout, local tarball or passing test does not establish npm publication. Artifact evidence must satisfy the [release gates](RELEASING.md) on the final release tree. Supported runtime targets and project/knowledge schemas remain unchanged; see the [changelog](../CHANGELOG.md) for status JSON and local-preference compatibility changes.
|
|
4
|
+
|
|
5
|
+
> Contract: Local/Versioned describe Git storage and sharing, not a security boundary against the connected agent. Review and approval are workflow safeguards, not authenticated human consent. The agent may create, promote and maintain Versioned files within current authorization. Curator tools do not execute Git commit or push; coding-agent Git actions follow current user scope and host approval controls. See [Privacy](PRIVACY.md).
|
|
4
6
|
|
|
5
7
|
Supported runtime target: **Node 22.14.0–22.x**, npm and Git. Node 22.14.0 is the tested minimum; the package rejects other Node majors through its engine contract (npm may only warn unless engine-strict is enabled). `import.meta.dirname` and modern Node filesystem/runtime APIs are used. Earlier Node 20 declarations were not a verified compatibility promise.
|
|
6
8
|
|
|
7
9
|
| Environment | Status |
|
|
8
10
|
| --- | --- |
|
|
9
11
|
| macOS ARM64, Node 22.14.0 | Tested locally: full tests and isolated release gate |
|
|
10
|
-
| macOS / Ubuntu, Node 22.14.0 and
|
|
11
|
-
| Native Windows | Not supported in
|
|
12
|
+
| macOS / Ubuntu, Node 22.14.0 and 22.23.3 | Full four-job CI matrix passed on the runtime candidate identified below; final-tree certification requires matching exact-SHA runs |
|
|
13
|
+
| Native Windows | Not supported in 0.2.0; filesystem/Git fixtures and process behavior are not verified |
|
|
12
14
|
| Node 20, 24 or other majors; WSL | Not verified / outside the initial runtime contract |
|
|
13
15
|
|
|
14
16
|
CI configuration is not evidence that a remote run has passed. Record actual runs before publication.
|
|
@@ -17,10 +19,11 @@ CI configuration is not evidence that a remote run has passed. Record actual run
|
|
|
17
19
|
|
|
18
20
|
| Host | Status / boundary |
|
|
19
21
|
| --- | --- |
|
|
20
|
-
| Codex CLI |
|
|
21
|
-
| Codex desktop |
|
|
22
|
-
| Claude Code | Experimental adapter
|
|
22
|
+
| Codex CLI | Native 0.144.4 on macOS ARM64 passed installed 0.2.0 text lifecycle, persistent retrieval, Local maintenance and promotion preview. No Apps rendering claim from a CLI test. |
|
|
23
|
+
| Codex desktop | The owner reported a successful manual check on 2026-10-23. Exact-build, artifact-bound graphical acceptance is not independently traced; see the owner report below. |
|
|
24
|
+
| Claude Code | Experimental adapter. Native 2.1.302 on macOS ARM64 passed installed 0.2.0 text lifecycle, persistent retrieval, Local maintenance and promotion preview. This does not certify Claude Desktop or Apps rendering. |
|
|
23
25
|
| Claude Desktop | No installer adapter; not verified. |
|
|
26
|
+
| Codex mobile / iPad | The owner reported a successful Codex Mobile manual check on 2026-10-23 and previously accepted iPad Context Ready / Session Complete. Build/artifact binding and individual case traces were not supplied. |
|
|
24
27
|
| Cursor | Not yet verified against this RC. Workspace and Apps behavior must be checked before claiming support. |
|
|
25
28
|
| Other MCP hosts | Experimental; require standard stdio tools, optional roots and optional Apps/sampling. |
|
|
26
29
|
|
|
@@ -28,7 +31,7 @@ Use `prodero install` for one global machine integration. New workspaces initial
|
|
|
28
31
|
|
|
29
32
|
Apps-capable hosts can render bundled main/lifecycle/plugin resources. Others receive text and structured content; knowledge actions and explicit text approval remain available. Serving an HTML resource in a protocol smoke test does not verify host rendering. Sampling is optional and host-controlled; deterministic operation works without it. Assisted inputs may be transmitted to the host/model.
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
Historical machine-integration verification used isolated HOME and the native global launcher. The 2026-10-23 native runtime checks instead used existing client authentication, invocation-scoped candidate-only MCP configuration and separate disposable Git projects. They did not change saved MCP registrations or independently recertify the installer. Literal `prodero` opened each uninitialized fixture without creating `.prodero`; initialization occurred only in the subsequent explicitly requested step. These text runs do not certify desktop rendering.
|
|
32
35
|
|
|
33
36
|
Claude Code does not automatically read project `AGENTS.md`. Initialization remains unchanged; experimental Claude users need the host's documented project `CLAUDE.md` import of `@AGENTS.md` for the existing project lifecycle instructions. The installer does not create that project file or move lifecycle instructions into the global launcher. See [host integration](hosts.md). Restart hosts after package updates.
|
|
34
37
|
|
|
@@ -36,9 +39,21 @@ Claude Code does not automatically read project `AGENTS.md`. Initialization rema
|
|
|
36
39
|
|
|
37
40
|
The [release gate](RELEASING.md) checks a clean installed artifact, stdio lifecycle, Local storage, reviewed synthetic sharing, restart and synthetic patch upgrade preservation. Synthetic upgrades do not certify future releases or arbitrary schema downgrades. Record results for the exact release candidate.
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
### Runtime candidate: independently observed
|
|
43
|
+
|
|
44
|
+
The runtime candidate was commit `4f14a196b5325cf08c67ebeac40d21f5edb6e89f`. Its [fast CI](https://github.com/Prodero/curator/actions/runs/39653486240) passed 1,446 ordinary tests; its [full CI](https://github.com/Prodero/curator/actions/runs/39653523638) passed all four macOS/Ubuntu × Node 22.14.0/22.23.3 jobs, each with 1,453 tests and 16 installed-artifact smoke groups. These counts overlap and are not additive. The reviewed full-CI tarball SHA-256 was `c6bb29869c6fdcdff139799d01626a3f7ec57598005e5ab5d14437a76fbe9a12`.
|
|
45
|
+
|
|
46
|
+
On 2026-10-23 both native clients connected only to that installed 0.2.0 candidate, bounded to their own synthetic Git project. All 148 installed payload files matched the CI artifact. Each performed Open/initialize/Prepare/Record/Close/next Prepare, fresh-process retrieval, remember/search/inspect, a revision-bound Local edit and exact promotion preview. Independent storage checks found exactly two Local items, zero Versioned items, preserved pre-edit checkpoint content, four closed sessions per fixture and clean Git. Promotion was not applied. Existing authentication was used through the clients; invocation-only test permissions must not be copied into normal host setup.
|
|
47
|
+
|
|
48
|
+
Single-session maintenance visibly delivered Context Ready and Saved once in each client. In the batched two-session scenario each client omitted some intermediate receipts; persistence and closure still succeeded. This is an observed agent-relay limitation, not demonstrated knowledge loss. Curator supplies lifecycle text but does not guarantee model/client delivery. Apps rendering, host sampling and physical approval interaction were not independently verified by these CLI runs. Separate deterministic fixtures cover publication mechanics without claiming human UI approval.
|
|
49
|
+
|
|
50
|
+
### Owner-reported manual acceptance
|
|
40
51
|
|
|
41
|
-
|
|
52
|
+
On 2026-10-23 the owner reported successful manual Curator checks in **Codex Desktop, Claude CLI and Codex Mobile**, following the request for manual Apps acceptance. Record this as **owner-reported acceptance** for those named surfaces. The report did not supply client build versions, an exact candidate executable/hash/SHA, individual case results or an App call trace. It therefore does not establish independently traced results for Apply replay, stale-review handling or model-facing tool filtering, and does not upgrade an unverified host tier. Do not infer that the desktop used a particular dev connection or that the Claude CLI was the exact build used by the independent native test. Candidate binding can be clarified without assuming the entire manual check must be repeated. The previously accepted iPad lifecycle result remains accepted.
|
|
53
|
+
|
|
54
|
+
### Final release identity
|
|
55
|
+
|
|
56
|
+
These CI and native results identify the runtime candidate above. Release-note/README/compatibility edits change packaged bytes and produce a different tarball; they do not inherit its archive hash or exact-commit CI status. The final committed release tree requires its own matching package validation and full CI matrix, with host evidence explicitly bound or reconciled to the final artifact. No broader host support is inferred from a successful owner report.
|
|
42
57
|
|
|
43
58
|
Passing configured remote CI jobs on the final RC commit remains required before publication. Local protocol checks do not certify other Node/OS combinations or host App rendering.
|
|
44
59
|
|
|
@@ -47,3 +62,7 @@ Codex setup and per-tool configuration reference: [official configuration refere
|
|
|
47
62
|
## Project and knowledge compatibility
|
|
48
63
|
|
|
49
64
|
Project schema 8 and Knowledge Schema 3 are the current targets. Schema 3 adds explicit applicability with a mechanical legacy-scope migration; see [Applicability](APPLICABILITY.md). Missing knowledge version means legacy format 1; its approved migration preserves instruction behavior with explicit context policy and legacy authority. Both versions live in the project config; moving or cloning a project requires no machine registry. Newer project or knowledge formats fail closed at the storage boundary. Open/Prepare can present update instructions without interpreting unsupported records. See [Migration Foundation](MIGRATIONS.md) for approval, recovery and future format transitions.
|
|
65
|
+
|
|
66
|
+
## CLI status output
|
|
67
|
+
|
|
68
|
+
`prodero status` and `prodero status --root PATH` now default to readable text, including when piped. Consumers of the previous implicit JSON output must add `--json`; TTY detection never selects the format. Successful machine JSON fields are unchanged. Project JSON keeps `version`, `project` and `update`, adding `scope: "project"`. Status errors in JSON mode are one stdout document with `ok: false`, `version`, `scope` and a safe `error` object (`code`, `message`, `recovery`); migration gates also include `migration`. CLI status performs no writes, including derived caches or ignore-rule maintenance; other detailed-status readers retain their existing defaults. Existing exit meanings remain: failed arguments/project compatibility/host inspection exit 1; an unavailable registry alone retains exit 0 and its `update.status` diagnostic. See [status commands and read-only/cache boundaries](hosts.md#commands-and-status).
|
package/docs/MIGRATIONS.md
CHANGED
|
@@ -39,6 +39,10 @@ Classes are structural, compatible-semantic and review-required. The latter is
|
|
|
39
39
|
blocked until a migration-specific review resolver exists; `approved:true` never
|
|
40
40
|
substitutes for semantic decisions. The knowledge registry contains the ordered compatible-semantic `knowledge-policy-1-2` and `knowledge-applicability-2-3` transitions. The current target is knowledge schema 3; see [Knowledge Schema v2](KNOWLEDGE-SCHEMA-V2.md) and [Applicability](APPLICABILITY.md).
|
|
41
41
|
|
|
42
|
+
## Package installation stays separate
|
|
43
|
+
|
|
44
|
+
`prodero update` updates only the verified npm package after terminal confirmation. It does not enumerate or migrate projects or change the selected dev checkout. After user restart/reconnect, Open/Prepare offer this existing migration gate only when project/knowledge formats require it. Chat update indicators and `prodero_update` provide terminal instructions, never package installation.
|
|
45
|
+
|
|
42
46
|
## Planning, approval and continuation
|
|
43
47
|
|
|
44
48
|
`planProjectMigration` reads metadata without creating directories, sessions, caches
|
package/docs/RECOVERY.md
CHANGED
|
@@ -43,7 +43,9 @@ If automatic restoration fails, stop all Prodero writers and retain both the jou
|
|
|
43
43
|
|
|
44
44
|
Session creation, record and close share a filesystem lock across processes. Session mutations wait up to five seconds for a writer; a timeout reports failure, never success. Acknowledged observations remain in the file, and a closed session cannot be reopened by a late record. An empty repeated close remains successful; repeated close with nonempty final entries is explicitly rejected, so callers should inspect the session after an uncertain response rather than replay that final batch blindly.
|
|
45
45
|
|
|
46
|
-
A dead PID owner can be reclaimed.
|
|
46
|
+
A dead PID owner can be reclaimed. Acquisition, owner publication, stale-owner inspection/removal and release share the short-lived `.transactions/lock-recovery` transition guard; the canonical operation runs outside that guard while retaining its writer lock. Release waits independently for up to five seconds for the guard and reports failure if cleanup cannot complete, rather than acknowledging success with an uncertain release.
|
|
47
|
+
|
|
48
|
+
An ownerless/invalid lock or interrupted lock-recovery guard fails conservatively: after stopping all writers, inspect `.transactions/lock` and `.transactions/lock-recovery` before removing stale lock directories. PID reuse is intentionally handled conservatively rather than risking deletion of a live owner's lock. Do not remove the guard while a writer or recovery contender remains active.
|
|
47
49
|
|
|
48
50
|
These guarantees are verified with local filesystem process-crash, injected I/O-error and multiprocess tests. They do not provide a multi-file snapshot to unrelated readers while a journal is being applied, nor protection against hostile processes replacing the directory topology during filesystem operations. Network filesystems and sudden hardware/power loss have not been certified. Do not edit storage concurrently with migration/recovery.
|
|
49
51
|
|
package/docs/RELEASING.md
CHANGED
|
@@ -6,35 +6,93 @@ From a clean checkout on Node 22.14+ (22.x):
|
|
|
6
6
|
npm run release:gate
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## CI tiers and local commands
|
|
10
|
+
|
|
11
|
+
| Trigger / command | Tests | Pack and doc links | Installed-artifact checks |
|
|
12
|
+
| --- | --- | --- | --- |
|
|
13
|
+
| Branch push or pull request | Ordinary suite, Ubuntu / Node 22.14.0 | Always | Required except for explicitly documentation-only changes |
|
|
14
|
+
| Any tag push or `workflow_dispatch` | Full suite, Ubuntu/macOS × minimum/latest Node 22 | Always | Always |
|
|
15
|
+
| `npm run ci:fast` | Ordinary suite | Always | Omitted |
|
|
16
|
+
| `npm run ci:fast -- --integration` | Ordinary suite | Always | Included |
|
|
17
|
+
| `npm run release:gate` | Full suite | Always | Included |
|
|
18
|
+
| `npm test` | Full suite after build | Not a package gate | Not a package gate |
|
|
19
|
+
| `npm run test:fast` | Ordinary suite after build | Not a package gate | Not a package gate |
|
|
20
|
+
|
|
21
|
+
Before creating a release, manually dispatch **Release gate** on the intended
|
|
22
|
+
commit and verify all four jobs against that exact SHA. A tag push also runs the
|
|
23
|
+
full matrix; neither check publishes a package or creates a GitHub release.
|
|
24
|
+
A successful fast run alone does not certify a release.
|
|
25
|
+
|
|
26
|
+
`test/scale/` explicitly owns the seven large-fixture tests (10,000-memory
|
|
27
|
+
intelligence, context/status/discovery scales, 20,100-file importer boundary and
|
|
28
|
+
retention histories). Their assertions and fixture sizes are unchanged. The
|
|
29
|
+
recursive runner includes every `*.test.mjs` below `test/` in full mode; every
|
|
30
|
+
suite outside `test/scale/` defaults to ordinary, including newly added suites.
|
|
31
|
+
Optional `*.browser.mjs` checks remain separate, as before. Fast mode runs at most
|
|
32
|
+
two test files concurrently; full mode retains one. Both fail on any selected
|
|
33
|
+
test failure. Partition and workflow-policy regression tests run in both modes.
|
|
34
|
+
|
|
35
|
+
Path classification is conservative: only the named top-level Markdown files,
|
|
36
|
+
LICENSE, `docs/*.md` and `docs/images/*.png` may omit installed-artifact checks.
|
|
37
|
+
Any other path (including core, installer, MCP, UI, plugins, managed instructions,
|
|
38
|
+
package manifests, workflow, runner or tests), mixed changes, missing/zero base,
|
|
39
|
+
or diff failure requires them. Both sides of renames are classified. PRs compare
|
|
40
|
+
the base SHA with the checked-out merge result; pushes compare the previous SHA
|
|
41
|
+
with HEAD. All branch/PR changes still run ordinary tests and package validation.
|
|
42
|
+
|
|
43
|
+
Superseded runs are cancelled only within the same branch or PR group. PR groups
|
|
44
|
+
use PR numbers to avoid collisions between fork branch names. Manual and tag
|
|
45
|
+
runs use unique run IDs and cannot cancel, or be cancelled by, branch/PR runs.
|
|
46
|
+
|
|
47
|
+
The gate copies tracked working files plus non-ignored new files into a clean
|
|
48
|
+
temporary checkout (never node_modules/dist), runs `npm ci`, builds **once**, then
|
|
49
|
+
packs and validates package resources, secret/path screening and documentation
|
|
50
|
+
links **before** running tests. It skips npm pack lifecycle scripts only because
|
|
51
|
+
the gate explicitly controls build/tests; successful completion requires both.
|
|
52
|
+
Ordinary `npm pack` still runs the full tests through prepack.
|
|
53
|
+
|
|
54
|
+
When integration is required, the gate installs that same tarball into a separate
|
|
55
|
+
prefix with production dependencies only, takes the build checkout offline and
|
|
56
|
+
runs the existing standalone smoke runner against the installation. CLI, stdio
|
|
57
|
+
MCP, bundled resources, the knowledge lifecycle, Git boundaries, restart and
|
|
58
|
+
synthetic manual upgrade preservation remain checked. The smoke runner's
|
|
59
|
+
synthetic patch version is only an isolated test fixture, never a publication.
|
|
60
|
+
|
|
61
|
+
`result.json` records mode, whether integration ran, total elapsed time, each
|
|
62
|
+
child-command duration, artifact path and SHA-256. CI uploads these results and
|
|
63
|
+
logs with the tarball. Measure fast and full runs separately; runner performance
|
|
64
|
+
and the filesystem-heavy fixtures make local and remote times different.
|
|
10
65
|
|
|
11
66
|
For host-integration verification, use a fresh temporary directory outside the real user home, an isolated HOME and Codex/Claude/XDG configuration, and no inherited host registrations. Keep custom `PRODERO_GATE_OUTPUT` paths outside real-home ancestry: normal workspace checks inspect ancestors and can correctly report `HOST_SCOPE_CONFLICT`. Never disable those checks or alter real settings to make a smoke test pass.
|
|
12
67
|
|
|
13
|
-
CI allows 45 minutes per matrix job. Child-command output is streamed to the console and written continuously to evidence logs, so cancellation retains partial test diagnostics. The limit remains finite; a timeout is not a passing check.
|
|
68
|
+
CI allows 30 minutes for the fast job and 45 minutes per full matrix job. Child-command output is streamed to the console and written continuously to evidence logs, so cancellation retains partial test diagnostics. The limit remains finite; a timeout is not a passing check.
|
|
14
69
|
|
|
15
|
-
Gate outputs and the tarball remain in the printed temporary directory for inspection. Nothing is published. CI repeats the gate on macOS/Ubuntu and the declared minimum/latest Node 22. Remote CI results must actually pass before those targets are certified.
|
|
70
|
+
Gate outputs and the tarball remain in the printed temporary directory for inspection. Nothing is published. Full CI repeats the gate on macOS/Ubuntu and the declared minimum/latest Node 22. Remote CI results must actually pass before those targets are certified.
|
|
16
71
|
|
|
17
72
|
A protocol runner is not a real host. Independently connect a primary host to the **installed artifact** in a synthetic Git project, run open/init/prepare/record/close/next prepare/remember/search/edit/restart, inspect tool results and Git status, and record host/runtime/artifact versions. Review promotion outcomes and approve only the intended synthetic fixture publication. Apps rendering needs its own host check.
|
|
18
73
|
|
|
19
74
|
## Install the artifact for review
|
|
20
75
|
|
|
21
|
-
|
|
76
|
+
For an unpublished candidate, install the reviewed tarball into an isolated prefix rather than requesting its version from the registry. The current candidate version is 0.2.0; this command is an example for a separately authorized isolated environment, not a request to replace the working installation:
|
|
22
77
|
|
|
23
78
|
```sh
|
|
24
|
-
npm install --global /absolute/path/prodero-curator-0.
|
|
25
|
-
prodero install
|
|
79
|
+
npm install --global --prefix /absolute/isolated/prefix --omit=dev --ignore-scripts /absolute/path/prodero-curator-0.2.0.tgz
|
|
26
80
|
```
|
|
27
81
|
|
|
28
82
|
Use the isolated host environment described above for automated verification. For a deliberate real-host check, review the installer’s configuration changes and restart the selected coding agent. Open a synthetic project and type `prodero`. The tarball includes the compiled server, Apps and plugin resources; no source checkout or development dependencies are needed.
|
|
29
83
|
|
|
30
84
|
## Final human publication checklist
|
|
31
85
|
|
|
32
|
-
1. Independently audit
|
|
86
|
+
1. Finalize version, changelog/date and README in the intended release tree before freezing the candidate. Independently audit it, review diffs, run the full gate on the exact committed tree and obtain green declared CI matrix runs. Record artifact SHA-256 and primary-host evidence. Any packaged-content edit afterwards requires a new tarball and matching checks.
|
|
33
87
|
2. Review the intended public Git tree **and history** for private content. Ignoring runtime files today does not remove old commits. Decide explicitly what history to publish; never rewrite it automatically.
|
|
34
88
|
3. Confirm ownership of npm scope `@prodero`, package/repository identity `@prodero/curator` / `prodero/curator`, and permission to release. A registry 404 does not establish scope ownership.
|
|
35
89
|
4. Create/configure the intended public repository only with explicit approval. Enable Issues and private vulnerability reporting; verify the links and update any identity/channel changes in docs and package metadata.
|
|
36
|
-
5. Confirm version `0.
|
|
37
|
-
6. Authenticate npm with the account's required 2FA/provenance policy. Publish the **reviewed tarball**, not an unreviewed rebuild: `npm publish /absolute/path/prodero-curator-0.
|
|
38
|
-
7. Verify external `npm install --global @prodero/curator@0.
|
|
90
|
+
5. Confirm candidate version `0.2.0`, MIT license, final changelog date, preview limitations, README registry example and exact artifact contents. If any edit is still needed, return to step 1 and certify the new artifact. Obtain explicit approval for publication.
|
|
91
|
+
6. Authenticate npm with the account's required 2FA/provenance policy. Publish the **reviewed tarball**, not an unreviewed rebuild: `npm publish /absolute/path/prodero-curator-0.2.0.tgz --access public`.
|
|
92
|
+
7. Verify external `npm install --global @prodero/curator@0.2.0`, `prodero --version` and `prodero check-update`. Only with separate approval create/push the `v0.2.0` tag and release notes or announcements.
|
|
39
93
|
|
|
40
94
|
The automated gate does not publish or push and does not change the source repository history. It creates an isolated disposable test commit in its temporary checkout. Package upgrades do not move project knowledge. Back up the full `.prodero` directory before preview upgrades; `.cache` is disposable, migration recovery backups are not.
|
|
95
|
+
|
|
96
|
+
## Terminal updater acceptance
|
|
97
|
+
|
|
98
|
+
Test the installed `prodero update VERSION` in an isolated prefix after explicit terminal acknowledgment, including non-TTY refusal/`--yes`, actual npm failures and fresh CLI/MCP verification. Record artifact/hash/version, scripts policy and unchanged synthetic project/host state. Published-release upgrade, fixture-modified candidate→published transition and same-version behavior are distinct claims. A direct npm install or the existing synthetic patch smoke does not alone exercise the updater. Never use the 0.0.0 placeholder as a functional baseline or update the maintainer’s working npm installation during automated checks. Chat/MCP checks must assert instruction-only behavior even with development release sources.
|
package/docs/hosts.md
CHANGED
|
@@ -7,8 +7,9 @@ Install the public package (or a generated preview tarball), then run `prodero i
|
|
|
7
7
|
- `prodero install`: open the interactive installation wizard. It lists every agent and its saved configuration state, then offers numbered install/update actions only for agents that need them. Select an agent, confirm with `y`, and review the result. Repeat for another agent or choose Finish. Enter at the selection prompt finishes; Enter at confirmation cancels that action. Ctrl+C or EOF exits without starting another operation.
|
|
8
8
|
- Installation takes no host arguments and has no `--all` flag. Choose agents inside the wizard. Non-interactive invocation prints readable status and terminal instructions, exits nonzero, and makes no changes.
|
|
9
9
|
- `prodero uninstall [codex|claude]` / `prodero uninstall --all`: remove owned integration, including when the executable has since disappeared. The default visits all adapters.
|
|
10
|
-
- `prodero status`:
|
|
11
|
-
- `prodero status --root PATH`:
|
|
10
|
+
- `prodero status`: readable machine integration status, including the installed version and each host's detection, MCP, launcher and configuration state. It does not discover or access a project, even when run inside one.
|
|
11
|
+
- `prodero status --root PATH`: readable status for that existing project: initialization, knowledge, sessions, skills, checkpoints, attention counts and the bounded update check. It does not initialize, migrate, synchronize or repair the project.
|
|
12
|
+
- Add `--json` to either status command for scripts. The format is explicit and does not depend on whether stdout is a terminal or a pipe.
|
|
12
13
|
|
|
13
14
|
States are `not-detected`, `not-configured`, `installed`, `outdated`, `conflicted`, `unsupported-configuration`, `recovery-required`, `externally-configured`, `external-incomplete`, or `unsupported` (detection-only adapter). On inspection failure, MCP and launcher fields are `null` (unknown), not proof of absence. Detection means an executable on PATH or the native configuration file exists; it does not prove login, an operational server or UI compatibility. Support labels describe verification separately from installation state. The wizard displays conflicts without hiding other agents; those agents cannot be selected for installation. An installation failure exits nonzero.
|
|
14
15
|
|
|
@@ -79,7 +80,7 @@ Recovery snapshots can contain **the entire previous host configuration, includi
|
|
|
79
80
|
|
|
80
81
|
## Experimental Claude limitations
|
|
81
82
|
|
|
82
|
-
Claude Code 2.1.52
|
|
83
|
+
Historical Claude Code 2.1.52 checks verified generated user-scope registration and an isolated stdio connection but stopped at login. On 2026-10-23, native Claude Code 2.1.302 passed the installed 0.2.0 candidate's text lifecycle, persistent retrieval, Local editing and promotion preview in a disposable project using existing client authentication and invocation-only MCP configuration. That run did not recertify global installer registration, Claude Desktop or graphical Apps. The adapter remains experimental; see the exact candidate and evidence boundaries in [Compatibility](COMPATIBILITY.md). No Claude Desktop adapter is provided.
|
|
83
84
|
|
|
84
85
|
Claude Code reads global `CLAUDE.md`, but does not automatically consume project `AGENTS.md`. Prodero project initialization is unchanged. For experimental lifecycle use, review the host's native project `CLAUDE.md` import of `@AGENTS.md` yourself; installation never writes that project file. Apps rendering depends on the host; text responses remain available.
|
|
85
86
|
|
|
@@ -116,17 +117,34 @@ Everyday work happens through the connected agent. These commands are for mainte
|
|
|
116
117
|
prodero --help
|
|
117
118
|
prodero status
|
|
118
119
|
prodero status --root /absolute/path/to/project
|
|
120
|
+
prodero status --json
|
|
121
|
+
prodero status --root /absolute/path/to/project --json
|
|
119
122
|
prodero check-update
|
|
120
123
|
prodero update
|
|
121
|
-
|
|
124
|
+
prodero update 0.2.0 --yes # example exact target, only when actually published
|
|
122
125
|
prodero install
|
|
123
126
|
```
|
|
124
127
|
|
|
125
|
-
`check-update` reports the installed
|
|
128
|
+
`check-update` reports the installed and public latest npm version when reachable, availability and the terminal command `prodero update`. An unpublished, disabled or unreachable registry is unavailable, not current. In Codex/Claude the update indicator only opens these instructions. The compatibility MCP tool `prodero_update` is read-only for every release source; it does not install, rebuild, stage or refresh project integration.
|
|
126
129
|
|
|
127
|
-
|
|
130
|
+
`prodero update` in a terminal really updates the installed package. It verifies the current ordinary per-user npm-global installation, previews an exact stable newer version and unchanged prefix, asks you to finish active work and close Codex/Claude, then requires explicit confirmation. `prodero update VERSION` selects an exact stable target; ranges/tags/URLs/downgrades are rejected and an already-current target is a no-op. There is no automatic process discovery or host termination. Do not launch another consumer or package-manager operation during installation. Restart your hosts afterward.
|
|
128
131
|
|
|
129
|
-
|
|
132
|
+
For non-interactive use, provide both an exact target and explicit acknowledgment: `prodero update VERSION --yes`. The flag acknowledges that active work has ended and hosts are closed; the updater does not verify this. Without both, a non-TTY command refuses instead of waiting or silently agreeing. Use only an actually published version in place of VERSION; examples are not release announcements.
|
|
133
|
+
|
|
134
|
+
The CLI waits for npm and checks the resulting installed version/public command. Failure exits nonzero with repair guidance; npm can leave a partial installation and there is no atomic rollback or hot activation. Source checkouts, linked/alternate package-manager layouts, mismatched installs and inadequate permissions are unsupported. Review the reported package-manager/path guidance; never use automatic sudo or change ownership to bypass it. Ordinary npm dependency resolution remains in effect; top-level artifact verification is not an exact offline dependency-closure guarantee. Prebuilt packages are installed with lifecycle scripts disabled and must pass installed-artifact smoke.
|
|
135
|
+
|
|
136
|
+
Package update does not migrate projects, rewrite host settings/receipts/preferences or switch dev mode. A host saved in dev mode continues to load its existing checkout: updated package is distinct from active dev runtime. After restart, Open/Prepare separately present required project/knowledge migration for review; CLI `migrate` explicitly applies a permitted update. Back up the whole `.prodero` directory before preview migrations and do not downgrade to a runtime unable to read its schema.
|
|
137
|
+
|
|
138
|
+
`PRODERO_RELEASE_SOURCE=none` disables passive version checks. Local manifest/check-out staging remains an internal development test adapter, not a production updater or a way to install through MCP. The terminal installer uses its verified public npm source rather than a model-supplied release location.
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
`status` without `--root` inspects machine integrations only. `status --root PATH` inspects the selected project. Both default to plain text, including in pipes; scripts must pass `--json`. Successful machine JSON retains `ok`, `version`, `scope: "machine"`, `action` and `hosts`. Successful project JSON retains `version`, `project` and `update`, with additive `scope: "project"`. Failed machine inspection retains its host results with `ok: false` and unknown (`null`) configuration fields where inspection failed.
|
|
142
|
+
|
|
143
|
+
With `status --json`, invalid arguments or roots, blocked migration, newer schemas and storage failures produce exactly one JSON document on stdout, no stderr, and exit 1. The error shape is `{ "ok": false, "version": "…", "scope": "machine|project", "error": { "code": "…", "message": "…", "recovery": "…" } }`; a migration gate also includes `migration`. Successful reads exit 0. A failed or disabled registry check remains `update.status: "unavailable"` or `"invalid"` in a successful project result and retains exit 0; this does not claim the installed version is current. Plain-text failures remain diagnostic text and exit nonzero.
|
|
144
|
+
|
|
145
|
+
Status does not change canonical knowledge, skills, sessions, configuration, indexes, managed instructions or migration journals, and does not recreate missing runtime stores. If a required store (for example `checkpoints`) is missing or unreadable, status reports a diagnostic and exits 1; it does not repair the store. The CLI explicitly disables cache persistence: it may read valid caches or scan canonical files, but it does not create, replace or delete caches, create cache directories, or refresh `.gitignore`. Other detailed-status API callers retain their existing default derived-cache behavior (`memory-index.json`, `session-index.json`, `knowledge-graph.json` and the required ignore rules); that maintenance is not performed by CLI status. Projects needing an update are inspected through metadata only; run `prodero migrate status --root PATH` to review the required step.
|
|
146
|
+
|
|
147
|
+
`init`, `sync`, `context [query]` and `prepare [task]` accept `--root PATH` or `--root=PATH`. Without it they require a Git or initialized Prodero ancestor. Unknown commands/flags and invalid roots exit non-zero. `prepare` starts a session; use the MCP lifecycle to record and close it. `sync` starts or resumes the Curate Memory options workflow and can recover pending observations, including active-session observations. Use the connected agent/App to continue its review steps. `sync-sessions` is the low-level deterministic recovery command that processes only closed sessions and leaves active sessions untouched. Normal session close/prepare learning does not require starting Curate Memory.
|
|
130
148
|
|
|
131
149
|
|
|
132
150
|
For project-history questions without starting a session, use `prodero recall "why was this designed this way?" --root /absolute/project`, or ask the connected agent.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/ui-themes.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Built-in UI themes
|
|
1
|
+
# Built-in UI themes
|
|
2
2
|
|
|
3
|
-
Appearance is a
|
|
3
|
+
Appearance is a personal preference on the current checkout. Theme and display mode overrides are stored in the ignored, independently versioned `.prodero/local/preferences.json`; shared project configuration remains tracked. The compact **Appearance** disclosure above the main App contains seven native radio choices with palette swatches. It remains mounted outside `#app`, so changing appearance neither rerenders a screen nor discards form drafts. Keyboard users can tab to the picker and use arrow keys within its radio group.
|
|
4
4
|
|
|
5
5
|
- **Current / Prodero** is the default, with the original green-black gradients, lime identity, surface colors and typography.
|
|
6
6
|
- **Dark Neon** is the darkest variant: almost-black foundations, graphite-black elevated surfaces and restrained ice-blue edge light.
|
|
@@ -20,7 +20,13 @@ The original theme's low-emphasis text colors are deliberately unchanged. New th
|
|
|
20
20
|
|
|
21
21
|
## Persistence and host boundaries
|
|
22
22
|
|
|
23
|
-
The selected ID is saved for the current
|
|
23
|
+
The selected ID is saved for the current checkout through `prodero_config_set`, using the same validation as chat updates and owner-only atomic local storage. The Appearance disclosure shows whether the effective value is a local override, legacy project default or built-in default; when an override exists, **Use project/default setting** removes only that local theme field. Chat can reset either presentation field with `reset:true` and no `value`; reset with a value, reset of the context budget and null values are rejected. The old global browser storage key is ignored because it cannot be attributed to a project. Each field resolves independently: an explicit invocation mode (where supported), then a valid local field, then the legacy `.prodero/config.json` presentation field, then the built-in default. Theme defaults to Current / Prodero; mode defaults to Automatic. Explicit System/Automatic values are real overrides, not missing fields. Reads never create or copy preferences or rewrite shared config; theme/mode saves never write shared config or repair root ignore rules, even for same-value saves. Private self-excluding `local/.gitignore` and `.transactions/.gitignore` protect preferences and lock files if root exclusions are absent; existing unsupported/custom nested rules are preserved and saving fails with repair guidance instead of rewriting them. Reset reveals fallback rather than copying it. Failed saves retain the last applied theme and explain the failure. Separate checkouts/projects can display different themes simultaneously; late saves cannot recolor another project.
|
|
24
|
+
|
|
25
|
+
The local file format is `{ "version": 1, "presentation": { "mode": "text", "theme": "dark-neon" } }` (an example, not a default or migration). Context budgets, schema/runtime metadata, project identity and knowledge-engine policies remain shared config. Known policy/identity overrides are rejected in local preferences; unknown extensions round-trip without becoming effective settings. Existing MCP tool IDs, setting keys and effective `projectSettings.presentation` remain compatible. Effective settings are read per resolved project on every request; one-off text display never saves a preference.
|
|
26
|
+
|
|
27
|
+
A missing local file is ordinary fallback. Corrupt/unsafe/newer local files produce a safe code, cause and recovery guidance without echoing contents. Valid sibling fields can resolve independently when one known field is invalid, but saves/reset refuse to overwrite the damaged file. Newer local versions fall back entirely. Preserve the file and repair explicitly or use a compatible runtime. Writes retain initialization/canonical-schema/interrupted-migration gates, use the common Sync/migration lock and do not recover pending knowledge lifecycle transactions as a side effect of a theme save. Existing re-init, integration refresh and migration/recovery retain preferences.
|
|
28
|
+
|
|
29
|
+
There is no automatic cleanup or migration of legacy shared presentation fields. They remain fallback defaults, including an existing dirty choice; no blanket ignore/reset of `.prodero/config.json`. Optional removal would require separate reviewed work. Older runtimes ignore the local file and may still read/write `config.presentation`, creating a tracked diff; this is the downgrade limitation. No dual-write is used to disguise it. Preferences are per checkout, not synchronized across machines/worktrees, and are not a security boundary against the connected agent.
|
|
24
30
|
|
|
25
31
|
Browser preference changes are observed using `matchMedia`; host preferences use `getHostContext()` and `onhostcontextchanged`. Partial host notifications do not clear a known preference. Explicit themes ignore both signals. A host that reports no system preference falls back to browser detection. Separate plugin-owned MCP Apps have independent styles and are outside the main App's document; this feature does not impose styles on third-party plugin documents.
|
|
26
32
|
|
|
@@ -38,6 +44,6 @@ Focused controller/default-style tests are included in `npm test`. Browser check
|
|
|
38
44
|
node --test test/themes.browser.mjs
|
|
39
45
|
```
|
|
40
46
|
|
|
41
|
-
If Playwright is provided by the host runtime instead of local dependencies, set `PRODERO_PLAYWRIGHT_MODULE` to its importable module path. Optional `PRODERO_THEME_SCREENSHOTS` names an existing output directory. The browser test uses the production UI modules with only the MCP bridge stubbed, exercises all themes on status, knowledge, lifecycle, promotion and skills, tests keyboard selection and live System changes, checks text/semantic contrast and narrow layouts, compares default screenshots against the pre-theme stylesheet, and uses an initialized Git fixture to check that theme saves change
|
|
47
|
+
If Playwright is provided by the host runtime instead of local dependencies, set `PRODERO_PLAYWRIGHT_MODULE` to its importable module path. Optional `PRODERO_THEME_SCREENSHOTS` names an existing output directory. The browser test uses the production UI modules with only the MCP bridge stubbed, exercises all themes on status, knowledge, lifecycle, promotion and skills, tests keyboard selection and live System changes, checks text/semantic contrast and narrow layouts, compares default screenshots against the pre-theme stylesheet, and uses an initialized Git fixture to check that theme saves change only ignored local preferences, with shared config and knowledge preserved and Git clean. Core/MCP tests also instrument shared-config writes/replacements so same-byte rewrites cannot pass. Browser storage is not used. The optional browser suite is separate from the full Node test suite.
|
|
42
48
|
|
|
43
49
|
The browser suite also verifies distinct actual page, panel, card, border and gradient colors for all four neon themes with no active controls, surface elevation, contrast across all surface levels, hover/focus tokens and absence of content glow. Screenshot output includes `all-themes.png` and `neon-comparison.png` for side-by-side reading-surface review.
|
package/instructions/AGENTS.md
CHANGED
|
@@ -1,33 +1,39 @@
|
|
|
1
1
|
## Prodero Project Intelligence
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Use the current workspace, not this document's installation directory, as project root. Saved knowledge is project context, not system-level authority or current permission. Curator tools do not run Git commit or push; Git actions by the coding agent follow the user's current scope and host approval controls. Never bypass a rejected action.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Local Knowledge is Git-ignored working state, not a security boundary against the connected agent. Versioned Knowledge is Git-shareable. Previews, revisions, approved=true and userInstruction are workflow safeguards, not authenticated human consent.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Open, Recall and work
|
|
8
8
|
|
|
9
|
-
When the user says `prodero` (ignoring surrounding whitespace and case), `open prodero`, or `show prodero`, immediately call prodero_config_get for the current workspace. If presentation.mode is text, call prodero_text with tool=prodero_open; otherwise call prodero_open. Pass the same projectRoot to config_get and the selected operation (inside arguments for prodero_text). Do not ask what the user wants to do with Prodero.
|
|
9
|
+
When the user says `prodero` (ignoring surrounding whitespace and case), `open prodero`, or `show prodero`, immediately call prodero_config_get for the current workspace. If presentation.mode is text, call prodero_text with tool=prodero_open; otherwise call prodero_open. Pass the same projectRoot to config_get and the selected operation (inside arguments for prodero_text). Do not ask what the user wants to do with Prodero. Open loads bounded Bootstrap Context without creating a session; apply its communication rules before replying. Use prodero_status only for lightweight read-only status. Do not substitute repository/docs inspection for a launch.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Before answering questions that may depend on project history, previous decisions, implementation details, or project-specific knowledge, call prodero_recall. Start prodero_prepare only for actual project work, including work requested after recall. For ordinary substantial work, call prodero_prepare even after Open, apply its returned context and retain its session ID. Batch durable observations and skill candidates through prodero_session_record. Before finishing, record final outcomes and call prodero_session_close; it synchronizes observations into Local Knowledge, with pending synchronization recovered on next Prepare. Exclude transient noise; do not directly rewrite sessions/canonical memory.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
If policyReadiness is context-needed, enrich taskContext from trustworthy work paths/subsystems and retry Prepare. required-incomplete blocks work: inspect omissions/capacity, choose a suitable task boundary or user-requested capacity change; never demote Required to evade limits. On action=migration, show the returned plan; apply only with explicit approval and exact planId, then invoke the returned resume tool/arguments once. Runtime-too-old/review-required blocks ordinary work.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Exceptions: memory_transform_prepare/propose is bundle-only and read-only. Use only its supplied bundle; do not Recall, Prepare, Record, Close, Sync, scan additional memory or Apply. Return unresolved for insufficient evidence. Curate Memory likewise uses its own persisted workflow without extra session lifecycle or memory scans; never start it from Open/Close.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
If MCP is unavailable use the Prodero CLI. Only as the last file fallback, start from .prodero/index.md and load bounded Required/relevant routes; never the whole .prodero directory. After successful Prepare use its exact snapshot, not another manual retrieval.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
1. Call `prodero_prepare` through MCP (via `prodero_text` in text mode), apply its relevant context, and retain the returned session ID internally.
|
|
21
|
-
2. If MCP is unavailable, use the Prodero CLI; access `.prodero/` directly only as a final fallback.
|
|
22
|
-
3. Start from `.prodero/index.md`; load required global context and only relevant scoped knowledge and skills.
|
|
23
|
-
4. Never load the entire `.prodero` directory.
|
|
19
|
+
## Presentation and replies
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
Show settings via prodero_config_get and change requested preferences with prodero_config_set using returned setting IDs/schema. Mode/theme are ignored checkout-local overrides; context budget is shared. Legacy project presentation defaults are fallback. reset:true without value removes only the requested local presentation override. Never store settings as knowledge.
|
|
26
22
|
|
|
27
|
-
|
|
23
|
+
For knowledge-list requests in Claude Code, prefer prodero_text unless the user requests a graphical view. Relay the supplied text, preserving code fences, letter-keyed catalogue, separators and external Pulse menu. Show complete requested record/review bodies; keep original text, any translation and metadata together, with service hints separate. Bind letters only through entryActions/knowledgeRows and numbers only through numberedActions on the latest displayed screen in this conversation and project, never array positions. Each screen replaces old aliases. Preserve bindings/order when translating. Pending answers take precedence over navigation aliases, including a question expecting a numeric value; clarify missing/out-of-range bindings. Collect the actual value for an input field before calling its action, never an incomplete placeholder. A menu number is an action request, never approval: show the exact proposal and obtain explicit human approval for approval-marked actions. Keep aliases ephemeral; never store them as settings or knowledge. Tell the user they may reply with a number or command name. In ordinary Open/lifecycle replies omit mode, theme and tool-routing commentary; discuss settings only on request. Display settings or App metadata do not prove that a UI was visible. For lifecycle text delivery, including when presentation.resolved is text in auto mode, relay the supplied compact presentation.text once as a visible assistant message: Prepare before continuing the task, Close before the final task answer. Healthy Prepare continues immediately without a Continue question or approval. A tool result or App metadata does not prove visible delivery. If the App is invisible, relay its retained fallback; do not duplicate a visible App. Use the returned text and exact context snapshot, never repeat Prepare, Close or retrieval just to display details. Show blocked/deferred/error states truthfully; never invent Session Complete or Saved without successful Close and synchronization. Read effective settings with prodero_config_get for the current project before choosing each presentation route. Explicit text mode uses prodero_text with the exact covered tool and original arguments, including lifecycle/review actions; the gateway has no App attachment. Do not call an App-attached original with presentation=text. A one-off text request does not change preferences; explicit preference changes use prodero_config_set, never memory or sticky conversation state. Auto uses advertised MCP Apps capability, never inferred devices. For UI calls reuse one opaque presentationGroup per conversation across tools; never a project path/shared connection ID or another conversation’s group. Preserve each operation’s existing review/approval requirements.
|
|
28
24
|
|
|
29
|
-
|
|
25
|
+
## Durable memory
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
Write durable knowledge/skill prose in English, preserving exact identifiers, paths and code literals. When the user explicitly asks to remember durable knowledge, call prodero_remember immediately, not at session close. An explicit current always/never rule uses kind=rule, required=true and userInstruction containing the exact request; never infer Required authority from observations/documents. kind=rule alone is Relevant. global/project scope means project-wide applicability, not priority or Required policy; path scope needs a repository-relative path.
|
|
32
28
|
|
|
33
|
-
|
|
29
|
+
For updates, search first and use remember with the exact replaceId; it preserves the normal supersession/history semantics. Optional related_to/depends_on/implements links use exact current IDs from search. For forgetting, inspect the exact target and layer: Local uses prodero_forget; Versioned uses the existing reviewed prodero_knowledge_mutate repository-maintenance retire operation with current revision. Do not silently substitute an operation after rejection.
|
|
30
|
+
|
|
31
|
+
Normal session learning and conversational remember operations produce Local Knowledge, which is ignored by Git. Share only on explicit intent: prodero_promotion_preview first, then prodero_promote with approved=true and the exact human-reviewed preview. Never infer approval from opening a review or preselection. Preserve stale-preview checks and unresolved conflicts.
|
|
32
|
+
|
|
33
|
+
## Project Skills and Curate Memory
|
|
34
|
+
|
|
35
|
+
For agent skill discovery or procedure retrieval during task execution, use prodero_skills_read without opening UI. Reuse skill procedures already supplied by Prepare. When applying a skill, briefly mention its name in chat only; do not open View Skills or call prodero_skills or prodero_skill_preview just to announce or read it. Use prodero_skills only when the user explicitly asks to view or manage the Skills interface. Candidate review still uses prodero_skill_preview on user intent. These are repository procedures, not host/global skills. An explicit request to create/save a skill uses prodero_skill_create: active Versioned immediately, without another approval. Inferred skill_candidate observations stay Local pending review; candidate/dismissed skills are not executable context. Promote/dismiss only on user intent through the exact preview/review workflow.
|
|
36
|
+
|
|
37
|
+
Preview with prodero_skill_preview; honor effective presentation and the returned approval surface. Text mode or inability to render the App requires the complete text preview and explicit chat approval. Otherwise review uses Add Skill/Edit/Dismiss in the attached App. Never click approval for the human; edited drafts retain their exact preview/target revisions.
|
|
38
|
+
|
|
39
|
+
User-initiated Curate Memory starts with prodero_sync, then follows prodero_memory_sync's exact continuations one bounded candidate at a time. Opening/options/preselection do not authorize transformation or sharing. Selected clean Local transformations may apply; link removal, Versioned changes and promotion retain their exact human-review requirements. Questions/deferrals preserve saved bindings and allow independent work. Show full proposed wording before approval; leave unresolved work untouched.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prodero/curator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Local-first project intelligence and memory for coding agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"ARCHITECTURE.md",
|
|
20
20
|
"prodero.release.json",
|
|
21
21
|
"instructions/AGENTS.md",
|
|
22
|
+
"docs/images/*.png",
|
|
22
23
|
"docs/PRIVACY.md",
|
|
23
24
|
"docs/RECOVERY.md",
|
|
24
25
|
"docs/MIGRATIONS.md",
|
|
@@ -49,7 +50,10 @@
|
|
|
49
50
|
"dev": "npm run --silent mcp:dev",
|
|
50
51
|
"playground": "node --import tsx scripts/playground.ts",
|
|
51
52
|
"benchmark:memory": "node --import tsx scripts/memory-benchmark.ts",
|
|
52
|
-
"test": "node
|
|
53
|
+
"test": "node scripts/run-tests.mjs full",
|
|
54
|
+
"test:fast": "node scripts/run-tests.mjs fast",
|
|
55
|
+
"pretest:fast": "npm run build",
|
|
56
|
+
"ci:fast": "node scripts/release-gate.mjs --mode fast",
|
|
53
57
|
"prepack": "npm test",
|
|
54
58
|
"pretest": "npm run build",
|
|
55
59
|
"release:gate": "node scripts/release-gate.mjs",
|