@autonav/core 1.6.0 → 1.7.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 (257) hide show
  1. package/README.md +2 -2
  2. package/dist/adapter/index.d.ts +3 -3
  3. package/dist/adapter/index.d.ts.map +1 -1
  4. package/dist/adapter/index.js +3 -3
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/adapter/navigator-adapter.d.ts +196 -0
  7. package/dist/adapter/navigator-adapter.d.ts.map +1 -0
  8. package/dist/adapter/navigator-adapter.js +579 -0
  9. package/dist/adapter/navigator-adapter.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +2 -6
  11. package/dist/cli/autonav.d.ts.map +1 -1
  12. package/dist/cli/autonav.js +32 -53
  13. package/dist/cli/autonav.js.map +1 -1
  14. package/dist/cli/nav-chat.d.ts +2 -1
  15. package/dist/cli/nav-chat.d.ts.map +1 -1
  16. package/dist/cli/nav-chat.js +32 -3
  17. package/dist/cli/nav-chat.js.map +1 -1
  18. package/dist/cli/nav-init.d.ts +2 -1
  19. package/dist/cli/nav-init.d.ts.map +1 -1
  20. package/dist/cli/nav-init.js +12 -4
  21. package/dist/cli/nav-init.js.map +1 -1
  22. package/dist/cli/nav-install.d.ts +2 -1
  23. package/dist/cli/nav-install.d.ts.map +1 -1
  24. package/dist/cli/nav-install.js +4 -2
  25. package/dist/cli/nav-install.js.map +1 -1
  26. package/dist/cli/nav-memento.d.ts +3 -2
  27. package/dist/cli/nav-memento.d.ts.map +1 -1
  28. package/dist/cli/nav-memento.js +12 -6
  29. package/dist/cli/nav-memento.js.map +1 -1
  30. package/dist/cli/nav-mend.d.ts +2 -1
  31. package/dist/cli/nav-mend.d.ts.map +1 -1
  32. package/dist/cli/nav-mend.js +4 -1
  33. package/dist/cli/nav-mend.js.map +1 -1
  34. package/dist/cli/nav-migrate.d.ts +2 -1
  35. package/dist/cli/nav-migrate.d.ts.map +1 -1
  36. package/dist/cli/nav-migrate.js +2 -6
  37. package/dist/cli/nav-migrate.js.map +1 -1
  38. package/dist/cli/nav-query.d.ts +2 -1
  39. package/dist/cli/nav-query.d.ts.map +1 -1
  40. package/dist/cli/nav-query.js +12 -6
  41. package/dist/cli/nav-query.js.map +1 -1
  42. package/dist/cli/nav-standup.d.ts +18 -0
  43. package/dist/cli/nav-standup.d.ts.map +1 -0
  44. package/dist/cli/nav-standup.js +151 -0
  45. package/dist/cli/nav-standup.js.map +1 -0
  46. package/dist/cli/nav-uninstall.d.ts +2 -1
  47. package/dist/cli/nav-uninstall.d.ts.map +1 -1
  48. package/dist/cli/nav-uninstall.js +4 -2
  49. package/dist/cli/nav-uninstall.js.map +1 -1
  50. package/dist/cli/nav-update.d.ts +2 -1
  51. package/dist/cli/nav-update.d.ts.map +1 -1
  52. package/dist/cli/nav-update.js +11 -6
  53. package/dist/cli/nav-update.js.map +1 -1
  54. package/dist/conversation/App.d.ts +9 -2
  55. package/dist/conversation/App.d.ts.map +1 -1
  56. package/dist/conversation/App.js +304 -111
  57. package/dist/conversation/App.js.map +1 -1
  58. package/dist/conversation/index.d.ts +5 -0
  59. package/dist/conversation/index.d.ts.map +1 -1
  60. package/dist/conversation/index.js +17 -2
  61. package/dist/conversation/index.js.map +1 -1
  62. package/dist/harness/chibi-harness.d.ts +36 -0
  63. package/dist/harness/chibi-harness.d.ts.map +1 -0
  64. package/dist/harness/chibi-harness.js +383 -0
  65. package/dist/harness/chibi-harness.js.map +1 -0
  66. package/dist/harness/chibi-plugins/get_plugin_config +64 -0
  67. package/dist/harness/chibi-plugins/query_navigator +114 -0
  68. package/dist/harness/chibi-plugins/submit_answer +38 -0
  69. package/dist/harness/chibi-plugins/update_plugin_config +91 -0
  70. package/dist/harness/claude-code-harness.d.ts +24 -0
  71. package/dist/harness/claude-code-harness.d.ts.map +1 -0
  72. package/dist/harness/claude-code-harness.js +242 -0
  73. package/dist/harness/claude-code-harness.js.map +1 -0
  74. package/dist/harness/ephemeral-home.d.ts +34 -0
  75. package/dist/harness/ephemeral-home.d.ts.map +1 -0
  76. package/dist/harness/ephemeral-home.js +56 -0
  77. package/dist/harness/ephemeral-home.js.map +1 -0
  78. package/dist/harness/factory.d.ts +47 -0
  79. package/dist/harness/factory.d.ts.map +1 -0
  80. package/dist/harness/factory.js +84 -0
  81. package/dist/harness/factory.js.map +1 -0
  82. package/dist/harness/helpers.d.ts +58 -0
  83. package/dist/harness/helpers.d.ts.map +1 -0
  84. package/dist/harness/helpers.js +78 -0
  85. package/dist/harness/helpers.js.map +1 -0
  86. package/dist/harness/index.d.ts +14 -0
  87. package/dist/harness/index.d.ts.map +1 -0
  88. package/dist/harness/index.js +13 -0
  89. package/dist/harness/index.js.map +1 -0
  90. package/dist/harness/opencode-harness.d.ts +79 -0
  91. package/dist/harness/opencode-harness.d.ts.map +1 -0
  92. package/dist/harness/opencode-harness.js +537 -0
  93. package/dist/harness/opencode-harness.js.map +1 -0
  94. package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
  95. package/dist/harness/opencode-tools/query_navigator.ts +126 -0
  96. package/dist/harness/opencode-tools/submit_answer.ts +40 -0
  97. package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
  98. package/dist/harness/sandbox.d.ts +59 -0
  99. package/dist/harness/sandbox.d.ts.map +1 -0
  100. package/dist/harness/sandbox.js +152 -0
  101. package/dist/harness/sandbox.js.map +1 -0
  102. package/dist/harness/tool-server.d.ts +50 -0
  103. package/dist/harness/tool-server.d.ts.map +1 -0
  104. package/dist/harness/tool-server.js +27 -0
  105. package/dist/harness/tool-server.js.map +1 -0
  106. package/dist/harness/types.d.ts +168 -0
  107. package/dist/harness/types.d.ts.map +1 -0
  108. package/dist/harness/types.js +12 -0
  109. package/dist/harness/types.js.map +1 -0
  110. package/dist/index.d.ts +3 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +4 -2
  113. package/dist/index.js.map +1 -1
  114. package/dist/interview/App.d.ts +4 -2
  115. package/dist/interview/App.d.ts.map +1 -1
  116. package/dist/interview/App.js +36 -56
  117. package/dist/interview/App.js.map +1 -1
  118. package/dist/interview/index.d.ts +3 -0
  119. package/dist/interview/index.d.ts.map +1 -1
  120. package/dist/interview/index.js +1 -0
  121. package/dist/interview/index.js.map +1 -1
  122. package/dist/interview/prompts.d.ts +3 -1
  123. package/dist/interview/prompts.d.ts.map +1 -1
  124. package/dist/interview/prompts.js +5 -1
  125. package/dist/interview/prompts.js.map +1 -1
  126. package/dist/interview/ui/ChatBanner.d.ts +17 -0
  127. package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
  128. package/dist/interview/ui/ChatBanner.js +30 -0
  129. package/dist/interview/ui/ChatBanner.js.map +1 -0
  130. package/dist/interview/ui/ChatInput.d.ts +36 -0
  131. package/dist/interview/ui/ChatInput.d.ts.map +1 -0
  132. package/dist/interview/ui/ChatInput.js +304 -0
  133. package/dist/interview/ui/ChatInput.js.map +1 -0
  134. package/dist/interview/ui/MarkdownText.d.ts +13 -0
  135. package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
  136. package/dist/interview/ui/MarkdownText.js +107 -0
  137. package/dist/interview/ui/MarkdownText.js.map +1 -0
  138. package/dist/interview/ui/index.d.ts +3 -0
  139. package/dist/interview/ui/index.d.ts.map +1 -1
  140. package/dist/interview/ui/index.js +3 -0
  141. package/dist/interview/ui/index.js.map +1 -1
  142. package/dist/memento/implementer-agent.d.ts +31 -0
  143. package/dist/memento/implementer-agent.d.ts.map +1 -0
  144. package/dist/memento/implementer-agent.js +95 -0
  145. package/dist/memento/implementer-agent.js.map +1 -0
  146. package/dist/memento/index.d.ts +6 -5
  147. package/dist/memento/index.d.ts.map +1 -1
  148. package/dist/memento/index.js +7 -5
  149. package/dist/memento/index.js.map +1 -1
  150. package/dist/memento/loop.d.ts +6 -5
  151. package/dist/memento/loop.d.ts.map +1 -1
  152. package/dist/memento/loop.js +872 -180
  153. package/dist/memento/loop.js.map +1 -1
  154. package/dist/memento/matrix-animation.d.ts +26 -0
  155. package/dist/memento/matrix-animation.d.ts.map +1 -1
  156. package/dist/memento/matrix-animation.js +93 -18
  157. package/dist/memento/matrix-animation.js.map +1 -1
  158. package/dist/memento/nav-protocol.d.ts +2 -2
  159. package/dist/memento/nav-protocol.d.ts.map +1 -1
  160. package/dist/memento/nav-protocol.js +39 -43
  161. package/dist/memento/nav-protocol.js.map +1 -1
  162. package/dist/memento/prompts.d.ts +21 -8
  163. package/dist/memento/prompts.d.ts.map +1 -1
  164. package/dist/memento/prompts.js +79 -39
  165. package/dist/memento/prompts.js.map +1 -1
  166. package/dist/memento/rate-limit.d.ts +85 -0
  167. package/dist/memento/rate-limit.d.ts.map +1 -0
  168. package/dist/memento/rate-limit.js +221 -0
  169. package/dist/memento/rate-limit.js.map +1 -0
  170. package/dist/memento/types.d.ts +6 -6
  171. package/dist/memento/types.d.ts.map +1 -1
  172. package/dist/memento/types.js +3 -3
  173. package/dist/memento/worker-agent.d.ts +4 -1
  174. package/dist/memento/worker-agent.d.ts.map +1 -1
  175. package/dist/memento/worker-agent.js +38 -54
  176. package/dist/memento/worker-agent.js.map +1 -1
  177. package/dist/registry.d.ts +35 -0
  178. package/dist/registry.d.ts.map +1 -0
  179. package/dist/registry.js +87 -0
  180. package/dist/registry.js.map +1 -0
  181. package/dist/repo-analyzer/index.d.ts +2 -1
  182. package/dist/repo-analyzer/index.d.ts.map +1 -1
  183. package/dist/repo-analyzer/index.js +6 -17
  184. package/dist/repo-analyzer/index.js.map +1 -1
  185. package/dist/skill-generator/index.d.ts +142 -0
  186. package/dist/skill-generator/index.d.ts.map +1 -0
  187. package/dist/skill-generator/index.js +510 -0
  188. package/dist/skill-generator/index.js.map +1 -0
  189. package/dist/standup/config.d.ts +19 -0
  190. package/dist/standup/config.d.ts.map +1 -0
  191. package/dist/standup/config.js +42 -0
  192. package/dist/standup/config.js.map +1 -0
  193. package/dist/standup/index.d.ts +24 -0
  194. package/dist/standup/index.d.ts.map +1 -0
  195. package/dist/standup/index.js +29 -0
  196. package/dist/standup/index.js.map +1 -0
  197. package/dist/standup/loop.d.ts +36 -0
  198. package/dist/standup/loop.d.ts.map +1 -0
  199. package/dist/standup/loop.js +508 -0
  200. package/dist/standup/loop.js.map +1 -0
  201. package/dist/standup/prompts.d.ts +62 -0
  202. package/dist/standup/prompts.d.ts.map +1 -0
  203. package/dist/standup/prompts.js +211 -0
  204. package/dist/standup/prompts.js.map +1 -0
  205. package/dist/standup/standup-protocol.d.ts +33 -0
  206. package/dist/standup/standup-protocol.d.ts.map +1 -0
  207. package/dist/standup/standup-protocol.js +189 -0
  208. package/dist/standup/standup-protocol.js.map +1 -0
  209. package/dist/standup/types.d.ts +185 -0
  210. package/dist/standup/types.d.ts.map +1 -0
  211. package/dist/standup/types.js +67 -0
  212. package/dist/standup/types.js.map +1 -0
  213. package/dist/templates/.gitignore.template +26 -0
  214. package/dist/templates/CLAUDE-pack.md.template +114 -0
  215. package/dist/templates/CLAUDE.md.template +153 -0
  216. package/dist/templates/README.md.template +174 -0
  217. package/dist/templates/config-pack.json.template +16 -0
  218. package/dist/templates/config.json.template +11 -0
  219. package/dist/templates/index.d.ts +22 -0
  220. package/dist/templates/index.d.ts.map +1 -0
  221. package/dist/templates/index.js +32 -0
  222. package/dist/templates/index.js.map +1 -0
  223. package/dist/templates/plugins.json.template +33 -0
  224. package/dist/templates/system-configuration.md.template +70 -0
  225. package/dist/tools/cross-nav.d.ts +21 -0
  226. package/dist/tools/cross-nav.d.ts.map +1 -0
  227. package/dist/tools/cross-nav.js +93 -0
  228. package/dist/tools/cross-nav.js.map +1 -0
  229. package/dist/tools/index.d.ts +1 -0
  230. package/dist/tools/index.d.ts.map +1 -1
  231. package/dist/tools/index.js +1 -0
  232. package/dist/tools/index.js.map +1 -1
  233. package/dist/tools/related-navs-config.d.ts +15 -0
  234. package/dist/tools/related-navs-config.d.ts.map +1 -0
  235. package/dist/tools/related-navs-config.js +132 -0
  236. package/dist/tools/related-navs-config.js.map +1 -0
  237. package/dist/tools/related-navs.d.ts +23 -0
  238. package/dist/tools/related-navs.d.ts.map +1 -0
  239. package/dist/tools/related-navs.js +107 -0
  240. package/dist/tools/related-navs.js.map +1 -0
  241. package/dist/tools/response.d.ts +3 -2
  242. package/dist/tools/response.d.ts.map +1 -1
  243. package/dist/tools/response.js +7 -11
  244. package/dist/tools/response.js.map +1 -1
  245. package/dist/tools/self-config.d.ts +2 -1
  246. package/dist/tools/self-config.d.ts.map +1 -1
  247. package/dist/tools/self-config.js +5 -9
  248. package/dist/tools/self-config.js.map +1 -1
  249. package/package.json +4 -1
  250. package/dist/memento/state.d.ts +0 -56
  251. package/dist/memento/state.d.ts.map +0 -1
  252. package/dist/memento/state.js +0 -156
  253. package/dist/memento/state.js.map +0 -1
  254. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts +0 -18
  255. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts.map +0 -1
  256. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js +0 -207
  257. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js.map +0 -1
@@ -0,0 +1,510 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skill-generator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Standup Config Utilities
3
+ *
4
+ * Global config directory resolution and standup directory creation.
5
+ * Establishes a global autonav config pattern reusable by future commands.
6
+ */
7
+ /**
8
+ * Resolve the global autonav config directory.
9
+ *
10
+ * Priority: explicit override > AUTONAV_CONFIG_DIR env var > ~/.config/autonav/
11
+ */
12
+ export declare function resolveConfigDir(override?: string): string;
13
+ /**
14
+ * Create a timestamped standup directory with reports/ and sync/ subdirs.
15
+ *
16
+ * @returns The path to the created standup directory
17
+ */
18
+ export declare function createStandupDir(configDir: string): string;
19
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/standup/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAW1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAe1D"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Standup Config Utilities
3
+ *
4
+ * Global config directory resolution and standup directory creation.
5
+ * Establishes a global autonav config pattern reusable by future commands.
6
+ */
7
+ import * as fs from "node:fs";
8
+ import * as path from "node:path";
9
+ import * as os from "node:os";
10
+ /**
11
+ * Resolve the global autonav config directory.
12
+ *
13
+ * Priority: explicit override > AUTONAV_CONFIG_DIR env var > ~/.config/autonav/
14
+ */
15
+ export function resolveConfigDir(override) {
16
+ if (override) {
17
+ return path.resolve(override);
18
+ }
19
+ const envDir = process.env.AUTONAV_CONFIG_DIR;
20
+ if (envDir) {
21
+ return path.resolve(envDir);
22
+ }
23
+ return path.join(os.homedir(), ".config", "autonav");
24
+ }
25
+ /**
26
+ * Create a timestamped standup directory with reports/ and sync/ subdirs.
27
+ *
28
+ * @returns The path to the created standup directory
29
+ */
30
+ export function createStandupDir(configDir) {
31
+ const standupsDir = path.join(configDir, "standups");
32
+ // ISO timestamp with colons replaced by hyphens for filesystem safety
33
+ const timestamp = new Date()
34
+ .toISOString()
35
+ .replace(/:/g, "-")
36
+ .replace(/\.\d{3}Z$/, "");
37
+ const standupDir = path.join(standupsDir, timestamp);
38
+ fs.mkdirSync(path.join(standupDir, "reports"), { recursive: true });
39
+ fs.mkdirSync(path.join(standupDir, "sync"), { recursive: true });
40
+ return standupDir;
41
+ }
42
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/standup/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAiB;IAChD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC9C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAErD,sEAAsE;IACtE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE;SACzB,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;SAClB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAErD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEjE,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Standup Module
3
+ *
4
+ * Multi-navigator stand-up mode that orchestrates parallel status reports
5
+ * and sequential blocker sync across multiple navigators.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { runStandup } from './standup';
10
+ *
11
+ * const result = await runStandup(
12
+ * ['./nav-a', './nav-b', './nav-c'],
13
+ * { verbose: true, model: 'claude-sonnet-4-5' }
14
+ * );
15
+ *
16
+ * console.log(`Standup output: ${result.standupDir}`);
17
+ * ```
18
+ */
19
+ export { type Blocker, type StatusReport, type BlockerResolution, type SyncResponse, type StandupOptions, type StandupResult, BlockerSchema, StatusReportSchema, BlockerResolutionSchema, SyncResponseSchema, } from "./types.js";
20
+ export { resolveConfigDir, createStandupDir } from "./config.js";
21
+ export { createReportProtocolTools, createSyncProtocolTools, SUBMIT_STATUS_REPORT_TOOL, SUBMIT_SYNC_RESPONSE_TOOL, } from "./standup-protocol.js";
22
+ export { buildReportSystemPrompt, buildReportPrompt, buildSyncSystemPrompt, buildSyncPrompt, type NavigatorIdentity, } from "./prompts.js";
23
+ export { runStandup, loadNavForStandup } from "./loop.js";
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/standup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Standup Module
3
+ *
4
+ * Multi-navigator stand-up mode that orchestrates parallel status reports
5
+ * and sequential blocker sync across multiple navigators.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { runStandup } from './standup';
10
+ *
11
+ * const result = await runStandup(
12
+ * ['./nav-a', './nav-b', './nav-c'],
13
+ * { verbose: true, model: 'claude-sonnet-4-5' }
14
+ * );
15
+ *
16
+ * console.log(`Standup output: ${result.standupDir}`);
17
+ * ```
18
+ */
19
+ // Types
20
+ export { BlockerSchema, StatusReportSchema, BlockerResolutionSchema, SyncResponseSchema, } from "./types.js";
21
+ // Config
22
+ export { resolveConfigDir, createStandupDir } from "./config.js";
23
+ // Protocol
24
+ export { createReportProtocolTools, createSyncProtocolTools, SUBMIT_STATUS_REPORT_TOOL, SUBMIT_SYNC_RESPONSE_TOOL, } from "./standup-protocol.js";
25
+ // Prompts
26
+ export { buildReportSystemPrompt, buildReportPrompt, buildSyncSystemPrompt, buildSyncPrompt, } from "./prompts.js";
27
+ // Main loop
28
+ export { runStandup, loadNavForStandup } from "./loop.js";
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/standup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,QAAQ;AACR,OAAO,EAOL,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,SAAS;AACT,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjE,WAAW;AACX,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAE/B,UAAU;AACV,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAEhB,MAAM,cAAc,CAAC;AAEtB,YAAY;AACZ,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC"}