mister-wolf 2.24.0 → 2.25.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 +1 -1
- package/dist/adapters/cli/commands/memory-tool.d.ts.map +1 -1
- package/dist/adapters/cli/commands/memory-tool.js +15 -3
- package/dist/adapters/cli/commands/memory-tool.js.map +1 -1
- package/dist/adapters/fs/fs-file-system.d.ts +2 -0
- package/dist/adapters/fs/fs-file-system.d.ts.map +1 -1
- package/dist/adapters/fs/fs-file-system.js +24 -0
- package/dist/adapters/fs/fs-file-system.js.map +1 -1
- package/dist/adapters/render/stamp.d.ts.map +1 -1
- package/dist/adapters/render/stamp.js +9 -2
- package/dist/adapters/render/stamp.js.map +1 -1
- package/dist/app/use-cases/tool-librarian.d.ts +7 -2
- package/dist/app/use-cases/tool-librarian.d.ts.map +1 -1
- package/dist/app/use-cases/tool-librarian.js +114 -16
- package/dist/app/use-cases/tool-librarian.js.map +1 -1
- package/dist/domain/memory-types.d.ts +4 -0
- package/dist/domain/memory-types.d.ts.map +1 -1
- package/dist/domain/memory-types.js +1 -0
- package/dist/domain/memory-types.js.map +1 -1
- package/dist/ports/file-system.port.d.ts +2 -0
- package/dist/ports/file-system.port.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/base/AGENTS.md +10 -0
- package/templates/base/agents/executor-lead.md +30 -25
- package/templates/base/agents/mr-wolf.md +10 -0
- package/templates/base/agents/steward.md +8 -0
- package/templates/base/agents/worker-implementer.md +8 -0
- package/templates/base/agents/worker-researcher.md +8 -0
- package/templates/base/agents/worker-reviewer.md +8 -0
- package/templates/base/commands/complain.md +11 -9
- package/templates/base/playbooks/complaint-protocol.md +14 -112
- package/templates/base/playbooks/executor-lead-playbook.md +24 -19
- package/templates/base/playbooks/worker-implementer-playbook.md +14 -19
- package/templates/base/playbooks/worker-researcher-playbook.md +14 -19
- package/templates/base/playbooks/worker-reviewer-playbook.md +3 -2
- package/templates/base/skills/test-driven-development/SKILL.md +7 -1
- package/templates/base/skills/test-driven-development/references/test-quality.md +22 -0
- package/templates/base/skills/using-skills/SKILL.md +61 -286
- package/templates/base/skills/using-skills/references/context-and-memory.md +77 -0
- package/templates/base/skills/using-skills/references/contracts.md +93 -0
- package/templates/base/skills/using-skills/references/project-rules.md +48 -0
- package/templates/base/skills/using-skills/references/project-tools.md +49 -0
- package/templates/base/skills/using-skills/references/routes-capabilities.md +13 -0
- package/templates/base/skills/using-skills/references/routes-communication.md +13 -0
- package/templates/base/skills/using-skills/references/routes-execution.md +20 -0
- package/templates/base/skills/using-skills/references/routes-intent.md +14 -0
- package/templates/base/skills/using-skills/references/routes-quality.md +14 -0
- package/templates/base/skills/using-skills/references/routes-state.md +15 -0
- package/templates/base/skills/wolf-brainstorm/SKILL.md +7 -7
- package/templates/base/skills/wolf-debug/SKILL.md +7 -0
- package/templates/base/skills/wolf-debug/references/techniques.md +20 -0
- package/templates/base/skills/wolf-execute/SKILL.md +52 -57
- package/templates/base/skills/wolf-execute/references/technical-helpers.md +31 -0
- package/templates/base/skills/wolf-execute/scripts/workflow-helper.py +199 -0
- package/templates/base/skills/wolf-feedback/SKILL.md +35 -0
- package/templates/base/skills/wolf-feedback/references/complaints.md +108 -0
- package/templates/base/skills/wolf-feedback/references/session-diagnosis.md +49 -0
- package/templates/base/skills/wolf-feedback/scripts/session-reader.py +143 -0
- package/templates/base/skills/wolf-handoff/SKILL.md +5 -0
- package/templates/base/skills/wolf-plan/SKILL.md +2 -1
- package/templates/base/skills/wolf-sdd/SKILL.md +9 -0
- package/templates/base/skills/wolf-testplan/SKILL.md +4 -0
- package/templates/base/skills/wolf-visual-dialogue/SKILL.md +47 -0
- package/templates/base/skills/writing-skills/SKILL.md +1 -1
- package/update-map.json +107 -12
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ wolf bootstrap
|
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
- **Path A — memory:** `wolf init` connects the project minimally — the `.wolf/` skeleton and `AGENTS.md`; it writes no platform configs and no base set. What a clean run prints: `memory skeleton: ensured`, `base set: AGENTS.md created`, the init-report id.
|
|
54
|
-
- **Path B — OpenCode organization:** `wolf init --full --platform opencode` renders the full base set (6 agent frames,
|
|
54
|
+
- **Path B — OpenCode organization:** `wolf init --full --platform opencode` renders the full base set (6 agent frames, 25 skills, 3 commands, 2 plugins, seeded playbook faces) and writes `opencode.json` (`mcp.servers.wolf`, `default_agent=mr-wolf`, `experimental.subagent_depth=2`). **Restart opencode** after it — the MCP server and the default agent connect at startup. Claude Code will ask you to approve the project-scope MCP server on first start — that is expected.
|
|
55
55
|
|
|
56
56
|
- **Try it without installing:** `npx mister-wolf init` — try-out mode: creates the `.wolf/` memory skeleton but never writes MCP configs or the base set. Like it? `npm install -g mister-wolf` and run `wolf init` again.
|
|
57
57
|
- **Updating:** `wolf upgrade` — one command updates everything: the npm phase (`npm install -g mister-wolf@latest`) is followed by the update pass over all registered projects (stamped base-set files and seeded faces; deletions only with confirmation). `--check` reports CLI + park freshness without installing; `--here` updates only the current project (no npm, no registry); `--yes` skips the confirmation and backs up whatever it overwrites. Dev/linked installs are refused honestly. `wolf sync` is deprecated → `wolf upgrade --here` (the alias still works and re-renders stamped files; its DEPRECATED notice still says `removed in 2.20.0` — stale wording, the command is alive).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tool.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-tool.d.ts","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAmG5C,wBAAgB,iBAAiB,IAAI,OAAO,CA0H3C"}
|
|
@@ -18,7 +18,7 @@ function buildRegisterSubcommand(parent, name) {
|
|
|
18
18
|
parent
|
|
19
19
|
.command(`${name} <script-path>`)
|
|
20
20
|
.description(name === 'register'
|
|
21
|
-
? 'Register a
|
|
21
|
+
? 'Register a project entrypoint by reference (does not copy source)'
|
|
22
22
|
: 'Register a script as tool memory object (synonym for register)')
|
|
23
23
|
.requiredOption('--name <name>', 'Tool name (unique)')
|
|
24
24
|
.requiredOption('--language <language>', 'Script language (typescript, python, bash, ...)')
|
|
@@ -28,12 +28,21 @@ function buildRegisterSubcommand(parent, name) {
|
|
|
28
28
|
.option('--contract-out <text>', 'Output contract')
|
|
29
29
|
.option('--contract-env <text>', 'Environment contract')
|
|
30
30
|
.option('--notes <text>', 'Notes (stored as object body)')
|
|
31
|
+
.option('--clear-resources', 'Drop old additional files when explicitly updating a card', false)
|
|
32
|
+
.option('--update <name-or-id>', 'Update an existing card without changing its identity')
|
|
33
|
+
.option('--resource <path>', 'Additional significant project file (repeatable)', (value, previous) => [...previous, value], [])
|
|
31
34
|
.option('--force', 'Skip similar-tools check', false)
|
|
32
35
|
.option('--created-by <actor>', 'Creator actor (default: env WOLF_ACTOR, else user:cli)')
|
|
33
36
|
.action(async (scriptPath, options) => {
|
|
34
37
|
const { store, log, clock, idGen, index, lock, declarations, fs } = createCliContainer(process.cwd());
|
|
35
38
|
const result = await registerTool({ store, log, clock, idGen, index, lock, declarations, fs, baseDir: process.cwd() }, {
|
|
36
39
|
scriptPath,
|
|
40
|
+
update: options.update,
|
|
41
|
+
resourcePaths: options.clearResources
|
|
42
|
+
? (options.resource ?? [])
|
|
43
|
+
: options.resource && options.resource.length > 0
|
|
44
|
+
? options.resource
|
|
45
|
+
: undefined,
|
|
37
46
|
name: options.name,
|
|
38
47
|
language: options.language,
|
|
39
48
|
contractIn: options.contractIn,
|
|
@@ -45,6 +54,9 @@ function buildRegisterSubcommand(parent, name) {
|
|
|
45
54
|
});
|
|
46
55
|
console.log(`Registered tool ${options.name}: ${result.toolId}`);
|
|
47
56
|
console.log(`Script: ${result.scriptPath}`);
|
|
57
|
+
if (result.exposedSkillRefreshed) {
|
|
58
|
+
console.log(`Exposed skill refreshed: ${join('.opencode', 'skills', options.name, 'SKILL.md')}`);
|
|
59
|
+
}
|
|
48
60
|
});
|
|
49
61
|
}
|
|
50
62
|
export function memoryToolCommand() {
|
|
@@ -69,8 +81,8 @@ export function memoryToolCommand() {
|
|
|
69
81
|
.command('use <name-or-id>')
|
|
70
82
|
.description('Mark tool as used (increments usage_count, prints contract reminder)')
|
|
71
83
|
.action(async (nameOrId) => {
|
|
72
|
-
const { store, log, clock, idGen, index, lock, declarations } = createCliContainer(process.cwd());
|
|
73
|
-
const tool = await useTool({ store, log, clock, idGen, index, lock, declarations }, { nameOrId, actor: resolveCreatedBy(undefined) });
|
|
84
|
+
const { store, log, clock, idGen, index, lock, declarations, fs } = createCliContainer(process.cwd());
|
|
85
|
+
const tool = await useTool({ store, log, clock, idGen, index, lock, declarations, fs, baseDir: process.cwd() }, { nameOrId, actor: resolveCreatedBy(undefined) });
|
|
74
86
|
printContractReminder(tool);
|
|
75
87
|
console.log(`usage_count: ${tool.usage_count ?? 0}`);
|
|
76
88
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tool.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,SAAS,EACT,OAAO,EACP,UAAU,EACV,aAAa,EACb,UAAU,GAEX,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAEhG,SAAS,qBAAqB,CAAC,IAAgB;IAC7C,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,cAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,eAAe,IAAI,GAAG,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,IAAI,GAAG,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,4EAA4E;AAC5E,+EAA+E;AAC/E,SAAS,uBAAuB,CAAC,MAAe,EAAE,IAAwB;IACxE,MAAM;SACH,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC;SAChC,WAAW,CACV,IAAI,KAAK,UAAU;QACjB,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"memory-tool.js","sourceRoot":"","sources":["../../../../src/adapters/cli/commands/memory-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ export declare class FsFileSystem implements FileSystem {
|
|
|
4
4
|
readSmallTextFile(filePath: string): Promise<string | null>;
|
|
5
5
|
isDirectory(directoryPath: string): Promise<boolean>;
|
|
6
6
|
exists(targetPath: string): Promise<boolean>;
|
|
7
|
+
realPath(target: string): Promise<string>;
|
|
8
|
+
fileDigest(target: string): Promise<string>;
|
|
7
9
|
writeFile(filePath: string, content: string): Promise<void>;
|
|
8
10
|
}
|
|
9
11
|
//# sourceMappingURL=fs-file-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-file-system.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/fs-file-system.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fs-file-system.d.ts","sourceRoot":"","sources":["../../../src/adapters/fs/fs-file-system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAIlF,qBAAa,YAAa,YAAW,UAAU;IACvC,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB/D,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB3D,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAepD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkB3C,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAIlE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
3
4
|
const MAX_SMALL_FILE_SIZE = 1024 * 1024;
|
|
4
5
|
export class FsFileSystem {
|
|
5
6
|
async listDirectory(directoryPath) {
|
|
@@ -55,6 +56,29 @@ export class FsFileSystem {
|
|
|
55
56
|
return false;
|
|
56
57
|
}
|
|
57
58
|
}
|
|
59
|
+
async realPath(target) {
|
|
60
|
+
return fs.realpath(target);
|
|
61
|
+
}
|
|
62
|
+
async fileDigest(target) {
|
|
63
|
+
const handle = await fs.open(target, 'r');
|
|
64
|
+
try {
|
|
65
|
+
const stat = await handle.stat();
|
|
66
|
+
if (!stat.isFile())
|
|
67
|
+
throw new Error(`Not a regular file: ${target}`);
|
|
68
|
+
const hash = createHash('sha256');
|
|
69
|
+
const buffer = Buffer.alloc(64 * 1024);
|
|
70
|
+
while (true) {
|
|
71
|
+
const { bytesRead } = await handle.read(buffer, 0, buffer.length, null);
|
|
72
|
+
if (bytesRead === 0)
|
|
73
|
+
break;
|
|
74
|
+
hash.update(buffer.subarray(0, bytesRead));
|
|
75
|
+
}
|
|
76
|
+
return hash.digest('hex');
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
await handle.close();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
58
82
|
async writeFile(filePath, content) {
|
|
59
83
|
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
60
84
|
await fs.writeFile(filePath, content, 'utf8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-file-system.js","sourceRoot":"","sources":["../../../src/adapters/fs/fs-file-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fs-file-system.js","sourceRoot":"","sources":["../../../src/adapters/fs/fs-file-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stamp.d.ts","sourceRoot":"","sources":["../../../src/adapters/render/stamp.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"stamp.d.ts","sourceRoot":"","sources":["../../../src/adapters/render/stamp.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAGrD;AAOD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAelF"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
export function renderStamp(stamp, fileName) {
|
|
2
|
+
if (/\.py$/.test(fileName))
|
|
3
|
+
return `# wolf:rendered base=${stamp.base} set=${stamp.set}`;
|
|
2
4
|
if (/(\.ts|\.js|\.mjs|\.cjs)$/.test(fileName)) {
|
|
3
5
|
return `// wolf:rendered base=${stamp.base} set=${stamp.set}`;
|
|
4
6
|
}
|
|
5
7
|
return `<!-- wolf:rendered base=${stamp.base} set=${stamp.set} -->`;
|
|
6
8
|
}
|
|
7
9
|
export function parseStamp(text) {
|
|
8
|
-
const m = text.match(/(
|
|
10
|
+
const m = text.match(/(?:<!--|\/\/|#)\s*wolf:rendered\s+base=(\S+)\s+set=(\S+)(?:\s*-->)?/);
|
|
9
11
|
return m ? { base: m[1], set: m[2] } : null;
|
|
10
12
|
}
|
|
11
13
|
/** ЕДИНСТВЕННЫЙ регекс изъятия штамп-строк (design §4.4): используется вставкой и
|
|
12
14
|
* исцелением штамп-дрейфа. Вторая копия регекса запрещена — иначе исцеление и
|
|
13
15
|
* вставка разойдутся, и файл будет «лечиться» вечно. */
|
|
14
|
-
const STAMP_STRIP = /(
|
|
16
|
+
const STAMP_STRIP = /(?:<!--|\/\/|#)\s*wolf:rendered[^\n]*(?:\s*-->)?\n?/g;
|
|
15
17
|
/** Контент без штамп-строк (единственная точка правды о регексе, §4.4). */
|
|
16
18
|
export function stripStampLines(source) {
|
|
17
19
|
return source.replace(STAMP_STRIP, '');
|
|
@@ -19,6 +21,11 @@ export function stripStampLines(source) {
|
|
|
19
21
|
export function insertStamp(source, stamp, fileName) {
|
|
20
22
|
const line = renderStamp(stamp, fileName);
|
|
21
23
|
const stripped = stripStampLines(source);
|
|
24
|
+
if (stripped.startsWith('#!')) {
|
|
25
|
+
const end = stripped.indexOf('\n');
|
|
26
|
+
if (end !== -1)
|
|
27
|
+
return `${stripped.slice(0, end + 1)}${line}\n${stripped.slice(end + 1)}`;
|
|
28
|
+
}
|
|
22
29
|
if (/^---\n/.test(stripped)) {
|
|
23
30
|
const end = stripped.indexOf('\n---', 4);
|
|
24
31
|
if (end !== -1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stamp.js","sourceRoot":"","sources":["../../../src/adapters/render/stamp.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,QAAgB;IACxD,IAAI,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,yBAAyB,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,2BAA2B,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,MAAM,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"stamp.js","sourceRoot":"","sources":["../../../src/adapters/render/stamp.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,QAAgB;IACxD,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,wBAAwB,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;IACzF,IAAI,0BAA0B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,yBAAyB,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,2BAA2B,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,GAAG,MAAM,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;IAC5F,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;;yDAEyD;AACzD,MAAM,WAAW,GAAG,sDAAsD,CAAC;AAE3E,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,KAAY,EAAE,QAAgB;IACxE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;IAC5F,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;YAC9C,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,KAAK,QAAQ,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -12,6 +12,7 @@ export interface ToolFields {
|
|
|
12
12
|
name: string;
|
|
13
13
|
script_path: string;
|
|
14
14
|
language: string;
|
|
15
|
+
source_digest?: string;
|
|
15
16
|
contract_input?: string;
|
|
16
17
|
contract_output?: string;
|
|
17
18
|
contract_environment?: string;
|
|
@@ -41,23 +42,27 @@ export interface RegisterToolInput {
|
|
|
41
42
|
notes?: string;
|
|
42
43
|
force?: boolean;
|
|
43
44
|
createdBy: string;
|
|
45
|
+
resourcePaths?: string[];
|
|
46
|
+
update?: string;
|
|
44
47
|
}
|
|
45
48
|
export interface RegisterToolResult {
|
|
46
49
|
toolId: string;
|
|
47
|
-
/**
|
|
50
|
+
/** Project-relative entrypoint; source files stay in the project. */
|
|
48
51
|
scriptPath: string;
|
|
49
52
|
similar: {
|
|
50
53
|
id: string;
|
|
51
54
|
name: string;
|
|
52
55
|
status: string;
|
|
53
56
|
}[];
|
|
57
|
+
/** true, если register --update перегенерировал существующий exposed SKILL.md. */
|
|
58
|
+
exposedSkillRefreshed?: boolean;
|
|
54
59
|
}
|
|
55
60
|
export declare function registerTool(deps: ToolLibrarianDeps, input: RegisterToolInput): Promise<RegisterToolResult>;
|
|
56
61
|
export declare function listTools(deps: Pick<ToolLibrarianDeps, 'store'>, filters?: {
|
|
57
62
|
status?: string;
|
|
58
63
|
}): Promise<ToolObject[]>;
|
|
59
64
|
type StoreDeps = Omit<ToolLibrarianDeps, 'fs' | 'baseDir'>;
|
|
60
|
-
export declare function useTool(deps:
|
|
65
|
+
export declare function useTool(deps: ToolLibrarianDeps, input: {
|
|
61
66
|
nameOrId: string;
|
|
62
67
|
actor: string;
|
|
63
68
|
}): Promise<ToolObject>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-librarian.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-librarian.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { join,
|
|
1
|
+
import { join, isAbsolute, relative, resolve, sep } from 'path';
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
2
3
|
import { UserFacingError } from '../../domain/errors.js';
|
|
3
4
|
import { addMemoryObject } from './add-memory-object.js';
|
|
4
5
|
import { transitionMemoryObject } from './transition-memory-object.js';
|
|
@@ -48,37 +49,90 @@ async function resolveToolRef(deps, nameOrId) {
|
|
|
48
49
|
}
|
|
49
50
|
return asTool(matches[0]);
|
|
50
51
|
}
|
|
52
|
+
/** Resolve a project reference, including symlinks, without copying it. */
|
|
53
|
+
async function projectFile(deps, source) {
|
|
54
|
+
const root = resolve(deps.baseDir);
|
|
55
|
+
const absolute = resolve(root, source);
|
|
56
|
+
const inside = (base, target) => {
|
|
57
|
+
const rel = relative(base, target);
|
|
58
|
+
return rel !== '' && rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);
|
|
59
|
+
};
|
|
60
|
+
if (/[\u0000-\u001f]/.test(source) || !inside(root, absolute)) {
|
|
61
|
+
throw new UserFacingError(`Tool path must be inside the project: ${source}`);
|
|
62
|
+
}
|
|
63
|
+
if (!(await deps.fs.exists(absolute)))
|
|
64
|
+
throw new UserFacingError(`Script not found: ${source}`);
|
|
65
|
+
if (deps.fs.realPath && !inside(await deps.fs.realPath(root), await deps.fs.realPath(absolute))) {
|
|
66
|
+
throw new UserFacingError(`Tool path escapes the project through a symlink: ${source}`);
|
|
67
|
+
}
|
|
68
|
+
return relative(root, absolute).split(sep).join('/');
|
|
69
|
+
}
|
|
70
|
+
async function sourceVersion(deps, files) {
|
|
71
|
+
const hash = createHash('sha256');
|
|
72
|
+
for (const file of [...new Set(files)].sort()) {
|
|
73
|
+
const rel = await projectFile(deps, file);
|
|
74
|
+
const absolute = resolve(deps.baseDir, rel);
|
|
75
|
+
let digest;
|
|
76
|
+
try {
|
|
77
|
+
if (deps.fs.fileDigest)
|
|
78
|
+
digest = await deps.fs.fileDigest(absolute);
|
|
79
|
+
else {
|
|
80
|
+
const content = await deps.fs.readSmallTextFile(absolute);
|
|
81
|
+
if (content === null)
|
|
82
|
+
throw new Error('file cannot be fingerprinted');
|
|
83
|
+
digest = createHash('sha256').update(content).digest('hex');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
throw new UserFacingError(`Cannot fingerprint tool file ${rel}: ${error.message}`);
|
|
88
|
+
}
|
|
89
|
+
hash.update(rel).update('\0').update(digest).update('\0');
|
|
90
|
+
}
|
|
91
|
+
return `sha256:${hash.digest('hex')}`;
|
|
92
|
+
}
|
|
93
|
+
async function checkSource(deps, tool) {
|
|
94
|
+
await projectFile(deps, tool.script_path);
|
|
95
|
+
const version = tool.source_digest;
|
|
96
|
+
if (version?.startsWith('sha256:')) {
|
|
97
|
+
const files = [tool.script_path, ...(tool.related?.files ?? [])];
|
|
98
|
+
if ((await sourceVersion(deps, files)) !== version) {
|
|
99
|
+
throw new UserFacingError(`Tool source changed: ${tool.name}; verify it and update its card explicitly`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
51
103
|
export async function registerTool(deps, input) {
|
|
52
104
|
const run = async () => {
|
|
53
|
-
//
|
|
105
|
+
// Имя — стабильный ключ карточки и `tool use <name>`; не путь к исходнику.
|
|
54
106
|
if (!NAME_RE.test(input.name)) {
|
|
55
107
|
throw new UserFacingError(`Invalid tool name "${input.name}": only [a-z0-9-_], starting with a digit/letter`);
|
|
56
108
|
}
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
109
|
+
const relDest = await projectFile(deps, input.scriptPath);
|
|
110
|
+
const current = input.update ? await resolveToolRef(deps, input.update) : undefined;
|
|
111
|
+
if (current && current.name !== input.name)
|
|
112
|
+
throw new UserFacingError('Updating a tool cannot rename its identity');
|
|
113
|
+
const resourceInputs = input.resourcePaths ?? (current?.related.files ?? []).filter((p) => p !== current?.script_path);
|
|
114
|
+
const files = [relDest];
|
|
115
|
+
for (const resource of resourceInputs)
|
|
116
|
+
files.push(await projectFile(deps, resource));
|
|
117
|
+
const uniqueFiles = [...new Set(files)].sort();
|
|
118
|
+
const version = await sourceVersion(deps, uniqueFiles);
|
|
61
119
|
// Коллизия имени — всегда отказ (даже с --force): name — ключ lookup'а,
|
|
62
|
-
//
|
|
63
|
-
const taken = (await deps.store.list({ type: 'tool' })).filter((o) => LIVE_STATUSES.includes(o.status) && asTool(o).name === input.name);
|
|
120
|
+
// два активных объекта сделали бы адресное использование неоднозначным.
|
|
121
|
+
const taken = (await deps.store.list({ type: 'tool' })).filter((o) => LIVE_STATUSES.includes(o.status) && asTool(o).name === input.name && o.id !== current?.id);
|
|
64
122
|
if (taken.length > 0) {
|
|
65
123
|
const list = taken.map((o) => `${o.id} [${o.status}]`).join('; ');
|
|
66
124
|
throw new UserFacingError(`Name "${input.name}" is already taken: ${list}. Choose another name`);
|
|
67
125
|
}
|
|
68
126
|
// Dedup-подсказка (search-before-write): похожие по контракту — только предупреждение.
|
|
69
127
|
const similar = await findSimilar(deps.store, input);
|
|
70
|
-
if (similar.length > 0 && !input.force) {
|
|
128
|
+
if (similar.length > 0 && !input.force && !current) {
|
|
71
129
|
const list = similar.map((s) => `${s.name} (${s.id}) [${s.status}]`).join('; ');
|
|
72
130
|
throw new UserFacingError(`Similar tools found: ${list}. Confirm the intent with --force`);
|
|
73
131
|
}
|
|
74
|
-
const relDest = join('.wolf', 'tools', `${input.name}${extname(absSrc)}`);
|
|
75
|
-
const content = await deps.fs.readSmallTextFile(absSrc);
|
|
76
|
-
if (content === null)
|
|
77
|
-
throw new UserFacingError(`Script not found: ${absSrc}`);
|
|
78
|
-
await deps.fs.writeFile(join(deps.baseDir, relDest), content);
|
|
79
132
|
const extra = {
|
|
80
133
|
name: input.name,
|
|
81
134
|
script_path: relDest,
|
|
135
|
+
source_digest: version,
|
|
82
136
|
language: input.language,
|
|
83
137
|
// store.save не применяет zod-дефолты — usage_count задаём явно.
|
|
84
138
|
usage_count: 0,
|
|
@@ -89,6 +143,45 @@ export async function registerTool(deps, input) {
|
|
|
89
143
|
extra.contract_output = input.contractOut;
|
|
90
144
|
if (input.contractEnvironment !== undefined)
|
|
91
145
|
extra.contract_environment = input.contractEnvironment;
|
|
146
|
+
if (current) {
|
|
147
|
+
const patch = {
|
|
148
|
+
script_path: relDest,
|
|
149
|
+
language: input.language,
|
|
150
|
+
source_digest: version,
|
|
151
|
+
related: { ...current.related, files: uniqueFiles },
|
|
152
|
+
...(input.contractIn !== undefined ? { contract_input: input.contractIn } : {}),
|
|
153
|
+
...(input.contractOut !== undefined ? { contract_output: input.contractOut } : {}),
|
|
154
|
+
...(input.contractEnvironment !== undefined ? { contract_environment: input.contractEnvironment } : {}),
|
|
155
|
+
...(input.notes !== undefined ? { body: input.notes } : {}),
|
|
156
|
+
};
|
|
157
|
+
const updated = await deps.store.update(current.id, patch);
|
|
158
|
+
// 2.25.1 (defect 1): exposed SKILL.md не должен расходиться с карточкой после
|
|
159
|
+
// register --update. Перегенерируем только файл с нашим маркером; пользовательский
|
|
160
|
+
// файл без маркера не трогаем. Источник истины — обновлённая карточка.
|
|
161
|
+
const skillPath = join(deps.baseDir, '.opencode', 'skills', asTool(updated).name, 'SKILL.md');
|
|
162
|
+
const exposed = await deps.fs.readSmallTextFile(skillPath);
|
|
163
|
+
let exposedSkillRefreshed;
|
|
164
|
+
if (exposed !== null && exposed.includes(`generated from tool:${updated.id}`)) {
|
|
165
|
+
await deps.fs.writeFile(skillPath, toolSkillContent(asTool(updated)));
|
|
166
|
+
exposedSkillRefreshed = true;
|
|
167
|
+
}
|
|
168
|
+
if (deps.index)
|
|
169
|
+
await deps.index.indexObject(updated);
|
|
170
|
+
const now = deps.clock.now();
|
|
171
|
+
await deps.log.append({
|
|
172
|
+
id: deps.idGen.generateEventId(now),
|
|
173
|
+
type: 'memory.updated',
|
|
174
|
+
timestamp: now.toISOString(),
|
|
175
|
+
actor: input.createdBy,
|
|
176
|
+
payload: { memory_id: current.id, kind: 'tool.reference.updated' },
|
|
177
|
+
});
|
|
178
|
+
return {
|
|
179
|
+
toolId: current.id,
|
|
180
|
+
scriptPath: relDest,
|
|
181
|
+
similar: similar.filter((s) => s.id !== current.id),
|
|
182
|
+
exposedSkillRefreshed,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
92
185
|
const { object } = await addMemoryObject({
|
|
93
186
|
store: deps.store,
|
|
94
187
|
log: deps.log,
|
|
@@ -101,6 +194,7 @@ export async function registerTool(deps, input) {
|
|
|
101
194
|
type: 'tool',
|
|
102
195
|
title: `Tool: ${input.name}`,
|
|
103
196
|
body: input.notes ?? '',
|
|
197
|
+
related: { files: uniqueFiles, docs: [], decisions: [] },
|
|
104
198
|
createdBy: input.createdBy,
|
|
105
199
|
extra,
|
|
106
200
|
});
|
|
@@ -115,6 +209,7 @@ export async function listTools(deps, filters = {}) {
|
|
|
115
209
|
export async function useTool(deps, input) {
|
|
116
210
|
const run = async () => {
|
|
117
211
|
const tool = await resolveToolRef(deps, input.nameOrId);
|
|
212
|
+
await checkSource(deps, tool);
|
|
118
213
|
const now = deps.clock.now();
|
|
119
214
|
const usageCount = (tool.usage_count ?? 0) + 1;
|
|
120
215
|
const patch = { usage_count: usageCount, last_used_at: now.toISOString() };
|
|
@@ -143,7 +238,7 @@ export function toolSkillContent(tool) {
|
|
|
143
238
|
return [
|
|
144
239
|
'---',
|
|
145
240
|
`name: ${tool.name}`,
|
|
146
|
-
`description: Tool ${tool.name} — ${description}
|
|
241
|
+
`description: ${JSON.stringify(`Tool ${tool.name} — ${description}.`)}`,
|
|
147
242
|
'---',
|
|
148
243
|
`<!-- generated from tool:${tool.id} -->`,
|
|
149
244
|
'',
|
|
@@ -156,12 +251,15 @@ export function toolSkillContent(tool) {
|
|
|
156
251
|
'',
|
|
157
252
|
'## Instruction',
|
|
158
253
|
'',
|
|
159
|
-
`
|
|
254
|
+
`Before running the script, verify the source is current: \`wolf tool expose ${tool.name}\` (idempotent; fails with "Tool source changed" if the script drifted from the card). Run the script and account for its output, then record the use: \`wolf tool use ${tool.name}\`.`,
|
|
160
255
|
'',
|
|
161
256
|
].join('\n');
|
|
162
257
|
}
|
|
163
258
|
export async function exposeTool(deps, input) {
|
|
164
259
|
const tool = await resolveToolRef(deps, input.nameOrId);
|
|
260
|
+
if (!NAME_RE.test(tool.name))
|
|
261
|
+
throw new UserFacingError('Invalid tool name for exposure');
|
|
262
|
+
await checkSource(deps, tool);
|
|
165
263
|
const relPath = join('.opencode', 'skills', tool.name, 'SKILL.md');
|
|
166
264
|
const content = toolSkillContent(tool);
|
|
167
265
|
await deps.fs.writeFile(join(deps.baseDir, relPath), content);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-librarian.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-librarian.js","sourceRoot":"","sources":["../../../src/app/use-cases/tool-librarian.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAqDvE,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAE9C,SAAS,MAAM,CAAC,GAAiB;IAC/B,OAAO,GAAiB,CAAC;AAC3B,CAAC;AAED,wDAAwD;AACxD,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,IAAI,GAAG,CACZ,IAAI;SACD,WAAW,EAAE;SACb,KAAK,CAAC,iBAAiB,CAAC;SACxB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,KAAkB,EAClB,KAAwB;IAExB,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;IACrF,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,OAAO,GAAmD,EAAE,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAClD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,cAAc,IAAI,EAAE,IAAI,CAAC,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC,CAAC;QAClG,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;QACxC,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,IAAI,SAAS,IAAI,UAAU;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,OAAO,GAAG,uBAAuB,CAAC;AAExC,yFAAyF;AACzF,KAAK,UAAU,cAAc,CAAC,IAAsC,EAAE,QAAgB;IACpF,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,eAAe,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC1F,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACrG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CACvB,wBAAwB,QAAQ,MAAM,OAAO,CAAC,MAAM,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxG,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;AAC7B,CAAC;AAED,2EAA2E;AAC3E,KAAK,UAAU,WAAW,CAAC,IAAuB,EAAE,MAAc;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAW,EAAE;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvF,CAAC,CAAC;IACF,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,eAAe,CAAC,yCAAyC,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IAChG,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,IAAI,eAAe,CAAC,oDAAoD,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAuB,EAAE,KAAe;IACnE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU;gBAAE,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC/D,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC1D,IAAI,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBACtE,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,eAAe,CAAC,gCAAgC,GAAG,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAuB,EAAE,IAAgB;IAClE,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;IACnC,IAAI,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;YACnD,MAAM,IAAI,eAAe,CAAC,wBAAwB,IAAI,CAAC,IAAI,4CAA4C,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAuB,EAAE,KAAwB;IAClF,MAAM,GAAG,GAAG,KAAK,IAAiC,EAAE;QAClD,2EAA2E;QAC3E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,eAAe,CAAC,sBAAsB,KAAK,CAAC,IAAI,kDAAkD,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAE,MAAM,IAAI,eAAe,CAAC,4CAA4C,CAAC,CAAC;QACpH,MAAM,cAAc,GAClB,KAAK,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,EAAE,WAAW,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,KAAK,MAAM,QAAQ,IAAI,cAAc;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACvD,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,EAAE,EAAE,CACjG,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,IAAI,eAAe,CAAC,SAAS,KAAK,CAAC,IAAI,uBAAuB,IAAI,uBAAuB,CAAC,CAAC;QACnG,CAAC;QAED,uFAAuF;QACvF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChF,MAAM,IAAI,eAAe,CAAC,wBAAwB,IAAI,mCAAmC,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,KAAK,GAA4B;YACrC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,OAAO;YACpB,aAAa,EAAE,OAAO;YACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,iEAAiE;YACjE,WAAW,EAAE,CAAC;SACf,CAAC;QACF,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;YAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;QAC5E,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;YAAE,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/E,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS;YAAE,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAEpG,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG;gBACZ,WAAW,EAAE,OAAO;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,aAAa,EAAE,OAAO;gBACtB,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE;gBACnD,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,GAAG,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvG,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAA8B,CAAC,CAAC;YACpF,8EAA8E;YAC9E,mFAAmF;YACnF,uEAAuE;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC9F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,qBAAuC,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC9E,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACtE,qBAAqB,GAAG,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;gBACnC,IAAI,EAAE,gBAAgB;gBACtB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;gBAC5B,KAAK,EAAE,KAAK,CAAC,SAAS;gBACtB,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE;aACnE,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,EAAE;gBAClB,UAAU,EAAE,OAAO;gBACnB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;gBACnD,qBAAqB;aACtB,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,eAAe,CACtC;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,qFAAqF;YACrF,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,EACD;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,SAAS,KAAK,CAAC,IAAI,EAAE;YAC5B,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;YACvB,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YACxD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,KAAK;SACN,CACF,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC7D,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAsC,EACtC,UAA+B,EAAE;IAEjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAuB,EACvB,KAA0C;IAE1C,MAAM,GAAG,GAAG,KAAK,IAAyB,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,EAAsC,CAAC;QAC/G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC;YACnC,sEAAsE;YACtE,uEAAuE;YACvE,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;SAC5E,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,gBAAgB,CAAC,IAAgB;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,IAAI,yBAAyB,CAAC;IACtE,iFAAiF;IACjF,6EAA6E;IAC7E,OAAO;QACL,KAAK;QACL,SAAS,IAAI,CAAC,IAAI,EAAE;QACpB,gBAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,IAAI,MAAM,WAAW,GAAG,CAAC,EAAE;QACvE,KAAK;QACL,4BAA4B,IAAI,CAAC,EAAE,MAAM;QACzC,EAAE;QACF,UAAU,IAAI,CAAC,IAAI,EAAE;QACrB,EAAE;QACF,YAAY,IAAI,CAAC,cAAc,IAAI,GAAG,EAAE;QACxC,aAAa,IAAI,CAAC,eAAe,IAAI,GAAG,EAAE;QAC1C,kBAAkB,IAAI,CAAC,oBAAoB,IAAI,GAAG,EAAE;QACpD,eAAe,IAAI,CAAC,WAAW,+CAA+C;QAC9E,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,+EAA+E,IAAI,CAAC,IAAI,0KAA0K,IAAI,CAAC,IAAI,KAAK;QAChR,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAuB,EACvB,KAA2C;IAE3C,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,CAAC,CAAC;IAC1F,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAe,EACf,KAA0D;IAE1D,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,eAAe,CAAC,2CAA2C,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,KAAK,GAAG,EAAE,kBAAkB,EAAE,KAAK,CAAC,MAAM,EAAsC,CAAC;IACvF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAe,EAAE,KAA0C;IAC1F,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -243,6 +243,10 @@ declare const CORE_TAXONOMY_DECLS: readonly [{
|
|
|
243
243
|
readonly kind: "string";
|
|
244
244
|
readonly optional: true;
|
|
245
245
|
};
|
|
246
|
+
readonly source_digest: {
|
|
247
|
+
readonly kind: "string";
|
|
248
|
+
readonly optional: true;
|
|
249
|
+
};
|
|
246
250
|
};
|
|
247
251
|
}, {
|
|
248
252
|
readonly name: "note";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"memory-types.d.ts","sourceRoot":"","sources":["../../src/domain/memory-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,6 +132,7 @@ const CORE_TAXONOMY_DECLS = [
|
|
|
132
132
|
owner_skill: { kind: 'string', optional: true },
|
|
133
133
|
version: { kind: 'string', optional: true },
|
|
134
134
|
source_url: { kind: 'string', optional: true },
|
|
135
|
+
source_digest: { kind: 'string', optional: true },
|
|
135
136
|
},
|
|
136
137
|
},
|
|
137
138
|
{
|