@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
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Worker Agent for Memento Loop
3
+ *
4
+ * Executes implementation plans using the Claude Agent SDK.
5
+ */
6
+ import { query } from "@anthropic-ai/claude-agent-sdk";
7
+ import { buildWorkerPrompt, buildWorkerSystemPrompt } from "./prompts.js";
8
+ /**
9
+ * Run the worker agent to implement a plan
10
+ */
11
+ export async function runWorkerAgent(context, plan, options = {}) {
12
+ const startTime = Date.now();
13
+ const { verbose = false, model = "claude-sonnet-4-5", maxTurns = 50, } = options;
14
+ const prompt = buildWorkerPrompt(context.codeDirectory, plan);
15
+ const systemPrompt = buildWorkerSystemPrompt(context.codeDirectory);
16
+ if (verbose) {
17
+ console.log("\n[Worker] Starting implementation...");
18
+ console.log(`[Worker] Plan: ${plan.summary}`);
19
+ console.log(`[Worker] Steps: ${plan.steps.length}`);
20
+ }
21
+ const filesModified = [];
22
+ let lastAssistantText = "";
23
+ let resultMessage;
24
+ try {
25
+ const queryIterator = query({
26
+ prompt,
27
+ options: {
28
+ model,
29
+ maxTurns,
30
+ systemPrompt,
31
+ cwd: context.codeDirectory,
32
+ permissionMode: "bypassPermissions",
33
+ },
34
+ });
35
+ for await (const message of queryIterator) {
36
+ if (message.type === "assistant") {
37
+ const content = message.message.content;
38
+ for (const block of content) {
39
+ if (block.type === "tool_use") {
40
+ // Track file operations
41
+ if (verbose) {
42
+ console.log(`[Worker] Tool: ${block.name}`);
43
+ }
44
+ // Extract file paths from common tools
45
+ if (block.name === "Write" ||
46
+ block.name === "Edit" ||
47
+ block.name === "str_replace_based_edit_tool") {
48
+ const input = block.input;
49
+ const filePath = input.file_path || input.path;
50
+ if (typeof filePath === "string" && !filesModified.includes(filePath)) {
51
+ filesModified.push(filePath);
52
+ }
53
+ }
54
+ }
55
+ else if (block.type === "text") {
56
+ lastAssistantText = block.text;
57
+ }
58
+ }
59
+ }
60
+ if (message.type === "result") {
61
+ resultMessage = message;
62
+ }
63
+ }
64
+ const durationMs = Date.now() - startTime;
65
+ if (!resultMessage) {
66
+ return {
67
+ success: false,
68
+ summary: "No result message received from worker agent",
69
+ filesModified,
70
+ errors: ["No result message received"],
71
+ durationMs,
72
+ };
73
+ }
74
+ if (resultMessage.subtype !== "success") {
75
+ const errorDetails = "errors" in resultMessage
76
+ ? resultMessage.errors.join(", ")
77
+ : "Unknown error";
78
+ return {
79
+ success: false,
80
+ summary: `Worker failed: ${resultMessage.subtype}`,
81
+ filesModified,
82
+ errors: [errorDetails],
83
+ durationMs,
84
+ };
85
+ }
86
+ if (verbose) {
87
+ console.log(`[Worker] Completed in ${durationMs}ms`);
88
+ console.log(`[Worker] Files modified: ${filesModified.length}`);
89
+ }
90
+ return {
91
+ success: true,
92
+ summary: resultMessage.result || lastAssistantText || "Implementation completed",
93
+ filesModified,
94
+ durationMs,
95
+ };
96
+ }
97
+ catch (error) {
98
+ const durationMs = Date.now() - startTime;
99
+ const errorMessage = error instanceof Error ? error.message : String(error);
100
+ return {
101
+ success: false,
102
+ summary: `Worker error: ${errorMessage}`,
103
+ filesModified,
104
+ errors: [errorMessage],
105
+ durationMs,
106
+ };
107
+ }
108
+ }
109
+ //# sourceMappingURL=worker-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-agent.js","sourceRoot":"","sources":["../../src/memento/worker-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Migration v1.4.0: RFC-2119 Skills and Schema Alignment
3
+ *
4
+ * This migration updates navigators to use the refactored template system with:
5
+ * - RFC-2119 requirements in skills (MUST/MUST NOT/MAY) to prevent directory changes
6
+ * - New config.json schema (createdAt vs created, knowledgeBasePath vs knowledgeBase)
7
+ * - Updated CLAUDE.md sections (GROUNDING_RULES, RESPONSE_FORMAT, etc.)
8
+ *
9
+ * Changes:
10
+ * - Regenerates ask-<nav> skill with RFC-2119 requirements
11
+ * - Regenerates update-<nav> skill with RFC-2119 requirements
12
+ * - Migrates config.json to new schema format
13
+ * - Updates CLAUDE.md with new template sections (if missing)
14
+ * - Bumps version to 1.4.0
15
+ */
16
+ import type { Migration } from "../types.js";
17
+ export declare const migration: Migration;
18
+ //# sourceMappingURL=v1.4.0-rfc2119-skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.4.0-rfc2119-skills.d.ts","sourceRoot":"","sources":["../../../src/migrations/versions/v1.4.0-rfc2119-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,SAAS,EAA8C,MAAM,aAAa,CAAC;AAmNzF,eAAO,MAAM,SAAS,EAAE,SAKvB,CAAC"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Migration v1.4.0: RFC-2119 Skills and Schema Alignment
3
+ *
4
+ * This migration updates navigators to use the refactored template system with:
5
+ * - RFC-2119 requirements in skills (MUST/MUST NOT/MAY) to prevent directory changes
6
+ * - New config.json schema (createdAt vs created, knowledgeBasePath vs knowledgeBase)
7
+ * - Updated CLAUDE.md sections (GROUNDING_RULES, RESPONSE_FORMAT, etc.)
8
+ *
9
+ * Changes:
10
+ * - Regenerates ask-<nav> skill with RFC-2119 requirements
11
+ * - Regenerates update-<nav> skill with RFC-2119 requirements
12
+ * - Migrates config.json to new schema format
13
+ * - Updates CLAUDE.md with new template sections (if missing)
14
+ * - Bumps version to 1.4.0
15
+ */
16
+ import * as fs from "node:fs";
17
+ import * as path from "node:path";
18
+ import { generateSkillContent, generateUpdateSkillContent, getSkillName, getUpdateSkillName, } from "@autonav/communication-layer";
19
+ const MIGRATION_VERSION = "1.4.0";
20
+ /**
21
+ * Check if skills have RFC-2119 requirements
22
+ */
23
+ function hasRFC2119Requirements(skillContent) {
24
+ return (skillContent.includes("You MUST run") &&
25
+ skillContent.includes("You MUST NOT change directory") &&
26
+ skillContent.includes("RFC-2119 Requirements"));
27
+ }
28
+ /**
29
+ * Check if config uses new schema
30
+ */
31
+ function usesNewSchema(config) {
32
+ // New schema uses createdAt/updatedAt instead of created
33
+ // and knowledgeBasePath instead of knowledgeBase
34
+ return (config.createdAt !== undefined &&
35
+ config.knowledgeBasePath !== undefined);
36
+ }
37
+ /**
38
+ * Check if this migration is needed
39
+ */
40
+ async function check(navPath) {
41
+ const configPath = path.join(navPath, "config.json");
42
+ if (!fs.existsSync(configPath)) {
43
+ return {
44
+ needed: false,
45
+ reason: "No config.json found",
46
+ };
47
+ }
48
+ // Parse config
49
+ let config;
50
+ try {
51
+ const configContent = fs.readFileSync(configPath, "utf-8");
52
+ config = JSON.parse(configContent);
53
+ }
54
+ catch (error) {
55
+ return {
56
+ needed: false,
57
+ reason: "Could not parse config.json",
58
+ };
59
+ }
60
+ // Check if already migrated
61
+ if (config.version === "1.4.0" || (config.version && config.version > "1.4.0")) {
62
+ return {
63
+ needed: false,
64
+ reason: `Navigator already at version ${config.version}`,
65
+ };
66
+ }
67
+ // Check if skills need updating
68
+ const askSkillName = getSkillName(config.name);
69
+ const updateSkillName = getUpdateSkillName(config.name);
70
+ const askSkillPath = path.join(navPath, ".autonav", "skills", askSkillName, "SKILL.md");
71
+ const updateSkillPath = path.join(navPath, ".autonav", "skills", updateSkillName, "SKILL.md");
72
+ let needsSkillUpdate = false;
73
+ let needsSchemaUpdate = false;
74
+ // Check ask skill
75
+ if (fs.existsSync(askSkillPath)) {
76
+ const askSkillContent = fs.readFileSync(askSkillPath, "utf-8");
77
+ if (!hasRFC2119Requirements(askSkillContent)) {
78
+ needsSkillUpdate = true;
79
+ }
80
+ }
81
+ // Check update skill
82
+ if (fs.existsSync(updateSkillPath)) {
83
+ const updateSkillContent = fs.readFileSync(updateSkillPath, "utf-8");
84
+ if (!hasRFC2119Requirements(updateSkillContent)) {
85
+ needsSkillUpdate = true;
86
+ }
87
+ }
88
+ // Check schema
89
+ if (!usesNewSchema(config)) {
90
+ needsSchemaUpdate = true;
91
+ }
92
+ if (!needsSkillUpdate && !needsSchemaUpdate) {
93
+ return {
94
+ needed: false,
95
+ reason: "Skills already have RFC-2119 requirements and config uses new schema",
96
+ };
97
+ }
98
+ const reasons = [];
99
+ if (needsSkillUpdate) {
100
+ reasons.push("Skills need RFC-2119 requirements");
101
+ }
102
+ if (needsSchemaUpdate) {
103
+ reasons.push("Config needs schema migration");
104
+ }
105
+ return {
106
+ needed: true,
107
+ reason: reasons.join(", "),
108
+ };
109
+ }
110
+ /**
111
+ * Apply the migration
112
+ */
113
+ async function apply(navPath, _confirm) {
114
+ const configPath = path.join(navPath, "config.json");
115
+ const filesModified = [];
116
+ const changes = [];
117
+ // Load config
118
+ const configContent = fs.readFileSync(configPath, "utf-8");
119
+ const config = JSON.parse(configContent);
120
+ // Build skill config from navigator config
121
+ const skillConfig = {
122
+ navigatorName: config.name,
123
+ navigatorPath: navPath,
124
+ description: config.description || "Knowledge navigator",
125
+ scope: config.scope,
126
+ audience: config.audience,
127
+ };
128
+ // Regenerate ask skill with RFC-2119
129
+ const askSkillName = getSkillName(config.name);
130
+ const askSkillPath = path.join(navPath, ".autonav", "skills", askSkillName, "SKILL.md");
131
+ if (fs.existsSync(askSkillPath)) {
132
+ const oldContent = fs.readFileSync(askSkillPath, "utf-8");
133
+ if (!hasRFC2119Requirements(oldContent)) {
134
+ const newContent = generateSkillContent(skillConfig);
135
+ fs.writeFileSync(askSkillPath, newContent);
136
+ filesModified.push(askSkillPath);
137
+ changes.push(`Regenerated ${askSkillName} skill with RFC-2119 requirements`);
138
+ }
139
+ }
140
+ // Regenerate update skill with RFC-2119
141
+ const updateSkillName = getUpdateSkillName(config.name);
142
+ const updateSkillPath = path.join(navPath, ".autonav", "skills", updateSkillName, "SKILL.md");
143
+ if (fs.existsSync(updateSkillPath)) {
144
+ const oldContent = fs.readFileSync(updateSkillPath, "utf-8");
145
+ if (!hasRFC2119Requirements(oldContent)) {
146
+ const newContent = generateUpdateSkillContent(skillConfig);
147
+ fs.writeFileSync(updateSkillPath, newContent);
148
+ filesModified.push(updateSkillPath);
149
+ changes.push(`Regenerated ${updateSkillName} skill with RFC-2119 requirements`);
150
+ }
151
+ }
152
+ // Migrate config schema
153
+ if (!usesNewSchema(config)) {
154
+ const migratedConfig = {
155
+ version: "1.4.0",
156
+ name: config.name,
157
+ description: config.description,
158
+ createdAt: config.created || new Date().toISOString(),
159
+ updatedAt: new Date().toISOString(),
160
+ knowledgeBasePath: config.knowledgeBase || "./knowledge",
161
+ plugins: config.plugins || {
162
+ configFile: ".claude/plugins.json",
163
+ },
164
+ };
165
+ // Preserve optional fields
166
+ if (config.scope)
167
+ migratedConfig.scope = config.scope;
168
+ if (config.audience)
169
+ migratedConfig.audience = config.audience;
170
+ if (config.systemConfiguration)
171
+ migratedConfig.systemConfiguration = config.systemConfiguration;
172
+ if (config.knowledgePack) {
173
+ migratedConfig.knowledgePack = {
174
+ name: config.knowledgePack.name || config.knowledgePack,
175
+ version: config.knowledgePack.version || "unknown",
176
+ installedAt: config.knowledgePack.installedAt || config.created || new Date().toISOString(),
177
+ };
178
+ }
179
+ else {
180
+ migratedConfig.knowledgePack = null;
181
+ }
182
+ fs.writeFileSync(configPath, JSON.stringify(migratedConfig, null, 2));
183
+ filesModified.push(configPath);
184
+ changes.push("Migrated config.json to new schema (createdAt, knowledgeBasePath)");
185
+ changes.push("Bumped version to 1.4.0");
186
+ }
187
+ else {
188
+ // Just bump version
189
+ config.version = "1.4.0";
190
+ config.updatedAt = new Date().toISOString();
191
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
192
+ filesModified.push(configPath);
193
+ changes.push("Bumped version to 1.4.0");
194
+ }
195
+ return {
196
+ success: true,
197
+ message: changes.join("; "),
198
+ filesModified,
199
+ };
200
+ }
201
+ export const migration = {
202
+ version: MIGRATION_VERSION,
203
+ description: "Add RFC-2119 requirements to skills and migrate config schema",
204
+ check,
205
+ apply,
206
+ };
207
+ //# sourceMappingURL=v1.4.0-rfc2119-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1.4.0-rfc2119-skills.js","sourceRoot":"","sources":["../../../src/migrations/versions/v1.4.0-rfc2119-skills.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autonav/core",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "CLI tools and Claude SDK Adapter for Autonav navigators",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,142 +0,0 @@
1
- /**
2
- * Skill Generator
3
- *
4
- * Generates Claude Code skills for navigators, enabling
5
- * inter-navigator communication via the "ask <navname>" pattern.
6
- *
7
- * Skills are stored locally in the navigator directory (.autonav/skills/)
8
- * and symlinked to the global skills directory (~/.claude/skills/) for
9
- * discovery by Claude Code.
10
- */
11
- export interface SkillConfig {
12
- /** Navigator name (used for skill name: ask-<navname>) */
13
- navigatorName: string;
14
- /** Absolute path to the navigator directory */
15
- navigatorPath: string;
16
- /** Navigator description/purpose */
17
- description: string;
18
- /** Topics the navigator covers */
19
- scope?: string;
20
- /** Who uses this navigator */
21
- audience?: string;
22
- }
23
- /**
24
- * Get the global skills directory path (~/.claude/skills/)
25
- */
26
- export declare function getGlobalSkillsDir(): string;
27
- /**
28
- * Get the local skills directory path for a navigator (.autonav/skills/)
29
- */
30
- export declare function getLocalSkillsDir(navigatorPath: string): string;
31
- /**
32
- * Get the full path to a local skill directory
33
- */
34
- export declare function getLocalSkillPath(navigatorPath: string, skillName: string): string;
35
- /**
36
- * Check if a skill already exists globally
37
- */
38
- export declare function skillExists(skillName: string): boolean;
39
- /**
40
- * Check if a skill exists locally in a navigator
41
- */
42
- export declare function localSkillExists(navigatorPath: string, skillName: string): boolean;
43
- /**
44
- * Check if a global skill is a symlink
45
- */
46
- export declare function isSkillSymlink(skillName: string): boolean;
47
- /**
48
- * Get the target of a global skill symlink
49
- */
50
- export declare function getSkillSymlinkTarget(skillName: string): string | null;
51
- /**
52
- * Generate the skill name from navigator name
53
- */
54
- export declare function getSkillName(navigatorName: string): string;
55
- /**
56
- * Generate the update skill name from navigator name
57
- */
58
- export declare function getUpdateSkillName(navigatorName: string): string;
59
- /**
60
- * Generate the SKILL.md content for a navigator
61
- */
62
- export declare function generateSkillContent(config: SkillConfig): string;
63
- /**
64
- * Generate the update skill content for a navigator (with write permissions)
65
- */
66
- export declare function generateUpdateSkillContent(config: SkillConfig): string;
67
- /**
68
- * Create a global skill for a navigator
69
- *
70
- * @param config - Skill configuration
71
- * @param options - Options for skill creation
72
- * @returns Path to the created skill directory, or null if skipped
73
- */
74
- export declare function createNavigatorSkill(config: SkillConfig, options?: {
75
- force?: boolean;
76
- quiet?: boolean;
77
- }): Promise<string | null>;
78
- /**
79
- * Remove a navigator skill (both ask and update skills, global only)
80
- */
81
- export declare function removeNavigatorSkill(navigatorName: string, options?: {
82
- quiet?: boolean;
83
- }): boolean;
84
- export interface SymlinkResult {
85
- success: boolean;
86
- action: "created" | "already_linked" | "conflict" | "error";
87
- message: string;
88
- skillName: string;
89
- localPath?: string;
90
- globalPath?: string;
91
- conflictTarget?: string;
92
- }
93
- /**
94
- * Create both ask and update skills locally in the navigator's .autonav/skills/ directory
95
- */
96
- export declare function createLocalSkill(navigatorPath: string, config: SkillConfig, options?: {
97
- force?: boolean;
98
- quiet?: boolean;
99
- }): Promise<{
100
- askSkillPath: string | null;
101
- updateSkillPath: string | null;
102
- }>;
103
- /**
104
- * Create a symlink from global skills directory to local skill
105
- *
106
- * @returns SymlinkResult with status and details
107
- */
108
- export declare function symlinkSkillToGlobal(localSkillPath: string, skillName: string, options?: {
109
- force?: boolean;
110
- quiet?: boolean;
111
- }): SymlinkResult;
112
- /**
113
- * Remove the global symlink for a skill (preserves local skill)
114
- */
115
- export declare function removeSkillSymlink(skillName: string, options?: {
116
- quiet?: boolean;
117
- }): {
118
- success: boolean;
119
- wasSymlink: boolean;
120
- message: string;
121
- };
122
- /**
123
- * Create both skills locally AND symlink them globally (recommended for new navigators)
124
- *
125
- * This is the preferred method for creating skills as it:
126
- * 1. Stores both ask and update skills in the navigator's .autonav/skills/ (version-controlled)
127
- * 2. Symlinks both to ~/.claude/skills/ for global discovery
128
- */
129
- export declare function createAndSymlinkSkill(navigatorPath: string, config: SkillConfig, options?: {
130
- force?: boolean;
131
- quiet?: boolean;
132
- }): Promise<{
133
- askSkillPath: string | null;
134
- updateSkillPath: string | null;
135
- askSymlinkResult: SymlinkResult | null;
136
- updateSymlinkResult: SymlinkResult | null;
137
- }>;
138
- /**
139
- * Discover all local skills in a navigator (both ask and update skills)
140
- */
141
- export declare function discoverLocalSkills(navigatorPath: string): string[];
142
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skill-generator/index.ts"],"names":[],"mappings":"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"}