@trikhub/cli 0.15.0 → 0.17.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.
package/README.md CHANGED
@@ -15,6 +15,10 @@ npm install -g @trikhub/cli
15
15
  trik init ts # TypeScript
16
16
  trik init py # Python
17
17
 
18
+ # Scaffold an agent that consumes triks
19
+ trik create-agent ts # TypeScript
20
+ trik create-agent py # Python
21
+
18
22
  # Search for triks
19
23
  trik search article
20
24
 
@@ -116,6 +120,72 @@ pip install -e .
116
120
  trik lint .
117
121
  ```
118
122
 
123
+ ### `trik create-agent <language>`
124
+
125
+ Scaffold a minimal agent project that can immediately consume triks. This is the counterpart to `trik init` — it creates the _consuming agent_, not a trik.
126
+
127
+ ```bash
128
+ # Create a TypeScript agent
129
+ trik create-agent ts
130
+
131
+ # Create a Python agent
132
+ trik create-agent py
133
+ ```
134
+
135
+ The interactive wizard prompts for:
136
+
137
+ - **Project name** - lowercase, alphanumeric + dashes (e.g., `my-agent`)
138
+ - **LLM Provider** - OpenAI, Anthropic, or Google
139
+ - **Location** - Where to create the project
140
+
141
+ #### Generated Structure
142
+
143
+ **TypeScript:**
144
+
145
+ ```text
146
+ my-agent/
147
+ ├── package.json # Only the selected provider's LangChain pkg
148
+ ├── tsconfig.json
149
+ ├── .env.example # Single env var for selected provider
150
+ ├── .gitignore
151
+ ├── .trikhub/
152
+ │ └── config.json # Empty triks array
153
+ └── src/
154
+ ├── agent.ts # TrikGateway + enhance() + createReactAgent
155
+ └── cli.ts # readline loop with processMessage()
156
+ ```
157
+
158
+ **Python:**
159
+
160
+ ```text
161
+ my-agent/
162
+ ├── pyproject.toml # Only the selected provider's langchain pkg
163
+ ├── .env.example
164
+ ├── .gitignore
165
+ ├── .trikhub/
166
+ │ └── config.json
167
+ ├── agent.py # TrikGateway + enhance() + create_react_agent
168
+ └── cli.py # asyncio CLI loop
169
+ ```
170
+
171
+ #### Running Your Agent
172
+
173
+ ```bash
174
+ cd my-agent
175
+ cp .env.example .env
176
+ # Add your API key to .env
177
+
178
+ # TypeScript
179
+ npm run dev
180
+
181
+ # Python
182
+ python -m venv .venv && source .venv/bin/activate
183
+ pip install -e .
184
+ python cli.py
185
+ ```
186
+
187
+ Then install triks with `trik install @scope/trik-name` and restart the agent.
188
+
119
189
  ### `trik lint <path>`
120
190
 
121
191
  Validate a trik's manifest and source files. Shows errors and warnings.
package/dist/cli.js CHANGED
@@ -17,6 +17,7 @@ import { unpublishCommand } from './commands/unpublish.js';
17
17
  import { upgradeCommand, upgradeAllCommand } from './commands/upgrade.js';
18
18
  import { syncCommand } from './commands/sync.js';
19
19
  import { initCommand } from './commands/init.js';
20
+ import { createAgentCommand } from './commands/create-agent.js';
20
21
  import { lintCommand } from './commands/lint.js';
21
22
  import { mcpCommand } from './commands/mcp.js';
22
23
  // Read version from package.json
@@ -124,6 +125,12 @@ program
124
125
  .command('init <language>')
125
126
  .description('Initialize a new trik project (ts or py)')
126
127
  .action(initCommand);
128
+ // Create-agent command
129
+ program
130
+ .command('create-agent <language>')
131
+ .description('Scaffold a minimal agent project ready to consume triks')
132
+ .option('-y, --yes', 'Skip prompts, use defaults')
133
+ .action(createAgentCommand);
127
134
  // Lint command
128
135
  program
129
136
  .command('lint <path>')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * trik create-agent command
3
+ *
4
+ * Scaffolds a minimal agent project ready to consume triks.
5
+ */
6
+ export declare function createAgentCommand(languageArg: string, options?: {
7
+ yes?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=create-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-agent.d.ts","sourceRoot":"","sources":["../../src/commands/create-agent.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4CH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiJ5G"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * trik create-agent command
3
+ *
4
+ * Scaffolds a minimal agent project ready to consume triks.
5
+ */
6
+ import { existsSync } from 'node:fs';
7
+ import { mkdir, writeFile } from 'node:fs/promises';
8
+ import { join, resolve } from 'node:path';
9
+ import chalk from 'chalk';
10
+ import ora from 'ora';
11
+ import { input, select } from '@inquirer/prompts';
12
+ import { generateAgentTypescriptProject } from '../templates/agent-typescript.js';
13
+ import { generateAgentPythonProject } from '../templates/agent-python.js';
14
+ /**
15
+ * Validate project name — same rules as trik init.
16
+ */
17
+ function validateProjectName(name) {
18
+ if (name.length < 2 || name.length > 50) {
19
+ return 'Name must be 2-50 characters';
20
+ }
21
+ if (!/^[a-z]/.test(name)) {
22
+ return 'Name must start with a letter';
23
+ }
24
+ if (!/^[a-z][a-z0-9-]*$/.test(name)) {
25
+ return 'Name must be lowercase, alphanumeric + dashes only';
26
+ }
27
+ return true;
28
+ }
29
+ /**
30
+ * Parse and normalize language argument.
31
+ */
32
+ function parseLanguage(lang) {
33
+ const normalized = lang.toLowerCase();
34
+ if (normalized === 'ts' || normalized === 'typescript') {
35
+ return 'ts';
36
+ }
37
+ if (normalized === 'py' || normalized === 'python') {
38
+ return 'py';
39
+ }
40
+ return null;
41
+ }
42
+ export async function createAgentCommand(languageArg, options = {}) {
43
+ const spinner = ora();
44
+ try {
45
+ // Validate language
46
+ const language = parseLanguage(languageArg);
47
+ if (!language) {
48
+ console.log(chalk.red(`Invalid language: ${languageArg}`));
49
+ console.log(chalk.dim('Supported languages: ts (TypeScript) or py (Python)'));
50
+ process.exit(1);
51
+ }
52
+ let name;
53
+ let provider;
54
+ let targetDir;
55
+ if (options.yes) {
56
+ name = 'my-agent';
57
+ provider = 'openai';
58
+ targetDir = resolve(process.cwd(), name);
59
+ }
60
+ else {
61
+ console.log();
62
+ console.log(chalk.bold(' Create a new Agent'));
63
+ console.log();
64
+ // Interactive prompts
65
+ name = await input({
66
+ message: 'Project name:',
67
+ default: 'my-agent',
68
+ validate: validateProjectName,
69
+ transformer: (value) => value.toLowerCase(),
70
+ });
71
+ provider = await select({
72
+ message: 'LLM Provider:',
73
+ choices: [
74
+ { value: 'openai', name: 'OpenAI (gpt-4o-mini)' },
75
+ { value: 'anthropic', name: 'Anthropic (claude-sonnet)' },
76
+ { value: 'google', name: 'Google (gemini-2.0-flash)' },
77
+ ],
78
+ default: 'openai',
79
+ });
80
+ // Path selection
81
+ const pathChoice = await select({
82
+ message: 'Where to create the project?',
83
+ choices: [
84
+ { value: 'current', name: `Current folder (./${name})` },
85
+ { value: 'other', name: 'Other location...' },
86
+ ],
87
+ });
88
+ if (pathChoice === 'current') {
89
+ targetDir = resolve(process.cwd(), name);
90
+ }
91
+ else {
92
+ const customPath = await input({
93
+ message: 'Enter path:',
94
+ default: `./${name}`,
95
+ });
96
+ targetDir = resolve(process.cwd(), customPath);
97
+ }
98
+ }
99
+ // Check if directory exists
100
+ if (existsSync(targetDir)) {
101
+ console.log();
102
+ console.log(chalk.red(`Directory already exists: ${targetDir}`));
103
+ process.exit(1);
104
+ }
105
+ console.log();
106
+ spinner.start('Creating agent project...');
107
+ // Build config
108
+ const config = { name, provider };
109
+ // Generate project files
110
+ const files = language === 'ts'
111
+ ? generateAgentTypescriptProject(config)
112
+ : generateAgentPythonProject(config);
113
+ // Create target directory and write all files
114
+ await mkdir(targetDir, { recursive: true });
115
+ for (const [relativePath, content] of Object.entries(files)) {
116
+ const filePath = join(targetDir, relativePath);
117
+ const fileDir = join(filePath, '..');
118
+ await mkdir(fileDir, { recursive: true });
119
+ await writeFile(filePath, content, 'utf-8');
120
+ }
121
+ spinner.succeed('Agent project created');
122
+ // Install dependencies (TypeScript only)
123
+ let packageManager = 'npm';
124
+ if (language === 'ts') {
125
+ const { execSync } = await import('node:child_process');
126
+ try {
127
+ execSync('pnpm --version', { stdio: 'ignore' });
128
+ packageManager = 'pnpm';
129
+ }
130
+ catch {
131
+ // pnpm not available, use npm
132
+ }
133
+ spinner.start(`Installing dependencies with ${packageManager}...`);
134
+ try {
135
+ execSync(`${packageManager} install`, { cwd: targetDir, stdio: 'ignore' });
136
+ spinner.succeed('Dependencies installed');
137
+ }
138
+ catch {
139
+ spinner.warn(`Failed to install dependencies. Run \`${packageManager} install\` manually.`);
140
+ }
141
+ }
142
+ // Show success message
143
+ console.log();
144
+ console.log(chalk.green.bold(' Your agent is ready!'));
145
+ console.log();
146
+ console.log(chalk.dim(' Next steps:'));
147
+ console.log(` cd ${name}`);
148
+ console.log(' cp .env.example .env');
149
+ console.log(' # Add your API key to .env');
150
+ if (language === 'py') {
151
+ console.log(' python -m venv .venv && source .venv/bin/activate');
152
+ console.log(' pip install -e .');
153
+ console.log(' python cli.py');
154
+ }
155
+ else {
156
+ console.log(` ${packageManager === 'pnpm' ? 'pnpm' : 'npm run'} dev`);
157
+ }
158
+ console.log();
159
+ console.log(chalk.dim(' Install triks:'));
160
+ console.log(' trik install @scope/trik-name');
161
+ console.log();
162
+ }
163
+ catch (error) {
164
+ spinner.fail('Failed to create agent project');
165
+ if (error instanceof Error) {
166
+ // Handle user cancellation gracefully
167
+ if (error.message.includes('User force closed')) {
168
+ process.exit(0);
169
+ }
170
+ console.error(chalk.red(error.message));
171
+ }
172
+ process.exit(1);
173
+ }
174
+ }
175
+ //# sourceMappingURL=create-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-agent.js","sourceRoot":"","sources":["../../src/commands/create-agent.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,WAAW;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvF"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,WAAW;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BvF"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { resolve } from 'node:path';
8
8
  import chalk from 'chalk';
9
- import { TrikLinter } from '@trikhub/linter';
9
+ import { TrikLinter, formatScanResult } from '@trikhub/linter';
10
10
  export async function lintCommand(trikPath, options) {
11
11
  const resolvedPath = resolve(trikPath);
12
12
  console.log(`Linting trik at: ${resolvedPath}\n`);
@@ -15,7 +15,12 @@ export async function lintCommand(trikPath, options) {
15
15
  skipRules: options.skip,
16
16
  });
17
17
  try {
18
- const results = await linter.lint(resolvedPath);
18
+ const { results, scan } = await linter.lint(resolvedPath);
19
+ // Security tier
20
+ console.log(formatScanResult(scan));
21
+ console.log('');
22
+ // Manifest validation
23
+ console.log(chalk.bold('Manifest validation:'));
19
24
  console.log(linter.formatResults(results));
20
25
  if (linter.hasErrors(results)) {
21
26
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAO7C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAoB;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,IAAI,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,SAAS,EAAE,OAAO,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAO/D,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAoB;IACtE,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,IAAI,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,SAAS,EAAE,OAAO,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE1D,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,sBAAsB;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3C,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Python agent scaffold template.
3
+ *
4
+ * Generates a minimal Python agent project ready to consume triks via TrikGateway.
5
+ * Mirrors agent-typescript.ts but targets a Python environment.
6
+ */
7
+ import type { CreateAgentConfig } from './agent-typescript.js';
8
+ /**
9
+ * Generate a complete Python agent project ready to consume triks.
10
+ *
11
+ * @returns Map of { relativePath: fileContent } for all project files.
12
+ */
13
+ export declare function generateAgentPythonProject(config: CreateAgentConfig): Record<string, string>;
14
+ //# sourceMappingURL=agent-python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-python.d.ts","sourceRoot":"","sources":["../../src/templates/agent-python.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA0L/D;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW5F"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Python agent scaffold template.
3
+ *
4
+ * Generates a minimal Python agent project ready to consume triks via TrikGateway.
5
+ * Mirrors agent-typescript.ts but targets a Python environment.
6
+ */
7
+ const PROVIDERS = {
8
+ openai: {
9
+ importPath: 'langchain_openai',
10
+ className: 'ChatOpenAI',
11
+ pipPackage: 'langchain-openai',
12
+ defaultModel: 'gpt-4o-mini',
13
+ envVar: 'OPENAI_API_KEY',
14
+ },
15
+ anthropic: {
16
+ importPath: 'langchain_anthropic',
17
+ className: 'ChatAnthropic',
18
+ pipPackage: 'langchain-anthropic',
19
+ defaultModel: 'claude-sonnet-4-20250514',
20
+ envVar: 'ANTHROPIC_API_KEY',
21
+ },
22
+ google: {
23
+ importPath: 'langchain_google_genai',
24
+ className: 'ChatGoogleGenerativeAI',
25
+ pipPackage: 'langchain-google-genai',
26
+ defaultModel: 'gemini-2.0-flash',
27
+ envVar: 'GOOGLE_API_KEY',
28
+ },
29
+ };
30
+ // ============================================================================
31
+ // File generators
32
+ // ============================================================================
33
+ function generatePyprojectToml(config) {
34
+ const provider = PROVIDERS[config.provider];
35
+ return `[build-system]
36
+ requires = ["setuptools>=61.0", "wheel"]
37
+ build-backend = "setuptools.build_meta"
38
+
39
+ [project]
40
+ name = "${config.name}"
41
+ version = "0.1.0"
42
+ description = "AI agent powered by TrikHub"
43
+ requires-python = ">=3.10"
44
+
45
+ dependencies = [
46
+ "${provider.pipPackage}>=1.0.0",
47
+ "langchain-core>=0.3.0",
48
+ "langgraph>=0.2.0",
49
+ "trikhub>=0.6.0",
50
+ "python-dotenv>=1.0.0",
51
+ ]
52
+ `;
53
+ }
54
+ function generateEnvExample(config) {
55
+ const provider = PROVIDERS[config.provider];
56
+ return `${provider.envVar}=your-api-key-here\n`;
57
+ }
58
+ function generateGitignore() {
59
+ return `__pycache__/
60
+ *.pyc
61
+ *.egg-info/
62
+ dist/
63
+ build/
64
+ .venv/
65
+ .env
66
+ `;
67
+ }
68
+ function generateTrikhubConfig() {
69
+ return JSON.stringify({ triks: [] }, null, 2);
70
+ }
71
+ function generateAgentPy(config) {
72
+ const provider = PROVIDERS[config.provider];
73
+ return `"""AI agent with TrikHub integration."""
74
+
75
+ from __future__ import annotations
76
+
77
+ from ${provider.importPath} import ${provider.className}
78
+ from langgraph.prebuilt import create_react_agent
79
+
80
+ from trikhub.gateway import TrikGateway
81
+ from trikhub.langchain import enhance, get_handoff_tools_for_agent, get_exposed_tools_for_agent
82
+
83
+ SYSTEM_PROMPT = """You are a helpful assistant.
84
+ When a trik can handle the user's request, use the appropriate tool."""
85
+
86
+
87
+ async def initialize_agent():
88
+ model = ${provider.className}(model="${provider.defaultModel}")
89
+
90
+ gateway = TrikGateway()
91
+ await gateway.initialize()
92
+ await gateway.load_triks_from_config()
93
+
94
+ handoff_tools = get_handoff_tools_for_agent(gateway)
95
+ exposed_tools = get_exposed_tools_for_agent(gateway)
96
+
97
+ agent = create_react_agent(
98
+ model=model,
99
+ tools=[*handoff_tools, *exposed_tools],
100
+ prompt=SYSTEM_PROMPT,
101
+ )
102
+
103
+ app = await enhance(agent, gateway_instance=gateway)
104
+
105
+ return app, handoff_tools, exposed_tools
106
+ `;
107
+ }
108
+ function generateCliPy() {
109
+ return `#!/usr/bin/env python3
110
+ """CLI for the TrikHub-powered agent."""
111
+
112
+ from __future__ import annotations
113
+
114
+ import asyncio
115
+
116
+ from dotenv import load_dotenv
117
+
118
+ load_dotenv()
119
+
120
+ from agent import initialize_agent
121
+
122
+
123
+ async def main() -> None:
124
+ print("Loading agent...\\n")
125
+
126
+ app, handoff_tools, exposed_tools = await initialize_agent()
127
+
128
+ if handoff_tools:
129
+ print(f"Handoff triks: {', '.join(t.name for t in handoff_tools)}")
130
+ if exposed_tools:
131
+ print(f"Tool-mode triks: {', '.join(t.name for t in exposed_tools)}")
132
+ print('Type "/back" to return from a trik handoff, "exit" to quit.\\n')
133
+
134
+ session_id = f"cli-{id(app)}"
135
+
136
+ while True:
137
+ try:
138
+ user_input = input("You: ").strip()
139
+ except (KeyboardInterrupt, EOFError):
140
+ print("\\n\\nGoodbye!")
141
+ break
142
+
143
+ if not user_input:
144
+ continue
145
+ if user_input.lower() in ("exit", "quit"):
146
+ print("\\nGoodbye!")
147
+ break
148
+
149
+ try:
150
+ result = await app.process_message(user_input, session_id)
151
+
152
+ if result.source == "system":
153
+ print(f"\\n\\033[2m{result.message}\\033[0m\\n")
154
+ elif result.source != "main":
155
+ print(f"\\n[{result.source}] {result.message}\\n")
156
+ else:
157
+ print(f"\\nAssistant: {result.message}\\n")
158
+ except Exception as e:
159
+ print(f"\\nError: {e}")
160
+ print("Please try again.\\n")
161
+
162
+
163
+ if __name__ == "__main__":
164
+ asyncio.run(main())
165
+ `;
166
+ }
167
+ // ============================================================================
168
+ // Public API
169
+ // ============================================================================
170
+ /**
171
+ * Generate a complete Python agent project ready to consume triks.
172
+ *
173
+ * @returns Map of { relativePath: fileContent } for all project files.
174
+ */
175
+ export function generateAgentPythonProject(config) {
176
+ const files = {};
177
+ files['pyproject.toml'] = generatePyprojectToml(config);
178
+ files['.env.example'] = generateEnvExample(config);
179
+ files['.gitignore'] = generateGitignore();
180
+ files['.trikhub/config.json'] = generateTrikhubConfig();
181
+ files['agent.py'] = generateAgentPy(config);
182
+ files['cli.py'] = generateCliPy();
183
+ return files;
184
+ }
185
+ //# sourceMappingURL=agent-python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-python.js","sourceRoot":"","sources":["../../src/templates/agent-python.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,MAAM,SAAS,GAAiC;IAC9C,MAAM,EAAE;QACN,UAAU,EAAE,kBAAkB;QAC9B,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,kBAAkB;QAC9B,YAAY,EAAE,aAAa;QAC3B,MAAM,EAAE,gBAAgB;KACzB;IACD,SAAS,EAAE;QACT,UAAU,EAAE,qBAAqB;QACjC,SAAS,EAAE,eAAe;QAC1B,UAAU,EAAE,qBAAqB;QACjC,YAAY,EAAE,0BAA0B;QACxC,MAAM,EAAE,mBAAmB;KAC5B;IACD,MAAM,EAAE;QACN,UAAU,EAAE,wBAAwB;QACpC,SAAS,EAAE,wBAAwB;QACnC,UAAU,EAAE,wBAAwB;QACpC,YAAY,EAAE,kBAAkB;QAChC,MAAM,EAAE,gBAAgB;KACzB;CACF,CAAC;AAEF,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,SAAS,qBAAqB,CAAC,MAAyB;IACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO;;;;;UAKC,MAAM,CAAC,IAAI;;;;;;OAMd,QAAQ,CAAC,UAAU;;;;;;CAMzB,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAyB;IACnD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,GAAG,QAAQ,CAAC,MAAM,sBAAsB,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,MAAyB;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO;;;;OAIF,QAAQ,CAAC,UAAU,WAAW,QAAQ,CAAC,SAAS;;;;;;;;;;;cAWzC,QAAQ,CAAC,SAAS,WAAW,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;CAkB/D,CAAC;AACF,CAAC;AAED,SAAS,aAAa;IACpB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDR,CAAC;AACF,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAyB;IAClE,MAAM,KAAK,GAA2B,EAAE,CAAC;IAEzC,KAAK,CAAC,gBAAgB,CAAC,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACxD,KAAK,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACnD,KAAK,CAAC,YAAY,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAC1C,KAAK,CAAC,sBAAsB,CAAC,GAAG,qBAAqB,EAAE,CAAC;IACxD,KAAK,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,EAAE,CAAC;IAElC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * TypeScript agent scaffold template.
3
+ *
4
+ * Generates a minimal agent project ready to consume triks via TrikGateway.
5
+ * This is the counterpart to `trik init` — it scaffolds the consuming agent,
6
+ * not a trik itself.
7
+ */
8
+ export interface CreateAgentConfig {
9
+ name: string;
10
+ provider: 'openai' | 'anthropic' | 'google';
11
+ }
12
+ /**
13
+ * Generate a complete TypeScript agent project ready to consume triks.
14
+ *
15
+ * @returns Map of { relativePath: fileContent } for all project files.
16
+ */
17
+ export declare function generateAgentTypescriptProject(config: CreateAgentConfig): Record<string, string>;
18
+ //# sourceMappingURL=agent-typescript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-typescript.d.ts","sourceRoot":"","sources":["../../src/templates/agent-typescript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC7C;AA+MD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYhG"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * TypeScript agent scaffold template.
3
+ *
4
+ * Generates a minimal agent project ready to consume triks via TrikGateway.
5
+ * This is the counterpart to `trik init` — it scaffolds the consuming agent,
6
+ * not a trik itself.
7
+ */
8
+ const PROVIDERS = {
9
+ openai: {
10
+ importPath: '@langchain/openai',
11
+ className: 'ChatOpenAI',
12
+ npmPackage: '@langchain/openai',
13
+ defaultModel: 'gpt-4o-mini',
14
+ envVar: 'OPENAI_API_KEY',
15
+ },
16
+ anthropic: {
17
+ importPath: '@langchain/anthropic',
18
+ className: 'ChatAnthropic',
19
+ npmPackage: '@langchain/anthropic',
20
+ defaultModel: 'claude-sonnet-4-20250514',
21
+ envVar: 'ANTHROPIC_API_KEY',
22
+ },
23
+ google: {
24
+ importPath: '@langchain/google-genai',
25
+ className: 'ChatGoogleGenerativeAI',
26
+ npmPackage: '@langchain/google-genai',
27
+ defaultModel: 'gemini-2.0-flash',
28
+ envVar: 'GOOGLE_API_KEY',
29
+ },
30
+ };
31
+ // ============================================================================
32
+ // File generators
33
+ // ============================================================================
34
+ function generatePackageJson(config) {
35
+ const provider = PROVIDERS[config.provider];
36
+ const pkg = {
37
+ name: config.name,
38
+ version: '0.1.0',
39
+ description: 'AI agent powered by TrikHub',
40
+ type: 'module',
41
+ scripts: {
42
+ dev: 'node --import tsx src/cli.ts',
43
+ build: 'tsc',
44
+ },
45
+ dependencies: {
46
+ [provider.npmPackage]: '^1.0.0',
47
+ '@langchain/core': '^1.0.0',
48
+ '@langchain/langgraph': '^1.0.0',
49
+ '@trikhub/gateway': 'latest',
50
+ dotenv: '^16.4.0',
51
+ },
52
+ devDependencies: {
53
+ tsx: '^4.19.0',
54
+ typescript: '^5.7.0',
55
+ },
56
+ };
57
+ return JSON.stringify(pkg, null, 2);
58
+ }
59
+ function generateTsConfig() {
60
+ const tsconfig = {
61
+ compilerOptions: {
62
+ target: 'ES2022',
63
+ module: 'NodeNext',
64
+ moduleResolution: 'nodenext',
65
+ outDir: './dist',
66
+ rootDir: './src',
67
+ strict: true,
68
+ esModuleInterop: true,
69
+ skipLibCheck: true,
70
+ declaration: true,
71
+ sourceMap: true,
72
+ },
73
+ include: ['src/**/*'],
74
+ };
75
+ return JSON.stringify(tsconfig, null, 2);
76
+ }
77
+ function generateEnvExample(config) {
78
+ const provider = PROVIDERS[config.provider];
79
+ return `${provider.envVar}=your-api-key-here\n`;
80
+ }
81
+ function generateGitignore() {
82
+ return `node_modules/
83
+ dist/
84
+ *.tsbuildinfo
85
+ .env
86
+ `;
87
+ }
88
+ function generateTrikhubConfig() {
89
+ return JSON.stringify({ triks: [] }, null, 2);
90
+ }
91
+ function generateAgentTs(config) {
92
+ const provider = PROVIDERS[config.provider];
93
+ // Anthropic uses modelName, others use model
94
+ const modelParam = config.provider === 'anthropic' ? 'modelName' : 'model';
95
+ return `import { ${provider.className} } from '${provider.importPath}';
96
+ import { createReactAgent } from '@langchain/langgraph/prebuilt';
97
+ import { TrikGateway } from '@trikhub/gateway';
98
+ import { enhance, getHandoffToolsForAgent, getExposedToolsForAgent } from '@trikhub/gateway/langchain';
99
+
100
+ const SYSTEM_PROMPT = \`You are a helpful assistant.
101
+ When a trik can handle the user's request, use the appropriate tool.\`;
102
+
103
+ export async function initializeAgent() {
104
+ const model = new ${provider.className}({ ${modelParam}: '${provider.defaultModel}' });
105
+
106
+ const gateway = new TrikGateway();
107
+ await gateway.initialize();
108
+ await gateway.loadTriksFromConfig();
109
+
110
+ const handoffTools = getHandoffToolsForAgent(gateway);
111
+ const exposedTools = getExposedToolsForAgent(gateway);
112
+
113
+ const agent = createReactAgent({
114
+ llm: model,
115
+ tools: [...handoffTools, ...exposedTools] as any,
116
+ messageModifier: SYSTEM_PROMPT,
117
+ });
118
+
119
+ const app = await enhance(agent as any, { gatewayInstance: gateway });
120
+
121
+ return { app, handoffTools, exposedTools };
122
+ }
123
+ `;
124
+ }
125
+ function generateCliTs() {
126
+ return `import 'dotenv/config';
127
+ import * as readline from 'readline';
128
+ import { initializeAgent } from './agent.js';
129
+
130
+ const rl = readline.createInterface({
131
+ input: process.stdin,
132
+ output: process.stdout,
133
+ });
134
+
135
+ function prompt(question: string): Promise<string> {
136
+ return new Promise((resolve) => {
137
+ rl.question(question, resolve);
138
+ });
139
+ }
140
+
141
+ async function main() {
142
+ console.log('Loading agent...\\n');
143
+
144
+ const { app, handoffTools, exposedTools } = await initializeAgent();
145
+
146
+ if (handoffTools.length > 0) {
147
+ console.log(\`Handoff triks: \${handoffTools.map((t) => t.name).join(', ')}\`);
148
+ }
149
+ if (exposedTools.length > 0) {
150
+ console.log(\`Tool-mode triks: \${exposedTools.map((t) => t.name).join(', ')}\`);
151
+ }
152
+ console.log('Type "/back" to return from a trik handoff, "exit" to quit.\\n');
153
+
154
+ const sessionId = \`cli-\${Date.now()}\`;
155
+
156
+ while (true) {
157
+ const userInput = await prompt('You: ');
158
+
159
+ if (!userInput.trim()) continue;
160
+ if (userInput.toLowerCase() === 'exit' || userInput.toLowerCase() === 'quit') {
161
+ console.log('\\nGoodbye!');
162
+ break;
163
+ }
164
+
165
+ try {
166
+ const result = await app.processMessage(userInput, sessionId);
167
+
168
+ if (result.source === 'system') {
169
+ console.log(\`\\n\\x1b[2m\${result.message}\\x1b[0m\\n\`);
170
+ } else if (result.source !== 'main') {
171
+ console.log(\`\\n[\${result.source}] \${result.message}\\n\`);
172
+ } else {
173
+ console.log(\`\\nAssistant: \${result.message}\\n\`);
174
+ }
175
+ } catch (error) {
176
+ console.error('\\nError:', error);
177
+ console.log('Please try again.\\n');
178
+ }
179
+ }
180
+
181
+ rl.close();
182
+ }
183
+
184
+ main().catch((error) => {
185
+ console.error(error);
186
+ rl.close();
187
+ });
188
+ `;
189
+ }
190
+ // ============================================================================
191
+ // Public API
192
+ // ============================================================================
193
+ /**
194
+ * Generate a complete TypeScript agent project ready to consume triks.
195
+ *
196
+ * @returns Map of { relativePath: fileContent } for all project files.
197
+ */
198
+ export function generateAgentTypescriptProject(config) {
199
+ const files = {};
200
+ files['package.json'] = generatePackageJson(config);
201
+ files['tsconfig.json'] = generateTsConfig();
202
+ files['.env.example'] = generateEnvExample(config);
203
+ files['.gitignore'] = generateGitignore();
204
+ files['.trikhub/config.json'] = generateTrikhubConfig();
205
+ files['src/agent.ts'] = generateAgentTs(config);
206
+ files['src/cli.ts'] = generateCliTs();
207
+ return files;
208
+ }
209
+ //# sourceMappingURL=agent-typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-typescript.js","sourceRoot":"","sources":["../../src/templates/agent-typescript.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/templates/python.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA2TlD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBhF"}
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/templates/python.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAgVlD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyBhF"}
@@ -88,6 +88,20 @@ function generateManifest(config) {
88
88
  }
89
89
  return JSON.stringify(manifest, null, 2);
90
90
  }
91
+ /**
92
+ * Generate a manifest for inclusion inside the pip-installable package.
93
+ * Paths are relative to the package directory (src/{pkg}/) instead of the repo root.
94
+ */
95
+ function generatePackageManifest(config) {
96
+ const manifest = JSON.parse(generateManifest(config));
97
+ // Adjust entry.module to be relative to the package directory
98
+ manifest.entry.module = './main.py';
99
+ // Adjust systemPromptFile if present
100
+ if (manifest.agent.systemPromptFile) {
101
+ manifest.agent.systemPromptFile = './prompts/system.md';
102
+ }
103
+ return JSON.stringify(manifest, null, 2);
104
+ }
91
105
  function generateTrikhubJson(config) {
92
106
  const metadata = {
93
107
  displayName: config.displayName,
@@ -105,7 +119,7 @@ function generateTrikhubJson(config) {
105
119
  function generatePyprojectToml(config) {
106
120
  const isToolMode = config.agentMode === 'tool';
107
121
  const pkg = toPythonPackage(config.name);
108
- const deps = [' "trikhub-sdk>=0.1.0",'];
122
+ const deps = [' "trikhub>=0.16.0",'];
109
123
  if (!isToolMode) {
110
124
  deps.push(' "langchain-anthropic>=0.3.0",');
111
125
  deps.push(' "langchain-core>=0.3.0",');
@@ -129,6 +143,9 @@ ${deps.join('\n')}
129
143
  [tool.setuptools.packages.find]
130
144
  where = ["src"]
131
145
  include = ["${pkg}*"]
146
+
147
+ [tool.setuptools.package-data]
148
+ ${pkg} = ["manifest.json", "prompts/*.md"]
132
149
  `;
133
150
  }
134
151
  function generateToolModeMain(config) {
@@ -302,6 +319,10 @@ export function generatePythonProject(config) {
302
319
  if (config.agentMode === 'conversational') {
303
320
  files[`src/${pkg}/prompts/system.md`] = generateSystemPrompt(config);
304
321
  }
322
+ // Include manifest inside the pip-installable package so the gateway can
323
+ // discover it after `pip install`. Paths are adjusted to be relative to
324
+ // the package directory rather than the repo root.
325
+ files[`src/${pkg}/manifest.json`] = generatePackageManifest(config);
305
326
  return files;
306
327
  }
307
328
  //# sourceMappingURL=python.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/templates/python.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/templates/python.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.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "CLI for TrikHub - Teaching AI new triks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,15 +25,15 @@
25
25
  "commander": "^12.1.0",
26
26
  "ora": "^8.0.1",
27
27
  "semver": "^7.6.3",
28
- "@trikhub/linter": "0.15.0",
29
- "@trikhub/manifest": "0.15.0"
28
+ "@trikhub/linter": "0.17.0",
29
+ "@trikhub/manifest": "0.17.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^20.14.0",
33
33
  "@types/semver": "^7.5.8"
34
34
  },
35
35
  "engines": {
36
- "node": ">=18.0.0"
36
+ "node": ">=22.5.0"
37
37
  },
38
38
  "repository": {
39
39
  "type": "git",