@soleri/core 7.0.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agency/agency-manager.d.ts +27 -1
- package/dist/agency/agency-manager.d.ts.map +1 -1
- package/dist/agency/agency-manager.js +180 -9
- package/dist/agency/agency-manager.js.map +1 -1
- package/dist/agency/default-rules.d.ts +7 -0
- package/dist/agency/default-rules.d.ts.map +1 -0
- package/dist/agency/default-rules.js +79 -0
- package/dist/agency/default-rules.js.map +1 -0
- package/dist/agency/types.d.ts +48 -0
- package/dist/agency/types.d.ts.map +1 -1
- package/dist/brain/brain.d.ts +17 -2
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +118 -8
- package/dist/brain/brain.js.map +1 -1
- package/dist/brain/knowledge-synthesizer.d.ts +37 -0
- package/dist/brain/knowledge-synthesizer.d.ts.map +1 -0
- package/dist/brain/knowledge-synthesizer.js +161 -0
- package/dist/brain/knowledge-synthesizer.js.map +1 -0
- package/dist/brain/learning-radar.d.ts +96 -0
- package/dist/brain/learning-radar.d.ts.map +1 -0
- package/dist/brain/learning-radar.js +202 -0
- package/dist/brain/learning-radar.js.map +1 -0
- package/dist/brain/types.d.ts +15 -0
- package/dist/brain/types.d.ts.map +1 -1
- package/dist/context/context-engine.d.ts.map +1 -1
- package/dist/context/context-engine.js +82 -17
- package/dist/context/context-engine.js.map +1 -1
- package/dist/context/types.d.ts +5 -0
- package/dist/context/types.d.ts.map +1 -1
- package/dist/control/intent-router.d.ts +12 -1
- package/dist/control/intent-router.d.ts.map +1 -1
- package/dist/control/intent-router.js +68 -0
- package/dist/control/intent-router.js.map +1 -1
- package/dist/control/types.d.ts +17 -0
- package/dist/control/types.d.ts.map +1 -1
- package/dist/curator/classifier.d.ts +18 -0
- package/dist/curator/classifier.d.ts.map +1 -0
- package/dist/curator/classifier.js +61 -0
- package/dist/curator/classifier.js.map +1 -0
- package/dist/curator/quality-gate.d.ts +29 -0
- package/dist/curator/quality-gate.d.ts.map +1 -0
- package/dist/curator/quality-gate.js +88 -0
- package/dist/curator/quality-gate.js.map +1 -0
- package/dist/engine/bin/soleri-engine.js +1 -0
- package/dist/engine/bin/soleri-engine.js.map +1 -1
- package/dist/events/event-bus.d.ts +30 -0
- package/dist/events/event-bus.d.ts.map +1 -0
- package/dist/events/event-bus.js +51 -0
- package/dist/events/event-bus.js.map +1 -0
- package/dist/flows/chain-runner.d.ts +46 -0
- package/dist/flows/chain-runner.d.ts.map +1 -0
- package/dist/flows/chain-runner.js +271 -0
- package/dist/flows/chain-runner.js.map +1 -0
- package/dist/flows/chain-types.d.ts +103 -0
- package/dist/flows/chain-types.d.ts.map +1 -0
- package/dist/flows/chain-types.js +23 -0
- package/dist/flows/chain-types.js.map +1 -0
- package/dist/health/doctor-checks.d.ts +15 -0
- package/dist/health/doctor-checks.d.ts.map +1 -0
- package/dist/health/doctor-checks.js +98 -0
- package/dist/health/doctor-checks.js.map +1 -0
- package/dist/intake/text-ingester.d.ts +52 -0
- package/dist/intake/text-ingester.d.ts.map +1 -0
- package/dist/intake/text-ingester.js +181 -0
- package/dist/intake/text-ingester.js.map +1 -0
- package/dist/llm/llm-client.d.ts.map +1 -1
- package/dist/llm/llm-client.js +37 -1
- package/dist/llm/llm-client.js.map +1 -1
- package/dist/llm/oauth-discovery.d.ts +26 -0
- package/dist/llm/oauth-discovery.d.ts.map +1 -0
- package/dist/llm/oauth-discovery.js +149 -0
- package/dist/llm/oauth-discovery.js.map +1 -0
- package/dist/planning/evidence-collector.d.ts +41 -0
- package/dist/planning/evidence-collector.d.ts.map +1 -0
- package/dist/planning/evidence-collector.js +194 -0
- package/dist/planning/evidence-collector.js.map +1 -0
- package/dist/planning/planner.d.ts +4 -0
- package/dist/planning/planner.d.ts.map +1 -1
- package/dist/planning/planner.js +11 -0
- package/dist/planning/planner.js.map +1 -1
- package/dist/queue/job-queue.d.ts +92 -0
- package/dist/queue/job-queue.d.ts.map +1 -0
- package/dist/queue/job-queue.js +180 -0
- package/dist/queue/job-queue.js.map +1 -0
- package/dist/queue/pipeline-runner.d.ts +62 -0
- package/dist/queue/pipeline-runner.d.ts.map +1 -0
- package/dist/queue/pipeline-runner.js +126 -0
- package/dist/queue/pipeline-runner.js.map +1 -0
- package/dist/runtime/admin-setup-ops.d.ts +20 -0
- package/dist/runtime/admin-setup-ops.d.ts.map +1 -0
- package/dist/runtime/admin-setup-ops.js +583 -0
- package/dist/runtime/admin-setup-ops.js.map +1 -0
- package/dist/runtime/chain-ops.d.ts +9 -0
- package/dist/runtime/chain-ops.d.ts.map +1 -0
- package/dist/runtime/chain-ops.js +107 -0
- package/dist/runtime/chain-ops.js.map +1 -0
- package/dist/runtime/claude-md-helpers.d.ts +65 -0
- package/dist/runtime/claude-md-helpers.d.ts.map +1 -0
- package/dist/runtime/claude-md-helpers.js +173 -0
- package/dist/runtime/claude-md-helpers.js.map +1 -0
- package/dist/runtime/curator-extra-ops.d.ts +3 -2
- package/dist/runtime/curator-extra-ops.d.ts.map +1 -1
- package/dist/runtime/curator-extra-ops.js +81 -3
- package/dist/runtime/curator-extra-ops.js.map +1 -1
- package/dist/runtime/facades/admin-facade.d.ts.map +1 -1
- package/dist/runtime/facades/admin-facade.js +4 -0
- package/dist/runtime/facades/admin-facade.js.map +1 -1
- package/dist/runtime/facades/agency-facade.d.ts.map +1 -1
- package/dist/runtime/facades/agency-facade.js +64 -0
- package/dist/runtime/facades/agency-facade.js.map +1 -1
- package/dist/runtime/facades/brain-facade.d.ts.map +1 -1
- package/dist/runtime/facades/brain-facade.js +122 -1
- package/dist/runtime/facades/brain-facade.js.map +1 -1
- package/dist/runtime/facades/control-facade.d.ts.map +1 -1
- package/dist/runtime/facades/control-facade.js +42 -0
- package/dist/runtime/facades/control-facade.js.map +1 -1
- package/dist/runtime/facades/memory-facade.d.ts.map +1 -1
- package/dist/runtime/facades/memory-facade.js +20 -2
- package/dist/runtime/facades/memory-facade.js.map +1 -1
- package/dist/runtime/facades/plan-facade.d.ts.map +1 -1
- package/dist/runtime/facades/plan-facade.js +2 -0
- package/dist/runtime/facades/plan-facade.js.map +1 -1
- package/dist/runtime/facades/vault-facade.d.ts.map +1 -1
- package/dist/runtime/facades/vault-facade.js +25 -5
- package/dist/runtime/facades/vault-facade.js.map +1 -1
- package/dist/runtime/intake-ops.d.ts +7 -5
- package/dist/runtime/intake-ops.d.ts.map +1 -1
- package/dist/runtime/intake-ops.js +98 -5
- package/dist/runtime/intake-ops.js.map +1 -1
- package/dist/runtime/memory-extra-ops.d.ts +6 -3
- package/dist/runtime/memory-extra-ops.d.ts.map +1 -1
- package/dist/runtime/memory-extra-ops.js +292 -4
- package/dist/runtime/memory-extra-ops.js.map +1 -1
- package/dist/runtime/planning-extra-ops.d.ts.map +1 -1
- package/dist/runtime/planning-extra-ops.js +85 -0
- package/dist/runtime/planning-extra-ops.js.map +1 -1
- package/dist/runtime/playbook-ops.js +1 -1
- package/dist/runtime/playbook-ops.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +143 -2
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/session-briefing.d.ts +23 -0
- package/dist/runtime/session-briefing.d.ts.map +1 -0
- package/dist/runtime/session-briefing.js +140 -0
- package/dist/runtime/session-briefing.js.map +1 -0
- package/dist/runtime/types.d.ts +23 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.js +1 -3
- package/dist/runtime/vault-linking-ops.js.map +1 -1
- package/dist/vault/vault.d.ts +25 -0
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +67 -3
- package/dist/vault/vault.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/admin-setup-ops.test.ts +355 -0
- package/src/__tests__/async-infrastructure.test.ts +307 -0
- package/src/__tests__/cognee-client-gaps.test.ts +6 -2
- package/src/__tests__/cognee-hybrid-search.test.ts +49 -35
- package/src/__tests__/cognee-sync-manager-deep.test.ts +89 -65
- package/src/__tests__/curator-extra-ops.test.ts +6 -2
- package/src/__tests__/curator-pipeline-e2e.test.ts +358 -0
- package/src/__tests__/memory-extra-ops.test.ts +2 -2
- package/src/__tests__/planning-extra-ops.test.ts +2 -2
- package/src/__tests__/second-brain-features.test.ts +583 -0
- package/src/agency/agency-manager.ts +217 -9
- package/src/agency/default-rules.ts +83 -0
- package/src/agency/types.ts +61 -0
- package/src/brain/brain.ts +110 -8
- package/src/brain/knowledge-synthesizer.ts +218 -0
- package/src/brain/learning-radar.ts +340 -0
- package/src/brain/types.ts +16 -0
- package/src/context/context-engine.ts +114 -15
- package/src/context/types.ts +5 -0
- package/src/control/intent-router.ts +107 -0
- package/src/control/types.ts +10 -0
- package/src/curator/classifier.ts +88 -0
- package/src/curator/quality-gate.ts +129 -0
- package/src/engine/bin/soleri-engine.ts +1 -0
- package/src/events/event-bus.ts +58 -0
- package/src/flows/chain-runner.ts +369 -0
- package/src/flows/chain-types.ts +57 -0
- package/src/health/doctor-checks.ts +115 -0
- package/src/intake/text-ingester.ts +234 -0
- package/src/llm/llm-client.ts +38 -1
- package/src/llm/oauth-discovery.ts +169 -0
- package/src/planning/evidence-collector.ts +247 -0
- package/src/planning/planner.ts +11 -0
- package/src/queue/job-queue.ts +281 -0
- package/src/queue/pipeline-runner.ts +149 -0
- package/src/runtime/admin-setup-ops.ts +664 -0
- package/src/runtime/chain-ops.ts +121 -0
- package/src/runtime/claude-md-helpers.ts +236 -0
- package/src/runtime/curator-extra-ops.ts +86 -3
- package/src/runtime/facades/admin-facade.ts +4 -0
- package/src/runtime/facades/agency-facade.ts +68 -0
- package/src/runtime/facades/brain-facade.ts +142 -1
- package/src/runtime/facades/control-facade.ts +45 -0
- package/src/runtime/facades/memory-facade.ts +20 -2
- package/src/runtime/facades/plan-facade.ts +2 -0
- package/src/runtime/facades/vault-facade.ts +28 -5
- package/src/runtime/intake-ops.ts +107 -5
- package/src/runtime/memory-extra-ops.ts +312 -4
- package/src/runtime/planning-extra-ops.ts +94 -0
- package/src/runtime/playbook-ops.ts +1 -1
- package/src/runtime/runtime.ts +138 -2
- package/src/runtime/session-briefing.ts +161 -0
- package/src/runtime/types.ts +23 -0
- package/src/runtime/vault-linking-ops.ts +1 -3
- package/src/vault/vault.ts +79 -4
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Admin setup operations — 4 ops for agent self-installation.
|
|
3
|
+
*
|
|
4
|
+
* inject_claude_md: Inject agent sections into CLAUDE.md
|
|
5
|
+
* admin_setup_global: Install hooks + skills + settings.json lifecycle hooks
|
|
6
|
+
* admin_setup_project: Project-level hook management (analyze/cleanup/install)
|
|
7
|
+
* admin_check_persistence: Diagnostic — check plan/task/check storage status
|
|
8
|
+
*
|
|
9
|
+
* Ported from Salvador MCP. Key adaptations:
|
|
10
|
+
* - Runtime-config-driven (no vault manifest dependency)
|
|
11
|
+
* - Agent-scoped markers for multi-agent coexistence
|
|
12
|
+
* - OpDefinition[] pattern (not standalone tool files)
|
|
13
|
+
*/
|
|
14
|
+
import { z } from 'zod';
|
|
15
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync, copyFileSync, readdirSync, unlinkSync, statSync, } from 'node:fs';
|
|
16
|
+
import { join, resolve, dirname } from 'node:path';
|
|
17
|
+
import { homedir } from 'node:os';
|
|
18
|
+
import { hasSections, removeSections, injectAtPosition, buildInjectionContent, injectEngineRulesBlock, } from './claude-md-helpers.js';
|
|
19
|
+
// ─── Helpers ──────────────────────────────────────────────────────────
|
|
20
|
+
/** Find CLAUDE.md in a project — checks root and .claude/ */
|
|
21
|
+
function findClaudeMdPath(projectPath) {
|
|
22
|
+
const candidates = [join(projectPath, 'CLAUDE.md'), join(projectPath, '.claude', 'CLAUDE.md')];
|
|
23
|
+
for (const p of candidates) {
|
|
24
|
+
if (existsSync(p))
|
|
25
|
+
return p;
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
/** Read settings.json from ~/.claude/ */
|
|
30
|
+
function readSettingsJson() {
|
|
31
|
+
const settingsPath = join(homedir(), '.claude', 'settings.json');
|
|
32
|
+
if (!existsSync(settingsPath))
|
|
33
|
+
return {};
|
|
34
|
+
try {
|
|
35
|
+
return JSON.parse(readFileSync(settingsPath, 'utf-8'));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Write settings.json to ~/.claude/ */
|
|
42
|
+
function writeSettingsJson(settings) {
|
|
43
|
+
const settingsPath = join(homedir(), '.claude', 'settings.json');
|
|
44
|
+
mkdirSync(dirname(settingsPath), { recursive: true });
|
|
45
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\n');
|
|
46
|
+
}
|
|
47
|
+
/** Get file info for persistence diagnostic */
|
|
48
|
+
function getFileInfo(path) {
|
|
49
|
+
if (!existsSync(path)) {
|
|
50
|
+
return { exists: false, size: 0, items: 0 };
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const stat = statSync(path);
|
|
54
|
+
const content = JSON.parse(readFileSync(path, 'utf-8'));
|
|
55
|
+
const items = content.items
|
|
56
|
+
? Object.keys(content.items).length
|
|
57
|
+
: content.contexts
|
|
58
|
+
? content.contexts.length
|
|
59
|
+
: Array.isArray(content)
|
|
60
|
+
? content.length
|
|
61
|
+
: 0;
|
|
62
|
+
return { exists: true, size: stat.size, items };
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return { exists: true, size: 0, items: -1 };
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Discover hookify rule files in a directory */
|
|
69
|
+
function discoverHookifyFiles(dir) {
|
|
70
|
+
if (!existsSync(dir))
|
|
71
|
+
return [];
|
|
72
|
+
return readdirSync(dir)
|
|
73
|
+
.filter((f) => f.startsWith('hookify.') && f.endsWith('.local.md'))
|
|
74
|
+
.map((f) => ({ name: f, path: join(dir, f) }));
|
|
75
|
+
}
|
|
76
|
+
/** Discover skill files (SKILL.md) in a skills directory */
|
|
77
|
+
function discoverSkills(skillsDirs) {
|
|
78
|
+
const skills = [];
|
|
79
|
+
for (const dir of skillsDirs) {
|
|
80
|
+
if (!existsSync(dir))
|
|
81
|
+
continue;
|
|
82
|
+
const entries = readdirSync(dir, { withFileTypes: true });
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
if (!entry.isDirectory())
|
|
85
|
+
continue;
|
|
86
|
+
const skillPath = join(dir, entry.name, 'SKILL.md');
|
|
87
|
+
if (existsSync(skillPath)) {
|
|
88
|
+
skills.push({ name: entry.name, sourcePath: skillPath });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return skills;
|
|
93
|
+
}
|
|
94
|
+
/** Default lifecycle hooks for any Soleri agent */
|
|
95
|
+
function getDefaultLifecycleHooks(agentId) {
|
|
96
|
+
const marker = `mcp__${agentId}__${agentId}_`;
|
|
97
|
+
return {
|
|
98
|
+
SessionStart: [
|
|
99
|
+
{
|
|
100
|
+
matcher: '',
|
|
101
|
+
hooks: [
|
|
102
|
+
{
|
|
103
|
+
type: 'prompt',
|
|
104
|
+
prompt: `Call ${marker}admin op:admin_health to verify agent is ready. Do not show the result unless there are errors.`,
|
|
105
|
+
timeout: 15000,
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
PreCompact: [
|
|
111
|
+
{
|
|
112
|
+
matcher: '',
|
|
113
|
+
hooks: [
|
|
114
|
+
{
|
|
115
|
+
type: 'agent',
|
|
116
|
+
prompt: `Call ${marker}memory op:session_capture with a brief summary of the current session before context is compacted.`,
|
|
117
|
+
timeout: 30000,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
Stop: [
|
|
123
|
+
{
|
|
124
|
+
matcher: '',
|
|
125
|
+
hooks: [
|
|
126
|
+
{
|
|
127
|
+
type: 'agent',
|
|
128
|
+
prompt: `Call ${marker}memory op:session_capture with a structured summary of what was accomplished, then check ${marker}loop op:loop_status — if a loop is active, remind the user.`,
|
|
129
|
+
timeout: 30000,
|
|
130
|
+
},
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** Check if a hook group belongs to this agent by inspecting prompts for the marker */
|
|
137
|
+
function isAgentHookGroup(group, agentId) {
|
|
138
|
+
const marker = `mcp__${agentId}__${agentId}_`;
|
|
139
|
+
return group.hooks.some((h) => (h.prompt && h.prompt.includes(marker)) || (h.command && h.command.includes(marker)));
|
|
140
|
+
}
|
|
141
|
+
/** Merge agent hooks into settings.json hooks object */
|
|
142
|
+
function mergeSettingsHooks(currentHooks, agentId) {
|
|
143
|
+
const defaults = getDefaultLifecycleHooks(agentId);
|
|
144
|
+
const merged = { ...currentHooks };
|
|
145
|
+
const installed = [];
|
|
146
|
+
const updated = [];
|
|
147
|
+
const skipped = [];
|
|
148
|
+
for (const [event, groups] of Object.entries(defaults)) {
|
|
149
|
+
if (!merged[event]) {
|
|
150
|
+
merged[event] = groups;
|
|
151
|
+
installed.push(event);
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
// Check if agent group already exists
|
|
155
|
+
const existingIdx = merged[event].findIndex((g) => isAgentHookGroup(g, agentId));
|
|
156
|
+
if (existingIdx === -1) {
|
|
157
|
+
// Append agent hooks (don't touch non-agent hooks)
|
|
158
|
+
merged[event].push(...groups);
|
|
159
|
+
installed.push(event);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Check if template matches
|
|
163
|
+
const existing = JSON.stringify(merged[event][existingIdx]);
|
|
164
|
+
const template = JSON.stringify(groups[0]);
|
|
165
|
+
if (existing === template) {
|
|
166
|
+
skipped.push(event);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
merged[event][existingIdx] = groups[0];
|
|
170
|
+
updated.push(event);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return { hooks: merged, installed, updated, skipped };
|
|
175
|
+
}
|
|
176
|
+
// ─── Op Definitions ───────────────────────────────────────────────────
|
|
177
|
+
/**
|
|
178
|
+
* Create 4 admin setup operations.
|
|
179
|
+
*/
|
|
180
|
+
export function createAdminSetupOps(runtime) {
|
|
181
|
+
const { config } = runtime;
|
|
182
|
+
return [
|
|
183
|
+
// ─── inject_claude_md ──────────────────────────────────────────
|
|
184
|
+
{
|
|
185
|
+
name: 'admin_inject_claude_md',
|
|
186
|
+
description: 'Inject agent sections into a project or global CLAUDE.md. Idempotent — updates existing sections or adds new ones.',
|
|
187
|
+
auth: 'write',
|
|
188
|
+
schema: z.object({
|
|
189
|
+
projectPath: z.string().describe('Project path (use "." for current directory)'),
|
|
190
|
+
includeIntegration: z
|
|
191
|
+
.boolean()
|
|
192
|
+
.optional()
|
|
193
|
+
.default(true)
|
|
194
|
+
.describe('Include integration section with tools table'),
|
|
195
|
+
createIfMissing: z
|
|
196
|
+
.boolean()
|
|
197
|
+
.optional()
|
|
198
|
+
.default(false)
|
|
199
|
+
.describe('Create CLAUDE.md if not found'),
|
|
200
|
+
position: z
|
|
201
|
+
.enum(['start', 'end', 'after-title'])
|
|
202
|
+
.optional()
|
|
203
|
+
.default('after-title')
|
|
204
|
+
.describe('Where to inject (default: after first heading)'),
|
|
205
|
+
dryRun: z.boolean().optional().default(false).describe('Preview changes without writing'),
|
|
206
|
+
global: z
|
|
207
|
+
.boolean()
|
|
208
|
+
.optional()
|
|
209
|
+
.default(false)
|
|
210
|
+
.describe('Inject into ~/.claude/CLAUDE.md instead of project'),
|
|
211
|
+
}),
|
|
212
|
+
handler: async (params) => {
|
|
213
|
+
const projectPath = resolve(params.projectPath);
|
|
214
|
+
const includeIntegration = params.includeIntegration;
|
|
215
|
+
const createIfMissing = params.createIfMissing;
|
|
216
|
+
const position = params.position;
|
|
217
|
+
const dryRun = params.dryRun;
|
|
218
|
+
const isGlobal = params.global;
|
|
219
|
+
// Determine target path
|
|
220
|
+
const targetPath = isGlobal
|
|
221
|
+
? join(homedir(), '.claude', 'CLAUDE.md')
|
|
222
|
+
: findClaudeMdPath(projectPath);
|
|
223
|
+
if (!targetPath && !createIfMissing) {
|
|
224
|
+
return {
|
|
225
|
+
action: 'error',
|
|
226
|
+
error: 'CLAUDE.md not found',
|
|
227
|
+
searchedPaths: [
|
|
228
|
+
join(projectPath, 'CLAUDE.md'),
|
|
229
|
+
join(projectPath, '.claude', 'CLAUDE.md'),
|
|
230
|
+
],
|
|
231
|
+
hint: 'Set createIfMissing: true to create one',
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
const filePath = targetPath ?? join(projectPath, 'CLAUDE.md');
|
|
235
|
+
const existingContent = existsSync(filePath) ? readFileSync(filePath, 'utf-8') : '';
|
|
236
|
+
// Inject engine rules if this is a global injection and agentDir is available
|
|
237
|
+
let contentWithEngineRules = existingContent;
|
|
238
|
+
if (isGlobal && config.agentDir) {
|
|
239
|
+
const enginePath = join(config.agentDir, 'instructions', '_engine.md');
|
|
240
|
+
if (existsSync(enginePath)) {
|
|
241
|
+
const engineRulesContent = readFileSync(enginePath, 'utf-8');
|
|
242
|
+
contentWithEngineRules = injectEngineRulesBlock(existingContent, engineRulesContent);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
// Build injection content
|
|
246
|
+
const injectionContent = buildInjectionContent(config, { includeIntegration });
|
|
247
|
+
// Check if already injected
|
|
248
|
+
if (hasSections(contentWithEngineRules, config.agentId)) {
|
|
249
|
+
// Update existing sections
|
|
250
|
+
const stripped = removeSections(contentWithEngineRules, config.agentId);
|
|
251
|
+
const updated = injectAtPosition(stripped, injectionContent, position);
|
|
252
|
+
if (dryRun) {
|
|
253
|
+
return { action: 'would_update', path: filePath, preview: injectionContent };
|
|
254
|
+
}
|
|
255
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
256
|
+
writeFileSync(filePath, updated);
|
|
257
|
+
return { action: 'updated', path: filePath, agentId: config.agentId };
|
|
258
|
+
}
|
|
259
|
+
// New injection
|
|
260
|
+
let result;
|
|
261
|
+
if (contentWithEngineRules) {
|
|
262
|
+
result = injectAtPosition(contentWithEngineRules, injectionContent, position);
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
// Create new file with title
|
|
266
|
+
const projectName = projectPath.split('/').pop() ?? 'Project';
|
|
267
|
+
result = `# ${projectName}\n\n${injectionContent}\n`;
|
|
268
|
+
}
|
|
269
|
+
if (dryRun) {
|
|
270
|
+
return { action: 'would_inject', path: filePath, preview: injectionContent };
|
|
271
|
+
}
|
|
272
|
+
mkdirSync(dirname(filePath), { recursive: true });
|
|
273
|
+
writeFileSync(filePath, result);
|
|
274
|
+
return {
|
|
275
|
+
action: existingContent ? 'injected' : 'created',
|
|
276
|
+
path: filePath,
|
|
277
|
+
agentId: config.agentId,
|
|
278
|
+
};
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
// ─── setup_global ──────────────────────────────────────────────
|
|
282
|
+
{
|
|
283
|
+
name: 'admin_setup_global',
|
|
284
|
+
description: 'Install global agent configuration — hookify rules to ~/.claude/, skills to ~/.claude/commands/, lifecycle hooks to settings.json. Dry-run by default.',
|
|
285
|
+
auth: 'admin',
|
|
286
|
+
schema: z.object({
|
|
287
|
+
install: z.boolean().describe('Set true to install, false for dry-run preview'),
|
|
288
|
+
hooksOnly: z
|
|
289
|
+
.boolean()
|
|
290
|
+
.optional()
|
|
291
|
+
.default(false)
|
|
292
|
+
.describe('Only install hookify rules, skip settings.json and skills'),
|
|
293
|
+
settingsJsonOnly: z
|
|
294
|
+
.boolean()
|
|
295
|
+
.optional()
|
|
296
|
+
.default(false)
|
|
297
|
+
.describe('Only install settings.json lifecycle hooks'),
|
|
298
|
+
skillsOnly: z
|
|
299
|
+
.boolean()
|
|
300
|
+
.optional()
|
|
301
|
+
.default(false)
|
|
302
|
+
.describe('Only install skills to ~/.claude/commands/'),
|
|
303
|
+
}),
|
|
304
|
+
handler: async (params) => {
|
|
305
|
+
const install = params.install;
|
|
306
|
+
const hooksOnly = params.hooksOnly;
|
|
307
|
+
const settingsJsonOnly = params.settingsJsonOnly;
|
|
308
|
+
const skillsOnly = params.skillsOnly;
|
|
309
|
+
const globalClaudeDir = join(homedir(), '.claude');
|
|
310
|
+
const commandsDir = join(globalClaudeDir, 'commands');
|
|
311
|
+
// Discover what's available
|
|
312
|
+
const agentDataDir = config.dataDir;
|
|
313
|
+
const hookifySourceDirs = agentDataDir ? [join(agentDataDir, '.claude')] : [];
|
|
314
|
+
const skillsSourceDirs = agentDataDir ? [join(agentDataDir, 'skills')] : [];
|
|
315
|
+
// 1. Hookify rules analysis
|
|
316
|
+
const hookifyResults = {
|
|
317
|
+
installed: [],
|
|
318
|
+
skipped: [],
|
|
319
|
+
failed: [],
|
|
320
|
+
};
|
|
321
|
+
if (!settingsJsonOnly && !skillsOnly) {
|
|
322
|
+
for (const sourceDir of hookifySourceDirs) {
|
|
323
|
+
const rules = discoverHookifyFiles(sourceDir);
|
|
324
|
+
for (const rule of rules) {
|
|
325
|
+
const targetPath = join(globalClaudeDir, rule.name);
|
|
326
|
+
if (existsSync(targetPath)) {
|
|
327
|
+
hookifyResults.skipped.push(rule.name);
|
|
328
|
+
}
|
|
329
|
+
else if (install) {
|
|
330
|
+
try {
|
|
331
|
+
mkdirSync(globalClaudeDir, { recursive: true });
|
|
332
|
+
copyFileSync(rule.path, targetPath);
|
|
333
|
+
hookifyResults.installed.push(rule.name);
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
hookifyResults.failed.push(rule.name);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
hookifyResults.installed.push(rule.name); // would install
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
// 2. Skills analysis
|
|
346
|
+
const skillsResults = {
|
|
347
|
+
installed: [],
|
|
348
|
+
skipped: [],
|
|
349
|
+
failed: [],
|
|
350
|
+
};
|
|
351
|
+
if (!hooksOnly && !settingsJsonOnly) {
|
|
352
|
+
const skills = discoverSkills(skillsSourceDirs);
|
|
353
|
+
for (const skill of skills) {
|
|
354
|
+
const targetPath = join(commandsDir, `${skill.name}.md`);
|
|
355
|
+
if (existsSync(targetPath)) {
|
|
356
|
+
skillsResults.skipped.push(skill.name);
|
|
357
|
+
}
|
|
358
|
+
else if (install) {
|
|
359
|
+
try {
|
|
360
|
+
mkdirSync(commandsDir, { recursive: true });
|
|
361
|
+
copyFileSync(skill.sourcePath, targetPath);
|
|
362
|
+
skillsResults.installed.push(skill.name);
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
skillsResults.failed.push(skill.name);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
skillsResults.installed.push(skill.name); // would install
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// 3. Settings.json lifecycle hooks
|
|
374
|
+
const settingsResults = {
|
|
375
|
+
installed: [],
|
|
376
|
+
updated: [],
|
|
377
|
+
skipped: [],
|
|
378
|
+
};
|
|
379
|
+
if (!hooksOnly && !skillsOnly) {
|
|
380
|
+
const currentSettings = readSettingsJson();
|
|
381
|
+
const currentHooks = (currentSettings.hooks ?? {});
|
|
382
|
+
const merged = mergeSettingsHooks(currentHooks, config.agentId);
|
|
383
|
+
settingsResults.installed = merged.installed;
|
|
384
|
+
settingsResults.updated = merged.updated;
|
|
385
|
+
settingsResults.skipped = merged.skipped;
|
|
386
|
+
if (install && (merged.installed.length > 0 || merged.updated.length > 0)) {
|
|
387
|
+
currentSettings.hooks = merged.hooks;
|
|
388
|
+
writeSettingsJson(currentSettings);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
return {
|
|
392
|
+
dryRun: !install,
|
|
393
|
+
agentId: config.agentId,
|
|
394
|
+
hookifyRules: hookifyResults,
|
|
395
|
+
skills: skillsResults,
|
|
396
|
+
settingsJson: settingsResults,
|
|
397
|
+
...(install
|
|
398
|
+
? { message: 'Global setup complete' }
|
|
399
|
+
: { message: 'Dry run — pass install: true to apply' }),
|
|
400
|
+
};
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
// ─── setup_project ─────────────────────────────────────────────
|
|
404
|
+
{
|
|
405
|
+
name: 'admin_setup_project',
|
|
406
|
+
description: 'Project hook management — analyze, cleanup duplicates, or install agent hooks. Analysis mode by default.',
|
|
407
|
+
auth: 'write',
|
|
408
|
+
schema: z.object({
|
|
409
|
+
projectPath: z.string().describe('Project root path'),
|
|
410
|
+
cleanup: z
|
|
411
|
+
.boolean()
|
|
412
|
+
.optional()
|
|
413
|
+
.default(false)
|
|
414
|
+
.describe('Remove project hooks that already exist globally'),
|
|
415
|
+
install: z
|
|
416
|
+
.boolean()
|
|
417
|
+
.optional()
|
|
418
|
+
.default(false)
|
|
419
|
+
.describe('Install agent hooks to the project'),
|
|
420
|
+
}),
|
|
421
|
+
handler: async (params) => {
|
|
422
|
+
const projectPath = resolve(params.projectPath);
|
|
423
|
+
const cleanup = params.cleanup;
|
|
424
|
+
const install = params.install;
|
|
425
|
+
if (!existsSync(projectPath)) {
|
|
426
|
+
return { error: 'PROJECT_NOT_FOUND', path: projectPath };
|
|
427
|
+
}
|
|
428
|
+
const globalClaudeDir = join(homedir(), '.claude');
|
|
429
|
+
const projectClaudeDir = join(projectPath, '.claude');
|
|
430
|
+
// Discover existing hooks
|
|
431
|
+
const globalHookify = discoverHookifyFiles(globalClaudeDir);
|
|
432
|
+
const projectHookify = discoverHookifyFiles(projectClaudeDir);
|
|
433
|
+
const globalNames = new Set(globalHookify.map((h) => h.name));
|
|
434
|
+
// Find duplicates (project hooks that also exist globally)
|
|
435
|
+
const duplicates = projectHookify.filter((h) => globalNames.has(h.name));
|
|
436
|
+
// Analyze mode (default)
|
|
437
|
+
if (!cleanup && !install) {
|
|
438
|
+
return {
|
|
439
|
+
mode: 'analyze',
|
|
440
|
+
projectPath,
|
|
441
|
+
globalHooks: globalHookify.length,
|
|
442
|
+
projectHooks: projectHookify.length,
|
|
443
|
+
duplicates: duplicates.map((d) => d.name),
|
|
444
|
+
recommendations: duplicates.length > 0
|
|
445
|
+
? [`${duplicates.length} project hook(s) duplicate global hooks — consider cleanup`]
|
|
446
|
+
: ['No duplicates found — hooks are clean'],
|
|
447
|
+
};
|
|
448
|
+
}
|
|
449
|
+
// Cleanup mode — remove duplicates
|
|
450
|
+
if (cleanup) {
|
|
451
|
+
const removed = [];
|
|
452
|
+
for (const dup of duplicates) {
|
|
453
|
+
try {
|
|
454
|
+
unlinkSync(dup.path);
|
|
455
|
+
removed.push(dup.name);
|
|
456
|
+
}
|
|
457
|
+
catch {
|
|
458
|
+
// Skip failures silently
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
return {
|
|
462
|
+
mode: 'cleanup',
|
|
463
|
+
projectPath,
|
|
464
|
+
removed,
|
|
465
|
+
remaining: projectHookify.length - removed.length,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
// Install mode — copy agent hooks to project
|
|
469
|
+
if (install) {
|
|
470
|
+
const installed = [];
|
|
471
|
+
const skipped = [];
|
|
472
|
+
// Copy hookify rules (skip ones already installed globally)
|
|
473
|
+
const agentDataDir = config.dataDir;
|
|
474
|
+
if (agentDataDir) {
|
|
475
|
+
const sourceRules = discoverHookifyFiles(join(agentDataDir, '.claude'));
|
|
476
|
+
for (const rule of sourceRules) {
|
|
477
|
+
const targetPath = join(projectClaudeDir, rule.name);
|
|
478
|
+
if (globalNames.has(rule.name)) {
|
|
479
|
+
skipped.push(`${rule.name} (exists globally)`);
|
|
480
|
+
}
|
|
481
|
+
else if (existsSync(targetPath)) {
|
|
482
|
+
skipped.push(`${rule.name} (exists in project)`);
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
try {
|
|
486
|
+
mkdirSync(projectClaudeDir, { recursive: true });
|
|
487
|
+
copyFileSync(rule.path, targetPath);
|
|
488
|
+
installed.push(rule.name);
|
|
489
|
+
}
|
|
490
|
+
catch {
|
|
491
|
+
// Skip failures
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
return {
|
|
497
|
+
mode: 'install',
|
|
498
|
+
projectPath,
|
|
499
|
+
installed,
|
|
500
|
+
skipped,
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
return { error: 'INVALID_MODE' };
|
|
504
|
+
},
|
|
505
|
+
},
|
|
506
|
+
// ─── check_persistence ─────────────────────────────────────────
|
|
507
|
+
{
|
|
508
|
+
name: 'admin_check_persistence',
|
|
509
|
+
description: 'Check agent persistence status — storage directory, plan/task/check files, and active plan lifecycle states.',
|
|
510
|
+
auth: 'read',
|
|
511
|
+
handler: async () => {
|
|
512
|
+
const { agentId, plansPath, vaultPath } = config;
|
|
513
|
+
const storageDir = join(homedir(), `.${agentId}`);
|
|
514
|
+
const storageDirExists = existsSync(storageDir);
|
|
515
|
+
// Check plan storage
|
|
516
|
+
const plansFile = plansPath ?? join(storageDir, 'plans.json');
|
|
517
|
+
const plansInfo = getFileInfo(plansFile);
|
|
518
|
+
// Check vault
|
|
519
|
+
const vaultFile = vaultPath ?? join(storageDir, 'vault.db');
|
|
520
|
+
const vaultExists = existsSync(vaultFile);
|
|
521
|
+
let vaultSize = 0;
|
|
522
|
+
if (vaultExists) {
|
|
523
|
+
try {
|
|
524
|
+
vaultSize = statSync(vaultFile).size;
|
|
525
|
+
}
|
|
526
|
+
catch {
|
|
527
|
+
// Ignore
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
// Determine status
|
|
531
|
+
let status;
|
|
532
|
+
if (vaultExists && plansInfo.exists) {
|
|
533
|
+
status = 'PERSISTENCE_ACTIVE';
|
|
534
|
+
}
|
|
535
|
+
else if (storageDirExists) {
|
|
536
|
+
status = 'PERSISTENCE_CONFIGURED_BUT_INCOMPLETE';
|
|
537
|
+
}
|
|
538
|
+
else {
|
|
539
|
+
status = 'NO_STORAGE_DIRECTORY';
|
|
540
|
+
}
|
|
541
|
+
// Check for active plans
|
|
542
|
+
const activePlans = [];
|
|
543
|
+
if (plansInfo.exists) {
|
|
544
|
+
try {
|
|
545
|
+
const plansData = JSON.parse(readFileSync(plansFile, 'utf-8'));
|
|
546
|
+
const items = plansData.items ?? plansData;
|
|
547
|
+
if (typeof items === 'object' && items !== null) {
|
|
548
|
+
for (const [id, plan] of Object.entries(items)) {
|
|
549
|
+
const p = plan;
|
|
550
|
+
const lifecycle = (p.lifecycleStatus ?? p.status);
|
|
551
|
+
if (lifecycle === 'executing' || lifecycle === 'reconciling') {
|
|
552
|
+
activePlans.push({ id, status: lifecycle });
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
catch {
|
|
558
|
+
// Parse error — not critical
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
const recommendation = activePlans.length > 0
|
|
562
|
+
? `${activePlans.length} plan(s) need attention — call plan_reconcile or plan_complete_lifecycle`
|
|
563
|
+
: status === 'PERSISTENCE_ACTIVE'
|
|
564
|
+
? 'All good — persistence is active and no orphaned plans'
|
|
565
|
+
: status === 'NO_STORAGE_DIRECTORY'
|
|
566
|
+
? `Storage directory not found at ${storageDir} — it will be created on first use`
|
|
567
|
+
: 'Storage directory exists but some files are missing — they will be created on first use';
|
|
568
|
+
return {
|
|
569
|
+
agentId,
|
|
570
|
+
storageDirectory: { path: storageDir, exists: storageDirExists },
|
|
571
|
+
files: {
|
|
572
|
+
plans: { path: plansFile, ...plansInfo },
|
|
573
|
+
vault: { path: vaultFile, exists: vaultExists, sizeBytes: vaultSize },
|
|
574
|
+
},
|
|
575
|
+
status,
|
|
576
|
+
activePlans,
|
|
577
|
+
recommendation,
|
|
578
|
+
};
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
];
|
|
582
|
+
}
|
|
583
|
+
//# sourceMappingURL=admin-setup-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-setup-ops.js","sourceRoot":"","sources":["../../src/runtime/admin-setup-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,yEAAyE;AAEzE,6DAA6D;AAC7D,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAC/F,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yCAAyC;AACzC,SAAS,gBAAgB;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,SAAS,iBAAiB,CAAC,QAAiC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,+CAA+C;AAC/C,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;YACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM;YACnC,CAAC,CAAC,OAAO,CAAC,QAAQ;gBAChB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBACzB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;oBACtB,CAAC,CAAC,OAAO,CAAC,MAAM;oBAChB,CAAC,CAAC,CAAC,CAAC;QACV,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,4DAA4D;AAC5D,SAAS,cAAc,CAAC,UAAoB;IAC1C,MAAM,MAAM,GAAgD,EAAE,CAAC;IAE/D,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACpD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAgBD,mDAAmD;AACnD,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,MAAM,GAAG,QAAQ,OAAO,KAAK,OAAO,GAAG,CAAC;IAE9C,OAAO;QACL,YAAY,EAAE;YACZ;gBACE,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,QAAQ,MAAM,iGAAiG;wBACvH,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV;gBACE,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,QAAQ,MAAM,oGAAoG;wBAC1H,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;SACF;QACD,IAAI,EAAE;YACJ;gBACE,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,QAAQ,MAAM,4FAA4F,MAAM,6DAA6D;wBACrL,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,SAAS,gBAAgB,CAAC,KAAwB,EAAE,OAAe;IACjE,MAAM,MAAM,GAAG,QAAQ,OAAO,KAAK,OAAO,GAAG,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAC5F,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,SAAS,kBAAkB,CACzB,YAAiD,EACjD,OAAe;IAOf,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IACnC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QAED,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAEjF,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,mDAAmD;YACnD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,yEAAyE;AAEzE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAqB;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAE3B,OAAO;QACL,kEAAkE;QAClE;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EACT,oHAAoH;YACtH,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;gBAChF,kBAAkB,EAAE,CAAC;qBAClB,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,IAAI,CAAC;qBACb,QAAQ,CAAC,8CAA8C,CAAC;gBAC3D,eAAe,EAAE,CAAC;qBACf,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,+BAA+B,CAAC;gBAC5C,QAAQ,EAAE,CAAC;qBACR,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;qBACrC,QAAQ,EAAE;qBACV,OAAO,CAAC,aAAa,CAAC;qBACtB,QAAQ,CAAC,gDAAgD,CAAC;gBAC7D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;gBACzF,MAAM,EAAE,CAAC;qBACN,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,oDAAoD,CAAC;aAClE,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAqB,CAAC,CAAC;gBAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAA6B,CAAC;gBAChE,MAAM,eAAe,GAAG,MAAM,CAAC,eAA0B,CAAC;gBAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAA2C,CAAC;gBACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAiB,CAAC;gBACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAiB,CAAC;gBAE1C,wBAAwB;gBACxB,MAAM,UAAU,GAAG,QAAQ;oBACzB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC;oBACzC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;gBAElC,IAAI,CAAC,UAAU,IAAI,CAAC,eAAe,EAAE,CAAC;oBACpC,OAAO;wBACL,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,qBAAqB;wBAC5B,aAAa,EAAE;4BACb,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;4BAC9B,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC;yBAC1C;wBACD,IAAI,EAAE,yCAAyC;qBAChD,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC9D,MAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAEpF,8EAA8E;gBAC9E,IAAI,sBAAsB,GAAG,eAAe,CAAC;gBAC7C,IAAI,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;oBACvE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC3B,MAAM,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAC7D,sBAAsB,GAAG,sBAAsB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAE/E,4BAA4B;gBAC5B,IAAI,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBACxD,2BAA2B;oBAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBACxE,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;oBAEvE,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;oBAC/E,CAAC;oBAED,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxE,CAAC;gBAED,gBAAgB;gBAChB,IAAI,MAAc,CAAC;gBACnB,IAAI,sBAAsB,EAAE,CAAC;oBAC3B,MAAM,GAAG,gBAAgB,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,6BAA6B;oBAC7B,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;oBAC9D,MAAM,GAAG,KAAK,WAAW,OAAO,gBAAgB,IAAI,CAAC;gBACvD,CAAC;gBAED,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC/E,CAAC;gBAED,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClD,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAChC,OAAO;oBACL,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;oBAChD,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;YACJ,CAAC;SACF;QAED,kEAAkE;QAClE;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EACT,wJAAwJ;YAC1J,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;gBAC/E,SAAS,EAAE,CAAC;qBACT,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,2DAA2D,CAAC;gBACxE,gBAAgB,EAAE,CAAC;qBAChB,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,4CAA4C,CAAC;gBACzD,UAAU,EAAE,CAAC;qBACV,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,4CAA4C,CAAC;aAC1D,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkB,CAAC;gBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAoB,CAAC;gBAC9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAA2B,CAAC;gBAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,UAAqB,CAAC;gBAEhD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;gBAEtD,4BAA4B;gBAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;gBACpC,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9E,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE5E,4BAA4B;gBAC5B,MAAM,cAAc,GAAG;oBACrB,SAAS,EAAE,EAAc;oBACzB,OAAO,EAAE,EAAc;oBACvB,MAAM,EAAE,EAAc;iBACvB,CAAC;gBACF,IAAI,CAAC,gBAAgB,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;wBAC1C,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;wBAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACzB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;4BACpD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gCAC3B,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BACzC,CAAC;iCAAM,IAAI,OAAO,EAAE,CAAC;gCACnB,IAAI,CAAC;oCACH,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oCAChD,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oCACpC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC3C,CAAC;gCAAC,MAAM,CAAC;oCACP,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCACxC,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;4BAC5D,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,qBAAqB;gBACrB,MAAM,aAAa,GAAG;oBACpB,SAAS,EAAE,EAAc;oBACzB,OAAO,EAAE,EAAc;oBACvB,MAAM,EAAE,EAAc;iBACvB,CAAC;gBACF,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACpC,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;oBAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;wBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;wBACzD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;4BAC3B,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBACzC,CAAC;6BAAM,IAAI,OAAO,EAAE,CAAC;4BACnB,IAAI,CAAC;gCACH,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gCAC5C,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gCAC3C,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC3C,CAAC;4BAAC,MAAM,CAAC;gCACP,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BACxC,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;wBAC5D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,mCAAmC;gBACnC,MAAM,eAAe,GAAG;oBACtB,SAAS,EAAE,EAAc;oBACzB,OAAO,EAAE,EAAc;oBACvB,OAAO,EAAE,EAAc;iBACxB,CAAC;gBACF,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;oBAC3C,MAAM,YAAY,GAAG,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAwC,CAAC;oBAC1F,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEhE,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;oBAC7C,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBACzC,eAAe,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAEzC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC1E,eAAe,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBACrC,iBAAiB,CAAC,eAAe,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,MAAM,EAAE,CAAC,OAAO;oBAChB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,cAAc;oBAC5B,MAAM,EAAE,aAAa;oBACrB,YAAY,EAAE,eAAe;oBAC7B,GAAG,CAAC,OAAO;wBACT,CAAC,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE;wBACtC,CAAC,CAAC,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;iBAC1D,CAAC;YACJ,CAAC;SACF;QAED,kEAAkE;QAClE;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EACT,0GAA0G;YAC5G,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACrD,OAAO,EAAE,CAAC;qBACP,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,kDAAkD,CAAC;gBAC/D,OAAO,EAAE,CAAC;qBACP,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,OAAO,CAAC,KAAK,CAAC;qBACd,QAAQ,CAAC,oCAAoC,CAAC;aAClD,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBACxB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAqB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkB,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAkB,CAAC;gBAE1C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7B,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;gBAC3D,CAAC;gBAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBAEtD,0BAA0B;gBAC1B,MAAM,aAAa,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBAC5D,MAAM,cAAc,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;gBAC9D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAE9D,2DAA2D;gBAC3D,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEzE,yBAAyB;gBACzB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW;wBACX,WAAW,EAAE,aAAa,CAAC,MAAM;wBACjC,YAAY,EAAE,cAAc,CAAC,MAAM;wBACnC,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;wBACzC,eAAe,EACb,UAAU,CAAC,MAAM,GAAG,CAAC;4BACnB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,4DAA4D,CAAC;4BACpF,CAAC,CAAC,CAAC,uCAAuC,CAAC;qBAChD,CAAC;gBACJ,CAAC;gBAED,mCAAmC;gBACnC,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,OAAO,GAAa,EAAE,CAAC;oBAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BACH,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BACrB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC;wBAAC,MAAM,CAAC;4BACP,yBAAyB;wBAC3B,CAAC;oBACH,CAAC;oBACD,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW;wBACX,OAAO;wBACP,SAAS,EAAE,cAAc,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;qBAClD,CAAC;gBACJ,CAAC;gBAED,6CAA6C;gBAC7C,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,SAAS,GAAa,EAAE,CAAC;oBAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;oBAE7B,4DAA4D;oBAC5D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;oBACpC,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;wBACxE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;4BAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;4BACrD,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,oBAAoB,CAAC,CAAC;4BACjD,CAAC;iCAAM,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gCAClC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,sBAAsB,CAAC,CAAC;4BACnD,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC;oCACH,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oCACjD,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;oCACpC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gCAC5B,CAAC;gCAAC,MAAM,CAAC;oCACP,gBAAgB;gCAClB,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,OAAO;wBACL,IAAI,EAAE,SAAS;wBACf,WAAW;wBACX,SAAS;wBACT,OAAO;qBACR,CAAC;gBACJ,CAAC;gBAED,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;YACnC,CAAC;SACF;QAED,kEAAkE;QAClE;YACE,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EACT,8GAA8G;YAChH,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;gBAClD,MAAM,gBAAgB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;gBAEhD,qBAAqB;gBACrB,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;gBAEzC,cAAc;gBACd,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC5D,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;oBACvC,CAAC;oBAAC,MAAM,CAAC;wBACP,SAAS;oBACX,CAAC;gBACH,CAAC;gBAED,mBAAmB;gBACnB,IAAI,MAAc,CAAC;gBACnB,IAAI,WAAW,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,GAAG,oBAAoB,CAAC;gBAChC,CAAC;qBAAM,IAAI,gBAAgB,EAAE,CAAC;oBAC5B,MAAM,GAAG,uCAAuC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,sBAAsB,CAAC;gBAClC,CAAC;gBAED,yBAAyB;gBACzB,MAAM,WAAW,GAA0C,EAAE,CAAC;gBAC9D,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;wBAC/D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC;wBAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;4BAChD,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gCAC/C,MAAM,CAAC,GAAG,IAA+B,CAAC;gCAC1C,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,CAAuB,CAAC;gCACxE,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;oCAC7D,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gCAC9C,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,6BAA6B;oBAC/B,CAAC;gBACH,CAAC;gBAED,MAAM,cAAc,GAClB,WAAW,CAAC,MAAM,GAAG,CAAC;oBACpB,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,0EAA0E;oBACjG,CAAC,CAAC,MAAM,KAAK,oBAAoB;wBAC/B,CAAC,CAAC,wDAAwD;wBAC1D,CAAC,CAAC,MAAM,KAAK,sBAAsB;4BACjC,CAAC,CAAC,kCAAkC,UAAU,oCAAoC;4BAClF,CAAC,CAAC,yFAAyF,CAAC;gBAEpG,OAAO;oBACL,OAAO;oBACP,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE;oBAChE,KAAK,EAAE;wBACL,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;wBACxC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE;qBACtE;oBACD,MAAM;oBACN,WAAW;oBACX,cAAc;iBACf,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain operations — 5 ops for composable multi-step workflows.
|
|
3
|
+
*
|
|
4
|
+
* Ops: chain_execute, chain_status, chain_resume, chain_list, chain_step_approve
|
|
5
|
+
*/
|
|
6
|
+
import type { OpDefinition } from '../facades/types.js';
|
|
7
|
+
import type { AgentRuntime } from './types.js';
|
|
8
|
+
export declare function createChainOps(runtime: AgentRuntime): OpDefinition[];
|
|
9
|
+
//# sourceMappingURL=chain-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/chain-ops.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA6GpE"}
|