yandecode 0.1.1 → 0.2.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 (226) hide show
  1. package/dist/bin.js +14 -8
  2. package/dist/bin.js.map +7 -1
  3. package/dist/chunks/chunk-23DG7PZZ.js +58 -0
  4. package/dist/chunks/chunk-23DG7PZZ.js.map +7 -0
  5. package/dist/chunks/chunk-2S6B3DDQ.js +1769 -0
  6. package/dist/chunks/chunk-2S6B3DDQ.js.map +7 -0
  7. package/dist/chunks/chunk-6J5CZVCJ.js +120 -0
  8. package/dist/chunks/chunk-6J5CZVCJ.js.map +7 -0
  9. package/dist/chunks/chunk-7L6DD2VD.js +768 -0
  10. package/dist/chunks/chunk-7L6DD2VD.js.map +7 -0
  11. package/dist/chunks/chunk-DWD37AI2.js +39 -0
  12. package/dist/chunks/chunk-DWD37AI2.js.map +7 -0
  13. package/dist/chunks/chunk-KPDBXQ62.js +62 -0
  14. package/dist/chunks/chunk-KPDBXQ62.js.map +7 -0
  15. package/dist/chunks/chunk-KVBKQXTU.js +351 -0
  16. package/dist/chunks/chunk-KVBKQXTU.js.map +7 -0
  17. package/dist/chunks/chunk-L2DDIZPI.js +53 -0
  18. package/dist/chunks/chunk-L2DDIZPI.js.map +7 -0
  19. package/dist/chunks/chunk-OIAMKDTQ.js +27 -0
  20. package/dist/chunks/chunk-OIAMKDTQ.js.map +7 -0
  21. package/dist/chunks/chunk-PUWSEWX3.js +61 -0
  22. package/dist/chunks/chunk-PUWSEWX3.js.map +7 -0
  23. package/dist/chunks/chunk-QCQC73WX.js +122 -0
  24. package/dist/chunks/chunk-QCQC73WX.js.map +7 -0
  25. package/dist/chunks/chunk-TYLH4NIC.js +39 -0
  26. package/dist/chunks/chunk-TYLH4NIC.js.map +7 -0
  27. package/dist/chunks/chunk-VKVJGBNJ.js +72 -0
  28. package/dist/chunks/chunk-VKVJGBNJ.js.map +7 -0
  29. package/dist/chunks/chunk-Y2MIXROU.js +20072 -0
  30. package/dist/chunks/chunk-Y2MIXROU.js.map +7 -0
  31. package/dist/chunks/cli-V6PJTDLM.js +3464 -0
  32. package/dist/chunks/cli-V6PJTDLM.js.map +7 -0
  33. package/dist/chunks/doctor-LLDVEPWL.js +184 -0
  34. package/dist/chunks/doctor-LLDVEPWL.js.map +7 -0
  35. package/dist/chunks/entry-YAOEX3EB.js +187 -0
  36. package/dist/chunks/entry-YAOEX3EB.js.map +7 -0
  37. package/dist/chunks/init-4ZJFCKIJ.js +46 -0
  38. package/dist/chunks/init-4ZJFCKIJ.js.map +7 -0
  39. package/dist/chunks/mcp-serve-KWKMUGWZ.js +22575 -0
  40. package/dist/chunks/mcp-serve-KWKMUGWZ.js.map +7 -0
  41. package/dist/chunks/modules-CJB5IKUJ.js +121 -0
  42. package/dist/chunks/modules-CJB5IKUJ.js.map +7 -0
  43. package/dist/chunks/runtime-3E4NIFAL.js +208 -0
  44. package/dist/chunks/runtime-3E4NIFAL.js.map +7 -0
  45. package/dist/chunks/runtime-7CRR63B5.js +395 -0
  46. package/dist/chunks/runtime-7CRR63B5.js.map +7 -0
  47. package/dist/chunks/runtime-CKMVHAU4.js +64 -0
  48. package/dist/chunks/runtime-CKMVHAU4.js.map +7 -0
  49. package/dist/chunks/runtime-CVZMWIJO.js +318 -0
  50. package/dist/chunks/runtime-CVZMWIJO.js.map +7 -0
  51. package/dist/chunks/runtime-DBNXBOAL.js +295 -0
  52. package/dist/chunks/runtime-DBNXBOAL.js.map +7 -0
  53. package/dist/chunks/runtime-EKHO2JXB.js +197 -0
  54. package/dist/chunks/runtime-EKHO2JXB.js.map +7 -0
  55. package/dist/chunks/runtime-EY6SVZYP.js +539 -0
  56. package/dist/chunks/runtime-EY6SVZYP.js.map +7 -0
  57. package/dist/chunks/runtime-UB2O2HUN.js +212 -0
  58. package/dist/chunks/runtime-UB2O2HUN.js.map +7 -0
  59. package/dist/chunks/runtime-WAFQWW4M.js +755 -0
  60. package/dist/chunks/runtime-WAFQWW4M.js.map +7 -0
  61. package/dist/chunks/runtime-ZGGF6RVA.js +271 -0
  62. package/dist/chunks/runtime-ZGGF6RVA.js.map +7 -0
  63. package/dist/chunks/status-SPIESL4F.js +38 -0
  64. package/dist/chunks/status-SPIESL4F.js.map +7 -0
  65. package/dist/chunks/uninstall-J2OWCX4A.js +54 -0
  66. package/dist/chunks/uninstall-J2OWCX4A.js.map +7 -0
  67. package/dist/chunks/update-OX5MZYQY.js +34 -0
  68. package/dist/chunks/update-OX5MZYQY.js.map +7 -0
  69. package/dist/content/agents/yandecode-reviewer.md +22 -0
  70. package/dist/content/agents/yandecode-security-reviewer.md +23 -0
  71. package/dist/content/skills/NOTICE.md +29 -0
  72. package/dist/content/skills/yandecode-code-review/SKILL.md +37 -0
  73. package/dist/content/skills/yandecode-debugging/SKILL.md +33 -0
  74. package/dist/content/skills/yandecode-instructions/SKILL.md +26 -0
  75. package/dist/content/skills/yandecode-memory/SKILL.md +36 -0
  76. package/dist/content/skills/yandecode-security-review/SKILL.md +24 -0
  77. package/dist/content/skills/yandecode-tdd/SKILL.md +38 -0
  78. package/dist/content/skills/yandecode-verification/SKILL.md +29 -0
  79. package/dist/content/skills/yandecode-workflow/SKILL.md +50 -0
  80. package/package.json +25 -19
  81. package/dist/bin.d.ts +0 -3
  82. package/dist/bin.d.ts.map +0 -1
  83. package/dist/claude-bin.d.ts +0 -2
  84. package/dist/claude-bin.d.ts.map +0 -1
  85. package/dist/claude-bin.js +0 -4
  86. package/dist/claude-bin.js.map +0 -1
  87. package/dist/cli.d.ts +0 -6
  88. package/dist/cli.d.ts.map +0 -1
  89. package/dist/cli.js +0 -21
  90. package/dist/cli.js.map +0 -1
  91. package/dist/commands/doctor.d.ts +0 -2
  92. package/dist/commands/doctor.d.ts.map +0 -1
  93. package/dist/commands/doctor.js +0 -19
  94. package/dist/commands/doctor.js.map +0 -1
  95. package/dist/commands/hook.d.ts +0 -2
  96. package/dist/commands/hook.d.ts.map +0 -1
  97. package/dist/commands/hook.js +0 -23
  98. package/dist/commands/hook.js.map +0 -1
  99. package/dist/commands/index-cmd.d.ts +0 -2
  100. package/dist/commands/index-cmd.d.ts.map +0 -1
  101. package/dist/commands/index-cmd.js +0 -47
  102. package/dist/commands/index-cmd.js.map +0 -1
  103. package/dist/commands/index.d.ts +0 -13
  104. package/dist/commands/index.d.ts.map +0 -1
  105. package/dist/commands/index.js +0 -15
  106. package/dist/commands/index.js.map +0 -1
  107. package/dist/commands/init.d.ts +0 -2
  108. package/dist/commands/init.d.ts.map +0 -1
  109. package/dist/commands/init.js +0 -22
  110. package/dist/commands/init.js.map +0 -1
  111. package/dist/commands/mcp.d.ts +0 -2
  112. package/dist/commands/mcp.d.ts.map +0 -1
  113. package/dist/commands/mcp.js +0 -71
  114. package/dist/commands/mcp.js.map +0 -1
  115. package/dist/commands/rag.d.ts +0 -2
  116. package/dist/commands/rag.d.ts.map +0 -1
  117. package/dist/commands/rag.js +0 -27
  118. package/dist/commands/rag.js.map +0 -1
  119. package/dist/commands/start.d.ts +0 -5
  120. package/dist/commands/start.d.ts.map +0 -1
  121. package/dist/commands/start.js +0 -74
  122. package/dist/commands/start.js.map +0 -1
  123. package/dist/commands/status.d.ts +0 -2
  124. package/dist/commands/status.d.ts.map +0 -1
  125. package/dist/commands/status.js +0 -29
  126. package/dist/commands/status.js.map +0 -1
  127. package/dist/commands/statusline.d.ts +0 -2
  128. package/dist/commands/statusline.d.ts.map +0 -1
  129. package/dist/commands/statusline.js +0 -90
  130. package/dist/commands/statusline.js.map +0 -1
  131. package/dist/commands/swarm.d.ts +0 -4
  132. package/dist/commands/swarm.d.ts.map +0 -1
  133. package/dist/commands/swarm.js +0 -48
  134. package/dist/commands/swarm.js.map +0 -1
  135. package/dist/commands/uninstall.d.ts +0 -2
  136. package/dist/commands/uninstall.d.ts.map +0 -1
  137. package/dist/commands/uninstall.js +0 -16
  138. package/dist/commands/uninstall.js.map +0 -1
  139. package/dist/context.d.ts +0 -13
  140. package/dist/context.d.ts.map +0 -1
  141. package/dist/context.js +0 -31
  142. package/dist/context.js.map +0 -1
  143. package/dist/doctor/checks.d.ts +0 -18
  144. package/dist/doctor/checks.d.ts.map +0 -1
  145. package/dist/doctor/checks.js +0 -270
  146. package/dist/doctor/checks.js.map +0 -1
  147. package/dist/hooks/handlers.d.ts +0 -21
  148. package/dist/hooks/handlers.d.ts.map +0 -1
  149. package/dist/hooks/handlers.js +0 -191
  150. package/dist/hooks/handlers.js.map +0 -1
  151. package/dist/index.d.ts +0 -10
  152. package/dist/index.d.ts.map +0 -1
  153. package/dist/index.js +0 -10
  154. package/dist/index.js.map +0 -1
  155. package/dist/integration/claude-md.d.ts +0 -6
  156. package/dist/integration/claude-md.d.ts.map +0 -1
  157. package/dist/integration/claude-md.js +0 -30
  158. package/dist/integration/claude-md.js.map +0 -1
  159. package/dist/integration/gitignore.d.ts +0 -3
  160. package/dist/integration/gitignore.d.ts.map +0 -1
  161. package/dist/integration/gitignore.js +0 -13
  162. package/dist/integration/gitignore.js.map +0 -1
  163. package/dist/integration/init.d.ts +0 -17
  164. package/dist/integration/init.d.ts.map +0 -1
  165. package/dist/integration/init.js +0 -86
  166. package/dist/integration/init.js.map +0 -1
  167. package/dist/integration/json-utils.d.ts +0 -13
  168. package/dist/integration/json-utils.d.ts.map +0 -1
  169. package/dist/integration/json-utils.js +0 -33
  170. package/dist/integration/json-utils.js.map +0 -1
  171. package/dist/integration/manifest.d.ts +0 -17
  172. package/dist/integration/manifest.d.ts.map +0 -1
  173. package/dist/integration/manifest.js +0 -26
  174. package/dist/integration/manifest.js.map +0 -1
  175. package/dist/integration/materialize.d.ts +0 -9
  176. package/dist/integration/materialize.d.ts.map +0 -1
  177. package/dist/integration/materialize.js +0 -21
  178. package/dist/integration/materialize.js.map +0 -1
  179. package/dist/integration/mcp-config.d.ts +0 -4
  180. package/dist/integration/mcp-config.d.ts.map +0 -1
  181. package/dist/integration/mcp-config.js +0 -11
  182. package/dist/integration/mcp-config.js.map +0 -1
  183. package/dist/integration/settings.d.ts +0 -7
  184. package/dist/integration/settings.d.ts.map +0 -1
  185. package/dist/integration/settings.js +0 -70
  186. package/dist/integration/settings.js.map +0 -1
  187. package/dist/integration/uninstall.d.ts +0 -10
  188. package/dist/integration/uninstall.d.ts.map +0 -1
  189. package/dist/integration/uninstall.js +0 -71
  190. package/dist/integration/uninstall.js.map +0 -1
  191. package/dist/launcher.d.ts +0 -8
  192. package/dist/launcher.d.ts.map +0 -1
  193. package/dist/launcher.js +0 -18
  194. package/dist/launcher.js.map +0 -1
  195. package/dist/mcp/server.d.ts +0 -27
  196. package/dist/mcp/server.d.ts.map +0 -1
  197. package/dist/mcp/server.js +0 -311
  198. package/dist/mcp/server.js.map +0 -1
  199. package/dist/plugin-content.d.ts +0 -21
  200. package/dist/plugin-content.d.ts.map +0 -1
  201. package/dist/plugin-content.js +0 -67
  202. package/dist/plugin-content.js.map +0 -1
  203. package/dist/rag/format.d.ts +0 -3
  204. package/dist/rag/format.d.ts.map +0 -1
  205. package/dist/rag/format.js +0 -12
  206. package/dist/rag/format.js.map +0 -1
  207. package/dist/retrieval-runtime.d.ts +0 -21
  208. package/dist/retrieval-runtime.d.ts.map +0 -1
  209. package/dist/retrieval-runtime.js +0 -47
  210. package/dist/retrieval-runtime.js.map +0 -1
  211. package/dist/status-line/git.d.ts +0 -3
  212. package/dist/status-line/git.d.ts.map +0 -1
  213. package/dist/status-line/git.js +0 -34
  214. package/dist/status-line/git.js.map +0 -1
  215. package/dist/status-line/render.d.ts +0 -29
  216. package/dist/status-line/render.d.ts.map +0 -1
  217. package/dist/status-line/render.js +0 -72
  218. package/dist/status-line/render.js.map +0 -1
  219. package/dist/swarm-runtime.d.ts +0 -11
  220. package/dist/swarm-runtime.d.ts.map +0 -1
  221. package/dist/swarm-runtime.js +0 -76
  222. package/dist/swarm-runtime.js.map +0 -1
  223. package/dist/version.d.ts +0 -2
  224. package/dist/version.d.ts.map +0 -1
  225. package/dist/version.js +0 -5
  226. package/dist/version.js.map +0 -1
@@ -0,0 +1,768 @@
1
+ import { createRequire as __yandecodeCreateRequire } from 'node:module';
2
+ const require = __yandecodeCreateRequire(import.meta.url);
3
+ import {
4
+ external_exports,
5
+ libdocsModule
6
+ } from "./chunk-Y2MIXROU.js";
7
+
8
+ // packages/cli/src/modules/code/definition.ts
9
+ var maxChars = external_exports.number().int().min(200).max(4e4).optional().describe("Answer size budget in characters (rows are cut whole)");
10
+ var searchInput = {
11
+ query: external_exports.string().min(1).max(500),
12
+ mode: external_exports.enum(["auto", "symbol", "path", "text"]).optional(),
13
+ path: external_exports.string().optional().describe("Restrict symbol search to a file or directory"),
14
+ limit: external_exports.number().int().min(1).max(50).optional(),
15
+ max_chars: maxChars
16
+ };
17
+ var symbolsInput = { path: external_exports.string().min(1), max_chars: maxChars };
18
+ var definitionInput = {
19
+ name_path: external_exports.string().min(1),
20
+ path: external_exports.string().optional(),
21
+ max_chars: maxChars
22
+ };
23
+ var referencesInput = { name_path: external_exports.string().min(1), max_chars: maxChars };
24
+ var repoMapInput = {
25
+ focus: external_exports.string().optional().describe("Only files under this path prefix"),
26
+ max_chars: maxChars
27
+ };
28
+ var codeModule = {
29
+ id: "code",
30
+ title: "Code navigation",
31
+ summary: "Symbol-level search, outlines, definitions, references and repo map (tree-sitter + BM25 + import graph)",
32
+ requires: [],
33
+ defaultEnabled: true,
34
+ guidance: "Navigate code with `code_search` (symbol names, `Class/method` paths, file fragments or plain words), `code_symbols` for a file outline, `code_definition` for one symbol body and `code_references` for usages; use `repo_map` to orient in an unfamiliar area. Read whole files only when these are not enough.",
35
+ routing: [
36
+ {
37
+ intent: "Find where something is defined or handled (function, type, error code, feature, file)",
38
+ use: "code_search(query)",
39
+ insteadOf: "grep -rn / rg / find"
40
+ },
41
+ {
42
+ intent: "See what a source file contains before reading it",
43
+ use: "code_symbols(path)",
44
+ insteadOf: "Read or cat of the whole file"
45
+ },
46
+ {
47
+ intent: "Read one function, method or type",
48
+ use: "code_definition(name_path)",
49
+ insteadOf: "sed -n 'a,bp' / Read with offsets"
50
+ },
51
+ {
52
+ intent: "Find callers or usages of a symbol",
53
+ use: "code_references(name_path)",
54
+ insteadOf: 'grep -rn "name"'
55
+ },
56
+ {
57
+ intent: "Get oriented in an unfamiliar area of the code",
58
+ use: "repo_map(focus)",
59
+ insteadOf: "ls -R / tree / reading many files"
60
+ }
61
+ ],
62
+ hooks: [{ event: "PreToolUse", matcher: "Grep|Glob|Read|Bash" }],
63
+ tools: [
64
+ {
65
+ name: "code_search",
66
+ title: "Find code",
67
+ description: "Instead of grep/rg/find over source code: find where a function, type, constant, error code or feature is defined or handled. Accepts an identifier, a Class/method path, a file-name fragment or a plain-English question; returns compact path:line rows with signatures, never whole files.",
68
+ inputSchema: searchInput
69
+ },
70
+ {
71
+ name: "code_symbols",
72
+ title: "Outline a file",
73
+ description: "Instead of reading a whole source file to see what is in it: list its functions, classes and methods with line ranges and signatures, so you can then read only the symbol you need (code_definition).",
74
+ inputSchema: symbolsInput
75
+ },
76
+ {
77
+ name: "code_definition",
78
+ title: "Read one symbol",
79
+ description: `Instead of sed -n 'a,bp', cat or Read with offsets: return the full source of one function, method or type by name (e.g. "Parser/parse_expr" or "lex_number"), numbered and read fresh from disk.`,
80
+ inputSchema: definitionInput
81
+ },
82
+ {
83
+ name: "code_references",
84
+ title: "Find usages",
85
+ description: "Instead of grep for a name: every line that uses a symbol (whole-identifier match, definition excluded) plus the files that import it. Lexical and fast; use lsp_references for type-aware precision in TS/JS/Python.",
86
+ inputSchema: referencesInput
87
+ },
88
+ {
89
+ name: "repo_map",
90
+ title: "Map the repository",
91
+ description: "Instead of ls -R, tree or opening many files to get oriented: the most central files (ranked by imports), each with its top-level declarations, within a size budget. Pass focus to narrow to a directory.",
92
+ inputSchema: repoMapInput
93
+ }
94
+ ],
95
+ skills: [],
96
+ agents: [],
97
+ cli: (program) => {
98
+ const code = program.command("code").description("Code navigation index");
99
+ code.command("index").description("Bring the code index up to date and print what changed").action(async () => {
100
+ const { runIndexCommand } = await import("./runtime-DBNXBOAL.js");
101
+ await runIndexCommand(process.cwd());
102
+ });
103
+ code.command("search <query...>").description("Search code from the terminal (same as the code_search MCP tool)").action(async (query) => {
104
+ const { runSearchCommand } = await import("./runtime-DBNXBOAL.js");
105
+ await runSearchCommand(process.cwd(), query.join(" "));
106
+ });
107
+ },
108
+ load: async () => (await import("./runtime-DBNXBOAL.js")).runtime
109
+ };
110
+
111
+ // packages/cli/src/modules/context/definition.ts
112
+ var maxChars2 = external_exports.number().int().min(300).max(4e4).optional();
113
+ var runInput = {
114
+ command: external_exports.string().min(1).max(8e3).describe("Shell command, run in the project root by default"),
115
+ intent: external_exports.string().max(300).optional().describe('What you are looking for in the output (e.g. "failing tests and their errors")'),
116
+ cwd: external_exports.string().optional().describe("Working directory relative to the project root"),
117
+ timeout_s: external_exports.number().int().min(1).max(600).optional().describe("Default 120 s"),
118
+ max_chars: maxChars2
119
+ };
120
+ var fetchInput = {
121
+ url: external_exports.url(),
122
+ intent: external_exports.string().max(300).optional(),
123
+ max_chars: maxChars2
124
+ };
125
+ var searchInput2 = {
126
+ query: external_exports.string().min(1).max(300),
127
+ handle: external_exports.string().optional().describe("Limit to one stored output"),
128
+ limit: external_exports.number().int().min(1).max(30).optional()
129
+ };
130
+ var getInput = {
131
+ handle: external_exports.string().min(1),
132
+ from: external_exports.number().int().min(1).optional(),
133
+ to: external_exports.number().int().min(1).optional(),
134
+ max_chars: maxChars2
135
+ };
136
+ var contextSettings = external_exports.object({
137
+ /** Deny `curl URL` / `wget -O- URL` in Bash and point to ctx_fetch / ctx_run. */
138
+ denyNetworkFetch: external_exports.boolean().default(true),
139
+ /** One-time hint per session when a verbose command runs through Bash. */
140
+ hints: external_exports.boolean().default(true),
141
+ retentionDays: external_exports.number().int().min(1).max(365).default(7),
142
+ maxOutputMb: external_exports.number().int().min(1).max(200).default(20)
143
+ });
144
+ var contextModule = {
145
+ id: "context",
146
+ title: "Context isolation",
147
+ summary: "Runs noisy commands and fetches outside the context window; keeps full output searchable (ctx_run/ctx_fetch/ctx_search)",
148
+ requires: [],
149
+ defaultEnabled: true,
150
+ guidance: "Run commands whose output may be long (tests, builds, logs, git history, API calls) with `ctx_run` and fetch web pages with `ctx_fetch`: they return a digest and keep the full output; use `ctx_search` / `ctx_get` to read any part verbatim instead of re-running.",
151
+ routing: [
152
+ {
153
+ intent: "Run tests, a build, a linter or any command with long output",
154
+ use: "ctx_run(command, intent)",
155
+ insteadOf: "Bash, and never a background run you then wait for"
156
+ },
157
+ {
158
+ intent: "Look again at the output of a command already run",
159
+ use: "ctx_search(query, handle) / ctx_get(handle, from, to)",
160
+ insteadOf: "re-running the command"
161
+ },
162
+ {
163
+ intent: "Read a web page or API response",
164
+ use: "ctx_fetch(url, intent)",
165
+ insteadOf: "curl / WebFetch"
166
+ }
167
+ ],
168
+ hooks: [{ event: "PreToolUse", matcher: "Bash" }],
169
+ tools: [
170
+ {
171
+ name: "ctx_run",
172
+ title: "Run a command (output kept)",
173
+ description: "Instead of Bash for tests, builds, linters, logs, git history or anything with long output: runs the command to completion (no background run to wait for), stores the full output and returns the exit code plus the failing or intent-relevant lines. Short outputs come back verbatim.",
174
+ inputSchema: runInput
175
+ },
176
+ {
177
+ name: "ctx_fetch",
178
+ title: "Fetch a URL",
179
+ description: "Instead of curl or WebFetch: fetch a page or API response (HTML to text, JSON pretty-printed), store it and return only the parts matching intent.",
180
+ inputSchema: fetchInput
181
+ },
182
+ {
183
+ name: "ctx_search",
184
+ title: "Search stored output",
185
+ description: "Instead of re-running a command to look at its output again: search everything ctx_run/ctx_fetch stored (or one handle) and get matching line ranges.",
186
+ inputSchema: searchInput2
187
+ },
188
+ {
189
+ name: "ctx_get",
190
+ title: "Read stored output lines",
191
+ description: "Exact lines of a stored output by handle and range (verbatim, numbered).",
192
+ inputSchema: getInput
193
+ }
194
+ ],
195
+ skills: [],
196
+ agents: [],
197
+ cli: (program) => {
198
+ program.command("context").description("Stored command/web outputs").command("purge").description("Delete all stored outputs").action(async () => {
199
+ const { runPurgeCommand } = await import("./runtime-7CRR63B5.js");
200
+ runPurgeCommand(process.cwd());
201
+ });
202
+ },
203
+ load: async () => (await import("./runtime-7CRR63B5.js")).runtime
204
+ };
205
+
206
+ // packages/cli/src/modules/guard/definition.ts
207
+ var adjudicatorSettings = external_exports.object({
208
+ mode: external_exports.enum(["off", "shadow", "enforce"]).default("off"),
209
+ model: external_exports.string().default("typesafe/jev-1.13"),
210
+ baseUrl: external_exports.string().default("https://openrouter.ai/api/alpha"),
211
+ denyConfidence: external_exports.number().min(0).max(1).default(0.8),
212
+ timeoutMs: external_exports.number().int().positive().default(8e3)
213
+ });
214
+ var guardSettings = external_exports.object({
215
+ /** Rule ids to turn off: secrets-in-command, secrets-in-content, credential-file, sudo, destructive-rm, disk, force-push, history-rewrite, commit-secrets. */
216
+ disabled: external_exports.array(external_exports.string()).default([]),
217
+ /**
218
+ * Optional Jev adjudicator for the ambiguous (warn) cases. Off by default; needs
219
+ * OPENROUTER_API_KEY in the environment. `shadow` only logs Jev's opinion, `enforce` acts on it.
220
+ */
221
+ adjudicator: adjudicatorSettings.default(adjudicatorSettings.parse({}))
222
+ });
223
+ var guardModule = {
224
+ id: "guard",
225
+ title: "Tool-call guard",
226
+ summary: "Blocks leaking secrets, reading credential files, sudo and destructive commands before they run (deterministic, fail-open)",
227
+ requires: [],
228
+ defaultEnabled: false,
229
+ guidance: "A guard checks tool calls for secrets, credential files and destructive commands. If it blocks something the user explicitly asked for, re-run with `# guard-ok: <reason>`; never use the override on your own initiative.",
230
+ hooks: [{ event: "PreToolUse", matcher: "Bash|Read|Write|Edit|MultiEdit|NotebookEdit" }],
231
+ skills: [],
232
+ agents: [],
233
+ load: async () => (await import("./runtime-ZGGF6RVA.js")).runtime
234
+ };
235
+
236
+ // packages/cli/src/shared/project-checks.ts
237
+ import { existsSync, readFileSync } from "node:fs";
238
+ import { join } from "node:path";
239
+ var STEPS = ["format", "typecheck", "lint", "test"];
240
+ var SCRIPT_CANDIDATES = {
241
+ format: ["format:check", "fmt:check"],
242
+ typecheck: ["typecheck", "type-check", "tsc", "check-types"],
243
+ lint: ["lint"],
244
+ test: ["test"]
245
+ };
246
+ function packageManager(root) {
247
+ if (existsSync(join(root, "pnpm-lock.yaml"))) return "pnpm";
248
+ if (existsSync(join(root, "yarn.lock"))) return "yarn";
249
+ if (existsSync(join(root, "bun.lockb")) || existsSync(join(root, "bun.lock"))) return "bun";
250
+ return "npm";
251
+ }
252
+ function nodeChecks(root) {
253
+ const pkg = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
254
+ const scripts = pkg.scripts ?? {};
255
+ const pm = packageManager(root);
256
+ return STEPS.flatMap((step) => {
257
+ const name = SCRIPT_CANDIDATES[step].find((candidate) => candidate in scripts);
258
+ return name ? [{ step, command: `${pm} run ${name}` }] : [];
259
+ });
260
+ }
261
+ function pythonChecks(root) {
262
+ const pyproject = existsSync(join(root, "pyproject.toml")) ? readFileSync(join(root, "pyproject.toml"), "utf8") : "";
263
+ const checks = [];
264
+ if (pyproject.includes("[tool.mypy]")) checks.push({ step: "typecheck", command: "mypy ." });
265
+ if (pyproject.includes("[tool.ruff")) checks.push({ step: "lint", command: "ruff check ." });
266
+ if (pyproject.includes("[tool.pytest") || existsSync(join(root, "pytest.ini")))
267
+ checks.push({ step: "test", command: "pytest -q" });
268
+ return checks;
269
+ }
270
+ function detectChecks(root, overrides = {}) {
271
+ const explicit = STEPS.flatMap(
272
+ (step) => overrides[step] ? [{ step, command: overrides[step] }] : []
273
+ );
274
+ if (explicit.length > 0) return explicit;
275
+ if (existsSync(join(root, "package.json"))) return nodeChecks(root);
276
+ if (existsSync(join(root, "go.mod"))) {
277
+ return [
278
+ { step: "lint", command: "go vet ./..." },
279
+ { step: "test", command: "go test ./..." }
280
+ ];
281
+ }
282
+ if (existsSync(join(root, "Cargo.toml"))) {
283
+ return [
284
+ { step: "lint", command: "cargo clippy --quiet" },
285
+ { step: "test", command: "cargo test --quiet" }
286
+ ];
287
+ }
288
+ return pythonChecks(root);
289
+ }
290
+
291
+ // packages/cli/src/modules/knowledge/memory-file.ts
292
+ var MEMORY_KINDS = ["decision", "pattern", "fact", "failure", "note", "session"];
293
+ function unquote(value) {
294
+ const v = value.trim();
295
+ if (v.startsWith('"') && v.endsWith('"') && v.length >= 2) return JSON.parse(v);
296
+ if (v.startsWith("'") && v.endsWith("'") && v.length >= 2)
297
+ return v.slice(1, -1).replace(/''/g, "'");
298
+ return v;
299
+ }
300
+ function parseInlineList(value) {
301
+ const inner = value.trim().slice(1, -1).trim();
302
+ return inner === "" ? [] : inner.split(",").map((item) => unquote(item));
303
+ }
304
+ function parseFrontMatter(block) {
305
+ const out = /* @__PURE__ */ new Map();
306
+ let listKey = null;
307
+ for (const line of block.split("\n")) {
308
+ const item = /^\s+-\s+(.*)$/.exec(line);
309
+ if (item && listKey) {
310
+ out.get(listKey).push(unquote(item[1]));
311
+ continue;
312
+ }
313
+ const pair = /^([A-Za-z_][\w-]*):\s*(.*)$/.exec(line);
314
+ if (!pair) continue;
315
+ const [, key, raw] = pair;
316
+ listKey = null;
317
+ if (raw === "") {
318
+ out.set(key, []);
319
+ listKey = key;
320
+ } else if (raw.trim().startsWith("[")) out.set(key, parseInlineList(raw));
321
+ else out.set(key, unquote(raw));
322
+ }
323
+ return out;
324
+ }
325
+ var scalar = (fields, key) => {
326
+ const value = fields.get(key);
327
+ return typeof value === "string" && value !== "" ? value : null;
328
+ };
329
+ var list = (fields, key) => {
330
+ const value = fields.get(key);
331
+ return Array.isArray(value) ? value : typeof value === "string" && value !== "" ? [value] : [];
332
+ };
333
+ function parseMemory(text) {
334
+ const match = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/.exec(text);
335
+ if (!match) throw new Error("memory file has no front matter block (--- \u2026 ---)");
336
+ const fields = parseFrontMatter(match[1]);
337
+ const id = scalar(fields, "id");
338
+ const title = scalar(fields, "title");
339
+ if (!id) throw new Error("memory front matter needs an id");
340
+ if (!title) throw new Error(`memory ${id} needs a title`);
341
+ const kind = scalar(fields, "kind") ?? "note";
342
+ return {
343
+ id,
344
+ title,
345
+ kind: MEMORY_KINDS.includes(kind) ? kind : "note",
346
+ durability: scalar(fields, "durability") === "ephemeral" ? "ephemeral" : "durable",
347
+ created: scalar(fields, "created") ?? "",
348
+ updated: scalar(fields, "updated") ?? scalar(fields, "created") ?? "",
349
+ expires: scalar(fields, "expires"),
350
+ supersedes: list(fields, "supersedes"),
351
+ tags: list(fields, "tags"),
352
+ sources: list(fields, "sources"),
353
+ body: match[2].replace(/^\n+/, "").replace(/\s+$/, "")
354
+ };
355
+ }
356
+ function formatScalar(value) {
357
+ return /^[\w./@-][\w ./@():-]*$/.test(value) && !/:\s|\s$/.test(value) ? value : JSON.stringify(value);
358
+ }
359
+ function formatList(key, items) {
360
+ const simple = items.every((i) => /^[\w./@:#-]+$/.test(i));
361
+ if (simple) return `${key}: [${items.join(", ")}]`;
362
+ return [`${key}:`, ...items.map((i) => ` - ${JSON.stringify(i)}`)].join("\n");
363
+ }
364
+ function serializeMemory(memory) {
365
+ const lines = [
366
+ `id: ${memory.id}`,
367
+ `title: ${formatScalar(memory.title)}`,
368
+ `kind: ${memory.kind}`,
369
+ `durability: ${memory.durability}`,
370
+ `created: ${memory.created}`,
371
+ `updated: ${memory.updated}`,
372
+ ...memory.expires ? [`expires: ${memory.expires}`] : [],
373
+ ...memory.supersedes.length > 0 ? [formatList("supersedes", memory.supersedes)] : [],
374
+ ...memory.tags.length > 0 ? [formatList("tags", memory.tags)] : [],
375
+ ...memory.sources.length > 0 ? [formatList("sources", memory.sources)] : []
376
+ ];
377
+ return `---
378
+ ${lines.join("\n")}
379
+ ---
380
+ ${memory.body}
381
+ `;
382
+ }
383
+
384
+ // packages/cli/src/modules/knowledge/definition.ts
385
+ var searchInput3 = {
386
+ query: external_exports.string().min(1).max(500),
387
+ scope: external_exports.enum(["all", "docs", "memory"]).optional(),
388
+ limit: external_exports.number().int().min(1).max(30).optional(),
389
+ include_superseded: external_exports.boolean().optional()
390
+ };
391
+ var getInput2 = {
392
+ ids: external_exports.array(external_exports.string().min(1)).min(1).max(20).describe('Memory ids, or doc references "path" / "path:start-end" from knowledge_search'),
393
+ max_chars: external_exports.number().int().min(300).max(4e4).optional()
394
+ };
395
+ var writeInput = {
396
+ title: external_exports.string().min(3).max(160).describe("One-line statement of the knowledge"),
397
+ body: external_exports.string().min(1).max(8e3).describe("Why / details / how to apply; concise"),
398
+ kind: external_exports.enum(MEMORY_KINDS).describe("decision, pattern, fact, failure (with root cause), note"),
399
+ durability: external_exports.enum(["durable", "ephemeral"]).optional(),
400
+ tags: external_exports.array(external_exports.string()).max(10).optional(),
401
+ sources: external_exports.array(external_exports.string()).max(20).optional().describe("Evidence: repo paths (path:line), commits, URLs, ctx handles"),
402
+ supersedes: external_exports.array(external_exports.string()).max(10).optional().describe("Ids this memory replaces"),
403
+ expires_in_days: external_exports.number().int().min(1).max(365).optional()
404
+ };
405
+ var forgetInput = { id: external_exports.string().min(1) };
406
+ var knowledgeSettings = external_exports.object({
407
+ /** Where memory files live, relative to the project root (commit it to share with the team). */
408
+ memoryDir: external_exports.string().default(".yandecode/memory"),
409
+ /** Absolute directories of extra Markdown to index (e.g. personal notes). */
410
+ extraDirs: external_exports.array(external_exports.string()).default([]),
411
+ sessionStartChars: external_exports.number().int().min(0).max(7e3).default(3e3),
412
+ /** Record edits/commands during a session and save an ephemeral summary at SessionEnd. */
413
+ capture: external_exports.boolean().default(true),
414
+ /** Point at related memories when a prompt mentions their subject. */
415
+ promptRecall: external_exports.boolean().default(true),
416
+ sessionTtlDays: external_exports.number().int().min(1).max(365).default(14)
417
+ });
418
+ var knowledgeModule = {
419
+ id: "knowledge",
420
+ title: "Knowledge & memory",
421
+ summary: "Project docs + persistent memory across sessions (decisions, patterns, failures) with progressive disclosure",
422
+ requires: [],
423
+ defaultEnabled: true,
424
+ guidance: "Before re-deriving project knowledge, `knowledge_search` docs and memory (returns ids/titles) and `knowledge_get` the few you need. Record durable decisions, gotchas and failure root causes with `memory_write` (cite sources; supersede instead of contradicting).",
425
+ routing: [
426
+ {
427
+ intent: "Find a past decision, convention or known pitfall, or read project docs",
428
+ use: "knowledge_search(query)",
429
+ insteadOf: "grep over *.md or guessing"
430
+ },
431
+ {
432
+ intent: "Record a decision, gotcha or failure root cause for later sessions",
433
+ use: "memory_write(title, body, kind)",
434
+ insteadOf: "leaving it only in this conversation"
435
+ }
436
+ ],
437
+ hooks: [
438
+ { event: "SessionStart" },
439
+ { event: "UserPromptSubmit" },
440
+ { event: "PostToolUse", matcher: "Bash|Edit|Write|MultiEdit|NotebookEdit|mcp__yandecode__.*" },
441
+ { event: "SessionEnd" }
442
+ ],
443
+ tools: [
444
+ {
445
+ name: "knowledge_search",
446
+ title: "Search docs and memory",
447
+ description: "Instead of grepping *.md files or re-deriving what the project decided: search project docs and remembered decisions, conventions and failures. Returns ids and titles; read details with knowledge_get.",
448
+ inputSchema: searchInput3
449
+ },
450
+ {
451
+ name: "knowledge_get",
452
+ title: "Read docs or memories",
453
+ description: 'Full text of memories (by id, with sources and staleness) or doc sections ("path:start-end") found with knowledge_search.',
454
+ inputSchema: getInput2
455
+ },
456
+ {
457
+ name: "memory_write",
458
+ title: "Remember for later sessions",
459
+ description: "Save a decision, convention, gotcha or failure root cause so future sessions know it. Near-duplicates are merged; durable by default.",
460
+ inputSchema: writeInput
461
+ },
462
+ {
463
+ name: "memory_forget",
464
+ title: "Forget a memory",
465
+ description: "Delete a memory that is wrong or useless (prefer supersedes when it was replaced).",
466
+ inputSchema: forgetInput
467
+ }
468
+ ],
469
+ skills: ["yandecode-memory"],
470
+ agents: [],
471
+ load: async () => (await import("./runtime-WAFQWW4M.js")).runtime
472
+ };
473
+
474
+ // packages/cli/src/modules/lsp/definition.ts
475
+ var path = external_exports.string().min(1).describe("File path relative to the project root");
476
+ var maxChars3 = external_exports.number().int().min(300).max(2e4).optional();
477
+ var referencesInput2 = {
478
+ path,
479
+ name_path: external_exports.string().optional().describe('Symbol declared in `path`, e.g. "AuthService/login"'),
480
+ line: external_exports.number().int().min(1).optional().describe("1-based; with column, instead of name_path"),
481
+ column: external_exports.number().int().min(1).optional(),
482
+ max_chars: maxChars3
483
+ };
484
+ var definitionInput2 = {
485
+ path,
486
+ line: external_exports.number().int().min(1),
487
+ column: external_exports.number().int().min(1)
488
+ };
489
+ var diagnosticsInput = { path, max_chars: maxChars3 };
490
+ var lspSettings = external_exports.object({
491
+ /** Install missing language servers into the user cache on first use. */
492
+ autoInstall: external_exports.boolean().default(true)
493
+ });
494
+ var lspModule = {
495
+ id: "lsp",
496
+ title: "Language servers",
497
+ summary: "Compiler-accurate references, go-to-definition and diagnostics via TypeScript/JavaScript and Python language servers",
498
+ requires: [],
499
+ defaultEnabled: false,
500
+ guidance: "When a rename or signature change must find every caller, or you need type errors for a file you edited, use `lsp_references` / `lsp_definition` / `lsp_diagnostics` (precise, slower to start) instead of lexical search.",
501
+ requirements: [
502
+ "npm registry access the first time a language server is used (installed into the user cache), unless typescript-language-server / pyright-langserver is already installed"
503
+ ],
504
+ routing: [
505
+ {
506
+ intent: "Find every real caller before changing a signature (TS/JS/Python)",
507
+ use: "lsp_references(path, name_path)",
508
+ insteadOf: "grep for the name"
509
+ },
510
+ {
511
+ intent: "Check an edited TS/JS/Python file for type errors",
512
+ use: "lsp_diagnostics(path)",
513
+ insteadOf: "running the full build"
514
+ }
515
+ ],
516
+ hooks: [],
517
+ tools: [
518
+ {
519
+ name: "lsp_references",
520
+ title: "Type-aware references",
521
+ description: "Instead of grep when a rename or signature change must find every real caller (TypeScript/JavaScript/Python): references according to the language server, cross-file and type-aware. Identify the symbol by name_path within path, or by line/column.",
522
+ inputSchema: referencesInput2
523
+ },
524
+ {
525
+ name: "lsp_definition",
526
+ title: "Go to definition",
527
+ description: "Where the symbol at path:line:column is defined, following imports and types (TypeScript/JavaScript/Python).",
528
+ inputSchema: definitionInput2
529
+ },
530
+ {
531
+ name: "lsp_diagnostics",
532
+ title: "Compiler diagnostics",
533
+ description: "Instead of running the whole build to see if an edited file still type-checks: the type errors and warnings the language server reports for that file now (TypeScript/JavaScript/Python).",
534
+ inputSchema: diagnosticsInput
535
+ }
536
+ ],
537
+ skills: [],
538
+ agents: [],
539
+ cli: (program) => {
540
+ const lsp = program.command("lsp").description("Language servers used by the lsp module");
541
+ lsp.command("install [language]").description("Install a language server (typescript, python) into the user cache").action(async (language) => {
542
+ const { runInstallCommand } = await import("./runtime-EY6SVZYP.js");
543
+ process.exitCode = await runInstallCommand(language);
544
+ });
545
+ },
546
+ load: async () => (await import("./runtime-EY6SVZYP.js")).runtime
547
+ };
548
+
549
+ // packages/cli/src/modules/quality/definition.ts
550
+ var checkInput = {
551
+ steps: external_exports.array(external_exports.enum(STEPS)).optional().describe("Subset of format, typecheck, lint, test (default: all detected)"),
552
+ timeout_s: external_exports.number().int().min(10).max(1800).optional().describe("Per step, default 600")
553
+ };
554
+ var qualitySettings = external_exports.object({
555
+ /** Override detected commands, e.g. { "test": "make test" }. */
556
+ commands: external_exports.partialRecord(external_exports.enum(STEPS), external_exports.string()).default({}),
557
+ /** Security pattern warnings after edits. */
558
+ editWarnings: external_exports.boolean().default(true)
559
+ });
560
+ var qualityModule = {
561
+ id: "quality",
562
+ title: "Quality & security review",
563
+ summary: "Runs the project checks (quality_check), warns on risky code right after edits, and ships code/security review agents",
564
+ requires: [],
565
+ defaultEnabled: true,
566
+ guidance: "Verify with `quality_check` before claiming work is done (it runs the project typecheck/lint/tests and returns only failures). For reviews use the yandecode-code-review skill; report only findings you are confident about.",
567
+ routing: [
568
+ {
569
+ intent: "Verify the work before saying it is done",
570
+ use: "quality_check()",
571
+ insteadOf: "guessing or running the checks by hand"
572
+ }
573
+ ],
574
+ hooks: [{ event: "PostToolUse", matcher: "Write|Edit|MultiEdit|NotebookEdit" }],
575
+ tools: [
576
+ {
577
+ name: "quality_check",
578
+ title: "Run project checks",
579
+ description: "Instead of remembering and running the project's typecheck, lint and test commands one by one: runs them (detected or configured) to completion and returns pass/fail per step with only the failing lines.",
580
+ inputSchema: checkInput
581
+ }
582
+ ],
583
+ skills: ["yandecode-code-review", "yandecode-security-review"],
584
+ agents: ["yandecode-reviewer", "yandecode-security-reviewer"],
585
+ load: async () => (await import("./runtime-EKHO2JXB.js")).runtime
586
+ };
587
+
588
+ // packages/cli/src/modules/router/definition.ts
589
+ var routerSettings = external_exports.object({
590
+ model: external_exports.string().default("typesafe/jev-1.13"),
591
+ baseUrl: external_exports.string().default("https://openrouter.ai/api/alpha"),
592
+ /** Emit a routing hint only when Jev is at least this sure (below it, stay silent). */
593
+ minConfidence: external_exports.number().min(0).max(1).default(0.7),
594
+ /** Prompts shorter than this are treated as chit-chat and never sent to Jev. */
595
+ minPromptChars: external_exports.number().int().nonnegative().default(12),
596
+ timeoutMs: external_exports.number().int().positive().default(6e3)
597
+ });
598
+ var routerModule = {
599
+ id: "router",
600
+ title: "Intent router",
601
+ summary: "Classifies each turn with Jev and points to the matching YandeCode tool (opt-in, needs OPENROUTER_API_KEY, fail-open)",
602
+ requires: [],
603
+ defaultEnabled: false,
604
+ guidance: "When a turn matches one of the YandeCode tools, an intent router adds a one-line hint naming it. The hint is advisory \u2014 use the named tool when it fits, or ignore it.",
605
+ hooks: [{ event: "UserPromptSubmit" }],
606
+ skills: [],
607
+ agents: [],
608
+ load: async () => (await import("./runtime-CKMVHAU4.js")).runtime
609
+ };
610
+
611
+ // packages/cli/src/modules/workflow/definition.ts
612
+ var newInput = {
613
+ title: external_exports.string().min(3).max(120),
614
+ why: external_exports.string().min(1).max(4e3).describe("The problem and who has it"),
615
+ what: external_exports.string().max(4e3).optional().describe("What changes (bullets)")
616
+ };
617
+ var statusInput = {
618
+ id: external_exports.string().optional().describe("Omit to list all active changes")
619
+ };
620
+ var nextInput = { id: external_exports.string().min(1) };
621
+ var checkInput2 = {
622
+ id: external_exports.string().min(1),
623
+ task_id: external_exports.string().min(1),
624
+ evidence: external_exports.string().max(500).optional().describe('How it was verified, e.g. "vitest: 12 passed"')
625
+ };
626
+ var archiveInput = { id: external_exports.string().min(1) };
627
+ var workflowSettings = external_exports.object({
628
+ /** Where change folders live; defaults to openspec/changes if present, else docs/changes. */
629
+ changesDir: external_exports.string().optional()
630
+ });
631
+ var workflowModule = {
632
+ id: "workflow",
633
+ title: "Development workflow",
634
+ summary: "Brainstorm \u2192 spec \u2192 plan \u2192 TDD \u2192 verify, with resumable change folders (OpenSpec-shaped) and task tracking",
635
+ requires: [],
636
+ defaultEnabled: true,
637
+ guidance: "For non-trivial work follow the yandecode-workflow skill: `work_new` a change, write the plan into its tasks.md, implement task by task with TDD (`work_next` / `work_check` with evidence). `work_status` shows where any change stands after an interruption.",
638
+ routing: [
639
+ {
640
+ intent: "Work through the tasks of a change (docs/changes or openspec/changes)",
641
+ use: "work_next(id), then work_check(id, task_id, evidence)",
642
+ insteadOf: "reading and editing tasks.md by hand"
643
+ }
644
+ ],
645
+ hooks: [{ event: "SessionStart" }],
646
+ tools: [
647
+ {
648
+ name: "work_new",
649
+ title: "Start a change",
650
+ description: "Create a change folder (proposal.md with Why/What) for work that spans several steps or sessions.",
651
+ inputSchema: newInput
652
+ },
653
+ {
654
+ name: "work_status",
655
+ title: "Change status",
656
+ description: "Where a change (or every active change) stands: stage and task progress, derived from its files.",
657
+ inputSchema: statusInput
658
+ },
659
+ {
660
+ name: "work_next",
661
+ title: "Next task",
662
+ description: "Instead of reading tasks.md by hand: the next unchecked task of a change with its acceptance criteria and notes.",
663
+ inputSchema: nextInput
664
+ },
665
+ {
666
+ name: "work_check",
667
+ title: "Check off a task",
668
+ description: "Instead of editing tasks.md by hand: mark a task done after verifying it and log the evidence.",
669
+ inputSchema: checkInput2
670
+ },
671
+ {
672
+ name: "work_archive",
673
+ title: "Archive a change",
674
+ description: "Move a finished change to the archive.",
675
+ inputSchema: archiveInput
676
+ }
677
+ ],
678
+ skills: ["yandecode-workflow", "yandecode-tdd", "yandecode-debugging", "yandecode-verification"],
679
+ agents: [],
680
+ load: async () => (await import("./runtime-UB2O2HUN.js")).runtime
681
+ };
682
+
683
+ // packages/cli/src/modules/instructions/definition.ts
684
+ var instructionsModule = {
685
+ id: "instructions",
686
+ title: "Project instructions",
687
+ summary: "Audits CLAUDE.md/AGENTS.md (size, broken paths, unknown commands, duplicates) and reports project conventions",
688
+ requires: [],
689
+ defaultEnabled: true,
690
+ guidance: "After editing CLAUDE.md or AGENTS.md, run `instructions_audit` and fix what it reports; keep instruction files short (commands, non-obvious rules) and move long guidance into skills or docs.",
691
+ routing: [
692
+ {
693
+ intent: "Check CLAUDE.md / AGENTS.md after editing them",
694
+ use: "instructions_audit()",
695
+ insteadOf: "reviewing them by eye"
696
+ }
697
+ ],
698
+ hooks: [],
699
+ tools: [
700
+ {
701
+ name: "instructions_audit",
702
+ title: "Audit agent instructions",
703
+ description: "After editing CLAUDE.md or AGENTS.md: report their token cost, references to missing files or scripts, duplicated rules and the detected project conventions.",
704
+ inputSchema: {}
705
+ }
706
+ ],
707
+ skills: ["yandecode-instructions"],
708
+ agents: [],
709
+ cli: (program) => {
710
+ program.command("instructions").description("Agent instruction files").command("audit").description("Audit CLAUDE.md / AGENTS.md (same as the instructions_audit tool)").action(async () => {
711
+ const { runAuditCommand } = await import("./runtime-3E4NIFAL.js");
712
+ process.exitCode = runAuditCommand(process.cwd());
713
+ });
714
+ },
715
+ load: async () => (await import("./runtime-3E4NIFAL.js")).runtime
716
+ };
717
+
718
+ // packages/cli/src/modules/registry.ts
719
+ var MODULES = [
720
+ codeModule,
721
+ lspModule,
722
+ contextModule,
723
+ knowledgeModule,
724
+ libdocsModule,
725
+ qualityModule,
726
+ workflowModule,
727
+ instructionsModule,
728
+ guardModule,
729
+ routerModule
730
+ ];
731
+
732
+ export {
733
+ searchInput,
734
+ symbolsInput,
735
+ definitionInput,
736
+ referencesInput,
737
+ repoMapInput,
738
+ codeModule,
739
+ runInput,
740
+ fetchInput,
741
+ searchInput2,
742
+ getInput,
743
+ contextSettings,
744
+ guardSettings,
745
+ detectChecks,
746
+ parseMemory,
747
+ serializeMemory,
748
+ searchInput3,
749
+ getInput2,
750
+ writeInput,
751
+ forgetInput,
752
+ knowledgeSettings,
753
+ referencesInput2,
754
+ definitionInput2,
755
+ diagnosticsInput,
756
+ lspSettings,
757
+ checkInput,
758
+ qualitySettings,
759
+ routerSettings,
760
+ newInput,
761
+ statusInput,
762
+ nextInput,
763
+ checkInput2,
764
+ archiveInput,
765
+ workflowSettings,
766
+ MODULES
767
+ };
768
+ //# sourceMappingURL=chunk-7L6DD2VD.js.map