openmerit 0.1.5 → 0.1.6-preview.1
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 +18 -0
- package/README.md +33 -9
- package/dist/core/src/index.d.ts +12 -1
- package/dist/core/src/index.js +552 -40
- package/dist/pi/src/index.d.ts +17 -0
- package/dist/pi/src/index.js +448 -77
- package/dist/pi/src/scheduler.d.ts +11 -0
- package/dist/pi/src/scheduler.js +137 -0
- package/dist/pi/src/wakeup.d.ts +2 -0
- package/dist/pi/src/wakeup.js +108 -0
- package/dist/protocol/src/index.d.ts +86 -4
- package/dist/protocol/src/index.js +1 -1
- package/dist/protocol/src/schemas.d.ts +128 -2
- package/dist/protocol/src/schemas.js +57 -1
- package/dist/terminal/public/app.js +297 -0
- package/dist/terminal/public/brands/anthropic.png +0 -0
- package/dist/terminal/public/brands/baai.png +0 -0
- package/dist/terminal/public/brands/baseten.png +0 -0
- package/dist/terminal/public/brands/cerebras.png +0 -0
- package/dist/terminal/public/brands/cohere.png +0 -0
- package/dist/terminal/public/brands/deepseek.ico +0 -0
- package/dist/terminal/public/brands/google.png +0 -0
- package/dist/terminal/public/brands/groq.ico +0 -0
- package/dist/terminal/public/brands/lm-studio.png +0 -0
- package/dist/terminal/public/brands/meta.ico +0 -0
- package/dist/terminal/public/brands/mistral.png +0 -0
- package/dist/terminal/public/brands/nomic.png +0 -0
- package/dist/terminal/public/brands/ollama.png +0 -0
- package/dist/terminal/public/brands/openai.png +0 -0
- package/dist/terminal/public/brands/openrouter.png +0 -0
- package/dist/terminal/public/brands/qwen.png +0 -0
- package/dist/terminal/public/brands/vllm.ico +0 -0
- package/dist/terminal/public/brands/vllm.png +0 -0
- package/dist/terminal/public/favicon.svg +1 -0
- package/dist/terminal/public/flow.css +1 -0
- package/dist/terminal/public/flow.js +770 -0
- package/dist/terminal/public/index.html +21 -0
- package/dist/terminal/public/styles.css +787 -0
- package/dist/terminal/src/activity-merge.mjs +64 -0
- package/dist/terminal/src/browser.mjs +29 -0
- package/dist/terminal/src/cli.mjs +60 -0
- package/dist/terminal/src/collect.mjs +315 -0
- package/dist/terminal/src/discovery.mjs +93 -0
- package/dist/terminal/src/hardware.mjs +57 -0
- package/dist/terminal/src/history.mjs +32 -0
- package/dist/terminal/src/project-activity.mjs +155 -0
- package/dist/terminal/src/sample.mjs +171 -0
- package/dist/terminal/src/server.mjs +56 -0
- package/dist/terminal/src/services.mjs +62 -0
- package/dist/terminal/src/topology.mjs +30 -0
- package/docs/adapter-guide.md +24 -7
- package/docs/architecture.md +8 -4
- package/docs/automation.md +10 -2
- package/docs/budgets.md +37 -0
- package/docs/commands.md +85 -0
- package/docs/demo-backfill.md +29 -0
- package/docs/demo-fieldkit.md +47 -0
- package/docs/demo-placement.md +30 -0
- package/docs/demo-spam.md +15 -0
- package/docs/demo-support.md +42 -0
- package/docs/demo.md +57 -0
- package/docs/first-trial.md +60 -0
- package/docs/getting-started.md +18 -8
- package/docs/index.md +40 -0
- package/docs/inference-terminal.md +449 -0
- package/docs/lifecycle.md +9 -9
- package/docs/memo.md +126 -0
- package/docs/metrics-and-evidence.md +11 -3
- package/docs/operations.md +12 -3
- package/docs/pi-extension.md +17 -7
- package/docs/roadmap.md +4 -2
- package/docs/security.md +15 -1
- package/docs/site-artwork-linocut.md +23 -0
- package/docs/site-artwork-miniature-diverse.md +28 -0
- package/docs/site-artwork-miniature.md +26 -0
- package/docs/site-demo.md +177 -0
- package/docs/site-design.md +94 -0
- package/docs/site-documentation.md +83 -0
- package/docs/site-dynamic-og.md +35 -0
- package/docs/site-faq-maintenance.md +120 -0
- package/docs/site-hero-resolution.md +60 -0
- package/docs/site-illustration-sequences.md +227 -0
- package/docs/site-inference-terminal.md +203 -0
- package/docs/site-memo.md +39 -0
- package/docs/site-og-image.md +38 -0
- package/docs/site-og-workshop.md +21 -0
- package/docs/site-section-artwork.md +56 -0
- package/docs/site-skill-review.md +57 -0
- package/docs/site-terminal-preview.md +98 -0
- package/docs/testing.md +85 -3
- package/docs/troubleshooting.md +55 -0
- package/package.json +48 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.1.6-preview.1 — 2026-10-09
|
|
6
|
+
|
|
7
|
+
- Retain historical application requests beyond 24 hours; add 7d, 30d, and default All time with calendar labels, available-history dates, and explicit partial-coverage disclosure. Existing source/read limits still apply.
|
|
8
|
+
|
|
9
|
+
## 0.1.6-preview.0 — 2026-10-09
|
|
10
|
+
|
|
11
|
+
A test prerelease of the existing `openmerit` npm package, installed with `npm install -g openmerit@preview`. Includes the compiled Inference Terminal, automatic browser opening, and a free loopback-port fallback. `latest` remains `0.1.5`.
|
|
12
|
+
|
|
13
|
+
- Add the Inference Terminal: `openmerit dash` serves a local, read-only view of models, request metadata, connections, capacity, and compute, sampled every 10–30 seconds. Agent and task identities come from supplied metadata; the terminal does not intercept inference or discover every call automatically.
|
|
14
|
+
- Bind task profiles, metrics, assessments, frontier artifacts, swaps, and
|
|
15
|
+
automation signals to a confirmed application LLM target; Pi's own model
|
|
16
|
+
telemetry cannot satisfy application evidence or become a swap target.
|
|
17
|
+
- Make Pi's automatic setup conditional on bounded source detection of an
|
|
18
|
+
application LLM call. Projects without a detected target remain idle until
|
|
19
|
+
`/openmerit setup` is requested.
|
|
20
|
+
|
|
3
21
|
## 0.1.5 — 2026-09-23
|
|
4
22
|
|
|
5
23
|
OpenMerit now ships as one npm package with a Pi extension, a reusable
|
package/README.md
CHANGED
|
@@ -23,17 +23,18 @@ It distinguishes:
|
|
|
23
23
|
## Current capabilities
|
|
24
24
|
|
|
25
25
|
- Pi 0.87 extension with a single `/openmerit` command surface.
|
|
26
|
-
-
|
|
26
|
+
- Harness-inferred, user-confirmed task profiles with explicit metrics, sampling designs, constraints, and evaluation budgets.
|
|
27
27
|
- The complete initial quality, reliability, cost, latency, efficiency, and human-intervention metric catalogue.
|
|
28
|
-
-
|
|
28
|
+
- Setup-time preliminary model research in the source checkout, followed by baseline evidence collection, refreshed candidate discovery, and controlled challenger trials. The published `0.1.5` package still begins candidate discovery after the baseline.
|
|
29
29
|
- A normative, uncertainty-aware Pareto definition owned by OpenMerit.
|
|
30
30
|
- Harness-calculated frontier results independently checked by OpenMerit's conformance verifier.
|
|
31
31
|
- Versioned result schemas for all ten intents, reusable across harness adapters and exposed dynamically by Pi.
|
|
32
|
-
-
|
|
32
|
+
- Configurable swap approval, post-swap verification requests, and policy-based rollback requests. Automatic swaps can begin immediately if explicitly enabled with a zero verified-swap threshold.
|
|
33
33
|
- Project-local snapshots, redacted append-only audit events, evidence manifests, and optional best-effort event exporters under `.openmerit/`.
|
|
34
34
|
- Model-catalog change detection that can nudge the harness to reassess a mature baseline.
|
|
35
35
|
- User-confirmed task-count, elapsed-time, regression, catalogue-change, and post-swap check policies.
|
|
36
36
|
- Idempotent harness signals, durable pending work, native wakeup planning, and explicit scheduler capability gaps.
|
|
37
|
+
- In the unreleased source checkout, an opt-in macOS Pi LaunchAgent for time-based checks and a durable pause; published `0.1.5` still requires an external scheduler and has a partial, session-local pause.
|
|
37
38
|
|
|
38
39
|
## Responsibility boundary
|
|
39
40
|
|
|
@@ -43,7 +44,7 @@ It distinguishes:
|
|
|
43
44
|
| Tracks lifecycle, policy, budget, and evidence references | Builds evals and observability |
|
|
44
45
|
| Determines which approved nudge is due | Collects and calculates metrics |
|
|
45
46
|
| Verifies returned structure and frontier conformance | Discovers candidates and calculates the frontier |
|
|
46
|
-
|
|
|
47
|
+
| Selects intents according to confirmation and rollback policy | Applies and verifies an authorized model change |
|
|
47
48
|
|
|
48
49
|
Jev System One, when configured, belongs to the coding harness. Pi may use it aggressively for bounded ranking, triage, and fast judgment. OpenMerit contains no Jev client and accepts no Jev credential.
|
|
49
50
|
|
|
@@ -59,7 +60,7 @@ pi install npm:openmerit
|
|
|
59
60
|
pi list
|
|
60
61
|
```
|
|
61
62
|
|
|
62
|
-
When Pi enters an unconfigured
|
|
63
|
+
When Pi enters an unconfigured project with an interactive UI, the adapter first looks for an actual application LLM call pattern. If the project starts empty, the unreleased source checkout scans again after each settled build turn and automatically begins setup when Pi creates the application call. `/openmerit setup` remains a recovery command rather than a required demo step. Pi confirms the application target and exact incumbent application model, infers task-relevant metrics and their repeated-input or representative-case sampling designs, explains the proposed collection plan and estimated cost, and asks the user to confirm or edit it. It then establishes task-specific eval and observability artifacts, verifies them, and reports evidence to OpenMerit. Pi's own model is never the application target.
|
|
63
64
|
|
|
64
65
|
Run `/openmerit doctor` inside Pi to check the installation. OpenMerit keeps
|
|
65
66
|
project evidence under `.openmerit/` in the product repository. Version 0.1.5
|
|
@@ -70,16 +71,35 @@ harness-driven lifecycle; it does not migrate the earlier home-directory state.
|
|
|
70
71
|
|
|
71
72
|
- `/openmerit` or `/openmerit status` — show evidence readiness and lifecycle stage.
|
|
72
73
|
- `/openmerit setup` — explicitly rerun or recover automatic setup.
|
|
73
|
-
- `/openmerit assess` —
|
|
74
|
+
- `/openmerit assess` — check stored application metric windows against the baseline thresholds now (in the unreleased source checkout); start candidate discovery only when ready. Published `0.1.5` still asks Pi to assess.
|
|
74
75
|
- `/openmerit logs` — show the canonical audit, exporter-error, evidence, and state paths.
|
|
75
76
|
- `/openmerit frontier` — ask the harness to calculate a frontier now; OpenMerit verifies it.
|
|
76
77
|
- `/openmerit approve` — approve a verified proposal during supervised graduation.
|
|
77
|
-
- `/openmerit pause` and `/openmerit resume` — control proactive nudges.
|
|
78
|
+
- `/openmerit pause` and `/openmerit resume` — control some proactive nudges in the current Pi session; task-triggered checks can still run in 0.1.5. See [pause limitations](docs/commands.md#pause-and-resume).
|
|
78
79
|
- `/openmerit doctor` — show sanitized adapter diagnostics.
|
|
79
80
|
|
|
81
|
+
## Inference Terminal (test preview)
|
|
82
|
+
|
|
83
|
+
A local, dark-only overview of application inference inventory, connections, activity, and compute. Coding-harness usage is outside its scope. It reads existing metadata passively and makes no model calls.
|
|
84
|
+
|
|
85
|
+
With Node.js 22.19+ installed, run this from your application's directory:
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
npm install -g openmerit@preview
|
|
89
|
+
openmerit dash
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The preview uses the existing `openmerit` npm package, including its coordinator, protocol, Pi adapter, and compiled terminal assets. It opens its localhost URL in your default browser. The stable npm package `openmerit@0.1.5` does not include this command. See the [Inference Terminal guide](docs/inference-terminal.md) for supported sources, updating or removing the preview, source builds, and read-only agent access.
|
|
93
|
+
|
|
80
94
|
## Documentation
|
|
81
95
|
|
|
96
|
+
Read the searchable [OpenMerit documentation](https://openmerit.site/docs/). The Markdown sources below also ship with the package.
|
|
97
|
+
|
|
82
98
|
- [Getting started](docs/getting-started.md)
|
|
99
|
+
- [Your first trial](docs/first-trial.md)
|
|
100
|
+
- [Command reference](docs/commands.md)
|
|
101
|
+
- [Budgets and permissions](docs/budgets.md)
|
|
102
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
83
103
|
- [Architecture and responsibility boundary](docs/architecture.md)
|
|
84
104
|
- [Metrics and evidence](docs/metrics-and-evidence.md)
|
|
85
105
|
- [Improvement lifecycle](docs/lifecycle.md)
|
|
@@ -92,6 +112,10 @@ harness-driven lifecycle; it does not migrate the earlier home-directory state.
|
|
|
92
112
|
- [Testing](docs/testing.md)
|
|
93
113
|
- [Current limitations and roadmap](docs/roadmap.md)
|
|
94
114
|
|
|
115
|
+
### Maintaining documentation
|
|
116
|
+
|
|
117
|
+
Edit the Markdown in `docs/` alongside product changes. The public documentation is generated from these same files; there is no separate article copy to update in `site/`. Run `npm run check:docs` to rebuild and validate it. The normal Cloudflare deployment rebuilds and publishes the documentation. See [the documentation workflow](docs/site-documentation.md) for adding guides and previewing changes.
|
|
118
|
+
|
|
95
119
|
## Repository layout
|
|
96
120
|
|
|
97
121
|
- `packages/protocol` — harness-neutral types for intents, results, metrics, policies, and frontier evidence.
|
|
@@ -107,7 +131,7 @@ package exposes `openmerit/core`, `openmerit/protocol`, and `openmerit/pi`.
|
|
|
107
131
|
```sh
|
|
108
132
|
npm ci
|
|
109
133
|
npm run verify
|
|
110
|
-
./node_modules/.bin/pi -e ./packages/pi/src/index.ts
|
|
134
|
+
./node_modules/.bin/pi --no-extensions -e ./packages/pi/src/index.ts
|
|
111
135
|
```
|
|
112
136
|
|
|
113
|
-
Credentials must never be committed. The repository intentionally contains no provider or Jev API key.
|
|
137
|
+
`--no-extensions` prevents an installed npm copy of OpenMerit from registering the same tools as the source extension. Credentials must never be committed. The repository intentionally contains no provider or Jev API key.
|
package/dist/core/src/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export interface IntentFactoryOptions {
|
|
|
12
12
|
readonly policy?: SupervisedGraduationPolicy;
|
|
13
13
|
readonly id?: string;
|
|
14
14
|
readonly requestedAt?: string;
|
|
15
|
+
readonly evaluationSpend?: number;
|
|
16
|
+
readonly targetId?: string;
|
|
17
|
+
readonly additionalConstraints?: Readonly<Record<string, JsonValue>>;
|
|
15
18
|
}
|
|
16
19
|
export declare function createOpenMeritIntent(kind: IntentKind, options?: IntentFactoryOptions): OpenMeritIntent;
|
|
17
20
|
export declare function missingHarnessCapabilities(descriptor: HarnessDescriptor, kind: IntentKind): readonly HarnessCapability[];
|
|
@@ -48,6 +51,9 @@ export interface IssuedIntent {
|
|
|
48
51
|
readonly state: OpenMeritProjectState;
|
|
49
52
|
readonly receipt: HarnessDispatchReceipt;
|
|
50
53
|
}
|
|
54
|
+
export interface CoordinatorIssueOptions {
|
|
55
|
+
readonly additionalConstraints?: Readonly<Record<string, JsonValue>>;
|
|
56
|
+
}
|
|
51
57
|
export interface AcceptedIntentResult {
|
|
52
58
|
readonly intentKind: IntentKind;
|
|
53
59
|
readonly state: OpenMeritProjectState;
|
|
@@ -77,7 +83,7 @@ export declare class OpenMeritCoordinator {
|
|
|
77
83
|
private readonly store;
|
|
78
84
|
private readonly adapter;
|
|
79
85
|
constructor(store: OpenMeritStore, adapter: HarnessAdapter);
|
|
80
|
-
issue(kind: IntentKind): Promise<IssuedIntent>;
|
|
86
|
+
issue(kind: IntentKind, options?: CoordinatorIssueOptions): Promise<IssuedIntent>;
|
|
81
87
|
reconcileAutomation(now?: string): Promise<{
|
|
82
88
|
readonly plan: AutomationPlan;
|
|
83
89
|
readonly receipt?: HarnessDispatchReceipt;
|
|
@@ -85,6 +91,11 @@ export declare class OpenMeritCoordinator {
|
|
|
85
91
|
acceptResult(result: AnyIntentResult): Promise<AcceptedIntentResult>;
|
|
86
92
|
recordLifecycle(update: IntentLifecycleUpdate): Promise<void>;
|
|
87
93
|
recordTaskObservation(details?: Readonly<Record<string, JsonValue>>): Promise<ObservationResult>;
|
|
94
|
+
assessBaseline(now?: string): Promise<{
|
|
95
|
+
readonly state: OpenMeritProjectState;
|
|
96
|
+
readonly errors: readonly string[];
|
|
97
|
+
readonly decision: OrchestrationDecision;
|
|
98
|
+
}>;
|
|
88
99
|
recordAutomationSignal(signal: AutomationSignal): Promise<AutomationSignalResult>;
|
|
89
100
|
recordModelCatalogFingerprint(fingerprint: string): Promise<CatalogChangeResult>;
|
|
90
101
|
}
|