@autonav/core 1.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.
Files changed (142) hide show
  1. package/README.md +115 -0
  2. package/dist/adapter/claude-adapter.d.ts +136 -0
  3. package/dist/adapter/claude-adapter.d.ts.map +1 -0
  4. package/dist/adapter/claude-adapter.js +340 -0
  5. package/dist/adapter/claude-adapter.js.map +1 -0
  6. package/dist/adapter/index.d.ts +7 -0
  7. package/dist/adapter/index.d.ts.map +1 -0
  8. package/dist/adapter/index.js +7 -0
  9. package/dist/adapter/index.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +11 -0
  11. package/dist/cli/autonav.d.ts.map +1 -0
  12. package/dist/cli/autonav.js +79 -0
  13. package/dist/cli/autonav.js.map +1 -0
  14. package/dist/cli/nav-chat.d.ts +3 -0
  15. package/dist/cli/nav-chat.d.ts.map +1 -0
  16. package/dist/cli/nav-chat.js +151 -0
  17. package/dist/cli/nav-chat.js.map +1 -0
  18. package/dist/cli/nav-init.d.ts +3 -0
  19. package/dist/cli/nav-init.d.ts.map +1 -0
  20. package/dist/cli/nav-init.js +366 -0
  21. package/dist/cli/nav-init.js.map +1 -0
  22. package/dist/cli/nav-query.d.ts +3 -0
  23. package/dist/cli/nav-query.d.ts.map +1 -0
  24. package/dist/cli/nav-query.js +217 -0
  25. package/dist/cli/nav-query.js.map +1 -0
  26. package/dist/conversation/App.d.ts +14 -0
  27. package/dist/conversation/App.d.ts.map +1 -0
  28. package/dist/conversation/App.js +229 -0
  29. package/dist/conversation/App.js.map +1 -0
  30. package/dist/conversation/index.d.ts +29 -0
  31. package/dist/conversation/index.d.ts.map +1 -0
  32. package/dist/conversation/index.js +44 -0
  33. package/dist/conversation/index.js.map +1 -0
  34. package/dist/conversation/prompts.d.ts +9 -0
  35. package/dist/conversation/prompts.d.ts.map +1 -0
  36. package/dist/conversation/prompts.js +47 -0
  37. package/dist/conversation/prompts.js.map +1 -0
  38. package/dist/index.d.ts +13 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +24 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/interview/App.d.ts +14 -0
  43. package/dist/interview/App.d.ts.map +1 -0
  44. package/dist/interview/App.js +159 -0
  45. package/dist/interview/App.js.map +1 -0
  46. package/dist/interview/index.d.ts +30 -0
  47. package/dist/interview/index.d.ts.map +1 -0
  48. package/dist/interview/index.js +52 -0
  49. package/dist/interview/index.js.map +1 -0
  50. package/dist/interview/prompts.d.ts +36 -0
  51. package/dist/interview/prompts.d.ts.map +1 -0
  52. package/dist/interview/prompts.js +116 -0
  53. package/dist/interview/prompts.js.map +1 -0
  54. package/dist/pack-installer/github.d.ts +41 -0
  55. package/dist/pack-installer/github.d.ts.map +1 -0
  56. package/dist/pack-installer/github.js +294 -0
  57. package/dist/pack-installer/github.js.map +1 -0
  58. package/dist/pack-installer/index.d.ts +57 -0
  59. package/dist/pack-installer/index.d.ts.map +1 -0
  60. package/dist/pack-installer/index.js +257 -0
  61. package/dist/pack-installer/index.js.map +1 -0
  62. package/dist/plugins/config-schema.d.ts +32 -0
  63. package/dist/plugins/config-schema.d.ts.map +1 -0
  64. package/dist/plugins/config-schema.js +26 -0
  65. package/dist/plugins/config-schema.js.map +1 -0
  66. package/dist/plugins/implementations/file-watcher/index.d.ts +110 -0
  67. package/dist/plugins/implementations/file-watcher/index.d.ts.map +1 -0
  68. package/dist/plugins/implementations/file-watcher/index.js +212 -0
  69. package/dist/plugins/implementations/file-watcher/index.js.map +1 -0
  70. package/dist/plugins/implementations/github/index.d.ts +201 -0
  71. package/dist/plugins/implementations/github/index.d.ts.map +1 -0
  72. package/dist/plugins/implementations/github/index.js +337 -0
  73. package/dist/plugins/implementations/github/index.js.map +1 -0
  74. package/dist/plugins/implementations/slack/index.d.ts +153 -0
  75. package/dist/plugins/implementations/slack/index.d.ts.map +1 -0
  76. package/dist/plugins/implementations/slack/index.js +221 -0
  77. package/dist/plugins/implementations/slack/index.js.map +1 -0
  78. package/dist/plugins/index.d.ts +23 -0
  79. package/dist/plugins/index.d.ts.map +1 -0
  80. package/dist/plugins/index.js +35 -0
  81. package/dist/plugins/index.js.map +1 -0
  82. package/dist/plugins/plugin-manager.d.ts +66 -0
  83. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  84. package/dist/plugins/plugin-manager.js +198 -0
  85. package/dist/plugins/plugin-manager.js.map +1 -0
  86. package/dist/plugins/types.d.ts +102 -0
  87. package/dist/plugins/types.d.ts.map +1 -0
  88. package/dist/plugins/types.js +38 -0
  89. package/dist/plugins/types.js.map +1 -0
  90. package/dist/plugins/utils/security.d.ts +43 -0
  91. package/dist/plugins/utils/security.d.ts.map +1 -0
  92. package/dist/plugins/utils/security.js +115 -0
  93. package/dist/plugins/utils/security.js.map +1 -0
  94. package/dist/query-engine/index.d.ts +10 -0
  95. package/dist/query-engine/index.d.ts.map +1 -0
  96. package/dist/query-engine/index.js +10 -0
  97. package/dist/query-engine/index.js.map +1 -0
  98. package/dist/query-engine/navigator-loader.d.ts +37 -0
  99. package/dist/query-engine/navigator-loader.d.ts.map +1 -0
  100. package/dist/query-engine/navigator-loader.js +167 -0
  101. package/dist/query-engine/navigator-loader.js.map +1 -0
  102. package/dist/query-engine/output-formatter.d.ts +55 -0
  103. package/dist/query-engine/output-formatter.d.ts.map +1 -0
  104. package/dist/query-engine/output-formatter.js +165 -0
  105. package/dist/query-engine/output-formatter.js.map +1 -0
  106. package/dist/query-engine/response-validator.d.ts +55 -0
  107. package/dist/query-engine/response-validator.d.ts.map +1 -0
  108. package/dist/query-engine/response-validator.js +92 -0
  109. package/dist/query-engine/response-validator.js.map +1 -0
  110. package/dist/templates/.gitignore.template +23 -0
  111. package/dist/templates/CLAUDE-pack.md.template +32 -0
  112. package/dist/templates/CLAUDE.md.template +128 -0
  113. package/dist/templates/README.md.template +174 -0
  114. package/dist/templates/config-pack.json.template +16 -0
  115. package/dist/templates/config.json.template +11 -0
  116. package/dist/templates/index.d.ts +22 -0
  117. package/dist/templates/index.d.ts.map +1 -0
  118. package/dist/templates/index.js +32 -0
  119. package/dist/templates/index.js.map +1 -0
  120. package/dist/templates/plugins.json.template +33 -0
  121. package/dist/templates/system-configuration.md.template +66 -0
  122. package/dist/tools/handler.d.ts +20 -0
  123. package/dist/tools/handler.d.ts.map +1 -0
  124. package/dist/tools/handler.js +202 -0
  125. package/dist/tools/handler.js.map +1 -0
  126. package/dist/tools/index.d.ts +10 -0
  127. package/dist/tools/index.d.ts.map +1 -0
  128. package/dist/tools/index.js +10 -0
  129. package/dist/tools/index.js.map +1 -0
  130. package/dist/tools/response.d.ts +30 -0
  131. package/dist/tools/response.d.ts.map +1 -0
  132. package/dist/tools/response.js +68 -0
  133. package/dist/tools/response.js.map +1 -0
  134. package/dist/tools/self-config.d.ts +54 -0
  135. package/dist/tools/self-config.d.ts.map +1 -0
  136. package/dist/tools/self-config.js +84 -0
  137. package/dist/tools/self-config.js.map +1 -0
  138. package/dist/validation/index.d.ts +19 -0
  139. package/dist/validation/index.d.ts.map +1 -0
  140. package/dist/validation/index.js +91 -0
  141. package/dist/validation/index.js.map +1 -0
  142. package/package.json +71 -0
package/README.md ADDED
@@ -0,0 +1,115 @@
1
+ # @autonav/core
2
+
3
+ CLI and SDK adapter for knowledge navigators.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install -g @autonav/core
9
+ ```
10
+
11
+ ## CLI
12
+
13
+ ```bash
14
+ # Create a navigator
15
+ autonav init my-docs
16
+
17
+ # Query it
18
+ autonav query my-docs "How do I deploy?"
19
+
20
+ # Interactive chat mode
21
+ autonav chat my-docs
22
+ ```
23
+
24
+ ## Knowledge Packs
25
+
26
+ Knowledge packs are starter templates with pre-built documentation and configuration for specific domains.
27
+
28
+ ```bash
29
+ # Install from a pack server
30
+ autonav init my-nav --pack platform-engineering
31
+
32
+ # Install from GitHub (full URL)
33
+ autonav init my-nav --pack https://github.com/owner/repo/tree/main/packs/my-pack
34
+
35
+ # Install from GitHub (shorthand)
36
+ autonav init my-nav --pack github:owner/repo/packs/my-pack
37
+
38
+ # Install from GitHub via SSH (uses your SSH keys)
39
+ autonav init my-nav --pack git@github.com:owner/repo/packs/my-pack
40
+
41
+ # Install specific version
42
+ autonav init my-nav --pack github:owner/repo/packs/my-pack@v1.0.0
43
+
44
+ # Install from local file
45
+ autonav init my-nav --pack-file ./my-pack.tar.gz
46
+ ```
47
+
48
+ A knowledge pack must contain:
49
+ - `metadata.json` - Pack name and version
50
+ - `system-configuration.md` and/or `knowledge/` directory
51
+
52
+ **Note:** Currently, navigators support one knowledge pack. Multiple packs may be supported in a future release.
53
+
54
+ ## Programmatic use
55
+
56
+ ```typescript
57
+ import { ClaudeAdapter } from "@autonav/core";
58
+
59
+ const adapter = new ClaudeAdapter();
60
+ const nav = await adapter.loadNavigator("./my-docs");
61
+ const response = await adapter.query(nav, "How do I deploy?");
62
+
63
+ console.log(response.answer);
64
+ console.log(response.sources);
65
+ ```
66
+
67
+ ## Navigator structure
68
+
69
+ ```
70
+ my-docs/
71
+ ├── config.json # Name, version, settings
72
+ ├── CLAUDE.md # System prompt
73
+ ├── knowledge-base/ # Your documentation
74
+ └── .claude/
75
+ └── plugins.json # Plugin configuration
76
+ ```
77
+
78
+ ## Response format
79
+
80
+ ```json
81
+ {
82
+ "query": "How do I deploy?",
83
+ "answer": "Run kubectl apply -f prod.yaml",
84
+ "sources": [
85
+ {
86
+ "filePath": "deployment.md",
87
+ "excerpt": "kubectl apply -f prod.yaml"
88
+ }
89
+ ],
90
+ "confidence": "high"
91
+ }
92
+ ```
93
+
94
+ ## Environment
95
+
96
+ `ANTHROPIC_API_KEY` - Required for queries.
97
+
98
+ ## FAQ
99
+
100
+ **Why would I use this instead of just using Claude Code directly?**
101
+
102
+ You should keep using Claude Code! Autonav is designed to *augment* Claude Code, not replace it.
103
+
104
+ The recommended workflow is:
105
+ 1. Create a navigator with `autonav init`
106
+ 2. Work with it using Claude Code (`cd my-nav && claude`)
107
+ 3. Use `autonav query` when you need programmatic access
108
+
109
+ Autonav is **batteries-included for navigators** - it standardizes the concept so navs are portable and integratable:
110
+ - **Portable**: Your nav is just a directory - run it anywhere Claude Code runs, or via the SDK on servers and CI/CD pipelines
111
+ - **Shareable**: Knowledge packs let you share curated context with others
112
+ - **Programmable**: `autonav query` gives consistent JSON output for automation
113
+ - **Batteries-included**: Plugins, validation, and scaffolding designed specifically for knowledge navigators
114
+
115
+ Claude Code is general-purpose and extensible too, but Autonav gives you the nav-specific tooling out of the box.
@@ -0,0 +1,136 @@
1
+ import { NavigatorConfig, NavigatorResponse, type ValidationResult } from "@autonav/communication-layer";
2
+ import { PluginManager } from "../plugins/index.js";
3
+ /**
4
+ * Configuration options for Claude Adapter
5
+ */
6
+ export interface ClaudeAdapterOptions {
7
+ /**
8
+ * Claude model to use (defaults to claude-sonnet-4-20250514)
9
+ */
10
+ model?: string;
11
+ /**
12
+ * Maximum turns for agentic loop (defaults to 10)
13
+ */
14
+ maxTurns?: number;
15
+ }
16
+ /**
17
+ * Loaded navigator with all necessary context
18
+ */
19
+ export interface LoadedNavigator {
20
+ config: NavigatorConfig;
21
+ systemPrompt: string;
22
+ navigatorPath: string;
23
+ knowledgeBasePath: string;
24
+ pluginManager?: PluginManager;
25
+ pluginsConfigPath?: string;
26
+ }
27
+ /**
28
+ * Query options
29
+ */
30
+ export interface QueryOptions {
31
+ /**
32
+ * Enable self-configuration tools (defaults to true)
33
+ */
34
+ enableSelfConfig?: boolean;
35
+ /**
36
+ * Maximum turns for agentic loop (defaults to 10)
37
+ */
38
+ maxTurns?: number;
39
+ }
40
+ /**
41
+ * Claude Agent SDK Adapter
42
+ *
43
+ * Bridges Claude Agent SDK to the Communication Layer protocol.
44
+ * Loads navigators, executes queries, and validates responses.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const adapter = new ClaudeAdapter({
49
+ * model: 'claude-sonnet-4-20250514',
50
+ * maxTurns: 10
51
+ * });
52
+ *
53
+ * const navigator = adapter.loadNavigator('./my-navigator');
54
+ * const response = await adapter.query(navigator, 'How do I deploy?');
55
+ * ```
56
+ */
57
+ export declare class ClaudeAdapter {
58
+ private readonly options;
59
+ /**
60
+ * Create a new Claude Adapter
61
+ *
62
+ * @param options - Configuration options
63
+ */
64
+ constructor(options?: ClaudeAdapterOptions);
65
+ /**
66
+ * Load a navigator from a directory
67
+ *
68
+ * Reads and validates config.json and CLAUDE.md (or custom instructions file).
69
+ * Verifies that the knowledge base directory exists.
70
+ * If .claude/plugins.json exists, initializes configured plugins.
71
+ *
72
+ * @param navigatorPath - Path to the navigator directory
73
+ * @returns Loaded navigator with config, system prompt, paths, and optional plugin manager
74
+ * @throws {Error} If directory doesn't exist, config is invalid, or required files are missing
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const adapter = new ClaudeAdapter();
79
+ * const navigator = await adapter.loadNavigator('./my-navigator');
80
+ * console.log(`Loaded: ${navigator.config.name}`);
81
+ * ```
82
+ */
83
+ loadNavigator(navigatorPath: string): Promise<LoadedNavigator>;
84
+ /**
85
+ * Execute a query using Claude Agent SDK
86
+ *
87
+ * Sends the question to Claude with the navigator's system prompt,
88
+ * handles tool use via the built-in agentic loop, parses the response,
89
+ * and validates it against the knowledge base.
90
+ *
91
+ * @param navigator - Loaded navigator to query
92
+ * @param question - Question to ask
93
+ * @param options - Query options (enableSelfConfig, maxTurns)
94
+ * @returns Validated navigator response with answer and sources
95
+ * @throws {Error} If API call fails, response parsing fails, or validation fails
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const response = await adapter.query(navigator, 'How do I deploy?');
100
+ * console.log(response.answer);
101
+ * console.log(`Confidence: ${response.confidence}`);
102
+ * console.log(`Sources: ${response.sources.map(s => s.filePath).join(', ')}`);
103
+ * ```
104
+ */
105
+ query(navigator: LoadedNavigator, question: string, options?: QueryOptions): Promise<NavigatorResponse>;
106
+ /**
107
+ * Parse Claude's response into a NavigatorResponse
108
+ *
109
+ * Extracts JSON from the response text (either from code blocks or raw JSON)
110
+ * and validates it against the NavigatorResponseSchema.
111
+ *
112
+ * @param rawResponse - Raw text response from Claude
113
+ * @param query - Original query (used to populate missing query field)
114
+ * @returns Parsed and validated NavigatorResponse
115
+ * @throws {Error} If JSON cannot be extracted or schema validation fails
116
+ *
117
+ * @internal
118
+ */
119
+ parseResponse(rawResponse: string, query: string): NavigatorResponse;
120
+ /**
121
+ * Validate a NavigatorResponse
122
+ *
123
+ * Runs comprehensive validation including:
124
+ * - Source file existence checks
125
+ * - Hallucination pattern detection
126
+ * - Confidence level validation
127
+ *
128
+ * @param response - Navigator response to validate
129
+ * @param knowledgeBasePath - Path to knowledge base directory
130
+ * @returns Validation result with errors and warnings
131
+ *
132
+ * @internal
133
+ */
134
+ validate(response: NavigatorResponse, knowledgeBasePath: string): ValidationResult;
135
+ }
136
+ //# sourceMappingURL=claude-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/claude-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EAEf,iBAAiB,EAKjB,KAAK,gBAAgB,EACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAuB,aAAa,EAA0B,MAAM,qBAAqB,CAAC;AAIjG;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IAEzD;;;;OAIG;gBACS,OAAO,GAAE,oBAAyB;IAO9C;;;;;;;;;;;;;;;;;OAiBG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmHpE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,KAAK,CACT,SAAS,EAAE,eAAe,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,iBAAiB,CAAC;IAwJ7B;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAoCpE;;;;;;;;;;;;;OAaG;IACH,QAAQ,CACN,QAAQ,EAAE,iBAAiB,EAC3B,iBAAiB,EAAE,MAAM,GACxB,gBAAgB;CAGpB"}
@@ -0,0 +1,340 @@
1
+ import { query } from "@anthropic-ai/claude-agent-sdk";
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import { NavigatorConfigSchema, NavigatorResponseSchema, createAnswerQuestionPrompt, validateResponse, SELF_CONFIG_RULES, } from "@autonav/communication-layer";
5
+ import { createPluginManager, PluginConfigFileSchema } from "../plugins/index.js";
6
+ import { sanitizeError } from "../plugins/utils/security.js";
7
+ import { createSelfConfigMcpServer, createResponseMcpServer, SUBMIT_ANSWER_TOOL } from "../tools/index.js";
8
+ /**
9
+ * Claude Agent SDK Adapter
10
+ *
11
+ * Bridges Claude Agent SDK to the Communication Layer protocol.
12
+ * Loads navigators, executes queries, and validates responses.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const adapter = new ClaudeAdapter({
17
+ * model: 'claude-sonnet-4-20250514',
18
+ * maxTurns: 10
19
+ * });
20
+ *
21
+ * const navigator = adapter.loadNavigator('./my-navigator');
22
+ * const response = await adapter.query(navigator, 'How do I deploy?');
23
+ * ```
24
+ */
25
+ export class ClaudeAdapter {
26
+ options;
27
+ /**
28
+ * Create a new Claude Adapter
29
+ *
30
+ * @param options - Configuration options
31
+ */
32
+ constructor(options = {}) {
33
+ this.options = {
34
+ model: options.model || "claude-sonnet-4-20250514",
35
+ maxTurns: options.maxTurns || 10,
36
+ };
37
+ }
38
+ /**
39
+ * Load a navigator from a directory
40
+ *
41
+ * Reads and validates config.json and CLAUDE.md (or custom instructions file).
42
+ * Verifies that the knowledge base directory exists.
43
+ * If .claude/plugins.json exists, initializes configured plugins.
44
+ *
45
+ * @param navigatorPath - Path to the navigator directory
46
+ * @returns Loaded navigator with config, system prompt, paths, and optional plugin manager
47
+ * @throws {Error} If directory doesn't exist, config is invalid, or required files are missing
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const adapter = new ClaudeAdapter();
52
+ * const navigator = await adapter.loadNavigator('./my-navigator');
53
+ * console.log(`Loaded: ${navigator.config.name}`);
54
+ * ```
55
+ */
56
+ async loadNavigator(navigatorPath) {
57
+ const configPath = path.join(navigatorPath, "config.json");
58
+ // Validate directory exists
59
+ if (!fs.existsSync(navigatorPath)) {
60
+ throw new Error(`Navigator directory not found: ${navigatorPath}\n` +
61
+ `Make sure the path is correct and the navigator exists.`);
62
+ }
63
+ // Verify it's a directory
64
+ const pathStats = fs.statSync(navigatorPath);
65
+ if (!pathStats.isDirectory()) {
66
+ throw new Error(`Path is not a directory: ${navigatorPath}\n` +
67
+ `Navigator path must point to a directory containing config.json`);
68
+ }
69
+ // Load and validate config.json
70
+ if (!fs.existsSync(configPath)) {
71
+ throw new Error(`config.json not found in ${navigatorPath}\n` +
72
+ `Expected file: ${configPath}\n` +
73
+ `Use 'autonav init' to create a new navigator with the required structure.`);
74
+ }
75
+ const configContent = fs.readFileSync(configPath, "utf-8");
76
+ let config;
77
+ try {
78
+ const configJson = JSON.parse(configContent);
79
+ config = NavigatorConfigSchema.parse(configJson);
80
+ }
81
+ catch (error) {
82
+ throw new Error(`Invalid config.json in ${navigatorPath}:\n` +
83
+ `${error instanceof Error ? error.message : String(error)}\n\n` +
84
+ `Config file must match the NavigatorConfig schema.`);
85
+ }
86
+ // Load instructions file (CLAUDE.md or custom)
87
+ const instructionsFile = config.instructionsPath || "CLAUDE.md";
88
+ const actualInstructionsPath = path.join(navigatorPath, instructionsFile);
89
+ if (!fs.existsSync(actualInstructionsPath)) {
90
+ throw new Error(`Instructions file not found: ${instructionsFile}\n` +
91
+ `Expected path: ${actualInstructionsPath}\n` +
92
+ `Create a ${instructionsFile} file with the navigator's system prompt.`);
93
+ }
94
+ const systemPrompt = fs.readFileSync(actualInstructionsPath, "utf-8");
95
+ // Validate knowledge base exists
96
+ const knowledgeBasePath = path.join(navigatorPath, config.knowledgeBase);
97
+ if (!fs.existsSync(knowledgeBasePath)) {
98
+ throw new Error(`Knowledge base directory not found: ${config.knowledgeBase}\n` +
99
+ `Expected path: ${knowledgeBasePath}\n` +
100
+ `Create the directory and add documentation files for the navigator to search.`);
101
+ }
102
+ // Verify knowledge base is a directory
103
+ const kbStats = fs.statSync(knowledgeBasePath);
104
+ if (!kbStats.isDirectory()) {
105
+ throw new Error(`Knowledge base path is not a directory: ${config.knowledgeBase}\n` +
106
+ `The knowledge base must be a directory containing documentation files.`);
107
+ }
108
+ // Load and initialize plugins if .claude/plugins.json exists
109
+ let pluginManager;
110
+ const pluginsConfigPath = path.join(navigatorPath, ".claude", "plugins.json");
111
+ if (fs.existsSync(pluginsConfigPath)) {
112
+ try {
113
+ const pluginsConfigContent = fs.readFileSync(pluginsConfigPath, "utf-8");
114
+ const pluginsConfig = PluginConfigFileSchema.parse(JSON.parse(pluginsConfigContent));
115
+ // Create plugin manager
116
+ pluginManager = createPluginManager(pluginsConfigPath);
117
+ // Actually initialize the plugins
118
+ await pluginManager.loadPlugins(pluginsConfig);
119
+ }
120
+ catch (error) {
121
+ // Sanitize error to prevent credential leakage in logs
122
+ const safeMessage = sanitizeError(error instanceof Error ? error.message : String(error));
123
+ console.warn(`⚠️ Failed to load plugins: ${safeMessage}`);
124
+ console.warn(" Continuing without plugins...");
125
+ // Continue without plugins (fail-safe)
126
+ pluginManager = undefined;
127
+ }
128
+ }
129
+ return {
130
+ config,
131
+ systemPrompt,
132
+ navigatorPath,
133
+ knowledgeBasePath,
134
+ pluginManager,
135
+ pluginsConfigPath,
136
+ };
137
+ }
138
+ /**
139
+ * Execute a query using Claude Agent SDK
140
+ *
141
+ * Sends the question to Claude with the navigator's system prompt,
142
+ * handles tool use via the built-in agentic loop, parses the response,
143
+ * and validates it against the knowledge base.
144
+ *
145
+ * @param navigator - Loaded navigator to query
146
+ * @param question - Question to ask
147
+ * @param options - Query options (enableSelfConfig, maxTurns)
148
+ * @returns Validated navigator response with answer and sources
149
+ * @throws {Error} If API call fails, response parsing fails, or validation fails
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const response = await adapter.query(navigator, 'How do I deploy?');
154
+ * console.log(response.answer);
155
+ * console.log(`Confidence: ${response.confidence}`);
156
+ * console.log(`Sources: ${response.sources.map(s => s.filePath).join(', ')}`);
157
+ * ```
158
+ */
159
+ async query(navigator, question, options = {}) {
160
+ const { enableSelfConfig = true, maxTurns = this.options.maxTurns, } = options;
161
+ // Validate inputs
162
+ if (!question || question.trim().length === 0) {
163
+ throw new Error('Question cannot be empty');
164
+ }
165
+ // Create the prompt
166
+ const prompt = createAnswerQuestionPrompt(question);
167
+ // Build system prompt with self-config rules if enabled
168
+ let systemPrompt = navigator.systemPrompt;
169
+ if (enableSelfConfig && !systemPrompt.includes("Self-Configuration Capabilities")) {
170
+ systemPrompt = `${navigator.systemPrompt}\n\n${SELF_CONFIG_RULES}`;
171
+ }
172
+ // Set up MCP servers
173
+ const mcpServers = {};
174
+ // Always add response tools for structured output
175
+ mcpServers["autonav-response"] = createResponseMcpServer();
176
+ // Add self-config tools if enabled
177
+ if (enableSelfConfig && navigator.pluginsConfigPath) {
178
+ mcpServers["autonav-self-config"] = createSelfConfigMcpServer(navigator.pluginManager, navigator.pluginsConfigPath);
179
+ }
180
+ try {
181
+ // Execute query using Claude Agent SDK
182
+ // The SDK handles the agentic loop automatically
183
+ const queryIterator = query({
184
+ prompt,
185
+ options: {
186
+ model: this.options.model,
187
+ maxTurns,
188
+ systemPrompt,
189
+ cwd: navigator.navigatorPath,
190
+ mcpServers: Object.keys(mcpServers).length > 0 ? mcpServers : undefined,
191
+ // Don't load user/project settings - we control everything
192
+ settingSources: [],
193
+ // Allow the SDK to handle permissions
194
+ permissionMode: "bypassPermissions",
195
+ },
196
+ });
197
+ // Collect messages and find the result
198
+ let resultMessage;
199
+ let lastAssistantText = "";
200
+ let submitAnswerInput;
201
+ for await (const message of queryIterator) {
202
+ // Log tool usage for debugging
203
+ if (message.type === "assistant") {
204
+ const content = message.message.content;
205
+ for (const block of content) {
206
+ if (block.type === "tool_use") {
207
+ // Check if this is the submit_answer tool
208
+ if (block.name === SUBMIT_ANSWER_TOOL) {
209
+ // Extract the structured response from tool input
210
+ submitAnswerInput = block.input;
211
+ }
212
+ }
213
+ else if (block.type === "text") {
214
+ lastAssistantText = block.text;
215
+ }
216
+ }
217
+ }
218
+ // Capture the result message
219
+ if (message.type === "result") {
220
+ resultMessage = message;
221
+ }
222
+ }
223
+ // Check for errors
224
+ if (!resultMessage) {
225
+ throw new Error("No result message received from Claude Agent SDK");
226
+ }
227
+ if (resultMessage.subtype !== "success") {
228
+ const errorDetails = "errors" in resultMessage
229
+ ? resultMessage.errors.join(", ")
230
+ : "Unknown error";
231
+ throw new Error(`Query failed: ${resultMessage.subtype} - ${errorDetails}`);
232
+ }
233
+ // Build the navigator response
234
+ let navigatorResponse;
235
+ if (submitAnswerInput) {
236
+ // Use structured output from tool call (preferred)
237
+ navigatorResponse = NavigatorResponseSchema.parse({
238
+ query: question,
239
+ answer: submitAnswerInput.answer,
240
+ sources: submitAnswerInput.sources,
241
+ confidence: submitAnswerInput.confidence,
242
+ timestamp: new Date().toISOString(),
243
+ });
244
+ }
245
+ else {
246
+ // Fall back to parsing text response (legacy path)
247
+ const finalText = resultMessage.result || lastAssistantText;
248
+ if (!finalText) {
249
+ throw new Error("No response received from Claude. Expected submit_answer tool call or text response.");
250
+ }
251
+ // Parse the response from text
252
+ navigatorResponse = this.parseResponse(finalText, question);
253
+ }
254
+ // Validate the response
255
+ const validation = this.validate(navigatorResponse, navigator.knowledgeBasePath);
256
+ // Log warnings but don't throw
257
+ if (validation.warnings.length > 0) {
258
+ console.warn("⚠️ Validation warnings:");
259
+ for (const warning of validation.warnings) {
260
+ console.warn(` - ${warning}`);
261
+ }
262
+ }
263
+ // Throw on errors
264
+ if (!validation.valid) {
265
+ console.error("❌ Validation failed:");
266
+ for (const error of validation.errors) {
267
+ console.error(` - ${error.message}`);
268
+ }
269
+ throw new Error("Response validation failed. See errors above for details.");
270
+ }
271
+ return navigatorResponse;
272
+ }
273
+ catch (error) {
274
+ if (error instanceof Error) {
275
+ throw error;
276
+ }
277
+ throw new Error(`Failed to query Claude: ${error instanceof Error ? error.message : String(error)}`);
278
+ }
279
+ }
280
+ /**
281
+ * Parse Claude's response into a NavigatorResponse
282
+ *
283
+ * Extracts JSON from the response text (either from code blocks or raw JSON)
284
+ * and validates it against the NavigatorResponseSchema.
285
+ *
286
+ * @param rawResponse - Raw text response from Claude
287
+ * @param query - Original query (used to populate missing query field)
288
+ * @returns Parsed and validated NavigatorResponse
289
+ * @throws {Error} If JSON cannot be extracted or schema validation fails
290
+ *
291
+ * @internal
292
+ */
293
+ parseResponse(rawResponse, query) {
294
+ // Try to extract JSON from code blocks
295
+ const jsonMatch = rawResponse.match(/```json\s*([\s\S]*?)\s*```/);
296
+ let jsonText;
297
+ if (jsonMatch && jsonMatch[1]) {
298
+ jsonText = jsonMatch[1];
299
+ }
300
+ else {
301
+ // Try to find JSON object in the text
302
+ const objectMatch = rawResponse.match(/\{[\s\S]*\}/);
303
+ if (objectMatch && objectMatch[0]) {
304
+ jsonText = objectMatch[0];
305
+ }
306
+ else {
307
+ throw new Error("Could not find JSON in Claude's response. Response should contain a JSON object.");
308
+ }
309
+ }
310
+ try {
311
+ const parsed = JSON.parse(jsonText);
312
+ // Ensure query field is set
313
+ if (!parsed.query) {
314
+ parsed.query = query;
315
+ }
316
+ return NavigatorResponseSchema.parse(parsed);
317
+ }
318
+ catch (error) {
319
+ throw new Error(`Failed to parse response: ${error instanceof Error ? error.message : String(error)}\n\nRaw response:\n${rawResponse}`);
320
+ }
321
+ }
322
+ /**
323
+ * Validate a NavigatorResponse
324
+ *
325
+ * Runs comprehensive validation including:
326
+ * - Source file existence checks
327
+ * - Hallucination pattern detection
328
+ * - Confidence level validation
329
+ *
330
+ * @param response - Navigator response to validate
331
+ * @param knowledgeBasePath - Path to knowledge base directory
332
+ * @returns Validation result with errors and warnings
333
+ *
334
+ * @internal
335
+ */
336
+ validate(response, knowledgeBasePath) {
337
+ return validateResponse(response, knowledgeBasePath);
338
+ }
339
+ }
340
+ //# sourceMappingURL=claude-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-adapter.js","sourceRoot":"","sources":["../../src/adapter/claude-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Claude SDK Adapter
3
+ *
4
+ * Execution engine that bridges Claude API to Communication Layer protocol
5
+ */
6
+ export { ClaudeAdapter, type ClaudeAdapterOptions, type LoadedNavigator, type QueryOptions, } from "./claude-adapter.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Claude SDK Adapter
3
+ *
4
+ * Execution engine that bridges Claude API to Communication Layer protocol
5
+ */
6
+ export { ClaudeAdapter, } from "./claude-adapter.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,GAId,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Main autonav CLI dispatcher
4
+ *
5
+ * Routes commands to appropriate handlers:
6
+ * - autonav init -> nav-init.ts
7
+ * - autonav query -> nav-query.ts
8
+ * - autonav chat -> nav-chat.ts
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=autonav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autonav.d.ts","sourceRoot":"","sources":["../../src/cli/autonav.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}