twining-mcp 1.16.0 → 1.18.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.
Files changed (34) hide show
  1. package/README.md +35 -61
  2. package/dist/engine/decisions.d.ts.map +1 -1
  3. package/dist/engine/decisions.js +17 -10
  4. package/dist/engine/decisions.js.map +1 -1
  5. package/dist/engine/housekeeping.d.ts +60 -0
  6. package/dist/engine/housekeeping.d.ts.map +1 -0
  7. package/dist/engine/housekeeping.js +180 -0
  8. package/dist/engine/housekeeping.js.map +1 -0
  9. package/dist/engine/record-parser.d.ts +16 -0
  10. package/dist/engine/record-parser.d.ts.map +1 -0
  11. package/dist/engine/record-parser.js +136 -0
  12. package/dist/engine/record-parser.js.map +1 -0
  13. package/dist/instructions.d.ts +1 -1
  14. package/dist/instructions.d.ts.map +1 -1
  15. package/dist/instructions.js +9 -18
  16. package/dist/instructions.js.map +1 -1
  17. package/dist/server.d.ts.map +1 -1
  18. package/dist/server.js +10 -1
  19. package/dist/server.js.map +1 -1
  20. package/dist/tools/blackboard-tools.js +25 -24
  21. package/dist/tools/blackboard-tools.js.map +1 -1
  22. package/dist/tools/coordination-tools.js +69 -68
  23. package/dist/tools/coordination-tools.js.map +1 -1
  24. package/dist/tools/decision-tools.js +169 -165
  25. package/dist/tools/decision-tools.js.map +1 -1
  26. package/dist/tools/housekeeping-tools.d.ts +4 -0
  27. package/dist/tools/housekeeping-tools.d.ts.map +1 -0
  28. package/dist/tools/housekeeping-tools.js +46 -0
  29. package/dist/tools/housekeeping-tools.js.map +1 -0
  30. package/dist/tools/record-tools.d.ts +5 -0
  31. package/dist/tools/record-tools.d.ts.map +1 -0
  32. package/dist/tools/record-tools.js +292 -0
  33. package/dist/tools/record-tools.js.map +1 -0
  34. package/package.json +1 -1
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Parses natural language decision strings into structured decision input.
3
+ *
4
+ * Examples:
5
+ * "Chose Redis over Memcached — need persistence across restarts"
6
+ * "Used event-driven pattern instead of callbacks for notifications"
7
+ * "Reverted the workaround — root cause was fixed upstream"
8
+ */
9
+ /**
10
+ * Explicit rationale markers — preferred over heuristic separators because they
11
+ * are unambiguous and authored intentionally. Word-boundary, case-insensitive.
12
+ */
13
+ const EXPLICIT_RATIONALE_MARKERS = /\b(?:Rationale|Why|Reason|Because)\s*:\s*/i;
14
+ /**
15
+ * Heuristic fallback separators when no explicit marker is present.
16
+ * The em-dash is the strongest visual cue and is tried first.
17
+ */
18
+ const FALLBACK_SEPARATORS = [
19
+ /\s+—\s+/,
20
+ /\s+--\s+/,
21
+ /\s+(?:because|since|due to|so that)\s+/i,
22
+ /\s+as\s+/i,
23
+ ];
24
+ /** Patterns that indicate a rejected alternative (unordered-NL style). */
25
+ const REJECTION_PATTERNS = [
26
+ /\bover\s+(.+?)(?:\s+(?:—|--|because|since|due to)|$)/gi,
27
+ /\binstead of\s+(.+?)(?:\s+(?:—|--|because|since|due to)|$)/gi,
28
+ /\brather than\s+(.+?)(?:\s+(?:—|--|because|since|due to)|$)/gi,
29
+ /\bnot\s+(.+?)(?:\s+(?:—|--|because|since|due to)|$)/gi,
30
+ ];
31
+ /** Labelled-list patterns for explicit rejections. */
32
+ const LABELLED_REJECTION_PATTERNS = [
33
+ // "Alternative rejected: X — reason" / "Rejected alternative: X."
34
+ /\b(?:alternative\s+rejected|rejected\s+alternative)\s*:\s*(.+?)(?=\s*(?:\.|$|\balternative\s+rejected\b|\brejected\s+alternative\b))/gi,
35
+ // "Rejected: X." (single)
36
+ /\brejected\s*:\s*(.+?)(?=\.|$)/gi,
37
+ ];
38
+ /**
39
+ * Numbered-list pattern for "(1) item, (2) item, (3) item" phrasings.
40
+ * Matches each (N) <text> up to the next (N+1) or end-of-string.
41
+ */
42
+ const NUMBERED_LIST_PATTERN = /\((\d+)\)\s*([^()]+?)(?=\s*\(\d+\)|\.?\s*$)/g;
43
+ /** Keywords that hint at a domain. */
44
+ const DOMAIN_HINTS = {
45
+ architecture: ["pattern", "architecture", "event-driven", "microservice", "monolith", "layer", "decouple"],
46
+ security: ["auth", "jwt", "oauth", "token", "encrypt", "permission", "rbac"],
47
+ performance: ["cache", "redis", "memcached", "index", "optimize", "latency", "batch"],
48
+ "data-model": ["schema", "migration", "table", "column", "relation", "model", "entity"],
49
+ "api-design": ["endpoint", "rest", "graphql", "grpc", "route", "api"],
50
+ testing: ["test", "mock", "stub", "fixture", "coverage", "spec"],
51
+ deployment: ["deploy", "docker", "k8s", "ci", "cd", "pipeline", "terraform"],
52
+ implementation: [], // default fallback
53
+ };
54
+ /**
55
+ * Split text into [summary, rationale] at the first separator of the strongest
56
+ * available kind. Explicit markers win; em-dash is next; word separators last.
57
+ * The rationale preserves the entire remainder (no second-split truncation).
58
+ */
59
+ function splitSummaryAndRationale(text) {
60
+ const explicit = text.match(EXPLICIT_RATIONALE_MARKERS);
61
+ if (explicit && explicit.index !== undefined) {
62
+ const summary = text.slice(0, explicit.index).trim();
63
+ const rationale = text.slice(explicit.index + explicit[0].length).trim();
64
+ if (summary.length > 0 && rationale.length > 0) {
65
+ return { summary, rationale };
66
+ }
67
+ }
68
+ for (const sep of FALLBACK_SEPARATORS) {
69
+ const match = text.match(sep);
70
+ if (match && match.index !== undefined) {
71
+ const summary = text.slice(0, match.index).trim();
72
+ const rationale = text.slice(match.index + match[0].length).trim();
73
+ if (summary.length > 0 && rationale.length > 0) {
74
+ return { summary, rationale };
75
+ }
76
+ }
77
+ }
78
+ // No separator — rationale falls back to summary.
79
+ const trimmed = text.trim();
80
+ return { summary: trimmed, rationale: trimmed };
81
+ }
82
+ /** Extract rejected alternatives from the full text. */
83
+ function extractRejectedAlternatives(text) {
84
+ const seen = new Set();
85
+ const out = [];
86
+ const push = (raw) => {
87
+ const cleaned = raw.trim().replace(/[.,;]+$/, "").trim();
88
+ if (cleaned.length === 0)
89
+ return;
90
+ const key = cleaned.toLowerCase();
91
+ if (seen.has(key))
92
+ return;
93
+ seen.add(key);
94
+ out.push(cleaned);
95
+ };
96
+ // Labelled rejections take priority — they're the clearest signal.
97
+ for (const pattern of LABELLED_REJECTION_PATTERNS) {
98
+ for (const match of text.matchAll(pattern)) {
99
+ if (match[1])
100
+ push(match[1]);
101
+ }
102
+ }
103
+ // Numbered lists inside a "rejected" / "alternatives" context.
104
+ if (/\b(?:rejected|alternatives?)\b/i.test(text)) {
105
+ for (const match of text.matchAll(NUMBERED_LIST_PATTERN)) {
106
+ if (match[2])
107
+ push(match[2]);
108
+ }
109
+ }
110
+ // Unordered NL patterns last — skip if we already collected labelled items,
111
+ // since those would otherwise double-count sub-phrases.
112
+ if (out.length === 0) {
113
+ for (const pattern of REJECTION_PATTERNS) {
114
+ for (const match of text.matchAll(pattern)) {
115
+ if (match[1])
116
+ push(match[1]);
117
+ }
118
+ }
119
+ }
120
+ return out;
121
+ }
122
+ export function parseDecision(text) {
123
+ const { summary, rationale } = splitSummaryAndRationale(text);
124
+ const rejected = extractRejectedAlternatives(text);
125
+ // Infer domain from keywords
126
+ const lower = text.toLowerCase();
127
+ let domain = "implementation";
128
+ for (const [d, keywords] of Object.entries(DOMAIN_HINTS)) {
129
+ if (keywords.some((k) => lower.includes(k))) {
130
+ domain = d;
131
+ break;
132
+ }
133
+ }
134
+ return { summary, rationale, rejected_alternatives: rejected, domain };
135
+ }
136
+ //# sourceMappingURL=record-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-parser.js","sourceRoot":"","sources":["../../src/engine/record-parser.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * Condensed version of the 3 mandatory gates from docs/CLAUDE_TEMPLATE.md.
4
4
  * Sent in the MCP initialize response so any MCP client gets workflow guidance.
5
5
  */
6
- export declare const TWINING_INSTRUCTIONS = "# Twining \u2014 Agent Coordination\n\nTwining provides persistent project memory: decisions survive context resets, new sessions start informed, and multi-agent work stays coordinated. State lives in `.twining/` as plain files.\n\n## 3 Mandatory Gates\n\n### Gate 1: Context Assembly (BEFORE working)\nYour FIRST tool call MUST be `twining_assemble` with your task description and scope. Do not read files or make changes until assemble returns. Also call `twining_why` on files you plan to modify.\n\n### Gate 2: Decision Recording (AFTER choices)\nCall `twining_decide` for any architectural or implementation choice where alternatives exist. Include rationale and at least one rejected alternative. Post `finding`, `warning`, and `need` entries via `twining_post` for discoveries, gotchas, and follow-up work.\n\n### Gate 3: Status & Handoff (BEFORE completing)\nPost a `status` entry via `twining_post` summarizing what you did. Link commits via `twining_link_commit`. On complex tasks, call `twining_verify` to check decision hygiene.\n\n## Key Conventions\n- **Scopes** use path-prefix semantics: `\"src/auth/\"` not `\"project\"` \u2014 use the narrowest scope that fits\n- **Confidence**: `high` (proven), `medium` (reasonable), `low` (needs validation)\n- **Domains**: architecture, implementation, testing, deployment, security, performance, api-design, data-model\n- Never use `twining_post` with entry_type \"decision\" \u2014 always use `twining_decide`\n- Never skip `twining_assemble` before work or `twining_post` status before handoff\n\n## Tool Groups\n- **Blackboard**: twining_post, twining_read, twining_query, twining_recent, twining_dismiss\n- **Decisions**: twining_decide, twining_why, twining_trace, twining_reconsider, twining_override, twining_promote, twining_search_decisions, twining_link_commit, twining_commits\n- **Context**: twining_assemble, twining_summarize, twining_what_changed\n- **Graph**: twining_add_entity, twining_add_relation, twining_neighbors, twining_graph_query, twining_prune_graph\n- **Verification**: twining_verify\n- **Lifecycle**: twining_status, twining_archive, twining_export\n- **Coordination**: twining_agents, twining_register, twining_discover, twining_delegate, twining_handoff, twining_acknowledge\n";
6
+ export declare const TWINING_INSTRUCTIONS = "# Twining \u2014 Agent Coordination\n\nTwining provides persistent project memory: decisions survive context resets, new sessions start informed, and multi-agent work stays coordinated. State lives in `.twining/` as plain files.\n\n## 2 Mandatory Gates\n\n### Gate 1: Context Assembly (BEFORE working)\nYour FIRST tool call MUST be `twining_assemble` with your task description and scope. Do not read files or make changes until assemble returns. Also call `twining_why` on files you plan to modify.\n\n### Gate 2: Record (BEFORE committing or ending)\nCall `twining_record` with a summary and any decisions before every `git commit` or session end. Write decisions as natural sentences: \"Chose X over Y \u2014 reason\". The server handles routing to the decision store and blackboard.\n\n## Key Conventions\n- **Scopes** use path-prefix semantics: `\"src/auth/\"` not `\"project\"` \u2014 use the narrowest scope that fits\n- Never skip `twining_assemble` before work or `twining_record` before committing\n\n## Core Tools\n- **twining_assemble** \u2014 orient before working (Gate 1)\n- **twining_record** \u2014 record what you did before committing/ending (Gate 2)\n- **twining_post** \u2014 share findings, warnings, or needs during work\n- **twining_why** \u2014 check what decisions constrain a file before modifying it\n";
7
7
  //# sourceMappingURL=instructions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,+tEA8BhC,CAAC"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,szCAqBhC,CAAC"}
@@ -7,31 +7,22 @@ export const TWINING_INSTRUCTIONS = `# Twining — Agent Coordination
7
7
 
8
8
  Twining provides persistent project memory: decisions survive context resets, new sessions start informed, and multi-agent work stays coordinated. State lives in \`.twining/\` as plain files.
9
9
 
10
- ## 3 Mandatory Gates
10
+ ## 2 Mandatory Gates
11
11
 
12
12
  ### Gate 1: Context Assembly (BEFORE working)
13
13
  Your FIRST tool call MUST be \`twining_assemble\` with your task description and scope. Do not read files or make changes until assemble returns. Also call \`twining_why\` on files you plan to modify.
14
14
 
15
- ### Gate 2: Decision Recording (AFTER choices)
16
- Call \`twining_decide\` for any architectural or implementation choice where alternatives exist. Include rationale and at least one rejected alternative. Post \`finding\`, \`warning\`, and \`need\` entries via \`twining_post\` for discoveries, gotchas, and follow-up work.
17
-
18
- ### Gate 3: Status & Handoff (BEFORE completing)
19
- Post a \`status\` entry via \`twining_post\` summarizing what you did. Link commits via \`twining_link_commit\`. On complex tasks, call \`twining_verify\` to check decision hygiene.
15
+ ### Gate 2: Record (BEFORE committing or ending)
16
+ Call \`twining_record\` with a summary and any decisions before every \`git commit\` or session end. Write decisions as natural sentences: "Chose X over Y reason". The server handles routing to the decision store and blackboard.
20
17
 
21
18
  ## Key Conventions
22
19
  - **Scopes** use path-prefix semantics: \`"src/auth/"\` not \`"project"\` — use the narrowest scope that fits
23
- - **Confidence**: \`high\` (proven), \`medium\` (reasonable), \`low\` (needs validation)
24
- - **Domains**: architecture, implementation, testing, deployment, security, performance, api-design, data-model
25
- - Never use \`twining_post\` with entry_type "decision" — always use \`twining_decide\`
26
- - Never skip \`twining_assemble\` before work or \`twining_post\` status before handoff
20
+ - Never skip \`twining_assemble\` before work or \`twining_record\` before committing
27
21
 
28
- ## Tool Groups
29
- - **Blackboard**: twining_post, twining_read, twining_query, twining_recent, twining_dismiss
30
- - **Decisions**: twining_decide, twining_why, twining_trace, twining_reconsider, twining_override, twining_promote, twining_search_decisions, twining_link_commit, twining_commits
31
- - **Context**: twining_assemble, twining_summarize, twining_what_changed
32
- - **Graph**: twining_add_entity, twining_add_relation, twining_neighbors, twining_graph_query, twining_prune_graph
33
- - **Verification**: twining_verify
34
- - **Lifecycle**: twining_status, twining_archive, twining_export
35
- - **Coordination**: twining_agents, twining_register, twining_discover, twining_delegate, twining_handoff, twining_acknowledge
22
+ ## Core Tools
23
+ - **twining_assemble** orient before working (Gate 1)
24
+ - **twining_record** record what you did before committing/ending (Gate 2)
25
+ - **twining_post** — share findings, warnings, or needs during work
26
+ - **twining_why** check what decisions constrain a file before modifying it
36
27
  `;
37
28
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BnC,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgCpE,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,CAkK/D"}
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,CA+K/D"}
package/dist/server.js CHANGED
@@ -26,6 +26,7 @@ import { SearchEngine } from "./embeddings/search.js";
26
26
  import { registerBlackboardTools } from "./tools/blackboard-tools.js";
27
27
  import { registerDecisionTools } from "./tools/decision-tools.js";
28
28
  import { registerContextTools } from "./tools/context-tools.js";
29
+ import { registerRecordTools } from "./tools/record-tools.js";
29
30
  import { registerLifecycleTools } from "./tools/lifecycle-tools.js";
30
31
  import { registerGraphTools } from "./tools/graph-tools.js";
31
32
  import { registerVerifyTools } from "./tools/verify-tools.js";
@@ -35,6 +36,8 @@ import { AgentStore } from "./storage/agent-store.js";
35
36
  import { HandoffStore } from "./storage/handoff-store.js";
36
37
  import { CoordinationEngine } from "./engine/coordination.js";
37
38
  import { registerCoordinationTools } from "./tools/coordination-tools.js";
39
+ import { HousekeepingEngine } from "./engine/housekeeping.js";
40
+ import { registerHousekeepingTools } from "./tools/housekeeping-tools.js";
38
41
  import { MetricsCollector } from "./analytics/metrics-collector.js";
39
42
  import { createInstrumentedServer } from "./analytics/instrumented-server.js";
40
43
  import { TWINING_INSTRUCTIONS } from "./instructions.js";
@@ -79,6 +82,8 @@ export function createServer(projectRoot) {
79
82
  // Create verify engine
80
83
  const verifyEngine = new VerifyEngine(decisionStore, blackboardStore, blackboardEngine, graphEngine, projectRoot);
81
84
  verifyEngine.setAssemblyChecker((agentId) => contextAssembler.hasRecentAssembly(agentId));
85
+ // Create housekeeping engine
86
+ const housekeepingEngine = new HousekeepingEngine(twiningDir, blackboardStore, decisionStore, archiver, graphEngine);
82
87
  // Create exporter
83
88
  const exporter = new Exporter(blackboardStore, decisionStore, graphStore);
84
89
  // Process pending posts and actions (fire-and-forget, non-fatal)
@@ -105,10 +110,14 @@ export function createServer(projectRoot) {
105
110
  const toolMode = config.tools?.mode ?? "full";
106
111
  const fullSurface = config.tools?.full_surface ?? false;
107
112
  // Core tools (always registered in both full and lite modes)
113
+ registerRecordTools(server, blackboardEngine, decisionEngine, projectRoot);
114
+ registerHousekeepingTools(server, housekeepingEngine);
108
115
  registerBlackboardTools(server, blackboardEngine, { fullSurface });
109
116
  registerDecisionTools(server, decisionEngine, { fullSurface });
110
117
  registerContextTools(server, contextAssembler, { fullSurface });
111
- registerVerifyTools(server, verifyEngine);
118
+ if (fullSurface) {
119
+ registerVerifyTools(server, verifyEngine);
120
+ }
112
121
  registerCoordinationTools(server, agentStore, coordinationEngine, config, graphPopulator, { fullSurface });
113
122
  // Export tools only in full surface mode
114
123
  if (fullSurface) {
@@ -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":"AAAA;;;;GAIG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAatE,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,oCAAoC;IACpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAElD,cAAc;IACd,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAEtC,gBAAgB;IAChB,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAE9C,sEAAsE;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE9D,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,YAAY,CACb,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,cAAc,CACvC,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,CACZ,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAC3B,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,YAAY,CACb,CAAC;IAEF,+EAA+E;IAC/E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,aAAa,IAAI,KAAK,CAAC;IAC1D,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjF,uEAAuE;IACvE,IAAI,cAAc,EAAE,CAAC;QACnB,gBAAgB,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACrD,CAAC;IAED,mEAAmE;IACnE,gBAAgB,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IAEvD,6EAA6E;IAC7E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAElD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,eAAe,EACf,aAAa,EACb,YAAY,EACZ,MAAM,EACN,WAAW,EACX,cAAc,EACd,YAAY,EAAI,kCAAkC;IAClD,UAAU,CACX,CAAC;IAEF,yCAAyC;IACzC,cAAc,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5C,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC5C,CAAC;IAEF,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC/C,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,MAAM,CACP,CAAC;IAEF,uBAAuB;IACvB,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,CACZ,CAAC;IACF,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAC5C,CAAC;IAEF,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAC/C,UAAU,EACV,eAAe,EACf,aAAa,EACb,QAAQ,EACR,WAAW,CACZ,CAAC;IAEF,kBAAkB;IAClB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,eAAe,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IAE1E,iEAAiE;IACjE,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,UAAU,EACV,gBAAgB,EAChB,QAAQ,CACT,CAAC;IACF,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAChD,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,WAAW;KACrB,EACD;QACE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,KAAK,KAAK;YACtD,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,SAAS;KACd,CACF,CAAC;IAEF,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QACjD,wBAAwB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,yFAAyF;IACzF,0FAA0F;IAC1F,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,CAAC;IAExD,6DAA6D;IAC7D,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAC3E,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACtD,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACnE,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/D,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAChE,IAAI,WAAW,EAAE,CAAC;QAChB,mBAAmB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC5C,CAAC;IACD,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAE3G,yCAAyC;IACzC,IAAI,WAAW,EAAE,CAAC;QAChB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,kCAAkC;IAClC,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,sBAAsB,CACpB,MAAM,EACN,UAAU,EACV,eAAe,EACf,aAAa,EACb,UAAU,EACV,QAAQ,EACR,MAAM,EACN,UAAU,CACX,CAAC;QACF,kBAAkB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC1D,CAAC"}
@@ -133,30 +133,31 @@ export function registerBlackboardTools(server, engine, options = {}) {
133
133
  return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
134
134
  }
135
135
  });
136
- // twining_dismiss — Remove specific blackboard entries by ID
137
- server.registerTool("twining_dismiss", {
138
- description: "Remove specific blackboard entries by ID. Use this to clean up false-positive warnings, resolved entries, or other noise. Returns which IDs were dismissed and which were not found.",
139
- inputSchema: {
140
- ids: z
141
- .array(z.string())
142
- .min(1)
143
- .describe("Entry IDs to remove from the blackboard"),
144
- reason: z
145
- .string()
146
- .optional()
147
- .describe("Why these entries are being dismissed (logged but not stored)"),
148
- },
149
- }, async (args) => {
150
- try {
151
- const result = await engine.dismiss(args.ids);
152
- return toolResult(result);
153
- }
154
- catch (e) {
155
- if (e instanceof TwiningError) {
156
- return toolError(e.message, e.code);
136
+ // twining_dismiss — Remove specific blackboard entries by ID (full surface only)
137
+ if (options.fullSurface)
138
+ server.registerTool("twining_dismiss", {
139
+ description: "Remove specific blackboard entries by ID. Use this to clean up false-positive warnings, resolved entries, or other noise. Returns which IDs were dismissed and which were not found.",
140
+ inputSchema: {
141
+ ids: z
142
+ .array(z.string())
143
+ .min(1)
144
+ .describe("Entry IDs to remove from the blackboard"),
145
+ reason: z
146
+ .string()
147
+ .optional()
148
+ .describe("Why these entries are being dismissed (logged but not stored)"),
149
+ },
150
+ }, async (args) => {
151
+ try {
152
+ const result = await engine.dismiss(args.ids);
153
+ return toolResult(result);
157
154
  }
158
- return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
159
- }
160
- });
155
+ catch (e) {
156
+ if (e instanceof TwiningError) {
157
+ return toolError(e.message, e.code);
158
+ }
159
+ return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
160
+ }
161
+ });
161
162
  }
162
163
  //# sourceMappingURL=blackboard-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blackboard-tools.js","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blackboard-tools.js","sourceRoot":"","sources":["../../src/tools/blackboard-tools.ts"],"names":[],"mappings":"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"}
@@ -171,83 +171,84 @@ export function registerCoordinationTools(server, agentStore, coordinationEngine
171
171
  return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
172
172
  }
173
173
  });
174
- // twining_handoff — Create a handoff between agents
175
- server.registerTool("twining_handoff", {
176
- description: "Hand off work to another agent with structured results and context. The next agent will see your handoff in their assemble briefing.",
177
- inputSchema: {
178
- source_agent: z
179
- .string()
180
- .describe("ID of the agent handing off work"),
181
- target_agent: z
182
- .string()
183
- .optional()
184
- .describe("ID of the target agent (omit for open handoff to any agent)"),
185
- scope: z
186
- .string()
187
- .optional()
188
- .describe("Scope of the handoff (default: 'project')"),
189
- summary: z
190
- .string()
191
- .describe("Summary of work being handed off"),
192
- results: z
193
- .array(z.object({
194
- description: z.string().describe("What was done"),
195
- status: z
196
- .enum(["completed", "partial", "blocked", "failed"])
197
- .describe("Result status"),
198
- artifacts: z
199
- .array(z.string())
174
+ // twining_handoff — Create a handoff between agents (full surface only)
175
+ if (options.fullSurface)
176
+ server.registerTool("twining_handoff", {
177
+ description: "Hand off work to another agent with structured results and context. The next agent will see your handoff in their assemble briefing.",
178
+ inputSchema: {
179
+ source_agent: z
180
+ .string()
181
+ .describe("ID of the agent handing off work"),
182
+ target_agent: z
183
+ .string()
200
184
  .optional()
201
- .describe("File paths or artifact IDs produced"),
202
- notes: z
185
+ .describe("ID of the target agent (omit for open handoff to any agent)"),
186
+ scope: z
203
187
  .string()
204
188
  .optional()
205
- .describe("Additional notes"),
206
- }))
207
- .describe("Results of the work being handed off"),
208
- auto_snapshot: z
209
- .boolean()
210
- .optional()
211
- .describe("Auto-assemble context snapshot from decisions/warnings (default: true)"),
212
- },
213
- }, async (args) => {
214
- try {
215
- const record = await coordinationEngine.createHandoff({
216
- source_agent: args.source_agent,
217
- target_agent: args.target_agent,
218
- scope: args.scope,
219
- summary: args.summary,
220
- results: args.results,
221
- auto_snapshot: args.auto_snapshot,
222
- });
223
- // Auto-populate graph with handoff entities/relations
224
- if (graphPopulator) {
225
- await graphPopulator.onHandoff({
189
+ .describe("Scope of the handoff (default: 'project')"),
190
+ summary: z
191
+ .string()
192
+ .describe("Summary of work being handed off"),
193
+ results: z
194
+ .array(z.object({
195
+ description: z.string().describe("What was done"),
196
+ status: z
197
+ .enum(["completed", "partial", "blocked", "failed"])
198
+ .describe("Result status"),
199
+ artifacts: z
200
+ .array(z.string())
201
+ .optional()
202
+ .describe("File paths or artifact IDs produced"),
203
+ notes: z
204
+ .string()
205
+ .optional()
206
+ .describe("Additional notes"),
207
+ }))
208
+ .describe("Results of the work being handed off"),
209
+ auto_snapshot: z
210
+ .boolean()
211
+ .optional()
212
+ .describe("Auto-assemble context snapshot from decisions/warnings (default: true)"),
213
+ },
214
+ }, async (args) => {
215
+ try {
216
+ const record = await coordinationEngine.createHandoff({
226
217
  source_agent: args.source_agent,
227
218
  target_agent: args.target_agent,
228
219
  scope: args.scope,
220
+ summary: args.summary,
229
221
  results: args.results,
222
+ auto_snapshot: args.auto_snapshot,
223
+ });
224
+ // Auto-populate graph with handoff entities/relations
225
+ if (graphPopulator) {
226
+ await graphPopulator.onHandoff({
227
+ source_agent: args.source_agent,
228
+ target_agent: args.target_agent,
229
+ scope: args.scope,
230
+ results: args.results,
231
+ });
232
+ }
233
+ return toolResult({
234
+ id: record.id,
235
+ created_at: record.created_at,
236
+ source_agent: record.source_agent,
237
+ target_agent: record.target_agent,
238
+ scope: record.scope,
239
+ summary: record.summary,
240
+ result_count: record.results.length,
241
+ context_snapshot_size: {
242
+ decisions: record.context_snapshot.decision_ids.length,
243
+ warnings: record.context_snapshot.warning_ids.length,
244
+ findings: record.context_snapshot.finding_ids.length,
245
+ },
230
246
  });
231
247
  }
232
- return toolResult({
233
- id: record.id,
234
- created_at: record.created_at,
235
- source_agent: record.source_agent,
236
- target_agent: record.target_agent,
237
- scope: record.scope,
238
- summary: record.summary,
239
- result_count: record.results.length,
240
- context_snapshot_size: {
241
- decisions: record.context_snapshot.decision_ids.length,
242
- warnings: record.context_snapshot.warning_ids.length,
243
- findings: record.context_snapshot.finding_ids.length,
244
- },
245
- });
246
- }
247
- catch (e) {
248
- return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
249
- }
250
- });
248
+ catch (e) {
249
+ return toolError(e instanceof Error ? e.message : "Unknown error", "INTERNAL_ERROR");
250
+ }
251
+ });
251
252
  // twining_acknowledge — Acknowledge receipt of a handoff (full surface only)
252
253
  if (options.fullSurface)
253
254
  server.registerTool("twining_acknowledge", {
@@ -1 +1 @@
1
- {"version":3,"file":"coordination-tools.js","sourceRoot":"","sources":["../../src/tools/coordination-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coordination-tools.js","sourceRoot":"","sources":["../../src/tools/coordination-tools.ts"],"names":[],"mappings":"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"}