@kodax-ai/kodax 0.7.95 → 0.7.96-alpha.2

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 (163) hide show
  1. package/CHANGELOG.md +178 -1
  2. package/LICENSE +158 -158
  3. package/README.md +149 -24
  4. package/README_CN.md +117 -24
  5. package/config-templates/config.example.jsonc +2 -1
  6. package/config-templates/integrations/a2a.example.jsonc +91 -91
  7. package/config-templates/integrations/extensions.example.jsonc +7 -7
  8. package/config-templates/integrations/mcp.example.jsonc +16 -16
  9. package/dist/builtin/code-review/SKILL.md +82 -82
  10. package/dist/builtin/git-workflow/SKILL.md +84 -84
  11. package/dist/builtin/skill-creator/SKILL.md +127 -127
  12. package/dist/builtin/skill-creator/agents/analyzer.md +12 -12
  13. package/dist/builtin/skill-creator/agents/comparator.md +13 -13
  14. package/dist/builtin/skill-creator/agents/grader.md +13 -13
  15. package/dist/builtin/skill-creator/references/schemas.md +227 -227
  16. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -46
  17. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.js +208 -208
  18. package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -46
  19. package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +286 -286
  20. package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -62
  21. package/dist/builtin/skill-creator/scripts/compare-runs.js +330 -330
  22. package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -33
  23. package/dist/builtin/skill-creator/scripts/generate-review.js +414 -414
  24. package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -73
  25. package/dist/builtin/skill-creator/scripts/grade-evals.js +402 -402
  26. package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -23
  27. package/dist/builtin/skill-creator/scripts/improve-description.js +160 -160
  28. package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -14
  29. package/dist/builtin/skill-creator/scripts/init-skill.js +155 -155
  30. package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -29
  31. package/dist/builtin/skill-creator/scripts/install-skill.js +173 -173
  32. package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -38
  33. package/dist/builtin/skill-creator/scripts/package-skill.js +121 -121
  34. package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -8
  35. package/dist/builtin/skill-creator/scripts/quick-validate.js +163 -163
  36. package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -66
  37. package/dist/builtin/skill-creator/scripts/run-eval.js +353 -353
  38. package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -49
  39. package/dist/builtin/skill-creator/scripts/run-loop.js +242 -242
  40. package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -58
  41. package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +224 -224
  42. package/dist/builtin/tdd/SKILL.md +56 -56
  43. package/dist/chunks/agent-4FABF6WK.js +2 -0
  44. package/dist/chunks/argument-completer-72VHB2VL.js +2 -0
  45. package/dist/chunks/{chunk-7JXA3533.js → chunk-4OIQZWA5.js} +223 -226
  46. package/dist/chunks/{chunk-BNVSKIAB.js → chunk-6BVF3HZ7.js} +136 -136
  47. package/dist/chunks/chunk-7JZZIFZH.js +501 -0
  48. package/dist/chunks/chunk-AC7Z2OIY.js +2 -0
  49. package/dist/chunks/{chunk-JS452J2F.js → chunk-C4KYZAFU.js} +2 -2
  50. package/dist/chunks/chunk-CHUPIWIF.js +251 -0
  51. package/dist/chunks/{chunk-C4DTUKTR.js → chunk-GYUU7XLH.js} +5 -4
  52. package/dist/chunks/{chunk-OK4AXDC5.js → chunk-HAX55GOQ.js} +1 -1
  53. package/dist/chunks/chunk-JKTJCGO2.js +418 -0
  54. package/dist/chunks/{chunk-O743AJ5V.js → chunk-LQYETRFK.js} +171 -175
  55. package/dist/chunks/{chunk-2PEDBGKN.js → chunk-LTUZTQ6W.js} +1 -1
  56. package/dist/chunks/chunk-LYWDUSKO.js +2 -0
  57. package/dist/chunks/chunk-NGH6T4FD.js +92 -0
  58. package/dist/chunks/{chunk-SRIJX5ZP.js → chunk-NVRWCSA5.js} +1 -1
  59. package/dist/chunks/chunk-O4DS7RIQ.js +384 -0
  60. package/dist/chunks/chunk-ORXU6OWZ.js +2 -0
  61. package/dist/chunks/chunk-POTW3O65.js +124 -0
  62. package/dist/chunks/{chunk-2TM3W3GK.js → chunk-RIQSS56Y.js} +1 -1
  63. package/dist/chunks/chunk-U27XKEN5.js +407 -0
  64. package/dist/chunks/{chunk-6ABQJUK6.js → chunk-XUX6OUCA.js} +2 -2
  65. package/dist/chunks/{client-JDOS3YJR.js → client-4C456K4O.js} +1 -1
  66. package/dist/chunks/compaction-config-3VQRDFF4.js +2 -0
  67. package/dist/chunks/{construction-bootstrap-YCWHHUYO.js → construction-bootstrap-AHN7EDGG.js} +1 -1
  68. package/dist/chunks/dist-BCBQXAGI.js +2 -0
  69. package/dist/chunks/dist-QK2YDWU6.js +2 -0
  70. package/dist/chunks/host-VIHV7ADG.js +2 -0
  71. package/dist/chunks/run-manager-NBVMU3KV.js +2 -0
  72. package/dist/chunks/utils-MEJZ2IGI.js +2 -0
  73. package/dist/index.d.ts +22 -21
  74. package/dist/index.js +7 -7
  75. package/dist/kodax_bootstrap.js +26 -26
  76. package/dist/kodax_cli.js +1905 -1882
  77. package/dist/native/darwin-arm64/LICENSE-APACHE.txt +13 -0
  78. package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
  79. package/dist/native/darwin-arm64/manifest.json +16 -0
  80. package/dist/native/darwin-x64/LICENSE-APACHE.txt +13 -0
  81. package/dist/native/darwin-x64/kodax-text-transaction.node +0 -0
  82. package/dist/native/darwin-x64/manifest.json +16 -0
  83. package/dist/native/linux-arm64/LICENSE-APACHE.txt +13 -0
  84. package/dist/native/linux-arm64/kodax-text-transaction.node +0 -0
  85. package/dist/native/linux-arm64/manifest.json +16 -0
  86. package/dist/native/linux-x64/LICENSE-APACHE.txt +13 -0
  87. package/dist/native/linux-x64/kodax-text-transaction.node +0 -0
  88. package/dist/native/linux-x64/manifest.json +16 -0
  89. package/dist/native/win32-x64/LICENSE-APACHE.txt +13 -0
  90. package/dist/native/win32-x64/NOTICE-windows-sandbox.txt +8 -0
  91. package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
  92. package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
  93. package/dist/native/win32-x64/manifest.json +30 -0
  94. package/dist/provider-capabilities.json +108 -2
  95. package/dist/runtime-worker.js +1745 -1727
  96. package/dist/sandbox-network-broker.js +1715 -0
  97. package/dist/sdk-a2a.d.ts +13 -12
  98. package/dist/sdk-a2a.js +1 -1
  99. package/dist/sdk-agent.d.ts +27 -18
  100. package/dist/sdk-agent.js +1 -1
  101. package/dist/sdk-coding.d.ts +107 -58
  102. package/dist/sdk-coding.js +1 -1
  103. package/dist/sdk-experimental-memory.d.ts +4 -4
  104. package/dist/sdk-experimental-memory.js +1 -1
  105. package/dist/sdk-llm.d.ts +9 -10
  106. package/dist/sdk-llm.js +1 -1
  107. package/dist/sdk-mcp.js +1 -1
  108. package/dist/sdk-media.d.ts +1 -1
  109. package/dist/sdk-media.js +1 -1
  110. package/dist/sdk-repl.d.ts +25 -17
  111. package/dist/sdk-repl.js +1 -1
  112. package/dist/sdk-runtime.d.ts +41 -17
  113. package/dist/sdk-runtime.js +1 -1
  114. package/dist/sdk-sandbox.d.ts +17 -3
  115. package/dist/sdk-sandbox.js +1 -1
  116. package/dist/sdk-session.d.ts +8 -7
  117. package/dist/sdk-session.js +1 -1
  118. package/dist/sdk-skills.js +1 -1
  119. package/dist/semantic-worker.js +61 -61
  120. package/dist/types-chunks/{base.d-vopO1rml.d.ts → base.d-COo8E2dk.d.ts} +18 -27
  121. package/dist/types-chunks/{bash-prefix-extractor.d-B2rxNI4L.d.ts → bash-prefix-extractor.d-DQOlA8cy.d.ts} +72 -52
  122. package/dist/types-chunks/{capability-learning.d-CE1tm29C.d.ts → capability-learning.d-lRPgA3Or.d.ts} +1 -1
  123. package/dist/types-chunks/{capsule.d-Y7QRS4J2.d.ts → capsule.d-0zxsgXg_.d.ts} +3 -3
  124. package/dist/types-chunks/{controller.d-BR-UVeUR.d.ts → controller.d-BTtyIIC1.d.ts} +1 -1
  125. package/dist/types-chunks/{controller.d-C5noq5-w.d.ts → controller.d-C7tXUcXo.d.ts} +2 -2
  126. package/dist/types-chunks/{guardrail.d-DqHD-61O.d.ts → guardrail.d-DKTyEHJa.d.ts} +5 -5
  127. package/dist/types-chunks/{history-retrieval.d-CKU8zmt_.d.ts → history-retrieval.d-CHnL99S7.d.ts} +2 -2
  128. package/dist/types-chunks/{public-api.d-D7fXaWW8.d.ts → public-api.d-Dx3L3W4Z.d.ts} +7 -4
  129. package/dist/types-chunks/{repl.d-BYDb14s6.d.ts → repl.d-mO01olIa.d.ts} +5 -5
  130. package/dist/types-chunks/{resolver.d-CwHUwbdE.d.ts → resolver.d-DlXPjeyx.d.ts} +38 -6
  131. package/dist/types-chunks/{review-inbox.d-BSgFewyj.d.ts → review-inbox.d-WDSe1nze.d.ts} +1 -1
  132. package/dist/types-chunks/{run-manager.d-BVJSntpS.d.ts → run-manager.d-DENbbzgR.d.ts} +1 -1
  133. package/dist/types-chunks/{sdk-session-CqEG84oP.d.ts → sdk-session-DYHGXXH4.d.ts} +3 -3
  134. package/dist/types-chunks/{shell-command-sets.d-DqaaBwhU.d.ts → shell-command-sets.d-CjFqS4dp.d.ts} +1 -1
  135. package/dist/types-chunks/{side-query.d-iH0P9ASy.d.ts → side-query.d-j8A3sFv_.d.ts} +2 -2
  136. package/dist/types-chunks/{types.d-rUOjXych.d.ts → types.d-BbZjR0Wr.d.ts} +1 -1
  137. package/dist/types-chunks/{types.d-CaTXAW_Q.d.ts → types.d-BkTIKdH6.d.ts} +2 -2
  138. package/dist/types-chunks/{types.d-C5xQEFcj.d.ts → types.d-DncLrpu_.d.ts} +4 -4
  139. package/dist/types-chunks/{types.d-CK9A9rpP.d.ts → types.d-Xy0f3x4i.d.ts} +9 -0
  140. package/dist/types-chunks/{utils.d-CWUyLiXo.d.ts → utils.d-CnxefMos.d.ts} +6 -6
  141. package/package.json +10 -3
  142. package/public_docs/README.md +130 -0
  143. package/public_docs/configuration/sandbox.md +289 -0
  144. package/public_docs/sdk/embedder-guide.md +6674 -0
  145. package/scripts/kodax-bin.cjs +28 -28
  146. package/scripts/production-env.cjs +25 -25
  147. package/dist/chunks/agent-XXZMXKKA.js +0 -2
  148. package/dist/chunks/argument-completer-KCYDGTQW.js +0 -2
  149. package/dist/chunks/chunk-77PNP27P.js +0 -92
  150. package/dist/chunks/chunk-7QBWHCIZ.js +0 -2
  151. package/dist/chunks/chunk-BHE66SP3.js +0 -123
  152. package/dist/chunks/chunk-BR2OSB2I.js +0 -722
  153. package/dist/chunks/chunk-DSMONSVB.js +0 -407
  154. package/dist/chunks/chunk-Q5VRWSKG.js +0 -418
  155. package/dist/chunks/chunk-XWRPOGJN.js +0 -4
  156. package/dist/chunks/chunk-Y5VIQBT6.js +0 -383
  157. package/dist/chunks/compaction-config-EGS4577X.js +0 -2
  158. package/dist/chunks/dist-ITTXQHRJ.js +0 -2
  159. package/dist/chunks/dist-KFYN3OKD.js +0 -2
  160. package/dist/chunks/host-VAYADIPW.js +0 -2
  161. package/dist/chunks/run-manager-52IJZMZJ.js +0 -2
  162. package/dist/chunks/utils-P7PBSL3R.js +0 -2
  163. package/dist/sandbox-workspace-session.js +0 -1705
@@ -1,23 +1,23 @@
1
- export interface ImproveDescriptionOptions {
2
- skillPath: string;
3
- evalResultsPath: string;
4
- provider?: string;
5
- model?: string;
6
- output?: string;
7
- write?: boolean;
8
- historyPath?: string;
9
- maxIter?: number;
10
- reasoningMode?: string;
11
- }
12
-
13
- export interface ImproveDescriptionResult {
14
- description: string;
15
- rawResponse: string;
16
- prompt: string;
17
- }
18
-
19
- export function extractDescriptionCandidate(text: string): string;
20
- export function improveDescription(
21
- options: ImproveDescriptionOptions,
22
- generator?: (prompt: string, options: ImproveDescriptionOptions) => Promise<string>
23
- ): Promise<ImproveDescriptionResult>;
1
+ export interface ImproveDescriptionOptions {
2
+ skillPath: string;
3
+ evalResultsPath: string;
4
+ provider?: string;
5
+ model?: string;
6
+ output?: string;
7
+ write?: boolean;
8
+ historyPath?: string;
9
+ maxIter?: number;
10
+ reasoningMode?: string;
11
+ }
12
+
13
+ export interface ImproveDescriptionResult {
14
+ description: string;
15
+ rawResponse: string;
16
+ prompt: string;
17
+ }
18
+
19
+ export function extractDescriptionCandidate(text: string): string;
20
+ export function improveDescription(
21
+ options: ImproveDescriptionOptions,
22
+ generator?: (prompt: string, options: ImproveDescriptionOptions) => Promise<string>
23
+ ): Promise<ImproveDescriptionResult>;
@@ -1,162 +1,162 @@
1
- #!/usr/bin/env node
2
-
3
- import { readFile, writeFile } from 'node:fs/promises';
4
- import path from 'node:path';
5
- import { fileURLToPath } from 'node:url';
6
- import {
7
- extractTaggedText,
8
- loadKodaXSDK,
9
- loadSkill,
10
- pathExists,
11
- writeSkill,
12
- } from './utils.js';
13
-
14
- function buildImprovePrompt({ skillName, body, currentDescription, evalResults, history }) {
15
- const failed = evalResults.results.filter((item) => !item.pass);
16
- const historyText = history.length === 0
17
- ? 'None.'
18
- : history.map((item, index) => `${index + 1}. ${item.description} (${item.score})`).join('\n');
19
-
20
- return [
21
- `You are improving the trigger description for a KodaX skill named "${skillName}".`,
22
- 'Write a better description that stays under 1024 characters and focuses on user intent.',
23
- 'Respond with only the new description inside <new_description> tags.',
24
- '',
25
- `Current description: ${currentDescription}`,
26
- '',
27
- 'Skill body for context:',
28
- body,
29
- '',
30
- 'Failed eval cases:',
31
- failed.length === 0 ? 'None.' : JSON.stringify(failed, null, 2),
32
- '',
33
- 'Previous attempts:',
34
- historyText,
35
- ].join('\n');
36
- }
37
-
38
- export function extractDescriptionCandidate(text) {
39
- const tagged = extractTaggedText(text, 'new_description');
40
- return (tagged ?? text).trim().replace(/^"|"$/g, '');
41
- }
42
-
43
- async function defaultGenerate(prompt, options) {
44
- const { runKodaX } = await loadKodaXSDK();
45
- const result = await runKodaX(
46
- {
47
- provider: options.provider,
48
- model: options.model,
49
- maxIter: options.maxIter ?? 18,
50
- reasoningMode: options.reasoningMode ?? 'off',
51
- thinking: options.reasoningMode ? options.reasoningMode !== 'off' : false,
52
- },
53
- prompt
54
- );
55
-
56
- return result.lastText;
57
- }
58
-
59
- export async function improveDescription(options, generator = defaultGenerate) {
60
- const skill = await loadSkill(options.skillPath);
61
- const evalResults = JSON.parse(await readFile(options.evalResultsPath, 'utf8'));
62
- const history = options.historyPath && await pathExists(options.historyPath)
63
- ? JSON.parse(await readFile(options.historyPath, 'utf8')).history ?? []
64
- : [];
65
-
66
- const prompt = buildImprovePrompt({
67
- skillName: skill.frontmatter.name,
68
- body: skill.body,
69
- currentDescription: String(evalResults.description ?? skill.frontmatter.description ?? ''),
70
- evalResults,
71
- history,
72
- });
73
-
74
- const rawResponse = await generator(prompt, options);
75
- const description = extractDescriptionCandidate(rawResponse);
76
- if (!description) {
77
- throw new Error('No description candidate was produced.');
78
- }
79
- if (description.length > 1024) {
80
- throw new Error(`Generated description is too long (${description.length}/1024).`);
81
- }
82
-
83
- return {
84
- description,
85
- rawResponse,
86
- prompt,
87
- };
88
- }
89
-
90
- function parseArgs(argv) {
91
- const args = {
92
- skillPath: '',
93
- evalResultsPath: '',
94
- provider: 'anthropic',
95
- model: undefined,
96
- output: undefined,
97
- write: false,
98
- historyPath: undefined,
99
- maxIter: 18,
100
- reasoningMode: 'off',
101
- };
102
-
103
- for (let index = 2; index < argv.length; index += 1) {
104
- const token = argv[index];
105
- if (token === '--skill-path' && argv[index + 1]) {
106
- args.skillPath = argv[++index];
107
- } else if (token === '--eval-results' && argv[index + 1]) {
108
- args.evalResultsPath = argv[++index];
109
- } else if (token === '--provider' && argv[index + 1]) {
110
- args.provider = argv[++index];
111
- } else if (token === '--model' && argv[index + 1]) {
112
- args.model = argv[++index];
113
- } else if (token === '--output' && argv[index + 1]) {
114
- args.output = argv[++index];
115
- } else if (token === '--write') {
116
- args.write = true;
117
- } else if (token === '--history' && argv[index + 1]) {
118
- args.historyPath = argv[++index];
119
- } else if (token === '--max-iter' && argv[index + 1]) {
120
- args.maxIter = Number(argv[++index]);
121
- } else if (token === '--reasoning' && argv[index + 1]) {
122
- args.reasoningMode = argv[++index];
123
- }
124
- }
125
-
126
- return args;
127
- }
128
-
129
- async function main() {
130
- const args = parseArgs(process.argv);
131
- if (!args.skillPath || !args.evalResultsPath) {
132
- console.error('Usage: node scripts/improve-description.js --skill-path <dir> --eval-results <results.json> [--write] [--output result.json]');
133
- process.exit(1);
134
- }
135
-
136
- const result = await improveDescription(args);
137
- const output = `${JSON.stringify(result, null, 2)}\n`;
138
-
139
- if (args.write) {
140
- const skill = await loadSkill(args.skillPath);
141
- skill.frontmatter.description = result.description;
142
- await writeSkill(args.skillPath, skill.frontmatter, skill.body);
143
- }
144
-
145
- if (args.output) {
146
- await writeFile(args.output, output, 'utf8');
147
- console.log(`Wrote ${path.resolve(args.output)}`);
148
- } else {
149
- process.stdout.write(output);
150
- }
151
- }
152
-
1
+ #!/usr/bin/env node
2
+
3
+ import { readFile, writeFile } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import {
7
+ extractTaggedText,
8
+ loadKodaXSDK,
9
+ loadSkill,
10
+ pathExists,
11
+ writeSkill,
12
+ } from './utils.js';
13
+
14
+ function buildImprovePrompt({ skillName, body, currentDescription, evalResults, history }) {
15
+ const failed = evalResults.results.filter((item) => !item.pass);
16
+ const historyText = history.length === 0
17
+ ? 'None.'
18
+ : history.map((item, index) => `${index + 1}. ${item.description} (${item.score})`).join('\n');
19
+
20
+ return [
21
+ `You are improving the trigger description for a KodaX skill named "${skillName}".`,
22
+ 'Write a better description that stays under 1024 characters and focuses on user intent.',
23
+ 'Respond with only the new description inside <new_description> tags.',
24
+ '',
25
+ `Current description: ${currentDescription}`,
26
+ '',
27
+ 'Skill body for context:',
28
+ body,
29
+ '',
30
+ 'Failed eval cases:',
31
+ failed.length === 0 ? 'None.' : JSON.stringify(failed, null, 2),
32
+ '',
33
+ 'Previous attempts:',
34
+ historyText,
35
+ ].join('\n');
36
+ }
37
+
38
+ export function extractDescriptionCandidate(text) {
39
+ const tagged = extractTaggedText(text, 'new_description');
40
+ return (tagged ?? text).trim().replace(/^"|"$/g, '');
41
+ }
42
+
43
+ async function defaultGenerate(prompt, options) {
44
+ const { runKodaX } = await loadKodaXSDK();
45
+ const result = await runKodaX(
46
+ {
47
+ provider: options.provider,
48
+ model: options.model,
49
+ maxIter: options.maxIter ?? 18,
50
+ reasoningMode: options.reasoningMode ?? 'off',
51
+ thinking: options.reasoningMode ? options.reasoningMode !== 'off' : false,
52
+ },
53
+ prompt
54
+ );
55
+
56
+ return result.lastText;
57
+ }
58
+
59
+ export async function improveDescription(options, generator = defaultGenerate) {
60
+ const skill = await loadSkill(options.skillPath);
61
+ const evalResults = JSON.parse(await readFile(options.evalResultsPath, 'utf8'));
62
+ const history = options.historyPath && await pathExists(options.historyPath)
63
+ ? JSON.parse(await readFile(options.historyPath, 'utf8')).history ?? []
64
+ : [];
65
+
66
+ const prompt = buildImprovePrompt({
67
+ skillName: skill.frontmatter.name,
68
+ body: skill.body,
69
+ currentDescription: String(evalResults.description ?? skill.frontmatter.description ?? ''),
70
+ evalResults,
71
+ history,
72
+ });
73
+
74
+ const rawResponse = await generator(prompt, options);
75
+ const description = extractDescriptionCandidate(rawResponse);
76
+ if (!description) {
77
+ throw new Error('No description candidate was produced.');
78
+ }
79
+ if (description.length > 1024) {
80
+ throw new Error(`Generated description is too long (${description.length}/1024).`);
81
+ }
82
+
83
+ return {
84
+ description,
85
+ rawResponse,
86
+ prompt,
87
+ };
88
+ }
89
+
90
+ function parseArgs(argv) {
91
+ const args = {
92
+ skillPath: '',
93
+ evalResultsPath: '',
94
+ provider: 'anthropic',
95
+ model: undefined,
96
+ output: undefined,
97
+ write: false,
98
+ historyPath: undefined,
99
+ maxIter: 18,
100
+ reasoningMode: 'off',
101
+ };
102
+
103
+ for (let index = 2; index < argv.length; index += 1) {
104
+ const token = argv[index];
105
+ if (token === '--skill-path' && argv[index + 1]) {
106
+ args.skillPath = argv[++index];
107
+ } else if (token === '--eval-results' && argv[index + 1]) {
108
+ args.evalResultsPath = argv[++index];
109
+ } else if (token === '--provider' && argv[index + 1]) {
110
+ args.provider = argv[++index];
111
+ } else if (token === '--model' && argv[index + 1]) {
112
+ args.model = argv[++index];
113
+ } else if (token === '--output' && argv[index + 1]) {
114
+ args.output = argv[++index];
115
+ } else if (token === '--write') {
116
+ args.write = true;
117
+ } else if (token === '--history' && argv[index + 1]) {
118
+ args.historyPath = argv[++index];
119
+ } else if (token === '--max-iter' && argv[index + 1]) {
120
+ args.maxIter = Number(argv[++index]);
121
+ } else if (token === '--reasoning' && argv[index + 1]) {
122
+ args.reasoningMode = argv[++index];
123
+ }
124
+ }
125
+
126
+ return args;
127
+ }
128
+
129
+ async function main() {
130
+ const args = parseArgs(process.argv);
131
+ if (!args.skillPath || !args.evalResultsPath) {
132
+ console.error('Usage: node scripts/improve-description.js --skill-path <dir> --eval-results <results.json> [--write] [--output result.json]');
133
+ process.exit(1);
134
+ }
135
+
136
+ const result = await improveDescription(args);
137
+ const output = `${JSON.stringify(result, null, 2)}\n`;
138
+
139
+ if (args.write) {
140
+ const skill = await loadSkill(args.skillPath);
141
+ skill.frontmatter.description = result.description;
142
+ await writeSkill(args.skillPath, skill.frontmatter, skill.body);
143
+ }
144
+
145
+ if (args.output) {
146
+ await writeFile(args.output, output, 'utf8');
147
+ console.log(`Wrote ${path.resolve(args.output)}`);
148
+ } else {
149
+ process.stdout.write(output);
150
+ }
151
+ }
152
+
153
153
  const isDirectRun = process.env.KODAX_MODULE_BUNDLE !== 'true'
154
154
  && process.argv[1]
155
- && fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
156
-
157
- if (isDirectRun) {
158
- main().catch((error) => {
159
- console.error(error instanceof Error ? error.message : String(error));
160
- process.exit(1);
161
- });
162
- }
155
+ && fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
156
+
157
+ if (isDirectRun) {
158
+ main().catch((error) => {
159
+ console.error(error instanceof Error ? error.message : String(error));
160
+ process.exit(1);
161
+ });
162
+ }
@@ -1,15 +1,15 @@
1
- export interface InitSkillOptions {
2
- name: string;
3
- baseDir?: string;
4
- description?: string;
5
- force?: boolean;
6
- includeEvals?: boolean;
7
- }
8
-
9
- export function renderSkillTemplate(name: string, description: string): string;
10
- export function renderEvalTemplate(name: string): string;
11
- export function initSkill(options: InitSkillOptions): Promise<{
12
- skillDir: string;
13
- created: string[];
14
- }>;
1
+ export interface InitSkillOptions {
2
+ name: string;
3
+ baseDir?: string;
4
+ description?: string;
5
+ force?: boolean;
6
+ includeEvals?: boolean;
7
+ }
8
+
9
+ export function renderSkillTemplate(name: string, description: string): string;
10
+ export function renderEvalTemplate(name: string): string;
11
+ export function initSkill(options: InitSkillOptions): Promise<{
12
+ skillDir: string;
13
+ created: string[];
14
+ }>;
15
15
  export declare function main(argv?: string[]): Promise<void>;