@trikhub/cli 0.6.0 → 0.13.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 (40) hide show
  1. package/README.md +102 -200
  2. package/dist/commands/info.d.ts.map +1 -1
  3. package/dist/commands/info.js +35 -0
  4. package/dist/commands/info.js.map +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +104 -27
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/install.d.ts.map +1 -1
  9. package/dist/commands/install.js +13 -84
  10. package/dist/commands/install.js.map +1 -1
  11. package/dist/commands/lint.d.ts.map +1 -1
  12. package/dist/commands/lint.js +20 -1
  13. package/dist/commands/lint.js.map +1 -1
  14. package/dist/commands/list.d.ts.map +1 -1
  15. package/dist/commands/list.js +18 -1
  16. package/dist/commands/list.js.map +1 -1
  17. package/dist/commands/mcp.d.ts.map +1 -1
  18. package/dist/commands/mcp.js +2 -8
  19. package/dist/commands/mcp.js.map +1 -1
  20. package/dist/commands/publish.d.ts.map +1 -1
  21. package/dist/commands/publish.js.map +1 -1
  22. package/dist/commands/upgrade.d.ts.map +1 -1
  23. package/dist/commands/upgrade.js +5 -122
  24. package/dist/commands/upgrade.js.map +1 -1
  25. package/dist/lib/registry.d.ts.map +1 -1
  26. package/dist/lib/registry.js +4 -14
  27. package/dist/lib/registry.js.map +1 -1
  28. package/dist/templates/python.d.ts +1 -24
  29. package/dist/templates/python.d.ts.map +1 -1
  30. package/dist/templates/python.js +2 -262
  31. package/dist/templates/python.js.map +1 -1
  32. package/dist/templates/typescript.d.ts +13 -11
  33. package/dist/templates/typescript.d.ts.map +1 -1
  34. package/dist/templates/typescript.js +219 -173
  35. package/dist/templates/typescript.js.map +1 -1
  36. package/package.json +7 -9
  37. package/dist/lib/validator.d.ts +0 -33
  38. package/dist/lib/validator.d.ts.map +0 -1
  39. package/dist/lib/validator.js +0 -133
  40. package/dist/lib/validator.js.map +0 -1
@@ -1,271 +1,317 @@
1
1
  /**
2
- * TypeScript Trik Template Generator
2
+ * v2 TypeScript scaffold template.
3
3
  *
4
- * Generates all files needed for a TypeScript trik project.
4
+ * Generates a complete v2 trik project structure using the
5
+ * agent-based handoff architecture with wrapAgent() from @trikhub/sdk.
5
6
  */
6
- /**
7
- * Generate all files for a TypeScript trik project
8
- */
9
- export function generateTypescriptProject(config) {
10
- const files = [];
11
- files.push({ path: 'manifest.json', content: generateManifest(config) });
12
- files.push({ path: 'trikhub.json', content: generateTrikhubJson(config) });
13
- files.push({ path: 'package.json', content: generatePackageJson(config) });
14
- files.push({ path: 'tsconfig.json', content: generateTsConfig() });
15
- files.push({ path: 'src/index.ts', content: generateIndexTs(config) });
16
- files.push({ path: 'test.ts', content: generateTestTs() });
17
- files.push({ path: 'README.md', content: generateReadme(config) });
18
- files.push({ path: '.gitignore', content: generateGitignore() });
19
- return files;
20
- }
7
+ // ============================================================================
8
+ // File generators
9
+ // ============================================================================
21
10
  function generateManifest(config) {
11
+ const isToolMode = config.agentMode === 'tool';
12
+ const agent = {
13
+ mode: config.agentMode,
14
+ domain: config.domainTags,
15
+ };
16
+ if (!isToolMode) {
17
+ agent.handoffDescription = config.handoffDescription;
18
+ agent.systemPromptFile = './src/prompts/system.md';
19
+ agent.model = { capabilities: ['tool_use'] };
20
+ }
22
21
  const manifest = {
23
- schemaVersion: 1,
22
+ schemaVersion: 2,
24
23
  id: config.name,
25
24
  name: config.displayName,
26
25
  description: config.description,
27
26
  version: '0.1.0',
28
- actions: {
29
- hello: {
30
- description: 'Say hello to someone',
27
+ agent,
28
+ };
29
+ // Tools block
30
+ if (isToolMode && config.toolNames.length > 0) {
31
+ const tools = {};
32
+ for (const toolName of config.toolNames) {
33
+ tools[toolName] = {
34
+ description: `TODO: describe ${toolName}`,
31
35
  inputSchema: {
32
36
  type: 'object',
33
37
  properties: {
34
- name: { type: 'string', description: 'Name to greet' },
38
+ query: { type: 'string', maxLength: 200 },
35
39
  },
36
- required: ['name'],
40
+ required: ['query'],
37
41
  },
38
- responseMode: 'template',
39
- agentDataSchema: {
42
+ outputSchema: {
40
43
  type: 'object',
41
44
  properties: {
42
- template: { type: 'string', enum: ['success'] },
43
- greeting: { type: 'string', maxLength: 200, pattern: '^.{1,200}$' },
45
+ status: { type: 'string', enum: ['success', 'error'] },
46
+ resultId: { type: 'string', format: 'id' },
44
47
  },
45
- required: ['template', 'greeting'],
46
- },
47
- responseTemplates: {
48
- success: { text: '{{greeting}}' },
48
+ required: ['status'],
49
49
  },
50
+ outputTemplate: `${toolName}: {{status}} ({{resultId}})`,
51
+ };
52
+ }
53
+ manifest.tools = tools;
54
+ }
55
+ else {
56
+ manifest.tools = {
57
+ exampleTool: {
58
+ description: 'An example tool',
50
59
  },
51
- },
52
- capabilities: {
53
- tools: [],
54
- },
55
- limits: {
56
- maxExecutionTimeMs: 5000,
57
- },
58
- entry: {
59
- module: './dist/index.js',
60
- export: 'default',
61
- },
62
- };
63
- // Add storage capability if enabled
60
+ };
61
+ }
64
62
  if (config.enableStorage) {
65
- manifest.capabilities.storage = {
66
- enabled: true,
67
- maxSizeBytes: 1048576,
68
- persistent: true,
63
+ manifest.capabilities = {
64
+ storage: { enabled: true },
69
65
  };
70
66
  }
71
- // Add config if enabled
67
+ manifest.limits = { maxTurnTimeMs: 30000 };
68
+ manifest.entry = {
69
+ module: './dist/agent.js',
70
+ export: 'default',
71
+ };
72
+ manifest.author = config.authorName;
72
73
  if (config.enableConfig) {
73
74
  manifest.config = {
74
- required: [
75
- { key: 'API_KEY', description: 'Your API key' },
75
+ optional: [
76
+ { key: 'ANTHROPIC_API_KEY', description: 'Anthropic API key for the agent' },
76
77
  ],
77
- optional: [],
78
78
  };
79
79
  }
80
- return JSON.stringify(manifest, null, 2) + '\n';
80
+ return JSON.stringify(manifest, null, 2);
81
81
  }
82
82
  function generateTrikhubJson(config) {
83
- const trikhub = {
83
+ const metadata = {
84
84
  displayName: config.displayName,
85
85
  shortDescription: config.description,
86
86
  categories: [config.category],
87
- keywords: [config.name],
87
+ keywords: [],
88
88
  author: {
89
89
  name: config.authorName,
90
90
  github: config.authorGithub,
91
91
  },
92
92
  repository: `https://github.com/${config.authorGithub}/${config.name}`,
93
93
  };
94
- return JSON.stringify(trikhub, null, 2) + '\n';
94
+ return JSON.stringify(metadata, null, 2);
95
95
  }
96
96
  function generatePackageJson(config) {
97
+ const isToolMode = config.agentMode === 'tool';
98
+ const dependencies = {
99
+ '@trikhub/sdk': 'latest',
100
+ };
101
+ // Conversational mode needs LangChain + LLM provider
102
+ if (!isToolMode) {
103
+ dependencies['@langchain/anthropic'] = '^0.3.0';
104
+ dependencies['@langchain/core'] = '^0.3.0';
105
+ dependencies['@langchain/langgraph'] = '^0.2.0';
106
+ dependencies['zod'] = '^3.25.0';
107
+ }
97
108
  const pkg = {
98
- name: `@${config.authorGithub.toLowerCase()}/${config.name}`,
109
+ name: config.name,
99
110
  version: '0.1.0',
100
111
  description: config.description,
101
112
  type: 'module',
102
- main: 'dist/index.js',
113
+ main: './dist/agent.js',
103
114
  scripts: {
104
115
  build: 'tsc',
105
- clean: 'rm -rf dist',
106
- test: 'npm run build && tsx test.ts',
107
- },
108
- dependencies: {
109
- '@trikhub/manifest': '^0.7.0',
116
+ dev: 'node --import tsx src/agent.ts',
117
+ clean: 'rm -rf dist *.tsbuildinfo',
110
118
  },
119
+ dependencies,
111
120
  devDependencies: {
112
- '@types/node': '^20.0.0',
113
- tsx: '^4.0.0',
114
- typescript: '^5.6.0',
115
- },
116
- engines: {
117
- node: '>=20',
121
+ tsx: '^4.19.0',
122
+ typescript: '^5.7.0',
118
123
  },
119
124
  };
120
- return JSON.stringify(pkg, null, 2) + '\n';
125
+ return JSON.stringify(pkg, null, 2);
121
126
  }
122
127
  function generateTsConfig() {
123
128
  const tsconfig = {
124
129
  compilerOptions: {
125
130
  target: 'ES2022',
126
131
  module: 'NodeNext',
127
- moduleResolution: 'NodeNext',
132
+ moduleResolution: 'nodenext',
128
133
  outDir: './dist',
129
134
  rootDir: './src',
130
135
  strict: true,
131
136
  esModuleInterop: true,
132
137
  skipLibCheck: true,
138
+ forceConsistentCasingInFileNames: true,
133
139
  declaration: true,
140
+ declarationMap: true,
141
+ sourceMap: true,
134
142
  },
135
143
  include: ['src/**/*'],
136
- exclude: ['node_modules', 'dist'],
137
144
  };
138
- return JSON.stringify(tsconfig, null, 2) + '\n';
139
- }
140
- function generateIndexTs(config) {
141
- const storageImport = config.enableStorage
142
- ? `
143
- interface Storage {
144
- get(key: string): Promise<string | null>;
145
- set(key: string, value: string): Promise<void>;
146
- delete(key: string): Promise<void>;
147
- }
148
- `
149
- : '';
150
- const configType = config.enableConfig
151
- ? `
152
- interface Config {
153
- API_KEY: string;
145
+ return JSON.stringify(tsconfig, null, 2);
154
146
  }
155
- `
156
- : '';
157
- const invokeParams = [
158
- 'action: string',
159
- 'input: Record<string, unknown>',
160
- config.enableStorage ? 'storage?: Storage' : null,
161
- config.enableConfig ? 'config?: Config' : null,
162
- ]
163
- .filter(Boolean)
164
- .join('; ');
147
+ function generateToolModeAgentTs(config) {
148
+ const handlers = config.toolNames.map((name) => ` ${name}: async (input, context) => {
149
+ // TODO: Implement ${name}
150
+ return { result: 'Not implemented' };
151
+ },`).join('\n');
165
152
  return `/**
166
- * ${config.displayName}
153
+ * ${config.displayName} — tool-mode agent entry point.
167
154
  *
168
- * ${config.description}
155
+ * Exports native tools to the main agent. No handoff, no session.
169
156
  */
170
157
 
171
- type InvokeInput = {
172
- ${invokeParams};
173
- };
174
-
175
- type InvokeResult = {
176
- responseMode: 'template' | 'passthrough';
177
- agentData?: Record<string, unknown>;
178
- userContent?: Record<string, unknown>;
179
- };
180
- ${storageImport}${configType}
181
- class ${toPascalCase(config.name)}Graph {
182
- async invoke(input: InvokeInput): Promise<InvokeResult> {
183
- const { action, input: actionInput } = input;
184
-
185
- if (action === 'hello') {
186
- const name = (actionInput.name as string) || 'World';
187
- return {
188
- responseMode: 'template',
189
- agentData: {
190
- template: 'success',
191
- greeting: \`Hello, \${name}!\`,
192
- },
193
- };
194
- }
195
-
196
- return {
197
- responseMode: 'template',
198
- agentData: {
199
- template: 'error',
200
- message: \`Unknown action: \${action}\`,
201
- },
202
- };
203
- }
204
- }
158
+ import { wrapToolHandlers } from '@trikhub/sdk';
205
159
 
206
- export default new ${toPascalCase(config.name)}Graph();
160
+ export default wrapToolHandlers({
161
+ ${handlers}
162
+ });
207
163
  `;
208
164
  }
209
- function generateTestTs() {
165
+ function generateAgentTs(config) {
166
+ if (config.agentMode === 'tool') {
167
+ return generateToolModeAgentTs(config);
168
+ }
169
+ // Conversational mode
210
170
  return `/**
211
- * Local test script
212
- *
213
- * Run with: npm test
171
+ * ${config.displayName} conversational agent entry point.
214
172
  */
215
173
 
216
- import graph from './src/index.js';
174
+ import { ChatAnthropic } from '@langchain/anthropic';
175
+ import { createReactAgent } from '@langchain/langgraph/prebuilt';
176
+ import { wrapAgent, transferBackTool } from '@trikhub/sdk';
177
+ import type { TrikContext } from '@trikhub/sdk';
178
+ import { readFileSync } from 'node:fs';
179
+ import { join, dirname } from 'node:path';
180
+ import { fileURLToPath } from 'node:url';
181
+ import { exampleTool } from './tools/example.js';
217
182
 
218
- async function main() {
219
- const result = await graph.invoke({
220
- action: 'hello',
221
- input: { name: 'World' },
183
+ const __dirname = dirname(fileURLToPath(import.meta.url));
184
+ const systemPrompt = readFileSync(join(__dirname, '../src/prompts/system.md'), 'utf-8');
185
+
186
+ export default wrapAgent((context: TrikContext) => {
187
+ const model = new ChatAnthropic({
188
+ modelName: 'claude-sonnet-4-20250514',
189
+ anthropicApiKey: ${config.enableConfig ? "config.get('ANTHROPIC_API_KEY')" : 'process.env.ANTHROPIC_API_KEY'},
222
190
  });
223
191
 
224
- console.log(JSON.stringify(result, null, 2));
192
+ const tools = [
193
+ exampleTool,
194
+ transferBackTool,
195
+ ];
196
+
197
+ return createReactAgent({
198
+ llm: model,
199
+ tools,
200
+ messageModifier: systemPrompt,
201
+ });
202
+ });
203
+ `;
225
204
  }
205
+ function generateExampleTool() {
206
+ return `import { tool } from '@langchain/core/tools';
207
+ import { z } from 'zod';
226
208
 
227
- main().catch(console.error);
209
+ export const exampleTool = tool(
210
+ async (input) => {
211
+ // TODO: Implement your tool logic here
212
+ return JSON.stringify({ result: \`Processed: \${input.query}\` });
213
+ },
214
+ {
215
+ name: 'exampleTool',
216
+ description: 'An example tool — replace with your own implementation',
217
+ schema: z.object({
218
+ query: z.string().describe('The input query to process'),
219
+ }),
220
+ },
221
+ );
222
+ `;
223
+ }
224
+ function generateSystemPrompt(config) {
225
+ const domainStr = config.domainTags.join(', ');
226
+ return `# ${config.displayName}
227
+
228
+ You are ${config.displayName}, a specialized assistant for ${config.description.toLowerCase()}.
229
+
230
+ ## Your capabilities
231
+ - **exampleTool**: An example tool
232
+
233
+ ## Guidelines
234
+ - Focus on tasks within your domain: ${domainStr}
235
+ - When the user's request is outside your expertise, use the transfer_back tool
236
+ - Provide clear, actionable responses
237
+
238
+ ## Transfer back
239
+ Use the \`transfer_back\` tool when:
240
+ - The user's request is outside your domain
241
+ - You've completed the task and the user wants to do something else
242
+ - The user explicitly asks to go back
243
+ `;
244
+ }
245
+ function generateGitignore() {
246
+ return `node_modules/
247
+ dist/
248
+ *.tsbuildinfo
249
+ .env
250
+ .trikhub/secrets.json
228
251
  `;
229
252
  }
230
253
  function generateReadme(config) {
254
+ const domainStr = config.domainTags.join(', ');
255
+ const isToolMode = config.agentMode === 'tool';
256
+ const devSection = isToolMode
257
+ ? `- Implement your tool handlers in \`src/agent.ts\`
258
+ - Update inputSchema/outputSchema in \`manifest.json\``
259
+ : `- Edit your agent logic in \`src/agent.ts\`
260
+ - Add tools in \`src/tools/\`
261
+ - Customize the system prompt in \`src/prompts/system.md\``;
262
+ const archSection = isToolMode
263
+ ? `Tools from this trik appear as native tools on the main agent — no handoff, no session.`
264
+ : `The main agent routes conversations to this trik using a \`talk_to_${config.name}\` tool.
265
+ When done, use the \`transfer_back\` tool to return control.`;
231
266
  return `# ${config.displayName}
232
267
 
233
268
  ${config.description}
234
269
 
235
- ## Development
236
-
237
- \`\`\`bash
238
- npm install
239
- npm run build
240
- npm test
241
- \`\`\`
270
+ ## Getting Started
242
271
 
243
- ## Actions
272
+ 1. Install dependencies: \`npm install\`
273
+ 2. Build: \`npm run build\`
274
+ 3. Validate: \`trik lint .\`
275
+ 4. Publish: \`trik publish\`
244
276
 
245
- ### hello
277
+ ## Development
246
278
 
247
- Say hello to someone.
279
+ ${devSection}
248
280
 
249
- **Input:**
250
- - \`name\` (string, required): Name to greet
281
+ ## Architecture
251
282
 
252
- ## Publishing
283
+ This trik uses the TrikHub v2 architecture:
284
+ - **Mode**: ${config.agentMode}
285
+ - **Domain**: ${domainStr}
253
286
 
254
- \`\`\`bash
255
- trik publish
256
- \`\`\`
287
+ ${archSection}
257
288
  `;
258
289
  }
259
- function generateGitignore() {
260
- return `node_modules/
261
- *.log
262
- .DS_Store
263
- `;
264
- }
265
- function toPascalCase(str) {
266
- return str
267
- .split('-')
268
- .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
269
- .join('');
290
+ // ============================================================================
291
+ // Public API
292
+ // ============================================================================
293
+ /**
294
+ * Generate a complete v2 TypeScript trik project.
295
+ *
296
+ * @returns Map of { relativePath: fileContent } for all project files.
297
+ */
298
+ export function generateTypescriptProject(config) {
299
+ const files = {};
300
+ // Core config files
301
+ files['manifest.json'] = generateManifest(config);
302
+ files['trikhub.json'] = generateTrikhubJson(config);
303
+ files['package.json'] = generatePackageJson(config);
304
+ files['tsconfig.json'] = generateTsConfig();
305
+ files['.gitignore'] = generateGitignore();
306
+ files['README.md'] = generateReadme(config);
307
+ // Source files
308
+ files['src/agent.ts'] = generateAgentTs(config);
309
+ if (config.agentMode === 'conversational') {
310
+ // Conversational mode: example tool + system prompt
311
+ files['src/tools/example.ts'] = generateExampleTool();
312
+ files['src/prompts/system.md'] = generateSystemPrompt(config);
313
+ }
314
+ // Tool mode: no separate tool files or system prompt — all logic in agent.ts
315
+ return files;
270
316
  }
271
317
  //# sourceMappingURL=typescript.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/templates/typescript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/templates/typescript.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trikhub/cli",
3
- "version": "0.6.0",
3
+ "version": "0.13.0",
4
4
  "description": "CLI for TrikHub - Teaching AI new triks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -16,23 +16,21 @@
16
16
  },
17
17
  "files": [
18
18
  "dist",
19
- "README.md"
19
+ "README.md",
20
+ "LICENSE"
20
21
  ],
21
22
  "dependencies": {
22
23
  "@inquirer/prompts": "^7.2.1",
23
24
  "chalk": "^5.3.0",
24
25
  "commander": "^12.1.0",
25
- "conf": "^13.0.1",
26
26
  "ora": "^8.0.1",
27
27
  "semver": "^7.6.3",
28
- "tar": "^7.4.0",
29
- "@trikhub/linter": "0.11.0",
30
- "@trikhub/manifest": "0.11.0"
28
+ "@trikhub/linter": "0.13.0",
29
+ "@trikhub/manifest": "0.13.0"
31
30
  },
32
31
  "devDependencies": {
33
32
  "@types/node": "^20.14.0",
34
- "@types/semver": "^7.5.8",
35
- "@types/tar": "^6.1.13"
33
+ "@types/semver": "^7.5.8"
36
34
  },
37
35
  "engines": {
38
36
  "node": ">=18.0.0"
@@ -53,7 +51,7 @@
53
51
  "trikhub",
54
52
  "trik",
55
53
  "ai",
56
- "skills",
54
+ "agent",
57
55
  "cli"
58
56
  ],
59
57
  "author": "Molefas",
@@ -1,33 +0,0 @@
1
- /**
2
- * @deprecated Use @trikhub/linter instead.
3
- *
4
- * This validator is deprecated and no longer used by the CLI.
5
- * All validation is now centralized in @trikhub/linter which provides:
6
- * - Support for both Node.js and Python package structures
7
- * - Consistent validation between `trik lint` and `trik publish`
8
- * - Full manifest schema validation via @trikhub/manifest
9
- *
10
- * Migration:
11
- * import { TrikLinter } from '@trikhub/linter';
12
- * const linter = new TrikLinter({ checkCompiledEntry: true });
13
- * const results = await linter.lintManifestOnly(trikPath);
14
- *
15
- * This file will be removed in a future version.
16
- */
17
- /**
18
- * @deprecated Use LintResult[] from @trikhub/linter instead.
19
- */
20
- export interface ValidationResult {
21
- valid: boolean;
22
- errors: string[];
23
- warnings: string[];
24
- }
25
- /**
26
- * @deprecated Use TrikLinter.lintManifestOnly() from @trikhub/linter instead.
27
- */
28
- export declare function validateTrik(trikPath: string): ValidationResult;
29
- /**
30
- * @deprecated Use TrikLinter.formatResults() from @trikhub/linter instead.
31
- */
32
- export declare function formatValidationResult(result: ValidationResult): string;
33
- //# sourceMappingURL=validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/lib/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkCD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAsG/D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAkBvE"}