@getmarrow/install 0.1.10 → 0.1.11

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
@@ -50,7 +50,7 @@ Expected result:
50
50
  - Marrow writes the safest detected MCP/SDK/agent config.
51
51
  - A harmless setup decision is created and its outcome is committed.
52
52
  - `/v1/agent/status` confirms capture health and missing hooks.
53
- - `/v1/agent/runtime` verifies the one-call runtime gate.
53
+ - `/v1/agent/runtime` verifies the one-call runtime gate and returns the before-action intervention contract.
54
54
  - `/v1/agent/first-value` returns the five-minute proof payload used by installer, SDK, and MCP clients.
55
55
  - The installer prints: "Your agent is no longer starting from zero."
56
56
  - Fresh accounts get a first useful action to try immediately.
@@ -64,7 +64,7 @@ After install, ask the agent:
64
64
  I am about to deploy to production. What should I check first?
65
65
  ```
66
66
 
67
- Marrow should answer with a pre-action risk gate, required proof, and matching fleet lessons before the agent acts. This is the first product moment: not just "hooks installed", but "the agent is being warned before risky work."
67
+ Marrow should answer with `proceed`, `warn`, `block`, or `owner_approval_required`, plus required proof and matching fleet lessons/playbooks before the agent acts. This is the first product moment: not just "hooks installed", but "the agent is being warned before risky work."
68
68
 
69
69
  ## What It Detects
70
70
 
@@ -132,6 +132,13 @@ npm install @getmarrow/sdk
132
132
 
133
133
  The generated runtime now fails soft with an explicit warning if the SDK package is missing, so onboarding does not crash a user process.
134
134
 
135
+
136
+ ## Trust and Data Boundaries
137
+
138
+ Marrow is tenant-aware by design. Private account, fleet, memory, workflow, and proof-pack data stays scoped to the authenticated account and authorized agent-bound keys. Shared/hive learning uses visibility-controlled, sanitized aggregate signals; it is not raw cross-customer decision sharing.
139
+
140
+ For business pilots, review the live trust notes before production rollout: https://getmarrow.ai/docs#trust-boundaries
141
+
135
142
  ## Trust Model
136
143
 
137
144
  This package is intended to be open source and auditable. It prints every file it will touch, requires `--yes` to write, does not store API keys in project files, and supports MCP-only, SDK-only, both, and markdown-only setups.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getmarrow/install",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "description": "Universal installer for Marrow passive agent setup.",
5
5
  "bin": {
6
6
  "marrow-install": "bin/marrow-install.js"
package/src/installer.js CHANGED
@@ -283,7 +283,7 @@ Marrow should run passively after install:
283
283
 
284
284
  - Use MCP hooks when available: \`npx -y @getmarrow/mcp setup\`.
285
285
  - Use SDK passive runtime in owned Node processes: \`createPassiveRuntime().install()\`.
286
- - Before risky work, use Marrow's decision brief or passive prompt hook.
286
+ - Before risky work, use Marrow's before-action intervention from \`GET /v1/agent/status\` or \`POST /v1/agent/runtime\`.
287
287
  - After meaningful work, record the outcome so future agents learn from it.
288
288
  - Check health with \`marrow_agent_status\` or \`GET /v1/agent/status\`.
289
289
 
@@ -640,7 +640,8 @@ async function runSelfTest(options) {
640
640
  auto_outcome_closure: status.auto_outcome_closure || null,
641
641
  runtime_active: Boolean(runtime && runtime.ok !== false),
642
642
  runtime_exact_next_action: runtime.exact_next_action || null,
643
- runtime_before_you_act: runtime.before_you_act || null,
643
+ runtime_before_you_act: runtime.intervention?.agent_copy || runtime.intervention?.before_action || runtime.before_you_act || null,
644
+ runtime_intervention: runtime.intervention || null,
644
645
  first_value: firstValue && firstValue.ok !== false ? firstValue : null,
645
646
  first_value_signal: firstValueSignal,
646
647
  install_value_moment: installValueMoment,
@@ -669,7 +670,9 @@ function buildInstallValueMoment(firstValueSignal = {}, status = {}, runtime = {
669
670
 
670
671
  const proof = firstValueSignal.value_proof || [];
671
672
  const hasFleetSignal = proof.length > 0;
672
- const runtimeLesson = runtime.before_you_act
673
+ const runtimeLesson = runtime.intervention?.agent_copy
674
+ || runtime.intervention?.before_action
675
+ || runtime.before_you_act
673
676
  || runtime.before_you_act_injection?.message
674
677
  || runtime.exact_next_action
675
678
  || firstValueSignal.first_lesson;
@@ -680,14 +683,14 @@ function buildInstallValueMoment(firstValueSignal = {}, status = {}, runtime = {
680
683
  'Captured this setup decision',
681
684
  'Closed the outcome successfully',
682
685
  'Runtime gate is ' + (firstValueSignal.active ? 'active' : 'installed'),
683
- runtimeLesson ? 'Future risky work now gets a pre-action brief' : 'Future risky work now gets checked before action',
686
+ runtime.intervention?.must_use_before_action ? 'Before-action intervention is active for risky work' : runtimeLesson ? 'Future risky work now gets a pre-action brief' : 'Future risky work now gets checked before action',
684
687
  ],
685
688
  fleet_signal: hasFleetSignal
686
689
  ? 'Marrow already found signal: ' + proof.join('; ') + '.'
687
690
  : 'Fresh account: Marrow will start building fleet memory from this first captured outcome.',
688
691
  try_this_now: 'Ask your agent: "I am about to deploy to production. What should I check first?"',
689
- expected_response: 'Marrow should answer with a risk gate, required proof, and any matching fleet lessons before the agent acts.',
690
- first_lesson: runtimeLesson || 'Marrow will surface prior lessons before risky or repeated work.',
692
+ expected_response: 'Marrow should answer with proceed/warn/block, required proof, and any matching prior lesson/playbook before the agent acts.',
693
+ first_lesson: runtimeLesson || 'Marrow will stop agents before risky or repeated work and surface the prior lesson/playbook.',
691
694
  };
692
695
  }
693
696
 
@@ -704,7 +707,7 @@ function buildFirstValueSignal(status, runtime, performance, firstValue = {}) {
704
707
  active: Boolean(firstValue.active),
705
708
  headline: `Marrow active: ${(capture.surfaces || ['decisions']).join(', ')} captured.`,
706
709
  captured: capture.surfaces || ['decisions'],
707
- first_lesson: firstValue.first_value.first_lesson,
710
+ first_lesson: firstValue.first_value.first_lesson || runtime?.intervention?.agent_copy,
708
711
  value_proof: proofBits,
709
712
  next_action: firstValue.next_action?.reason || 'Keep working; Marrow will capture outcomes and reuse lessons automatically.',
710
713
  };