@townco/agent 0.1.54 → 0.1.56

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 (37) hide show
  1. package/dist/acp-server/adapter.d.ts +1 -0
  2. package/dist/acp-server/adapter.js +9 -1
  3. package/dist/acp-server/http.js +75 -6
  4. package/dist/acp-server/session-storage.d.ts +14 -0
  5. package/dist/acp-server/session-storage.js +47 -0
  6. package/dist/definition/index.d.ts +9 -0
  7. package/dist/definition/index.js +9 -0
  8. package/dist/index.js +1 -1
  9. package/dist/logger.d.ts +26 -0
  10. package/dist/logger.js +43 -0
  11. package/dist/runner/agent-runner.d.ts +5 -1
  12. package/dist/runner/agent-runner.js +2 -1
  13. package/dist/runner/hooks/executor.js +1 -1
  14. package/dist/runner/hooks/loader.js +1 -1
  15. package/dist/runner/hooks/predefined/compaction-tool.js +1 -1
  16. package/dist/runner/hooks/predefined/tool-response-compactor.js +1 -1
  17. package/dist/runner/langchain/index.js +19 -7
  18. package/dist/runner/langchain/model-factory.d.ts +2 -0
  19. package/dist/runner/langchain/model-factory.js +20 -1
  20. package/dist/runner/langchain/tools/browser.d.ts +100 -0
  21. package/dist/runner/langchain/tools/browser.js +412 -0
  22. package/dist/runner/langchain/tools/port-utils.d.ts +8 -0
  23. package/dist/runner/langchain/tools/port-utils.js +35 -0
  24. package/dist/runner/langchain/tools/subagent.js +230 -127
  25. package/dist/runner/tools.d.ts +2 -2
  26. package/dist/runner/tools.js +1 -0
  27. package/dist/scaffold/index.js +7 -1
  28. package/dist/scaffold/templates/dot-claude/CLAUDE-append.md +2 -0
  29. package/dist/storage/index.js +1 -1
  30. package/dist/telemetry/index.d.ts +5 -0
  31. package/dist/telemetry/index.js +10 -0
  32. package/dist/templates/index.d.ts +2 -0
  33. package/dist/templates/index.js +30 -8
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/index.ts +1 -1
  36. package/package.json +11 -6
  37. package/templates/index.ts +40 -8
package/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { basename } from "node:path";
2
- import { createLogger } from "@townco/core";
3
2
  import { makeHttpTransport, makeStdioTransport } from "./acp-server";
4
3
  import type { AgentDefinition } from "./definition";
4
+ import { createLogger } from "./logger.js";
5
5
  import { initializeOpenTelemetryFromEnv } from "./telemetry/setup.js";
6
6
  import { makeSubagentsTool } from "./utils";
7
7
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@townco/agent",
3
- "version": "0.1.54",
3
+ "version": "0.1.56",
4
4
  "type": "module",
5
5
  "module": "index.ts",
6
6
  "files": [
@@ -42,6 +42,10 @@
42
42
  "./utils": {
43
43
  "import": "./dist/utils/index.js",
44
44
  "types": "./dist/utils/index.d.ts"
45
+ },
46
+ "./logger": {
47
+ "import": "./dist/logger.js",
48
+ "types": "./dist/logger.d.ts"
45
49
  }
46
50
  },
47
51
  "scripts": {
@@ -57,6 +61,7 @@
57
61
  "@anthropic-ai/sdk": "^0.70.0",
58
62
  "@google/genai": "^0.14.1",
59
63
  "@anthropic-ai/tokenizer": "^0.0.4",
64
+ "@onkernel/sdk": "^0.16.0",
60
65
  "@electric-sql/pglite": "^0.2.15",
61
66
  "@langchain/anthropic": "1.0.1",
62
67
  "@langchain/core": "^1.0.3",
@@ -74,11 +79,11 @@
74
79
  "@opentelemetry/sdk-trace-base": "^1.28.0",
75
80
  "@opentelemetry/sdk-trace-node": "^1.28.0",
76
81
  "@opentelemetry/semantic-conventions": "^1.28.0",
77
- "@townco/core": "0.0.27",
78
- "@townco/gui-template": "0.1.46",
79
- "@townco/tsconfig": "0.1.46",
80
- "@townco/tui-template": "0.1.46",
81
- "@townco/ui": "0.1.49",
82
+ "@townco/core": "0.0.29",
83
+ "@townco/gui-template": "0.1.48",
84
+ "@townco/tsconfig": "0.1.48",
85
+ "@townco/tui-template": "0.1.48",
86
+ "@townco/ui": "0.1.51",
82
87
  "exa-js": "^2.0.0",
83
88
  "hono": "^4.10.4",
84
89
  "langchain": "^1.0.3",
@@ -22,6 +22,8 @@ export interface TemplateVars {
22
22
  >;
23
23
  systemPrompt: string | null;
24
24
  hasWebSearch: boolean;
25
+ hasGenerateImage: boolean;
26
+ hasBrowser: boolean;
25
27
  hooks?:
26
28
  | Array<
27
29
  | {
@@ -56,6 +58,12 @@ export function getTemplateVars(
56
58
  hasWebSearch: tools.some(
57
59
  (tool) => typeof tool === "string" && tool === "web_search",
58
60
  ),
61
+ hasGenerateImage: tools.some(
62
+ (tool) => typeof tool === "string" && tool === "generate_image",
63
+ ),
64
+ hasBrowser: tools.some(
65
+ (tool) => typeof tool === "string" && tool === "browser",
66
+ ),
59
67
  hooks: definition.hooks as TemplateVars["hooks"],
60
68
  };
61
69
 
@@ -134,8 +142,8 @@ export async function generateIndexTs(vars: TemplateVars): Promise<string> {
134
142
  return prettier.format(
135
143
  `import { makeHttpTransport, makeStdioTransport } from "@townco/agent/acp-server";
136
144
  import type { AgentDefinition } from "@townco/agent/definition";
145
+ import { createLogger } from "@townco/agent/logger";
137
146
  import { basename } from "node:path";
138
- import { createLogger } from "@townco/core";
139
147
 
140
148
  const logger = createLogger("agent-index");
141
149
 
@@ -213,9 +221,15 @@ export function generateReadme(vars: TemplateVars): string {
213
221
  })
214
222
  .join(", ")
215
223
  : "None";
216
- const envVars = vars.hasWebSearch
217
- ? "\n- `EXA_API_KEY`: Required for web_search tool"
218
- : "";
224
+ const envVars = [
225
+ vars.hasWebSearch ? "- `EXA_API_KEY`: Required for web_search tool" : "",
226
+ vars.hasGenerateImage
227
+ ? "- `GEMINI_API_KEY` (or `GOOGLE_API_KEY`): Required for generate_image tool"
228
+ : "",
229
+ vars.hasBrowser ? "- `KERNEL_API_KEY`: Required for browser tool" : "",
230
+ ]
231
+ .filter(Boolean)
232
+ .join("\n");
219
233
 
220
234
  return `# ${vars.name}
221
235
 
@@ -278,11 +292,29 @@ bun run build
278
292
  }
279
293
 
280
294
  export function generateEnvExample(vars: TemplateVars): string | null {
281
- if (!vars.hasWebSearch) {
295
+ const envs: string[] = [];
296
+
297
+ if (vars.hasWebSearch) {
298
+ envs.push("# Required for web_search tool");
299
+ envs.push("EXA_API_KEY=your_exa_api_key_here");
300
+ envs.push("");
301
+ }
302
+
303
+ if (vars.hasGenerateImage) {
304
+ envs.push("# Required for generate_image tool");
305
+ envs.push("GEMINI_API_KEY=your_gemini_api_key_here");
306
+ envs.push("");
307
+ }
308
+
309
+ if (vars.hasBrowser) {
310
+ envs.push("# Required for browser tool");
311
+ envs.push("KERNEL_API_KEY=your_kernel_api_key_here");
312
+ envs.push("");
313
+ }
314
+
315
+ if (envs.length === 0) {
282
316
  return null;
283
317
  }
284
318
 
285
- return `# Required for web_search tool
286
- EXA_API_KEY=your_exa_api_key_here
287
- `;
319
+ return envs.join("\n");
288
320
  }