@getmarrow/install 0.1.49 → 0.1.50

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/README.md CHANGED
@@ -91,9 +91,9 @@ npx @getmarrow/install controller stop
91
91
 
92
92
  Persistent controller lifecycle is currently Linux-only. On macOS or Windows, activation still writes supported configuration and verifies one server-side install self-test without certifying that hooks continuously ran; run `npx @getmarrow/install sidecar` under an owner-managed service and pass `--no-controller`. The controller does not silently upgrade packages, change governance policy, rotate credentials, or modify unrelated project configuration.
93
93
 
94
- ## What's New in v0.1.49
94
+ ## What's New in v0.1.50
95
95
 
96
- v0.1.49 pins MCP `3.9.74` and SDK `3.7.62`. Install and repair now resolve one stable non-secret agent identity before writing configuration, then use that exact identity across generated MCP config, the owned-process SDK preload, doctor/self-test, and the local controller. Managed MCP config no longer stores an API key or shell-style credential placeholder; the owning harness inherits the key from trusted environment or secret-manager state.
96
+ v0.1.50 keeps MCP `3.9.74` and SDK `3.7.62`, and explicitly requests the expanded runtime proof required by activation self-test. Install and repair resolve one stable non-secret agent identity before writing configuration, then use that exact identity across generated MCP config, the owned-process SDK preload, doctor/self-test, and the local controller. Managed MCP config does not store an API key or shell-style credential placeholder; the owning harness inherits the key from trusted environment or secret-manager state.
97
97
 
98
98
  The integration boundary is explicit: native Claude hooks are installed only where supported and remain cooperative/client-reported until authoritative server receipts exist; MCP tools are on demand; Codex, Grok, Gemini, and similar CLIs use the governed wrapper for consequential control; owned Node processes use the SDK passive runtime while installed; and custom hosts require a bounded event adapter. Exact package SHA/integrity can prove artifact provenance, not runtime coverage. Activation-profile delivery is authenticated `client_self_reported` telemetry with `certified_coverage: false`; it acknowledges delivery but cannot attest that a hook, wrapper, or adapter ran.
99
99
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmarrow/install",
3
- "version": "0.1.49",
3
+ "version": "0.1.50",
4
4
  "description": "Universal installer and governed runner for Marrow agent fleets.",
5
5
  "bin": {
6
6
  "marrow-install": "bin/marrow-install.js"
package/src/installer.js CHANGED
@@ -1356,6 +1356,7 @@ async function runSelfTest(options) {
1356
1356
  action: 'Marrow passive install self-test: verify one-call agent runtime and outcome closure',
1357
1357
  type: 'process',
1358
1358
  role: 'general',
1359
+ response_mode: 'expanded',
1359
1360
  surfaces: ['workspace'],
1360
1361
  proof: {
1361
1362
  checks: ['installer self-test'],
@@ -1465,14 +1466,19 @@ async function runSelfTest(options) {
1465
1466
  evidence_authority: 'client_self_reported',
1466
1467
  certified_coverage: false,
1467
1468
  };
1468
- activationVerified = Boolean(
1469
- firstValue.active
1470
- && runtimeGateVerified(runtime)
1471
- && (status.enabled ?? status.ok)
1472
- && telemetryAccepted,
1473
- );
1469
+ const activationPrerequisites = {
1470
+ first_value_active: firstValue?.active === true,
1471
+ runtime_gate_verified: runtimeGateVerified(runtime),
1472
+ status_enabled: (status.enabled ?? status.ok) === true,
1473
+ telemetry_accepted: telemetryAccepted,
1474
+ };
1475
+ activationVerified = Object.values(activationPrerequisites).every(Boolean);
1474
1476
  if (!activationVerified) {
1475
- throw new Error('activation self-test prerequisites were not all verified by the server');
1477
+ const missing = Object.entries(activationPrerequisites)
1478
+ .filter(([, verified]) => !verified)
1479
+ .map(([name]) => name)
1480
+ .join(',');
1481
+ throw new Error(`activation self-test prerequisites were not all verified by the server (${missing})`);
1476
1482
  }
1477
1483
  }
1478
1484
  return {