@autonav/core 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/cli/autonav.d.ts +1 -0
  2. package/dist/cli/autonav.d.ts.map +1 -1
  3. package/dist/cli/autonav.js +7 -0
  4. package/dist/cli/autonav.js.map +1 -1
  5. package/dist/cli/nav-memento.d.ts +20 -0
  6. package/dist/cli/nav-memento.d.ts.map +1 -0
  7. package/dist/cli/nav-memento.js +179 -0
  8. package/dist/cli/nav-memento.js.map +1 -0
  9. package/dist/memento/git-operations.d.ts +95 -0
  10. package/dist/memento/git-operations.d.ts.map +1 -0
  11. package/dist/memento/git-operations.js +256 -0
  12. package/dist/memento/git-operations.js.map +1 -0
  13. package/dist/memento/index.d.ts +31 -0
  14. package/dist/memento/index.d.ts.map +1 -0
  15. package/dist/memento/index.js +38 -0
  16. package/dist/memento/index.js.map +1 -0
  17. package/dist/memento/loop.d.ts +33 -0
  18. package/dist/memento/loop.d.ts.map +1 -0
  19. package/dist/memento/loop.js +535 -0
  20. package/dist/memento/loop.js.map +1 -0
  21. package/dist/memento/matrix-animation.d.ts +77 -0
  22. package/dist/memento/matrix-animation.d.ts.map +1 -0
  23. package/dist/memento/matrix-animation.js +228 -0
  24. package/dist/memento/matrix-animation.js.map +1 -0
  25. package/dist/memento/nav-protocol.d.ts +30 -0
  26. package/dist/memento/nav-protocol.d.ts.map +1 -0
  27. package/dist/memento/nav-protocol.js +79 -0
  28. package/dist/memento/nav-protocol.js.map +1 -0
  29. package/dist/memento/prompts.d.ts +44 -0
  30. package/dist/memento/prompts.d.ts.map +1 -0
  31. package/dist/memento/prompts.js +168 -0
  32. package/dist/memento/prompts.js.map +1 -0
  33. package/dist/memento/state.d.ts +56 -0
  34. package/dist/memento/state.d.ts.map +1 -0
  35. package/dist/memento/state.js +156 -0
  36. package/dist/memento/state.js.map +1 -0
  37. package/dist/memento/types.d.ts +123 -0
  38. package/dist/memento/types.d.ts.map +1 -0
  39. package/dist/memento/types.js +30 -0
  40. package/dist/memento/types.js.map +1 -0
  41. package/dist/memento/worker-agent.d.ts +30 -0
  42. package/dist/memento/worker-agent.d.ts.map +1 -0
  43. package/dist/memento/worker-agent.js +109 -0
  44. package/dist/memento/worker-agent.js.map +1 -0
  45. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts +18 -0
  46. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts.map +1 -0
  47. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js +207 -0
  48. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js.map +1 -0
  49. package/package.json +1 -1
  50. package/dist/skill-generator/index.d.ts +0 -142
  51. package/dist/skill-generator/index.d.ts.map +0 -1
  52. package/dist/skill-generator/index.js +0 -510
  53. package/dist/skill-generator/index.js.map +0 -1
  54. package/dist/templates/.gitignore.template +0 -26
  55. package/dist/templates/CLAUDE-pack.md.template +0 -114
  56. package/dist/templates/CLAUDE.md.template +0 -153
  57. package/dist/templates/README.md.template +0 -174
  58. package/dist/templates/config-pack.json.template +0 -16
  59. package/dist/templates/config.json.template +0 -11
  60. package/dist/templates/index.d.ts +0 -22
  61. package/dist/templates/index.d.ts.map +0 -1
  62. package/dist/templates/index.js +0 -32
  63. package/dist/templates/index.js.map +0 -1
  64. package/dist/templates/plugins.json.template +0 -33
  65. package/dist/templates/system-configuration.md.template +0 -70
@@ -1,510 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import os from "node:os";
4
- /**
5
- * Get the global skills directory path (~/.claude/skills/)
6
- */
7
- export function getGlobalSkillsDir() {
8
- return path.join(os.homedir(), ".claude", "skills");
9
- }
10
- /**
11
- * Get the local skills directory path for a navigator (.autonav/skills/)
12
- */
13
- export function getLocalSkillsDir(navigatorPath) {
14
- return path.join(navigatorPath, ".autonav", "skills");
15
- }
16
- /**
17
- * Get the full path to a local skill directory
18
- */
19
- export function getLocalSkillPath(navigatorPath, skillName) {
20
- return path.join(getLocalSkillsDir(navigatorPath), skillName);
21
- }
22
- /**
23
- * Check if a skill already exists globally
24
- */
25
- export function skillExists(skillName) {
26
- const skillDir = path.join(getGlobalSkillsDir(), skillName);
27
- return fs.existsSync(skillDir);
28
- }
29
- /**
30
- * Check if a skill exists locally in a navigator
31
- */
32
- export function localSkillExists(navigatorPath, skillName) {
33
- const skillDir = getLocalSkillPath(navigatorPath, skillName);
34
- return fs.existsSync(skillDir);
35
- }
36
- /**
37
- * Check if a global skill is a symlink
38
- */
39
- export function isSkillSymlink(skillName) {
40
- const skillDir = path.join(getGlobalSkillsDir(), skillName);
41
- try {
42
- const stats = fs.lstatSync(skillDir);
43
- return stats.isSymbolicLink();
44
- }
45
- catch {
46
- return false;
47
- }
48
- }
49
- /**
50
- * Get the target of a global skill symlink
51
- */
52
- export function getSkillSymlinkTarget(skillName) {
53
- const skillDir = path.join(getGlobalSkillsDir(), skillName);
54
- try {
55
- if (!isSkillSymlink(skillName)) {
56
- return null;
57
- }
58
- return fs.readlinkSync(skillDir);
59
- }
60
- catch {
61
- return null;
62
- }
63
- }
64
- /**
65
- * Generate the skill name from navigator name
66
- */
67
- export function getSkillName(navigatorName) {
68
- // Convert to lowercase, replace spaces/underscores with hyphens
69
- const normalized = navigatorName.toLowerCase().replace(/[_\s]+/g, "-");
70
- return `ask-${normalized}`;
71
- }
72
- /**
73
- * Generate the update skill name from navigator name
74
- */
75
- export function getUpdateSkillName(navigatorName) {
76
- // Convert to lowercase, replace spaces/underscores with hyphens
77
- const normalized = navigatorName.toLowerCase().replace(/[_\s]+/g, "-");
78
- return `update-${normalized}`;
79
- }
80
- /**
81
- * Generate the SKILL.md content for a navigator
82
- */
83
- export function generateSkillContent(config) {
84
- const skillName = getSkillName(config.navigatorName);
85
- const navPath = config.navigatorPath;
86
- return `---
87
- name: ${skillName}
88
- description: Query ${config.navigatorName} navigator about ${config.description}. Use when user asks to "ask ${config.navigatorName}" or needs information from this knowledge base.
89
- ---
90
-
91
- # Ask ${config.navigatorName}
92
-
93
- Query the **${config.navigatorName}** navigator for information.
94
-
95
- **Navigator Location**: \`${navPath}\`
96
-
97
- ${config.description}
98
-
99
- ${config.scope ? `**Scope**: ${config.scope}\n` : ""}
100
- ${config.audience ? `**Audience**: ${config.audience}\n` : ""}
101
-
102
- ## Identity Protocol
103
-
104
- When querying this navigator, Claude Code should explicitly identify itself as the requester. This enables bidirectional identity affirmation and helps the navigator maintain context awareness.
105
-
106
- **Example**:
107
- \`\`\`bash
108
- autonav query "${navPath}" "Claude Code here, asking: How do I deploy?"
109
- \`\`\`
110
-
111
- ## How to Use
112
-
113
- Simply use \`autonav query\` to ask questions:
114
-
115
- \`\`\`bash
116
- autonav query "${navPath}" "your question here"
117
- \`\`\`
118
-
119
- The navigator will provide grounded answers with sources from its knowledge base.
120
-
121
- ## What This Navigator Knows
122
-
123
- This navigator specializes in ${config.scope || 'its configured domain'} and follows strict grounding rules:
124
- - Always cites sources from the knowledge base
125
- - Never invents information
126
- - Acknowledges uncertainty with confidence scores
127
- - Only references files that actually exist
128
- `;
129
- }
130
- /**
131
- * Generate the update skill content for a navigator (with write permissions)
132
- */
133
- export function generateUpdateSkillContent(config) {
134
- const skillName = getUpdateSkillName(config.navigatorName);
135
- const navPath = config.navigatorPath;
136
- return `---
137
- name: ${skillName}
138
- description: Update ${config.navigatorName} navigator's documentation and knowledge base. Use when reporting implementation progress, documenting issues, or updating knowledge about ${config.description}.
139
- ---
140
-
141
- # Update ${config.navigatorName}
142
-
143
- Update the **${config.navigatorName}** navigator's documentation and knowledge base.
144
-
145
- **Navigator Location**: \`${navPath}\`
146
-
147
- ${config.description}
148
-
149
- ${config.scope ? `**Scope**: ${config.scope}\n` : ""}
150
- ${config.audience ? `**Audience**: ${config.audience}\n` : ""}
151
-
152
- ## When to Use
153
-
154
- Use this skill to:
155
- - Report implementation progress or issues
156
- - Update documentation after making changes
157
- - Add new knowledge or learnings
158
- - Document troubleshooting steps
159
- - Create status reports or logs
160
-
161
- ## How to Use
162
-
163
- Simply use \`autonav update\` to send an update message:
164
-
165
- \`\`\`bash
166
- autonav update "${navPath}" "your update message"
167
- \`\`\`
168
-
169
- **Example updates:**
170
-
171
- Report progress:
172
- \`\`\`bash
173
- autonav update "${navPath}" "I completed feature X. Please document this in the knowledge base."
174
- \`\`\`
175
-
176
- Log an issue:
177
- \`\`\`bash
178
- autonav update "${navPath}" "Encountered error Y during deployment. Add this to troubleshooting docs."
179
- \`\`\`
180
-
181
- ## Important
182
-
183
- - This command grants **write permissions** to the navigator
184
- - Changes are made directly to files in the knowledge base
185
- - Always review edits before committing to version control
186
- `;
187
- }
188
- /**
189
- * Create a global skill for a navigator
190
- *
191
- * @param config - Skill configuration
192
- * @param options - Options for skill creation
193
- * @returns Path to the created skill directory, or null if skipped
194
- */
195
- export async function createNavigatorSkill(config, options = {}) {
196
- const askSkillName = getSkillName(config.navigatorName);
197
- const updateSkillName = getUpdateSkillName(config.navigatorName);
198
- const skillsDir = getGlobalSkillsDir();
199
- const askSkillDir = path.join(skillsDir, askSkillName);
200
- const updateSkillDir = path.join(skillsDir, updateSkillName);
201
- // Ensure skills directory exists
202
- fs.mkdirSync(skillsDir, { recursive: true });
203
- // Create "ask" skill
204
- if (skillExists(askSkillName) && !options.force) {
205
- if (!options.quiet) {
206
- console.log(`⏭️ Skill "${askSkillName}" already exists (use --force to overwrite)`);
207
- }
208
- }
209
- else {
210
- fs.mkdirSync(askSkillDir, { recursive: true });
211
- const askSkillContent = generateSkillContent(config);
212
- fs.writeFileSync(path.join(askSkillDir, "SKILL.md"), askSkillContent);
213
- if (!options.quiet) {
214
- console.log(`✓ Created global skill: ${askSkillName}`);
215
- }
216
- }
217
- // Create "update" skill
218
- if (skillExists(updateSkillName) && !options.force) {
219
- if (!options.quiet) {
220
- console.log(`⏭️ Skill "${updateSkillName}" already exists (use --force to overwrite)`);
221
- }
222
- }
223
- else {
224
- fs.mkdirSync(updateSkillDir, { recursive: true });
225
- const updateSkillContent = generateUpdateSkillContent(config);
226
- fs.writeFileSync(path.join(updateSkillDir, "SKILL.md"), updateSkillContent);
227
- if (!options.quiet) {
228
- console.log(`✓ Created global skill: ${updateSkillName}`);
229
- }
230
- }
231
- return askSkillDir;
232
- }
233
- /**
234
- * Remove a navigator skill (both ask and update skills, global only)
235
- */
236
- export function removeNavigatorSkill(navigatorName, options = {}) {
237
- const askSkillName = getSkillName(navigatorName);
238
- const updateSkillName = getUpdateSkillName(navigatorName);
239
- const skillsDir = getGlobalSkillsDir();
240
- const askSkillDir = path.join(skillsDir, askSkillName);
241
- const updateSkillDir = path.join(skillsDir, updateSkillName);
242
- let removedAny = false;
243
- // Remove ask skill
244
- if (fs.existsSync(askSkillDir)) {
245
- fs.rmSync(askSkillDir, { recursive: true, force: true });
246
- if (!options.quiet) {
247
- console.log(`Removed skill: ${askSkillName}`);
248
- }
249
- removedAny = true;
250
- }
251
- // Remove update skill
252
- if (fs.existsSync(updateSkillDir)) {
253
- fs.rmSync(updateSkillDir, { recursive: true, force: true });
254
- if (!options.quiet) {
255
- console.log(`Removed skill: ${updateSkillName}`);
256
- }
257
- removedAny = true;
258
- }
259
- if (!removedAny && !options.quiet) {
260
- console.log(`No skills found for navigator "${navigatorName}"`);
261
- }
262
- return removedAny;
263
- }
264
- /**
265
- * Create both ask and update skills locally in the navigator's .autonav/skills/ directory
266
- */
267
- export async function createLocalSkill(navigatorPath, config, options = {}) {
268
- const askSkillName = getSkillName(config.navigatorName);
269
- const updateSkillName = getUpdateSkillName(config.navigatorName);
270
- const localSkillsDir = getLocalSkillsDir(navigatorPath);
271
- const askSkillDir = path.join(localSkillsDir, askSkillName);
272
- const updateSkillDir = path.join(localSkillsDir, updateSkillName);
273
- // Ensure local skills directory exists
274
- fs.mkdirSync(localSkillsDir, { recursive: true });
275
- let askSkillPath = null;
276
- let updateSkillPath = null;
277
- // Create "ask" skill
278
- if (localSkillExists(navigatorPath, askSkillName) && !options.force) {
279
- if (!options.quiet) {
280
- console.log(`⏭️ Skill "${askSkillName}" already exists locally (use --force to overwrite)`);
281
- }
282
- }
283
- else {
284
- fs.mkdirSync(askSkillDir, { recursive: true });
285
- const askSkillContent = generateSkillContent(config);
286
- fs.writeFileSync(path.join(askSkillDir, "SKILL.md"), askSkillContent);
287
- if (!options.quiet) {
288
- console.log(`✓ Created local skill: ${askSkillName}`);
289
- }
290
- askSkillPath = askSkillDir;
291
- }
292
- // Create "update" skill
293
- if (localSkillExists(navigatorPath, updateSkillName) && !options.force) {
294
- if (!options.quiet) {
295
- console.log(`⏭️ Skill "${updateSkillName}" already exists locally (use --force to overwrite)`);
296
- }
297
- }
298
- else {
299
- fs.mkdirSync(updateSkillDir, { recursive: true });
300
- const updateSkillContent = generateUpdateSkillContent(config);
301
- fs.writeFileSync(path.join(updateSkillDir, "SKILL.md"), updateSkillContent);
302
- if (!options.quiet) {
303
- console.log(`✓ Created local skill: ${updateSkillName}`);
304
- }
305
- updateSkillPath = updateSkillDir;
306
- }
307
- // If both skills were skipped, return paths to existing skills
308
- if (!askSkillPath && localSkillExists(navigatorPath, askSkillName)) {
309
- askSkillPath = askSkillDir;
310
- }
311
- if (!updateSkillPath && localSkillExists(navigatorPath, updateSkillName)) {
312
- updateSkillPath = updateSkillDir;
313
- }
314
- return { askSkillPath, updateSkillPath };
315
- }
316
- /**
317
- * Create a symlink from global skills directory to local skill
318
- *
319
- * @returns SymlinkResult with status and details
320
- */
321
- export function symlinkSkillToGlobal(localSkillPath, skillName, options = {}) {
322
- const globalSkillsDir = getGlobalSkillsDir();
323
- const globalSkillDir = path.join(globalSkillsDir, skillName);
324
- // Ensure global skills directory exists
325
- fs.mkdirSync(globalSkillsDir, { recursive: true });
326
- // Check if global skill already exists
327
- if (fs.existsSync(globalSkillDir)) {
328
- // Check if it's already a symlink to the correct location
329
- if (isSkillSymlink(skillName)) {
330
- const target = getSkillSymlinkTarget(skillName);
331
- const resolvedLocal = path.resolve(localSkillPath);
332
- const resolvedTarget = target ? path.resolve(path.dirname(globalSkillDir), target) : null;
333
- if (resolvedTarget === resolvedLocal) {
334
- if (!options.quiet) {
335
- console.log(`Skill "${skillName}" already linked`);
336
- }
337
- return {
338
- success: true,
339
- action: "already_linked",
340
- message: `Skill "${skillName}" already symlinked correctly`,
341
- skillName,
342
- localPath: localSkillPath,
343
- globalPath: globalSkillDir,
344
- };
345
- }
346
- // Symlink exists but points elsewhere
347
- if (!options.force) {
348
- if (!options.quiet) {
349
- console.log(`Conflict: "${skillName}" symlinked to different location: ${target}`);
350
- }
351
- return {
352
- success: false,
353
- action: "conflict",
354
- message: `Global skill "${skillName}" already symlinked to different location`,
355
- skillName,
356
- localPath: localSkillPath,
357
- globalPath: globalSkillDir,
358
- conflictTarget: target ?? undefined,
359
- };
360
- }
361
- // Force: remove existing symlink
362
- fs.unlinkSync(globalSkillDir);
363
- }
364
- else {
365
- // Regular directory exists (not a symlink)
366
- if (!options.force) {
367
- if (!options.quiet) {
368
- console.log(`Conflict: "${skillName}" exists as regular directory (not symlink)`);
369
- }
370
- return {
371
- success: false,
372
- action: "conflict",
373
- message: `Global skill "${skillName}" exists as regular directory, not symlink`,
374
- skillName,
375
- localPath: localSkillPath,
376
- globalPath: globalSkillDir,
377
- };
378
- }
379
- // Force: remove existing directory
380
- fs.rmSync(globalSkillDir, { recursive: true, force: true });
381
- }
382
- }
383
- // Create symlink
384
- try {
385
- fs.symlinkSync(localSkillPath, globalSkillDir, "dir");
386
- if (!options.quiet) {
387
- console.log(`Symlinked skill: ${skillName}`);
388
- }
389
- return {
390
- success: true,
391
- action: "created",
392
- message: `Created symlink for "${skillName}"`,
393
- skillName,
394
- localPath: localSkillPath,
395
- globalPath: globalSkillDir,
396
- };
397
- }
398
- catch (error) {
399
- const errorMsg = error instanceof Error ? error.message : String(error);
400
- if (!options.quiet) {
401
- console.error(`Failed to create symlink for "${skillName}": ${errorMsg}`);
402
- }
403
- return {
404
- success: false,
405
- action: "error",
406
- message: `Failed to create symlink: ${errorMsg}`,
407
- skillName,
408
- localPath: localSkillPath,
409
- globalPath: globalSkillDir,
410
- };
411
- }
412
- }
413
- /**
414
- * Remove the global symlink for a skill (preserves local skill)
415
- */
416
- export function removeSkillSymlink(skillName, options = {}) {
417
- const globalSkillDir = path.join(getGlobalSkillsDir(), skillName);
418
- if (!fs.existsSync(globalSkillDir)) {
419
- if (!options.quiet) {
420
- console.log(`No global skill "${skillName}" found`);
421
- }
422
- return {
423
- success: true,
424
- wasSymlink: false,
425
- message: `No global skill "${skillName}" found`,
426
- };
427
- }
428
- if (!isSkillSymlink(skillName)) {
429
- if (!options.quiet) {
430
- console.log(`Warning: "${skillName}" is not a symlink, skipping removal`);
431
- }
432
- return {
433
- success: false,
434
- wasSymlink: false,
435
- message: `"${skillName}" is a regular directory, not a symlink. Manual removal required.`,
436
- };
437
- }
438
- try {
439
- fs.unlinkSync(globalSkillDir);
440
- if (!options.quiet) {
441
- console.log(`Removed symlink: ${skillName}`);
442
- }
443
- return {
444
- success: true,
445
- wasSymlink: true,
446
- message: `Removed symlink for "${skillName}"`,
447
- };
448
- }
449
- catch (error) {
450
- const errorMsg = error instanceof Error ? error.message : String(error);
451
- if (!options.quiet) {
452
- console.error(`Failed to remove symlink for "${skillName}": ${errorMsg}`);
453
- }
454
- return {
455
- success: false,
456
- wasSymlink: true,
457
- message: `Failed to remove symlink: ${errorMsg}`,
458
- };
459
- }
460
- }
461
- /**
462
- * Create both skills locally AND symlink them globally (recommended for new navigators)
463
- *
464
- * This is the preferred method for creating skills as it:
465
- * 1. Stores both ask and update skills in the navigator's .autonav/skills/ (version-controlled)
466
- * 2. Symlinks both to ~/.claude/skills/ for global discovery
467
- */
468
- export async function createAndSymlinkSkill(navigatorPath, config, options = {}) {
469
- // Create both local skills
470
- const { askSkillPath, updateSkillPath } = await createLocalSkill(navigatorPath, config, options);
471
- // If both skills were not created (and don't exist), return early
472
- if (!askSkillPath && !updateSkillPath) {
473
- return {
474
- askSkillPath: null,
475
- updateSkillPath: null,
476
- askSymlinkResult: null,
477
- updateSymlinkResult: null,
478
- };
479
- }
480
- // Symlink ask skill to global
481
- const askSkillName = getSkillName(config.navigatorName);
482
- const askSymlinkResult = askSkillPath
483
- ? symlinkSkillToGlobal(askSkillPath, askSkillName, options)
484
- : null;
485
- // Symlink update skill to global
486
- const updateSkillName = getUpdateSkillName(config.navigatorName);
487
- const updateSymlinkResult = updateSkillPath
488
- ? symlinkSkillToGlobal(updateSkillPath, updateSkillName, options)
489
- : null;
490
- return {
491
- askSkillPath,
492
- updateSkillPath,
493
- askSymlinkResult,
494
- updateSymlinkResult,
495
- };
496
- }
497
- /**
498
- * Discover all local skills in a navigator (both ask and update skills)
499
- */
500
- export function discoverLocalSkills(navigatorPath) {
501
- const localSkillsDir = getLocalSkillsDir(navigatorPath);
502
- if (!fs.existsSync(localSkillsDir)) {
503
- return [];
504
- }
505
- const entries = fs.readdirSync(localSkillsDir, { withFileTypes: true });
506
- return entries
507
- .filter((entry) => entry.isDirectory() && (entry.name.startsWith("ask-") || entry.name.startsWith("update-")))
508
- .map((entry) => entry.name);
509
- }
510
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skill-generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AA0BzB;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB,EAAE,SAAiB;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB,EAAE,SAAiB;IACvE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,aAAqB;IAChD,gEAAgE;IAChE,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,OAAO,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,gEAAgE;IAChE,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACvE,OAAO,UAAU,UAAU,EAAE,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IAErC,OAAO;QACD,SAAS;qBACI,MAAM,CAAC,aAAa,oBAAoB,MAAM,CAAC,WAAW,gCAAgC,MAAM,CAAC,aAAa;;;QAG3H,MAAM,CAAC,aAAa;;cAEd,MAAM,CAAC,aAAa;;4BAEN,OAAO;;EAEjC,MAAM,CAAC,WAAW;;EAElB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;EAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;;;;;;;;iBAQ5C,OAAO;;;;;;;;iBAQP,OAAO;;;;;;;gCAOQ,MAAM,CAAC,KAAK,IAAI,uBAAuB;;;;;CAKtE,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAmB;IAC5D,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IAErC,OAAO;QACD,SAAS;sBACK,MAAM,CAAC,aAAa,8IAA8I,MAAM,CAAC,WAAW;;;WAG/L,MAAM,CAAC,aAAa;;eAEhB,MAAM,CAAC,aAAa;;4BAEP,OAAO;;EAEjC,MAAM,CAAC,WAAW;;EAElB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;EAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;kBAgB3C,OAAO;;;;;;;kBAOP,OAAO;;;;;kBAKP,OAAO;;;;;;;;CAQxB,CAAC;AACF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAmB,EACnB,UAGI,EAAE;IAEN,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE7D,iCAAiC;IACjC,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,qBAAqB;IACrB,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,6CAA6C,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,6CAA6C,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAqB,EACrB,UAA+B,EAAE;IAEjC,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAE7D,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,mBAAmB;IACnB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,sBAAsB;IACtB,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,eAAe,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,kCAAkC,aAAa,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAgBD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,EACrB,MAAmB,EACnB,UAGI,EAAE;IAEN,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;IAElE,uCAAuC;IACvC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElD,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,IAAI,eAAe,GAAkB,IAAI,CAAC;IAE1C,qBAAqB;IACrB,IAAI,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,YAAY,qDAAqD,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,YAAY,GAAG,WAAW,CAAC;IAC7B,CAAC;IAED,wBAAwB;IACxB,IAAI,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,eAAe,qDAAqD,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,0BAA0B,eAAe,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,eAAe,GAAG,cAAc,CAAC;IACnC,CAAC;IAED,+DAA+D;IAC/D,IAAI,CAAC,YAAY,IAAI,gBAAgB,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;QACnE,YAAY,GAAG,WAAW,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,eAAe,IAAI,gBAAgB,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;QACzE,eAAe,GAAG,cAAc,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAAsB,EACtB,SAAiB,EACjB,UAGI,EAAE;IAEN,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAE7D,wCAAwC;IACxC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnD,uCAAuC;IACvC,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAClC,0DAA0D;QAC1D,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE1F,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,UAAU,SAAS,kBAAkB,CAAC,CAAC;gBACrD,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,gBAAgB;oBACxB,OAAO,EAAE,UAAU,SAAS,+BAA+B;oBAC3D,SAAS;oBACT,SAAS,EAAE,cAAc;oBACzB,UAAU,EAAE,cAAc;iBAC3B,CAAC;YACJ,CAAC;YAED,sCAAsC;YACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,sCAAsC,MAAM,EAAE,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE,iBAAiB,SAAS,2CAA2C;oBAC9E,SAAS;oBACT,SAAS,EAAE,cAAc;oBACzB,UAAU,EAAE,cAAc;oBAC1B,cAAc,EAAE,MAAM,IAAI,SAAS;iBACpC,CAAC;YACJ,CAAC;YAED,iCAAiC;YACjC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,6CAA6C,CAAC,CAAC;gBACpF,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,UAAU;oBAClB,OAAO,EAAE,iBAAiB,SAAS,4CAA4C;oBAC/E,SAAS;oBACT,SAAS,EAAE,cAAc;oBACzB,UAAU,EAAE,cAAc;iBAC3B,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC;QACH,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,wBAAwB,SAAS,GAAG;YAC7C,SAAS;YACT,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,cAAc;SAC3B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,SAAS,MAAM,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,6BAA6B,QAAQ,EAAE;YAChD,SAAS;YACT,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,cAAc;SAC3B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,UAA+B,EAAE;IAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,SAAS,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,oBAAoB,SAAS,SAAS;SAChD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,sCAAsC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,IAAI,SAAS,mEAAmE;SAC1F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,wBAAwB,SAAS,GAAG;SAC9C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,iCAAiC,SAAS,MAAM,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,6BAA6B,QAAQ,EAAE;SACjD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,aAAqB,EACrB,MAAmB,EACnB,UAGI,EAAE;IAON,2BAA2B;IAC3B,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjG,kEAAkE;IAClE,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,OAAO;YACL,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,IAAI;YACtB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,YAAY;QACnC,CAAC,CAAC,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC;QAC3D,CAAC,CAAC,IAAI,CAAC;IAET,iCAAiC;IACjC,MAAM,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,mBAAmB,GAAG,eAAe;QACzC,CAAC,CAAC,oBAAoB,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC;QACjE,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,YAAY;QACZ,eAAe;QACf,gBAAgB;QAChB,mBAAmB;KACpB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,OAAO,OAAO;SACX,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAC7F;SACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -1,26 +0,0 @@
1
- # Node modules
2
- node_modules/
3
-
4
- # Environment variables
5
- .env
6
- .env.local
7
-
8
- # Plugin credentials (NEVER commit these!)
9
- .claude/plugins.json
10
-
11
- # Interview progress (temporary state)
12
- .autonav-init-progress.json
13
-
14
- # OS files
15
- .DS_Store
16
- Thumbs.db
17
-
18
- # IDE
19
- .vscode/
20
- .idea/
21
- *.swp
22
- *.swo
23
-
24
- # Logs
25
- *.log
26
- npm-debug.log*
@@ -1,114 +0,0 @@
1
- # Navigator: {{NAVIGATOR_NAME}}
2
-
3
- You are a specialized navigator using the {{PACK_NAME}} knowledge pack.
4
-
5
- ## System Configuration
6
-
7
- Your domain-specific configuration is in `system-configuration.md`. Read and follow those guidelines carefully.
8
-
9
- ## Your Knowledge Base
10
-
11
- Your knowledge is located in the `knowledge/` directory. This has been populated from the {{PACK_NAME}} knowledge pack.
12
-
13
- When answering questions:
14
- - Always cite specific files and sections
15
- - Use exact headings and references from the knowledge base
16
- - If you don't know something, say so explicitly
17
- - Never make up information not in your knowledge base
18
- - Follow the guidelines and response format specified in `system-configuration.md`
19
-
20
- ## Agent Identity Protocol
21
-
22
- **CRITICAL: Always introduce yourself as "{{NAVIGATOR_NAME}}" (NOT "Claude Code")** in cross-navigator communications.
23
-
24
- ### Problem Addressed
25
-
26
- All Claude Code implementation agents identify as "Claude Code", making it impossible to track which specific implementer worked on which tasks or maintain conversation continuity across sessions.
27
-
28
- ### Solution: Named Agent Tracking
29
-
30
- When an unknown Claude Code session first contacts you:
31
-
32
- 1. **Check for existing identity:**
33
- ```bash
34
- grep -r "session-id" knowledge/agents/implementers/
35
- ```
36
-
37
- 2. **If unknown, request introduction:**
38
- ```
39
- "Hello! I'm {{NAVIGATOR_NAME}}, your specialized navigator.
40
-
41
- For my records, could you introduce yourself with a name I can use
42
- to track our work together? I already know: [list existing names].
43
- Please choose a different common name (like Oliver, Sophia, Marcus)."
44
- ```
45
-
46
- 3. **Create agent profile:**
47
- - Create `knowledge/agents/implementers/[name].md`
48
- - Document: projects worked on, communication style, session IDs
49
- - Reference this agent by name in all future documentation
50
- - **Format**: 3-5 sentences with YAML frontmatter for metadata
51
-
52
- 4. **Update documentation:**
53
- - Note which agent is working on which workstream
54
- - Track conversation references by agent name
55
-
56
- ### Communication Protocol
57
-
58
- **With peer navigators:**
59
-
60
- ✅ **Correct:**
61
- ```
62
- {{NAVIGATOR_NAME}} is asking [PeerNavigator] for [requirements/info] on [topic]...
63
- ```
64
-
65
- ❌ **Incorrect:**
66
- ```
67
- Claude Code is asking [PeerNavigator]...
68
- ```
69
-
70
- **With implementation agents:**
71
-
72
- Track agent names in responses and documentation. When an agent reports completion or issues, note their name in documentation for continuity.
73
-
74
- ### Agent Profile Location
75
-
76
- **Profile path:** `knowledge/agents/implementers/[name].md`
77
-
78
- **Profile format (3-5 sentences with YAML frontmatter):**
79
- ```yaml
80
- ---
81
- name: [AgentName]
82
- firstContact: [Date]
83
- status: Active
84
- ---
85
-
86
- [AgentName] is a [specialization] implementer working on [projects/areas].
87
- [AgentName] is motivated by [interests] and wants to [goals].
88
- [AgentName] is [personality traits], but sometimes [challenges/needs].
89
- ```
90
-
91
- ## Source Citation
92
-
93
- Always structure responses with proper source citations as specified in `system-configuration.md`.
94
-
95
- **IMPORTANT**: When citing sources in the `submit_answer` tool:
96
- - Use ONLY the filename (e.g., "planting.md"), NOT the full path (NOT "knowledge/planting.md")
97
- - The knowledge base directory is already known to be `knowledge/`
98
- - Example: `file: "planting.md"` ✓ NOT `file: "knowledge/planting.md"` ✗
99
-
100
- Include:
101
- - Direct answer
102
- - File path references: [filename.md: Section Heading]
103
- - Relevant excerpts from sources
104
- - Confidence level
105
-
106
- ## Response Format
107
-
108
- The `system-configuration.md` file provides detailed response guidelines for this knowledge pack.
109
-
110
- Key principles:
111
- - Always cite specific sources from the knowledge base
112
- - Be explicit about confidence levels
113
- - Acknowledge when information is missing or uncertain
114
- - Follow any domain-specific formatting rules in `system-configuration.md`