greprag 5.44.3 → 5.46.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/dist/commands/collision-check.d.ts +113 -0
- package/dist/commands/collision-check.js +266 -0
- package/dist/commands/collision-check.js.map +1 -0
- package/dist/commands/coordinate-gate.d.ts +73 -0
- package/dist/commands/coordinate-gate.js +108 -0
- package/dist/commands/coordinate-gate.js.map +1 -0
- package/dist/commands/corpus/refresh.js +1 -1
- package/dist/commands/corpus/refresh.js.map +1 -1
- package/dist/commands/email.js +20 -2
- package/dist/commands/email.js.map +1 -1
- package/dist/commands/fix.d.ts +20 -2
- package/dist/commands/fix.js +21 -4
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/inbox-drain.d.ts +49 -0
- package/dist/commands/inbox-drain.js +163 -0
- package/dist/commands/inbox-drain.js.map +1 -0
- package/dist/commands/inbox-poll.d.ts +47 -0
- package/dist/commands/inbox-poll.js +261 -0
- package/dist/commands/inbox-poll.js.map +1 -0
- package/dist/commands/inbox-watch.js +3 -0
- package/dist/commands/inbox-watch.js.map +1 -1
- package/dist/commands/ingress-trigger.d.ts +67 -0
- package/dist/commands/ingress-trigger.js +103 -0
- package/dist/commands/ingress-trigger.js.map +1 -0
- package/dist/commands/init.js +41 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mechanic.d.ts +18 -0
- package/dist/commands/mechanic.js +77 -9
- package/dist/commands/mechanic.js.map +1 -1
- package/dist/commands/memory-format.d.ts +11 -2
- package/dist/commands/memory-format.js +22 -8
- package/dist/commands/memory-format.js.map +1 -1
- package/dist/commands/memory.d.ts +44 -0
- package/dist/commands/memory.js +73 -9
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/poll-registry.d.ts +13 -0
- package/dist/commands/poll-registry.js +94 -0
- package/dist/commands/poll-registry.js.map +1 -0
- package/dist/commands/state-trigger.d.ts +66 -0
- package/dist/commands/state-trigger.js +305 -0
- package/dist/commands/state-trigger.js.map +1 -0
- package/dist/fix-trigger.d.ts +25 -5
- package/dist/fix-trigger.js +35 -11
- package/dist/fix-trigger.js.map +1 -1
- package/dist/guard.d.ts +13 -0
- package/dist/guard.js +58 -3
- package/dist/guard.js.map +1 -1
- package/dist/hook.js +188 -1
- package/dist/hook.js.map +1 -1
- package/dist/inbox-attachments.d.ts +37 -0
- package/dist/inbox-attachments.js +64 -0
- package/dist/inbox-attachments.js.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/session-id.d.ts +12 -0
- package/dist/session-id.js +17 -0
- package/dist/session-id.js.map +1 -1
- package/dist/worktree-state.d.ts +14 -0
- package/dist/worktree-state.js +61 -0
- package/dist/worktree-state.js.map +1 -0
- package/package.json +1 -1
- package/skill/greprag/SKILL.md +4 -0
- package/skill/mechanic/SKILL.md +22 -10
- package/skill/templates/chip-spawn.md +1 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** state-trigger — Adapter A of the ingress-trigger bridge (the LOCAL half).
|
|
3
|
+
*
|
|
4
|
+
* A Stop / UserPromptSubmit hook computes the cheap DETERMINISTIC state values
|
|
5
|
+
* (stress level, turn count, keyword-seen) from the transcript — NO LLM, NO
|
|
6
|
+
* network — and stashes them in the matchset cache under `stateValues` (see
|
|
7
|
+
* guard.writeStateValues). A `source:"state"` condition clause then reads them on
|
|
8
|
+
* the PreToolUse hot path in microseconds, still local, still fail-open. This is
|
|
9
|
+
* what lets stress migrate from an offline-only backtest signal to a registered,
|
|
10
|
+
* live-firing matchset rule. docs/ingress-trigger-bridge.md, docs/stress-trigger.md
|
|
11
|
+
*
|
|
12
|
+
* STRESS PORT: a faithful TypeScript port of scripts/stress-tune2.py's windowed
|
|
13
|
+
* behavioral composite (the validated winner — AUC 0.835 full / 0.794
|
|
14
|
+
* behavioral-only on 1,069 real turns). Features rep / retry / seqrep / err /
|
|
15
|
+
* churn are streamed over the trailing window exactly as the Python maintains its
|
|
16
|
+
* deques, and the FINAL turn's vector is the live stress reading. Weights +
|
|
17
|
+
* level thresholds are PINNED from that backtest and re-tunable via the script;
|
|
18
|
+
* this module never re-derives them. docs/stress-trigger.md
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.STRESS_HIGH = exports.STRESS_ELEVATED = exports.STRESS_CALM = void 0;
|
|
55
|
+
exports.parseTurns = parseTurns;
|
|
56
|
+
exports.computeStress = computeStress;
|
|
57
|
+
exports.scanKeywords = scanKeywords;
|
|
58
|
+
exports.computeStateValues = computeStateValues;
|
|
59
|
+
const fs = __importStar(require("fs"));
|
|
60
|
+
/** Stress level enum, encoded numerically so the `state` DSL can threshold it
|
|
61
|
+
* with gte/lte (0 calm · 1 elevated · 2 high). */
|
|
62
|
+
exports.STRESS_CALM = 0;
|
|
63
|
+
exports.STRESS_ELEVATED = 1;
|
|
64
|
+
exports.STRESS_HIGH = 2;
|
|
65
|
+
/** PINNED weight vector (rep, retry, seqrep, err, churn), from the stress-tune2
|
|
66
|
+
* backtest narrative: same-TARGET repetition (rep) + errors (err) are the sharp
|
|
67
|
+
* signals; churn + retry corroborate. seqrep (tool-NAME trigram repetition) is
|
|
68
|
+
* deliberately the WEAKEST — it saturates on any sustained tool use (six Reads in
|
|
69
|
+
* a row repeats the (Read,Read,Read) trigram), so a heavy weight would flag
|
|
70
|
+
* ordinary work as stress. Re-tune via scripts/stress-tune2.py, never inline. */
|
|
71
|
+
const STRESS_WEIGHTS = { rep: 0.75, retry: 0.5, seqrep: 0.25, err: 0.75, churn: 0.5 };
|
|
72
|
+
/** PINNED level thresholds on the composite score: tuned so seqrep ALONE (≈0.25)
|
|
73
|
+
* can't reach elevated — it takes real repetition/errors/churn. Same provenance. */
|
|
74
|
+
const STRESS_ELEVATED_AT = 0.6;
|
|
75
|
+
const STRESS_HIGH_AT = 1.1;
|
|
76
|
+
const WINDOW = 4; // recent-turn window (W in stress-tune2.py)
|
|
77
|
+
const SEEN_MAX = 12;
|
|
78
|
+
const NAMESEQ_MAX = 9;
|
|
79
|
+
const TRIGRAM_MAX = 20;
|
|
80
|
+
const ERROR_RE = /\b(error|failed|exception|traceback|exit code [1-9]|not found|no such)\b/i;
|
|
81
|
+
// ---------- Transcript → turns ----------------------------------------------
|
|
82
|
+
function blocks(rec) {
|
|
83
|
+
const msg = (rec.message || {});
|
|
84
|
+
const c = msg.content;
|
|
85
|
+
if (Array.isArray(c))
|
|
86
|
+
return c;
|
|
87
|
+
if (typeof c === 'string')
|
|
88
|
+
return [{ type: 'text', text: c }];
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
function isRealUser(rec) {
|
|
92
|
+
if (rec.type !== 'user')
|
|
93
|
+
return false;
|
|
94
|
+
for (const b of blocks(rec)) {
|
|
95
|
+
if (b && b.type === 'tool_result')
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
function toolTargetKey(b) {
|
|
101
|
+
const name = b.name || '';
|
|
102
|
+
const inp = (b.input || {});
|
|
103
|
+
let key = (inp.command ?? inp.file_path ?? inp.pattern ?? inp.path);
|
|
104
|
+
if (typeof key !== 'string') {
|
|
105
|
+
try {
|
|
106
|
+
key = JSON.stringify(inp).slice(0, 120);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
key = '';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return `${name}:${key}`;
|
|
113
|
+
}
|
|
114
|
+
function resultIsError(b) {
|
|
115
|
+
if (b.is_error === true)
|
|
116
|
+
return true;
|
|
117
|
+
const c = b.content;
|
|
118
|
+
let txt = '';
|
|
119
|
+
if (typeof c === 'string')
|
|
120
|
+
txt = c;
|
|
121
|
+
else if (c) {
|
|
122
|
+
try {
|
|
123
|
+
txt = JSON.stringify(c);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
txt = '';
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return ERROR_RE.test(txt);
|
|
130
|
+
}
|
|
131
|
+
/** Parse the transcript into per-turn summaries. Returns the TRAILING `maxTurns`
|
|
132
|
+
* turns (enough for every short-memory deque) plus the total real-user turn
|
|
133
|
+
* count. Bounded memory: older turns are dropped as they fall out of the window.
|
|
134
|
+
* Best-effort: a missing/corrupt transcript → empty. */
|
|
135
|
+
function parseTurns(transcriptPath, maxTurns = 40) {
|
|
136
|
+
if (!transcriptPath)
|
|
137
|
+
return { turns: [], totalTurns: 0 };
|
|
138
|
+
let lines;
|
|
139
|
+
try {
|
|
140
|
+
lines = fs.readFileSync(transcriptPath, 'utf-8').split('\n');
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return { turns: [], totalTurns: 0 };
|
|
144
|
+
}
|
|
145
|
+
const turns = [];
|
|
146
|
+
let total = 0;
|
|
147
|
+
let cur = null;
|
|
148
|
+
const flush = () => {
|
|
149
|
+
if (cur) {
|
|
150
|
+
turns.push(cur);
|
|
151
|
+
if (turns.length > maxTurns)
|
|
152
|
+
turns.shift();
|
|
153
|
+
}
|
|
154
|
+
cur = null;
|
|
155
|
+
};
|
|
156
|
+
for (const line of lines) {
|
|
157
|
+
const trimmed = line.trim();
|
|
158
|
+
if (!trimmed)
|
|
159
|
+
continue;
|
|
160
|
+
let rec;
|
|
161
|
+
try {
|
|
162
|
+
rec = JSON.parse(trimmed);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (isRealUser(rec)) {
|
|
168
|
+
flush();
|
|
169
|
+
total++;
|
|
170
|
+
cur = { proseWords: 0, toolTargets: [], errors: 0, nTools: 0, writes: [] };
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (!cur)
|
|
174
|
+
continue; // pre-first-prompt noise
|
|
175
|
+
if (rec.type === 'assistant') {
|
|
176
|
+
for (const b of blocks(rec)) {
|
|
177
|
+
if (!b)
|
|
178
|
+
continue;
|
|
179
|
+
if (b.type === 'text') {
|
|
180
|
+
cur.proseWords += String(b.text || '').split(/\s+/).filter(Boolean).length;
|
|
181
|
+
}
|
|
182
|
+
else if (b.type === 'tool_use') {
|
|
183
|
+
cur.nTools++;
|
|
184
|
+
cur.toolTargets.push(toolTargetKey(b));
|
|
185
|
+
if (b.name === 'Edit' || b.name === 'Write') {
|
|
186
|
+
const fp = (b.input || {}).file_path;
|
|
187
|
+
if (typeof fp === 'string' && fp)
|
|
188
|
+
cur.writes.push(fp);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
else if (rec.type === 'user') { // tool_result records
|
|
194
|
+
for (const b of blocks(rec)) {
|
|
195
|
+
if (b && b.type === 'tool_result' && resultIsError(b))
|
|
196
|
+
cur.errors++;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
flush();
|
|
201
|
+
return { turns, totalTurns: total };
|
|
202
|
+
}
|
|
203
|
+
/** Stream the windowed behavioral features over the turns and score the FINAL
|
|
204
|
+
* one — the live stress reading. Faithful port of stress-tune2.py
|
|
205
|
+
* features_and_labels (rep / retry / seqrep / err / churn), scored with the
|
|
206
|
+
* pinned weight vector and mapped to a 0/1/2 level. Pure. */
|
|
207
|
+
function computeStress(turns) {
|
|
208
|
+
if (turns.length === 0)
|
|
209
|
+
return { score: 0, level: exports.STRESS_CALM };
|
|
210
|
+
const seen = [];
|
|
211
|
+
const recent = [];
|
|
212
|
+
const nameSeq = [];
|
|
213
|
+
const trigrams = [];
|
|
214
|
+
let prevTargets = new Set();
|
|
215
|
+
let last = { rep: 0, retry: 0, seqrep: 0, err: 0, churn: 0 };
|
|
216
|
+
const pushCap = (arr, v, cap) => {
|
|
217
|
+
arr.push(v);
|
|
218
|
+
if (arr.length > cap)
|
|
219
|
+
arr.shift();
|
|
220
|
+
};
|
|
221
|
+
for (const t of turns) {
|
|
222
|
+
recent.push(t);
|
|
223
|
+
if (recent.length > WINDOW)
|
|
224
|
+
recent.shift();
|
|
225
|
+
const tools = recent.reduce((s, x) => s + x.nTools, 0);
|
|
226
|
+
const errs = recent.reduce((s, x) => s + x.errors, 0);
|
|
227
|
+
const curTargets = new Set(t.toolTargets);
|
|
228
|
+
const rep = t.toolTargets.length
|
|
229
|
+
? t.toolTargets.filter(tg => seen.includes(tg)).length / t.toolTargets.length : 0;
|
|
230
|
+
let retry = 0;
|
|
231
|
+
for (const tg of curTargets) {
|
|
232
|
+
if (prevTargets.has(tg)) {
|
|
233
|
+
retry = 1;
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
for (const tg of t.toolTargets)
|
|
238
|
+
pushCap(seen, tg, SEEN_MAX);
|
|
239
|
+
let hits = 0, tot = 0;
|
|
240
|
+
for (const tg of t.toolTargets) {
|
|
241
|
+
const nm = tg.split(':', 1)[0];
|
|
242
|
+
pushCap(nameSeq, nm, NAMESEQ_MAX);
|
|
243
|
+
if (nameSeq.length >= 3) {
|
|
244
|
+
const tri = nameSeq.slice(-3).join('');
|
|
245
|
+
tot++;
|
|
246
|
+
if (trigrams.includes(tri))
|
|
247
|
+
hits++;
|
|
248
|
+
pushCap(trigrams, tri, TRIGRAM_MAX);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const seqrep = tot ? hits / tot : 0;
|
|
252
|
+
const err = tools ? errs / tools : 0;
|
|
253
|
+
const wcount = new Map();
|
|
254
|
+
for (const x of recent) {
|
|
255
|
+
for (const fp of new Set(x.writes))
|
|
256
|
+
wcount.set(fp, (wcount.get(fp) || 0) + 1);
|
|
257
|
+
}
|
|
258
|
+
let churn = 0;
|
|
259
|
+
for (const v of wcount.values()) {
|
|
260
|
+
if (v >= 3) {
|
|
261
|
+
churn = 1;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
last = { rep, retry, seqrep, err, churn };
|
|
266
|
+
prevTargets = curTargets;
|
|
267
|
+
}
|
|
268
|
+
const score = STRESS_WEIGHTS.rep * last.rep + STRESS_WEIGHTS.retry * last.retry +
|
|
269
|
+
STRESS_WEIGHTS.seqrep * last.seqrep + STRESS_WEIGHTS.err * last.err +
|
|
270
|
+
STRESS_WEIGHTS.churn * last.churn;
|
|
271
|
+
const level = score >= STRESS_HIGH_AT ? exports.STRESS_HIGH
|
|
272
|
+
: score >= STRESS_ELEVATED_AT ? exports.STRESS_ELEVATED : exports.STRESS_CALM;
|
|
273
|
+
return { score: Math.round(score * 1000) / 1000, level };
|
|
274
|
+
}
|
|
275
|
+
// ---------- Keyword scan -----------------------------------------------------
|
|
276
|
+
/** Scan the most recent user prompt for each watched keyword (case-insensitive
|
|
277
|
+
* substring), returning `keyword:<term>` → true for every hit. The Stop hook
|
|
278
|
+
* collects the watched terms from the cached rules so this stays driven by the
|
|
279
|
+
* matchset, never a hardcoded list. Pure. */
|
|
280
|
+
function scanKeywords(latestPrompt, keywords) {
|
|
281
|
+
const out = {};
|
|
282
|
+
const hay = (latestPrompt || '').toLowerCase();
|
|
283
|
+
for (const kw of keywords) {
|
|
284
|
+
if (!kw)
|
|
285
|
+
continue;
|
|
286
|
+
out[`keyword:${kw}`] = hay.includes(kw.toLowerCase());
|
|
287
|
+
}
|
|
288
|
+
return out;
|
|
289
|
+
}
|
|
290
|
+
/** Compute the full stateValues bag for one Stop/UserPromptSubmit fire. Pure
|
|
291
|
+
* given the transcript contents; never throws (parse failures → calm/zero). */
|
|
292
|
+
function computeStateValues(transcriptPath, opts = {}) {
|
|
293
|
+
const { turns, totalTurns } = parseTurns(transcriptPath, opts.maxTurns ?? 40);
|
|
294
|
+
const stress = computeStress(turns);
|
|
295
|
+
const values = {
|
|
296
|
+
stress: stress.level,
|
|
297
|
+
stressScore: stress.score,
|
|
298
|
+
turnCount: totalTurns,
|
|
299
|
+
};
|
|
300
|
+
if (opts.keywords && opts.keywords.length) {
|
|
301
|
+
Object.assign(values, scanKeywords(opts.latestPrompt || '', opts.keywords));
|
|
302
|
+
}
|
|
303
|
+
return values;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=state-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-trigger.js","sourceRoot":"","sources":["../../src/commands/state-trigger.ts"],"names":[],"mappings":"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"}
|
package/dist/fix-trigger.d.ts
CHANGED
|
@@ -11,8 +11,15 @@
|
|
|
11
11
|
* docs/mechanic-repairs.md D3/D5/D8; contracts: docs/mechanic-engine-contracts.md.
|
|
12
12
|
*/
|
|
13
13
|
export interface FixFieldClause {
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
14
|
+
/** Which source bag `field` looks up in. Default `tool_input` (the PreToolUse
|
|
15
|
+
* event) keeps every legacy clause byte-for-byte unchanged. `state` reads the
|
|
16
|
+
* precomputed `stateValues` bag (stress / turn-count / keyword-seen) the
|
|
17
|
+
* Stop/UserPromptSubmit hook stashed — STILL local, no hot-path network read
|
|
18
|
+
* (the ingress-trigger bridge's load-bearing split). docs/ingress-trigger-bridge.md */
|
|
19
|
+
source?: 'tool_input' | 'state';
|
|
20
|
+
/** Key into the selected source bag — `command` for Bash, `file_path` for
|
|
21
|
+
* Write/Edit, `url` for WebFetch; `stress`/`turnCount` for a `state` clause.
|
|
22
|
+
* Dot-paths reach nested fields. */
|
|
16
23
|
field: string;
|
|
17
24
|
op: string;
|
|
18
25
|
value?: unknown;
|
|
@@ -26,8 +33,16 @@ export type FixCondition = true | FixFieldClause | {
|
|
|
26
33
|
} | {
|
|
27
34
|
not: FixCondition;
|
|
28
35
|
};
|
|
29
|
-
/** The closed operator set.
|
|
30
|
-
|
|
36
|
+
/** The closed operator set. `gte`/`lte` are the inclusive numeric pair (added
|
|
37
|
+
* for `state` thresholds like stress level >= elevated, encoded numerically). */
|
|
38
|
+
export declare const FIX_TRIGGER_OPS: readonly ["contains", "not_contains", "equals", "regex", "path_under", "path_equals", "starts_with", "gt", "lt", "gte", "lte"];
|
|
39
|
+
/** A bag of named sources a condition can read. `tool_input` is always present
|
|
40
|
+
* (the PreToolUse event); `state` carries the precomputed stateValues when the
|
|
41
|
+
* caller has them. Absent bag → clauses against it read undefined → false. */
|
|
42
|
+
export interface EvalSources {
|
|
43
|
+
tool_input: Record<string, unknown>;
|
|
44
|
+
state?: Record<string, unknown>;
|
|
45
|
+
}
|
|
31
46
|
export type TriggerLogger = (msg: string, detail?: Record<string, unknown>) => void;
|
|
32
47
|
/** Normalize a path to lowercase forward-slash segments with '.'/'..' resolved
|
|
33
48
|
* (no fs access — pure string work). Drive letters keep their colon segment. */
|
|
@@ -35,8 +50,13 @@ export declare function normalizePathSegments(p: string): string[];
|
|
|
35
50
|
/** Compile a regex under the safety rails; null when rejected. */
|
|
36
51
|
export declare function compileSafeRegex(pattern: string, flags: string | undefined, log?: TriggerLogger): RegExp | null;
|
|
37
52
|
/** Evaluate a condition against one event's tool_input. Pure, never throws:
|
|
38
|
-
* every malformed shape evaluates false (and logs via the optional logger).
|
|
53
|
+
* every malformed shape evaluates false (and logs via the optional logger).
|
|
54
|
+
* Back-compat: a clause with no `source` reads tool_input, exactly as before. */
|
|
39
55
|
export declare function evaluateCondition(condition: unknown, toolInput: Record<string, unknown>, log?: TriggerLogger, depth?: number): boolean;
|
|
56
|
+
/** Multi-source evaluation — the entry the dispatcher uses once it has the
|
|
57
|
+
* precomputed `state` bag, so a `source:"state"` clause can read it. Identical
|
|
58
|
+
* semantics to evaluateCondition for any clause that omits `source`. Pure. */
|
|
59
|
+
export declare function evaluateConditionMulti(condition: unknown, sources: EvalSources, log?: TriggerLogger, depth?: number): boolean;
|
|
40
60
|
/** Authoring-time validation: is this a well-formed condition the interpreter
|
|
41
61
|
* will honor? Returns the list of problems (empty = valid). Used server-side
|
|
42
62
|
* before a repair row is stored, so a row can't be born unevaluable. */
|
package/dist/fix-trigger.js
CHANGED
|
@@ -16,11 +16,13 @@ exports.FIX_TRIGGER_OPS = void 0;
|
|
|
16
16
|
exports.normalizePathSegments = normalizePathSegments;
|
|
17
17
|
exports.compileSafeRegex = compileSafeRegex;
|
|
18
18
|
exports.evaluateCondition = evaluateCondition;
|
|
19
|
+
exports.evaluateConditionMulti = evaluateConditionMulti;
|
|
19
20
|
exports.validateCondition = validateCondition;
|
|
20
|
-
/** The closed operator set.
|
|
21
|
+
/** The closed operator set. `gte`/`lte` are the inclusive numeric pair (added
|
|
22
|
+
* for `state` thresholds like stress level >= elevated, encoded numerically). */
|
|
21
23
|
exports.FIX_TRIGGER_OPS = [
|
|
22
24
|
'contains', 'not_contains', 'equals', 'regex',
|
|
23
|
-
'path_under', 'path_equals', 'starts_with', 'gt', 'lt',
|
|
25
|
+
'path_under', 'path_equals', 'starts_with', 'gt', 'lt', 'gte', 'lte',
|
|
24
26
|
];
|
|
25
27
|
const MAX_DEPTH = 16;
|
|
26
28
|
const MAX_REGEX_LENGTH = 200;
|
|
@@ -158,12 +160,20 @@ function evalClause(clause, input, log) {
|
|
|
158
160
|
return normalizePathSegments(s).join('/') === normalizePathSegments(v).join('/');
|
|
159
161
|
}
|
|
160
162
|
case 'gt':
|
|
161
|
-
case 'lt':
|
|
163
|
+
case 'lt':
|
|
164
|
+
case 'gte':
|
|
165
|
+
case 'lte': {
|
|
162
166
|
const n = typeof raw === 'number' ? raw : Number(asString(raw));
|
|
163
167
|
const v = typeof clause.value === 'number' ? clause.value : Number(asString(clause.value));
|
|
164
168
|
if (!Number.isFinite(n) || !Number.isFinite(v))
|
|
165
169
|
return false;
|
|
166
|
-
|
|
170
|
+
if (clause.op === 'gt')
|
|
171
|
+
return n > v;
|
|
172
|
+
if (clause.op === 'lt')
|
|
173
|
+
return n < v;
|
|
174
|
+
if (clause.op === 'gte')
|
|
175
|
+
return n >= v;
|
|
176
|
+
return n <= v;
|
|
167
177
|
}
|
|
168
178
|
default:
|
|
169
179
|
log?.('fix-trigger: unknown operator (clause = false)', { op: clause.op });
|
|
@@ -173,7 +183,7 @@ function evalClause(clause, input, log) {
|
|
|
173
183
|
/** Tri-state inner walk: `invalid` means "malformed/over-deep — never fire".
|
|
174
184
|
* Invalid must NOT be inverted by `not` (a broken subtree can't become a
|
|
175
185
|
* reason to fire), so it propagates as invalid through every combinator. */
|
|
176
|
-
function evalNode(condition,
|
|
186
|
+
function evalNode(condition, sources, log, depth) {
|
|
177
187
|
if (condition === true)
|
|
178
188
|
return true;
|
|
179
189
|
if (depth > MAX_DEPTH) {
|
|
@@ -190,7 +200,7 @@ function evalNode(condition, toolInput, log, depth) {
|
|
|
190
200
|
return false;
|
|
191
201
|
let result = true;
|
|
192
202
|
for (const sub of c.all) {
|
|
193
|
-
const r = evalNode(sub,
|
|
203
|
+
const r = evalNode(sub, sources, log, depth + 1);
|
|
194
204
|
if (r === 'invalid')
|
|
195
205
|
return 'invalid';
|
|
196
206
|
result = result && r;
|
|
@@ -200,7 +210,7 @@ function evalNode(condition, toolInput, log, depth) {
|
|
|
200
210
|
if (Array.isArray(c.any)) {
|
|
201
211
|
let sawInvalid = false;
|
|
202
212
|
for (const sub of c.any) {
|
|
203
|
-
const r = evalNode(sub,
|
|
213
|
+
const r = evalNode(sub, sources, log, depth + 1);
|
|
204
214
|
if (r === 'invalid') {
|
|
205
215
|
sawInvalid = true;
|
|
206
216
|
continue;
|
|
@@ -211,19 +221,30 @@ function evalNode(condition, toolInput, log, depth) {
|
|
|
211
221
|
return sawInvalid ? 'invalid' : false;
|
|
212
222
|
}
|
|
213
223
|
if ('not' in c) {
|
|
214
|
-
const r = evalNode(c.not,
|
|
224
|
+
const r = evalNode(c.not, sources, log, depth + 1);
|
|
215
225
|
return r === 'invalid' ? 'invalid' : !r;
|
|
216
226
|
}
|
|
217
227
|
if (typeof c.field === 'string' && typeof c.op === 'string') {
|
|
218
|
-
|
|
228
|
+
// Source selection: a `state` clause reads the precomputed stateValues bag,
|
|
229
|
+
// everything else (the default) reads the tool_input event. An absent bag
|
|
230
|
+
// yields an empty record → the clause's field is undefined → false (fail-safe).
|
|
231
|
+
const src = c.source === 'state' ? (sources.state || {}) : sources.tool_input;
|
|
232
|
+
return evalClause(c, src, log);
|
|
219
233
|
}
|
|
220
234
|
log?.('fix-trigger: unrecognized condition shape (= false)');
|
|
221
235
|
return 'invalid';
|
|
222
236
|
}
|
|
223
237
|
/** Evaluate a condition against one event's tool_input. Pure, never throws:
|
|
224
|
-
* every malformed shape evaluates false (and logs via the optional logger).
|
|
238
|
+
* every malformed shape evaluates false (and logs via the optional logger).
|
|
239
|
+
* Back-compat: a clause with no `source` reads tool_input, exactly as before. */
|
|
225
240
|
function evaluateCondition(condition, toolInput, log, depth = 0) {
|
|
226
|
-
return evalNode(condition, toolInput, log, depth) === true;
|
|
241
|
+
return evalNode(condition, { tool_input: toolInput }, log, depth) === true;
|
|
242
|
+
}
|
|
243
|
+
/** Multi-source evaluation — the entry the dispatcher uses once it has the
|
|
244
|
+
* precomputed `state` bag, so a `source:"state"` clause can read it. Identical
|
|
245
|
+
* semantics to evaluateCondition for any clause that omits `source`. Pure. */
|
|
246
|
+
function evaluateConditionMulti(condition, sources, log, depth = 0) {
|
|
247
|
+
return evalNode(condition, sources, log, depth) === true;
|
|
227
248
|
}
|
|
228
249
|
/** Authoring-time validation: is this a well-formed condition the interpreter
|
|
229
250
|
* will honor? Returns the list of problems (empty = valid). Used server-side
|
|
@@ -249,6 +270,9 @@ function validateCondition(condition, depth = 0) {
|
|
|
249
270
|
}
|
|
250
271
|
if ('not' in c)
|
|
251
272
|
return validateCondition(c.not, depth + 1);
|
|
273
|
+
if (c.source !== undefined && c.source !== 'tool_input' && c.source !== 'state') {
|
|
274
|
+
return [`clause source must be 'tool_input' or 'state', got '${String(c.source)}'`];
|
|
275
|
+
}
|
|
252
276
|
if (typeof c.field !== 'string' || c.field.length === 0)
|
|
253
277
|
return ['clause missing field'];
|
|
254
278
|
if (typeof c.op !== 'string')
|
package/dist/fix-trigger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-trigger.js","sourceRoot":"","sources":["../src/fix-trigger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fix-trigger.js","sourceRoot":"","sources":["../src/fix-trigger.ts"],"names":[],"mappings":"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"}
|
package/dist/guard.d.ts
CHANGED
|
@@ -21,7 +21,12 @@ export declare function matchsetCachePath(projectId: string): string;
|
|
|
21
21
|
export declare function tallySpoolPath(projectId: string): string;
|
|
22
22
|
interface RepairTrigger {
|
|
23
23
|
event?: string;
|
|
24
|
+
/** Trigger SOURCE (bridge): `pre_tool_use` (default, back-compat) | `state`
|
|
25
|
+
* (local hot-path, reads stateValues) | `ingress` (async, off-path → skipped).
|
|
26
|
+
* docs/ingress-trigger-bridge.md */
|
|
27
|
+
source?: 'pre_tool_use' | 'state' | 'ingress';
|
|
24
28
|
matcher?: string;
|
|
29
|
+
eventKind?: string;
|
|
25
30
|
condition?: unknown;
|
|
26
31
|
action?: string;
|
|
27
32
|
mode?: string;
|
|
@@ -49,6 +54,10 @@ export interface MatchsetCacheFile {
|
|
|
49
54
|
fetchedAt?: string;
|
|
50
55
|
/** Local latch journal: nodeId → latch key (sessionId or "project") → ISO. */
|
|
51
56
|
latchState?: Record<string, Record<string, string>>;
|
|
57
|
+
/** Precomputed local state bag (stress / turnCount / keyword-seen) the Stop hook
|
|
58
|
+
* stashes for `source:"state"` rules to read on the hot path. Preserved on
|
|
59
|
+
* refetch like latchState. */
|
|
60
|
+
stateValues?: Record<string, unknown>;
|
|
52
61
|
}
|
|
53
62
|
export interface GuardInput {
|
|
54
63
|
hook_event_name?: string;
|
|
@@ -86,6 +95,10 @@ export declare function wrapDirective(text: string): string;
|
|
|
86
95
|
* explicit repair.tier field overrides this once a second directive class ships. */
|
|
87
96
|
export declare function injectionTier(row: MatchsetRepair): 'note' | 'directive';
|
|
88
97
|
export declare function readMatchsetCache(projectId: string): MatchsetCacheFile | null;
|
|
98
|
+
/** Merge state values into the matchset cache (Adapter A). Single-writer; no cache yet → no-op. */
|
|
99
|
+
export declare function writeStateValues(projectId: string, values: Record<string, unknown>): void;
|
|
100
|
+
/** Collect watched keyword terms — every `state` clause field `keyword:<term>`. */
|
|
101
|
+
export declare function collectWatchedKeywords(projectId: string): string[];
|
|
89
102
|
/** Run the dispatcher over one PreToolUse event. Pure given the cache contents
|
|
90
103
|
* read from disk; mutates only local state files (cache latchState + spool).
|
|
91
104
|
* Returns the hook output to emit, or null for silence. NO network — tallies
|