@getmarrow/sdk 2.5.2 → 2.5.4
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 +110 -24
- package/dist/index.d.ts +132 -56
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +287 -36
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -18,49 +18,103 @@ Get your API key at [getmarrow.ai](https://getmarrow.ai)
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
## What's New in v2.4
|
|
21
|
+
## What's New in v2.5.4
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### Loop enforcement is live in the SDK
|
|
24
|
+
|
|
25
|
+
Marrow now helps agents run a real operating loop, not just log isolated thoughts after the fact.
|
|
26
|
+
|
|
27
|
+
You can now:
|
|
28
|
+
- start the session with `orient()`
|
|
29
|
+
- inspect loop state with `check()`
|
|
30
|
+
- enable enforcement with `enforce({ mode })`
|
|
31
|
+
- gate important work with `beforeAction()` / `afterAction()`
|
|
32
|
+
- wrap real actions with `wrap()` so intent/outcome stay connected
|
|
24
33
|
|
|
25
34
|
```typescript
|
|
26
|
-
const
|
|
35
|
+
const marrow = new MarrowClient(process.env.MARROW_API_KEY!);
|
|
36
|
+
|
|
37
|
+
marrow.enforce({ mode: 'warn' });
|
|
27
38
|
|
|
28
|
-
|
|
29
|
-
// → [{ decisionType: "implementation", failureRate: 0.23, count: 12, lastSeen: "2026-03-28T..." }]
|
|
39
|
+
await marrow.orient();
|
|
30
40
|
|
|
31
|
-
|
|
32
|
-
|
|
41
|
+
await marrow.think({
|
|
42
|
+
action: 'Deploy auth refactor to staging',
|
|
43
|
+
type: 'implementation',
|
|
44
|
+
});
|
|
33
45
|
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
await marrow.wrap(
|
|
47
|
+
{
|
|
48
|
+
action: 'Call deployment API',
|
|
49
|
+
type: 'implementation',
|
|
50
|
+
external: true,
|
|
51
|
+
result: 'Staging deploy succeeded',
|
|
52
|
+
},
|
|
53
|
+
async () => deployToStaging()
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
console.log(marrow.check().recommendedNext);
|
|
57
|
+
// → "done"
|
|
36
58
|
```
|
|
37
59
|
|
|
38
|
-
###
|
|
60
|
+
### Enforcement modes
|
|
39
61
|
|
|
40
|
-
|
|
41
|
-
|
|
62
|
+
- `off` — track state without nudges or blocking
|
|
63
|
+
- `warn` — default; remind agents to close the loop without blocking work
|
|
64
|
+
- `require` — block important external actions until intent is logged
|
|
65
|
+
- `auto` — auto-log intent/outcome around wrapped actions
|
|
42
66
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
67
|
+
### Also included in this release
|
|
68
|
+
|
|
69
|
+
- `think()` returns loop metadata alongside intelligence
|
|
70
|
+
- session-start guidance now nudges agents toward `marrow_think`
|
|
71
|
+
- `agentPatterns()` still surfaces failure patterns, recurring decisions, and behavioral drift
|
|
72
|
+
- `analytics()` still returns health score and performance breakdown
|
|
73
|
+
- `think()` still returns `sanitized` and `upgradeHint` when applicable
|
|
74
|
+
|
|
75
|
+
---
|
|
46
76
|
|
|
47
|
-
|
|
77
|
+
## Loop Enforcement
|
|
78
|
+
|
|
79
|
+
Marrow now helps agents actually close the loop instead of treating memory like decorative trim.
|
|
48
80
|
|
|
49
81
|
```typescript
|
|
50
|
-
const
|
|
51
|
-
|
|
82
|
+
const marrow = new MarrowClient(process.env.MARROW_API_KEY!);
|
|
83
|
+
|
|
84
|
+
marrow.enforce({ mode: 'warn' }); // default
|
|
85
|
+
|
|
86
|
+
await marrow.orient();
|
|
87
|
+
|
|
88
|
+
const intent = await marrow.think({
|
|
89
|
+
action: 'Deploy auth refactor to staging',
|
|
52
90
|
type: 'implementation',
|
|
53
91
|
});
|
|
54
92
|
|
|
55
|
-
|
|
56
|
-
|
|
93
|
+
await marrow.wrap(
|
|
94
|
+
{ action: 'Call deployment API', type: 'implementation', external: true, result: 'Staging deploy succeeded' },
|
|
95
|
+
async () => deployToStaging()
|
|
96
|
+
);
|
|
57
97
|
|
|
58
|
-
console.log(
|
|
59
|
-
// →
|
|
60
|
-
// → undefined if no upgrade hint
|
|
98
|
+
console.log(marrow.check().state.recommendedNext);
|
|
99
|
+
// → "done"
|
|
61
100
|
```
|
|
62
101
|
|
|
63
|
-
|
|
102
|
+
### Modes
|
|
103
|
+
- `off` — no loop enforcement
|
|
104
|
+
- `warn` — non-blocking reminders, default
|
|
105
|
+
- `require` — throws before important external actions if intent is missing, and reminds on incomplete exits
|
|
106
|
+
- `auto` — auto-logs intent/outcome around wrapped actions
|
|
107
|
+
|
|
108
|
+
### New SDK APIs
|
|
109
|
+
- `marrow.enforce({...})`
|
|
110
|
+
- `marrow.check()`
|
|
111
|
+
- `marrow.wrap(meta, fn)`
|
|
112
|
+
- `marrow.beforeAction(meta)`
|
|
113
|
+
- `marrow.afterAction(meta)`
|
|
114
|
+
|
|
115
|
+
### Session start copy
|
|
116
|
+
- `Tip: log plans, decisions, and outcomes to Marrow so your agent improves over time.`
|
|
117
|
+
- `You have not logged any decisions yet this session. Before acting, call marrow_think.`
|
|
64
118
|
|
|
65
119
|
## The Problem
|
|
66
120
|
|
|
@@ -271,3 +325,35 @@ npm install @getmarrow/sdk
|
|
|
271
325
|
---
|
|
272
326
|
|
|
273
327
|
*Works with Claude, GPT-4, Gemini, Llama, Mistral, and any model with a system prompt.*
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Privacy & Data
|
|
332
|
+
|
|
333
|
+
**What Marrow collects:**
|
|
334
|
+
- The `action` string and `type` you pass to `think()` and `commit()`
|
|
335
|
+
- The `outcome` you report — used to train collective intelligence
|
|
336
|
+
- Decision metadata: timestamps, success/failure, confidence scores
|
|
337
|
+
|
|
338
|
+
**What Marrow does NOT collect:**
|
|
339
|
+
- No PII (names, emails, user IDs, IP addresses)
|
|
340
|
+
- No conversation content or message history
|
|
341
|
+
- No code, credentials, or file contents
|
|
342
|
+
- No agent identity beyond your anonymous API key hash
|
|
343
|
+
|
|
344
|
+
**How data is anonymized:**
|
|
345
|
+
- All inputs are stripped of PII patterns before storage (emails, phone numbers, UUIDs matching user ID formats, IP addresses)
|
|
346
|
+
- Your API key is stored as a SHA-256 hash — never in plaintext
|
|
347
|
+
- Hive intelligence is aggregated across agents — individual decisions are never exposed to other users
|
|
348
|
+
- You can opt out of hive contribution at any time by setting `contributeToHive: false` in your client config
|
|
349
|
+
|
|
350
|
+
**Hive data model:**
|
|
351
|
+
- Decisions you log contribute anonymously to collective patterns
|
|
352
|
+
- No one can trace a pattern back to your agent or your account
|
|
353
|
+
- Enterprise plans include private org hive mode — your data never leaves your org
|
|
354
|
+
|
|
355
|
+
**Data retention:**
|
|
356
|
+
- Decision data: 30 days on Free tier, 90 days on Pro, unlimited on Enterprise
|
|
357
|
+
- You can delete all your data at any time via the dashboard or API
|
|
358
|
+
|
|
359
|
+
For full details, see our [Privacy Policy](https://getmarrow.ai/privacy).
|
package/dist/index.d.ts
CHANGED
|
@@ -5,80 +5,156 @@ export interface ActionableInsight {
|
|
|
5
5
|
severity: 'info' | 'warning' | 'critical';
|
|
6
6
|
count: number;
|
|
7
7
|
}
|
|
8
|
+
export type MarrowDecisionType = 'implementation' | 'security' | 'architecture' | 'process' | 'general';
|
|
9
|
+
export type MarrowEnforcementMode = 'off' | 'warn' | 'require' | 'auto';
|
|
10
|
+
export type MarrowLoopRecommendation = 'orient' | 'think' | 'act' | 'commit' | 'done';
|
|
11
|
+
export interface MarrowLoopState {
|
|
12
|
+
mode: MarrowEnforcementMode;
|
|
13
|
+
orientedAt: string | null;
|
|
14
|
+
lastThinkAt: string | null;
|
|
15
|
+
lastOutcomeAt: string | null;
|
|
16
|
+
hasIntentLog: boolean;
|
|
17
|
+
hasOutcomeLog: boolean;
|
|
18
|
+
actionCountSinceLastThink: number;
|
|
19
|
+
externalActionCountSinceLastThink: number;
|
|
20
|
+
lastDecisionId: string | null;
|
|
21
|
+
pendingDecisionId: string | null;
|
|
22
|
+
pendingAction: string | null;
|
|
23
|
+
inFlightAction: string | null;
|
|
24
|
+
lastActionAt: string | null;
|
|
25
|
+
recommendedNext: MarrowLoopRecommendation;
|
|
26
|
+
loopState: 'idle' | 'oriented' | 'intent_logged' | 'acting' | 'outcome_logged';
|
|
27
|
+
message: string | null;
|
|
28
|
+
hints: string[];
|
|
29
|
+
}
|
|
30
|
+
export interface MarrowCheckResult {
|
|
31
|
+
ok: boolean;
|
|
32
|
+
mode: MarrowEnforcementMode;
|
|
33
|
+
state: MarrowLoopState;
|
|
34
|
+
warnings: string[];
|
|
35
|
+
recommendedNext: MarrowLoopRecommendation;
|
|
36
|
+
shouldBlock: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface MarrowEnforceOptions {
|
|
39
|
+
mode?: MarrowEnforcementMode;
|
|
40
|
+
remindEveryActions?: number;
|
|
41
|
+
externalActions?: string[];
|
|
42
|
+
classifyExternal?: (meta: MarrowActionMeta) => boolean;
|
|
43
|
+
}
|
|
44
|
+
export interface MarrowActionMeta {
|
|
45
|
+
action: string;
|
|
46
|
+
type?: MarrowDecisionType;
|
|
47
|
+
external?: boolean;
|
|
48
|
+
name?: string;
|
|
49
|
+
context?: Record<string, unknown>;
|
|
50
|
+
result?: string;
|
|
51
|
+
success?: boolean;
|
|
52
|
+
causedBy?: string;
|
|
53
|
+
skipAutoOutcome?: boolean;
|
|
54
|
+
}
|
|
55
|
+
export interface MarrowOrientResult {
|
|
56
|
+
warnings: Array<{
|
|
57
|
+
type: string;
|
|
58
|
+
failureRate: number;
|
|
59
|
+
message: string;
|
|
60
|
+
}>;
|
|
61
|
+
lessons: Array<{
|
|
62
|
+
summary: string;
|
|
63
|
+
severity: string;
|
|
64
|
+
}>;
|
|
65
|
+
shouldPause: boolean;
|
|
66
|
+
loop: MarrowCheckResult;
|
|
67
|
+
recommendedNext: MarrowLoopRecommendation;
|
|
68
|
+
nudge: string | null;
|
|
69
|
+
text: string;
|
|
70
|
+
}
|
|
71
|
+
export interface MarrowThinkResult {
|
|
72
|
+
decisionId: string;
|
|
73
|
+
intelligence: {
|
|
74
|
+
similar: Array<{
|
|
75
|
+
outcome: string;
|
|
76
|
+
confidence: number;
|
|
77
|
+
}>;
|
|
78
|
+
similarCount: number;
|
|
79
|
+
patterns: Array<{
|
|
80
|
+
patternId: string;
|
|
81
|
+
decisionType: string;
|
|
82
|
+
frequency: number;
|
|
83
|
+
confidence: number;
|
|
84
|
+
}>;
|
|
85
|
+
patternsCount: number;
|
|
86
|
+
templates: Array<{
|
|
87
|
+
steps: unknown[];
|
|
88
|
+
success_rate: number;
|
|
89
|
+
}>;
|
|
90
|
+
shared: Array<{
|
|
91
|
+
outcome: string;
|
|
92
|
+
}>;
|
|
93
|
+
causalChain: unknown | null;
|
|
94
|
+
successRate: number;
|
|
95
|
+
priorityScore: number;
|
|
96
|
+
insight: string | null;
|
|
97
|
+
insights: ActionableInsight[];
|
|
98
|
+
clusterId: string | null;
|
|
99
|
+
};
|
|
100
|
+
streamUrl: string;
|
|
101
|
+
previousCommitted?: boolean;
|
|
102
|
+
sanitized: boolean;
|
|
103
|
+
upgradeHint?: {
|
|
104
|
+
message: string;
|
|
105
|
+
tier: string;
|
|
106
|
+
url: string;
|
|
107
|
+
};
|
|
108
|
+
acceptedAs: 'intent';
|
|
109
|
+
warnings: string[];
|
|
110
|
+
recommendedNext: MarrowLoopRecommendation;
|
|
111
|
+
loop: MarrowCheckResult;
|
|
112
|
+
summary: string;
|
|
113
|
+
}
|
|
114
|
+
export interface MarrowCommitResult {
|
|
115
|
+
committed: boolean;
|
|
116
|
+
successRate: number;
|
|
117
|
+
insight: string | null;
|
|
118
|
+
acceptedAs: 'outcome';
|
|
119
|
+
recommendedNext: MarrowLoopRecommendation;
|
|
120
|
+
loop: MarrowCheckResult;
|
|
121
|
+
summary: string;
|
|
122
|
+
}
|
|
123
|
+
export declare class MarrowLoopRequiredError extends Error {
|
|
124
|
+
readonly code = "MARROW_LOOP_REQUIRED";
|
|
125
|
+
readonly state: MarrowLoopState;
|
|
126
|
+
constructor(message: string, state: MarrowLoopState);
|
|
127
|
+
}
|
|
8
128
|
export declare class MarrowClient {
|
|
9
129
|
private apiKey;
|
|
10
130
|
private baseUrl;
|
|
11
131
|
private decisionId;
|
|
12
132
|
private orientWarnings;
|
|
133
|
+
private enforcement;
|
|
134
|
+
private loopState;
|
|
135
|
+
private reminderBudget;
|
|
13
136
|
constructor(apiKey: string, baseUrl?: string);
|
|
137
|
+
enforce(options?: MarrowEnforceOptions): MarrowCheckResult;
|
|
138
|
+
check(): MarrowCheckResult;
|
|
139
|
+
beforeAction(meta: MarrowActionMeta): Promise<MarrowCheckResult>;
|
|
140
|
+
afterAction(meta: MarrowActionMeta): Promise<MarrowCheckResult>;
|
|
141
|
+
wrap<T>(meta: MarrowActionMeta, fn: () => Promise<T> | T): Promise<T>;
|
|
14
142
|
think(params: {
|
|
15
143
|
action: string;
|
|
16
|
-
type?:
|
|
144
|
+
type?: MarrowDecisionType;
|
|
17
145
|
context?: Record<string, unknown>;
|
|
18
146
|
previousSuccess?: boolean;
|
|
19
147
|
previousOutcome?: string;
|
|
20
148
|
previousCausedBy?: string;
|
|
21
|
-
}): Promise<
|
|
22
|
-
decisionId: string;
|
|
23
|
-
intelligence: {
|
|
24
|
-
similar: Array<{
|
|
25
|
-
outcome: string;
|
|
26
|
-
confidence: number;
|
|
27
|
-
}>;
|
|
28
|
-
similarCount: number;
|
|
29
|
-
patterns: Array<{
|
|
30
|
-
patternId: string;
|
|
31
|
-
decisionType: string;
|
|
32
|
-
frequency: number;
|
|
33
|
-
confidence: number;
|
|
34
|
-
}>;
|
|
35
|
-
patternsCount: number;
|
|
36
|
-
templates: Array<{
|
|
37
|
-
steps: unknown[];
|
|
38
|
-
success_rate: number;
|
|
39
|
-
}>;
|
|
40
|
-
shared: Array<{
|
|
41
|
-
outcome: string;
|
|
42
|
-
}>;
|
|
43
|
-
causalChain: unknown | null;
|
|
44
|
-
successRate: number;
|
|
45
|
-
priorityScore: number;
|
|
46
|
-
insight: string | null;
|
|
47
|
-
insights: ActionableInsight[];
|
|
48
|
-
clusterId: string | null;
|
|
49
|
-
};
|
|
50
|
-
streamUrl: string;
|
|
51
|
-
previousCommitted?: boolean;
|
|
52
|
-
sanitized: boolean;
|
|
53
|
-
upgradeHint?: {
|
|
54
|
-
message: string;
|
|
55
|
-
tier: string;
|
|
56
|
-
url: string;
|
|
57
|
-
};
|
|
58
|
-
}>;
|
|
149
|
+
}): Promise<MarrowThinkResult>;
|
|
59
150
|
commit(params: {
|
|
60
151
|
success: boolean;
|
|
61
152
|
outcome: string;
|
|
62
153
|
causedBy?: string;
|
|
63
|
-
}): Promise<
|
|
64
|
-
committed: boolean;
|
|
65
|
-
successRate: number;
|
|
66
|
-
insight: string | null;
|
|
67
|
-
}>;
|
|
154
|
+
}): Promise<MarrowCommitResult>;
|
|
68
155
|
orient(params?: {
|
|
69
156
|
taskType?: string;
|
|
70
|
-
}): Promise<
|
|
71
|
-
warnings: Array<{
|
|
72
|
-
type: string;
|
|
73
|
-
failureRate: number;
|
|
74
|
-
message: string;
|
|
75
|
-
}>;
|
|
76
|
-
lessons: Array<{
|
|
77
|
-
summary: string;
|
|
78
|
-
severity: string;
|
|
79
|
-
}>;
|
|
80
|
-
shouldPause: boolean;
|
|
81
|
-
}>;
|
|
157
|
+
}): Promise<MarrowOrientResult>;
|
|
82
158
|
agentPatterns(params?: {
|
|
83
159
|
type?: string;
|
|
84
160
|
limit?: number;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,GAAG,iBAAiB,GAAG,cAAc,GAAG,YAAY,CAAC;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,218 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MarrowClient = void 0;
|
|
3
|
+
exports.MarrowClient = exports.MarrowLoopRequiredError = void 0;
|
|
4
|
+
class MarrowLoopRequiredError extends Error {
|
|
5
|
+
constructor(message, state) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.code = 'MARROW_LOOP_REQUIRED';
|
|
8
|
+
this.name = 'MarrowLoopRequiredError';
|
|
9
|
+
this.state = state;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.MarrowLoopRequiredError = MarrowLoopRequiredError;
|
|
13
|
+
const DEFAULT_HINT = 'Tip: log plans, decisions, and outcomes to Marrow so your agent improves over time.';
|
|
14
|
+
const POST_ORIENT_NUDGE = 'You have not logged any decisions yet this session. Before acting, call marrow_think.';
|
|
15
|
+
const PRE_EXIT_REMINDER = 'Before ending the session, log the outcome to Marrow so the loop closes cleanly.';
|
|
16
|
+
const REQUIRE_EXTERNAL_ERROR = 'Marrow require mode: log intent with marrow.think() before external actions.';
|
|
17
|
+
const REQUIRE_COMPLETION_ERROR = 'Marrow require mode: log the outcome with marrow.commit() before completing the session.';
|
|
18
|
+
function nowIso() {
|
|
19
|
+
return new Date().toISOString();
|
|
20
|
+
}
|
|
21
|
+
function cloneState(state) {
|
|
22
|
+
return {
|
|
23
|
+
...state,
|
|
24
|
+
hints: [...state.hints],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function safeErrorMessage(error) {
|
|
28
|
+
return error instanceof Error ? error.message : String(error);
|
|
29
|
+
}
|
|
4
30
|
class MarrowClient {
|
|
5
31
|
constructor(apiKey, baseUrl = 'https://api.getmarrow.ai') {
|
|
6
32
|
this.apiKey = apiKey;
|
|
7
33
|
this.baseUrl = baseUrl;
|
|
8
34
|
this.decisionId = null;
|
|
9
35
|
this.orientWarnings = [];
|
|
10
|
-
|
|
11
|
-
|
|
36
|
+
this.reminderBudget = {
|
|
37
|
+
noIntentHintShown: false,
|
|
38
|
+
outcomeReminderShown: false,
|
|
39
|
+
lastWarnedActionCount: -1,
|
|
40
|
+
};
|
|
12
41
|
if (typeof process !== 'undefined' && apiKey && apiKey.startsWith('mrw_')) {
|
|
13
42
|
const fromEnv = Object.values(process.env || {}).includes(apiKey);
|
|
14
43
|
if (!fromEnv) {
|
|
15
44
|
console.warn('[marrow] ⚠️ API key appears hardcoded. Use process.env.MARROW_API_KEY instead. See: https://getmarrow.ai/docs/security');
|
|
16
45
|
}
|
|
17
46
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
47
|
+
this.enforcement = {
|
|
48
|
+
mode: 'warn',
|
|
49
|
+
remindEveryActions: 3,
|
|
50
|
+
externalActions: ['http', 'fetch', 'api', 'deploy', 'publish', 'send', 'email', 'message', 'payment', 'write', 'delete', 'update', 'create'],
|
|
51
|
+
classifyExternal: (meta) => {
|
|
52
|
+
if (meta.external !== undefined)
|
|
53
|
+
return meta.external;
|
|
54
|
+
const haystack = `${meta.name || ''} ${meta.action}`.toLowerCase();
|
|
55
|
+
return this.enforcement.externalActions.some(keyword => haystack.includes(keyword));
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
this.loopState = {
|
|
59
|
+
mode: this.enforcement.mode,
|
|
60
|
+
orientedAt: null,
|
|
61
|
+
lastThinkAt: null,
|
|
62
|
+
lastOutcomeAt: null,
|
|
63
|
+
hasIntentLog: false,
|
|
64
|
+
hasOutcomeLog: false,
|
|
65
|
+
actionCountSinceLastThink: 0,
|
|
66
|
+
externalActionCountSinceLastThink: 0,
|
|
67
|
+
lastDecisionId: null,
|
|
68
|
+
pendingDecisionId: null,
|
|
69
|
+
pendingAction: null,
|
|
70
|
+
inFlightAction: null,
|
|
71
|
+
lastActionAt: null,
|
|
72
|
+
recommendedNext: 'orient',
|
|
73
|
+
loopState: 'idle',
|
|
74
|
+
message: DEFAULT_HINT,
|
|
75
|
+
hints: [DEFAULT_HINT],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
enforce(options = {}) {
|
|
79
|
+
this.enforcement = {
|
|
80
|
+
...this.enforcement,
|
|
81
|
+
...options,
|
|
82
|
+
mode: options.mode || this.enforcement.mode,
|
|
83
|
+
remindEveryActions: options.remindEveryActions ?? this.enforcement.remindEveryActions,
|
|
84
|
+
externalActions: options.externalActions ?? this.enforcement.externalActions,
|
|
85
|
+
classifyExternal: options.classifyExternal ?? this.enforcement.classifyExternal,
|
|
86
|
+
};
|
|
87
|
+
this.loopState.mode = this.enforcement.mode;
|
|
88
|
+
return this.check();
|
|
89
|
+
}
|
|
90
|
+
check() {
|
|
91
|
+
const state = cloneState(this.loopState);
|
|
92
|
+
const warnings = [];
|
|
93
|
+
let shouldBlock = false;
|
|
94
|
+
if (state.mode === 'off') {
|
|
95
|
+
state.message = null;
|
|
96
|
+
state.hints = [];
|
|
97
|
+
return {
|
|
98
|
+
ok: true,
|
|
99
|
+
mode: state.mode,
|
|
100
|
+
state,
|
|
101
|
+
warnings: [],
|
|
102
|
+
recommendedNext: state.recommendedNext,
|
|
103
|
+
shouldBlock: false,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (!state.orientedAt) {
|
|
107
|
+
warnings.push(DEFAULT_HINT);
|
|
108
|
+
state.recommendedNext = 'orient';
|
|
109
|
+
state.loopState = 'idle';
|
|
110
|
+
state.message = DEFAULT_HINT;
|
|
111
|
+
}
|
|
112
|
+
else if (state.hasOutcomeLog) {
|
|
113
|
+
state.recommendedNext = 'done';
|
|
114
|
+
state.loopState = 'outcome_logged';
|
|
115
|
+
state.message = 'Loop closed. Ready for the next task.';
|
|
116
|
+
}
|
|
117
|
+
else if (!state.hasIntentLog) {
|
|
118
|
+
warnings.push(POST_ORIENT_NUDGE);
|
|
119
|
+
state.recommendedNext = 'think';
|
|
120
|
+
state.loopState = 'oriented';
|
|
121
|
+
state.message = POST_ORIENT_NUDGE;
|
|
122
|
+
}
|
|
123
|
+
else if (state.hasIntentLog && !state.hasOutcomeLog && state.actionCountSinceLastThink > 0) {
|
|
124
|
+
state.recommendedNext = 'commit';
|
|
125
|
+
state.loopState = 'acting';
|
|
126
|
+
state.message = PRE_EXIT_REMINDER;
|
|
127
|
+
if (state.externalActionCountSinceLastThink > 0)
|
|
128
|
+
warnings.push(PRE_EXIT_REMINDER);
|
|
129
|
+
}
|
|
130
|
+
else if (state.hasIntentLog && !state.hasOutcomeLog) {
|
|
131
|
+
state.recommendedNext = 'act';
|
|
132
|
+
state.loopState = 'intent_logged';
|
|
133
|
+
state.message = 'Intent logged. Act, then log the outcome.';
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
state.recommendedNext = state.hasOutcomeLog ? 'done' : 'act';
|
|
137
|
+
state.loopState = state.hasOutcomeLog ? 'outcome_logged' : 'intent_logged';
|
|
138
|
+
state.message = state.hasOutcomeLog ? 'Loop closed. Ready for the next task.' : state.message;
|
|
139
|
+
}
|
|
140
|
+
if (state.mode === 'require' && state.hasIntentLog && !state.hasOutcomeLog && state.externalActionCountSinceLastThink > 0) {
|
|
141
|
+
warnings.push(REQUIRE_COMPLETION_ERROR);
|
|
142
|
+
shouldBlock = true;
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
ok: !shouldBlock,
|
|
146
|
+
mode: state.mode,
|
|
147
|
+
state,
|
|
148
|
+
warnings,
|
|
149
|
+
recommendedNext: state.recommendedNext,
|
|
150
|
+
shouldBlock,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
async beforeAction(meta) {
|
|
154
|
+
const isExternal = this.enforcement.classifyExternal(meta);
|
|
155
|
+
const actionTime = nowIso();
|
|
156
|
+
if (this.enforcement.mode === 'auto' && !this.loopState.hasIntentLog) {
|
|
157
|
+
await this.think({
|
|
158
|
+
action: meta.action,
|
|
159
|
+
type: meta.type || 'general',
|
|
160
|
+
context: meta.context,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
if (this.enforcement.mode === 'require' && isExternal && !this.loopState.hasIntentLog) {
|
|
164
|
+
throw new MarrowLoopRequiredError(REQUIRE_EXTERNAL_ERROR, cloneState(this.loopState));
|
|
165
|
+
}
|
|
166
|
+
this.loopState.lastActionAt = actionTime;
|
|
167
|
+
this.loopState.inFlightAction = meta.action;
|
|
168
|
+
this.loopState.actionCountSinceLastThink += 1;
|
|
169
|
+
if (isExternal)
|
|
170
|
+
this.loopState.externalActionCountSinceLastThink += 1;
|
|
171
|
+
if (this.enforcement.mode === 'off') {
|
|
172
|
+
return this.check();
|
|
173
|
+
}
|
|
174
|
+
const check = this.check();
|
|
175
|
+
const shouldWarn = this.enforcement.mode === 'warn'
|
|
176
|
+
&& !this.loopState.hasIntentLog
|
|
177
|
+
&& this.loopState.actionCountSinceLastThink >= this.enforcement.remindEveryActions
|
|
178
|
+
&& this.reminderBudget.lastWarnedActionCount !== this.loopState.actionCountSinceLastThink;
|
|
179
|
+
if (shouldWarn) {
|
|
180
|
+
this.reminderBudget.lastWarnedActionCount = this.loopState.actionCountSinceLastThink;
|
|
181
|
+
check.warnings.push(POST_ORIENT_NUDGE);
|
|
182
|
+
}
|
|
183
|
+
return check;
|
|
184
|
+
}
|
|
185
|
+
async afterAction(meta) {
|
|
186
|
+
if (this.enforcement.mode === 'auto' && this.loopState.pendingDecisionId && !meta.skipAutoOutcome) {
|
|
187
|
+
await this.commit({
|
|
188
|
+
success: meta.success ?? true,
|
|
189
|
+
outcome: meta.result || 'Action completed',
|
|
190
|
+
causedBy: meta.causedBy,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
this.loopState.inFlightAction = null;
|
|
194
|
+
return this.check();
|
|
195
|
+
}
|
|
196
|
+
async wrap(meta, fn) {
|
|
197
|
+
await this.beforeAction(meta);
|
|
198
|
+
try {
|
|
199
|
+
const result = await fn();
|
|
200
|
+
await this.afterAction({
|
|
201
|
+
...meta,
|
|
202
|
+
success: meta.success ?? true,
|
|
203
|
+
result: meta.result || 'Action completed successfully',
|
|
204
|
+
});
|
|
205
|
+
return result;
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
await this.afterAction({
|
|
209
|
+
...meta,
|
|
210
|
+
success: false,
|
|
211
|
+
result: meta.result || safeErrorMessage(error),
|
|
212
|
+
});
|
|
213
|
+
throw error;
|
|
214
|
+
}
|
|
21
215
|
}
|
|
22
|
-
// PRIMARY METHOD — call before every agent action
|
|
23
216
|
async think(params) {
|
|
24
217
|
const body = {
|
|
25
218
|
action: params.action,
|
|
@@ -36,7 +229,6 @@ class MarrowClient {
|
|
|
36
229
|
const res = await this.request('POST', '/v1/agent/think', body);
|
|
37
230
|
this.decisionId = res.decision_id;
|
|
38
231
|
const intel = (res.intelligence || {});
|
|
39
|
-
// Inject cached orient warnings into insights on first think() call
|
|
40
232
|
if (this.orientWarnings.length > 0) {
|
|
41
233
|
const existingInsights = intel.insights || [];
|
|
42
234
|
intel.insights = [
|
|
@@ -49,36 +241,64 @@ class MarrowClient {
|
|
|
49
241
|
})),
|
|
50
242
|
...existingInsights,
|
|
51
243
|
];
|
|
52
|
-
this.orientWarnings = [];
|
|
244
|
+
this.orientWarnings = [];
|
|
53
245
|
}
|
|
246
|
+
this.loopState.orientedAt = this.loopState.orientedAt || nowIso();
|
|
247
|
+
this.loopState.lastThinkAt = nowIso();
|
|
248
|
+
this.loopState.hasIntentLog = true;
|
|
249
|
+
this.loopState.hasOutcomeLog = false;
|
|
250
|
+
this.loopState.actionCountSinceLastThink = 0;
|
|
251
|
+
this.loopState.externalActionCountSinceLastThink = 0;
|
|
252
|
+
this.loopState.pendingDecisionId = this.decisionId;
|
|
253
|
+
this.loopState.lastDecisionId = this.decisionId;
|
|
254
|
+
this.loopState.pendingAction = params.action;
|
|
255
|
+
this.loopState.recommendedNext = 'act';
|
|
256
|
+
this.loopState.loopState = 'intent_logged';
|
|
257
|
+
this.loopState.message = 'Intent logged. Act, then log the outcome.';
|
|
258
|
+
this.loopState.hints = [this.loopState.message];
|
|
259
|
+
this.reminderBudget.noIntentHintShown = true;
|
|
260
|
+
this.reminderBudget.outcomeReminderShown = false;
|
|
261
|
+
this.reminderBudget.lastWarnedActionCount = -1;
|
|
262
|
+
const intelligence = {
|
|
263
|
+
similar: intel.similar || [],
|
|
264
|
+
similarCount: intel.similar_count || 0,
|
|
265
|
+
patterns: (intel.patterns || []).map(p => ({
|
|
266
|
+
patternId: (p.pattern_id || p.id || ''),
|
|
267
|
+
decisionType: (p.decision_type || ''),
|
|
268
|
+
frequency: (p.frequency || 0),
|
|
269
|
+
confidence: (p.confidence || 0),
|
|
270
|
+
})),
|
|
271
|
+
patternsCount: intel.patterns_count || 0,
|
|
272
|
+
templates: intel.templates || [],
|
|
273
|
+
shared: intel.shared || [],
|
|
274
|
+
causalChain: intel.causal_chain || null,
|
|
275
|
+
successRate: intel.success_rate || 0,
|
|
276
|
+
priorityScore: intel.priority_score || 0,
|
|
277
|
+
insight: intel.insight || null,
|
|
278
|
+
insights: intel.insights || [],
|
|
279
|
+
clusterId: intel.cluster_id || null,
|
|
280
|
+
};
|
|
281
|
+
const loop = this.check();
|
|
282
|
+
const warnings = [...loop.warnings];
|
|
283
|
+
const summary = [
|
|
284
|
+
'Intent logged to Marrow.',
|
|
285
|
+
intelligence.insight ? `Pattern hint: ${intelligence.insight}` : intelligence.insights[0]?.summary ? `Pattern hint: ${intelligence.insights[0].summary}` : null,
|
|
286
|
+
`Recommended next step: ${loop.recommendedNext}.`,
|
|
287
|
+
].filter(Boolean).join(' ');
|
|
54
288
|
return {
|
|
55
289
|
decisionId: res.decision_id,
|
|
56
|
-
intelligence
|
|
57
|
-
similar: intel.similar || [],
|
|
58
|
-
similarCount: intel.similar_count || 0,
|
|
59
|
-
patterns: (intel.patterns || []).map(p => ({
|
|
60
|
-
patternId: (p.pattern_id || p.id || ''),
|
|
61
|
-
decisionType: (p.decision_type || ''),
|
|
62
|
-
frequency: (p.frequency || 0),
|
|
63
|
-
confidence: (p.confidence || 0),
|
|
64
|
-
})),
|
|
65
|
-
patternsCount: intel.patterns_count || 0,
|
|
66
|
-
templates: intel.templates || [],
|
|
67
|
-
shared: intel.shared || [],
|
|
68
|
-
causalChain: intel.causal_chain || null,
|
|
69
|
-
successRate: intel.success_rate || 0,
|
|
70
|
-
priorityScore: intel.priority_score || 0,
|
|
71
|
-
insight: intel.insight || null,
|
|
72
|
-
insights: intel.insights || [],
|
|
73
|
-
clusterId: intel.cluster_id || null,
|
|
74
|
-
},
|
|
290
|
+
intelligence,
|
|
75
291
|
streamUrl: res.stream_url,
|
|
76
292
|
previousCommitted: res.previous_committed,
|
|
77
293
|
sanitized: Boolean(res.sanitized),
|
|
78
294
|
upgradeHint: res.upgrade_hint ? res.upgrade_hint : undefined,
|
|
295
|
+
acceptedAs: 'intent',
|
|
296
|
+
warnings,
|
|
297
|
+
recommendedNext: loop.recommendedNext,
|
|
298
|
+
loop,
|
|
299
|
+
summary,
|
|
79
300
|
};
|
|
80
301
|
}
|
|
81
|
-
// Explicit commit (optional — think() auto-commits on next call)
|
|
82
302
|
async commit(params) {
|
|
83
303
|
if (!this.decisionId)
|
|
84
304
|
throw new Error('No active decision. Call think() first.');
|
|
@@ -89,15 +309,32 @@ class MarrowClient {
|
|
|
89
309
|
caused_by: params.causedBy,
|
|
90
310
|
});
|
|
91
311
|
this.decisionId = null;
|
|
312
|
+
this.loopState.lastOutcomeAt = nowIso();
|
|
313
|
+
this.loopState.hasOutcomeLog = true;
|
|
314
|
+
this.loopState.hasIntentLog = false;
|
|
315
|
+
this.loopState.pendingDecisionId = null;
|
|
316
|
+
this.loopState.pendingAction = null;
|
|
317
|
+
this.loopState.recommendedNext = 'done';
|
|
318
|
+
this.loopState.loopState = 'outcome_logged';
|
|
319
|
+
this.loopState.message = 'Loop closed. Ready for the next task.';
|
|
320
|
+
this.loopState.hints = [this.loopState.message];
|
|
321
|
+
this.reminderBudget.outcomeReminderShown = true;
|
|
322
|
+
const loop = this.check();
|
|
323
|
+
const summary = [
|
|
324
|
+
'Outcome logged to Marrow.',
|
|
325
|
+
res.insight ? `Pattern hint: ${String(res.insight)}` : null,
|
|
326
|
+
'Loop closed.',
|
|
327
|
+
].filter(Boolean).join(' ');
|
|
92
328
|
return {
|
|
93
329
|
committed: res.committed,
|
|
94
330
|
successRate: res.success_rate,
|
|
95
331
|
insight: res.insight,
|
|
332
|
+
acceptedAs: 'outcome',
|
|
333
|
+
recommendedNext: loop.recommendedNext,
|
|
334
|
+
loop,
|
|
335
|
+
summary,
|
|
96
336
|
};
|
|
97
337
|
}
|
|
98
|
-
// Session orientation — call this FIRST at every session start before any action.
|
|
99
|
-
// Returns failure patterns + lessons so agent avoids known mistakes immediately.
|
|
100
|
-
// This is the method that makes Marrow compound — write-only = useless, orient() closes the loop.
|
|
101
338
|
async orient(params) {
|
|
102
339
|
const patterns = await this.agentPatterns(params?.taskType ? { type: params.taskType } : undefined);
|
|
103
340
|
const warnings = patterns.failurePatterns
|
|
@@ -107,7 +344,6 @@ class MarrowClient {
|
|
|
107
344
|
failureRate: p.failureRate,
|
|
108
345
|
message: `${p.decisionType} has ${Math.round(p.failureRate * 100)}% failure rate over ${p.count} decisions — check lessons before proceeding`,
|
|
109
346
|
}));
|
|
110
|
-
// Pull recent lessons from think() logs
|
|
111
347
|
let lessons = [];
|
|
112
348
|
try {
|
|
113
349
|
const res = await this.request('GET', `/v1/agent/think/history?type=lesson&limit=5`);
|
|
@@ -118,13 +354,30 @@ class MarrowClient {
|
|
|
118
354
|
}));
|
|
119
355
|
}
|
|
120
356
|
catch { /* lessons endpoint optional */ }
|
|
357
|
+
this.loopState.orientedAt = nowIso();
|
|
358
|
+
this.loopState.recommendedNext = this.loopState.hasIntentLog ? 'act' : 'think';
|
|
359
|
+
this.loopState.loopState = this.loopState.hasIntentLog ? 'intent_logged' : 'oriented';
|
|
360
|
+
this.loopState.message = this.loopState.hasIntentLog ? 'Intent already logged. Proceed or log the outcome when done.' : POST_ORIENT_NUDGE;
|
|
361
|
+
this.loopState.hints = [DEFAULT_HINT, this.loopState.message];
|
|
362
|
+
const loop = this.check();
|
|
363
|
+
const nudge = this.loopState.hasIntentLog ? null : POST_ORIENT_NUDGE;
|
|
364
|
+
const text = [
|
|
365
|
+
DEFAULT_HINT,
|
|
366
|
+
nudge,
|
|
367
|
+
warnings[0]?.message ? `Warning: ${warnings[0].message}` : null,
|
|
368
|
+
lessons[0]?.summary ? `Recent lesson: ${lessons[0].summary}` : null,
|
|
369
|
+
`Recommended next step: ${loop.recommendedNext}.`,
|
|
370
|
+
].filter(Boolean).join(' ');
|
|
121
371
|
return {
|
|
122
372
|
warnings,
|
|
123
373
|
lessons,
|
|
124
374
|
shouldPause: warnings.some(w => w.failureRate > 0.4),
|
|
375
|
+
loop,
|
|
376
|
+
recommendedNext: loop.recommendedNext,
|
|
377
|
+
nudge,
|
|
378
|
+
text,
|
|
125
379
|
};
|
|
126
380
|
}
|
|
127
|
-
// Agent pattern analysis — failure patterns, recurring decisions, behavioral drift
|
|
128
381
|
async agentPatterns(params) {
|
|
129
382
|
const qs = new URLSearchParams();
|
|
130
383
|
if (params?.type)
|
|
@@ -140,7 +393,6 @@ class MarrowClient {
|
|
|
140
393
|
generatedAt: String(res.generated_at || ''),
|
|
141
394
|
};
|
|
142
395
|
}
|
|
143
|
-
// Analytics — health score, trends, performance breakdown
|
|
144
396
|
async analytics() {
|
|
145
397
|
const res = await this.request('GET', '/v1/analytics');
|
|
146
398
|
const hs = (res.health_score || {});
|
|
@@ -155,7 +407,6 @@ class MarrowClient {
|
|
|
155
407
|
},
|
|
156
408
|
};
|
|
157
409
|
}
|
|
158
|
-
// Raw request helper
|
|
159
410
|
async request(method, path, body) {
|
|
160
411
|
const res = await fetch(`${this.baseUrl}${path}`, {
|
|
161
412
|
method,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getmarrow/sdk",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.4",
|
|
4
4
|
"description": "Your go-to memory provider for all agents, for any AI model.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
8
8
|
"build": "tsc",
|
|
9
|
-
"test": "node
|
|
9
|
+
"test": "npm run build && node --test test/*.test.js",
|
|
10
|
+
"prepublishOnly": "npm test"
|
|
10
11
|
},
|
|
11
12
|
"keywords": [
|
|
12
13
|
"ai",
|