twining-mcp 1.18.0 → 1.20.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/README.md +2 -1
- package/dist/analytics/analytics-engine.js +1 -1
- package/dist/analytics/analytics-engine.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/engine/blackboard.d.ts +2 -1
- package/dist/engine/blackboard.d.ts.map +1 -1
- package/dist/engine/blackboard.js +5 -1
- package/dist/engine/blackboard.js.map +1 -1
- package/dist/engine/branch-watcher.d.ts +34 -0
- package/dist/engine/branch-watcher.d.ts.map +1 -0
- package/dist/engine/branch-watcher.js +93 -0
- package/dist/engine/branch-watcher.js.map +1 -0
- package/dist/engine/decisions.d.ts.map +1 -1
- package/dist/engine/decisions.js +2 -0
- package/dist/engine/decisions.js.map +1 -1
- package/dist/engine/exporter.d.ts.map +1 -1
- package/dist/engine/exporter.js +1 -0
- package/dist/engine/exporter.js.map +1 -1
- package/dist/engine/housekeeping.d.ts +26 -1
- package/dist/engine/housekeeping.d.ts.map +1 -1
- package/dist/engine/housekeeping.js +121 -1
- package/dist/engine/housekeeping.js.map +1 -1
- package/dist/engine/staleness.d.ts +51 -0
- package/dist/engine/staleness.d.ts.map +1 -0
- package/dist/engine/staleness.js +135 -0
- package/dist/engine/staleness.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -6
- package/dist/server.js.map +1 -1
- package/dist/tools/blackboard-tools.d.ts +1 -1
- package/dist/tools/blackboard-tools.d.ts.map +1 -1
- package/dist/tools/blackboard-tools.js +3 -1
- package/dist/tools/blackboard-tools.js.map +1 -1
- package/dist/tools/decision-tools.d.ts +1 -1
- package/dist/tools/decision-tools.d.ts.map +1 -1
- package/dist/tools/decision-tools.js +4 -2
- package/dist/tools/decision-tools.js.map +1 -1
- package/dist/tools/housekeeping-tools.d.ts +3 -1
- package/dist/tools/housekeeping-tools.d.ts.map +1 -1
- package/dist/tools/housekeeping-tools.js +80 -3
- package/dist/tools/housekeeping-tools.js.map +1 -1
- package/dist/tools/record-tools.d.ts +1 -1
- package/dist/tools/record-tools.d.ts.map +1 -1
- package/dist/tools/record-tools.js +3 -1
- package/dist/tools/record-tools.js.map +1 -1
- package/dist/utils/git-branches.d.ts +7 -0
- package/dist/utils/git-branches.d.ts.map +1 -0
- package/dist/utils/git-branches.js +24 -0
- package/dist/utils/git-branches.js.map +1 -0
- package/dist/utils/provenance.d.ts +14 -0
- package/dist/utils/provenance.d.ts.map +1 -0
- package/dist/utils/provenance.js +33 -0
- package/dist/utils/provenance.js.map +1 -0
- package/dist/utils/record-sentinel.d.ts +8 -0
- package/dist/utils/record-sentinel.d.ts.map +1 -0
- package/dist/utils/record-sentinel.js +17 -0
- package/dist/utils/record-sentinel.js.map +1 -0
- package/dist/utils/types.d.ts +11 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/types.js +0 -4
- package/dist/utils/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,8 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
|
+
import { auditStaleness } from "./staleness.js";
|
|
11
|
+
import { detectDeletedBranches } from "./branch-watcher.js";
|
|
10
12
|
/** Default: flag provisionals older than 7 days. */
|
|
11
13
|
const STALE_PROVISIONAL_DAYS = 7;
|
|
14
|
+
/** Default: flag at score >= this when the user explicitly requests staleness review. */
|
|
15
|
+
const DEFAULT_STALENESS_THRESHOLD = 0.95;
|
|
12
16
|
/** Default: keep metrics for 30 days. */
|
|
13
17
|
const METRICS_RETENTION_DAYS = 30;
|
|
14
18
|
export class HousekeepingEngine {
|
|
@@ -17,18 +21,24 @@ export class HousekeepingEngine {
|
|
|
17
21
|
decisionStore;
|
|
18
22
|
archiver;
|
|
19
23
|
graphEngine;
|
|
20
|
-
|
|
24
|
+
projectRoot;
|
|
25
|
+
stalenessThreshold;
|
|
26
|
+
constructor(twiningDir, blackboardStore, decisionStore, archiver, graphEngine, projectRoot = null, stalenessThreshold = DEFAULT_STALENESS_THRESHOLD) {
|
|
21
27
|
this.twiningDir = twiningDir;
|
|
22
28
|
this.blackboardStore = blackboardStore;
|
|
23
29
|
this.decisionStore = decisionStore;
|
|
24
30
|
this.archiver = archiver;
|
|
25
31
|
this.graphEngine = graphEngine;
|
|
32
|
+
this.projectRoot = projectRoot;
|
|
33
|
+
this.stalenessThreshold = stalenessThreshold;
|
|
26
34
|
}
|
|
27
35
|
async run(options) {
|
|
28
36
|
const staleDays = options?.stale_days ?? STALE_PROVISIONAL_DAYS;
|
|
29
37
|
const metricsRetentionDays = options?.metrics_retention_days ?? METRICS_RETENTION_DAYS;
|
|
30
38
|
const execute = options?.execute ?? false;
|
|
31
39
|
const promoteProvisionals = options?.promote_provisionals ?? false;
|
|
40
|
+
const stalenessReview = options?.staleness_review ?? false;
|
|
41
|
+
const mergeSweep = options?.merge_sweep ?? false;
|
|
32
42
|
const result = {
|
|
33
43
|
archived: { count: 0, file: "" },
|
|
34
44
|
deduplicated: { removed: 0 },
|
|
@@ -153,6 +163,105 @@ export class HousekeepingEngine {
|
|
|
153
163
|
catch {
|
|
154
164
|
// Non-fatal
|
|
155
165
|
}
|
|
166
|
+
// 7. Staleness review — opt-in (provenance-aware orphan detection).
|
|
167
|
+
if (stalenessReview && this.projectRoot) {
|
|
168
|
+
try {
|
|
169
|
+
const allDecisionEntries = await this.decisionStore.getIndex();
|
|
170
|
+
const decisions = [];
|
|
171
|
+
for (const entry of allDecisionEntries) {
|
|
172
|
+
if (entry.status !== "active")
|
|
173
|
+
continue;
|
|
174
|
+
const d = await this.decisionStore.get(entry.id);
|
|
175
|
+
if (d)
|
|
176
|
+
decisions.push(d);
|
|
177
|
+
}
|
|
178
|
+
const { entries: bbEntries } = await this.blackboardStore.read();
|
|
179
|
+
const audit = auditStaleness(decisions, bbEntries, {
|
|
180
|
+
threshold: this.stalenessThreshold,
|
|
181
|
+
projectRoot: this.projectRoot,
|
|
182
|
+
});
|
|
183
|
+
result.staleness_review = audit;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Non-fatal — staleness review is opt-in and shouldn't break housekeeping
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// 8. Merge sweep — opt-in (branch-watcher diff vs last housekeeping snapshot).
|
|
190
|
+
// Snapshot file is only updated when execute=true; dry-runs compute the
|
|
191
|
+
// diff against the existing baseline without advancing it, so a preview
|
|
192
|
+
// can never silently consume deletions before the user acts.
|
|
193
|
+
if (mergeSweep && this.projectRoot) {
|
|
194
|
+
try {
|
|
195
|
+
const sweep = detectDeletedBranches(this.twiningDir, this.projectRoot, execute);
|
|
196
|
+
const candidates = [];
|
|
197
|
+
if (sweep.deleted_branches.length > 0) {
|
|
198
|
+
const deletedSet = new Set(sweep.deleted_branches);
|
|
199
|
+
// Active decisions only — archived ones are already off the books.
|
|
200
|
+
const decisionIndex = await this.decisionStore.getIndex();
|
|
201
|
+
for (const idx of decisionIndex) {
|
|
202
|
+
if (idx.status !== "active")
|
|
203
|
+
continue;
|
|
204
|
+
const d = await this.decisionStore.get(idx.id);
|
|
205
|
+
if (!d?.provenance?.branch)
|
|
206
|
+
continue;
|
|
207
|
+
if (!deletedSet.has(d.provenance.branch))
|
|
208
|
+
continue;
|
|
209
|
+
const item = {
|
|
210
|
+
id: d.id,
|
|
211
|
+
kind: "decision",
|
|
212
|
+
summary: d.summary,
|
|
213
|
+
scope: d.scope,
|
|
214
|
+
branch: d.provenance.branch,
|
|
215
|
+
};
|
|
216
|
+
if (d.provenance.commit_sha)
|
|
217
|
+
item.commit_sha = d.provenance.commit_sha;
|
|
218
|
+
if (d.provenance.recorded_at)
|
|
219
|
+
item.recorded_at = d.provenance.recorded_at;
|
|
220
|
+
candidates.push(item);
|
|
221
|
+
}
|
|
222
|
+
const { entries: bbEntries } = await this.blackboardStore.read();
|
|
223
|
+
for (const e of bbEntries) {
|
|
224
|
+
if (!e.provenance?.branch)
|
|
225
|
+
continue;
|
|
226
|
+
if (!deletedSet.has(e.provenance.branch))
|
|
227
|
+
continue;
|
|
228
|
+
const item = {
|
|
229
|
+
id: e.id,
|
|
230
|
+
kind: "blackboard",
|
|
231
|
+
summary: e.summary,
|
|
232
|
+
scope: e.scope,
|
|
233
|
+
branch: e.provenance.branch,
|
|
234
|
+
};
|
|
235
|
+
if (e.provenance.commit_sha)
|
|
236
|
+
item.commit_sha = e.provenance.commit_sha;
|
|
237
|
+
if (e.provenance.recorded_at)
|
|
238
|
+
item.recorded_at = e.provenance.recorded_at;
|
|
239
|
+
candidates.push(item);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
result.merge_sweep = {
|
|
243
|
+
initial_record: sweep.initial_record,
|
|
244
|
+
enumerated: sweep.enumerated,
|
|
245
|
+
current_branches: sweep.current_branches,
|
|
246
|
+
deleted_branches: sweep.deleted_branches,
|
|
247
|
+
since: sweep.state_recorded_at,
|
|
248
|
+
candidates,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Non-fatal — merge sweep is opt-in and shouldn't break housekeeping
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// Dedupe: if both staleness_review and merge_sweep ran, an entry from a
|
|
256
|
+
// recently-deleted branch will appear in both candidate lists (branch_gone
|
|
257
|
+
// signal vs deleted-branch sweep). Remove the staleness duplicate so the
|
|
258
|
+
// caller doesn't see the same ID framed two different ways. merge_sweep
|
|
259
|
+
// wins because it's the more specific signal.
|
|
260
|
+
if (result.staleness_review && result.merge_sweep) {
|
|
261
|
+
const sweepIds = new Set(result.merge_sweep.candidates.map((c) => c.id));
|
|
262
|
+
result.staleness_review.candidates =
|
|
263
|
+
result.staleness_review.candidates.filter((c) => !sweepIds.has(c.id));
|
|
264
|
+
}
|
|
156
265
|
// Build summary
|
|
157
266
|
const prefix = execute ? "" : "[preview] ";
|
|
158
267
|
const verb = execute ? "" : "would ";
|
|
@@ -171,6 +280,17 @@ export class HousekeepingEngine {
|
|
|
171
280
|
parts.push(`${verb}prune ${result.graph_pruned.removed} orphaned entities`);
|
|
172
281
|
if (result.metrics_rotated.removed > 0)
|
|
173
282
|
parts.push(`${verb}rotate ${result.metrics_rotated.removed} old metrics`);
|
|
283
|
+
if (result.staleness_review && result.staleness_review.candidates.length > 0) {
|
|
284
|
+
parts.push(`${result.staleness_review.candidates.length} items ≥ score ${result.staleness_review.threshold} flagged stale`);
|
|
285
|
+
}
|
|
286
|
+
if (result.merge_sweep) {
|
|
287
|
+
if (result.merge_sweep.initial_record) {
|
|
288
|
+
parts.push(`merge_sweep: recorded initial branch snapshot (${result.merge_sweep.current_branches?.length ?? 0} branches)`);
|
|
289
|
+
}
|
|
290
|
+
else if (result.merge_sweep.deleted_branches.length > 0) {
|
|
291
|
+
parts.push(`merge_sweep: ${result.merge_sweep.deleted_branches.length} deleted branch(es), ${result.merge_sweep.candidates.length} entries from them`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
174
294
|
result.summary = parts.length > 0
|
|
175
295
|
? prefix + parts.join(", ")
|
|
176
296
|
: "Nothing to clean up";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"housekeeping.js","sourceRoot":"","sources":["../../src/engine/housekeeping.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"housekeeping.js","sourceRoot":"","sources":["../../src/engine/housekeeping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { BlackboardEntry, Decision } from "../utils/types.js";
|
|
2
|
+
export interface StalenessReason {
|
|
3
|
+
signal: "scope_path_missing" | "affected_files_missing" | "branch_gone";
|
|
4
|
+
score: number;
|
|
5
|
+
detail: string;
|
|
6
|
+
}
|
|
7
|
+
export interface StaleItem {
|
|
8
|
+
id: string;
|
|
9
|
+
kind: "decision" | "blackboard";
|
|
10
|
+
summary: string;
|
|
11
|
+
scope: string;
|
|
12
|
+
score: number;
|
|
13
|
+
reasons: StalenessReason[];
|
|
14
|
+
branch?: string;
|
|
15
|
+
commit_sha?: string;
|
|
16
|
+
recorded_at?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface StalenessAuditOptions {
|
|
19
|
+
threshold: number;
|
|
20
|
+
projectRoot: string;
|
|
21
|
+
}
|
|
22
|
+
export interface StalenessAuditResult {
|
|
23
|
+
threshold: number;
|
|
24
|
+
candidates: StaleItem[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Score one decision or blackboard entry. Pure given probe results.
|
|
28
|
+
* Exported for unit testing without filesystem.
|
|
29
|
+
*/
|
|
30
|
+
export declare function scoreItem(item: {
|
|
31
|
+
scope: string;
|
|
32
|
+
affected_files?: string[];
|
|
33
|
+
provenance?: {
|
|
34
|
+
branch?: string;
|
|
35
|
+
};
|
|
36
|
+
}, probes: {
|
|
37
|
+
scopePathExists: (scope: string) => boolean | null;
|
|
38
|
+
fileExists: (file: string) => boolean;
|
|
39
|
+
branchKnown: (branch: string) => boolean;
|
|
40
|
+
}): {
|
|
41
|
+
score: number;
|
|
42
|
+
reasons: StalenessReason[];
|
|
43
|
+
};
|
|
44
|
+
/** Build the three probes for a real project root. Cheap one-shot setup. */
|
|
45
|
+
export declare function buildProbes(projectRoot: string): {
|
|
46
|
+
scopePathExists: (scope: string) => boolean | null;
|
|
47
|
+
fileExists: (file: string) => boolean;
|
|
48
|
+
branchKnown: (branch: string) => boolean;
|
|
49
|
+
};
|
|
50
|
+
export declare function auditStaleness(decisions: Decision[], blackboardEntries: BlackboardEntry[], options: StalenessAuditOptions): StalenessAuditResult;
|
|
51
|
+
//# sourceMappingURL=staleness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staleness.d.ts","sourceRoot":"","sources":["../../src/engine/staleness.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,oBAAoB,GAAG,wBAAwB,GAAG,aAAa,CAAC;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,YAAY,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACpF,MAAM,EAAE;IACN,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,GACA;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,EAAE,CAAA;CAAE,CAuC/C;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;IAChD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC1C,CAyBA;AAED,wBAAgB,cAAc,CAC5B,SAAS,EAAE,QAAQ,EAAE,EACrB,iBAAiB,EAAE,eAAe,EAAE,EACpC,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA8CtB"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Staleness detection — scores blackboard entries and decisions on three
|
|
3
|
+
* deterministic signals:
|
|
4
|
+
*
|
|
5
|
+
* 1. scope_path_missing — scope looks like a file/dir path and no longer exists.
|
|
6
|
+
* 2. affected_files_missing — proportion of an entry's affected_files no longer on disk.
|
|
7
|
+
* 3. branch_gone — provenance.branch is no longer in the local git ref list
|
|
8
|
+
* (i.e. branch was deleted, typically after merge).
|
|
9
|
+
*
|
|
10
|
+
* Final score is max() of the three signals; an entry is flagged when the score
|
|
11
|
+
* crosses a configurable threshold (default 0.95). Items with no checkable
|
|
12
|
+
* signals (scope=="project", no affected_files, no provenance) score 0 and are
|
|
13
|
+
* never flagged.
|
|
14
|
+
*
|
|
15
|
+
* Semantic-content review (LLM-judged "Wave 3 / HMS Lancaster" cases) is out
|
|
16
|
+
* of scope here — see follow-up issue.
|
|
17
|
+
*/
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import { listLocalBranches } from "../utils/git-branches.js";
|
|
21
|
+
/**
|
|
22
|
+
* Score one decision or blackboard entry. Pure given probe results.
|
|
23
|
+
* Exported for unit testing without filesystem.
|
|
24
|
+
*/
|
|
25
|
+
export function scoreItem(item, probes) {
|
|
26
|
+
const reasons = [];
|
|
27
|
+
// Signal 1: scope path missing
|
|
28
|
+
const scopeProbe = probes.scopePathExists(item.scope);
|
|
29
|
+
if (scopeProbe === false) {
|
|
30
|
+
reasons.push({
|
|
31
|
+
signal: "scope_path_missing",
|
|
32
|
+
score: 1.0,
|
|
33
|
+
detail: `scope "${item.scope}" no longer exists on disk`,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Signal 2: affected files missing (proportion)
|
|
37
|
+
if (item.affected_files && item.affected_files.length > 0) {
|
|
38
|
+
const missing = item.affected_files.filter((f) => !probes.fileExists(f));
|
|
39
|
+
if (missing.length > 0) {
|
|
40
|
+
const proportion = missing.length / item.affected_files.length;
|
|
41
|
+
reasons.push({
|
|
42
|
+
signal: "affected_files_missing",
|
|
43
|
+
score: proportion,
|
|
44
|
+
detail: `${missing.length}/${item.affected_files.length} affected files missing: ${missing.slice(0, 3).join(", ")}${missing.length > 3 ? ", …" : ""}`,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Signal 3: branch gone
|
|
49
|
+
if (item.provenance?.branch && !probes.branchKnown(item.provenance.branch)) {
|
|
50
|
+
reasons.push({
|
|
51
|
+
signal: "branch_gone",
|
|
52
|
+
score: 1.0,
|
|
53
|
+
detail: `originating branch "${item.provenance.branch}" no longer exists`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const score = reasons.length > 0
|
|
57
|
+
? Math.max(...reasons.map((r) => r.score))
|
|
58
|
+
: 0;
|
|
59
|
+
return { score, reasons };
|
|
60
|
+
}
|
|
61
|
+
/** Build the three probes for a real project root. Cheap one-shot setup. */
|
|
62
|
+
export function buildProbes(projectRoot) {
|
|
63
|
+
const knownBranches = listLocalBranches(projectRoot);
|
|
64
|
+
// Distinguish "branch listing failed" (return null) from "listing succeeded
|
|
65
|
+
// but returned empty" (legitimately empty repo). When listing fails the
|
|
66
|
+
// probe always returns true so branch_gone never fires.
|
|
67
|
+
const listingFailed = knownBranches === null;
|
|
68
|
+
const branches = knownBranches ?? new Set();
|
|
69
|
+
return {
|
|
70
|
+
scopePathExists: (scope) => {
|
|
71
|
+
if (!scope || scope === "project" || scope === "global")
|
|
72
|
+
return null;
|
|
73
|
+
// Heuristic: a "path-like" scope contains "/" or matches a real entry on disk.
|
|
74
|
+
// Strings like "architecture" or "implementation" are categorical, not paths — return null.
|
|
75
|
+
const looksLikePath = scope.includes("/") || scope.includes(".");
|
|
76
|
+
if (!looksLikePath)
|
|
77
|
+
return null;
|
|
78
|
+
const candidate = scope.endsWith("/") ? scope.slice(0, -1) : scope;
|
|
79
|
+
return fs.existsSync(path.join(projectRoot, candidate));
|
|
80
|
+
},
|
|
81
|
+
fileExists: (file) => {
|
|
82
|
+
if (!file)
|
|
83
|
+
return true;
|
|
84
|
+
return fs.existsSync(path.join(projectRoot, file));
|
|
85
|
+
},
|
|
86
|
+
branchKnown: (branch) => listingFailed ? true : branches.has(branch),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
export function auditStaleness(decisions, blackboardEntries, options) {
|
|
90
|
+
const probes = buildProbes(options.projectRoot);
|
|
91
|
+
const candidates = [];
|
|
92
|
+
for (const d of decisions) {
|
|
93
|
+
const { score, reasons } = scoreItem(d, probes);
|
|
94
|
+
if (score >= options.threshold && reasons.length > 0) {
|
|
95
|
+
const item = {
|
|
96
|
+
id: d.id,
|
|
97
|
+
kind: "decision",
|
|
98
|
+
summary: d.summary,
|
|
99
|
+
scope: d.scope,
|
|
100
|
+
score,
|
|
101
|
+
reasons,
|
|
102
|
+
};
|
|
103
|
+
if (d.provenance?.branch)
|
|
104
|
+
item.branch = d.provenance.branch;
|
|
105
|
+
if (d.provenance?.commit_sha)
|
|
106
|
+
item.commit_sha = d.provenance.commit_sha;
|
|
107
|
+
if (d.provenance?.recorded_at)
|
|
108
|
+
item.recorded_at = d.provenance.recorded_at;
|
|
109
|
+
candidates.push(item);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const e of blackboardEntries) {
|
|
113
|
+
const { score, reasons } = scoreItem({ scope: e.scope, provenance: e.provenance }, probes);
|
|
114
|
+
if (score >= options.threshold && reasons.length > 0) {
|
|
115
|
+
const item = {
|
|
116
|
+
id: e.id,
|
|
117
|
+
kind: "blackboard",
|
|
118
|
+
summary: e.summary,
|
|
119
|
+
scope: e.scope,
|
|
120
|
+
score,
|
|
121
|
+
reasons,
|
|
122
|
+
};
|
|
123
|
+
if (e.provenance?.branch)
|
|
124
|
+
item.branch = e.provenance.branch;
|
|
125
|
+
if (e.provenance?.commit_sha)
|
|
126
|
+
item.commit_sha = e.provenance.commit_sha;
|
|
127
|
+
if (e.provenance?.recorded_at)
|
|
128
|
+
item.recorded_at = e.provenance.recorded_at;
|
|
129
|
+
candidates.push(item);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
candidates.sort((a, b) => b.score - a.score);
|
|
133
|
+
return { threshold: options.threshold, candidates };
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=staleness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staleness.js","sourceRoot":"","sources":["../../src/engine/staleness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AA8B7D;;;GAGG;AACH,MAAM,UAAU,SAAS,CACvB,IAAoF,EACpF,MAIC;IAED,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,+BAA+B;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,UAAU,IAAI,CAAC,KAAK,4BAA4B;SACzD,CAAC,CAAC;IACL,CAAC;IAED,gDAAgD;IAChD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,wBAAwB;gBAChC,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,4BAA4B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;aACtJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC;YACX,MAAM,EAAE,aAAa;YACrB,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,uBAAuB,IAAI,CAAC,UAAU,CAAC,MAAM,oBAAoB;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,WAAW,CAAC,WAAmB;IAK7C,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,4EAA4E;IAC5E,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,aAAa,GAAG,aAAa,KAAK,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,aAAa,IAAI,IAAI,GAAG,EAAU,CAAC;IAEpD,OAAO;QACL,eAAe,EAAE,CAAC,KAAa,EAAE,EAAE;YACjC,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACrE,+EAA+E;YAC/E,4FAA4F;YAC5F,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa;gBAAE,OAAO,IAAI,CAAC;YAChC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YACnE,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,UAAU,EAAE,CAAC,IAAY,EAAE,EAAE;YAC3B,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE,CAC9B,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAAqB,EACrB,iBAAoC,EACpC,OAA8B;IAE9B,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,KAAK,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAc;gBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK;gBACL,OAAO;aACR,CAAC;YACF,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5D,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACxE,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAClC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,EAC5C,MAAM,CACP,CAAC;QACF,IAAI,KAAK,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAc;gBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,KAAK;gBACL,OAAO;aACR,CAAC;YACF,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM;gBAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5D,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACxE,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE7C,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;AACtD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,9 @@ if (process.argv.includes("--version") || process.argv.includes("-v")) {
|
|
|
16
16
|
process.exit(0);
|
|
17
17
|
}
|
|
18
18
|
async function main() {
|
|
19
|
+
if (process.env.TWINING_DISABLED === "true") {
|
|
20
|
+
process.exit(0);
|
|
21
|
+
}
|
|
19
22
|
// Parse --project argument, default to cwd
|
|
20
23
|
let projectRoot = process.cwd();
|
|
21
24
|
const projectArgIndex = process.argv.indexOf("--project");
|
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/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmCpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKpE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC;CAClD;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmCpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAKpE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,SAAS,CAAC;IAClB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,kBAAkB,EAAE,aAAa,CAAC;CAClD;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAkL/D"}
|
package/dist/server.js
CHANGED
|
@@ -56,7 +56,7 @@ export function createServer(projectRoot) {
|
|
|
56
56
|
const indexManager = new IndexManager(twiningDir);
|
|
57
57
|
const searchEngine = new SearchEngine(embedder, indexManager);
|
|
58
58
|
// Create engines (with embedding support)
|
|
59
|
-
const blackboardEngine = new BlackboardEngine(blackboardStore, embedder, indexManager, searchEngine);
|
|
59
|
+
const blackboardEngine = new BlackboardEngine(blackboardStore, embedder, indexManager, searchEngine, projectRoot);
|
|
60
60
|
const graphEngine = new GraphEngine(graphStore);
|
|
61
61
|
const decisionEngine = new DecisionEngine(decisionStore, blackboardEngine, embedder, indexManager, projectRoot, searchEngine, graphEngine);
|
|
62
62
|
const archiver = new Archiver(twiningDir, blackboardStore, blackboardEngine, indexManager);
|
|
@@ -83,7 +83,7 @@ export function createServer(projectRoot) {
|
|
|
83
83
|
const verifyEngine = new VerifyEngine(decisionStore, blackboardStore, blackboardEngine, graphEngine, projectRoot);
|
|
84
84
|
verifyEngine.setAssemblyChecker((agentId) => contextAssembler.hasRecentAssembly(agentId));
|
|
85
85
|
// Create housekeeping engine
|
|
86
|
-
const housekeepingEngine = new HousekeepingEngine(twiningDir, blackboardStore, decisionStore, archiver, graphEngine);
|
|
86
|
+
const housekeepingEngine = new HousekeepingEngine(twiningDir, blackboardStore, decisionStore, archiver, graphEngine, projectRoot, config.housekeeping?.staleness_threshold);
|
|
87
87
|
// Create exporter
|
|
88
88
|
const exporter = new Exporter(blackboardStore, decisionStore, graphStore);
|
|
89
89
|
// Process pending posts and actions (fire-and-forget, non-fatal)
|
|
@@ -110,10 +110,10 @@ export function createServer(projectRoot) {
|
|
|
110
110
|
const toolMode = config.tools?.mode ?? "full";
|
|
111
111
|
const fullSurface = config.tools?.full_surface ?? false;
|
|
112
112
|
// Core tools (always registered in both full and lite modes)
|
|
113
|
-
registerRecordTools(server, blackboardEngine, decisionEngine, projectRoot);
|
|
114
|
-
registerHousekeepingTools(server, housekeepingEngine);
|
|
115
|
-
registerBlackboardTools(server, blackboardEngine, { fullSurface });
|
|
116
|
-
registerDecisionTools(server, decisionEngine, { fullSurface });
|
|
113
|
+
registerRecordTools(server, blackboardEngine, decisionEngine, projectRoot, twiningDir);
|
|
114
|
+
registerHousekeepingTools(server, housekeepingEngine, blackboardEngine, decisionStore);
|
|
115
|
+
registerBlackboardTools(server, blackboardEngine, twiningDir, { fullSurface });
|
|
116
|
+
registerDecisionTools(server, decisionEngine, twiningDir, { fullSurface });
|
|
117
117
|
registerContextTools(server, contextAssembler, { fullSurface });
|
|
118
118
|
if (fullSurface) {
|
|
119
119
|
registerVerifyTools(server, verifyEngine);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { BlackboardEngine } from "../engine/blackboard.js";
|
|
3
|
-
export declare function registerBlackboardTools(server: McpServer, engine: BlackboardEngine, options?: {
|
|
3
|
+
export declare function registerBlackboardTools(server: McpServer, engine: BlackboardEngine, twiningDir: string, options?: {
|
|
4
4
|
fullSurface?: boolean;
|
|
5
5
|
}): void;
|
|
6
6
|
//# sourceMappingURL=blackboard-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blackboard-tools.d.ts","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"blackboard-tools.d.ts","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,IAAI,CA8LN"}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { ENTRY_TYPES } from "../utils/types.js";
|
|
7
7
|
import { toolResult, toolError, TwiningError } from "../utils/errors.js";
|
|
8
|
-
|
|
8
|
+
import { writeRecordSentinel } from "../utils/record-sentinel.js";
|
|
9
|
+
export function registerBlackboardTools(server, engine, twiningDir, options = {}) {
|
|
9
10
|
// twining_post — Post an entry to the shared blackboard
|
|
10
11
|
server.registerTool("twining_post", {
|
|
11
12
|
description: "Share a finding, warning, need, or status update with other agents. Post a 'status' entry before ending each session. Does NOT accept entry_type 'decision' — use twining_decide instead.",
|
|
@@ -36,6 +37,7 @@ export function registerBlackboardTools(server, engine, options = {}) {
|
|
|
36
37
|
}, async (args) => {
|
|
37
38
|
try {
|
|
38
39
|
const result = await engine.post(args);
|
|
40
|
+
writeRecordSentinel(twiningDir);
|
|
39
41
|
return toolResult(result);
|
|
40
42
|
}
|
|
41
43
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blackboard-tools.js","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"blackboard-tools.js","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { DecisionEngine } from "../engine/decisions.js";
|
|
3
|
-
export declare function registerDecisionTools(server: McpServer, engine: DecisionEngine, options?: {
|
|
3
|
+
export declare function registerDecisionTools(server: McpServer, engine: DecisionEngine, twiningDir: string, options?: {
|
|
4
4
|
fullSurface?: boolean;
|
|
5
5
|
}): void;
|
|
6
6
|
//# sourceMappingURL=decision-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-tools.d.ts","sourceRoot":"","sources":["../../src/tools/decision-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"decision-tools.d.ts","sourceRoot":"","sources":["../../src/tools/decision-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,IAAI,CAoYN"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { toolResult, toolError, TwiningError } from "../utils/errors.js";
|
|
7
|
-
|
|
7
|
+
import { writeRecordSentinel } from "../utils/record-sentinel.js";
|
|
8
|
+
export function registerDecisionTools(server, engine, twiningDir, options = {}) {
|
|
8
9
|
// twining_decide — Record a decision with full rationale (full surface only — use twining_record instead)
|
|
9
10
|
if (options.fullSurface)
|
|
10
11
|
server.registerTool("twining_decide", {
|
|
@@ -80,6 +81,7 @@ export function registerDecisionTools(server, engine, options = {}) {
|
|
|
80
81
|
}, async (args) => {
|
|
81
82
|
try {
|
|
82
83
|
const result = await engine.decide(args);
|
|
84
|
+
writeRecordSentinel(twiningDir);
|
|
83
85
|
return toolResult(result);
|
|
84
86
|
}
|
|
85
87
|
catch (e) {
|
|
@@ -243,7 +245,7 @@ export function registerDecisionTools(server, engine, options = {}) {
|
|
|
243
245
|
.optional()
|
|
244
246
|
.describe("Filter by decision domain (e.g., 'architecture', 'implementation')"),
|
|
245
247
|
status: z
|
|
246
|
-
.enum(["active", "provisional", "superseded", "overridden"])
|
|
248
|
+
.enum(["active", "provisional", "superseded", "overridden", "archived"])
|
|
247
249
|
.optional()
|
|
248
250
|
.describe("Filter by decision status"),
|
|
249
251
|
confidence: z
|