relay-dsh-plugin-manager 0.2.5 → 0.3.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/CHANGELOG.md +45 -0
- package/README.md +33 -7
- package/README.zh.md +25 -6
- package/SPEC.md +25 -7
- package/docs/acceptance/live-dsh-task-solution-2026-09-11.md +61 -0
- package/docs/acceptance/search-scenarios-2026-09-11.md +32 -0
- package/docs/acceptance/task-role-model-2026-09-11.md +45 -0
- package/docs/acceptance/task-solutions-2026-09-11.md +42 -0
- package/docs/acceptance.md +5 -1
- package/docs/technical-design.md +57 -4
- package/lib/errors-BGx4K2uq.js.map +1 -1
- package/lib/index.d.ts +138 -3
- package/lib/index.js +511 -40
- package/lib/index.js.map +1 -1
- package/lib/{search-runtime-DsmnI673.d.ts → search-runtime-gzUZ5Yb3.d.ts} +17 -3
- package/lib/search-runtime.d.ts +1 -1
- package/lib/search-runtime.js.map +1 -1
- package/package.json +3 -1
|
@@ -46,10 +46,24 @@ interface PluginSearchRequest {
|
|
|
46
46
|
fallbackToText: boolean;
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
type PluginSearchMatch = {
|
|
50
50
|
kind: 'github-owner';
|
|
51
51
|
value: string;
|
|
52
|
-
}
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'exact-identifier';
|
|
54
|
+
value: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: 'registry';
|
|
57
|
+
strategy: 'keyword' | 'keyword-plus-semantic-directory-v1';
|
|
58
|
+
snapshotId: string;
|
|
59
|
+
directoryVersion?: string;
|
|
60
|
+
retrievalSources: string[];
|
|
61
|
+
keywordReasonCodes: string[];
|
|
62
|
+
canonicalPathKey?: string;
|
|
63
|
+
canonicalPath: string[];
|
|
64
|
+
matchedCapabilities: string[];
|
|
65
|
+
exactIdentifier: boolean;
|
|
66
|
+
};
|
|
53
67
|
interface PluginSearchCandidate {
|
|
54
68
|
id: string;
|
|
55
69
|
title: string;
|
|
@@ -80,4 +94,4 @@ declare class PluginSearchRuntime extends Service {
|
|
|
80
94
|
}
|
|
81
95
|
//#endregion
|
|
82
96
|
export { PluginSearchRuntime as a, PluginSource as c, PluginSearchRequest as i, inspectPluginSource as l, PluginSearchMatch as n, FetchOptions as o, PluginSearchProvider as r, PluginInspection as s, PluginSearchCandidate as t };
|
|
83
|
-
//# sourceMappingURL=search-runtime-
|
|
97
|
+
//# sourceMappingURL=search-runtime-gzUZ5Yb3.d.ts.map
|
package/lib/search-runtime.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PluginSearchRuntime, i as PluginSearchRequest, n as PluginSearchMatch, r as PluginSearchProvider, t as PluginSearchCandidate } from "./search-runtime-
|
|
1
|
+
import { a as PluginSearchRuntime, i as PluginSearchRequest, n as PluginSearchMatch, r as PluginSearchProvider, t as PluginSearchCandidate } from "./search-runtime-gzUZ5Yb3.js";
|
|
2
2
|
export { PluginSearchCandidate, PluginSearchMatch, PluginSearchProvider, PluginSearchRequest, PluginSearchRuntime, PluginSearchRuntime as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-runtime.js","names":[],"sources":["../src/search-runtime.ts"],"sourcesContent":["import { Context, Service } from '@deepseek-ai/cordis'\nimport { fail } from './errors.ts'\nimport type { PluginSource } from './source.ts'\n\nexport interface PluginSearchRequest {\n query: string\n maxResults: number\n signal: AbortSignal\n intent?: {\n kind: 'github-owner'\n owner: string\n fallbackToText: boolean\n }\n}\n\nexport
|
|
1
|
+
{"version":3,"file":"search-runtime.js","names":[],"sources":["../src/search-runtime.ts"],"sourcesContent":["import { Context, Service } from '@deepseek-ai/cordis'\nimport { fail } from './errors.ts'\nimport type { PluginSource } from './source.ts'\n\nexport interface PluginSearchRequest {\n query: string\n maxResults: number\n signal: AbortSignal\n intent?: {\n kind: 'github-owner'\n owner: string\n fallbackToText: boolean\n }\n}\n\nexport type PluginSearchMatch = {\n kind: 'github-owner'\n value: string\n} | {\n kind: 'exact-identifier'\n value: string\n} | {\n kind: 'registry'\n strategy: 'keyword' | 'keyword-plus-semantic-directory-v1'\n snapshotId: string\n directoryVersion?: string\n retrievalSources: string[]\n keywordReasonCodes: string[]\n canonicalPathKey?: string\n canonicalPath: string[]\n matchedCapabilities: string[]\n exactIdentifier: boolean\n}\n\nexport interface PluginSearchCandidate {\n id: string\n title: string\n description?: string\n homepage?: string\n repository?: string\n sources: PluginSource[]\n score?: number\n evidence?: string[]\n match?: PluginSearchMatch\n}\n\nexport interface PluginSearchProvider {\n id: string\n search(request: PluginSearchRequest): Promise<readonly PluginSearchCandidate[]>\n}\n\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n pluginSearch: PluginSearchRuntime\n }\n}\n\nconst PROVIDER_ID = /^[a-z][a-z0-9._-]{0,63}$/u\n\nexport class PluginSearchRuntime extends Service {\n readonly apiVersion = 1 as const\n private readonly providers = new Map<string, PluginSearchProvider>()\n\n constructor(ctx: Context) {\n super(ctx, 'pluginSearch')\n }\n\n register(provider: PluginSearchProvider): () => void {\n if (!PROVIDER_ID.test(provider.id) || typeof provider.search !== 'function') {\n throw new TypeError('plugin search provider requires a lowercase stable id and search function')\n }\n if (this.providers.has(provider.id)) {\n fail('DUPLICATE_SEARCH_PROVIDER', `A plugin search provider named \"${provider.id}\" is already registered.`)\n }\n const dispose = this.ctx.effect(function* (this: PluginSearchRuntime) {\n this.providers.set(provider.id, provider)\n yield () => this.providers.delete(provider.id)\n }.bind(this), 'pluginSearch.register()')\n return () => void dispose()\n }\n\n list(): readonly string[] {\n return Object.freeze([...this.providers.keys()].sort())\n }\n\n entries(): readonly PluginSearchProvider[] {\n return Object.freeze([...this.providers.values()])\n }\n}\n\nexport default PluginSearchRuntime\n"],"mappings":";;;AAyDA,MAAM,cAAc;AAEpB,IAAa,sBAAb,cAAyC,QAAQ;CAC/C,aAAsB;CACtB,4BAA6B,IAAI,IAAkC;CAEnE,YAAY,KAAc;EACxB,MAAM,KAAK,cAAc;CAC3B;CAEA,SAAS,UAA4C;EACnD,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,KAAK,OAAO,SAAS,WAAW,YAC/D,MAAM,IAAI,UAAU,2EAA2E;EAEjG,IAAI,KAAK,UAAU,IAAI,SAAS,EAAE,GAChC,KAAK,6BAA6B,mCAAmC,SAAS,GAAG,yBAAyB;EAE5G,MAAM,UAAU,KAAK,IAAI,OAAO,aAAsC;GACpE,KAAK,UAAU,IAAI,SAAS,IAAI,QAAQ;GACxC,YAAY,KAAK,UAAU,OAAO,SAAS,EAAE;EAC/C,EAAE,KAAK,IAAI,GAAG,yBAAyB;EACvC,aAAa,KAAK,QAAQ;CAC5B;CAEA,OAA0B;EACxB,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;CACxD;CAEA,UAA2C;EACzC,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,CAAC;CACnD;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relay-dsh-plugin-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Conversation-first plugin discovery and lifecycle management for DeepSeek Harness.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
"test:integration": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 vitest run test/integration",
|
|
38
38
|
"acceptance:live:codex": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 RELAY_LIVE_PLUGIN_ACCEPTANCE=1 vitest run test/live/codex.live.test.ts --reporter=verbose",
|
|
39
39
|
"acceptance:live:registry": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 node --experimental-strip-types scripts/accept-live-registry.mjs",
|
|
40
|
+
"acceptance:live:task-roles": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 node scripts/accept-task-role-model.mjs",
|
|
41
|
+
"acceptance:live:dsh-task-solution": "npm run build && RELAY_PLUGIN_MANAGER_TELEMETRY=0 node scripts/accept-dsh-task-solution.mjs",
|
|
40
42
|
"acceptance:controlled": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 node --experimental-strip-types scripts/accept-controlled-lifecycle.mjs",
|
|
41
43
|
"acceptance": "RELAY_PLUGIN_MANAGER_TELEMETRY=0 node scripts/accept-local-package.mjs",
|
|
42
44
|
"release:dry-run": "npm publish --dry-run --tag next",
|