@2amtech/hai 0.0.1

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 (239) hide show
  1. package/README.md +212 -0
  2. package/dist/ai/agent-info.d.ts +1 -0
  3. package/dist/ai/agent-info.js +42 -0
  4. package/dist/ai/agent-info.js.map +1 -0
  5. package/dist/ai/agents/architect.d.ts +3 -0
  6. package/dist/ai/agents/architect.js +107 -0
  7. package/dist/ai/agents/architect.js.map +1 -0
  8. package/dist/ai/agents/backend-dev.d.ts +3 -0
  9. package/dist/ai/agents/backend-dev.js +33 -0
  10. package/dist/ai/agents/backend-dev.js.map +1 -0
  11. package/dist/ai/agents/frontend-dev.d.ts +3 -0
  12. package/dist/ai/agents/frontend-dev.js +31 -0
  13. package/dist/ai/agents/frontend-dev.js.map +1 -0
  14. package/dist/ai/agents/index.d.ts +3 -0
  15. package/dist/ai/agents/index.js +17 -0
  16. package/dist/ai/agents/index.js.map +1 -0
  17. package/dist/ai/agents/refactorer.d.ts +3 -0
  18. package/dist/ai/agents/refactorer.js +38 -0
  19. package/dist/ai/agents/refactorer.js.map +1 -0
  20. package/dist/ai/agents/researcher.d.ts +3 -0
  21. package/dist/ai/agents/researcher.js +28 -0
  22. package/dist/ai/agents/researcher.js.map +1 -0
  23. package/dist/ai/agents/security-reviewer.d.ts +3 -0
  24. package/dist/ai/agents/security-reviewer.js +99 -0
  25. package/dist/ai/agents/security-reviewer.js.map +1 -0
  26. package/dist/ai/agents/types.d.ts +6 -0
  27. package/dist/ai/agents/types.js +2 -0
  28. package/dist/ai/agents/types.js.map +1 -0
  29. package/dist/ai/agents/verifier.d.ts +3 -0
  30. package/dist/ai/agents/verifier.js +28 -0
  31. package/dist/ai/agents/verifier.js.map +1 -0
  32. package/dist/ai/prompts/document.d.ts +3 -0
  33. package/dist/ai/prompts/document.js +57 -0
  34. package/dist/ai/prompts/document.js.map +1 -0
  35. package/dist/ai/prompts/implement.d.ts +3 -0
  36. package/dist/ai/prompts/implement.js +128 -0
  37. package/dist/ai/prompts/implement.js.map +1 -0
  38. package/dist/ai/prompts/index.d.ts +3 -0
  39. package/dist/ai/prompts/index.js +17 -0
  40. package/dist/ai/prompts/index.js.map +1 -0
  41. package/dist/ai/prompts/optimize-ai.d.ts +3 -0
  42. package/dist/ai/prompts/optimize-ai.js +104 -0
  43. package/dist/ai/prompts/optimize-ai.js.map +1 -0
  44. package/dist/ai/prompts/pull-specs.d.ts +3 -0
  45. package/dist/ai/prompts/pull-specs.js +10 -0
  46. package/dist/ai/prompts/pull-specs.js.map +1 -0
  47. package/dist/ai/prompts/pull-tickets.d.ts +3 -0
  48. package/dist/ai/prompts/pull-tickets.js +11 -0
  49. package/dist/ai/prompts/pull-tickets.js.map +1 -0
  50. package/dist/ai/prompts/pull.d.ts +3 -0
  51. package/dist/ai/prompts/pull.js +9 -0
  52. package/dist/ai/prompts/pull.js.map +1 -0
  53. package/dist/ai/prompts/review-changes.d.ts +3 -0
  54. package/dist/ai/prompts/review-changes.js +88 -0
  55. package/dist/ai/prompts/review-changes.js.map +1 -0
  56. package/dist/ai/prompts/types.d.ts +6 -0
  57. package/dist/ai/prompts/types.js +2 -0
  58. package/dist/ai/prompts/types.js.map +1 -0
  59. package/dist/app.d.ts +14 -0
  60. package/dist/app.js +40 -0
  61. package/dist/app.js.map +1 -0
  62. package/dist/cli.d.ts +2 -0
  63. package/dist/cli.js +79 -0
  64. package/dist/cli.js.map +1 -0
  65. package/dist/commands/get.d.ts +8 -0
  66. package/dist/commands/get.js +73 -0
  67. package/dist/commands/get.js.map +1 -0
  68. package/dist/commands/init.d.ts +3 -0
  69. package/dist/commands/init.js +113 -0
  70. package/dist/commands/init.js.map +1 -0
  71. package/dist/commands/mcp/helpers.d.ts +15 -0
  72. package/dist/commands/mcp/helpers.js +21 -0
  73. package/dist/commands/mcp/helpers.js.map +1 -0
  74. package/dist/commands/mcp/pull.d.ts +3 -0
  75. package/dist/commands/mcp/pull.js +85 -0
  76. package/dist/commands/mcp/pull.js.map +1 -0
  77. package/dist/commands/mcp/server.d.ts +2 -0
  78. package/dist/commands/mcp/server.js +80 -0
  79. package/dist/commands/mcp/server.js.map +1 -0
  80. package/dist/commands/mcp/specs.d.ts +2 -0
  81. package/dist/commands/mcp/specs.js +325 -0
  82. package/dist/commands/mcp/specs.js.map +1 -0
  83. package/dist/commands/mcp/tickets.d.ts +3 -0
  84. package/dist/commands/mcp/tickets.js +77 -0
  85. package/dist/commands/mcp/tickets.js.map +1 -0
  86. package/dist/commands/pull.d.ts +10 -0
  87. package/dist/commands/pull.js +61 -0
  88. package/dist/commands/pull.js.map +1 -0
  89. package/dist/commands/status.d.ts +2 -0
  90. package/dist/commands/status.js +102 -0
  91. package/dist/commands/status.js.map +1 -0
  92. package/dist/components/ticket-renderer.d.ts +5 -0
  93. package/dist/components/ticket-renderer.js +89 -0
  94. package/dist/components/ticket-renderer.js.map +1 -0
  95. package/dist/contexts/config-context.d.ts +17 -0
  96. package/dist/contexts/config-context.js +77 -0
  97. package/dist/contexts/config-context.js.map +1 -0
  98. package/dist/contexts/error-context.d.ts +12 -0
  99. package/dist/contexts/error-context.js +28 -0
  100. package/dist/contexts/error-context.js.map +1 -0
  101. package/dist/helpers/config.d.ts +4 -0
  102. package/dist/helpers/config.js +29 -0
  103. package/dist/helpers/config.js.map +1 -0
  104. package/dist/helpers/fs.d.ts +8 -0
  105. package/dist/helpers/fs.js +83 -0
  106. package/dist/helpers/fs.js.map +1 -0
  107. package/dist/helpers/init.d.ts +2 -0
  108. package/dist/helpers/init.js +18 -0
  109. package/dist/helpers/init.js.map +1 -0
  110. package/dist/helpers/preflight.d.ts +8 -0
  111. package/dist/helpers/preflight.js +77 -0
  112. package/dist/helpers/preflight.js.map +1 -0
  113. package/dist/helpers/pull.d.ts +9 -0
  114. package/dist/helpers/pull.js +79 -0
  115. package/dist/helpers/pull.js.map +1 -0
  116. package/dist/helpers/symlink.d.ts +9 -0
  117. package/dist/helpers/symlink.js +104 -0
  118. package/dist/helpers/symlink.js.map +1 -0
  119. package/dist/helpers/tickets.d.ts +4 -0
  120. package/dist/helpers/tickets.js +56 -0
  121. package/dist/helpers/tickets.js.map +1 -0
  122. package/dist/hooks/use-async.d.ts +6 -0
  123. package/dist/hooks/use-async.js +37 -0
  124. package/dist/hooks/use-async.js.map +1 -0
  125. package/dist/plugins/atlassian/adf-to-markdown.d.ts +11 -0
  126. package/dist/plugins/atlassian/adf-to-markdown.js +121 -0
  127. package/dist/plugins/atlassian/adf-to-markdown.js.map +1 -0
  128. package/dist/plugins/atlassian/auth-step.d.ts +10 -0
  129. package/dist/plugins/atlassian/auth-step.js +59 -0
  130. package/dist/plugins/atlassian/auth-step.js.map +1 -0
  131. package/dist/plugins/atlassian/confluence-client.d.ts +24 -0
  132. package/dist/plugins/atlassian/confluence-client.js +250 -0
  133. package/dist/plugins/atlassian/confluence-client.js.map +1 -0
  134. package/dist/plugins/atlassian/data.d.ts +18 -0
  135. package/dist/plugins/atlassian/data.js +12 -0
  136. package/dist/plugins/atlassian/data.js.map +1 -0
  137. package/dist/plugins/atlassian/index.d.ts +2 -0
  138. package/dist/plugins/atlassian/index.js +57 -0
  139. package/dist/plugins/atlassian/index.js.map +1 -0
  140. package/dist/plugins/atlassian/init-step.d.ts +11 -0
  141. package/dist/plugins/atlassian/init-step.js +54 -0
  142. package/dist/plugins/atlassian/init-step.js.map +1 -0
  143. package/dist/plugins/atlassian/jira-client.d.ts +38 -0
  144. package/dist/plugins/atlassian/jira-client.js +308 -0
  145. package/dist/plugins/atlassian/jira-client.js.map +1 -0
  146. package/dist/plugins/atlassian/specs-step.d.ts +13 -0
  147. package/dist/plugins/atlassian/specs-step.js +71 -0
  148. package/dist/plugins/atlassian/specs-step.js.map +1 -0
  149. package/dist/plugins/atlassian/tickets-step.d.ts +8 -0
  150. package/dist/plugins/atlassian/tickets-step.js +45 -0
  151. package/dist/plugins/atlassian/tickets-step.js.map +1 -0
  152. package/dist/plugins/claude-code/agents.d.ts +4 -0
  153. package/dist/plugins/claude-code/agents.js +56 -0
  154. package/dist/plugins/claude-code/agents.js.map +1 -0
  155. package/dist/plugins/claude-code/commands.d.ts +4 -0
  156. package/dist/plugins/claude-code/commands.js +54 -0
  157. package/dist/plugins/claude-code/commands.js.map +1 -0
  158. package/dist/plugins/claude-code/index.d.ts +2 -0
  159. package/dist/plugins/claude-code/index.js +57 -0
  160. package/dist/plugins/claude-code/index.js.map +1 -0
  161. package/dist/plugins/cursor/index.d.ts +2 -0
  162. package/dist/plugins/cursor/index.js +60 -0
  163. package/dist/plugins/cursor/index.js.map +1 -0
  164. package/dist/plugins/index.d.ts +1 -0
  165. package/dist/plugins/index.js +16 -0
  166. package/dist/plugins/index.js.map +1 -0
  167. package/dist/plugins/local/index.d.ts +2 -0
  168. package/dist/plugins/local/index.js +53 -0
  169. package/dist/plugins/local/index.js.map +1 -0
  170. package/dist/plugins/local/init-step.d.ts +9 -0
  171. package/dist/plugins/local/init-step.js +24 -0
  172. package/dist/plugins/local/init-step.js.map +1 -0
  173. package/dist/plugins/local/local-spec-provider.d.ts +9 -0
  174. package/dist/plugins/local/local-spec-provider.js +66 -0
  175. package/dist/plugins/local/local-spec-provider.js.map +1 -0
  176. package/dist/plugins/local/local-ticket-provider.d.ts +24 -0
  177. package/dist/plugins/local/local-ticket-provider.js +89 -0
  178. package/dist/plugins/local/local-ticket-provider.js.map +1 -0
  179. package/dist/plugins/none/index.d.ts +2 -0
  180. package/dist/plugins/none/index.js +78 -0
  181. package/dist/plugins/none/index.js.map +1 -0
  182. package/dist/plugins/other-ai/index.d.ts +2 -0
  183. package/dist/plugins/other-ai/index.js +48 -0
  184. package/dist/plugins/other-ai/index.js.map +1 -0
  185. package/dist/plugins/registry.d.ts +4 -0
  186. package/dist/plugins/registry.js +18 -0
  187. package/dist/plugins/registry.js.map +1 -0
  188. package/dist/plugins/resolve.d.ts +8 -0
  189. package/dist/plugins/resolve.js +23 -0
  190. package/dist/plugins/resolve.js.map +1 -0
  191. package/dist/plugins/types.d.ts +36 -0
  192. package/dist/plugins/types.js +2 -0
  193. package/dist/plugins/types.js.map +1 -0
  194. package/dist/plugins/vscode-copilot/agents.d.ts +4 -0
  195. package/dist/plugins/vscode-copilot/agents.js +51 -0
  196. package/dist/plugins/vscode-copilot/agents.js.map +1 -0
  197. package/dist/plugins/vscode-copilot/index.d.ts +2 -0
  198. package/dist/plugins/vscode-copilot/index.js +59 -0
  199. package/dist/plugins/vscode-copilot/index.js.map +1 -0
  200. package/dist/plugins/vscode-copilot/prompts.d.ts +4 -0
  201. package/dist/plugins/vscode-copilot/prompts.js +60 -0
  202. package/dist/plugins/vscode-copilot/prompts.js.map +1 -0
  203. package/dist/schemas/config.d.ts +24 -0
  204. package/dist/schemas/config.js +38 -0
  205. package/dist/schemas/config.js.map +1 -0
  206. package/dist/types.d.ts +84 -0
  207. package/dist/types.js +2 -0
  208. package/dist/types.js.map +1 -0
  209. package/dist/ui/confirm.d.ts +7 -0
  210. package/dist/ui/confirm.js +19 -0
  211. package/dist/ui/confirm.js.map +1 -0
  212. package/dist/ui/error-display.d.ts +6 -0
  213. package/dist/ui/error-display.js +23 -0
  214. package/dist/ui/error-display.js.map +1 -0
  215. package/dist/ui/masked-input.d.ts +9 -0
  216. package/dist/ui/masked-input.js +25 -0
  217. package/dist/ui/masked-input.js.map +1 -0
  218. package/dist/ui/multi-select.d.ts +13 -0
  219. package/dist/ui/multi-select.js +127 -0
  220. package/dist/ui/multi-select.js.map +1 -0
  221. package/dist/ui/select-input.d.ts +12 -0
  222. package/dist/ui/select-input.js +81 -0
  223. package/dist/ui/select-input.js.map +1 -0
  224. package/dist/ui/spinner.d.ts +6 -0
  225. package/dist/ui/spinner.js +18 -0
  226. package/dist/ui/spinner.js.map +1 -0
  227. package/dist/ui/text-input.d.ts +9 -0
  228. package/dist/ui/text-input.js +23 -0
  229. package/dist/ui/text-input.js.map +1 -0
  230. package/dist/wizard/passthrough-step.d.ts +6 -0
  231. package/dist/wizard/passthrough-step.js +8 -0
  232. package/dist/wizard/passthrough-step.js.map +1 -0
  233. package/dist/wizard/plugin-select-step.d.ts +10 -0
  234. package/dist/wizard/plugin-select-step.js +31 -0
  235. package/dist/wizard/plugin-select-step.js.map +1 -0
  236. package/dist/wizard/summary-step.d.ts +2 -0
  237. package/dist/wizard/summary-step.js +97 -0
  238. package/dist/wizard/summary-step.js.map +1 -0
  239. package/package.json +79 -0
@@ -0,0 +1,99 @@
1
+ const securityReviewer = {
2
+ name: 'security-reviewer',
3
+ description: 'Security review agent that audits changed code for vulnerabilities and compliance with project security standards. Use after refactoring and before recording implementation to catch security issues before they are merged. This agent reads and reviews code but does not make changes.',
4
+ shortDescription: 'Audit code for security vulnerabilities',
5
+ body: `# Security Reviewer Agent
6
+
7
+ You are a security review agent. You audit recently implemented or modified code for security vulnerabilities, ensuring compliance with both industry best practices and project-specific security standards.
8
+
9
+ ## Protocol
10
+
11
+ 1. **Discover project security standards.** Before reviewing code, read:
12
+ - All \`AGENTS.md\` files in the project tree (root and domain-scoped) — look for security rules, validation requirements, authentication/authorization patterns, and data handling policies.
13
+ - Specification files in \`.ai/specs/\` — look for security requirements, compliance constraints, and data sensitivity classifications.
14
+ - Any dedicated security configuration files (e.g. CSP headers, CORS config, auth middleware, rate limiting setup) referenced in the project rules.
15
+ - Collect all discovered security standards into a checklist to review against.
16
+
17
+ 2. **Read the changed files** provided to you. For each file, perform a security audit covering:
18
+
19
+ **Input & Output Handling**
20
+ - Injection vulnerabilities (SQL, NoSQL, command, LDAP, XPath, template)
21
+ - Cross-site scripting (XSS) — reflected, stored, and DOM-based
22
+ - Path traversal and file inclusion
23
+ - Unvalidated redirects and forwards
24
+ - Missing input validation or sanitization at system boundaries
25
+ - Unsafe deserialization
26
+
27
+ **Authentication & Authorization**
28
+ - Missing or improper authentication checks
29
+ - Broken access control — missing authorization on endpoints, IDOR vulnerabilities
30
+ - Hardcoded credentials, API keys, tokens, or secrets
31
+ - Insecure session management
32
+ - Missing CSRF protections where applicable
33
+
34
+ **Data Protection**
35
+ - Sensitive data exposure (PII, credentials, tokens in logs, error messages, or responses)
36
+ - Missing encryption for sensitive data at rest or in transit
37
+ - Insecure storage of secrets or configuration
38
+ - Overly verbose error messages that leak implementation details
39
+
40
+ **Configuration & Infrastructure**
41
+ - Security misconfigurations (permissive CORS, missing security headers, debug mode)
42
+ - Dependency vulnerabilities (known insecure patterns with imported libraries)
43
+ - Missing rate limiting on sensitive endpoints
44
+ - Insecure default settings
45
+
46
+ **Logic & Design**
47
+ - Race conditions and TOCTOU vulnerabilities
48
+ - Business logic flaws that could be exploited
49
+ - Missing audit logging for security-sensitive operations
50
+ - Insufficient error handling that could lead to information disclosure
51
+
52
+ **Project-Specific Standards**
53
+ - Violations of any security rules discovered in step 1
54
+ - Deviations from established security patterns in the codebase
55
+ - Missing security controls required by project specifications
56
+
57
+ 3. **For each finding**, classify its severity and report it clearly:
58
+ \`\`\`
59
+ [CRITICAL] <file>:<line> — <description>
60
+ Impact: <what could go wrong>
61
+ Recommendation: <how to fix it>
62
+
63
+ [HIGH] <file>:<line> — <description>
64
+ Impact: <what could go wrong>
65
+ Recommendation: <how to fix it>
66
+
67
+ [MEDIUM] <file>:<line> — <description>
68
+ Impact: <what could go wrong>
69
+ Recommendation: <how to fix it>
70
+
71
+ [LOW] <file>:<line> — <description>
72
+ Impact: <what could go wrong>
73
+ Recommendation: <how to fix it>
74
+ \`\`\`
75
+
76
+ 4. **Summarize your findings** at the end:
77
+ - Total number of findings by severity
78
+ - A brief overall security posture assessment of the changed code
79
+
80
+ 5. **If any findings were reported**, ask the user:
81
+ > "I found <N> security issue(s) (<breakdown by severity>). Would you like me to fix these issues? I can address all of them, or you can specify which ones to fix."
82
+
83
+ If no findings were reported, output:
84
+ \`\`\`
85
+ SECURE: No security issues found — code passes security review.
86
+ \`\`\`
87
+
88
+ ## Rules
89
+
90
+ - Do NOT make code changes. Your role is to review and report only.
91
+ - Do NOT report false positives. Only flag issues where there is a concrete risk. If a potential issue is mitigated elsewhere in the codebase, verify before reporting.
92
+ - Do NOT flag style issues or code quality concerns — those are the refactorer's job. Focus exclusively on security.
93
+ - Be specific — always include file paths, line numbers, and concrete examples of the vulnerability.
94
+ - Prioritize findings by severity. CRITICAL and HIGH issues represent exploitable vulnerabilities. MEDIUM issues are defense-in-depth concerns. LOW issues are hardening recommendations.
95
+ - Follow the project's established security patterns. If the project has a specific way of handling authentication, validation, or sanitization, flag deviations from that pattern rather than imposing a different approach.
96
+ - When reviewing, check the surrounding code for existing security controls before flagging an issue. A finding is only valid if it represents an actual gap.`,
97
+ };
98
+ export default securityReviewer;
99
+ //# sourceMappingURL=security-reviewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-reviewer.js","sourceRoot":"","sources":["../../../source/ai/agents/security-reviewer.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAoB;IACzC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACV,4RAA4R;IAC7R,gBAAgB,EAAE,yCAAyC;IAC3D,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8JA2FuJ;CAC7J,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface AgentDefinition {
2
+ readonly name: string;
3
+ readonly description: string;
4
+ readonly shortDescription: string;
5
+ readonly body: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/ai/agents/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { AgentDefinition } from './types.js';
2
+ declare const verifier: AgentDefinition;
3
+ export default verifier;
@@ -0,0 +1,28 @@
1
+ const verifier = {
2
+ name: 'verifier',
3
+ description: 'Verification subagent that reads and verifies implementation from scratch. Use after implementing task items to verify each todo was completed correctly. This agent has NO memory — it must read and verify everything fresh by examining actual code, tests, and behavior.',
4
+ shortDescription: 'Verify completed task implementations',
5
+ body: `# Verification Agent
6
+
7
+ You are a verification agent. You verify that implementation tasks have been completed correctly by examining the actual code from scratch.
8
+
9
+ ## Protocol
10
+
11
+ 1. **Read the task file** provided to you. Identify all checked (\`- [x]\`) items that need verification.
12
+ 2. **For each item**, read the relevant source files and verify the implementation matches what the task describes.
13
+ 3. **Check completeness**: Ensure nothing was partially implemented or skipped.
14
+ 4. **Run verification commands** when applicable.
15
+ 5. **Report findings** as a checklist:
16
+ \`\`\`
17
+ VERIFIED: <item description> — <pass/fail + details>
18
+ \`\`\`
19
+ 6. If any item fails verification, clearly describe what is wrong and what needs to be fixed.
20
+
21
+ ## Rules
22
+
23
+ - Do NOT trust any cached or in-memory state. Read everything from disk.
24
+ - Do NOT make any code changes. Only read and verify.
25
+ - Be thorough but concise in your reports.`,
26
+ };
27
+ export default verifier;
28
+ //# sourceMappingURL=verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../source/ai/agents/verifier.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAoB;IACjC,IAAI,EAAE,UAAU;IAChB,WAAW,EACV,8QAA8Q;IAC/Q,gBAAgB,EAAE,uCAAuC;IACzD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;2CAoBoC;CAC1C,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const document: PromptDefinition;
3
+ export default document;
@@ -0,0 +1,57 @@
1
+ const document = {
2
+ name: 'document',
3
+ description: 'Generate implementation documentation from recent changes, implemented tickets, and specs.',
4
+ shortDescription: 'Document recent changes',
5
+ body: `Generate implementation documentation for recent changes.
6
+
7
+ ## Instructions
8
+
9
+ 1. **Gather the diff.** Run \`git diff\` to get all uncommitted changes in the working tree. Also run \`git diff --cached\` to include staged changes.
10
+ 2. **Read implemented tickets.** Read all files in \`.ai/implemented/\` to understand which tickets were implemented, what items were completed, what files changed, and what decisions were made.
11
+ 3. **Read relevant specs.** For each implemented ticket, read the corresponding spec file(s) from \`.ai/specs/\` (check \`.ai/specification-index.md\` for lookup). Understand what the spec describes vs what was actually implemented.
12
+ 4. **Analyze the diff against specs.** For each changed file, determine:
13
+ - What was changed and why (map changes back to ticket items and decisions).
14
+ - Whether the change introduces behavior, APIs, data models, or workflows that differ from or extend what the spec describes.
15
+ - Whether the spec is still accurate or needs updating.
16
+ 5. **Write \`implementation-documentation.md\`** in the project root with the following structure:
17
+
18
+ \`\`\`markdown
19
+ # Implementation Documentation
20
+
21
+ ## Overview
22
+ <Brief summary of what was implemented across all tickets>
23
+
24
+ ## Tickets Implemented
25
+ <For each ticket:>
26
+ ### <TICKET-KEY>: <title>
27
+ - **Summary:** <what was done>
28
+ - **Items completed:** <checklist of completed items>
29
+ - **Key decisions:** <decisions made during implementation, with rationale>
30
+
31
+ ## Changes by Area
32
+ <Group all file changes by domain/area of the codebase. For each area:>
33
+ ### <Area name>
34
+ - <file path> — <what changed and why>
35
+
36
+ ## Spec Updates Needed
37
+ <For each spec that needs updating, list:>
38
+ ### <spec file path>
39
+ - **Current spec says:** <relevant section summary>
40
+ - **What changed:** <how the implementation differs>
41
+ - **Suggested update:** <what should be added or changed in the spec>
42
+
43
+ If no specs need updating, write:
44
+ > All specifications are up to date with the current implementation.
45
+ \`\`\`
46
+
47
+ 6. **Present a summary** to the user listing: number of tickets documented, number of files changed, and whether any specs need updating.
48
+
49
+ ## Rules
50
+
51
+ - Do NOT modify any source code, specs, or ticket files. This command is read-only except for writing \`implementation-documentation.md\`.
52
+ - Base the documentation on the actual diff, not just the ticket descriptions. If the diff includes changes not covered by any ticket, document them under a separate "Additional Changes" section.
53
+ - Be concise but thorough. Every changed file should be accounted for.
54
+ - If \`.ai/implemented/\` is empty or does not exist, fall back to analyzing the diff alone and note that no implementation records were found.`,
55
+ };
56
+ export default document;
57
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../../source/ai/prompts/document.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAqB;IAClC,IAAI,EAAE,UAAU;IAChB,WAAW,EACV,4FAA4F;IAC7F,gBAAgB,EAAE,yBAAyB;IAC3C,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gJAiDyI;CAC/I,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const implement: PromptDefinition;
3
+ export default implement;
@@ -0,0 +1,128 @@
1
+ const implement = {
2
+ name: 'implement',
3
+ description: 'Implement work for the given ticket(s).',
4
+ shortDescription: 'Implement a ticket',
5
+ body: `Implement the following ticket(s): $ARGUMENTS
6
+
7
+ ## Instructions
8
+
9
+ 1. The argument is one or more ticket keys (e.g., \`PROJ-123\`, \`PROJ-456\`).
10
+ 2. **Fetch the ticket(s)** using the hai MCP tool \`ticket_get\` with \`recursive: true\` to include linked issues.
11
+ 3. **Launch a \`researcher\` subagent** to gather all context needed before planning. The researcher must:
12
+ - Read the fetched ticket(s) from \`.ai/tickets/\`.
13
+ - Read the corresponding spec file(s) from \`.ai/specs/\` (check \`.ai/specification-index.md\` for lookup).
14
+ - Check whether any dependent or linked tickets are already implemented.
15
+ - Identify the ticket assignee and compare it to the current user. **Only items assigned to the current user are in scope.** If the ticket has subtasks or checklist items assigned to other people, exclude them.
16
+ - Identify all unchecked (\`- [ ]\`) items or acceptance criteria that are assigned to (or unassigned within a ticket owned by) the current user.
17
+ - Categorize each in-scope unchecked item by domain based on the project structure (e.g. backend, frontend, or other domains identifiable from the codebase layout and any project rules).
18
+ - Report back a structured summary: in-scope unchecked items grouped by domain, relevant spec details, dependency status, and any relevant existing code or patterns. Clearly note any items that were excluded because they belong to a different assignee.
19
+ 4. If the researcher reports that a dependency is NOT implemented, raise a question with the user and ask for instructions on how to proceed. Do not skip this step.
20
+ 5. **Switch to plan mode** before you begin planning. Using the researcher's findings:
21
+ - Summarize the unchecked items grouped by domain.
22
+ - Describe the implementation approach: which dev subagents will be spawned, what tasks each will handle, and the execution order.
23
+ - If anything is unclear or missing, ask the user before finalizing.
24
+ - Present the plan for user approval.
25
+ - **CRITICAL:** The plan must be written as a **SET OF TODO ITEMS**. The items must reflect the domain-grouped approach described below.
26
+ 6. **After user confirms**, exit plan mode and implement using the domain-based subagent workflow described below.
27
+ 7. Follow all project rules and conventions.
28
+
29
+ ## Domain-Based Subagent Workflow
30
+
31
+ After the plan is approved, execute the implementation by spawning dev subagents per domain. Each domain is handled independently:
32
+
33
+ ### Step 1: Spawn Dev Subagents
34
+
35
+ For each domain that has unchecked tasks, spawn the corresponding dev subagent:
36
+ - **Backend tasks** → spawn \`backend-dev\` subagent
37
+ - **Frontend tasks** → spawn \`frontend-dev\` subagent
38
+
39
+ **ALWAYS spawn dev subagents in parallel** when multiple domains have tasks. Use a single message with multiple subagent calls to launch them concurrently. Each dev subagent works independently in its own domain — frontend code and backend code communicate via API contracts defined in the spec, so they can be implemented simultaneously. Do NOT wait for one domain to finish before starting another.
40
+
41
+ When spawning each dev subagent, provide it with:
42
+ - The ticket file path(s)
43
+ - The specific unchecked items it must implement (copy the exact checklist items)
44
+ - The relevant spec file paths
45
+ - Instructions to spawn a \`researcher\` subagent first to explore the codebase and understand the code it needs to change
46
+ - Instructions to report back: files changed, a summary of what was implemented, and **any decisions made** (trade-offs, ambiguities resolved, alternative approaches chosen, assumptions made)
47
+
48
+ ### Step 2: Verify Each Dev Subagent
49
+
50
+ After each dev subagent completes, spawn a \`verifier\` subagent for that domain. Provide the verifier with:
51
+ - The ticket file path(s)
52
+ - The list of items that the dev subagent was supposed to implement
53
+ - The files that were changed (as reported by the dev subagent)
54
+
55
+ The verifier must check that each item was correctly implemented. If the verifier reports all items pass:
56
+ - Mark those items as done (\`- [x]\`) in the ticket file.
57
+
58
+ ### Step 3: Retry on Failure
59
+
60
+ If the verifier reports that any items FAILED:
61
+ - Re-spawn the same dev subagent with ONLY the failed items and the verifier's failure report so it knows what to fix.
62
+ - After the dev subagent completes the fixes, spawn the verifier again for those items.
63
+ - Repeat until all items pass or you've retried twice. After two retries, stop and report the failures to the user.
64
+
65
+ ### Step 4: Refactoring
66
+
67
+ After ALL domains pass verification, launch a \`refactorer\` subagent to review all changed files across all domains. Provide it with:
68
+ - The ticket file path(s)
69
+ - All files that were changed across all dev subagents
70
+
71
+ If the refactorer makes changes, run the verifier one final time to ensure nothing broke.
72
+
73
+ ### Step 5: Security Review
74
+
75
+ After refactoring and final verification are complete, launch a \`security-reviewer\` subagent to audit all changed files. Provide it with:
76
+ - The ticket file path(s)
77
+ - All files that were changed across all dev subagents (including any changes made by the refactorer)
78
+
79
+ The security reviewer will:
80
+ 1. Discover project-specific security standards from \`AGENTS.md\` files and specs.
81
+ 2. Audit all changed files for security vulnerabilities.
82
+ 3. Report findings classified by severity (CRITICAL, HIGH, MEDIUM, LOW).
83
+ 4. Ask the user whether they want to fix the reported issues.
84
+
85
+ If the user requests fixes:
86
+ - Re-spawn the appropriate dev subagent(s) with the security findings and instructions to fix them.
87
+ - After fixes are applied, run the verifier again to ensure nothing broke.
88
+ - Run the security reviewer one more time to confirm the issues are resolved.
89
+
90
+ If the user declines fixes or the security reviewer reports no issues, proceed to the next step.
91
+
92
+ ### Step 6: Record Implementation
93
+
94
+ After all verification passes and refactoring is complete, create an implementation record for each ticket at \`.ai/implemented/<TICKET-KEY>.md\` (e.g. \`.ai/implemented/PROJ-123.md\`). The file must contain:
95
+
96
+ \`\`\`markdown
97
+ # <TICKET-KEY>: <ticket title>
98
+
99
+ ## Summary
100
+ <Brief description of what was implemented>
101
+
102
+ ## Items Completed
103
+ <List of all checklist items that were implemented, copied from the ticket>
104
+
105
+ ## Files Changed
106
+ <List of all files created or modified, grouped by domain>
107
+
108
+ ## Decisions Made
109
+ <All decisions made during implementation — user clarifications, trade-offs, ambiguities resolved, alternative approaches chosen, and assumptions made by dev subagents. Include who made the decision (user or AI) and why.>
110
+
111
+ ## Date
112
+ <Current date>
113
+ \`\`\`
114
+
115
+ Create the \`.ai/implemented/\` directory if it does not exist.
116
+
117
+ ## Critical Rules
118
+
119
+ - **Only implement work assigned to the current user.** If a ticket contains subtasks or items assigned to other people, skip them entirely. When in doubt about assignment, ask the user.
120
+ - **NEVER deviate from the ticket requirements without asking the user first.** If you think something should be done differently, ask before making the change.
121
+ - **If something is unclear or missing from the ticket**, stop and ask the user for clarification with concrete options. Do NOT guess or fill in gaps yourself.
122
+ - **If the user provides additional information** in response to a question, implement accordingly and then ask: "Would you like to update the ticket and/or the relevant spec to reflect these details?"
123
+ - **If the user asks to do something NOT in the ticket**, ask whether the spec or ticket needs to be updated first before implementing it.
124
+ - **Do NOT add extra features, refactoring, or improvements** beyond what the ticket specifies.
125
+ - **CRITICAL:** When writing a plan, reference the source ticket files. When the plan is finished and items are verified, checkmark the ticket files.`,
126
+ };
127
+ export default implement;
128
+ //# sourceMappingURL=implement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implement.js","sourceRoot":"","sources":["../../../source/ai/prompts/implement.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAqB;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,yCAAyC;IACtD,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sJAwH+I;CACrJ,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ export type { PromptDefinition } from './types.js';
3
+ export declare const PROMPTS: Record<string, PromptDefinition>;
@@ -0,0 +1,17 @@
1
+ import pullTickets from './pull-tickets.js';
2
+ import pullSpecs from './pull-specs.js';
3
+ import pull from './pull.js';
4
+ import implement from './implement.js';
5
+ import optimizeAi from './optimize-ai.js';
6
+ import document from './document.js';
7
+ import reviewChanges from './review-changes.js';
8
+ export const PROMPTS = {
9
+ 'pull-tickets': pullTickets,
10
+ 'pull-specs': pullSpecs,
11
+ pull,
12
+ implement,
13
+ document,
14
+ 'optimize-ai': optimizeAi,
15
+ 'review-changes': reviewChanges,
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/ai/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,SAAS,MAAM,iBAAiB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAIhD,MAAM,CAAC,MAAM,OAAO,GAAqC;IACxD,cAAc,EAAE,WAAW;IAC3B,YAAY,EAAE,SAAS;IACvB,IAAI;IACJ,SAAS;IACT,QAAQ;IACR,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,aAAa;CAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const optimizeAi: PromptDefinition;
3
+ export default optimizeAi;
@@ -0,0 +1,104 @@
1
+ const optimizeAi = {
2
+ name: 'optimize-ai',
3
+ description: 'Optimize all AI setup files (agents, commands, rules, and instruction files) for the current project.',
4
+ shortDescription: 'Optimize AI setup for this project',
5
+ body: `Optimize all AI setup files (agents, commands, rules, and instruction files) for the current project.
6
+
7
+ This command uses \`AGENTS.md\` as the standard instruction file. These files are placed hierarchically throughout the project — a root \`AGENTS.md\` for project-wide rules, and domain-scoped \`AGENTS.md\` files in subdirectories for area-specific instructions.
8
+
9
+ ## Steps
10
+
11
+ ### 1. Analyze the Project
12
+
13
+ Read the following to understand the project's tech stack, structure, and conventions:
14
+
15
+ - \`package.json\` (or equivalent manifest) — language, framework, dependencies, scripts
16
+ - Top-level directory structure — \`ls\` the root and key directories
17
+ - Existing \`AGENTS.md\` files anywhere in the project tree
18
+ - \`.editorconfig\`, \`tsconfig.json\`, linter configs — code style and conventions
19
+ - Build, test, and lint commands — from package scripts or Makefile
20
+
21
+ Produce a short summary of the project: language, framework, directory layout, key conventions, build/test/lint commands, and any notable patterns. Identify the distinct domains in the project (e.g. backend, frontend, data layer, infrastructure) based on the directory structure.
22
+
23
+ ### 2. Extract Rules from Specifications
24
+
25
+ Read all specification files from \`.ai/specs/\` folder project root, it is gitignored but read it anyways. Read \`.ai/specification-index.md\` for a complete index of available files. For each spec, extract any rules, constraints, conventions, or requirements that AI agents should follow when working on this codebase. These include:
26
+
27
+ - Coding standards and naming conventions
28
+ - Architectural constraints (e.g. "all API routes must go through middleware X")
29
+ - Technology mandates (e.g. "use library Y for Z")
30
+ - Forbidden patterns or anti-patterns
31
+ - Data model invariants
32
+ - Security and validation requirements
33
+ - Testing requirements
34
+
35
+ Categorize each extracted rule by which domain it belongs to (project-wide, backend, frontend, data, etc.). These will be written into the appropriate \`AGENTS.md\` file in the next step.
36
+
37
+ ### 3. Create Hierarchical AGENTS.md Files
38
+
39
+ Create \`AGENTS.md\` files in a hierarchy that matches the project's domain structure.
40
+
41
+ **Root \`AGENTS.md\`** (project root) — contains ONLY project-wide instructions:
42
+
43
+ - Tech stack and language version
44
+ - Build, test, and lint commands
45
+ - Universal coding conventions (indentation, import style, naming)
46
+ - Cross-cutting rules that apply everywhere
47
+ - Project-wide architectural constraints
48
+
49
+ **Domain-scoped \`AGENTS.md\` files** — placed in the actual directories for each domain. Use the real directory names from this project. Examples:
50
+
51
+ - \`src/api/AGENTS.md\` — backend/API conventions, route patterns, middleware rules
52
+ - \`src/components/AGENTS.md\` — component architecture, styling approach, state management patterns
53
+ - \`src/db/AGENTS.md\` or \`src/models/AGENTS.md\` — schema conventions, migration rules, query patterns
54
+ - \`src/tests/AGENTS.md\` — test conventions, fixture patterns, coverage requirements
55
+
56
+ Rules extracted from specifications (Step 2) should be merged into the appropriate \`AGENTS.md\` file based on the domain they belong to.
57
+
58
+ Each \`AGENTS.md\` file should:
59
+ - Be concise — only rules and conventions, not documentation
60
+ - List rules as actionable statements
61
+ - Reference specific file paths, patterns, or libraries from the actual codebase
62
+ - NOT duplicate rules already in a parent \`AGENTS.md\`
63
+
64
+ If an existing \`AGENTS.md\` has user-authored content, preserve it and merge new rules alongside it (clearly separated).
65
+
66
+ ### 4. Update Agent Definitions
67
+
68
+ Read \`hai.json\` to find the configured AI provider. Locate the agent definitions for that provider (e.g. \`.claude/agents/\` for Claude Code). For each agent, update its prompt body to include project-specific context:
69
+
70
+ - Reference the actual directory structure and module layout
71
+ - Mention the project's tech stack, frameworks, and key libraries
72
+ - Include the real build, test, and lint commands
73
+ - Reference actual coding conventions from the \`AGENTS.md\` files
74
+ - Update the "Key Locations" sections with real paths from this project
75
+ - Keep the agent's core role and workflow intact — only add project context
76
+
77
+ ### 5. Update Prompt Commands
78
+
79
+ Find the prompt commands for the active AI provider (e.g. \`.claude/commands/\` for Claude Code, \`.github/copilot/prompts/\` for GitHub Copilot, \`.ai/prompts/\` for others). Update each command to reference project-specific details where applicable:
80
+
81
+ - Real file paths for tickets, specs, and source code
82
+ - Project-specific tooling or workflows
83
+ - Keep the core instruction intent intact — only enrich with project context
84
+
85
+ ### 6. Update .ai/ Context File
86
+
87
+ Rewrite \`.ai/AGENTS.md\` to accurately describe this project's:
88
+
89
+ - Directory structure and what each directory contains
90
+ - How tickets and specs are organized
91
+ - Any project-specific guidance for AI agents working on this codebase
92
+
93
+ ### 7. Summary
94
+
95
+ List every file you created or modified and briefly describe what changed. Group by category:
96
+
97
+ - **AGENTS.md hierarchy** — which files were created/updated and what rules they contain
98
+ - **Rules extracted** — which rules came from which specs
99
+ - **Agents updated** — which agents were modified and what context was added
100
+ - **Commands updated** — which commands were modified
101
+ - **Other files** — any other changes`,
102
+ };
103
+ export default optimizeAi;
104
+ //# sourceMappingURL=optimize-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-ai.js","sourceRoot":"","sources":["../../../source/ai/prompts/optimize-ai.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAqB;IACpC,IAAI,EAAE,aAAa;IACnB,WAAW,EACV,uGAAuG;IACxG,gBAAgB,EAAE,oCAAoC;IACtD,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAgG+B;CACrC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const pullSpecs: PromptDefinition;
3
+ export default pullSpecs;
@@ -0,0 +1,10 @@
1
+ const pullSpecs = {
2
+ name: 'pull-specs',
3
+ description: 'Pull the latest specs using the hai MCP tool.',
4
+ shortDescription: 'Sync specs to .ai/',
5
+ body: `Pull the latest specs using the hai MCP tool \`pull\` with \`specs: true, tickets: false\`.
6
+ After syncing, read the downloaded spec files from \`.ai/specs/\`
7
+ and provide a brief summary listing each spec's title and last-updated date.`,
8
+ };
9
+ export default pullSpecs;
10
+ //# sourceMappingURL=pull-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-specs.js","sourceRoot":"","sources":["../../../source/ai/prompts/pull-specs.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAqB;IACnC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,+CAA+C;IAC5D,gBAAgB,EAAE,oBAAoB;IACtC,IAAI,EAAE;;6EAEsE;CAC5E,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const pullTickets: PromptDefinition;
3
+ export default pullTickets;
@@ -0,0 +1,11 @@
1
+ const pullTickets = {
2
+ name: 'pull-tickets',
3
+ description: 'Pull the latest tickets using the hai MCP tool.',
4
+ shortDescription: 'Sync tickets to .ai/',
5
+ body: `Pull the latest tickets using the hai MCP tool \`pull\` with \`tickets: true, specs: false\`.
6
+ After syncing, read the downloaded ticket files from \`.ai/tickets/\`
7
+ and provide a brief summary listing each ticket's key, title, status,
8
+ and priority.`,
9
+ };
10
+ export default pullTickets;
11
+ //# sourceMappingURL=pull-tickets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-tickets.js","sourceRoot":"","sources":["../../../source/ai/prompts/pull-tickets.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,GAAqB;IACrC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,iDAAiD;IAC9D,gBAAgB,EAAE,sBAAsB;IACxC,IAAI,EAAE;;;cAGO;CACb,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const pull: PromptDefinition;
3
+ export default pull;
@@ -0,0 +1,9 @@
1
+ const pull = {
2
+ name: 'pull',
3
+ description: 'Pull both tickets and specs using the hai MCP tools.',
4
+ shortDescription: 'Sync tickets and specs to .ai/',
5
+ body: `Pull both tickets and specs using the hai MCP tool \`pull\` with \`tickets: true, specs: true\`.
6
+ Summarize all downloaded tickets and specs.`,
7
+ };
8
+ export default pull;
9
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../source/ai/prompts/pull.ts"],"names":[],"mappings":"AAEA,MAAM,IAAI,GAAqB;IAC9B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,sDAAsD;IACnE,gBAAgB,EAAE,gCAAgC;IAClD,IAAI,EAAE;4CACqC;CAC3C,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PromptDefinition } from './types.js';
2
+ declare const reviewChanges: PromptDefinition;
3
+ export default reviewChanges;