fix: rebase
This commit is contained in:
@@ -32,7 +32,7 @@ One page per subsystem of the DeepSeek Harness: what it is, the data structures
|
|||||||
| [terminal.md](terminal.md) | persistent terminal ids, backend/session contracts, send readiness, bounded reads, and owner-visible snapshots |
|
| [terminal.md](terminal.md) | persistent terminal ids, backend/session contracts, send readiness, bounded reads, and owner-visible snapshots |
|
||||||
| [sandbox.md](sandbox.md) | per-session policy resolution and the process-confinement seam: file-effect modes, execution/provider policies, `ConfinedArgv`, enforcement and fail-closed errors |
|
| [sandbox.md](sandbox.md) | per-session policy resolution and the process-confinement seam: file-effect modes, execution/provider policies, `ConfinedArgv`, enforcement and fail-closed errors |
|
||||||
| [code-runtime.md](code-runtime.md) | the code-execution seam: `CodeRunRequest`/`Result`, binding namespaces, captured logs, the `CodeRunFailure` taxonomy |
|
| [code-runtime.md](code-runtime.md) | the code-execution seam: `CodeRunRequest`/`Result`, binding namespaces, captured logs, the `CodeRunFailure` taxonomy |
|
||||||
| [self-modification.md](self-modification.md) | versioned dynamic Cordis Plugins and Packages, Host/Client activation, approval, runtime inspection, and lifecycle teardown |
|
| [extensions.md](extensions.md) | versioned dynamic Cordis Plugins and Packages, Host/Client activation, approval, runtime inspection, and lifecycle teardown |
|
||||||
| [filesystem.md](filesystem.md) | the filesystem seam: `FsTarget`, read/write/edit outcomes, observed-file state, `FsErrorCode` |
|
| [filesystem.md](filesystem.md) | the filesystem seam: `FsTarget`, read/write/edit outcomes, observed-file state, `FsErrorCode` |
|
||||||
| [lsp.md](lsp.md) | the LSP navigation seam: `LspQueryRequest`/`Result`, `LspProvider`/`Service`, four operations, `LspError` |
|
| [lsp.md](lsp.md) | the LSP navigation seam: `LspQueryRequest`/`Result`, `LspProvider`/`Service`, four operations, `LspError` |
|
||||||
| [skills.md](skills.md) | the skill service: discovery priority, `SkillSummary`/`SkillDefinition`, session-prefix catalog, model-facing `skill` loading |
|
| [skills.md](skills.md) | the skill service: discovery priority, `SkillSummary`/`SkillDefinition`, session-prefix catalog, model-facing `skill` loading |
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
| [terminal.md](terminal.md) | 持久化终端 ID、后端/会话约定、发送就绪状态、有界读取与 owner 可见快照 |
|
| [terminal.md](terminal.md) | 持久化终端 ID、后端/会话约定、发送就绪状态、有界读取与 owner 可见快照 |
|
||||||
| [sandbox.md](sandbox.md) | 每会话策略解析与进程约束 seam:文件效果模式、执行/提供方策略、`ConfinedArgv`、强制执行与故障关闭错误 |
|
| [sandbox.md](sandbox.md) | 每会话策略解析与进程约束 seam:文件效果模式、执行/提供方策略、`ConfinedArgv`、强制执行与故障关闭错误 |
|
||||||
| [code-runtime.md](code-runtime.md) | 代码执行 seam:`CodeRunRequest`/`Result`、绑定命名空间、捕获日志、`CodeRunFailure` 分类体系 |
|
| [code-runtime.md](code-runtime.md) | 代码执行 seam:`CodeRunRequest`/`Result`、绑定命名空间、捕获日志、`CodeRunFailure` 分类体系 |
|
||||||
| [self-modification.md](self-modification.md) | 带版本的动态 Cordis Plugin 与 Package、Host/Client 激活、审批、运行时检查和生命周期撤销 |
|
| [extensions.md](extensions.md) | 带版本的动态 Cordis Plugin 与 Package、Host/Client 激活、审批、运行时检查和生命周期撤销 |
|
||||||
| [filesystem.md](filesystem.md) | 文件系统 seam:`FsTarget`、读/写/编辑结果、观测到的文件状态、`FsErrorCode` |
|
| [filesystem.md](filesystem.md) | 文件系统 seam:`FsTarget`、读/写/编辑结果、观测到的文件状态、`FsErrorCode` |
|
||||||
| [lsp.md](lsp.md) | LSP 导航 seam:`LspQueryRequest`/`Result`、`LspProvider`/`Service`、四种操作、`LspError` |
|
| [lsp.md](lsp.md) | LSP 导航 seam:`LspQueryRequest`/`Result`、`LspProvider`/`Service`、四种操作、`LspError` |
|
||||||
| [skills.md](skills.md) | skill(技能)服务:发现优先级、`SkillSummary`/`SkillDefinition`、会话前缀目录、面向模型的 `skill` 加载 |
|
| [skills.md](skills.md) | skill(技能)服务:发现优先级、`SkillSummary`/`SkillDefinition`、会话前缀目录、面向模型的 `skill` 加载 |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
# Bilingual-pair consistency record (docs/i18n/README.md): the git blob hash of each
|
||||||
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
||||||
# after editing either side, bring the other along and re-record with:
|
# after editing either side, bring the other along and re-record with:
|
||||||
# pnpm run verify-translation-pairing --write docs/subsystems/self-modification.md
|
# pnpm run verify-translation-pairing --write docs/subsystems/extensions.md
|
||||||
self-modification.md: 90ee02eb69149c6729635f9916fbd3946d4ae477
|
extensions.md: 90ee02eb69149c6729635f9916fbd3946d4ae477
|
||||||
self-modification.zh.md: a22bb38b1fe398da19b11384e6e38b9dde6d0c3e
|
extensions.zh.md: a22bb38b1fe398da19b11384e6e38b9dde6d0c3e
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# 运行时自修改
|
# Extensions
|
||||||
|
|
||||||
[English](self-modification.md) | 中文
|
English | [中文](extensions.zh.md)
|
||||||
|
|
||||||
self-modification 子系统允许 agent(智能体)定义带版本的 Cordis 包、运行其 host 与浏览器两半,并在编写代码前查询获准公开的运行时元数据。包生命周期与沙箱行为由 [`packages/self-modification`](../../packages/self-modification/README.md) 包组说明。
|
The extensions subsystem lets an agent define versioned Cordis packages, run their host and browser halves, and query approved runtime metadata before writing code. Package lifecycle and sandbox behavior belong to the [`packages/extensions`](../../packages/extensions/README.md) package group.
|
||||||
|
|
||||||
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ resolveClientQuery( agent: Agent, requestId: CordisInspectRequestId, resolution:
|
|||||||
|
|
||||||
Types: [Agent](core.md)
|
Types: [Agent](core.md)
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/self-modification/cordis-host-runner/src/inspect-registry.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts)
|
||||||
|
|
||||||
<a id="ctxdynamiccordisrunner--dynamiccordisrunnerservice"></a>
|
<a id="ctxdynamiccordisrunner--dynamiccordisrunnerservice"></a>
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ inspectPackage( agent: Agent, pluginId: CordisDynamicPluginId, packageId: Cordis
|
|||||||
|
|
||||||
Types: [Agent](core.md)
|
Types: [Agent](core.md)
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/index.ts:124`](../../packages/self-modification/cordis-host-runner/src/index.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/index.ts:124`](../../packages/extensions/cordis-host-runner/src/index.ts)
|
||||||
|
|
||||||
<a id="cordis-events"></a>
|
<a id="cordis-events"></a>
|
||||||
|
|
||||||
@@ -275,7 +275,7 @@ One exact Plugin/Package activation is now live in the Host.
|
|||||||
'cordis/dynamic-package'(pkg: DynamicCordisPackage): void
|
'cordis/dynamic-package'(pkg: DynamicCordisPackage): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:379`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:379`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisdynamic-retract--emit"></a>
|
<a id="cordisdynamic-retract--emit"></a>
|
||||||
|
|
||||||
@@ -292,7 +292,7 @@ One exact activation was withdrawn.
|
|||||||
'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void
|
'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:385`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:385`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisinspect-query--emit"></a>
|
<a id="cordisinspect-query--emit"></a>
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ Request a live read-only query from the Client inspect registry.
|
|||||||
'cordis/inspect-query'(request: CordisInspectQueryRequest): void
|
'cordis/inspect-query'(request: CordisInspectQueryRequest): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:391`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:391`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisinspect-query-resolved--emit"></a>
|
<a id="cordisinspect-query-resolved--emit"></a>
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ Notify every Client that an inspect query has settled or been cancelled.
|
|||||||
'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void
|
'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:397`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:397`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisrequest-run--emit"></a>
|
<a id="cordisrequest-run--emit"></a>
|
||||||
|
|
||||||
@@ -343,7 +343,7 @@ A Client-bearing activation needs a browser page, and may require a user decisio
|
|||||||
'cordis/request-run'(request: DynamicCordisRunRequest): void
|
'cordis/request-run'(request: DynamicCordisRunRequest): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:367`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:367`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisrequest-run-resolved--emit"></a>
|
<a id="cordisrequest-run-resolved--emit"></a>
|
||||||
|
|
||||||
@@ -360,5 +360,5 @@ A pending Client activation request left the answerable state.
|
|||||||
'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void
|
'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:373`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:373`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
<!-- END GENERATED cordis-surface -->
|
<!-- END GENERATED cordis-surface -->
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
# Runtime self-modification
|
# 扩展
|
||||||
|
|
||||||
English | [中文](self-modification.zh.md)
|
[English](extensions.md) | 中文
|
||||||
|
|
||||||
The self-modification subsystem lets an agent define versioned Cordis packages, run their host and browser halves, and query approved runtime metadata before writing code. Package lifecycle and sandbox behavior belong to the [`packages/self-modification`](../../packages/self-modification/README.md) package group.
|
extensions 子系统允许 agent(智能体)定义带版本的 Cordis 包、运行其 host 与浏览器两半,并在编写代码前查询获准公开的运行时元数据。包生命周期与沙箱行为由 [`packages/extensions`](../../packages/extensions/README.md) 包组说明。
|
||||||
|
|
||||||
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
<!-- BEGIN GENERATED cordis-surface (gen-cordis-catalog.ts) — do not edit between markers -->
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ resolveClientQuery( agent: Agent, requestId: CordisInspectRequestId, resolution:
|
|||||||
|
|
||||||
Types: [Agent](core.md)
|
Types: [Agent](core.md)
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/self-modification/cordis-host-runner/src/inspect-registry.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/inspect-registry.ts:46`](../../packages/extensions/cordis-host-runner/src/inspect-registry.ts)
|
||||||
|
|
||||||
<a id="ctxdynamiccordisrunner--dynamiccordisrunnerservice"></a>
|
<a id="ctxdynamiccordisrunner--dynamiccordisrunnerservice"></a>
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ inspectPackage( agent: Agent, pluginId: CordisDynamicPluginId, packageId: Cordis
|
|||||||
|
|
||||||
Types: [Agent](core.md)
|
Types: [Agent](core.md)
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/index.ts:124`](../../packages/self-modification/cordis-host-runner/src/index.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/index.ts:124`](../../packages/extensions/cordis-host-runner/src/index.ts)
|
||||||
|
|
||||||
<a id="cordis-events"></a>
|
<a id="cordis-events"></a>
|
||||||
|
|
||||||
@@ -275,7 +275,7 @@ One exact Plugin/Package activation is now live in the Host.
|
|||||||
'cordis/dynamic-package'(pkg: DynamicCordisPackage): void
|
'cordis/dynamic-package'(pkg: DynamicCordisPackage): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:379`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:379`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisdynamic-retract--emit"></a>
|
<a id="cordisdynamic-retract--emit"></a>
|
||||||
|
|
||||||
@@ -292,7 +292,7 @@ One exact activation was withdrawn.
|
|||||||
'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void
|
'cordis/dynamic-retract'(retracted: DynamicCordisRetracted): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:385`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:385`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisinspect-query--emit"></a>
|
<a id="cordisinspect-query--emit"></a>
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ Request a live read-only query from the Client inspect registry.
|
|||||||
'cordis/inspect-query'(request: CordisInspectQueryRequest): void
|
'cordis/inspect-query'(request: CordisInspectQueryRequest): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:391`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:391`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisinspect-query-resolved--emit"></a>
|
<a id="cordisinspect-query-resolved--emit"></a>
|
||||||
|
|
||||||
@@ -326,7 +326,7 @@ Notify every Client that an inspect query has settled or been cancelled.
|
|||||||
'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void
|
'cordis/inspect-query-resolved'(resolved: CordisInspectQueryResolved): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:397`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:397`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisrequest-run--emit"></a>
|
<a id="cordisrequest-run--emit"></a>
|
||||||
|
|
||||||
@@ -343,7 +343,7 @@ A Client-bearing activation needs a browser page, and may require a user decisio
|
|||||||
'cordis/request-run'(request: DynamicCordisRunRequest): void
|
'cordis/request-run'(request: DynamicCordisRunRequest): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:367`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:367`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
|
|
||||||
<a id="cordisrequest-run-resolved--emit"></a>
|
<a id="cordisrequest-run-resolved--emit"></a>
|
||||||
|
|
||||||
@@ -360,5 +360,5 @@ A pending Client activation request left the answerable state.
|
|||||||
'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void
|
'cordis/request-run-resolved'(resolved: DynamicCordisRequestResolved): void
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/self-modification/cordis-host-runner/src/types.ts:373`](../../packages/self-modification/cordis-host-runner/src/types.ts)
|
Source: [`packages/extensions/cordis-host-runner/src/types.ts:373`](../../packages/extensions/cordis-host-runner/src/types.ts)
|
||||||
<!-- END GENERATED cordis-surface -->
|
<!-- END GENERATED cordis-surface -->
|
||||||
@@ -51,7 +51,7 @@ describe.skipIf(!requiredArtifacts)('Goal Remote built LIB chain', () => {
|
|||||||
const { Context } = cordis
|
const { Context } = cordis
|
||||||
const { default: AgentRegistry } = await import(urls.agent)
|
const { default: AgentRegistry } = await import(urls.agent)
|
||||||
const connectionHost = await import(urls.connectionHost)
|
const connectionHost = await import(urls.connectionHost)
|
||||||
const { default: TypertGatewayService } = await import(urls.apiGatewayHost)
|
const { default: TypertRemoteService } = await import(urls.apiGatewayHost)
|
||||||
const { default: GoalService } = await import(urls.goal)
|
const { default: GoalService } = await import(urls.goal)
|
||||||
const { TYPERT } = await import(urls.goalTypert)
|
const { TYPERT } = await import(urls.goalTypert)
|
||||||
const { default: TypertRegistry } = await import(urls.registryHost)
|
const { default: TypertRegistry } = await import(urls.registryHost)
|
||||||
@@ -70,7 +70,7 @@ describe.skipIf(!requiredArtifacts)('Goal Remote built LIB chain', () => {
|
|||||||
await host.plugin({ inject: connectionHost.inject, apply: connectionHost.apply })
|
await host.plugin({ inject: connectionHost.inject, apply: connectionHost.apply })
|
||||||
await host.plugin(TypertRegistry)
|
await host.plugin(TypertRegistry)
|
||||||
await host.plugin(AgentRegistry)
|
await host.plugin(AgentRegistry)
|
||||||
await host.plugin(TypertGatewayService)
|
await host.plugin(TypertRemoteService)
|
||||||
await host.plugin(GoalService)
|
await host.plugin(GoalService)
|
||||||
host.typert.register(TYPERT)
|
host.typert.register(TYPERT)
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../self-modification/cordis-host-runner"
|
"path": "../../extensions/cordis-host-runner"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../goal/goal"
|
"path": "../../goal/goal"
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
"path": "../../session/session-persistence"
|
"path": "../../session/session-persistence"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../self-modification/cordis-host-runner"
|
"path": "../../extensions/cordis-host-runner"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../settings/settings"
|
"path": "../../settings/settings"
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
* carry extra machinery: `slots`, where the register proxy assigns the
|
* carry extra machinery: `slots`, where the register proxy assigns the
|
||||||
* shadowing priority and ledgers the registration — invoking the service with
|
* shadowing priority and ledgers the registration — invoking the service with
|
||||||
* the traced receiver so the effect lands on the CALLING plugin's fiber
|
* the traced receiver so the effect lands on the CALLING plugin's fiber
|
||||||
* (SlotsService.register must stay a prototype method for exactly that
|
* (SlotRegistry.register must stay a prototype method for exactly that
|
||||||
* reason) — and `theme`, whose override source is pinned to the package id.
|
* reason) — and `theme`, whose override source is pinned to the package id.
|
||||||
*
|
*
|
||||||
* This is API discipline, not a security boundary: a dynamic package's code is
|
* This is API discipline, not a security boundary: a dynamic package's code is
|
||||||
@@ -15,8 +15,8 @@
|
|||||||
|
|
||||||
import { Context } from '@deepseek-ai/cordis'
|
import { Context } from '@deepseek-ai/cordis'
|
||||||
import type { DynamicCordisPackage } from '@deepseek-ai/dsh-api-remotes/client'
|
import type { DynamicCordisPackage } from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import type { ThemeService } from '@deepseek-ai/dsh-client-ui-theme/client'
|
import type { ThemeRuntime } from '@deepseek-ai/dsh-client-ui-theme/client'
|
||||||
|
|
||||||
/** Facade verbs beyond declared services (host CTX_VERBS twin). */
|
/** Facade verbs beyond declared services (host CTX_VERBS twin). */
|
||||||
const CTX_VERBS = new Set([
|
const CTX_VERBS = new Set([
|
||||||
@@ -93,7 +93,7 @@ interface ErasedSlotOptions {
|
|||||||
* The slots seat: automatic shadowing priority and ledger recording around the
|
* The slots seat: automatic shadowing priority and ledger recording around the
|
||||||
* traced service's own register.
|
* traced service's own register.
|
||||||
*/
|
*/
|
||||||
function guardedSlots(slots: SlotsService, env: DynamicCordisGuardEnv): unknown {
|
function guardedSlots(slots: SlotRegistry, env: DynamicCordisGuardEnv): unknown {
|
||||||
return new Proxy(slots, {
|
return new Proxy(slots, {
|
||||||
get(target, prop) {
|
get(target, prop) {
|
||||||
const value = Reflect.get(target, prop, target) as unknown
|
const value = Reflect.get(target, prop, target) as unknown
|
||||||
@@ -145,7 +145,7 @@ function guardedSlots(slots: SlotsService, env: DynamicCordisGuardEnv): unknown
|
|||||||
* keep the returned handle (slots parity — register hangs its own cleanup).
|
* keep the returned handle (slots parity — register hangs its own cleanup).
|
||||||
* Everything else forwards through the generic guard.
|
* Everything else forwards through the generic guard.
|
||||||
*/
|
*/
|
||||||
function guardedTheme(theme: ThemeService, env: DynamicCordisGuardEnv, ctx: Context): unknown {
|
function guardedTheme(theme: ThemeRuntime, env: DynamicCordisGuardEnv, ctx: Context): unknown {
|
||||||
return new Proxy(theme, {
|
return new Proxy(theme, {
|
||||||
get(target, prop) {
|
get(target, prop) {
|
||||||
if (prop !== 'overrideTokens') {
|
if (prop !== 'overrideTokens') {
|
||||||
@@ -205,8 +205,8 @@ export function dynamicCordisContext(ctx: Context, env: DynamicCordisGuardEnv):
|
|||||||
if (requireDeclaration && !declared.has(name)) return denyRead(name)
|
if (requireDeclaration && !declared.has(name)) return denyRead(name)
|
||||||
const service = denyContext(ctx.get(name), name, env)
|
const service = denyContext(ctx.get(name), name, env)
|
||||||
if (service === null || (typeof service !== 'object' && typeof service !== 'function')) return service
|
if (service === null || (typeof service !== 'object' && typeof service !== 'function')) return service
|
||||||
if (name === 'slots') return guardedSlots(service as SlotsService, env)
|
if (name === 'slots') return guardedSlots(service as SlotRegistry, env)
|
||||||
if (name === 'theme') return guardedTheme(service as ThemeService, env, ctx)
|
if (name === 'theme') return guardedTheme(service as ThemeRuntime, env, ctx)
|
||||||
return guardedService(service, name, env)
|
return guardedService(service, name, env)
|
||||||
}
|
}
|
||||||
return new Proxy({}, {
|
return new Proxy({}, {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import type {
|
|||||||
DynamicCordisInventoryRow,
|
DynamicCordisInventoryRow,
|
||||||
} from '@deepseek-ai/dsh-api-remotes/client'
|
} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
||||||
import type { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
// The Client Remote assembly is the one place the two planes meet: it mounts the
|
// The Client Remote assembly is the one place the two planes meet: it mounts the
|
||||||
// `dynamicCordisRunner` namespace and re-exports its payload vocabulary, so this
|
// `dynamicCordisRunner` namespace and re-exports its payload vocabulary, so this
|
||||||
// package names what it sends without importing a Host package.
|
// package names what it sends without importing a Host package.
|
||||||
@@ -206,7 +206,7 @@ export function apply(ctx: Context): void {
|
|||||||
ctx,
|
ctx,
|
||||||
loader: ctx.loader,
|
loader: ctx.loader,
|
||||||
modules: ctx.get('modules') as ClientModuleSystem,
|
modules: ctx.get('modules') as ClientModuleSystem,
|
||||||
slots: ctx.get('slots') as SlotsService,
|
slots: ctx.get('slots') as SlotRegistry,
|
||||||
invoke: async (pluginId, pluginRunId, method, args) => {
|
invoke: async (pluginId, pluginRunId, method, args) => {
|
||||||
// Model-authored arguments reach this boundary untyped; the namespace's
|
// Model-authored arguments reach this boundary untyped; the namespace's
|
||||||
// generated codec is what validates them as JSON, and its rejection is a
|
// generated codec is what validates them as JSON, and its rejection is a
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import type { Context } from '@deepseek-ai/cordis'
|
import type { Context } from '@deepseek-ai/cordis'
|
||||||
import type { JsonValue } from '@deepseek-ai/dsh-api-remotes/client'
|
import type { JsonValue } from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import type {} from '@deepseek-ai/dsh-client-ui-theme/client'
|
import type {} from '@deepseek-ai/dsh-client-ui-theme/client'
|
||||||
import { queryEventApi, queryServiceApi } from './api-catalog.ts'
|
import { queryEventApi, queryServiceApi } from './api-catalog.ts'
|
||||||
import type { ClientCordisInspectProviderRegistration } from './inspect-registry.ts'
|
import type { ClientCordisInspectProviderRegistration } from './inspect-registry.ts'
|
||||||
@@ -169,7 +169,7 @@ function readExact(input: JsonValue | undefined, field: string): string | undefi
|
|||||||
}
|
}
|
||||||
/* jscpd:ignore-end */
|
/* jscpd:ignore-end */
|
||||||
|
|
||||||
type LiveSlotNode = ReturnType<SlotsService['snapshot']>[number]
|
type LiveSlotNode = ReturnType<SlotRegistry['snapshot']>[number]
|
||||||
|
|
||||||
const SLOT_CATALOG = new Map(CLIENT_SLOT_API.map(entry => [entry.key, entry]))
|
const SLOT_CATALOG = new Map(CLIENT_SLOT_API.map(entry => [entry.key, entry]))
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import type {
|
|||||||
} from '@deepseek-ai/dsh-api-remotes/client'
|
} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-client-connection/client'
|
import type { SessionId } from '@deepseek-ai/dsh-client-connection/client'
|
||||||
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
||||||
import type { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import type { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import { DynamicCordisStyles, evaluateClientHalf, DYNAMIC_CLIENT_REDIRECTS } from './evaluator.ts'
|
import { DynamicCordisStyles, evaluateClientHalf, DYNAMIC_CLIENT_REDIRECTS } from './evaluator.ts'
|
||||||
import type { DynamicCordisEvaluatedPlugin } from './evaluator.ts'
|
import type { DynamicCordisEvaluatedPlugin } from './evaluator.ts'
|
||||||
import { dynamicCordisContext } from './guard.ts'
|
import { dynamicCordisContext } from './guard.ts'
|
||||||
@@ -121,7 +121,7 @@ export interface DynamicCordisRunnerEnv {
|
|||||||
/** Module table, for factory invalidation before every (re-)registration. */
|
/** Module table, for factory invalidation before every (re-)registration. */
|
||||||
modules: ClientModuleSystem
|
modules: ClientModuleSystem
|
||||||
/** Slot registry, for the entry-crash supervision seam. */
|
/** Slot registry, for the entry-crash supervision seam. */
|
||||||
slots: SlotsService
|
slots: SlotRegistry
|
||||||
/** Route one `host.call` to the package's host half through the Remote namespace. */
|
/** Route one `host.call` to the package's host half through the Remote namespace. */
|
||||||
invoke(
|
invoke(
|
||||||
pluginId: CordisDynamicPluginId,
|
pluginId: CordisDynamicPluginId,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import type {
|
|||||||
CordisDynamicPluginRunId,
|
CordisDynamicPluginRunId,
|
||||||
DynamicCordisPackage,
|
DynamicCordisPackage,
|
||||||
} from '@deepseek-ai/dsh-api-remotes/client'
|
} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import { dynamicCordisContext } from '../src/client/guard.ts'
|
import { dynamicCordisContext } from '../src/client/guard.ts'
|
||||||
import type { DynamicCordisSlotLedgerRow } from '../src/client/guard.ts'
|
import type { DynamicCordisSlotLedgerRow } from '../src/client/guard.ts'
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ type Facade = Record<string, unknown> & { get(name: string): unknown }
|
|||||||
|
|
||||||
interface Bench {
|
interface Bench {
|
||||||
ctx: Context
|
ctx: Context
|
||||||
slots: SlotsService
|
slots: SlotRegistry
|
||||||
facade: Facade
|
facade: Facade
|
||||||
ledger: DynamicCordisSlotLedgerRow[]
|
ledger: DynamicCordisSlotLedgerRow[]
|
||||||
/** Components the facade claimed for the package, in registration order. */
|
/** Components the facade claimed for the package, in registration order. */
|
||||||
@@ -53,7 +53,7 @@ interface Bench {
|
|||||||
*/
|
*/
|
||||||
async function boot(inject: string[], extras: Record<string, unknown> = {}): Promise<Bench> {
|
async function boot(inject: string[], extras: Record<string, unknown> = {}): Promise<Bench> {
|
||||||
const ctx = new Context()
|
const ctx = new Context()
|
||||||
await ctx.plugin(SlotsService)
|
await ctx.plugin(SlotRegistry)
|
||||||
const themeLayerDispose = vi.fn()
|
const themeLayerDispose = vi.fn()
|
||||||
const overrideTokens = vi.fn(() => themeLayerDispose)
|
const overrideTokens = vi.fn(() => themeLayerDispose)
|
||||||
ctx.reflect.provide('theme', {
|
ctx.reflect.provide('theme', {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import type { SessionId } from '@deepseek-ai/dsh-client-connection/client'
|
|||||||
import type { DynamicCordisInvokeResult } from '@deepseek-ai/dsh-api-remotes/client'
|
import type { DynamicCordisInvokeResult } from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
// Type-only: resolves `ctx.remote` and with it the `$on`/`$dispatch` surface.
|
// Type-only: resolves `ctx.remote` and with it the `$on`/`$dispatch` surface.
|
||||||
import type {} from '@deepseek-ai/dsh-api-gateway/client'
|
import type {} from '@deepseek-ai/dsh-api-gateway/client'
|
||||||
import { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import * as NodeHalf from '../src/index.ts'
|
import * as NodeHalf from '../src/index.ts'
|
||||||
import * as Invariant from '../src/invariant.ts'
|
import * as Invariant from '../src/invariant.ts'
|
||||||
import * as ClientHalf from '../src/client/index.ts'
|
import * as ClientHalf from '../src/client/index.ts'
|
||||||
@@ -80,7 +80,7 @@ interface Bench {
|
|||||||
/** Mount the browser half over a module table and a loader standing on real fibers. */
|
/** Mount the browser half over a module table and a loader standing on real fibers. */
|
||||||
async function boot(): Promise<Bench> {
|
async function boot(): Promise<Bench> {
|
||||||
const ctx = new Context()
|
const ctx = new Context()
|
||||||
await ctx.plugin(SlotsService)
|
await ctx.plugin(SlotRegistry)
|
||||||
const factories = new Map<string, () => unknown>()
|
const factories = new Map<string, () => unknown>()
|
||||||
const fibers = new Map<string, { fiber: unknown }>()
|
const fibers = new Map<string, { fiber: unknown }>()
|
||||||
let next = 0
|
let next = 0
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import type {
|
|||||||
} from '@deepseek-ai/dsh-api-remotes/client'
|
} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { SessionId } from '@deepseek-ai/dsh-client-connection/client'
|
import type { SessionId } from '@deepseek-ai/dsh-client-connection/client'
|
||||||
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
import type { ClientModuleSystem } from '@deepseek-ai/dsh-client-modules/client'
|
||||||
import { SlotsService } from '@deepseek-ai/dsh-client-runtime/client'
|
import { SlotRegistry } from '@deepseek-ai/dsh-client-runtime/client'
|
||||||
import { DYNAMIC_CLIENT_REDIRECTS } from '../src/client/evaluator.ts'
|
import { DYNAMIC_CLIENT_REDIRECTS } from '../src/client/evaluator.ts'
|
||||||
import { DynamicCordisPackageRunner } from '../src/client/runtime.ts'
|
import { DynamicCordisPackageRunner } from '../src/client/runtime.ts'
|
||||||
import type { DynamicCordisClientHalf, DynamicCordisRenderFailure } from '../src/client/runtime.ts'
|
import type { DynamicCordisClientHalf, DynamicCordisRenderFailure } from '../src/client/runtime.ts'
|
||||||
@@ -48,7 +48,7 @@ function half(overrides: Partial<DynamicCordisClientHalf> = {}): DynamicCordisCl
|
|||||||
|
|
||||||
interface Bench {
|
interface Bench {
|
||||||
ctx: Context
|
ctx: Context
|
||||||
slots: SlotsService
|
slots: SlotRegistry
|
||||||
runner: DynamicCordisPackageRunner
|
runner: DynamicCordisPackageRunner
|
||||||
invalidated: string[]
|
invalidated: string[]
|
||||||
removed: string[]
|
removed: string[]
|
||||||
@@ -83,7 +83,7 @@ function seated<T>(fiber: T): T {
|
|||||||
|
|
||||||
async function boot(): Promise<Bench> {
|
async function boot(): Promise<Bench> {
|
||||||
const ctx = new Context()
|
const ctx = new Context()
|
||||||
await ctx.plugin(SlotsService)
|
await ctx.plugin(SlotRegistry)
|
||||||
const invalidated: string[] = []
|
const invalidated: string[] = []
|
||||||
const removed: string[] = []
|
const removed: string[] = []
|
||||||
const created: string[] = []
|
const created: string[] = []
|
||||||
@@ -128,7 +128,7 @@ async function boot(): Promise<Bench> {
|
|||||||
listener = fn
|
listener = fn
|
||||||
return () => { listener = undefined }
|
return () => { listener = undefined }
|
||||||
},
|
},
|
||||||
} as unknown as SlotsService,
|
} as unknown as SlotRegistry,
|
||||||
invoke,
|
invoke,
|
||||||
reportGuardFailure: () => {},
|
reportGuardFailure: () => {},
|
||||||
reportRenderFailure: (agentId, pluginId, pluginRunId, failure) => {
|
reportRenderFailure: (agentId, pluginId, pluginRunId, failure) => {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
"path": "../../client/ui-theme"
|
"path": "../../client/ui-theme"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../support/invariants"
|
"path": "../../runtime-diagnostics/invariants"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
"@deepseek-ai/dsh-scope": "workspace:^",
|
"@deepseek-ai/dsh-scope": "workspace:^",
|
||||||
"@deepseek-ai/dsh-session": "workspace:^",
|
"@deepseek-ai/dsh-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-tools": "workspace:^",
|
"@deepseek-ai/dsh-tools": "workspace:^",
|
||||||
"@deepseek-ai/dsh-type-meta": "workspace:^"
|
"@deepseek-ai/dsh-typert-protocol": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@deepseek-ai/cordis": "workspace:^",
|
"@deepseek-ai/cordis": "workspace:^",
|
||||||
@@ -73,6 +73,6 @@
|
|||||||
"@deepseek-ai/dsh-scope": "workspace:^",
|
"@deepseek-ai/dsh-scope": "workspace:^",
|
||||||
"@deepseek-ai/dsh-session": "workspace:^",
|
"@deepseek-ai/dsh-session": "workspace:^",
|
||||||
"@deepseek-ai/dsh-tools": "workspace:^",
|
"@deepseek-ai/dsh-tools": "workspace:^",
|
||||||
"@deepseek-ai/dsh-type-meta": "workspace:^"
|
"@deepseek-ai/dsh-typert-protocol": "workspace:^"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -10,7 +10,7 @@ import z from '@deepseek-ai/schemastery'
|
|||||||
import type { Agent } from '@deepseek-ai/dsh-agent'
|
import type { Agent } from '@deepseek-ai/dsh-agent'
|
||||||
import { createUserMessage } from '@deepseek-ai/dsh-llm'
|
import { createUserMessage } from '@deepseek-ai/dsh-llm'
|
||||||
import type { JsonValue } from '@deepseek-ai/dsh-session/types'
|
import type { JsonValue } from '@deepseek-ai/dsh-session/types'
|
||||||
import { GatewayService, Remote } from '@deepseek-ai/dsh-type-meta'
|
import { TypertRemoteService, Remote } from '@deepseek-ai/dsh-typert-protocol'
|
||||||
import { isPlugin, normalizeHandler } from './guard.ts'
|
import { isPlugin, normalizeHandler } from './guard.ts'
|
||||||
import { CordisInspectRegistryService } from './inspect-registry.ts'
|
import { CordisInspectRegistryService } from './inspect-registry.ts'
|
||||||
import { missingServices, startHostHalf } from './lifecycle.ts'
|
import { missingServices, startHostHalf } from './lifecycle.ts'
|
||||||
@@ -121,7 +121,7 @@ interface ActivationPlan {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Dynamic Plugin registry and Host-half lifecycle. */
|
/** Dynamic Plugin registry and Host-half lifecycle. */
|
||||||
export class DynamicCordisRunnerService extends GatewayService {
|
export class DynamicCordisRunnerService extends TypertRemoteService {
|
||||||
static inject = ['tools']
|
static inject = ['tools']
|
||||||
|
|
||||||
static Config: z<Config> = z.object({
|
static Config: z<Config> = z.object({
|
||||||
|
|||||||
@@ -39,10 +39,10 @@
|
|||||||
"path": "../../llm/llm"
|
"path": "../../llm/llm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../support/invariants"
|
"path": "../../runtime-diagnostics/invariants"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../typert/type-meta"
|
"path": "../../typert/protocol"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -39,7 +39,7 @@
|
|||||||
"path": "../cordis-host-runner"
|
"path": "../cordis-host-runner"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../support/invariants"
|
"path": "../../runtime-diagnostics/invariants"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"@deepseek-ai/dsh-cordis-client-runner",
|
"@deepseek-ai/dsh-cordis-client-runner",
|
||||||
"@deepseek-ai/dsh-api-remotes",
|
"@deepseek-ai/dsh-api-remotes",
|
||||||
"@deepseek-ai/dsh-client-locale",
|
"@deepseek-ai/dsh-client-locale",
|
||||||
"@deepseek-ai/dsh-client-ui-slash",
|
"@deepseek-ai/dsh-client-ui-input-trigger",
|
||||||
"@deepseek-ai/dsh-client-ui-tool",
|
"@deepseek-ai/dsh-client-ui-tool",
|
||||||
"@deepseek-ai/dsh-client-ui-sidebar"
|
"@deepseek-ai/dsh-client-ui-sidebar"
|
||||||
],
|
],
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slash": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-input-trigger": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-tool": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-tool": "workspace:^",
|
||||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
"@deepseek-ai/dsh-client-runtime": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-primitives": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-sidebar": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slash": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-input-trigger": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-slots": "workspace:^",
|
||||||
"@deepseek-ai/dsh-client-ui-tool": "workspace:^",
|
"@deepseek-ai/dsh-client-ui-tool": "workspace:^",
|
||||||
"@deepseek-ai/dsh-invariants": "workspace:^",
|
"@deepseek-ai/dsh-invariants": "workspace:^",
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import type {} from '@deepseek-ai/dsh-client-ui-tool/client'
|
|||||||
import type {} from '@deepseek-ai/dsh-client-locale/client'
|
import type {} from '@deepseek-ai/dsh-client-locale/client'
|
||||||
import type {} from '@deepseek-ai/dsh-client-ui-sidebar/client'
|
import type {} from '@deepseek-ai/dsh-client-ui-sidebar/client'
|
||||||
import type {} from '@deepseek-ai/dsh-api-remotes/client'
|
import type {} from '@deepseek-ai/dsh-api-remotes/client'
|
||||||
import type { SlashServiceContract, SlashSource } from '@deepseek-ai/dsh-client-ui-slash/client'
|
import type { InputTriggerService, InputTriggerSource } from '@deepseek-ai/dsh-client-ui-input-trigger/client'
|
||||||
import type {} from './events.ts'
|
import type {} from './events.ts'
|
||||||
import { CordisDefineRow } from './CordisDefineRow.tsx'
|
import { CordisDefineRow } from './CordisDefineRow.tsx'
|
||||||
import { CordisRunRow } from './CordisRunRow.tsx'
|
import { CordisRunRow } from './CordisRunRow.tsx'
|
||||||
@@ -133,7 +133,7 @@ export function apply(ctx: ClientContext): void {
|
|||||||
|
|
||||||
const rowsOf = (sessionId: SessionId, query: string) => inventory.getSnapshot().rows
|
const rowsOf = (sessionId: SessionId, query: string) => inventory.getSnapshot().rows
|
||||||
.filter(row => row.agentId === sessionId && String(row.pluginId).includes(query))
|
.filter(row => row.agentId === sessionId && String(row.pluginId).includes(query))
|
||||||
const source: SlashSource = {
|
const source: InputTriggerSource = {
|
||||||
trigger: '@',
|
trigger: '@',
|
||||||
name: 'cordis',
|
name: 'cordis',
|
||||||
order: 1,
|
order: 1,
|
||||||
@@ -153,7 +153,7 @@ export function apply(ctx: ClientContext): void {
|
|||||||
subscribeLexicon(_session, listener) { return inventory.subscribe(listener) },
|
subscribeLexicon(_session, listener) { return inventory.subscribe(listener) },
|
||||||
onPick({ candidate }) { return { text: `@${candidate.name} ` } },
|
onPick({ candidate }) { return { text: `@${candidate.name} ` } },
|
||||||
}
|
}
|
||||||
const slash = ctx.get('slash') as SlashServiceContract
|
const slash = ctx.get('slash') as InputTriggerService
|
||||||
ctx.effect(() => slash.registerSource(source), 'ui-cordis: @pluginId source')
|
ctx.effect(() => slash.registerSource(source), 'ui-cordis: @pluginId source')
|
||||||
|
|
||||||
inventory.refresh()
|
inventory.refresh()
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
"path": "../../client/ui-sidebar"
|
"path": "../../client/ui-sidebar"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../client/ui-slash"
|
"path": "../../client/ui-input-trigger"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../client/ui-primitives"
|
"path": "../../client/ui-primitives"
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
"path": "../../client/ui-tool"
|
"path": "../../client/ui-tool"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "../../support/invariants"
|
"path": "../../runtime-diagnostics/invariants"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Generated
+1428
-1287
File diff suppressed because it is too large
Load Diff
@@ -63,10 +63,10 @@ export const SERVICE_PAGE: Record<string, string> = {
|
|||||||
codeRuntime: 'code-runtime.md',
|
codeRuntime: 'code-runtime.md',
|
||||||
commands: 'commands.md',
|
commands: 'commands.md',
|
||||||
compaction: 'compaction.md',
|
compaction: 'compaction.md',
|
||||||
cordisInspect: 'self-modification.md',
|
cordisInspect: 'extensions.md',
|
||||||
credentials: 'credentials.md',
|
credentials: 'credentials.md',
|
||||||
directoryPicker: 'workspace.md',
|
directoryPicker: 'workspace.md',
|
||||||
dynamicCordisRunner: 'self-modification.md',
|
dynamicCordisRunner: 'extensions.md',
|
||||||
e2b: 'subprocess.md',
|
e2b: 'subprocess.md',
|
||||||
fs: 'filesystem.md',
|
fs: 'filesystem.md',
|
||||||
goals: 'goal.md',
|
goals: 'goal.md',
|
||||||
@@ -134,8 +134,7 @@ export const SERVICE_WALK_EXEMPTIONS: Record<string, string> = {
|
|||||||
launcherSessionQueryPath: 'not a service: launcher-provided boot-context value (string | undefined) — packages/session-query/session-query-sqlite/README.md owns this launcher contract',
|
launcherSessionQueryPath: 'not a service: launcher-provided boot-context value (string | undefined) — packages/session-query/session-query-sqlite/README.md owns this launcher contract',
|
||||||
dshHomePath: 'not a service: boot-provided root accessor function (typeof dshHomePath | undefined) for Loader !!js config expressions — packages/boot/app-boot/README.md owns the boot contract',
|
dshHomePath: 'not a service: boot-provided root accessor function (typeof dshHomePath | undefined) for Loader !!js config expressions — packages/boot/app-boot/README.md owns the boot contract',
|
||||||
launchEnvironment: 'not a service: launcher-provided root accessor value (LaunchEnvironmentSnapshot | undefined) — packages/util/launch-environment/README.md owns this launcher contract',
|
launchEnvironment: 'not a service: launcher-provided root accessor value (LaunchEnvironmentSnapshot | undefined) — packages/util/launch-environment/README.md owns this launcher contract',
|
||||||
lsp: 'interface-typed (LspService); implementing class Lsp is not the declared type name — packages/lsp/lsp/README.md owns the API',
|
connection: 'interface-typed (HostConnectionHandle); implementing class HostConnectionService is declared in rpc-host.ts — packages/client/connection/README.md owns the API',
|
||||||
apiProxy: 'interface-typed (ApiProxy) with the class in api-proxy.ts, not index.ts — packages/host/apiproxy/README.md owns the API',
|
|
||||||
appShell: 'client-side interface-typed browser service — packages/client/web/README.md owns the API',
|
appShell: 'client-side interface-typed browser service — packages/client/web/README.md owns the API',
|
||||||
settingsScope: 'client-side settings-namespace transport service — packages/client/ui-settings/README.md owns the API',
|
settingsScope: 'client-side settings-namespace transport service — packages/client/ui-settings/README.md owns the API',
|
||||||
chatFileMentions: 'client-side slot-contract accessor (ChatFileMentions) — packages/client/ui-conversation/README.md owns the API',
|
chatFileMentions: 'client-side slot-contract accessor (ChatFileMentions) — packages/client/ui-conversation/README.md owns the API',
|
||||||
@@ -169,7 +168,7 @@ export const EVENT_SCOPE_PAGE: Record<string, string> = {
|
|||||||
'agent-preset': 'core.md',
|
'agent-preset': 'core.md',
|
||||||
'approval': 'approval.md',
|
'approval': 'approval.md',
|
||||||
'commands': 'commands.md',
|
'commands': 'commands.md',
|
||||||
'cordis': 'self-modification.md',
|
'cordis': 'extensions.md',
|
||||||
'credentials': 'credentials.md',
|
'credentials': 'credentials.md',
|
||||||
'domain': 'storage.md',
|
'domain': 'storage.md',
|
||||||
'fs': 'filesystem.md',
|
'fs': 'filesystem.md',
|
||||||
|
|||||||
Reference in New Issue
Block a user