@actrun_ai/tastekit-cli 0.1.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 (57) hide show
  1. package/dist/cli.d.ts +8 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +67 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/commands/compile.d.ts +3 -0
  6. package/dist/commands/compile.d.ts.map +1 -0
  7. package/dist/commands/compile.js +61 -0
  8. package/dist/commands/compile.js.map +1 -0
  9. package/dist/commands/completion.d.ts +9 -0
  10. package/dist/commands/completion.d.ts.map +1 -0
  11. package/dist/commands/completion.js +191 -0
  12. package/dist/commands/completion.js.map +1 -0
  13. package/dist/commands/drift.d.ts +3 -0
  14. package/dist/commands/drift.d.ts.map +1 -0
  15. package/dist/commands/drift.js +175 -0
  16. package/dist/commands/drift.js.map +1 -0
  17. package/dist/commands/eval.d.ts +3 -0
  18. package/dist/commands/eval.d.ts.map +1 -0
  19. package/dist/commands/eval.js +147 -0
  20. package/dist/commands/eval.js.map +1 -0
  21. package/dist/commands/export.d.ts +3 -0
  22. package/dist/commands/export.d.ts.map +1 -0
  23. package/dist/commands/export.js +279 -0
  24. package/dist/commands/export.js.map +1 -0
  25. package/dist/commands/import.d.ts +3 -0
  26. package/dist/commands/import.d.ts.map +1 -0
  27. package/dist/commands/import.js +315 -0
  28. package/dist/commands/import.js.map +1 -0
  29. package/dist/commands/init.d.ts +5 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +213 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/mcp.d.ts +3 -0
  34. package/dist/commands/mcp.d.ts.map +1 -0
  35. package/dist/commands/mcp.js +226 -0
  36. package/dist/commands/mcp.js.map +1 -0
  37. package/dist/commands/onboard.d.ts +6 -0
  38. package/dist/commands/onboard.d.ts.map +1 -0
  39. package/dist/commands/onboard.js +186 -0
  40. package/dist/commands/onboard.js.map +1 -0
  41. package/dist/commands/simulate.d.ts +3 -0
  42. package/dist/commands/simulate.d.ts.map +1 -0
  43. package/dist/commands/simulate.js +14 -0
  44. package/dist/commands/simulate.js.map +1 -0
  45. package/dist/commands/skills.d.ts +3 -0
  46. package/dist/commands/skills.d.ts.map +1 -0
  47. package/dist/commands/skills.js +419 -0
  48. package/dist/commands/skills.js.map +1 -0
  49. package/dist/commands/trust.d.ts +3 -0
  50. package/dist/commands/trust.d.ts.map +1 -0
  51. package/dist/commands/trust.js +183 -0
  52. package/dist/commands/trust.js.map +1 -0
  53. package/dist/ui.d.ts +70 -0
  54. package/dist/ui.d.ts.map +1 -0
  55. package/dist/ui.js +144 -0
  56. package/dist/ui.js.map +1 -0
  57. package/package.json +51 -0
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * TasteKit CLI
4
+ *
5
+ * Command-line interface for TasteKit taste compilation and management.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
package/dist/cli.js ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * TasteKit CLI
4
+ *
5
+ * Command-line interface for TasteKit taste compilation and management.
6
+ */
7
+ import { Command } from 'commander';
8
+ import { readFileSync } from 'fs';
9
+ import { fileURLToPath } from 'url';
10
+ import { dirname, join } from 'path';
11
+ import { initCommand } from './commands/init.js';
12
+ import { onboardCommand } from './commands/onboard.js';
13
+ import { compileCommand } from './commands/compile.js';
14
+ import { mcpCommand } from './commands/mcp.js';
15
+ import { trustCommand } from './commands/trust.js';
16
+ import { skillsCommand } from './commands/skills.js';
17
+ import { driftCommand } from './commands/drift.js';
18
+ import { evalCommand } from './commands/eval.js';
19
+ import { exportCommand } from './commands/export.js';
20
+ import { importCommand } from './commands/import.js';
21
+ import { completionCommand } from './commands/completion.js';
22
+ const __dirname = dirname(fileURLToPath(import.meta.url));
23
+ const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
24
+ const program = new Command();
25
+ program
26
+ .name('tastekit')
27
+ .description('Compile your taste into portable AI agent artifacts')
28
+ .version(pkg.version);
29
+ // Global options
30
+ program.option('--json', 'Output in JSON format');
31
+ program.option('--verbose', 'Enable verbose logging');
32
+ // Commands
33
+ program.addCommand(initCommand);
34
+ program.addCommand(onboardCommand);
35
+ program.addCommand(compileCommand);
36
+ program.addCommand(mcpCommand);
37
+ program.addCommand(trustCommand);
38
+ program.addCommand(skillsCommand);
39
+ program.addCommand(driftCommand);
40
+ program.addCommand(evalCommand);
41
+ program.addCommand(exportCommand);
42
+ program.addCommand(importCommand);
43
+ program.addCommand(completionCommand);
44
+ program.addHelpText('after', `
45
+ Commands:
46
+ Core:
47
+ init Create a new TasteKit workspace
48
+ onboard Run LLM-driven onboarding interview
49
+ compile Compile artifacts from onboarding session
50
+ export Export to runtime format (claude-code, openclaw, manus)
51
+
52
+ Skills:
53
+ skills list List available skills
54
+ skills lint Validate skill definitions
55
+
56
+ Drift:
57
+ drift detect Check for behavioral drift from traces
58
+ drift review Review and apply drift proposals
59
+
60
+ Advanced:
61
+ mcp Manage MCP tool bindings
62
+ trust Trust pinning and audit
63
+ eval Run evaluation packs
64
+ import Import from SOUL.md, Agent File, etc.
65
+ `);
66
+ program.parse();
67
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,iBAAiB;AACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAClD,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;AAEtD,WAAW;AACX,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AAEtC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;CAqB5B,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const compileCommand: Command;
3
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,cAAc,SA0DvB,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { Command } from 'commander';
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import { compile, canResume } from '@actrun_ai/tastekit-core/compiler';
7
+ import { loadSession } from '@actrun_ai/tastekit-core/interview';
8
+ import { resolveSessionPath } from '@actrun_ai/tastekit-core/utils';
9
+ import { getGlobalOptions, nextSteps, handleError, jsonOutput } from '../ui.js';
10
+ export const compileCommand = new Command('compile')
11
+ .description('Compile taste artifacts from onboarding session')
12
+ .option('--resume', 'Resume a previously interrupted compilation')
13
+ .action(async (options, cmd) => {
14
+ const globals = getGlobalOptions(cmd);
15
+ const workspacePath = join(process.cwd(), '.tastekit');
16
+ if (!existsSync(workspacePath)) {
17
+ handleError(new Error('No TasteKit workspace found. Run `tastekit init` first.'));
18
+ }
19
+ const sessionPath = resolveSessionPath(workspacePath);
20
+ if (!existsSync(sessionPath)) {
21
+ handleError(new Error('No onboarding session found. Run `tastekit onboard` first.'));
22
+ }
23
+ // Auto-detect resume if derivation state exists with incomplete steps
24
+ const shouldResume = options.resume || canResume(workspacePath);
25
+ const session = loadSession(sessionPath);
26
+ const label = shouldResume ? 'Resuming compilation...' : 'Compiling taste artifacts...';
27
+ const spinner = ora(label).start();
28
+ try {
29
+ const result = await compile({
30
+ workspacePath,
31
+ session,
32
+ generatorVersion: '0.5.0',
33
+ resume: shouldResume,
34
+ });
35
+ if (result.success) {
36
+ const suffix = result.resumed ? ' (resumed)' : '';
37
+ spinner.succeed(chalk.green(`Compilation complete!${suffix}`));
38
+ if (globals.json) {
39
+ jsonOutput({ success: true, artifacts: result.artifacts, resumed: result.resumed });
40
+ }
41
+ console.log('\nGenerated artifacts:');
42
+ for (const artifact of result.artifacts) {
43
+ console.log(chalk.cyan(` * ${artifact}`));
44
+ }
45
+ nextSteps([
46
+ { cmd: 'tastekit export --target claude-code', desc: 'export for Claude Code' },
47
+ { cmd: 'tastekit export --target openclaw', desc: 'export for OpenClaw' },
48
+ ]);
49
+ }
50
+ else {
51
+ spinner.fail(chalk.red('Compilation failed'));
52
+ result.errors?.forEach(e => console.error(chalk.red(` ${e}`)));
53
+ console.log(chalk.yellow('\nRun `tastekit compile --resume` to continue from where it left off.'));
54
+ process.exit(1);
55
+ }
56
+ }
57
+ catch (error) {
58
+ handleError(error, spinner);
59
+ }
60
+ });
61
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shell completion command.
3
+ *
4
+ * Generates shell completion scripts for bash, zsh, and fish.
5
+ * Usage: eval "$(tastekit completion bash)"
6
+ */
7
+ import { Command } from 'commander';
8
+ export declare const completionCommand: Command;
9
+ //# sourceMappingURL=completion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoLpC,eAAO,MAAM,iBAAiB,SAkB1B,CAAC"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Shell completion command.
3
+ *
4
+ * Generates shell completion scripts for bash, zsh, and fish.
5
+ * Usage: eval "$(tastekit completion bash)"
6
+ */
7
+ import { Command } from 'commander';
8
+ const COMMANDS = [
9
+ 'init', 'onboard', 'compile', 'simulate',
10
+ 'mcp', 'trust', 'skills', 'drift',
11
+ 'eval', 'export', 'import', 'completion',
12
+ ];
13
+ const SUBCOMMANDS = {
14
+ mcp: ['add', 'list', 'inspect', 'bind'],
15
+ trust: ['init', 'pin-mcp', 'pin-skill-source', 'audit'],
16
+ skills: ['list', 'lint', 'pack'],
17
+ drift: ['detect', 'apply', 'memory-consolidate'],
18
+ eval: ['run', 'replay'],
19
+ };
20
+ const GLOBAL_OPTIONS = ['--json', '--verbose', '--help', '--version'];
21
+ const EXPORT_TARGETS = ['claude-code', 'manus', 'openclaw', 'autopilots', 'agents-md', 'agent-file'];
22
+ const IMPORT_TARGETS = ['claude-code', 'manus', 'openclaw', 'autopilots', 'soul-md', 'agent-file'];
23
+ const DEPTHS = ['quick', 'guided', 'operator'];
24
+ function bashCompletion() {
25
+ const subCommandCases = Object.entries(SUBCOMMANDS)
26
+ .map(([cmd, subs]) => ` ${cmd}) COMPREPLY=($(compgen -W "${subs.join(' ')}" -- "$cur")) ;;`)
27
+ .join('\n');
28
+ return `# tastekit bash completion
29
+ # eval "$(tastekit completion bash)"
30
+
31
+ _tastekit_completions() {
32
+ local cur prev commands
33
+ COMPREPLY=()
34
+ cur="\${COMP_WORDS[COMP_CWORD]}"
35
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
36
+ commands="${COMMANDS.join(' ')}"
37
+
38
+ if [[ \${COMP_CWORD} -eq 1 ]]; then
39
+ COMPREPLY=($(compgen -W "$commands ${GLOBAL_OPTIONS.join(' ')}" -- "$cur"))
40
+ return 0
41
+ fi
42
+
43
+ case "\${COMP_WORDS[1]}" in
44
+ ${subCommandCases}
45
+ export)
46
+ if [[ "$prev" == "--target" ]]; then
47
+ COMPREPLY=($(compgen -W "${EXPORT_TARGETS.join(' ')}" -- "$cur"))
48
+ else
49
+ COMPREPLY=($(compgen -W "--target --out" -- "$cur"))
50
+ fi
51
+ ;;
52
+ import)
53
+ if [[ "$prev" == "--target" ]]; then
54
+ COMPREPLY=($(compgen -W "${IMPORT_TARGETS.join(' ')}" -- "$cur"))
55
+ else
56
+ COMPREPLY=($(compgen -W "--target --source" -- "$cur"))
57
+ fi
58
+ ;;
59
+ init)
60
+ if [[ "$prev" == "--depth" ]]; then
61
+ COMPREPLY=($(compgen -W "${DEPTHS.join(' ')}" -- "$cur"))
62
+ else
63
+ COMPREPLY=($(compgen -W "--domain --depth" -- "$cur"))
64
+ fi
65
+ ;;
66
+ onboard)
67
+ if [[ "$prev" == "--depth" ]]; then
68
+ COMPREPLY=($(compgen -W "${DEPTHS.join(' ')}" -- "$cur"))
69
+ else
70
+ COMPREPLY=($(compgen -W "--depth --resume --provider" -- "$cur"))
71
+ fi
72
+ ;;
73
+ esac
74
+ }
75
+
76
+ complete -F _tastekit_completions tastekit
77
+ `;
78
+ }
79
+ function zshCompletion() {
80
+ const subcmdLines = Object.entries(SUBCOMMANDS)
81
+ .map(([cmd, subs]) => {
82
+ const items = subs.map(s => `'${s}:${s} subcommand'`).join(' ');
83
+ return ` ${cmd}) _values 'subcommand' ${items} ;;`;
84
+ })
85
+ .join('\n');
86
+ return `#compdef tastekit
87
+ # tastekit zsh completion
88
+ # eval "$(tastekit completion zsh)"
89
+
90
+ _tastekit() {
91
+ local -a commands
92
+ commands=(
93
+ 'init:Initialize a new TasteKit workspace'
94
+ 'onboard:Run the LLM-driven onboarding interview'
95
+ 'compile:Compile taste artifacts'
96
+ 'simulate:Run simulation with dry-run mode'
97
+ 'mcp:Manage MCP server bindings'
98
+ 'trust:Manage trust and provenance'
99
+ 'skills:Manage skills library'
100
+ 'drift:Manage drift detection and memory'
101
+ 'eval:Run evaluations'
102
+ 'export:Export to runtime adapter format'
103
+ 'import:Import from runtime format'
104
+ 'completion:Generate shell completions'
105
+ )
106
+
107
+ _arguments -C \\
108
+ '--json[Output in JSON format]' \\
109
+ '--verbose[Enable verbose logging]' \\
110
+ '1:command:->command' \\
111
+ '*::arg:->args'
112
+
113
+ case $state in
114
+ command)
115
+ _describe -t commands 'tastekit command' commands
116
+ ;;
117
+ args)
118
+ case \${words[1]} in
119
+ ${subcmdLines}
120
+ export) _arguments '--target[Target adapter]:target:(${EXPORT_TARGETS.join(' ')})' '--out[Output directory]:directory:_directories' ;;
121
+ import) _arguments '--target[Source format]:target:(${IMPORT_TARGETS.join(' ')})' '--source[Source path]:path:_files' ;;
122
+ init) _arguments '--domain[Domain ID]:domain:' '--depth[Onboarding depth]:depth:(${DEPTHS.join(' ')})' ;;
123
+ onboard) _arguments '--depth[Override depth]:depth:(${DEPTHS.join(' ')})' '--resume[Resume session]' '--provider[LLM provider]:provider:(anthropic openai ollama)' ;;
124
+ esac
125
+ ;;
126
+ esac
127
+ }
128
+
129
+ _tastekit "$@"
130
+ `;
131
+ }
132
+ function fishCompletion() {
133
+ const lines = [
134
+ '# tastekit fish completion',
135
+ '# tastekit completion fish | source',
136
+ '',
137
+ '# Disable file completion by default',
138
+ 'complete -c tastekit -f',
139
+ '',
140
+ '# Commands',
141
+ ];
142
+ const cmdDescs = {
143
+ init: 'Initialize a new TasteKit workspace',
144
+ onboard: 'Run the LLM-driven onboarding interview',
145
+ compile: 'Compile taste artifacts',
146
+ simulate: 'Run simulation with dry-run mode',
147
+ mcp: 'Manage MCP server bindings',
148
+ trust: 'Manage trust and provenance',
149
+ skills: 'Manage skills library',
150
+ drift: 'Manage drift detection and memory',
151
+ eval: 'Run evaluations',
152
+ export: 'Export to runtime adapter format',
153
+ import: 'Import from runtime format',
154
+ completion: 'Generate shell completions',
155
+ };
156
+ for (const [cmd, desc] of Object.entries(cmdDescs)) {
157
+ lines.push(`complete -c tastekit -n '__fish_use_subcommand' -a ${cmd} -d '${desc}'`);
158
+ }
159
+ lines.push('');
160
+ lines.push('# Subcommands');
161
+ for (const [cmd, subs] of Object.entries(SUBCOMMANDS)) {
162
+ for (const sub of subs) {
163
+ lines.push(`complete -c tastekit -n '__fish_seen_subcommand_from ${cmd}' -a ${sub}`);
164
+ }
165
+ }
166
+ lines.push('');
167
+ lines.push('# Global options');
168
+ lines.push("complete -c tastekit -l json -d 'Output in JSON format'");
169
+ lines.push("complete -c tastekit -l verbose -d 'Enable verbose logging'");
170
+ return lines.join('\n') + '\n';
171
+ }
172
+ export const completionCommand = new Command('completion')
173
+ .description('Generate shell completion script')
174
+ .argument('[shell]', 'Shell type: bash, zsh, or fish', 'bash')
175
+ .action((shell) => {
176
+ switch (shell) {
177
+ case 'bash':
178
+ process.stdout.write(bashCompletion());
179
+ break;
180
+ case 'zsh':
181
+ process.stdout.write(zshCompletion());
182
+ break;
183
+ case 'fish':
184
+ process.stdout.write(fishCompletion());
185
+ break;
186
+ default:
187
+ console.error(`Unknown shell: ${shell}. Use bash, zsh, or fish.`);
188
+ process.exit(1);
189
+ }
190
+ });
191
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const driftCommand: Command;
3
+ //# sourceMappingURL=drift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../../src/commands/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8MpC,eAAO,MAAM,YAAY,SAGO,CAAC"}
@@ -0,0 +1,175 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import ora from 'ora';
4
+ import { existsSync, readFileSync, writeFileSync, readdirSync, mkdirSync } from 'fs';
5
+ import { join } from 'path';
6
+ import { DriftDetector } from '@actrun_ai/tastekit-core/drift';
7
+ import { MemoryConsolidator } from '@actrun_ai/tastekit-core/drift';
8
+ import { resolveArtifactPath, resolveTracesPath } from '@actrun_ai/tastekit-core/utils';
9
+ import { getGlobalOptions, riskColor, header, detail, hint, handleError, jsonOutput, verbose } from '../ui.js';
10
+ const driftDetectCommand = new Command('detect')
11
+ .description('Detect drift from traces and feedback')
12
+ .option('--since <date>', 'Detect drift since date (ISO format)')
13
+ .option('--skill <id>', 'Detect drift for specific skill')
14
+ .action(async (options, cmd) => {
15
+ const globals = getGlobalOptions(cmd);
16
+ const workspacePath = process.cwd();
17
+ const tastekitPath = join(workspacePath, '.tastekit');
18
+ const tracesDir = resolveTracesPath(tastekitPath);
19
+ if (!existsSync(tracesDir)) {
20
+ console.log(chalk.yellow('No traces found. Run your agent to generate traces first.'));
21
+ return;
22
+ }
23
+ const spinner = ora('Analyzing traces for drift...').start();
24
+ try {
25
+ const detector = new DriftDetector();
26
+ // Collect trace files
27
+ const traceFiles = readdirSync(tracesDir)
28
+ .filter(f => f.endsWith('.jsonl'))
29
+ .map(f => join(tracesDir, f));
30
+ if (traceFiles.length === 0) {
31
+ spinner.info(chalk.yellow('No trace files found.'));
32
+ return;
33
+ }
34
+ verbose(`Found ${traceFiles.length} trace file(s)`, globals);
35
+ const detectionOptions = {};
36
+ if (options.since) {
37
+ detectionOptions.since = new Date(options.since);
38
+ }
39
+ if (options.skill) {
40
+ detectionOptions.skillId = options.skill;
41
+ }
42
+ const proposals = detector.detectFromTraces(traceFiles, detectionOptions);
43
+ if (proposals.length === 0) {
44
+ spinner.succeed(chalk.green('No drift detected.'));
45
+ if (globals.json)
46
+ jsonOutput({ proposals: [] });
47
+ return;
48
+ }
49
+ spinner.warn(chalk.yellow(`Found ${proposals.length} drift proposal(s)`));
50
+ // Save proposals
51
+ const proposalsDir = join(workspacePath, '.tastekit', 'proposals');
52
+ mkdirSync(proposalsDir, { recursive: true });
53
+ for (const proposal of proposals) {
54
+ const proposalPath = join(proposalsDir, `${proposal.proposal_id}.json`);
55
+ writeFileSync(proposalPath, JSON.stringify(proposal, null, 2), 'utf-8');
56
+ }
57
+ if (globals.json) {
58
+ jsonOutput({ proposals });
59
+ }
60
+ // Display proposals
61
+ console.log('');
62
+ for (const proposal of proposals) {
63
+ console.log(chalk.bold(` ${proposal.proposal_id}`));
64
+ detail('Signal', `${proposal.signal_type} (${proposal.frequency}x)`);
65
+ console.log(` Risk: ${riskColor(proposal.risk_rating)}`);
66
+ console.log(` ${proposal.rationale}`);
67
+ console.log('');
68
+ }
69
+ hint('tastekit drift apply <proposal_id>', 'apply a proposal');
70
+ }
71
+ catch (error) {
72
+ handleError(error, spinner);
73
+ }
74
+ });
75
+ const driftApplyCommand = new Command('apply')
76
+ .description('Apply a drift proposal')
77
+ .argument('<proposal_id>', 'Proposal ID to apply')
78
+ .action(async (proposalId, _options, cmd) => {
79
+ const globals = getGlobalOptions(cmd);
80
+ const workspacePath = process.cwd();
81
+ const proposalPath = join(workspacePath, '.tastekit', 'proposals', `${proposalId}.json`);
82
+ if (!existsSync(proposalPath)) {
83
+ console.error(chalk.red(`Proposal not found: ${proposalId}`));
84
+ hint('tastekit drift detect', 'find proposals');
85
+ process.exit(1);
86
+ }
87
+ const spinner = ora(`Applying proposal ${proposalId}...`).start();
88
+ try {
89
+ const proposal = JSON.parse(readFileSync(proposalPath, 'utf-8'));
90
+ // Apply changes to constitution
91
+ const constitutionPath = resolveArtifactPath(join(workspacePath, '.tastekit'), 'constitution');
92
+ if (existsSync(constitutionPath) && proposal.proposed_changes.constitution) {
93
+ const constitution = JSON.parse(readFileSync(constitutionPath, 'utf-8'));
94
+ if (proposal.proposed_changes.constitution.add_principle) {
95
+ constitution.principles.push(proposal.proposed_changes.constitution.add_principle);
96
+ }
97
+ writeFileSync(constitutionPath, JSON.stringify(constitution, null, 2), 'utf-8');
98
+ }
99
+ // Mark proposal as applied
100
+ proposal.applied_at = new Date().toISOString();
101
+ writeFileSync(proposalPath, JSON.stringify(proposal, null, 2), 'utf-8');
102
+ spinner.succeed(chalk.green(`Applied proposal: ${proposalId}`));
103
+ if (globals.json) {
104
+ jsonOutput({ applied: proposalId, applied_at: proposal.applied_at });
105
+ }
106
+ hint('tastekit compile', 'recompile artifacts');
107
+ }
108
+ catch (error) {
109
+ handleError(error, spinner);
110
+ }
111
+ });
112
+ const memoryConsolidateCommand = new Command('consolidate')
113
+ .description('Consolidate memory (prune old, merge similar)')
114
+ .option('--retention <days>', 'Retention period in days', '30')
115
+ .action(async (options, cmd) => {
116
+ const globals = getGlobalOptions(cmd);
117
+ const workspacePath = process.cwd();
118
+ const memoryDir = join(workspacePath, '.tastekit', 'memory');
119
+ if (!existsSync(memoryDir)) {
120
+ console.log(chalk.yellow('No memory directory found.'));
121
+ return;
122
+ }
123
+ const spinner = ora('Consolidating memory...').start();
124
+ try {
125
+ // Read memory entries
126
+ const memoryFiles = existsSync(memoryDir)
127
+ ? readdirSync(memoryDir).filter(f => f.endsWith('.json'))
128
+ : [];
129
+ if (memoryFiles.length === 0) {
130
+ spinner.info(chalk.yellow('No memory entries to consolidate.'));
131
+ return;
132
+ }
133
+ verbose(`Processing ${memoryFiles.length} memory file(s)`, globals);
134
+ const memories = memoryFiles.map(f => {
135
+ const content = JSON.parse(readFileSync(join(memoryDir, f), 'utf-8'));
136
+ return {
137
+ id: f.replace('.json', ''),
138
+ content: content.content || JSON.stringify(content),
139
+ salience: content.salience || 0.5,
140
+ timestamp: content.timestamp || new Date().toISOString(),
141
+ };
142
+ });
143
+ const consolidator = new MemoryConsolidator();
144
+ const plan = consolidator.generateConsolidationPlan(memories, parseInt(options.retention));
145
+ spinner.succeed(chalk.green('Consolidation plan generated'));
146
+ if (globals.json) {
147
+ jsonOutput(plan);
148
+ }
149
+ console.log('');
150
+ header('Plan');
151
+ detail('Keep', `${plan.memories_to_keep.length} memories`);
152
+ detail('Prune', `${plan.memories_to_prune.length} memories`);
153
+ detail('Merge', `${plan.memories_to_merge.length} groups`);
154
+ if (plan.memories_to_merge.length > 0) {
155
+ console.log('');
156
+ console.log(chalk.bold(' Merges:'));
157
+ for (const merge of plan.memories_to_merge) {
158
+ console.log(` ${merge.source_ids.join(' + ')} -> merged`);
159
+ }
160
+ }
161
+ // Save plan
162
+ const planPath = join(workspacePath, '.tastekit', 'consolidation-plan.json');
163
+ writeFileSync(planPath, JSON.stringify(plan, null, 2), 'utf-8');
164
+ console.log(chalk.gray(`\n Plan saved to: ${planPath}`));
165
+ }
166
+ catch (error) {
167
+ handleError(error, spinner);
168
+ }
169
+ });
170
+ export const driftCommand = new Command('drift')
171
+ .description('Manage drift detection and memory')
172
+ .addCommand(driftDetectCommand)
173
+ .addCommand(driftApplyCommand);
174
+ driftCommand.addCommand(memoryConsolidateCommand.name('memory-consolidate'));
175
+ //# sourceMappingURL=drift.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drift.js","sourceRoot":"","sources":["../../src/commands/drift.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const evalCommand: Command;
3
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmKpC,eAAO,MAAM,WAAW,SAGQ,CAAC"}