@deepseek-ai/dsh-host-plugin-inventory 0.2.1-alpha.2 → 0.2.1-alpha.3

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.
@@ -1,61 +1,58 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema$value
5
7
  const _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema = () => (_deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema$value ??= z.object({
6
- 'managementAvailable': z.boolean().readonly().optional(),
8
+ 'managementAvailable': z.boolean().readonly().optional().describe('Whether this Host exposes persistent current-profile management.'),
7
9
  'entries': z.array(z.object({
8
- 'entryId': z.intersection(z.string(), z.unknown()).readonly(),
9
- 'moduleName': z.string().readonly(),
10
+ 'entryId': z.string().readonly(),
11
+ 'moduleName': z.string().readonly().describe('Exact module specifier imported by the Loader entry.'),
10
12
  'meta': z.object({
11
13
  'title': z.union([z.string(), z.intersection(z.object({
12
14
  'en': z.string().readonly(),
13
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
15
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display title; omission preserves the consumer\'s technical-name fallback.'),
14
16
  'description': z.union([z.string(), z.intersection(z.object({
15
17
  'en': z.string().readonly(),
16
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
17
- 'icon': z.string().readonly().optional(),
18
- 'error': z.string().readonly().optional(),
19
- }).readonly().optional(),
20
- 'enabled': z.boolean().readonly(),
18
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display introduction after locale and package-field fallback.'),
19
+ 'icon': z.string().readonly().optional().describe('Base64 image data URL from a package root\'s manifest icon or an exported `<specifier>/icon`; render as an image, not inline markup.'),
20
+ 'error': z.string().readonly().optional().describe('Unmodified local metadata diagnostic; the plugin remains manageable.'),
21
+ }).readonly().optional().describe('Local package display metadata, independent of whether the entry is enabled.'),
22
+ 'enabled': z.boolean().readonly().describe('Effective Loader enablement, including disabled ancestor groups.'),
21
23
  'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
22
24
  })).readonly(),
23
25
  'agentPresets': z.array(z.object({
24
- 'id': z.string().readonly(),
25
- 'name': z.string().readonly().optional(),
26
- 'isDefault': z.boolean().readonly(),
27
- 'broken': z.string().readonly().optional(),
26
+ 'id': z.string().readonly().describe('Stable preset id.'),
27
+ 'name': z.string().readonly().optional().describe('Display name the preset published; a reader falls back to the id.'),
28
+ 'isDefault': z.boolean().readonly().describe('Whether a session naming no preset composes this one.'),
29
+ 'broken': z.string().readonly().optional().describe('Why this preset\'s composition cannot be read; absent when rows answer.'),
28
30
  'rows': z.array(z.object({
29
- 'entryId': z.union([z.literal(null), z.string()]).readonly(),
30
- 'moduleName': z.string().readonly(),
31
+ 'entryId': z.union([z.literal(null), z.string()]).readonly().describe('Composition row id, or null when the row declares none.'),
32
+ 'moduleName': z.string().readonly().describe('Module specifier the row names.'),
31
33
  'meta': z.object({
32
34
  'title': z.union([z.string(), z.intersection(z.object({
33
35
  'en': z.string().readonly(),
34
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
36
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display title; omission preserves the consumer\'s technical-name fallback.'),
35
37
  'description': z.union([z.string(), z.intersection(z.object({
36
38
  'en': z.string().readonly(),
37
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
38
- 'icon': z.string().readonly().optional(),
39
- 'error': z.string().readonly().optional(),
40
- }).readonly().optional(),
41
- 'enabled': z.union([z.literal(false), z.literal(true), z.literal("conditional")]).readonly(),
42
- 'condition': z.string().readonly().optional(),
43
- 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
44
- })).readonly(),
45
- })).readonly().optional(),
39
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display introduction after locale and package-field fallback.'),
40
+ 'icon': z.string().readonly().optional().describe('Base64 image data URL from a package root\'s manifest icon or an exported `<specifier>/icon`; render as an image, not inline markup.'),
41
+ 'error': z.string().readonly().optional().describe('Unmodified local metadata diagnostic; the plugin remains manageable.'),
42
+ }).readonly().optional().describe('Local package display metadata, independent of whether the preset is mounted.'),
43
+ 'enabled': z.union([z.literal(false), z.literal(true), z.literal("conditional")]).readonly().describe('Effective enablement, including disabled ancestor groups. `\'conditional\'` marks a `!!js` disabled expression on a composition no session has mounted, which only a Loader context can decide.'),
44
+ 'condition': z.string().readonly().optional().describe('The row\'s own `!!js` disabled expression, when it carries one.'),
45
+ 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly().describe('Root-fiber phase when the composition is live; null otherwise.'),
46
+ })).readonly().describe('Plugin rows in composition order; empty when the preset is broken.'),
47
+ })).readonly().optional().describe('Per-preset compositions, present only when an agent-preset roster is composed in this deployment.'),
46
48
  }))
47
49
 
48
- export const TYPERT = {
50
+ const $remote = createTypertRemoteInfo({
49
51
  package: '@deepseek-ai/dsh-host-plugin-inventory',
50
- face: 'host',
51
- schemas: [
52
- ],
53
- invocations: [
54
- {
55
- id: '@deepseek-ai/dsh-host-plugin-inventory#pluginInventory/list',
52
+ methods: {
53
+ 'pluginInventory/list': {
56
54
  service: 'pluginInventory',
57
- namespace: 'pluginInventory',
58
- method: 'list',
55
+ description: 'Read the Loader directly on every call. Cordis\'s internal plugin/status events already maintain Entry.fiber and Fiber.state, so a second cache would only add another lifecycle truth to keep synchronized. When an agent-preset roster is composed, the snapshot also carries each preset\'s composition rows, because those rows — not the Loader\'s own entries — are where a deployment that mounts the roster runs its model-facing plugins.',
59
56
  invocation: { kind: 'direct' },
60
57
  parameters: [
61
58
  ],
@@ -63,10 +60,20 @@ export const TYPERT = {
63
60
  mode: 'strict',
64
61
  typeSymbol: '@deepseek-ai/dsh-host-plugin-inventory/types#PluginInventorySnapshot',
65
62
  create: _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema,
63
+ description: 'Current non-group Loader entries in Loader order, with optional display metadata and per-preset compositions when a roster is composed.',
64
+ jsonSchemaError: 'typert tool schema: selected dictionaries require string keys and unconstrained JSON values',
66
65
  },
67
66
  sourceLocation: {"file":"packages/host/plugin-inventory/src/index.ts","line":71,"column":9},
68
67
  },
68
+ },
69
+ }, z)
70
+
71
+ export const TYPERT = {
72
+ package: '@deepseek-ai/dsh-host-plugin-inventory',
73
+ face: 'host',
74
+ schemas: [
69
75
  ],
76
+ get invocations() { return $remote.descriptors },
70
77
  model: {
71
78
  "services": [],
72
79
  "events": [],
@@ -1,7 +1,8 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import type {
3
3
  RemoteResult,
4
- TypertRemoteContribution,
4
+ TypertRemoteInfo,
5
+ TypertRemoteMethod,
5
6
  } from '@deepseek-ai/dsh-typert-protocol'
6
7
  import type { PluginInventorySnapshot } from '@deepseek-ai/dsh-host-plugin-inventory/types'
7
8
 
@@ -17,6 +18,8 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
17
18
  }
18
19
  }
19
20
 
20
- export declare const TYPERT_REMOTE: TypertRemoteContribution
21
+ export declare const TYPERT_REMOTE: TypertRemoteInfo<{
22
+ readonly 'pluginInventory/list': TypertRemoteMethod<{ }, PluginInventorySnapshot>
23
+ }>
21
24
  export default TYPERT_REMOTE
22
25
  //# sourceMappingURL=typert.remote-client.d.ts.map
@@ -1,58 +1,58 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema$value
5
7
  const _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema = () => (_deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema$value ??= z.object({
6
- 'managementAvailable': z.boolean().readonly().optional(),
8
+ 'managementAvailable': z.boolean().readonly().optional().describe('Whether this Host exposes persistent current-profile management.'),
7
9
  'entries': z.array(z.object({
8
- 'entryId': z.intersection(z.string(), z.unknown()).readonly(),
9
- 'moduleName': z.string().readonly(),
10
+ 'entryId': z.string().readonly(),
11
+ 'moduleName': z.string().readonly().describe('Exact module specifier imported by the Loader entry.'),
10
12
  'meta': z.object({
11
13
  'title': z.union([z.string(), z.intersection(z.object({
12
14
  'en': z.string().readonly(),
13
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
15
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display title; omission preserves the consumer\'s technical-name fallback.'),
14
16
  'description': z.union([z.string(), z.intersection(z.object({
15
17
  'en': z.string().readonly(),
16
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
17
- 'icon': z.string().readonly().optional(),
18
- 'error': z.string().readonly().optional(),
19
- }).readonly().optional(),
20
- 'enabled': z.boolean().readonly(),
18
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display introduction after locale and package-field fallback.'),
19
+ 'icon': z.string().readonly().optional().describe('Base64 image data URL from a package root\'s manifest icon or an exported `<specifier>/icon`; render as an image, not inline markup.'),
20
+ 'error': z.string().readonly().optional().describe('Unmodified local metadata diagnostic; the plugin remains manageable.'),
21
+ }).readonly().optional().describe('Local package display metadata, independent of whether the entry is enabled.'),
22
+ 'enabled': z.boolean().readonly().describe('Effective Loader enablement, including disabled ancestor groups.'),
21
23
  'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
22
24
  })).readonly(),
23
25
  'agentPresets': z.array(z.object({
24
- 'id': z.string().readonly(),
25
- 'name': z.string().readonly().optional(),
26
- 'isDefault': z.boolean().readonly(),
27
- 'broken': z.string().readonly().optional(),
26
+ 'id': z.string().readonly().describe('Stable preset id.'),
27
+ 'name': z.string().readonly().optional().describe('Display name the preset published; a reader falls back to the id.'),
28
+ 'isDefault': z.boolean().readonly().describe('Whether a session naming no preset composes this one.'),
29
+ 'broken': z.string().readonly().optional().describe('Why this preset\'s composition cannot be read; absent when rows answer.'),
28
30
  'rows': z.array(z.object({
29
- 'entryId': z.union([z.literal(null), z.string()]).readonly(),
30
- 'moduleName': z.string().readonly(),
31
+ 'entryId': z.union([z.literal(null), z.string()]).readonly().describe('Composition row id, or null when the row declares none.'),
32
+ 'moduleName': z.string().readonly().describe('Module specifier the row names.'),
31
33
  'meta': z.object({
32
34
  'title': z.union([z.string(), z.intersection(z.object({
33
35
  'en': z.string().readonly(),
34
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
36
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display title; omission preserves the consumer\'s technical-name fallback.'),
35
37
  'description': z.union([z.string(), z.intersection(z.object({
36
38
  'en': z.string().readonly(),
37
- }), z.record(z.string(), z.string()).readonly())]).readonly().optional(),
38
- 'icon': z.string().readonly().optional(),
39
- 'error': z.string().readonly().optional(),
40
- }).readonly().optional(),
41
- 'enabled': z.union([z.literal(false), z.literal(true), z.literal("conditional")]).readonly(),
42
- 'condition': z.string().readonly().optional(),
43
- 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly(),
44
- })).readonly(),
45
- })).readonly().optional(),
39
+ }), z.record(z.string(), z.string()).readonly())]).readonly().optional().describe('Display introduction after locale and package-field fallback.'),
40
+ 'icon': z.string().readonly().optional().describe('Base64 image data URL from a package root\'s manifest icon or an exported `<specifier>/icon`; render as an image, not inline markup.'),
41
+ 'error': z.string().readonly().optional().describe('Unmodified local metadata diagnostic; the plugin remains manageable.'),
42
+ }).readonly().optional().describe('Local package display metadata, independent of whether the preset is mounted.'),
43
+ 'enabled': z.union([z.literal(false), z.literal(true), z.literal("conditional")]).readonly().describe('Effective enablement, including disabled ancestor groups. `\'conditional\'` marks a `!!js` disabled expression on a composition no session has mounted, which only a Loader context can decide.'),
44
+ 'condition': z.string().readonly().optional().describe('The row\'s own `!!js` disabled expression, when it carries one.'),
45
+ 'fiberPhase': z.union([z.literal(null), z.literal("failed"), z.literal("pending"), z.literal("active"), z.literal("loading"), z.literal("unloading")]).readonly().describe('Root-fiber phase when the composition is live; null otherwise.'),
46
+ })).readonly().describe('Plugin rows in composition order; empty when the preset is broken.'),
47
+ })).readonly().optional().describe('Per-preset compositions, present only when an agent-preset roster is composed in this deployment.'),
46
48
  }))
47
49
 
48
- export const TYPERT_REMOTE = {
50
+ export const TYPERT_REMOTE = createTypertRemoteInfo({
49
51
  package: '@deepseek-ai/dsh-host-plugin-inventory',
50
- descriptors: [
51
- {
52
- id: '@deepseek-ai/dsh-host-plugin-inventory#pluginInventory/list',
52
+ methods: {
53
+ 'pluginInventory/list': {
53
54
  service: 'pluginInventory',
54
- namespace: 'pluginInventory',
55
- method: 'list',
55
+ description: 'Read the Loader directly on every call. Cordis\'s internal plugin/status events already maintain Entry.fiber and Fiber.state, so a second cache would only add another lifecycle truth to keep synchronized. When an agent-preset roster is composed, the snapshot also carries each preset\'s composition rows, because those rows — not the Loader\'s own entries — are where a deployment that mounts the roster runs its model-facing plugins.',
56
56
  invocation: { kind: 'direct' },
57
57
  parameters: [
58
58
  ],
@@ -60,10 +60,12 @@ export const TYPERT_REMOTE = {
60
60
  mode: 'strict',
61
61
  typeSymbol: '@deepseek-ai/dsh-host-plugin-inventory/types#PluginInventorySnapshot',
62
62
  create: _deepseek_ai_dsh_host_plugin_inventory_pluginInventory_list_result$schema,
63
+ description: 'Current non-group Loader entries in Loader order, with optional display metadata and per-preset compositions when a roster is composed.',
64
+ jsonSchemaError: 'typert tool schema: selected dictionaries require string keys and unconstrained JSON values',
63
65
  },
64
66
  sourceLocation: {"file":"packages/host/plugin-inventory/src/index.ts","line":71,"column":9},
65
67
  },
66
- ],
67
- }
68
+ },
69
+ }, z)
68
70
 
69
71
  export default TYPERT_REMOTE
package/locale/en.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "meta": {
3
+ "title": "plugin-inventory"
4
+ }
5
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "插件清单服务",
4
+ "description": "提供当前插件条目、配置启用状态和运行状态的只读清单。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-host-plugin-inventory",
3
3
  "description": "Read-only Remote projection of current Cordis Loader plugin state",
4
- "version": "0.2.1-alpha.2",
4
+ "version": "0.2.1-alpha.3",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -31,9 +31,11 @@
31
31
  "default": "./lib/typert.remote-client.js"
32
32
  },
33
33
  "./src/*": "./src/*",
34
- "./package.json": "./package.json"
34
+ "./package.json": "./package.json",
35
+ "./locale/*.json": "./locale/*.json"
35
36
  },
36
37
  "files": [
38
+ "locale/*.json",
37
39
  "lib/index.js",
38
40
  "lib/types/**/*.js",
39
41
  "lib/types/**/*.d.ts",
@@ -44,14 +46,14 @@
44
46
  ],
45
47
  "license": "MIT",
46
48
  "dependencies": {
47
- "zod": "^4.4.3"
49
+ "zod": "4.4.3"
48
50
  },
49
51
  "peerDependencies": {
50
- "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
51
- "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.2",
52
- "@deepseek-ai/dsh-brand": "0.2.1-alpha.2",
53
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.2",
54
- "@deepseek-ai/cordis": "~4.0.5-alpha.1"
52
+ "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
53
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.3",
54
+ "@deepseek-ai/dsh-brand": "0.2.1-alpha.3",
55
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.3",
56
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2"
55
57
  },
56
58
  "peerDependenciesMeta": {
57
59
  "@deepseek-ai/dsh-agent-preset-registry": {
@@ -59,12 +61,12 @@
59
61
  }
60
62
  },
61
63
  "devDependencies": {
62
- "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.2",
63
- "@deepseek-ai/dsh-package-manifest": "0.2.1-alpha.2",
64
- "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
65
- "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.2",
66
- "@deepseek-ai/dsh-brand": "0.2.1-alpha.2",
67
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.2",
68
- "@deepseek-ai/cordis": "~4.0.5-alpha.1"
64
+ "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.3",
65
+ "@deepseek-ai/dsh-package-manifest": "0.2.1-alpha.3",
66
+ "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.2",
67
+ "@deepseek-ai/dsh-agent-preset-registry": "0.2.1-alpha.3",
68
+ "@deepseek-ai/dsh-brand": "0.2.1-alpha.3",
69
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.3",
70
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2"
69
71
  }
70
72
  }