devsmind-mcp 3.0.0 → 4.0.1
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 +11 -20
- package/dist/cli/diff.js +1 -1
- package/dist/cli/diff.js.map +1 -1
- package/dist/cli/index.js +20 -9
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/integrations/mcp.js +22 -1
- package/dist/cli/integrations/mcp.js.map +1 -1
- package/dist/cli/integrations/memory-topics.d.ts +21 -10
- package/dist/cli/integrations/memory-topics.js +32 -9
- package/dist/cli/integrations/memory-topics.js.map +1 -1
- package/dist/cli/integrations/memory.d.ts +14 -9
- package/dist/cli/integrations/memory.js +47 -229
- package/dist/cli/integrations/memory.js.map +1 -1
- package/dist/cli/integrations/registry.d.ts +27 -16
- package/dist/cli/integrations/registry.js +66 -34
- package/dist/cli/integrations/registry.js.map +1 -1
- package/dist/cli/rule.js +11 -16
- package/dist/cli/rule.js.map +1 -1
- package/dist/db/activity-graph.d.ts +55 -0
- package/dist/db/activity-graph.js +314 -0
- package/dist/db/activity-graph.js.map +1 -0
- package/dist/db/activity.d.ts +21 -0
- package/dist/db/activity.js +3 -2
- package/dist/db/activity.js.map +1 -1
- package/dist/db/database.d.ts +72 -4
- package/dist/db/database.js +89 -8
- package/dist/db/database.js.map +1 -1
- package/dist/db/index-build.d.ts +75 -0
- package/dist/db/index-build.js +177 -0
- package/dist/db/index-build.js.map +1 -0
- package/dist/db/revert.js +1 -1
- package/dist/db/revert.js.map +1 -1
- package/dist/db/schema.d.ts +2 -2
- package/dist/db/staging.d.ts +3 -2
- package/dist/db/staging.js +1 -1
- package/dist/db/staging.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +215 -208
- package/dist/mcp/server.js.map +1 -1
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.js +27 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/scanner.d.ts +6 -4
- package/dist/utils/scanner.js +6 -4
- package/dist/utils/scanner.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/integrations/registry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/cli/integrations/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/rule.js
CHANGED
|
@@ -41,7 +41,6 @@ const path = __importStar(require("path"));
|
|
|
41
41
|
const config_1 = require("../utils/config");
|
|
42
42
|
const prompt_1 = require("./integrations/prompt");
|
|
43
43
|
const registry_1 = require("./integrations/registry");
|
|
44
|
-
const scanner_1 = require("../utils/scanner");
|
|
45
44
|
/**
|
|
46
45
|
* Build the ready-to-paste DevsMind workspace rule from a project's config.
|
|
47
46
|
* Pure string builder — no I/O — so it can be printed or written to a file.
|
|
@@ -89,21 +88,17 @@ function buildRule(config, devmindDir, workflowStyle = 'automatic') {
|
|
|
89
88
|
const recordingBody = manual ? [
|
|
90
89
|
`This project is set to **MANUAL**. Search/read tools (${bt}search_nodes${bt}, ${bt}get_node_code${bt}) stay always-on — use them before reading a raw file or guessing at impact, same as automatic mode. What's different is the write side:`,
|
|
91
90
|
'',
|
|
92
|
-
`1. Do **not** call ${bt}
|
|
91
|
+
`1. Do **not** call ${bt}commit_changes${bt} on your own initiative — not after an edit, not at a "natural checkpoint," not because a turn is ending. The developer decides what reaches the graph and when.`,
|
|
93
92
|
`2. If the developer explicitly asks you to commit/save/record something ("commit this", "save that to devsmind", "record what we just did"), then follow the normal automatic-mode mechanics: ${bt}edit_node${bt} already staged whatever it traced; call ${bt}commit_changes${bt} with ${bt}message${bt} set to their request verbatim, ONE ${bt}reasoning${bt} (what_changed/why/goal) covering everything staged, and ${bt}feedback${bt} (5 strings: ${bt}graph_problems${bt}, ${bt}edge_problems${bt}, ${bt}tools_used${bt}, ${bt}dropped_and_why${bt}, ${bt}devsmind_better${bt} — each must be answered, ${bt}"none"${bt} is fine where nothing applies). All three are REQUIRED by the tool itself, not a style choice. If anything staged is a brand-NEW node, ${bt}commit_changes${bt} also requires a ${bt}description${bt} for it first (pass it on the ${bt}edit_node${bt} call that created it, or call ${bt}add_description${bt}) — enforced by the tool regardless of workflow style, not something MANUAL mode opts out of.`,
|
|
94
93
|
`3. ${bt}session_id${bt} is also mechanically required on every DevsMind WRITE regardless of mode (see above) — that's the protocol, not a recording obligation. Calling ${bt}start_session${bt} and carrying its id doesn't mean anything is being tracked; it's just what makes a write succeed at all. Read-only tools (${bt}search_nodes${bt}, ${bt}get_node_code${bt}, ${bt}get_activity_log${bt}, etc.) do NOT need it — search and read freely before ${bt}start_session${bt} has even run.`,
|
|
95
94
|
`4. Don't narrate that you skipped staging/committing — silence is the expected default here. Only bring up DevsMind's state when it's relevant or the developer asks.`,
|
|
96
|
-
`5. ${bt}stage_change${bt}, when it is used, is source code only (${Array.from(scanner_1.INDEXABLE_EXTENSIONS).sort().join(', ')}) — skip stylesheets, markup, config, docs, images.`
|
|
97
95
|
] : [
|
|
98
|
-
|
|
99
|
-
'
|
|
100
|
-
`
|
|
101
|
-
`
|
|
102
|
-
`
|
|
103
|
-
`
|
|
104
|
-
`5. ${bt}feedback${bt} is the third required field: 5 strings (${bt}graph_problems${bt}, ${bt}edge_problems${bt}, ${bt}tools_used${bt}, ${bt}dropped_and_why${bt}, ${bt}devsmind_better${bt}). Every field must be ANSWERED, but none has to contain a problem — ${bt}"none"${bt} is a valid answer everywhere. It's the only channel that improves DevsMind instead of leaving it frozen at index time, so before writing "none", actually check whether one moment in THIS task took an extra tool call, a guess, a re-read, or a wrong turn; one specific sentence with evidence (${bt}file:line${bt}) beats a reflexive "none". Never invent an issue to fill a field. ${bt}graph_problems${bt}/${bt}edge_problems${bt} feed a local graph-fix queue (${bt}read_graph_feedback${bt}); the rest feed a product log. Both are local and gitignored — ${bt}devsmind feedback${bt} shows them.`,
|
|
105
|
-
`6. Every brand-NEW node needs a ${bt}description${bt} before ${bt}commit_changes${bt} will accept it — 1-3 sentences of what it does and its domain concepts, in words a teammate might search by later, never a restatement of the name. If an ${bt}edit_node${bt} call creates exactly ONE new function/class, pass ${bt}description${bt} on that same call — you already know what you just wrote, so there's no reason to wait for the refusal and a separate round trip. Otherwise pass it on ${bt}stage_change${bt}, or call ${bt}add_description${bt} for whatever ${bt}edit_node${bt} traced as new (its response tells you when). Write it while the code is still in front of you — commit_changes will otherwise refuse the batch and hand back exactly which node_ids need one.`,
|
|
106
|
-
`7. Don't print node/history data as text instead of calling the tools — that looks done but records nothing.`
|
|
96
|
+
`1. ${bt}edit_node${bt} is the write path for **every** file — never your own edit/write tool, whatever the extension. Pass ${bt}file_path${bt} + ${bt}old_string${bt} + ${bt}new_string${bt}, exactly like an ordinary edit tool; to create a file, pass ${bt}old_string: ""${bt} and the whole file as ${bt}new_string${bt}. It traces where your text landed to the function/class you actually changed, and answers with that node's callers. No ${bt}node_id${bt} to look up, no ${bt}code_snapshot${bt} to send back. Writes landing outside any function (markup, config, imports) get no graph node — expected, not a failure — but the whole-file change is still staged for the local activity log, so ${bt}commit_changes${bt} makes it revertable there too.`,
|
|
97
|
+
`2. Call ${bt}commit_changes${bt} at natural checkpoints (a batch of related nodes, a context switch) — not saved for a single end-of-task call that's easy to skip when the task runs long. ${bt}edit_node${bt} only stages; it never writes to the graph on its own. Always commit before ending a turn with anything staged.`,
|
|
98
|
+
`3. ${bt}message${bt}, ${bt}reasoning${bt} AND ${bt}feedback${bt} are all REQUIRED on ${bt}commit_changes${bt} — the call fails without any one of them. ${bt}message${bt} is the user's request, verbatim, that led to this commit; it builds a local activity log (${bt}devsmind view${bt} → Activity, never pushed) grouping your work by request and letting the user revert one as a whole. Pass the exact same text again on a later commit that's still answering the same request — that merges them into one entry instead of splitting it. ${bt}reasoning${bt} (${bt}what_changed${bt}/${bt}why${bt}/${bt}goal${bt}) is ONE object covering **everything staged since the last commit** — not one per edit_node call, one per commit — and gets recorded against every node that commit touches.`,
|
|
99
|
+
`4. ${bt}feedback${bt} is the third required field: 5 strings (${bt}graph_problems${bt}, ${bt}edge_problems${bt}, ${bt}tools_used${bt}, ${bt}dropped_and_why${bt}, ${bt}devsmind_better${bt}). Every field must be ANSWERED, but none has to contain a problem — ${bt}"none"${bt} is a valid answer everywhere. It's the only channel that improves DevsMind instead of leaving it frozen at index time, so before writing "none", actually check whether one moment in THIS task took an extra tool call, a guess, a re-read, or a wrong turn; one specific sentence with evidence (${bt}file:line${bt}) beats a reflexive "none". Never invent an issue to fill a field. ${bt}graph_problems${bt}/${bt}edge_problems${bt} feed a local graph-fix queue (${bt}read_graph_feedback${bt}); the rest feed a product log. Both are local and gitignored — ${bt}devsmind feedback${bt} shows them.`,
|
|
100
|
+
`5. Every brand-NEW node needs a ${bt}description${bt} before ${bt}commit_changes${bt} will accept it — 1-3 sentences of what it does and its domain concepts, in words a teammate might search by later, never a restatement of the name. If an ${bt}edit_node${bt} call creates exactly ONE new function/class, pass ${bt}description${bt} on that same call — you already know what you just wrote, so there's no reason to wait for the refusal and a separate round trip. Otherwise call ${bt}add_description${bt} for whatever ${bt}edit_node${bt} traced as new (its response tells you when). Write it while the code is still in front of you — commit_changes will otherwise refuse the batch and hand back exactly which node_ids need one.`,
|
|
101
|
+
`6. Don't print node/history data as text instead of calling the tools — that looks done but records nothing.`
|
|
107
102
|
];
|
|
108
103
|
const lines = [
|
|
109
104
|
'## DevsMind — AI Brain',
|
|
@@ -118,7 +113,7 @@ function buildRule(config, devmindDir, workflowStyle = 'automatic') {
|
|
|
118
113
|
'',
|
|
119
114
|
whatThisIs,
|
|
120
115
|
'',
|
|
121
|
-
`**${bt}session_id${bt} is required on every DevsMind WRITE** (${bt}edit_node${bt}, ${bt}
|
|
116
|
+
`**${bt}session_id${bt} is required on every DevsMind WRITE** (${bt}edit_node${bt}, ${bt}commit_changes${bt}, and the other mutating calls) **— read-only tools do not need it.** Call ${bt}start_session${bt} before your first write, then pass the ${bt}session_id${bt} it returns on every later write this conversation — every response echoes it back so it stays in front of you even across a long or compacted conversation. Never invent one. This applies in both workflow styles — it's the protocol, not a recording obligation. ${bt}get_activity_log${bt} additionally accepts ${bt}session_id${bt} as its own OPTIONAL filter ("just this session's activity") — don't pass your own conversation's id there by default, or you'll silently narrow an otherwise-broad query to one session.`,
|
|
122
117
|
'',
|
|
123
118
|
'### Tool Triggers',
|
|
124
119
|
'',
|
|
@@ -131,10 +126,10 @@ function buildRule(config, devmindDir, workflowStyle = 'automatic') {
|
|
|
131
126
|
`| Trace a flow through MULTIPLE functions | ${bt}get_node_code${bt} with ${bt}graph_depth:3${bt} + ${bt}graph_direction:"out"${bt} + ${bt}graph_code:true${bt} in ONE call — don't chain per-function calls. If some nodes' code didn't fit the budget they're named in ${bt}graph.code_omitted_node_ids${bt}; fetch exactly those, or re-issue with a larger ${bt}graph_code_budget${bt} |`,
|
|
132
127
|
`| What would break if I change this? | Direct callers are already in ${bt}used_by_nodes${bt} on the plain ${bt}get_node_code${bt} call; for the FULL transitive blast radius add ${bt}graph_depth:2-3${bt} + ${bt}graph_direction:"in"${bt} in that same call |`,
|
|
133
128
|
`| Before refactoring a function | ${bt}get_node_code${bt} with ${bt}history:"full"${bt} — every revision, with diffable before/after edits |`,
|
|
134
|
-
`| "What changed recently?" / "which files did you touch?" / everything done for a ticket | ${bt}get_activity_log${bt} — filters compose (${bt}developer${bt}, ${bt}session_id${bt}, ${bt}since_hours${bt}/${bt}since${bt}/${bt}until${bt}, ${bt}requirement_contains${bt}), and every entry lists the actual ${bt}files${bt} that commit touched, plus an ${bt}all_files${bt} union
|
|
129
|
+
`| "What changed recently?" / "which files did you touch?" / everything done for a ticket | ${bt}get_activity_log${bt} — filters compose (${bt}developer${bt}, ${bt}session_id${bt}, ${bt}since_hours${bt}/${bt}since${bt}/${bt}until${bt}, ${bt}requirement_contains${bt}), and every entry lists the actual ${bt}files${bt} that commit touched, plus an ${bt}all_files${bt} union and ${bt}total_matched${bt} (the pre-${bt}limit${bt} count). ${bt}source${bt} defaults to ${bt}"auto"${bt}: the local gitignored log, falling back to shared graph history when it's empty — so a fresh clone still gets an answer |`,
|
|
130
|
+
`| What did a TEAMMATE change? / anything on a machine that isn't this one | ${bt}get_activity_log${bt} with ${bt}source:"both"${bt} — ${bt}"auto"${bt} stops at the local log the moment it has anything of your own, so it never surfaces other developers' work. Graph-backed entries come with a ${bt}caveats${bt} array (no revert status, ${bt}request${bt} degrades to the reasoning's Requirement) — read it before acting on them |`,
|
|
135
131
|
editRow,
|
|
136
132
|
createRow,
|
|
137
|
-
`| You wrote a language with no parser (${bt}.py${bt}, ${bt}.go${bt}, ${bt}.java${bt}, …)${manual ? ' and were asked to record it' : ''} | ${bt}stage_change${bt} for that node${manual ? '' : ' — immediately, not batched'} (${bt}edit_node${bt}'s response tells you when) |`,
|
|
138
133
|
commitRow,
|
|
139
134
|
`| Function/class renamed | ${bt}rename_node${bt} |`,
|
|
140
135
|
`| Function/class removed | ${bt}deprecate_node${bt} (never delete — history is lost otherwise) |`,
|
|
@@ -147,7 +142,7 @@ function buildRule(config, devmindDir, workflowStyle = 'automatic') {
|
|
|
147
142
|
'',
|
|
148
143
|
`1. **No external scripts for indexing.** Use ${bt}index_start${bt} / ${bt}index_checkpoint${bt} / ${bt}index_continue${bt} / ${bt}index_complete${bt} natively so progress survives a context reset.`,
|
|
149
144
|
`2. **Don't pause mid-index** for confirmation — keep going until the workspace is indexed or the context limit is hit.`,
|
|
150
|
-
`3. **Drift signals** — ${bt}get_node_code${bt} returning ${bt}snapshot_outdated:true${bt} means the graph disagrees with disk. If you're about to edit that node anyway, an ${bt}edit_node${bt} call re-syncs it as a side effect — nothing extra to do. To force a resync with NO real code change, ${bt}edit_node${bt} can't help (it requires ${bt}old_string${bt} to actually differ from ${bt}new_string${bt}) —
|
|
145
|
+
`3. **Drift signals** — ${bt}get_node_code${bt} returning ${bt}snapshot_outdated:true${bt} means the graph disagrees with disk. If you're about to edit that node anyway, an ${bt}edit_node${bt} call re-syncs it as a side effect — nothing extra to do. To force a resync with NO real code change, ${bt}edit_node${bt} can't help (it requires ${bt}old_string${bt} to actually differ from ${bt}new_string${bt}) — run ${bt}devsmind reindex${bt} instead (incremental parsing of modified/new files). ${bt}source:"cached"${bt} means the symbol wasn't found (renamed/moved/deleted) — verify, then ${bt}rename_node${bt} or ${bt}deprecate_node${bt}.`,
|
|
151
146
|
`4. **Before multi-day work**, call ${bt}workflow_list${bt} — a workflow is a named log of how one piece of functionality grew. If a description matches, offer to continue it (${bt}workflow_bind${bt} + ${bt}workflow_get_context${bt}) rather than starting fresh. Binding is local to your session: it never moves or pauses anyone else's. Once bound, ${bt}commit_changes${bt} auto-logs a step — call ${bt}workflow_add_step${bt} only for what a commit can't express, a decision or research finding that changed no code, with its docs via ${bt}doc_paths${bt}.`,
|
|
152
147
|
'',
|
|
153
148
|
'### A Few Less-Obvious Tools',
|
package/dist/cli/rule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/cli/rule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule.js","sourceRoot":"","sources":["../../src/cli/rule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { DevMindDatabase } from './database';
|
|
2
|
+
import { ActivityLogResult } from './activity';
|
|
3
|
+
/** Everything the shared record cannot answer, stated once and attached to any graph-backed
|
|
4
|
+
* response. Callers act on this data (reverting, attributing, scoping a test pass), so the gaps
|
|
5
|
+
* have to travel with it — a silently thinner entry reads as an authoritative one. */
|
|
6
|
+
export declare const GRAPH_SOURCE_CAVEATS: string[];
|
|
7
|
+
/** How `get_activity_log` chooses its source. See the tool schema for the caller-facing wording. */
|
|
8
|
+
export type ActivitySourceMode = 'auto' | 'local' | 'graph' | 'both';
|
|
9
|
+
export interface ResolvedActivityLogResult extends ActivityLogResult {
|
|
10
|
+
/** Which store(s) actually produced `entries`. */
|
|
11
|
+
source: 'local' | 'graph' | 'both';
|
|
12
|
+
/** True when `auto` found nothing locally and fell through to shared history. */
|
|
13
|
+
fell_back: boolean;
|
|
14
|
+
/** Present whenever any entry came from graph history. */
|
|
15
|
+
caveats?: string[];
|
|
16
|
+
/** Set when the history scan hit its row cap — more shared history exists than was read. */
|
|
17
|
+
history_scan_truncated?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface ActivityQueryOptions {
|
|
20
|
+
developer?: string;
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
sinceHours?: number;
|
|
23
|
+
since?: string;
|
|
24
|
+
until?: string;
|
|
25
|
+
requirementContains?: string;
|
|
26
|
+
limit?: number;
|
|
27
|
+
/** Rows of shared history to scan before giving up. Only used on graph-backed paths. */
|
|
28
|
+
historyScanLimit?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Rebuilds per-commit activity entries from committed history.
|
|
32
|
+
*
|
|
33
|
+
* The date bounds are applied twice on purpose: {@link DevMindDatabase.queryHistoryForActivity}
|
|
34
|
+
* over-selects rows whose accumulation span merely OVERLAPS the window (it cannot see inside the
|
|
35
|
+
* blob), then each block is tested against its own timestamp here. Filtering only in SQL would
|
|
36
|
+
* either drop in-window blocks appended to an older row, or admit out-of-window ones from a row
|
|
37
|
+
* that stayed active — both wrong in a way the caller could not detect.
|
|
38
|
+
*/
|
|
39
|
+
export declare function queryGraphActivityLog(db: DevMindDatabase, opts?: ActivityQueryOptions): {
|
|
40
|
+
result: ActivityLogResult;
|
|
41
|
+
scanTruncated: boolean;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* The single read path behind `get_activity_log` — picks a store, or merges both.
|
|
45
|
+
*
|
|
46
|
+
* `auto` (the default) answers from the local log and falls through to shared history only when it
|
|
47
|
+
* produced nothing. That covers the case the local-only design silently failed: a teammate on a
|
|
48
|
+
* fresh clone, or this developer on another machine.
|
|
49
|
+
*
|
|
50
|
+
* It does NOT cover the inverse, which is why `both` exists — once you have any local activity of
|
|
51
|
+
* your own, `auto` stops short and you never see a teammate's work at all. `both` is the honest
|
|
52
|
+
* team-wide view: local entries in full fidelity, plus shared history for every commit that did not
|
|
53
|
+
* happen here.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveActivityLog(db: DevMindDatabase, devmindPath: string, mode: ActivitySourceMode, opts?: ActivityQueryOptions): ResolvedActivityLogResult;
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.GRAPH_SOURCE_CAVEATS = void 0;
|
|
37
|
+
exports.queryGraphActivityLog = queryGraphActivityLog;
|
|
38
|
+
exports.resolveActivityLog = resolveActivityLog;
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
40
|
+
const database_1 = require("./database");
|
|
41
|
+
const activity_1 = require("./activity");
|
|
42
|
+
/**
|
|
43
|
+
* The SHARED half of `get_activity_log` — "what changed" reconstructed from committed graph
|
|
44
|
+
* history instead of this machine's local message store.
|
|
45
|
+
*
|
|
46
|
+
* The local log (activity.ts) is gitignored by design: it holds verbatim request text and full
|
|
47
|
+
* before/after backups, neither of which belongs in a shared repo. The cost of that decision is
|
|
48
|
+
* that it is empty for everyone except the person who wrote it — a teammate who clones the repo,
|
|
49
|
+
* or the same developer on a second machine, asks "what changed here lately?" and gets nothing
|
|
50
|
+
* back, even though `.devmind/history/*.json` has been recording exactly that all along, committed
|
|
51
|
+
* and pulled.
|
|
52
|
+
*
|
|
53
|
+
* This module reconstructs per-commit entries from that shared record so the answer degrades
|
|
54
|
+
* instead of disappearing. It is a genuinely lossier view, and says so rather than papering over
|
|
55
|
+
* the difference — see {@link GRAPH_SOURCE_CAVEATS}.
|
|
56
|
+
*
|
|
57
|
+
* ── How a commit is recovered ────────────────────────────────────────────────
|
|
58
|
+
* History is stored per NODE, but `commitStagedChanges` hands one `reasoning` object to
|
|
59
|
+
* `updateHistory` for every node in the batch, so all of them come back carrying a byte-identical
|
|
60
|
+
* formatted block. Block text is therefore the primary commit identity.
|
|
61
|
+
*
|
|
62
|
+
* `session_id` is deliberately NOT part of that key, despite looking like the obvious
|
|
63
|
+
* discriminator. The 1-hour merge writes a later block into an EXISTING row and keeps that row's
|
|
64
|
+
* original session id (`writeHistoryToDisk(latest.id, …, latest.session_id, …)`), so within a
|
|
65
|
+
* single commit, a node whose row already existed reports the session that created it while a node
|
|
66
|
+
* getting a fresh row reports the current one. Keying on session would split one real commit in
|
|
67
|
+
* two — a strictly worse error than the one it would prevent.
|
|
68
|
+
*
|
|
69
|
+
* What separates two commits that happen to share reasoning text is TIME. Blocks are stamped
|
|
70
|
+
* inside `commitStagedChanges`'s synchronous per-node loop, so one commit's blocks land
|
|
71
|
+
* milliseconds apart, while a repeat of the same text is a separate editing act minutes or hours
|
|
72
|
+
* later. Grouping therefore cuts on the gap between CONSECUTIVE blocks ({@link COMMIT_CLUSTER_MS}),
|
|
73
|
+
* never on total span, so a slow many-node commit stays intact however long it ran end to end.
|
|
74
|
+
*
|
|
75
|
+
* The irreducible ambiguity: two sessions committing byte-identical reasoning within the same
|
|
76
|
+
* minute read as one commit. The shared record genuinely does not distinguish them.
|
|
77
|
+
*/
|
|
78
|
+
/**
|
|
79
|
+
* Longest gap between consecutive same-reasoning blocks that still counts as one commit.
|
|
80
|
+
*
|
|
81
|
+
* Sized to sit far above a per-node write (milliseconds) and far below any plausible re-run of the
|
|
82
|
+
* same reasoning text by a human or an agent. It bounds the gap between neighbours, never the
|
|
83
|
+
* group's total duration.
|
|
84
|
+
*/
|
|
85
|
+
const COMMIT_CLUSTER_MS = 60_000;
|
|
86
|
+
/** Everything the shared record cannot answer, stated once and attached to any graph-backed
|
|
87
|
+
* response. Callers act on this data (reverting, attributing, scoping a test pass), so the gaps
|
|
88
|
+
* have to travel with it — a silently thinner entry reads as an authoritative one. */
|
|
89
|
+
exports.GRAPH_SOURCE_CAVEATS = [
|
|
90
|
+
'status is always "applied": revert state lives in the local log only, so a reverted change still appears here as applied.',
|
|
91
|
+
'request is the reasoning block\'s Requirement field, not the verbatim user request — that text is never committed.',
|
|
92
|
+
'files/node_ids cover only nodes tracked in the graph; whole-file edits that traced to no node are absent.',
|
|
93
|
+
'developer is null for commits made before a DEVELOPER_NAME was configured.',
|
|
94
|
+
'session_id names the session that created the history row, which the 1-hour merge can attribute to an earlier session than the one that wrote the change.'
|
|
95
|
+
];
|
|
96
|
+
/** Stable, content-derived id — the same commit must get the same id on every machine that pulls
|
|
97
|
+
* it, which rules out a random uuid. Prefixed so a graph id is never mistaken for a local message
|
|
98
|
+
* id by a caller that then tries to `readMessage` it. */
|
|
99
|
+
function graphEntryId(startedAt, blockText) {
|
|
100
|
+
const hash = crypto.createHash('sha1').update(`${startedAt}\n${blockText}`).digest('hex');
|
|
101
|
+
return `graph:${hash.slice(0, 32)}`;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Rebuilds per-commit activity entries from committed history.
|
|
105
|
+
*
|
|
106
|
+
* The date bounds are applied twice on purpose: {@link DevMindDatabase.queryHistoryForActivity}
|
|
107
|
+
* over-selects rows whose accumulation span merely OVERLAPS the window (it cannot see inside the
|
|
108
|
+
* blob), then each block is tested against its own timestamp here. Filtering only in SQL would
|
|
109
|
+
* either drop in-window blocks appended to an older row, or admit out-of-window ones from a row
|
|
110
|
+
* that stayed active — both wrong in a way the caller could not detect.
|
|
111
|
+
*/
|
|
112
|
+
function queryGraphActivityLog(db, opts = {}) {
|
|
113
|
+
const sinceIso = opts.since ?? (opts.sinceHours !== undefined
|
|
114
|
+
? new Date(Date.now() - opts.sinceHours * 3600_000).toISOString()
|
|
115
|
+
: undefined);
|
|
116
|
+
const scanLimit = opts.historyScanLimit ?? 5000;
|
|
117
|
+
const rows = db.queryHistoryForActivity({
|
|
118
|
+
sessionId: opts.sessionId,
|
|
119
|
+
since: sinceIso,
|
|
120
|
+
until: opts.until,
|
|
121
|
+
limit: scanLimit
|
|
122
|
+
});
|
|
123
|
+
const byText = new Map();
|
|
124
|
+
for (const row of rows) {
|
|
125
|
+
for (const block of (0, database_1.parseReasoningBlocksTimed)(row.reasoning, row.created_at)) {
|
|
126
|
+
if (sinceIso && block.at < sinceIso)
|
|
127
|
+
continue;
|
|
128
|
+
if (opts.until && block.at > opts.until)
|
|
129
|
+
continue;
|
|
130
|
+
const item = { row, at: block.at, parsed: block.parsed };
|
|
131
|
+
const bucket = byText.get(block.text);
|
|
132
|
+
if (bucket)
|
|
133
|
+
bucket.push(item);
|
|
134
|
+
else
|
|
135
|
+
byText.set(block.text, [item]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Pass 2 — cut each bucket into commits wherever consecutive blocks fall more than
|
|
139
|
+
// COMMIT_CLUSTER_MS apart. The ascending sort makes `last_at` a running maximum, so the gap test
|
|
140
|
+
// only ever measures against the nearest earlier block, never the group's total span.
|
|
141
|
+
const groups = [];
|
|
142
|
+
for (const [text, items] of byText) {
|
|
143
|
+
items.sort((a, b) => a.at.localeCompare(b.at));
|
|
144
|
+
let group = null;
|
|
145
|
+
for (const item of items) {
|
|
146
|
+
if (!group || Date.parse(item.at) - Date.parse(group.last_at) > COMMIT_CLUSTER_MS) {
|
|
147
|
+
const p = item.parsed;
|
|
148
|
+
group = {
|
|
149
|
+
session_ids: [], seenSessions: new Set(),
|
|
150
|
+
block_text: text,
|
|
151
|
+
developer: p.developer || null,
|
|
152
|
+
// The closest the shared record gets to "what was asked for". The verbatim request is
|
|
153
|
+
// local-only, so this is a substitute, not the same field — flagged in the caveats.
|
|
154
|
+
request: p.requirement || null,
|
|
155
|
+
summary: p.what_changed || p.why || p.goal || '(no summary recorded)',
|
|
156
|
+
first_at: item.at,
|
|
157
|
+
last_at: item.at,
|
|
158
|
+
files: [], node_ids: [], seenFiles: new Set(), seenNodes: new Set(),
|
|
159
|
+
edit_count: 0
|
|
160
|
+
};
|
|
161
|
+
groups.push(group);
|
|
162
|
+
}
|
|
163
|
+
group.last_at = item.at;
|
|
164
|
+
if (!group.seenSessions.has(item.row.session_id)) {
|
|
165
|
+
group.seenSessions.add(item.row.session_id);
|
|
166
|
+
group.session_ids.push(item.row.session_id);
|
|
167
|
+
}
|
|
168
|
+
if (!group.seenNodes.has(item.row.node_id)) {
|
|
169
|
+
group.seenNodes.add(item.row.node_id);
|
|
170
|
+
group.node_ids.push(item.row.node_id);
|
|
171
|
+
}
|
|
172
|
+
// Null when the node was hard-deleted out from under its history. Skipped rather than
|
|
173
|
+
// recorded as an empty path, but the row still counts toward edit_count: something was
|
|
174
|
+
// edited, we just can no longer say in which file.
|
|
175
|
+
if (item.row.file_path && !group.seenFiles.has(item.row.file_path)) {
|
|
176
|
+
group.seenFiles.add(item.row.file_path);
|
|
177
|
+
group.files.push(item.row.file_path);
|
|
178
|
+
}
|
|
179
|
+
group.edit_count++;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
let entries = groups.map(g => ({
|
|
183
|
+
// Keyed on the group's start time as well as its text: two separate commits that share
|
|
184
|
+
// reasoning must not collide on one id, and `first_at` is exactly what told them apart.
|
|
185
|
+
id: graphEntryId(g.first_at, g.block_text),
|
|
186
|
+
source: 'graph',
|
|
187
|
+
session_id: g.session_ids[0],
|
|
188
|
+
session_ids: g.session_ids,
|
|
189
|
+
developer: g.developer,
|
|
190
|
+
created_at: g.first_at,
|
|
191
|
+
updated_at: g.last_at,
|
|
192
|
+
request: g.request,
|
|
193
|
+
summary: g.summary,
|
|
194
|
+
// Committed history records no revert state — that is a local-log concept. Claiming anything
|
|
195
|
+
// other than "applied" here would be invention; the caveats say so out loud.
|
|
196
|
+
status: 'applied',
|
|
197
|
+
files: g.files,
|
|
198
|
+
node_ids: g.node_ids,
|
|
199
|
+
edit_count: g.edit_count
|
|
200
|
+
}));
|
|
201
|
+
// The same predicates the local path applies, over the same fields — so a filter means the same
|
|
202
|
+
// thing regardless of which store answered.
|
|
203
|
+
if (opts.developer) {
|
|
204
|
+
const needle = opts.developer.toLowerCase();
|
|
205
|
+
entries = entries.filter(e => (e.developer ?? '').toLowerCase().includes(needle));
|
|
206
|
+
}
|
|
207
|
+
if (opts.requirementContains) {
|
|
208
|
+
const needle = opts.requirementContains.toLowerCase();
|
|
209
|
+
entries = entries.filter(e => (e.request ?? '').toLowerCase().includes(needle) || e.summary.toLowerCase().includes(needle));
|
|
210
|
+
}
|
|
211
|
+
entries.sort((a, b) => b.created_at.localeCompare(a.created_at));
|
|
212
|
+
const matched = entries.length;
|
|
213
|
+
const limited = entries.slice(0, opts.limit ?? 100);
|
|
214
|
+
const allFiles = new Set();
|
|
215
|
+
for (const e of limited)
|
|
216
|
+
for (const f of e.files)
|
|
217
|
+
allFiles.add(f);
|
|
218
|
+
return {
|
|
219
|
+
result: {
|
|
220
|
+
total_messages: limited.length,
|
|
221
|
+
total_matched: matched,
|
|
222
|
+
all_files: Array.from(allFiles),
|
|
223
|
+
entries: limited
|
|
224
|
+
},
|
|
225
|
+
scanTruncated: rows.length >= scanLimit
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* The single read path behind `get_activity_log` — picks a store, or merges both.
|
|
230
|
+
*
|
|
231
|
+
* `auto` (the default) answers from the local log and falls through to shared history only when it
|
|
232
|
+
* produced nothing. That covers the case the local-only design silently failed: a teammate on a
|
|
233
|
+
* fresh clone, or this developer on another machine.
|
|
234
|
+
*
|
|
235
|
+
* It does NOT cover the inverse, which is why `both` exists — once you have any local activity of
|
|
236
|
+
* your own, `auto` stops short and you never see a teammate's work at all. `both` is the honest
|
|
237
|
+
* team-wide view: local entries in full fidelity, plus shared history for every commit that did not
|
|
238
|
+
* happen here.
|
|
239
|
+
*/
|
|
240
|
+
function resolveActivityLog(db, devmindPath, mode, opts = {}) {
|
|
241
|
+
const withCaveats = (r) => r.entries.some(e => e.source === 'graph') ? { ...r, caveats: exports.GRAPH_SOURCE_CAVEATS } : r;
|
|
242
|
+
if (mode === 'local') {
|
|
243
|
+
return { ...(0, activity_1.queryActivityLog)(devmindPath, opts), source: 'local', fell_back: false };
|
|
244
|
+
}
|
|
245
|
+
if (mode === 'graph') {
|
|
246
|
+
const { result, scanTruncated } = queryGraphActivityLog(db, opts);
|
|
247
|
+
return withCaveats({ ...result, source: 'graph', fell_back: false, history_scan_truncated: scanTruncated });
|
|
248
|
+
}
|
|
249
|
+
if (mode === 'auto') {
|
|
250
|
+
const local = (0, activity_1.queryActivityLog)(devmindPath, opts);
|
|
251
|
+
if (local.entries.length > 0) {
|
|
252
|
+
return { ...local, source: 'local', fell_back: false };
|
|
253
|
+
}
|
|
254
|
+
const { result, scanTruncated } = queryGraphActivityLog(db, opts);
|
|
255
|
+
return withCaveats({ ...result, source: 'graph', fell_back: true, history_scan_truncated: scanTruncated });
|
|
256
|
+
}
|
|
257
|
+
// mode === 'both'
|
|
258
|
+
const local = (0, activity_1.queryActivityLog)(devmindPath, opts);
|
|
259
|
+
const { result: graph, scanTruncated } = queryGraphActivityLog(db, opts);
|
|
260
|
+
// Read once per call, not per entry: sessions.json can gain a row while this server is running,
|
|
261
|
+
// so it must not be cached across calls, but it also cannot change midway through one.
|
|
262
|
+
const localSessionIds = new Set((0, activity_1.readSessions)(devmindPath).map(s => s.id));
|
|
263
|
+
const me = db.getDeveloperName();
|
|
264
|
+
const foreign = graph.entries.filter(e => !isOwnWork(e, localSessionIds, me));
|
|
265
|
+
const merged = [...local.entries, ...foreign]
|
|
266
|
+
.sort((a, b) => b.created_at.localeCompare(a.created_at))
|
|
267
|
+
.slice(0, opts.limit ?? 100);
|
|
268
|
+
const allFiles = new Set();
|
|
269
|
+
for (const e of merged)
|
|
270
|
+
for (const f of e.files)
|
|
271
|
+
allFiles.add(f);
|
|
272
|
+
return withCaveats({
|
|
273
|
+
total_messages: merged.length,
|
|
274
|
+
total_matched: local.total_matched + foreign.length,
|
|
275
|
+
all_files: Array.from(allFiles),
|
|
276
|
+
entries: merged,
|
|
277
|
+
source: 'both',
|
|
278
|
+
fell_back: false,
|
|
279
|
+
history_scan_truncated: scanTruncated
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* True when a graph entry describes work that already appears in this machine's local log, and
|
|
284
|
+
* would therefore be a duplicate in a merged view.
|
|
285
|
+
*
|
|
286
|
+
* Both conditions are required, and each covers a hole the other leaves:
|
|
287
|
+
*
|
|
288
|
+
* - The session must be one of THIS machine's. Sessions are minted per machine, so a teammate's id
|
|
289
|
+
* never collides. Checked against `sessions.json` rather than against the local entries actually
|
|
290
|
+
* returned, because those are already narrowed by the caller's filters — a message excluded by a
|
|
291
|
+
* date range would stop shadowing its own graph twin and the duplicate would slip through.
|
|
292
|
+
*
|
|
293
|
+
* - The developer must not be someone else. This is what the session test alone gets wrong: the
|
|
294
|
+
* 1-hour merge stamps a block with the row's ORIGINAL session, so a teammate who pulls your
|
|
295
|
+
* history and edits the same node within the window gets their work filed under your session id.
|
|
296
|
+
* Unlike session_id, the Developer field is written per block, so it survives the merge intact.
|
|
297
|
+
*
|
|
298
|
+
* The asymmetry is deliberate. Failing to drop a duplicate shows your own work twice, which is
|
|
299
|
+
* visible and harmless; dropping too much silently hides a teammate's commit, which is the exact
|
|
300
|
+
* failure `both` exists to fix. When the two signals disagree, keep the entry.
|
|
301
|
+
*/
|
|
302
|
+
function isOwnWork(entry, localSessionIds, me) {
|
|
303
|
+
const ids = entry.session_ids || [entry.session_id];
|
|
304
|
+
if (!ids.some(id => localSessionIds.has(id)))
|
|
305
|
+
return false;
|
|
306
|
+
// An unattributed entry on a local session is mine — nothing contradicts the session match.
|
|
307
|
+
if (!entry.developer)
|
|
308
|
+
return true;
|
|
309
|
+
// A NAMED developer must actually be me. Notably not "me is unknown, so assume mine": with no
|
|
310
|
+
// DEVELOPER_NAME configured there is no identity to match against, and treating every named
|
|
311
|
+
// commit on a shared session as local is how a teammate's work would disappear.
|
|
312
|
+
return !!me && entry.developer.toLowerCase() === me.toLowerCase();
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=activity-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-graph.js","sourceRoot":"","sources":["../../src/db/activity-graph.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8HA,sDA2HC;AAcD,gDAoDC;AA3TD,+CAAiC;AACjC,yCAA6F;AAC7F,yCAGoB;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;;sFAEsF;AACzE,QAAA,oBAAoB,GAAG;IAClC,2HAA2H;IAC3H,oHAAoH;IACpH,2GAA2G;IAC3G,4EAA4E;IAC5E,2JAA2J;CAC5J,CAAC;AA4BF;;yDAEyD;AACzD,SAAS,YAAY,CAAC,SAAiB,EAAE,SAAiB;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1F,OAAO,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACtC,CAAC;AAqBD;;;;;;;;GAQG;AACH,SAAgB,qBAAqB,CACnC,EAAmB,EACnB,OAA6B,EAAE;IAE/B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS;QAC3D,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;QACjE,CAAC,CAAC,SAAS,CAAC,CAAC;IACf,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAEhD,MAAM,IAAI,GAAG,EAAE,CAAC,uBAAuB,CAAC;QACtC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,SAAS;KACjB,CAAC,CAAC;IAIH,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,IAAA,oCAAyB,EAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7E,IAAI,QAAQ,IAAI,KAAK,CAAC,EAAE,GAAG,QAAQ;gBAAE,SAAS;YAC9C,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK;gBAAE,SAAS;YAClD,MAAM,IAAI,GAAc,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;gBACzB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,iGAAiG;IACjG,sFAAsF;IACtF,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,KAAK,GAAuB,IAAI,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,iBAAiB,EAAE,CAAC;gBAClF,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;gBACtB,KAAK,GAAG;oBACN,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,GAAG,EAAE;oBACxC,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;oBAC9B,sFAAsF;oBACtF,oFAAoF;oBACpF,OAAO,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;oBAC9B,OAAO,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,uBAAuB;oBACrE,QAAQ,EAAE,IAAI,CAAC,EAAE;oBACjB,OAAO,EAAE,IAAI,CAAC,EAAE;oBAChB,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE;oBACnE,UAAU,EAAE,CAAC;iBACd,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAC5C,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;YACD,sFAAsF;YACtF,uFAAuF;YACvF,mDAAmD;YACnD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,CAAC;YACD,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAuB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjD,uFAAuF;QACvF,wFAAwF;QACxF,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC;QAC1C,MAAM,EAAE,OAAyB;QACjC,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,QAAQ;QACtB,UAAU,EAAE,CAAC,CAAC,OAAO;QACrB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,6FAA6F;QAC7F,6EAA6E;QAC7E,MAAM,EAAE,SAAkB;QAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;IAEJ,gGAAgG;IAChG,4CAA4C;IAC5C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;QACtD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAEpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAElE,OAAO;QACL,MAAM,EAAE;YACN,cAAc,EAAE,OAAO,CAAC,MAAM;YAC9B,aAAa,EAAE,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,OAAO,EAAE,OAAO;SACjB;QACD,aAAa,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAChC,EAAmB,EACnB,WAAmB,EACnB,IAAwB,EACxB,OAA6B,EAAE;IAE/B,MAAM,WAAW,GAAG,CAAC,CAA4B,EAA6B,EAAE,CAC9E,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,4BAAoB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,EAAE,GAAG,IAAA,2BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACzD,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAClE,OAAO,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAA,2BAAgB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzE,gGAAgG;IAChG,uFAAuF;IACvF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAA,uBAAY,EAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC;SAC1C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;SACxD,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO,WAAW,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC,MAAM;QAC7B,aAAa,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM;QACnD,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,KAAK;QAChB,sBAAsB,EAAE,aAAa;KACtC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,SAAS,CAAC,KAAuB,EAAE,eAA4B,EAAE,EAAiB;IACzF,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,4FAA4F;IAC5F,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAClC,8FAA8F;IAC9F,4FAA4F;IAC5F,gFAAgF;IAChF,OAAO,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;AACpE,CAAC"}
|