agentikit 0.0.8 → 0.0.12
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 +135 -117
- package/dist/index.d.ts +13 -3
- package/dist/index.js +7 -1
- package/dist/src/asset-spec.d.ts +2 -0
- package/dist/src/asset-spec.js +22 -3
- package/dist/src/asset-type-handler.d.ts +27 -0
- package/dist/src/asset-type-handler.js +33 -0
- package/dist/src/cli.js +335 -100
- package/dist/src/common.d.ts +6 -1
- package/dist/src/common.js +18 -4
- package/dist/src/config-cli.d.ts +9 -0
- package/dist/src/config-cli.js +473 -0
- package/dist/src/config.d.ts +25 -6
- package/dist/src/config.js +188 -28
- package/dist/src/db.d.ts +46 -0
- package/dist/src/db.js +299 -0
- package/dist/src/embedder.js +12 -7
- package/dist/src/github.d.ts +4 -0
- package/dist/src/github.js +19 -0
- package/dist/src/handlers/agent-handler.d.ts +2 -0
- package/dist/src/handlers/agent-handler.js +26 -0
- package/dist/src/handlers/command-handler.d.ts +2 -0
- package/dist/src/handlers/command-handler.js +23 -0
- package/dist/src/handlers/index.d.ts +6 -0
- package/dist/src/handlers/index.js +23 -0
- package/dist/src/handlers/knowledge-handler.d.ts +2 -0
- package/dist/src/handlers/knowledge-handler.js +56 -0
- package/dist/src/handlers/markdown-helpers.d.ts +7 -0
- package/dist/src/handlers/markdown-helpers.js +15 -0
- package/dist/src/handlers/script-handler.d.ts +2 -0
- package/dist/src/handlers/script-handler.js +78 -0
- package/dist/src/handlers/skill-handler.d.ts +2 -0
- package/dist/src/handlers/skill-handler.js +30 -0
- package/dist/src/handlers/tool-handler.d.ts +2 -0
- package/dist/src/handlers/tool-handler.js +58 -0
- package/dist/src/indexer.d.ts +1 -23
- package/dist/src/indexer.js +162 -155
- package/dist/src/init.d.ts +2 -2
- package/dist/src/init.js +21 -9
- package/dist/src/llm.js +4 -3
- package/dist/src/metadata.d.ts +1 -1
- package/dist/src/metadata.js +22 -64
- package/dist/src/origin-resolve.d.ts +19 -0
- package/dist/src/origin-resolve.js +53 -0
- package/dist/src/registry-install.d.ts +11 -0
- package/dist/src/registry-install.js +315 -0
- package/dist/src/registry-resolve.d.ts +3 -0
- package/dist/src/registry-resolve.js +299 -0
- package/dist/src/registry-search.d.ts +27 -0
- package/dist/src/registry-search.js +263 -0
- package/dist/src/registry-types.d.ts +62 -0
- package/dist/src/registry-types.js +1 -0
- package/dist/src/stash-add.d.ts +4 -0
- package/dist/src/stash-add.js +59 -0
- package/dist/src/stash-clone.d.ts +22 -0
- package/dist/src/stash-clone.js +83 -0
- package/dist/src/stash-ref.d.ts +27 -3
- package/dist/src/stash-ref.js +63 -24
- package/dist/src/stash-registry.d.ts +18 -0
- package/dist/src/stash-registry.js +221 -0
- package/dist/src/stash-resolve.js +3 -0
- package/dist/src/stash-search.d.ts +3 -1
- package/dist/src/stash-search.js +357 -138
- package/dist/src/stash-show.d.ts +1 -1
- package/dist/src/stash-show.js +28 -89
- package/dist/src/stash-source.d.ts +24 -0
- package/dist/src/stash-source.js +81 -0
- package/dist/src/stash-types.d.ts +175 -1
- package/dist/src/stash.d.ts +9 -1
- package/dist/src/stash.js +5 -0
- package/dist/src/tool-runner.d.ts +1 -1
- package/dist/src/tool-runner.js +18 -5
- package/package.json +7 -2
- package/src/asset-spec.ts +20 -4
- package/src/asset-type-handler.ts +77 -0
- package/src/cli.ts +354 -103
- package/src/common.ts +23 -5
- package/src/config-cli.ts +499 -0
- package/src/config.ts +218 -37
- package/src/db.ts +411 -0
- package/src/embedder.ts +22 -11
- package/src/github.ts +21 -0
- package/src/handlers/agent-handler.ts +32 -0
- package/src/handlers/command-handler.ts +29 -0
- package/src/handlers/index.ts +25 -0
- package/src/handlers/knowledge-handler.ts +62 -0
- package/src/handlers/markdown-helpers.ts +19 -0
- package/src/handlers/script-handler.ts +92 -0
- package/src/handlers/skill-handler.ts +37 -0
- package/src/handlers/tool-handler.ts +71 -0
- package/src/indexer.ts +208 -187
- package/src/init.ts +17 -9
- package/src/llm.ts +4 -3
- package/src/metadata.ts +21 -65
- package/src/origin-resolve.ts +67 -0
- package/src/registry-install.ts +361 -0
- package/src/registry-resolve.ts +341 -0
- package/src/registry-search.ts +335 -0
- package/src/registry-types.ts +72 -0
- package/src/stash-add.ts +63 -0
- package/src/stash-clone.ts +127 -0
- package/src/stash-ref.ts +84 -26
- package/src/stash-registry.ts +259 -0
- package/src/stash-resolve.ts +3 -0
- package/src/stash-search.ts +425 -155
- package/src/stash-show.ts +33 -82
- package/src/stash-source.ts +103 -0
- package/src/stash-types.ts +186 -1
- package/src/stash.ts +23 -0
- package/src/tool-runner.ts +18 -5
- package/dist/src/similarity.d.ts +0 -34
- package/src/similarity.ts +0 -271
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import { resolveStashDir } from "./common";
|
|
3
|
+
import { loadConfig } from "./config";
|
|
4
|
+
import { agentikitIndex } from "./indexer";
|
|
5
|
+
import { installRegistryRef, removeInstalledRegistryEntry, upsertInstalledRegistryEntry, } from "./registry-install";
|
|
6
|
+
import { parseRegistryRef } from "./registry-resolve";
|
|
7
|
+
export async function agentikitList(input) {
|
|
8
|
+
const stashDir = input?.stashDir ?? resolveStashDir();
|
|
9
|
+
const config = loadConfig();
|
|
10
|
+
const installed = config.registry?.installed ?? [];
|
|
11
|
+
return {
|
|
12
|
+
stashDir,
|
|
13
|
+
installed: installed.map((entry) => ({
|
|
14
|
+
...entry,
|
|
15
|
+
status: {
|
|
16
|
+
cacheDirExists: directoryExists(entry.cacheDir),
|
|
17
|
+
stashRootExists: directoryExists(entry.stashRoot),
|
|
18
|
+
},
|
|
19
|
+
})),
|
|
20
|
+
totalInstalled: installed.length,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function agentikitRemove(input) {
|
|
24
|
+
const target = input.target.trim();
|
|
25
|
+
if (!target)
|
|
26
|
+
throw new Error("Target is required.");
|
|
27
|
+
const stashDir = input.stashDir ?? resolveStashDir();
|
|
28
|
+
const config = loadConfig();
|
|
29
|
+
const installed = config.registry?.installed ?? [];
|
|
30
|
+
const entry = resolveInstalledTarget(installed, target);
|
|
31
|
+
const updatedConfig = removeInstalledRegistryEntry(entry.id);
|
|
32
|
+
cleanupDirectoryBestEffort(entry.cacheDir);
|
|
33
|
+
const index = await agentikitIndex({ stashDir });
|
|
34
|
+
return {
|
|
35
|
+
stashDir,
|
|
36
|
+
target,
|
|
37
|
+
removed: {
|
|
38
|
+
id: entry.id,
|
|
39
|
+
source: entry.source,
|
|
40
|
+
ref: entry.ref,
|
|
41
|
+
cacheDir: entry.cacheDir,
|
|
42
|
+
stashRoot: entry.stashRoot,
|
|
43
|
+
},
|
|
44
|
+
config: {
|
|
45
|
+
mountedStashDirs: updatedConfig.mountedStashDirs,
|
|
46
|
+
installedRegistryCount: updatedConfig.registry?.installed.length ?? 0,
|
|
47
|
+
},
|
|
48
|
+
index: {
|
|
49
|
+
mode: index.mode,
|
|
50
|
+
totalEntries: index.totalEntries,
|
|
51
|
+
directoriesScanned: index.directoriesScanned,
|
|
52
|
+
directoriesSkipped: index.directoriesSkipped,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export async function agentikitReinstall(input) {
|
|
57
|
+
const stashDir = input?.stashDir ?? resolveStashDir();
|
|
58
|
+
const target = input?.target?.trim();
|
|
59
|
+
const all = input?.all === true;
|
|
60
|
+
const installedEntries = loadConfig().registry?.installed ?? [];
|
|
61
|
+
const selectedEntries = selectTargets(installedEntries, target, all);
|
|
62
|
+
const processed = [];
|
|
63
|
+
for (const entry of selectedEntries) {
|
|
64
|
+
const installed = await installRegistryRef(entry.ref);
|
|
65
|
+
upsertInstalledRegistryEntry(toInstalledEntry(installed));
|
|
66
|
+
if (entry.cacheDir !== installed.cacheDir) {
|
|
67
|
+
cleanupDirectoryBestEffort(entry.cacheDir);
|
|
68
|
+
}
|
|
69
|
+
processed.push({
|
|
70
|
+
id: entry.id,
|
|
71
|
+
source: entry.source,
|
|
72
|
+
ref: entry.ref,
|
|
73
|
+
previousCacheDir: entry.cacheDir,
|
|
74
|
+
installed: toInstallStatus(installed),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const index = await agentikitIndex({ stashDir });
|
|
78
|
+
const config = loadConfig();
|
|
79
|
+
return {
|
|
80
|
+
stashDir,
|
|
81
|
+
target,
|
|
82
|
+
all,
|
|
83
|
+
processed,
|
|
84
|
+
config: {
|
|
85
|
+
mountedStashDirs: config.mountedStashDirs,
|
|
86
|
+
installedRegistryCount: config.registry?.installed.length ?? 0,
|
|
87
|
+
},
|
|
88
|
+
index: {
|
|
89
|
+
mode: index.mode,
|
|
90
|
+
totalEntries: index.totalEntries,
|
|
91
|
+
directoriesScanned: index.directoriesScanned,
|
|
92
|
+
directoriesSkipped: index.directoriesSkipped,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export async function agentikitUpdate(input) {
|
|
97
|
+
const stashDir = input?.stashDir ?? resolveStashDir();
|
|
98
|
+
const target = input?.target?.trim();
|
|
99
|
+
const all = input?.all === true;
|
|
100
|
+
const installedEntries = loadConfig().registry?.installed ?? [];
|
|
101
|
+
const selectedEntries = selectTargets(installedEntries, target, all);
|
|
102
|
+
const processed = [];
|
|
103
|
+
for (const entry of selectedEntries) {
|
|
104
|
+
const installed = await installRegistryRef(entry.ref);
|
|
105
|
+
upsertInstalledRegistryEntry(toInstalledEntry(installed));
|
|
106
|
+
if (entry.cacheDir !== installed.cacheDir) {
|
|
107
|
+
cleanupDirectoryBestEffort(entry.cacheDir);
|
|
108
|
+
}
|
|
109
|
+
const versionChanged = (entry.resolvedVersion ?? "") !== (installed.resolvedVersion ?? "");
|
|
110
|
+
const revisionChanged = (entry.resolvedRevision ?? "") !== (installed.resolvedRevision ?? "");
|
|
111
|
+
processed.push({
|
|
112
|
+
id: entry.id,
|
|
113
|
+
source: entry.source,
|
|
114
|
+
ref: entry.ref,
|
|
115
|
+
previous: {
|
|
116
|
+
resolvedVersion: entry.resolvedVersion,
|
|
117
|
+
resolvedRevision: entry.resolvedRevision,
|
|
118
|
+
cacheDir: entry.cacheDir,
|
|
119
|
+
},
|
|
120
|
+
installed: toInstallStatus(installed),
|
|
121
|
+
changed: {
|
|
122
|
+
version: versionChanged,
|
|
123
|
+
revision: revisionChanged,
|
|
124
|
+
any: versionChanged || revisionChanged,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const index = await agentikitIndex({ stashDir });
|
|
129
|
+
const config = loadConfig();
|
|
130
|
+
return {
|
|
131
|
+
stashDir,
|
|
132
|
+
target,
|
|
133
|
+
all,
|
|
134
|
+
processed,
|
|
135
|
+
config: {
|
|
136
|
+
mountedStashDirs: config.mountedStashDirs,
|
|
137
|
+
installedRegistryCount: config.registry?.installed.length ?? 0,
|
|
138
|
+
},
|
|
139
|
+
index: {
|
|
140
|
+
mode: index.mode,
|
|
141
|
+
totalEntries: index.totalEntries,
|
|
142
|
+
directoriesScanned: index.directoriesScanned,
|
|
143
|
+
directoriesSkipped: index.directoriesSkipped,
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function selectTargets(installed, target, all) {
|
|
148
|
+
if (all && target) {
|
|
149
|
+
throw new Error("Specify either <target> or --all, not both.");
|
|
150
|
+
}
|
|
151
|
+
if (all)
|
|
152
|
+
return installed;
|
|
153
|
+
if (!target) {
|
|
154
|
+
throw new Error("Either <target> or --all is required.");
|
|
155
|
+
}
|
|
156
|
+
return [resolveInstalledTarget(installed, target)];
|
|
157
|
+
}
|
|
158
|
+
function resolveInstalledTarget(installed, target) {
|
|
159
|
+
const byId = installed.find((entry) => entry.id === target);
|
|
160
|
+
if (byId)
|
|
161
|
+
return byId;
|
|
162
|
+
const byRef = installed.find((entry) => entry.ref === target);
|
|
163
|
+
if (byRef)
|
|
164
|
+
return byRef;
|
|
165
|
+
let parsedId;
|
|
166
|
+
try {
|
|
167
|
+
parsedId = parseRegistryRef(target).id;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
parsedId = undefined;
|
|
171
|
+
}
|
|
172
|
+
if (parsedId) {
|
|
173
|
+
const byParsedId = installed.find((entry) => entry.id === parsedId);
|
|
174
|
+
if (byParsedId)
|
|
175
|
+
return byParsedId;
|
|
176
|
+
}
|
|
177
|
+
throw new Error(`No installed registry entry matched target: ${target}`);
|
|
178
|
+
}
|
|
179
|
+
function toInstalledEntry(status) {
|
|
180
|
+
return {
|
|
181
|
+
id: status.id,
|
|
182
|
+
source: status.source,
|
|
183
|
+
ref: status.ref,
|
|
184
|
+
artifactUrl: status.artifactUrl,
|
|
185
|
+
resolvedVersion: status.resolvedVersion,
|
|
186
|
+
resolvedRevision: status.resolvedRevision,
|
|
187
|
+
stashRoot: status.stashRoot,
|
|
188
|
+
cacheDir: status.cacheDir,
|
|
189
|
+
installedAt: status.installedAt,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
function toInstallStatus(status) {
|
|
193
|
+
return {
|
|
194
|
+
id: status.id,
|
|
195
|
+
source: status.source,
|
|
196
|
+
ref: status.ref,
|
|
197
|
+
artifactUrl: status.artifactUrl,
|
|
198
|
+
resolvedVersion: status.resolvedVersion,
|
|
199
|
+
resolvedRevision: status.resolvedRevision,
|
|
200
|
+
stashRoot: status.stashRoot,
|
|
201
|
+
cacheDir: status.cacheDir,
|
|
202
|
+
extractedDir: status.extractedDir,
|
|
203
|
+
installedAt: status.installedAt,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
function cleanupDirectoryBestEffort(target) {
|
|
207
|
+
try {
|
|
208
|
+
fs.rmSync(target, { recursive: true, force: true });
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
// Best-effort cleanup only.
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function directoryExists(target) {
|
|
215
|
+
try {
|
|
216
|
+
return fs.statSync(target).isDirectory();
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
return false;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
@@ -21,6 +21,9 @@ export function resolveAssetPath(stashDir, type, name) {
|
|
|
21
21
|
if (type === "tool") {
|
|
22
22
|
throw new Error("Tool ref must resolve to a .sh, .ts, .js, .ps1, .cmd, or .bat file.");
|
|
23
23
|
}
|
|
24
|
+
if (type === "script") {
|
|
25
|
+
throw new Error("Script ref must resolve to a file with a supported script extension. Refer to the Agentikit documentation for the complete list of supported script extensions.");
|
|
26
|
+
}
|
|
24
27
|
throw new Error(`Stash asset not found for ref: ${type}:${name}`);
|
|
25
28
|
}
|
|
26
29
|
return realTarget;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { AgentikitSearchType, SearchResponse } from "./stash-types";
|
|
1
|
+
import type { AgentikitSearchType, SearchResponse, SearchSource, SearchUsageMode } from "./stash-types";
|
|
2
2
|
export declare function agentikitSearch(input: {
|
|
3
3
|
query: string;
|
|
4
4
|
type?: AgentikitSearchType;
|
|
5
5
|
limit?: number;
|
|
6
|
+
usage?: SearchUsageMode;
|
|
7
|
+
source?: SearchSource;
|
|
6
8
|
}): Promise<SearchResponse>;
|