@slashfi/agents-sdk 0.50.6 → 0.60.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.
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * ADK Init — Setup + skill injection for coding agents.
4
+ *
5
+ * Uses a preset-based system for scalability:
6
+ * - Presets are JSON files in src/presets/ (one per coding agent)
7
+ * - All use the agentskills.io SKILL.md standard
8
+ * - Adding a new coding agent = adding one JSON file
9
+ *
10
+ * Non-interactive by design. The coding agent is the UX layer.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.loadPresets = loadPresets;
14
+ exports.getPreset = getPreset;
15
+ exports.listPresets = listPresets;
16
+ exports.renderContent = renderContent;
17
+ exports.parseTarget = parseTarget;
18
+ exports.installSkill = installSkill;
19
+ exports.runInit = runInit;
20
+ const node_fs_1 = require("node:fs");
21
+ const node_path_1 = require("node:path");
22
+ const node_os_1 = require("node:os");
23
+ // ============================================
24
+ // Preset Loading
25
+ // ============================================
26
+ // Presets are inlined to avoid import.meta/CJS compatibility issues.
27
+ // To add a new coding agent, add an entry here and a JSON file in src/presets/.
28
+ const BUILTIN_PRESETS = [
29
+ { name: "claude", defaultPath: "~/.claude/skills", filename: "adk/SKILL.md" },
30
+ { name: "cursor", defaultPath: ".agents/skills", filename: "adk/SKILL.md" },
31
+ { name: "codex", defaultPath: ".agents/skills", filename: "adk/SKILL.md" },
32
+ { name: "copilot", defaultPath: ".github/skills", filename: "adk/SKILL.md" },
33
+ { name: "windsurf", defaultPath: ".windsurf/skills", filename: "adk/SKILL.md" },
34
+ { name: "hermes", defaultPath: "~/.hermes/skills", filename: "adk/SKILL.md" },
35
+ ];
36
+ let _presets = null;
37
+ function loadPresets() {
38
+ if (_presets)
39
+ return _presets;
40
+ _presets = new Map();
41
+ for (const preset of BUILTIN_PRESETS) {
42
+ _presets.set(preset.name, preset);
43
+ }
44
+ return _presets;
45
+ }
46
+ function getPreset(name) {
47
+ return loadPresets().get(name);
48
+ }
49
+ function listPresets() {
50
+ return Array.from(loadPresets().values());
51
+ }
52
+ // ============================================
53
+ // Skill Content Templates
54
+ // ============================================
55
+ const ADK_SKILL_CONTENT = `adk is the Agent Development Kit CLI.
56
+
57
+ Config location: run \`adk config-path\` to find the config directory.
58
+ Installed refs: run \`adk ref list\` to see configured agents.
59
+
60
+ Each installed ref has local docs at the config path under refs/<name>/:
61
+ - tools/*.tool.json — full tool schemas (inputSchema, description)
62
+ - skills/ — usage guides and patterns from the agent
63
+ - types/*.d.ts — TypeScript type definitions
64
+
65
+ ## Commands
66
+
67
+ To call a tool: \`adk ref call <name> <tool> '{"param": "value"}'\`
68
+ To browse available agents: \`adk registry browse slash\`
69
+ To install an agent: \`adk ref add <name>\`
70
+ To authenticate: \`adk ref auth <name>\`
71
+ To check auth status: \`adk ref auth-status <name>\`
72
+ To inspect an agent: \`adk ref inspect <name>\`
73
+ To view tool schemas: \`adk ref inspect <name> --full\`
74
+ To list resources: \`adk ref resources <name>\`
75
+ To read a resource: \`adk ref read <name> <uri>\`
76
+ `;
77
+ function renderContent(content, meta) {
78
+ return `---
79
+ name: ${meta.name}
80
+ description: ${meta.description}
81
+ ---
82
+ ${content}`;
83
+ }
84
+ // ============================================
85
+ // Target Parsing
86
+ // ============================================
87
+ function expandHome(p) {
88
+ if (p.startsWith("~/"))
89
+ return (0, node_path_1.join)((0, node_os_1.homedir)(), p.slice(2));
90
+ return p;
91
+ }
92
+ function parseTarget(value) {
93
+ const colonIdx = value.indexOf(":");
94
+ if (colonIdx === -1) {
95
+ // Just a preset name
96
+ const preset = getPreset(value);
97
+ if (!preset) {
98
+ const presetNames = Array.from(loadPresets().keys()).join(", ");
99
+ throw new Error(`Unknown preset: ${value}. Available: ${presetNames}`);
100
+ }
101
+ return { preset, path: expandHome(preset.defaultPath) };
102
+ }
103
+ const key = value.slice(0, colonIdx);
104
+ const path = value.slice(colonIdx + 1);
105
+ // Check if key is a preset name (with custom path)
106
+ const preset = getPreset(key);
107
+ if (preset) {
108
+ return { preset, path: expandHome(path || preset.defaultPath) };
109
+ }
110
+ const presetNames = Array.from(loadPresets().keys()).join(", ");
111
+ throw new Error(`Unknown target: ${key}. Available presets: ${presetNames}`);
112
+ }
113
+ // ============================================
114
+ // Skill Installation
115
+ // ============================================
116
+ function ensureWrite(path, content) {
117
+ const dir = (0, node_path_1.dirname)(path);
118
+ if (!(0, node_fs_1.existsSync)(dir)) {
119
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
120
+ }
121
+ (0, node_fs_1.writeFileSync)(path, content, "utf-8");
122
+ }
123
+ function installSkill(target) {
124
+ const outputPath = (0, node_path_1.join)((0, node_path_1.resolve)(target.path), target.preset.filename);
125
+ const content = renderContent(ADK_SKILL_CONTENT, {
126
+ name: "adk",
127
+ description: "When connecting to APIs, calling remote tools, managing integrations, or the user asks about adk",
128
+ });
129
+ ensureWrite(outputPath, content);
130
+ return outputPath;
131
+ }
132
+ // ============================================
133
+ // Init Command
134
+ // ============================================
135
+ const DEFAULT_REGISTRY_URL = "https://registry.slash.com";
136
+ const DEFAULT_REGISTRY_NAME = "public";
137
+ async function runInit(adk, targets) {
138
+ // 1. Ensure default registry
139
+ const registries = await adk.registry.list();
140
+ const hasDefault = registries.some((r) => r.url === DEFAULT_REGISTRY_URL || r.name === DEFAULT_REGISTRY_NAME);
141
+ if (!hasDefault) {
142
+ await adk.registry.add({ url: DEFAULT_REGISTRY_URL, name: DEFAULT_REGISTRY_NAME });
143
+ console.log(`\x1b[32m\u2713\x1b[0m Set default registry: ${DEFAULT_REGISTRY_URL}`);
144
+ }
145
+ else {
146
+ console.log(`\x1b[32m\u2713\x1b[0m Default registry already configured: ${DEFAULT_REGISTRY_URL}`);
147
+ }
148
+ // 2. Install skills to targets
149
+ if (targets.length === 0) {
150
+ console.log(`\nTo install skills, re-run with targets:\n`);
151
+ const presets = listPresets();
152
+ for (const preset of presets) {
153
+ console.log(` adk init --target ${preset.name}`);
154
+ }
155
+ console.log(`\nCustom path: adk init --target <preset>:<path>`);
156
+ console.log(`\nAsk the user which coding agents they use,`);
157
+ console.log(`then run: adk init --target <preset> [--target <preset> ...]`);
158
+ return;
159
+ }
160
+ for (const target of targets) {
161
+ const outputPath = installSkill(target);
162
+ console.log(`\x1b[32m\u2713\x1b[0m Installed adk skill \u2192 ${outputPath}`);
163
+ }
164
+ // 3. Save targets to config
165
+ const config = await adk.readConfig();
166
+ const targetStrings = targets.map((t) => {
167
+ return t.path === expandHome(t.preset.defaultPath) ? t.preset.name : `${t.preset.name}:${t.path}`;
168
+ });
169
+ config.targets = targetStrings;
170
+ await adk.writeConfig(config);
171
+ console.log(`\x1b[32m\u2713\x1b[0m Saved targets to config`);
172
+ console.log(`\nDone! Your coding agents now know how to use adk.`);
173
+ console.log(`Run \`adk init\` again anytime to refresh skills or add targets.`);
174
+ }
175
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ /**
3
+ * Ref Materialization — Download agent docs to local filesystem.
4
+ *
5
+ * When `adk ref add` succeeds, materialize the agent's tool schemas,
6
+ * resources (skills), and generate TypeScript type definitions locally.
7
+ *
8
+ * Files are written under the adk config dir at refs/<name>/.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.materializeRef = materializeRef;
12
+ const node_fs_1 = require("node:fs");
13
+ const node_path_1 = require("node:path");
14
+ // ============================================
15
+ // Helpers
16
+ // ============================================
17
+ function ensureWrite(path, content) {
18
+ const dir = (0, node_path_1.dirname)(path);
19
+ if (!(0, node_fs_1.existsSync)(dir)) {
20
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
21
+ }
22
+ (0, node_fs_1.writeFileSync)(path, content, "utf-8");
23
+ }
24
+ /** Generate a .d.ts file from tool schemas. */
25
+ function generateTypes(refName, tools) {
26
+ const lines = [
27
+ `// Auto-generated by adk ref add`,
28
+ `// Agent: ${refName}`,
29
+ `// Tools: ${tools.length}`,
30
+ ``,
31
+ `export interface ${pascalCase(refName)}Tools {`,
32
+ ];
33
+ for (const tool of tools) {
34
+ lines.push(` /** ${tool.description ?? tool.name} */`);
35
+ lines.push(` ${JSON.stringify(tool.name)}: {`);
36
+ lines.push(` name: ${JSON.stringify(tool.name)};`);
37
+ if (tool.description) {
38
+ lines.push(` description: ${JSON.stringify(tool.description)};`);
39
+ }
40
+ lines.push(` params: Record<string, unknown>;`);
41
+ lines.push(` };`);
42
+ }
43
+ lines.push(`}`);
44
+ lines.push(``);
45
+ lines.push(`export declare const tools: (keyof ${pascalCase(refName)}Tools)[];`);
46
+ lines.push(``);
47
+ return lines.join("\n");
48
+ }
49
+ function pascalCase(s) {
50
+ return s
51
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, c) => c.toUpperCase())
52
+ .replace(/^./, (c) => c.toUpperCase());
53
+ }
54
+ // ============================================
55
+ // Materialize
56
+ // ============================================
57
+ async function materializeRef(adk, refName, configDir) {
58
+ const refDir = (0, node_path_1.join)(configDir, "refs", refName);
59
+ const toolsDir = (0, node_path_1.join)(refDir, "tools");
60
+ const skillsDir = (0, node_path_1.join)(refDir, "skills");
61
+ const typesDir = (0, node_path_1.join)(refDir, "types");
62
+ let toolCount = 0;
63
+ let skillCount = 0;
64
+ let typesGenerated = false;
65
+ // 1. Fetch and write tool schemas
66
+ try {
67
+ const info = await adk.ref.inspect(refName, { full: true });
68
+ if (info?.tools && info.tools.length > 0) {
69
+ const tools = info.tools.map((t) => ({
70
+ name: t.name,
71
+ description: t.description,
72
+ inputSchema: t.inputSchema,
73
+ outputSchema: t.outputSchema,
74
+ }));
75
+ for (const tool of tools) {
76
+ const safeName = tool.name.replace(/[^a-zA-Z0-9_-]/g, "_");
77
+ ensureWrite((0, node_path_1.join)(toolsDir, `${safeName}.tool.json`), JSON.stringify(tool, null, 2));
78
+ }
79
+ toolCount = tools.length;
80
+ // Write agent.json metadata
81
+ ensureWrite((0, node_path_1.join)(refDir, "agent.json"), JSON.stringify({
82
+ name: refName,
83
+ description: info.description,
84
+ toolCount: tools.length,
85
+ tools: tools.map((t) => t.name),
86
+ materializedAt: new Date().toISOString(),
87
+ }, null, 2));
88
+ // Generate .d.ts
89
+ ensureWrite((0, node_path_1.join)(typesDir, `${refName}.d.ts`), generateTypes(refName, tools));
90
+ typesGenerated = true;
91
+ }
92
+ }
93
+ catch {
94
+ // inspect failed — agent might not be reachable yet (needs auth)
95
+ }
96
+ // 2. Fetch and write resources (skills)
97
+ try {
98
+ const resourcesResult = await adk.ref.resources(refName);
99
+ const response = resourcesResult;
100
+ if (response?.result?.resources) {
101
+ for (const resource of response.result.resources) {
102
+ if (resource.uri && resource.text) {
103
+ const filename = resource.uri.split("/").pop() ?? "resource.md";
104
+ ensureWrite((0, node_path_1.join)(skillsDir, filename), resource.text);
105
+ skillCount++;
106
+ }
107
+ }
108
+ }
109
+ }
110
+ catch {
111
+ // resources fetch failed — might not be supported
112
+ }
113
+ return { toolCount, skillCount, typesGenerated };
114
+ }
115
+ //# sourceMappingURL=materialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize.js","sourceRoot":"","sources":["../../src/materialize.ts"],"names":[],"mappings":"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"}
package/dist/init.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ /**
2
+ * ADK Init — Setup + skill injection for coding agents.
3
+ *
4
+ * Uses a preset-based system for scalability:
5
+ * - Presets are JSON files in src/presets/ (one per coding agent)
6
+ * - All use the agentskills.io SKILL.md standard
7
+ * - Adding a new coding agent = adding one JSON file
8
+ *
9
+ * Non-interactive by design. The coding agent is the UX layer.
10
+ */
11
+ import type { Adk } from "./config-store.js";
12
+ export interface Preset {
13
+ name: string;
14
+ defaultPath: string;
15
+ filename: string;
16
+ }
17
+ export interface SkillTarget {
18
+ preset: Preset;
19
+ path: string;
20
+ }
21
+ export declare function loadPresets(): Map<string, Preset>;
22
+ export declare function getPreset(name: string): Preset | undefined;
23
+ export declare function listPresets(): Preset[];
24
+ export declare function renderContent(content: string, meta: {
25
+ name: string;
26
+ description: string;
27
+ }): string;
28
+ export declare function parseTarget(value: string): SkillTarget;
29
+ export declare function installSkill(target: SkillTarget): string;
30
+ export declare function runInit(adk: Adk, targets: SkillTarget[]): Promise<void>;
31
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAM7C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAmBD,wBAAgB,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAOjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AA6BD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1C,MAAM,CAMR;AAWD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAwBtD;AAcD,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAQxD;AAUD,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C7E"}
package/dist/init.js ADDED
@@ -0,0 +1,166 @@
1
+ /**
2
+ * ADK Init — Setup + skill injection for coding agents.
3
+ *
4
+ * Uses a preset-based system for scalability:
5
+ * - Presets are JSON files in src/presets/ (one per coding agent)
6
+ * - All use the agentskills.io SKILL.md standard
7
+ * - Adding a new coding agent = adding one JSON file
8
+ *
9
+ * Non-interactive by design. The coding agent is the UX layer.
10
+ */
11
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
12
+ import { dirname, join, resolve } from "node:path";
13
+ import { homedir } from "node:os";
14
+ // ============================================
15
+ // Preset Loading
16
+ // ============================================
17
+ // Presets are inlined to avoid import.meta/CJS compatibility issues.
18
+ // To add a new coding agent, add an entry here and a JSON file in src/presets/.
19
+ const BUILTIN_PRESETS = [
20
+ { name: "claude", defaultPath: "~/.claude/skills", filename: "adk/SKILL.md" },
21
+ { name: "cursor", defaultPath: ".agents/skills", filename: "adk/SKILL.md" },
22
+ { name: "codex", defaultPath: ".agents/skills", filename: "adk/SKILL.md" },
23
+ { name: "copilot", defaultPath: ".github/skills", filename: "adk/SKILL.md" },
24
+ { name: "windsurf", defaultPath: ".windsurf/skills", filename: "adk/SKILL.md" },
25
+ { name: "hermes", defaultPath: "~/.hermes/skills", filename: "adk/SKILL.md" },
26
+ ];
27
+ let _presets = null;
28
+ export function loadPresets() {
29
+ if (_presets)
30
+ return _presets;
31
+ _presets = new Map();
32
+ for (const preset of BUILTIN_PRESETS) {
33
+ _presets.set(preset.name, preset);
34
+ }
35
+ return _presets;
36
+ }
37
+ export function getPreset(name) {
38
+ return loadPresets().get(name);
39
+ }
40
+ export function listPresets() {
41
+ return Array.from(loadPresets().values());
42
+ }
43
+ // ============================================
44
+ // Skill Content Templates
45
+ // ============================================
46
+ const ADK_SKILL_CONTENT = `adk is the Agent Development Kit CLI.
47
+
48
+ Config location: run \`adk config-path\` to find the config directory.
49
+ Installed refs: run \`adk ref list\` to see configured agents.
50
+
51
+ Each installed ref has local docs at the config path under refs/<name>/:
52
+ - tools/*.tool.json — full tool schemas (inputSchema, description)
53
+ - skills/ — usage guides and patterns from the agent
54
+ - types/*.d.ts — TypeScript type definitions
55
+
56
+ ## Commands
57
+
58
+ To call a tool: \`adk ref call <name> <tool> '{"param": "value"}'\`
59
+ To browse available agents: \`adk registry browse slash\`
60
+ To install an agent: \`adk ref add <name>\`
61
+ To authenticate: \`adk ref auth <name>\`
62
+ To check auth status: \`adk ref auth-status <name>\`
63
+ To inspect an agent: \`adk ref inspect <name>\`
64
+ To view tool schemas: \`adk ref inspect <name> --full\`
65
+ To list resources: \`adk ref resources <name>\`
66
+ To read a resource: \`adk ref read <name> <uri>\`
67
+ `;
68
+ export function renderContent(content, meta) {
69
+ return `---
70
+ name: ${meta.name}
71
+ description: ${meta.description}
72
+ ---
73
+ ${content}`;
74
+ }
75
+ // ============================================
76
+ // Target Parsing
77
+ // ============================================
78
+ function expandHome(p) {
79
+ if (p.startsWith("~/"))
80
+ return join(homedir(), p.slice(2));
81
+ return p;
82
+ }
83
+ export function parseTarget(value) {
84
+ const colonIdx = value.indexOf(":");
85
+ if (colonIdx === -1) {
86
+ // Just a preset name
87
+ const preset = getPreset(value);
88
+ if (!preset) {
89
+ const presetNames = Array.from(loadPresets().keys()).join(", ");
90
+ throw new Error(`Unknown preset: ${value}. Available: ${presetNames}`);
91
+ }
92
+ return { preset, path: expandHome(preset.defaultPath) };
93
+ }
94
+ const key = value.slice(0, colonIdx);
95
+ const path = value.slice(colonIdx + 1);
96
+ // Check if key is a preset name (with custom path)
97
+ const preset = getPreset(key);
98
+ if (preset) {
99
+ return { preset, path: expandHome(path || preset.defaultPath) };
100
+ }
101
+ const presetNames = Array.from(loadPresets().keys()).join(", ");
102
+ throw new Error(`Unknown target: ${key}. Available presets: ${presetNames}`);
103
+ }
104
+ // ============================================
105
+ // Skill Installation
106
+ // ============================================
107
+ function ensureWrite(path, content) {
108
+ const dir = dirname(path);
109
+ if (!existsSync(dir)) {
110
+ mkdirSync(dir, { recursive: true });
111
+ }
112
+ writeFileSync(path, content, "utf-8");
113
+ }
114
+ export function installSkill(target) {
115
+ const outputPath = join(resolve(target.path), target.preset.filename);
116
+ const content = renderContent(ADK_SKILL_CONTENT, {
117
+ name: "adk",
118
+ description: "When connecting to APIs, calling remote tools, managing integrations, or the user asks about adk",
119
+ });
120
+ ensureWrite(outputPath, content);
121
+ return outputPath;
122
+ }
123
+ // ============================================
124
+ // Init Command
125
+ // ============================================
126
+ const DEFAULT_REGISTRY_URL = "https://registry.slash.com";
127
+ const DEFAULT_REGISTRY_NAME = "public";
128
+ export async function runInit(adk, targets) {
129
+ // 1. Ensure default registry
130
+ const registries = await adk.registry.list();
131
+ const hasDefault = registries.some((r) => r.url === DEFAULT_REGISTRY_URL || r.name === DEFAULT_REGISTRY_NAME);
132
+ if (!hasDefault) {
133
+ await adk.registry.add({ url: DEFAULT_REGISTRY_URL, name: DEFAULT_REGISTRY_NAME });
134
+ console.log(`\x1b[32m\u2713\x1b[0m Set default registry: ${DEFAULT_REGISTRY_URL}`);
135
+ }
136
+ else {
137
+ console.log(`\x1b[32m\u2713\x1b[0m Default registry already configured: ${DEFAULT_REGISTRY_URL}`);
138
+ }
139
+ // 2. Install skills to targets
140
+ if (targets.length === 0) {
141
+ console.log(`\nTo install skills, re-run with targets:\n`);
142
+ const presets = listPresets();
143
+ for (const preset of presets) {
144
+ console.log(` adk init --target ${preset.name}`);
145
+ }
146
+ console.log(`\nCustom path: adk init --target <preset>:<path>`);
147
+ console.log(`\nAsk the user which coding agents they use,`);
148
+ console.log(`then run: adk init --target <preset> [--target <preset> ...]`);
149
+ return;
150
+ }
151
+ for (const target of targets) {
152
+ const outputPath = installSkill(target);
153
+ console.log(`\x1b[32m\u2713\x1b[0m Installed adk skill \u2192 ${outputPath}`);
154
+ }
155
+ // 3. Save targets to config
156
+ const config = await adk.readConfig();
157
+ const targetStrings = targets.map((t) => {
158
+ return t.path === expandHome(t.preset.defaultPath) ? t.preset.name : `${t.preset.name}:${t.path}`;
159
+ });
160
+ config.targets = targetStrings;
161
+ await adk.writeConfig(config);
162
+ console.log(`\x1b[32m\u2713\x1b[0m Saved targets to config`);
163
+ console.log(`\nDone! Your coding agents now know how to use adk.`);
164
+ console.log(`Run \`adk init\` again anytime to refresh skills or add targets.`);
165
+ }
166
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Ref Materialization — Download agent docs to local filesystem.
3
+ *
4
+ * When `adk ref add` succeeds, materialize the agent's tool schemas,
5
+ * resources (skills), and generate TypeScript type definitions locally.
6
+ *
7
+ * Files are written under the adk config dir at refs/<name>/.
8
+ */
9
+ import type { Adk } from "./config-store.js";
10
+ interface MaterializeResult {
11
+ toolCount: number;
12
+ skillCount: number;
13
+ typesGenerated: boolean;
14
+ }
15
+ export declare function materializeRef(adk: Adk, refName: string, configDir: string): Promise<MaterializeResult>;
16
+ export {};
17
+ //# sourceMappingURL=materialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../src/materialize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAc7C,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CACzB;AAoDD,wBAAsB,cAAc,CAClC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CAuE5B"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Ref Materialization — Download agent docs to local filesystem.
3
+ *
4
+ * When `adk ref add` succeeds, materialize the agent's tool schemas,
5
+ * resources (skills), and generate TypeScript type definitions locally.
6
+ *
7
+ * Files are written under the adk config dir at refs/<name>/.
8
+ */
9
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
10
+ import { dirname, join } from "node:path";
11
+ // ============================================
12
+ // Helpers
13
+ // ============================================
14
+ function ensureWrite(path, content) {
15
+ const dir = dirname(path);
16
+ if (!existsSync(dir)) {
17
+ mkdirSync(dir, { recursive: true });
18
+ }
19
+ writeFileSync(path, content, "utf-8");
20
+ }
21
+ /** Generate a .d.ts file from tool schemas. */
22
+ function generateTypes(refName, tools) {
23
+ const lines = [
24
+ `// Auto-generated by adk ref add`,
25
+ `// Agent: ${refName}`,
26
+ `// Tools: ${tools.length}`,
27
+ ``,
28
+ `export interface ${pascalCase(refName)}Tools {`,
29
+ ];
30
+ for (const tool of tools) {
31
+ lines.push(` /** ${tool.description ?? tool.name} */`);
32
+ lines.push(` ${JSON.stringify(tool.name)}: {`);
33
+ lines.push(` name: ${JSON.stringify(tool.name)};`);
34
+ if (tool.description) {
35
+ lines.push(` description: ${JSON.stringify(tool.description)};`);
36
+ }
37
+ lines.push(` params: Record<string, unknown>;`);
38
+ lines.push(` };`);
39
+ }
40
+ lines.push(`}`);
41
+ lines.push(``);
42
+ lines.push(`export declare const tools: (keyof ${pascalCase(refName)}Tools)[];`);
43
+ lines.push(``);
44
+ return lines.join("\n");
45
+ }
46
+ function pascalCase(s) {
47
+ return s
48
+ .replace(/[^a-zA-Z0-9]+(.)/g, (_, c) => c.toUpperCase())
49
+ .replace(/^./, (c) => c.toUpperCase());
50
+ }
51
+ // ============================================
52
+ // Materialize
53
+ // ============================================
54
+ export async function materializeRef(adk, refName, configDir) {
55
+ const refDir = join(configDir, "refs", refName);
56
+ const toolsDir = join(refDir, "tools");
57
+ const skillsDir = join(refDir, "skills");
58
+ const typesDir = join(refDir, "types");
59
+ let toolCount = 0;
60
+ let skillCount = 0;
61
+ let typesGenerated = false;
62
+ // 1. Fetch and write tool schemas
63
+ try {
64
+ const info = await adk.ref.inspect(refName, { full: true });
65
+ if (info?.tools && info.tools.length > 0) {
66
+ const tools = info.tools.map((t) => ({
67
+ name: t.name,
68
+ description: t.description,
69
+ inputSchema: t.inputSchema,
70
+ outputSchema: t.outputSchema,
71
+ }));
72
+ for (const tool of tools) {
73
+ const safeName = tool.name.replace(/[^a-zA-Z0-9_-]/g, "_");
74
+ ensureWrite(join(toolsDir, `${safeName}.tool.json`), JSON.stringify(tool, null, 2));
75
+ }
76
+ toolCount = tools.length;
77
+ // Write agent.json metadata
78
+ ensureWrite(join(refDir, "agent.json"), JSON.stringify({
79
+ name: refName,
80
+ description: info.description,
81
+ toolCount: tools.length,
82
+ tools: tools.map((t) => t.name),
83
+ materializedAt: new Date().toISOString(),
84
+ }, null, 2));
85
+ // Generate .d.ts
86
+ ensureWrite(join(typesDir, `${refName}.d.ts`), generateTypes(refName, tools));
87
+ typesGenerated = true;
88
+ }
89
+ }
90
+ catch {
91
+ // inspect failed — agent might not be reachable yet (needs auth)
92
+ }
93
+ // 2. Fetch and write resources (skills)
94
+ try {
95
+ const resourcesResult = await adk.ref.resources(refName);
96
+ const response = resourcesResult;
97
+ if (response?.result?.resources) {
98
+ for (const resource of response.result.resources) {
99
+ if (resource.uri && resource.text) {
100
+ const filename = resource.uri.split("/").pop() ?? "resource.md";
101
+ ensureWrite(join(skillsDir, filename), resource.text);
102
+ skillCount++;
103
+ }
104
+ }
105
+ }
106
+ }
107
+ catch {
108
+ // resources fetch failed — might not be supported
109
+ }
110
+ return { toolCount, skillCount, typesGenerated };
111
+ }
112
+ //# sourceMappingURL=materialize.js.map