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.
- package/README.md +35 -61
- package/dist/engine/decisions.d.ts.map +1 -1
- package/dist/engine/decisions.js +17 -10
- package/dist/engine/decisions.js.map +1 -1
- package/dist/engine/housekeeping.d.ts +60 -0
- package/dist/engine/housekeeping.d.ts.map +1 -0
- package/dist/engine/housekeeping.js +180 -0
- package/dist/engine/housekeeping.js.map +1 -0
- package/dist/engine/record-parser.d.ts +16 -0
- package/dist/engine/record-parser.d.ts.map +1 -0
- package/dist/engine/record-parser.js +136 -0
- package/dist/engine/record-parser.js.map +1 -0
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.d.ts.map +1 -1
- package/dist/instructions.js +9 -18
- package/dist/instructions.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/blackboard-tools.js +25 -24
- package/dist/tools/blackboard-tools.js.map +1 -1
- package/dist/tools/coordination-tools.js +69 -68
- package/dist/tools/coordination-tools.js.map +1 -1
- package/dist/tools/decision-tools.js +169 -165
- package/dist/tools/decision-tools.js.map +1 -1
- package/dist/tools/housekeeping-tools.d.ts +4 -0
- package/dist/tools/housekeeping-tools.d.ts.map +1 -0
- package/dist/tools/housekeeping-tools.js +46 -0
- package/dist/tools/housekeeping-tools.js.map +1 -0
- package/dist/tools/record-tools.d.ts +5 -0
- package/dist/tools/record-tools.d.ts.map +1 -0
- package/dist/tools/record-tools.js +292 -0
- package/dist/tools/record-tools.js.map +1 -0
- 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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"}
|
package/dist/instructions.d.ts
CHANGED
|
@@ -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##
|
|
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
|
|
1
|
+
{"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,szCAqBhC,CAAC"}
|
package/dist/instructions.js
CHANGED
|
@@ -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
|
-
##
|
|
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:
|
|
16
|
-
Call \`
|
|
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
|
-
-
|
|
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
|
-
##
|
|
29
|
-
- **
|
|
30
|
-
- **
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
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
|
package/dist/instructions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBnC,CAAC"}
|
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;
|
|
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
|
-
|
|
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) {
|
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":"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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
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("
|
|
202
|
-
|
|
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("
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,UAAU,yBAAyB,CACvC,MAAiB,EACjB,UAAsB,EACtB,kBAAsC,EACtC,MAAqB,EACrB,cAA0C,EAC1C,UAAqC,EAAE;IAEvC,uFAAuF;IACvF,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,gBAAgB,EAChB;YACE,WAAW,EACT,yEAAyE;YAC3E,WAAW,EAAE;gBACX,YAAY,EAAE,CAAC;qBACZ,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CACP,gDAAgD,CACjD;aACJ;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;gBACzC,MAAM,UAAU,GACd,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,2BAA2B,CAAC;gBACzD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEvB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACpC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,UAAU,CAAC;iBAC9D,CAAC,CAAC,CAAC;gBAEJ,MAAM,QAAQ,GAAG,WAAW;oBAC1B,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;gBAEhD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC/B,CAAC,MAAM,CAAC;gBAET,OAAO,UAAU,CAAC;oBAChB,MAAM,EAAE,QAAQ;oBAChB,gBAAgB,EAAE,MAAM,CAAC,MAAM;oBAC/B,YAAY,EAAE,WAAW;iBAC1B,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IAEF,qFAAqF;IACrF,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,kBAAkB,EAClB;YACE,WAAW,EACT,2JAA2J;YAC7J,WAAW,EAAE;gBACX,QAAQ,EAAE,CAAC;qBACR,MAAM,EAAE;qBACR,QAAQ,CAAC,uEAAuE,CAAC;gBACpF,YAAY,EAAE,CAAC;qBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,EAAE;qBACV,QAAQ,CAAC,qDAAqD,CAAC;gBAClE,IAAI,EAAE,CAAC;qBACJ,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,6CAA6C,CAAC;gBAC1D,WAAW,EAAE,CAAC;qBACX,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,mDAAmD,CAAC;aACjE;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC;oBACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC;gBACH,wCAAwC;gBACxC,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,UAAU,CAAC;oBAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IAEF,oFAAoF;IACpF,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,kBAAkB,EAClB;YACE,WAAW,EACT,4IAA4I;YAC9I,WAAW,EAAE;gBACX,qBAAqB,EAAE,CAAC;qBACrB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,CAAC,mEAAmE,CAAC;gBAChF,YAAY,EAAE,CAAC;qBACZ,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,gDAAgD,CAAC;gBAC7D,SAAS,EAAE,CAAC;qBACT,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,4CAA4C,CAAC;aAC1D;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC;oBAC/C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC1B,CAAC,CAAC;gBACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IAEF,qFAAqF;IACrF,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,kBAAkB,EAClB;YACE,WAAW,EACT,+IAA+I;YACjJ,WAAW,EAAE;gBACX,OAAO,EAAE,CAAC;qBACP,MAAM,EAAE;qBACR,QAAQ,CAAC,qDAAqD,CAAC;gBAClE,qBAAqB,EAAE,CAAC;qBACrB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,CAAC,mCAAmC,CAAC;gBAChD,OAAO,EAAE,CAAC;qBACP,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;qBAC/B,QAAQ,EAAE;qBACV,QAAQ,CAAC,qDAAqD,CAAC;gBAClE,UAAU,EAAE,CAAC;qBACV,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,wDAAwD,CAAC;gBACrE,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,+CAA+C,CAAC;gBAC5D,IAAI,EAAE,CAAC;qBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;qBACjB,QAAQ,EAAE;qBACV,QAAQ,CAAC,0CAA0C,CAAC;gBACvD,QAAQ,EAAE,CAAC;qBACR,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,8CAA8C,CAAC;aAC5D;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,cAAc,CAAC;oBACrD,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;oBACjD,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACxB,CAAC,CAAC;gBACH,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IAEF,wEAAwE;IACxE,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,iBAAiB,EACjB;YACE,WAAW,EACT,sIAAsI;YACxI,WAAW,EAAE;gBACX,YAAY,EAAE,CAAC;qBACZ,MAAM,EAAE;qBACR,QAAQ,CAAC,kCAAkC,CAAC;gBAC/C,YAAY,EAAE,CAAC;qBACZ,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,6DAA6D,CAAC;gBAC1E,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,2CAA2C,CAAC;gBACxD,OAAO,EAAE,CAAC;qBACP,MAAM,EAAE;qBACR,QAAQ,CAAC,kCAAkC,CAAC;gBAC/C,OAAO,EAAE,CAAC;qBACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;oBACP,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;oBACjD,MAAM,EAAE,CAAC;yBACN,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;yBACnD,QAAQ,CAAC,eAAe,CAAC;oBAC5B,SAAS,EAAE,CAAC;yBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;yBACjB,QAAQ,EAAE;yBACV,QAAQ,CAAC,qCAAqC,CAAC;oBAClD,KAAK,EAAE,CAAC;yBACL,MAAM,EAAE;yBACR,QAAQ,EAAE;yBACV,QAAQ,CAAC,kBAAkB,CAAC;iBAChC,CAAC,CACH;qBACA,QAAQ,CAAC,sCAAsC,CAAC;gBACnD,aAAa,EAAE,CAAC;qBACb,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,wEAAwE,CAAC;aACtF;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC;oBACpD,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;oBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,aAAa,EAAE,IAAI,CAAC,aAAa;iBAClC,CAAC,CAAC;gBACH,sDAAsD;gBACtD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,cAAc,CAAC,SAAS,CAAC;wBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACtB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,UAAU,CAAC;oBAChB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;oBACnC,qBAAqB,EAAE;wBACrB,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM;wBACtD,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM;wBACpD,QAAQ,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,MAAM;qBACrD;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,IAAI,OAAO,CAAC,WAAW;QAAE,MAAM,CAAC,YAAY,CAC1C,qBAAqB,EACrB;YACE,WAAW,EACT,uEAAuE;YACzE,WAAW,EAAE;gBACX,UAAU,EAAE,CAAC;qBACV,MAAM,EAAE;qBACR,QAAQ,CAAC,kCAAkC,CAAC;gBAC/C,QAAQ,EAAE,CAAC;qBACR,MAAM,EAAE;qBACR,QAAQ,CAAC,2CAA2C,CAAC;aACzD;SACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CACxD,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,QAAQ,CACd,CAAC;gBACF,OAAO,UAAU,CAAC;oBAChB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;iBAClC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,SAAS,CACd,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|