@lvy-jsd/dsh-tool-manager 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +205 -2
- package/cordis.patch.yml +16 -0
- package/lib/catalog.d.ts +35 -0
- package/lib/catalog.d.ts.map +1 -0
- package/lib/catalog.js +311 -0
- package/lib/catalog.js.map +1 -0
- package/lib/index.d.ts +23 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +588 -0
- package/lib/index.js.map +1 -0
- package/lib/service.d.ts +51 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +199 -0
- package/lib/service.js.map +1 -0
- package/lib/types.d.ts +317 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +7 -0
- package/lib/types.js.map +1 -0
- package/lib/visibility.d.ts +33 -0
- package/lib/visibility.d.ts.map +1 -0
- package/lib/visibility.js +305 -0
- package/lib/visibility.js.map +1 -0
- package/package.json +50 -4
- package/src/catalog.ts +305 -0
- package/src/index.ts +595 -0
- package/src/service.ts +207 -0
- package/src/types.ts +319 -0
- package/src/visibility.ts +317 -0
package/lib/service.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Annotation, Classifier, Disposer, HostContext, Logger, PluginPackage, RegisteredResolver, TargetResolver, ToolMeta, VisibilityFilter } from './types.js';
|
|
2
|
+
/** A classifier after registration (defaults filled in). */
|
|
3
|
+
export interface RegisteredClassifier extends Classifier {
|
|
4
|
+
name: string;
|
|
5
|
+
priority: number;
|
|
6
|
+
}
|
|
7
|
+
/** A visibility filter after registration (defaults filled in). */
|
|
8
|
+
export interface RegisteredFilter {
|
|
9
|
+
name: string;
|
|
10
|
+
filter: VisibilityFilter['filter'];
|
|
11
|
+
}
|
|
12
|
+
/** Package name of a loader specifier: "@scope/pkg/sub" -> "@scope/pkg", "pkg/sub" -> "pkg". */
|
|
13
|
+
export declare function packageNameOf(specifier: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Read `dsh.toolCatalog` declarations from every plugin package the host loader
|
|
16
|
+
* knows. Declaration format (package.json):
|
|
17
|
+
*
|
|
18
|
+
* "dsh": { "toolCatalog": {
|
|
19
|
+
* "match": "^adb_", // regex over tool names (optional)
|
|
20
|
+
* "group": "adb", "category": "device",
|
|
21
|
+
* "tools": { "adb_install": { "risk": "high", "summary": "..." } }
|
|
22
|
+
* } }
|
|
23
|
+
*
|
|
24
|
+
* `group`/`category`/`risk`/`summary` at the top level apply to `match`;
|
|
25
|
+
* entries under `tools` apply to exact names and win over the top level.
|
|
26
|
+
*/
|
|
27
|
+
export declare function readManifestAnnotations(ctx: Pick<HostContext, 'get' | 'baseUrl'>, logger?: Logger): Annotation[];
|
|
28
|
+
/**
|
|
29
|
+
* Every enabled plugin package the host loader knows, as
|
|
30
|
+
* `{ name, dir, manifest }`. Relative (local) entries are skipped.
|
|
31
|
+
*/
|
|
32
|
+
export declare function listPluginPackages(ctx: Pick<HostContext, 'get' | 'baseUrl'>): PluginPackage[];
|
|
33
|
+
/** Registries behind the service. `onChange` rebuilds the catalog. */
|
|
34
|
+
export declare function createRegistries(onChange: () => void): {
|
|
35
|
+
classifiers: Set<RegisteredClassifier>;
|
|
36
|
+
annotations: Annotation[];
|
|
37
|
+
categories: Map<string, string>;
|
|
38
|
+
filters: Set<RegisteredFilter>;
|
|
39
|
+
resolvers: Set<RegisteredResolver>;
|
|
40
|
+
registerClassifier(classifier: Classifier): Disposer;
|
|
41
|
+
annotate(match: string | RegExp, meta: ToolMeta): Disposer;
|
|
42
|
+
defineCategory(name: string, description?: string): Disposer;
|
|
43
|
+
registerVisibilityFilter(filter: VisibilityFilter): Disposer;
|
|
44
|
+
/**
|
|
45
|
+
* Own a target prefix in tools_load / tools_ls / tools_unload. `resolve` gets
|
|
46
|
+
* the raw target and returns one or more ordinary targets (paths, group or
|
|
47
|
+
* tool names), or undefined to pass.
|
|
48
|
+
*/
|
|
49
|
+
registerTargetResolver(resolver: TargetResolver): Disposer;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAU,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE9K,4DAA4D;AAC5D,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAA;CACnC;AAED,gGAAgG;AAChG,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGvD;AAyBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CAgBhH;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC,GAAG,aAAa,EAAE,CAsB7F;AAcD,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;;;;;;mCAuBlB,UAAU,GAAG,QAAQ;oBASpC,MAAM,GAAG,MAAM,QAAQ,QAAQ,GAAG,QAAQ;yBAMrC,MAAM,yBAAqB,QAAQ;qCAMvB,gBAAgB,GAAG,QAAQ;IAO5D;;;;OAIG;qCAC8B,cAAc,GAAG,QAAQ;EAQ7D"}
|
package/lib/service.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// The `toolCatalog` service: the extension surface other plugins build on.
|
|
2
|
+
//
|
|
3
|
+
// registerClassifier({ name, priority, group?(tool), categorize?(group) })
|
|
4
|
+
// annotate(match, { group?, category?, risk?, summary? })
|
|
5
|
+
// defineCategory(name, description)
|
|
6
|
+
// registerVisibilityFilter({ name, filter(agent, names) })
|
|
7
|
+
// refresh(), get(), resolve(target), stateOf(agent)
|
|
8
|
+
//
|
|
9
|
+
// Every register/annotate/define call returns a disposer. Extension plugins
|
|
10
|
+
// should register inside an effect so unloading them undoes the registration:
|
|
11
|
+
// ctx.effect(() => ctx.toolCatalog.registerClassifier({...}))
|
|
12
|
+
//
|
|
13
|
+
// Hooks are plain Cordis events on the host context:
|
|
14
|
+
// tool-catalog/before-load (serial; throw to veto) { agent, targets, names }
|
|
15
|
+
// also fired by the auto-load of a directly called
|
|
16
|
+
// hidden tool, with `rescue: true` in the payload
|
|
17
|
+
// tool-catalog/after-load (emit) { agent, targets, added }
|
|
18
|
+
// tool-catalog/before-unload (serial; throw to veto) { agent, targets }
|
|
19
|
+
// tool-catalog/after-unload (emit) { agent, targets, removed }
|
|
20
|
+
// tool-catalog/before-rebuild (emit) { }
|
|
21
|
+
// tool-catalog/after-rebuild (emit) { catalog }
|
|
22
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
23
|
+
import { createRequire } from 'node:module';
|
|
24
|
+
import { dirname, join } from 'node:path';
|
|
25
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
26
|
+
import { DEFAULT_CATEGORIES } from './catalog.js';
|
|
27
|
+
/** Package name of a loader specifier: "@scope/pkg/sub" -> "@scope/pkg", "pkg/sub" -> "pkg". */
|
|
28
|
+
export function packageNameOf(specifier) {
|
|
29
|
+
const parts = String(specifier).split('/');
|
|
30
|
+
return specifier.startsWith('@') ? parts.slice(0, 2).join('/') : parts[0] ?? specifier;
|
|
31
|
+
}
|
|
32
|
+
/** Find a package's package.json starting from a resolvable entry file. */
|
|
33
|
+
function findManifest(requireFrom, pkg) {
|
|
34
|
+
try {
|
|
35
|
+
return requireFrom.resolve(`${pkg}/package.json`);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// exports may hide package.json; walk up from the main entry instead.
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
let dir = dirname(requireFrom.resolve(pkg));
|
|
42
|
+
while (dir !== dirname(dir)) {
|
|
43
|
+
const candidate = join(dir, 'package.json');
|
|
44
|
+
if (existsSync(candidate)) {
|
|
45
|
+
const json = JSON.parse(readFileSync(candidate, 'utf8'));
|
|
46
|
+
if (json.name === pkg)
|
|
47
|
+
return candidate;
|
|
48
|
+
}
|
|
49
|
+
dir = dirname(dir);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// unresolvable from here
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Read `dsh.toolCatalog` declarations from every plugin package the host loader
|
|
59
|
+
* knows. Declaration format (package.json):
|
|
60
|
+
*
|
|
61
|
+
* "dsh": { "toolCatalog": {
|
|
62
|
+
* "match": "^adb_", // regex over tool names (optional)
|
|
63
|
+
* "group": "adb", "category": "device",
|
|
64
|
+
* "tools": { "adb_install": { "risk": "high", "summary": "..." } }
|
|
65
|
+
* } }
|
|
66
|
+
*
|
|
67
|
+
* `group`/`category`/`risk`/`summary` at the top level apply to `match`;
|
|
68
|
+
* entries under `tools` apply to exact names and win over the top level.
|
|
69
|
+
*/
|
|
70
|
+
export function readManifestAnnotations(ctx, logger) {
|
|
71
|
+
const annotations = [];
|
|
72
|
+
for (const { name: pkg, manifest: manifestPath } of listPluginPackages(ctx)) {
|
|
73
|
+
try {
|
|
74
|
+
const declared = JSON.parse(readFileSync(manifestPath, 'utf8'))?.dsh?.toolCatalog;
|
|
75
|
+
if (!declared)
|
|
76
|
+
continue;
|
|
77
|
+
const top = pick(declared);
|
|
78
|
+
if (declared.match && Object.keys(top).length)
|
|
79
|
+
annotations.push({ source: pkg, match: new RegExp(declared.match), meta: top });
|
|
80
|
+
for (const [name, meta] of Object.entries((declared.tools ?? {}))) {
|
|
81
|
+
annotations.push({ source: pkg, match: name, meta: { ...top, ...pick(meta) } });
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger?.warn?.(`tool-manager: bad dsh.toolCatalog in ${pkg}: ${error.message}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return annotations;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Every enabled plugin package the host loader knows, as
|
|
92
|
+
* `{ name, dir, manifest }`. Relative (local) entries are skipped.
|
|
93
|
+
*/
|
|
94
|
+
export function listPluginPackages(ctx) {
|
|
95
|
+
const loader = ctx.get?.('loader');
|
|
96
|
+
if (!loader?.entries)
|
|
97
|
+
return [];
|
|
98
|
+
const bases = [loader.baseUrl, loader.ctx?.baseUrl, ctx.baseUrl, pathToFileURL(join(process.cwd(), 'noop.js')).href].filter((b) => Boolean(b));
|
|
99
|
+
const seen = new Set();
|
|
100
|
+
const out = [];
|
|
101
|
+
for (const entry of loader.entries()) {
|
|
102
|
+
const spec = entry?.options?.name;
|
|
103
|
+
if (typeof spec !== 'string' || spec.startsWith('.') || entry.options?.disabled === true)
|
|
104
|
+
continue;
|
|
105
|
+
const pkg = packageNameOf(spec);
|
|
106
|
+
if (seen.has(pkg))
|
|
107
|
+
continue;
|
|
108
|
+
seen.add(pkg);
|
|
109
|
+
for (const base of bases) {
|
|
110
|
+
const from = createRequire(base.startsWith('file:') ? fileURLToPath(base) : join(base, 'noop.js'));
|
|
111
|
+
const manifest = findManifest(from, pkg);
|
|
112
|
+
if (manifest) {
|
|
113
|
+
out.push({ name: pkg, dir: dirname(manifest), manifest });
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return out;
|
|
119
|
+
}
|
|
120
|
+
const META_KEYS = ['group', 'category', 'risk', 'summary'];
|
|
121
|
+
function pick(meta = {}) {
|
|
122
|
+
const out = {};
|
|
123
|
+
if (typeof meta !== 'object' || meta === null)
|
|
124
|
+
return out;
|
|
125
|
+
for (const key of META_KEYS) {
|
|
126
|
+
const value = meta[key];
|
|
127
|
+
if (typeof value === 'string' && value)
|
|
128
|
+
out[key] = value;
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
}
|
|
132
|
+
/** Registries behind the service. `onChange` rebuilds the catalog. */
|
|
133
|
+
export function createRegistries(onChange) {
|
|
134
|
+
const classifiers = new Set();
|
|
135
|
+
const annotations = [];
|
|
136
|
+
const categories = new Map(Object.entries(DEFAULT_CATEGORIES));
|
|
137
|
+
const filters = new Set();
|
|
138
|
+
const resolvers = new Set();
|
|
139
|
+
const remover = (fn) => {
|
|
140
|
+
let done = false;
|
|
141
|
+
return () => {
|
|
142
|
+
if (done)
|
|
143
|
+
return;
|
|
144
|
+
done = true;
|
|
145
|
+
fn();
|
|
146
|
+
onChange();
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
classifiers,
|
|
151
|
+
annotations,
|
|
152
|
+
categories,
|
|
153
|
+
filters,
|
|
154
|
+
resolvers,
|
|
155
|
+
registerClassifier(classifier) {
|
|
156
|
+
if (!classifier || (typeof classifier.group !== 'function' && typeof classifier.categorize !== 'function')) {
|
|
157
|
+
throw new TypeError('registerClassifier: provide group(tool) and/or categorize(group)');
|
|
158
|
+
}
|
|
159
|
+
const entry = { name: classifier.name ?? 'anonymous', priority: Number(classifier.priority ?? 0), group: classifier.group, categorize: classifier.categorize };
|
|
160
|
+
classifiers.add(entry);
|
|
161
|
+
onChange();
|
|
162
|
+
return remover(() => classifiers.delete(entry));
|
|
163
|
+
},
|
|
164
|
+
annotate(match, meta) {
|
|
165
|
+
const entry = { source: 'runtime', match: typeof match === 'string' ? match : new RegExp(match), meta: pick(meta) };
|
|
166
|
+
annotations.push(entry);
|
|
167
|
+
onChange();
|
|
168
|
+
return remover(() => annotations.splice(annotations.indexOf(entry), 1));
|
|
169
|
+
},
|
|
170
|
+
defineCategory(name, description = '') {
|
|
171
|
+
const previous = categories.get(name);
|
|
172
|
+
categories.set(name, description);
|
|
173
|
+
onChange();
|
|
174
|
+
return remover(() => (previous === undefined ? categories.delete(name) : categories.set(name, previous)));
|
|
175
|
+
},
|
|
176
|
+
registerVisibilityFilter(filter) {
|
|
177
|
+
if (typeof filter?.filter !== 'function')
|
|
178
|
+
throw new TypeError('registerVisibilityFilter: provide filter(agent, names)');
|
|
179
|
+
const entry = { name: filter.name ?? 'anonymous', filter: filter.filter };
|
|
180
|
+
filters.add(entry);
|
|
181
|
+
onChange();
|
|
182
|
+
return remover(() => filters.delete(entry));
|
|
183
|
+
},
|
|
184
|
+
/**
|
|
185
|
+
* Own a target prefix in tools_load / tools_ls / tools_unload. `resolve` gets
|
|
186
|
+
* the raw target and returns one or more ordinary targets (paths, group or
|
|
187
|
+
* tool names), or undefined to pass.
|
|
188
|
+
*/
|
|
189
|
+
registerTargetResolver(resolver) {
|
|
190
|
+
if (typeof resolver?.resolve !== 'function')
|
|
191
|
+
throw new TypeError('registerTargetResolver: provide resolve(target)');
|
|
192
|
+
const entry = { name: resolver.name ?? 'anonymous', prefix: String(resolver.prefix ?? ''), resolve: resolver.resolve };
|
|
193
|
+
resolvers.add(entry);
|
|
194
|
+
onChange();
|
|
195
|
+
return remover(() => resolvers.delete(entry));
|
|
196
|
+
},
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/** A tool schema as the host lists it. */
|
|
2
|
+
export interface ToolSchema {
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
parameters?: unknown;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
/** Metadata a plugin can attach to tools (package.json `dsh.toolCatalog` or annotate()). */
|
|
9
|
+
export interface ToolMeta {
|
|
10
|
+
group?: string;
|
|
11
|
+
category?: string;
|
|
12
|
+
risk?: string;
|
|
13
|
+
summary?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface Annotation {
|
|
16
|
+
source?: string;
|
|
17
|
+
match: string | RegExp;
|
|
18
|
+
meta: ToolMeta;
|
|
19
|
+
}
|
|
20
|
+
export interface ToolEntry {
|
|
21
|
+
name: string;
|
|
22
|
+
/** Name inside its group (MCP routing prefix dropped). */
|
|
23
|
+
short: string;
|
|
24
|
+
group: string;
|
|
25
|
+
/** Where the structural fallback alone would have put the tool. */
|
|
26
|
+
fallbackGroup: string;
|
|
27
|
+
category: string;
|
|
28
|
+
summary: string;
|
|
29
|
+
description: string;
|
|
30
|
+
tokens: number;
|
|
31
|
+
highRisk: boolean;
|
|
32
|
+
annotation: ToolMeta;
|
|
33
|
+
}
|
|
34
|
+
export interface Group {
|
|
35
|
+
name: string;
|
|
36
|
+
category: string;
|
|
37
|
+
tools: ToolEntry[];
|
|
38
|
+
}
|
|
39
|
+
export interface Category {
|
|
40
|
+
name: string;
|
|
41
|
+
description: string;
|
|
42
|
+
groups: Group[];
|
|
43
|
+
/** Set on a synthetic alias node (several targets behind one name). */
|
|
44
|
+
alias?: string[];
|
|
45
|
+
/** The exact tools an alias stands for; load these, never their whole groups. */
|
|
46
|
+
aliasTools?: ToolEntry[];
|
|
47
|
+
}
|
|
48
|
+
export interface Catalog {
|
|
49
|
+
tools: Map<string, ToolEntry>;
|
|
50
|
+
groups: Map<string, Group>;
|
|
51
|
+
categories: Map<string, Category>;
|
|
52
|
+
}
|
|
53
|
+
export type CatalogNode = {
|
|
54
|
+
kind: 'root';
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'category';
|
|
57
|
+
category: Category;
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'group';
|
|
60
|
+
group: Group;
|
|
61
|
+
} | {
|
|
62
|
+
kind: 'tool';
|
|
63
|
+
tool: ToolEntry;
|
|
64
|
+
} | {
|
|
65
|
+
kind: 'missing';
|
|
66
|
+
target: string;
|
|
67
|
+
};
|
|
68
|
+
/** What a classifier sees of one tool. */
|
|
69
|
+
export interface ToolProbe {
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
annotation: ToolMeta;
|
|
73
|
+
}
|
|
74
|
+
/** What a classifier sees of one group. */
|
|
75
|
+
export interface GroupProbe {
|
|
76
|
+
name: string;
|
|
77
|
+
tools: ToolProbe[];
|
|
78
|
+
}
|
|
79
|
+
export interface Classifier {
|
|
80
|
+
name?: string;
|
|
81
|
+
priority?: number;
|
|
82
|
+
/** Group name for a tool, or undefined to pass. */
|
|
83
|
+
group?(tool: ToolProbe): string | undefined;
|
|
84
|
+
/** Category for a group, or undefined to pass. */
|
|
85
|
+
categorize?(group: GroupProbe): string | undefined;
|
|
86
|
+
}
|
|
87
|
+
export interface VisibilityFilter {
|
|
88
|
+
name?: string;
|
|
89
|
+
/** Names to keep out of `names`; may only narrow. */
|
|
90
|
+
filter(agent: Agent, names: string[]): Iterable<string> | undefined | null;
|
|
91
|
+
}
|
|
92
|
+
export interface TargetResolver {
|
|
93
|
+
name?: string;
|
|
94
|
+
/** Targets starting with this prefix are offered to `resolve` first. */
|
|
95
|
+
prefix?: string;
|
|
96
|
+
/** One or more ordinary targets to resolve instead, or undefined to pass. */
|
|
97
|
+
resolve(target: string): string | string[] | undefined | null;
|
|
98
|
+
}
|
|
99
|
+
/** A registry entry after registration (defaults filled in). */
|
|
100
|
+
export interface RegisteredResolver {
|
|
101
|
+
name: string;
|
|
102
|
+
prefix: string;
|
|
103
|
+
resolve: TargetResolver['resolve'];
|
|
104
|
+
}
|
|
105
|
+
export type Disposer = () => void;
|
|
106
|
+
export interface LoadState {
|
|
107
|
+
/** Individual tool names. */
|
|
108
|
+
loaded: Set<string>;
|
|
109
|
+
/** Subscribed group names (tools the group gains later included). */
|
|
110
|
+
groups: Set<string>;
|
|
111
|
+
/** Tools unloaded from inside a subscribed group. */
|
|
112
|
+
excluded: Set<string>;
|
|
113
|
+
/** Groups handed to subagents started later. */
|
|
114
|
+
handoffGroups: Set<string>;
|
|
115
|
+
/** Tools handed to subagents started later. */
|
|
116
|
+
handoffTools: Set<string>;
|
|
117
|
+
}
|
|
118
|
+
/** Plain JSON form of a LoadState (sorted arrays). */
|
|
119
|
+
export type SerializedState = {
|
|
120
|
+
[K in keyof LoadState]: string[];
|
|
121
|
+
};
|
|
122
|
+
export interface StateProvider {
|
|
123
|
+
name?: string;
|
|
124
|
+
/** A serialized state for the agent, or null when there is none. */
|
|
125
|
+
load?(agent: Agent): Partial<SerializedState> | null | undefined;
|
|
126
|
+
save?(agent: Agent, state: SerializedState): void;
|
|
127
|
+
}
|
|
128
|
+
export interface RiskGate {
|
|
129
|
+
name?: string;
|
|
130
|
+
}
|
|
131
|
+
export interface Logger {
|
|
132
|
+
debug?(message: string): void;
|
|
133
|
+
info?(message: string): void;
|
|
134
|
+
warn?(message: string): void;
|
|
135
|
+
}
|
|
136
|
+
export interface SessionEvent {
|
|
137
|
+
type?: string;
|
|
138
|
+
data?: {
|
|
139
|
+
provider?: string;
|
|
140
|
+
[key: string]: unknown;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
export interface Session {
|
|
144
|
+
id?: unknown;
|
|
145
|
+
seq?: number;
|
|
146
|
+
eventAt?(seq: number): SessionEvent | undefined;
|
|
147
|
+
requestHeader?(): {
|
|
148
|
+
provider?: string;
|
|
149
|
+
} | undefined;
|
|
150
|
+
}
|
|
151
|
+
/** An agent as this plugin uses it. */
|
|
152
|
+
export interface Agent {
|
|
153
|
+
id: unknown;
|
|
154
|
+
options?: {
|
|
155
|
+
provider?: string;
|
|
156
|
+
};
|
|
157
|
+
session?: Session;
|
|
158
|
+
ctx?: {
|
|
159
|
+
tools?: {
|
|
160
|
+
restrict?(spec: {
|
|
161
|
+
allow?: string[];
|
|
162
|
+
deny?: string[];
|
|
163
|
+
}): Disposer;
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
export interface AgentsApi {
|
|
168
|
+
list(): Agent[];
|
|
169
|
+
get?(id: unknown): Agent | undefined;
|
|
170
|
+
isOwnedBy?(childId: unknown, candidate: Agent): boolean;
|
|
171
|
+
}
|
|
172
|
+
/** Context a plugin receives once `agents` is injected. */
|
|
173
|
+
export interface AgentContext {
|
|
174
|
+
agents: AgentsApi;
|
|
175
|
+
effect(fn: () => Disposer | void, label?: string): void;
|
|
176
|
+
on(event: string, handler: (...args: any[]) => unknown): Disposer;
|
|
177
|
+
}
|
|
178
|
+
export interface ToolLayer {
|
|
179
|
+
tools: Map<string, {
|
|
180
|
+
description?: string;
|
|
181
|
+
parameters?: unknown;
|
|
182
|
+
}>;
|
|
183
|
+
}
|
|
184
|
+
export interface HostTools {
|
|
185
|
+
schemas(agent?: Agent): ToolSchema[];
|
|
186
|
+
register(definition: unknown): Disposer | void;
|
|
187
|
+
view?(agent: Agent): {
|
|
188
|
+
restrictableNames: Iterable<string>;
|
|
189
|
+
};
|
|
190
|
+
schemaOf?(definition: unknown, deferred: boolean): ToolSchema;
|
|
191
|
+
layers?: {
|
|
192
|
+
chainLayers?(agent: Agent): Iterable<ToolLayer>;
|
|
193
|
+
peek?(agent: Agent): ToolLayer | undefined;
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
export interface LoaderEntry {
|
|
197
|
+
options?: {
|
|
198
|
+
name?: unknown;
|
|
199
|
+
disabled?: boolean;
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
export interface Loader {
|
|
203
|
+
entries?(): Iterable<LoaderEntry>;
|
|
204
|
+
baseUrl?: string;
|
|
205
|
+
ctx?: {
|
|
206
|
+
baseUrl?: string;
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/** The host context the core plugin is applied to. */
|
|
210
|
+
export interface HostContext {
|
|
211
|
+
tools: HostTools;
|
|
212
|
+
logger?: ((name: string) => Logger) | Logger;
|
|
213
|
+
baseUrl?: string;
|
|
214
|
+
get?(name: string): unknown;
|
|
215
|
+
emit(event: string, ...args: unknown[]): void;
|
|
216
|
+
serial(event: string, ...args: unknown[]): Promise<unknown>;
|
|
217
|
+
on(event: string, handler: (...args: any[]) => unknown): Disposer;
|
|
218
|
+
effect(fn: () => Disposer | void, label?: string): void;
|
|
219
|
+
inject?(deps: string[], fn: (ctx: AgentContext) => void): void;
|
|
220
|
+
provide(name: string, service: unknown): void;
|
|
221
|
+
}
|
|
222
|
+
/** Configuration of the core plugin. */
|
|
223
|
+
export interface CoreConfig {
|
|
224
|
+
/** Extra always-on tools. */
|
|
225
|
+
pinned?: string[];
|
|
226
|
+
/** Tools removed from the default always-on list. */
|
|
227
|
+
unpin?: string[];
|
|
228
|
+
/** Tool names treated as high risk. */
|
|
229
|
+
highRisk?: string[];
|
|
230
|
+
/** Model routes never narrowed (default ["claude-code"]). */
|
|
231
|
+
exemptProviders?: string[];
|
|
232
|
+
}
|
|
233
|
+
/** A plugin package the host loader knows. */
|
|
234
|
+
export interface PluginPackage {
|
|
235
|
+
name: string;
|
|
236
|
+
dir: string;
|
|
237
|
+
manifest: string;
|
|
238
|
+
}
|
|
239
|
+
/** A search hit from toolCatalog.find(). */
|
|
240
|
+
export interface FoundTool {
|
|
241
|
+
name: string;
|
|
242
|
+
short: string;
|
|
243
|
+
path: string;
|
|
244
|
+
category: string;
|
|
245
|
+
group: string;
|
|
246
|
+
summary: string;
|
|
247
|
+
tokens: number;
|
|
248
|
+
highRisk: boolean;
|
|
249
|
+
}
|
|
250
|
+
/** The service the core provides as `toolCatalog` (inject it to extend the catalog). */
|
|
251
|
+
export interface ToolCatalogService {
|
|
252
|
+
registerClassifier(classifier: Classifier): Disposer;
|
|
253
|
+
annotate(match: string | RegExp, meta: ToolMeta): Disposer;
|
|
254
|
+
defineCategory(name: string, description?: string): Disposer;
|
|
255
|
+
registerVisibilityFilter(filter: VisibilityFilter): Disposer;
|
|
256
|
+
/** Own a target prefix (`"cap:"`) in tools_load / tools_ls / tools_unload. */
|
|
257
|
+
registerTargetResolver(resolver: TargetResolver): Disposer;
|
|
258
|
+
/** Let loaded state outlive the process (see dsh-tool-manager-persist). */
|
|
259
|
+
registerStateProvider(provider?: StateProvider): Disposer;
|
|
260
|
+
/** Declare that a plugin confirms high-risk loads; without one they are refused. */
|
|
261
|
+
registerRiskGate(gate?: RiskGate): Disposer;
|
|
262
|
+
riskGates(): string[];
|
|
263
|
+
/** Re-read package declarations and rebuild. */
|
|
264
|
+
refresh(): void;
|
|
265
|
+
/** Catalog as one agent sees it, or the union over live agents. */
|
|
266
|
+
get(agent?: Agent): Catalog;
|
|
267
|
+
resolve(target: string, agent?: Agent): CatalogNode;
|
|
268
|
+
stateOf(agent: Agent): LoadState;
|
|
269
|
+
exportState(agent: Agent): SerializedState;
|
|
270
|
+
importState(agent: Agent, state: Partial<SerializedState>): void;
|
|
271
|
+
/** Names visible to the agent, or null when this plugin does not restrict it. */
|
|
272
|
+
allowFor(agent: Agent): string[] | null;
|
|
273
|
+
/** True when the agent's model route is in `exemptProviders` (never narrowed). */
|
|
274
|
+
isExempt(agent: Agent): boolean;
|
|
275
|
+
/** Load through the same path as tools_load; returns the model-facing text. */
|
|
276
|
+
load(agent: Agent, targets: readonly string[], options?: {
|
|
277
|
+
forSubagents?: boolean;
|
|
278
|
+
}): Promise<string>;
|
|
279
|
+
unload(agent: Agent, targets: readonly string[]): Promise<string>;
|
|
280
|
+
/** Live agents, each with its parent when it is a subagent. */
|
|
281
|
+
agents(): {
|
|
282
|
+
agent: Agent;
|
|
283
|
+
id: string;
|
|
284
|
+
parentId: string | null;
|
|
285
|
+
}[];
|
|
286
|
+
config(): {
|
|
287
|
+
pinned: string[];
|
|
288
|
+
entryTools: string[];
|
|
289
|
+
extraPinned: string[];
|
|
290
|
+
unpinned: string[];
|
|
291
|
+
highRisk: string[];
|
|
292
|
+
};
|
|
293
|
+
packages(): PluginPackage[];
|
|
294
|
+
extensions(): {
|
|
295
|
+
classifiers: {
|
|
296
|
+
name: string;
|
|
297
|
+
priority: number;
|
|
298
|
+
}[];
|
|
299
|
+
filters: string[];
|
|
300
|
+
annotations: {
|
|
301
|
+
source: string | undefined;
|
|
302
|
+
match: string;
|
|
303
|
+
}[];
|
|
304
|
+
categories: string[];
|
|
305
|
+
riskGates: string[];
|
|
306
|
+
stateProviders: string[];
|
|
307
|
+
};
|
|
308
|
+
/** Structured cross-directory search (same matching as tools_ls with a query). */
|
|
309
|
+
find(query: string, path?: string): FoundTool[];
|
|
310
|
+
/** Schema tokens actually sent for an agent: pinned tools plus its loaded set. */
|
|
311
|
+
wireTokens(agent: Agent): number;
|
|
312
|
+
}
|
|
313
|
+
/** What an extension plugin uses of its context after `inject: ['toolCatalog']`. */
|
|
314
|
+
export interface ExtensionContext extends Pick<HostContext, 'logger' | 'effect' | 'on'> {
|
|
315
|
+
toolCatalog: ToolCatalogService;
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Types shared by the core modules and exported for extension plugins.
|
|
2
|
+
//
|
|
3
|
+
// The host surface is described structurally (only what this plugin touches)
|
|
4
|
+
// instead of importing the host's Cordis types, so the package type-checks
|
|
5
|
+
// without the host packages installed next to it.
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,kDAAkD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Agent, AgentContext, Catalog, Disposer, HostContext, LoadState, Logger, SerializedState, StateProvider } from './types.js';
|
|
2
|
+
import type { RegisteredFilter } from './service.js';
|
|
3
|
+
/** Plain JSON form of one agent's state (sorted arrays). */
|
|
4
|
+
export declare function serializeState(state: LoadState): SerializedState;
|
|
5
|
+
/** Inverse of serializeState; unknown keys are ignored, values coerced to strings. */
|
|
6
|
+
export declare function deserializeState(raw: Partial<Record<keyof LoadState, Iterable<unknown>>> | null | undefined): LoadState;
|
|
7
|
+
export interface VisibilityOptions {
|
|
8
|
+
pinned: () => Iterable<string>;
|
|
9
|
+
entryTools?: readonly string[];
|
|
10
|
+
getFilters?: () => readonly RegisteredFilter[];
|
|
11
|
+
getCatalog: (agent?: Agent) => Catalog;
|
|
12
|
+
invalidate?: () => void;
|
|
13
|
+
onStateChange?: (agent: Agent, state: SerializedState) => void;
|
|
14
|
+
isExempt?: (agent: Agent) => boolean;
|
|
15
|
+
logger?: Logger;
|
|
16
|
+
}
|
|
17
|
+
export type VisibilityController = ReturnType<typeof createVisibilityController>;
|
|
18
|
+
export declare function createVisibilityController(ctx: Pick<HostContext, 'tools'>, { pinned, entryTools, getFilters, getCatalog, invalidate, onStateChange, isExempt, logger }: VisibilityOptions): {
|
|
19
|
+
mount: (agentCtx: AgentContext) => Disposer;
|
|
20
|
+
update: <R>(agent: Agent, mutate: (state: LoadState) => R) => R;
|
|
21
|
+
agents: () => Agent[];
|
|
22
|
+
parentOf: (agent: Agent) => Agent | undefined;
|
|
23
|
+
stateOf: (agent: Agent) => LoadState;
|
|
24
|
+
registerStateProvider: (provider?: StateProvider) => Disposer;
|
|
25
|
+
stateProviders: () => string[];
|
|
26
|
+
exportState: (agent: Agent) => SerializedState;
|
|
27
|
+
importState: (agent: Agent, raw: Parameters<typeof deserializeState>[0]) => void;
|
|
28
|
+
allowFor: (agent: Agent) => string[] | null;
|
|
29
|
+
isExempt: (agent: Agent) => boolean;
|
|
30
|
+
refresh: () => void;
|
|
31
|
+
dispose(): void;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=visibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility.d.ts","sourceRoot":"","sources":["../src/visibility.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AACxI,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAcpD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,CAIhE;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAIvH;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC9B,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,SAAS,gBAAgB,EAAE,CAAA;IAC9C,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;IACpC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAQD,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAEhF,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,UAAe,EAAE,UAAqB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,QAAsB,EAAE,MAAM,EAAE,EAAE,iBAAiB;sBA6L7L,YAAY,KAAG,QAAQ;aAiChC,CAAC,SAAS,KAAK,UAAU,CAAC,KAAK,EAAE,SAAS,KAAK,CAAC,KAAG,CAAC;kBAoBtD,KAAK,EAAE;sBApII,KAAK,KAAG,KAAK,GAAG,SAAS;qBA0G1B,KAAK,KAAG,SAAS;uCAvDA,aAAa,KAAQ,QAAQ;;yBAsF/C,KAAK;yBAbA,KAAK,OAAO,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;sBAgB1D,KAAK,KAAG,MAAM,EAAE,GAAG,IAAI;sBACvB,KAAK;;;EAO1B"}
|