@chatcode/chatcode-cli 3.0.4-rc.1 → 3.0.4-rc.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.
- package/README.i18n.yaml +2 -2
- package/README.md +2 -0
- package/README.zh.md +2 -0
- package/lib/{command-errors-BkCHTQHj.js → command-errors-BJ_ZWzUU.js} +12 -12
- package/lib/{command-trees-5HFyC5sI.js → command-trees-C9b7-bci.js} +2 -2
- package/lib/{component-identity-De91VHwW.js → component-identity-Jb1DYjke.js} +3 -3
- package/lib/{dist-CsDWUvQ4.js → dist-w_sIm4VD.js} +231 -231
- package/lib/{extension-events-CdYCRP0o.js → extension-events-DKX4LXOd.js} +26 -26
- package/lib/{frames-DOX-Jgk8.js → frames-B89znn_0.js} +4 -4
- package/lib/{host-access-Bk4xps5E.js → host-access-CMg6rsWt.js} +1 -1
- package/lib/{keymap-CJ1kvLR2.js → keymap-CrC4pSNH.js} +2 -2
- package/lib/{plugin-XR7ncbnW.js → plugin-CmyMCGfb.js} +1651 -1365
- package/lib/{scenes-CAmWncZD.js → scenes-Cil9RnwU.js} +3 -3
- package/lib/{settings-sections-CakcvBv9.js → settings-sections-jVCqXwdH.js} +3 -3
- package/lib/{statusBarSettings-BPPS_Usm.js → statusBarSettings-DNoBH3Cq.js} +3 -3
- package/lib/{supports-color-DyChQwlI.js → supports-color-CcW-FGjr.js} +2 -2
- package/lib/{themes-OjcUpZzw.js → themes-BdgeY3It.js} +12 -12
- package/lib/tui-compat-command-trees.js +1 -1
- package/lib/tui-compat-extensions.js +3 -3
- package/lib/tui-compat-plugin-host.js +5 -5
- package/lib/tui-compat-scenes.js +1 -1
- package/lib/tui-compat-settings-sections.js +1 -1
- package/lib/tui-compat-working-activity.js +4 -4
- package/lib/tui-compat-workspaces.js +1 -1
- package/lib/tui-compat.js +5 -5
- package/lib/{workspaces-XY7UdfXp.js → workspaces-DOatJRYr.js} +2 -2
- package/package.json +30 -29
- package/runtime/manifest.json +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/index.js +118 -22
- package/runtime/node_modules/@deepseek-ai/dsh-agent-default-model/lib/types/index.d.ts +20 -3
- package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/client.js +113 -39
- package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/index.js +4 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/remote-events.d.ts +3 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-remotes/lib/types/remote-events.js +1 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/index.js +173 -34
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.host.js +48 -28
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/typert.remote-client.js +24 -19
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/agent.d.ts +9 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/agent.js +36 -6
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/archived-session-gate.js +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/catalog.js +4 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/client/sessions/service.d.ts +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/commands.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/commands.js +24 -8
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/index.d.ts +4 -3
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/index.js +31 -14
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/list.d.ts +6 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/list.js +89 -4
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/remote-events.d.ts +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-session-controller/lib/types/types.d.ts +18 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/client.js +30 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/index.js +83 -2
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.host.js +104 -11
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.remote-client.d.ts +5 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/typert.remote-client.js +78 -11
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/model.d.ts +14 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/model.js +17 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/service.d.ts +15 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/client/service.js +12 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/commands.d.ts +13 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/commands.js +44 -2
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/index.d.ts +13 -1
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/index.js +22 -0
- package/runtime/node_modules/@deepseek-ai/dsh-api-workspace-controller/lib/types/types.d.ts +17 -0
- package/runtime/node_modules/@deepseek-ai/dsh-app-boot/lib/index.js +2 -1
- package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/index.js +167 -44
- package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/index.d.ts +14 -6
- package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/linux-lock.d.ts +18 -0
- package/runtime/node_modules/@deepseek-ai/dsh-atomic-write/lib/types/windows-lock.d.ts +7 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/client.js +931 -7
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/index.js +57 -19
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/client/index.d.ts +5 -2
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/config.d.ts +12 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/events.d.ts +4 -4
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/lib/types/index.d.ts +3 -8
- package/runtime/node_modules/@deepseek-ai/dsh-client-hmr/package.json +6 -2
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-commands/lib/client.js +10 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-deliverables/lib/types/client/present-open.d.ts +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-model-selection/lib/client.js +8 -4
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-account/lib/client.js +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-settings-general/lib/client.js +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-sidebar/lib/client.js +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/client.js +1917 -206
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/ArchivedSessions.d.ts +13 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/contract/slots.d.ts +4 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/locales.d.ts +40 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/recent.d.ts +11 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/rows/RecentList.d.ts +15 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/rows/Rows.d.ts +6 -1
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/session-actions/DeleteSession.d.ts +24 -0
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/stores.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/lib/types/client/tree.d.ts +15 -13
- package/runtime/node_modules/@deepseek-ai/dsh-client-ui-workspace/package.json +3 -1
- package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/index.js +16 -0
- package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/typert.host.js +7 -3
- package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/typert.remote-client.js +6 -2
- package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/types/index.js +20 -0
- package/runtime/node_modules/@deepseek-ai/dsh-commands/lib/types/types.d.ts +5 -0
- package/runtime/node_modules/@deepseek-ai/dsh-cordis-client-runner/lib/client.js +5 -2
- package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/adapter.d.ts +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek/lib/types/config.d.ts +3 -3
- package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek-account/lib/types/config.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-llm-deepseek-api-key/lib/types/config.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/index.js +4 -0
- package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/typert.host.js +5 -5
- package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/typert.remote-client.js +5 -5
- package/runtime/node_modules/@deepseek-ai/dsh-schedule/lib/types/index.js +5 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session/lib/types/index.d.ts +21 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-persistence/lib/index.js +12 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-persistence/lib/types/index.d.ts +15 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/index.js +95 -2
- package/runtime/node_modules/@deepseek-ai/dsh-session-persistence-jsonl/lib/types/index.d.ts +3 -1
- package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/lib/index.js +25 -1
- package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/lib/types/index.d.ts +1 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-projection-cache/package.json +2 -1
- package/runtime/node_modules/@deepseek-ai/dsh-session-query/lib/index.js +13 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-query/lib/types/observation.d.ts +5 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-query-sqlite/lib/index.js +26 -0
- package/runtime/node_modules/@deepseek-ai/dsh-session-query-sqlite/package.json +2 -1
- package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/index.js +5 -1
- package/runtime/node_modules/@deepseek-ai/dsh-storage-domain/lib/types/domain.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-subagent/lib/types/control.d.ts +1 -1
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/index.js +106 -56
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/config.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/index.d.ts +2 -1
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/services/tianti/config.d.ts +4 -2
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/lib/types/tools.d.ts +2 -2
- package/runtime/node_modules/@deepseek-ai/dsh-tianti/package.json +2 -0
- package/runtime/node_modules/@deepseek-ai/dsh-tool-cordis/lib/types/api-catalog.js +104 -13
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/index.js +215 -4
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/invariant.js +6 -1
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.d.ts +31 -0
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/index.js +219 -2
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/spec.d.ts +4 -0
- package/runtime/node_modules/@deepseek-ai/dsh-workspace/lib/types/spec.js +4 -0
- package/scripts/launch.mjs +8 -0
|
@@ -121,15 +121,14 @@ function environmentSwitch(name) {
|
|
|
121
121
|
throw new Error(`${name} must be a boolean switch.`);
|
|
122
122
|
}
|
|
123
123
|
/** Get tianti runtime config for Tianti operations.
|
|
124
|
-
* @
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
const enabled = environmentSwitch("TIANTI_ENABLED") ?? settings?.enabled ?? runtime.config.enabled;
|
|
124
|
+
* @param runtime Mounted Tianti runtime; defaults to the current invocation.
|
|
125
|
+
* @returns The runtime's configured endpoints and effective integration switches. */
|
|
126
|
+
function getTiantiRuntimeConfig(runtime = operation().runtime) {
|
|
127
|
+
const enabled = environmentSwitch("TIANTI_ENABLED") ?? runtime.switches.enabled ?? runtime.config.enabled;
|
|
129
128
|
return {
|
|
130
129
|
enabled,
|
|
131
130
|
enableModelTools: enabled && runtime.config.enableModelTools,
|
|
132
|
-
enableWriteActions: environmentSwitch("TIANTI_WRITE_ACTIONS_ENABLED") ??
|
|
131
|
+
enableWriteActions: environmentSwitch("TIANTI_WRITE_ACTIONS_ENABLED") ?? runtime.switches.enableWriteActions ?? runtime.config.enableWriteActions,
|
|
133
132
|
environment: "prod",
|
|
134
133
|
baseUrl: runtime.config.baseUrl.replace(/\/+$/u, "")
|
|
135
134
|
};
|
|
@@ -2313,7 +2312,15 @@ async function handleList(flags) {
|
|
|
2313
2312
|
async function call$1(args) {
|
|
2314
2313
|
const parsed = parseArgs(args);
|
|
2315
2314
|
const [command, subCommand, third] = parsed.positionals;
|
|
2316
|
-
if (!command
|
|
2315
|
+
if (!command) return text$1([
|
|
2316
|
+
`天梯功能当前${getTiantiRuntimeConfig().enabled ? "已开启(on)" : "已关闭(off)"},默认关闭。`,
|
|
2317
|
+
"",
|
|
2318
|
+
" /tianti on 打开天梯功能",
|
|
2319
|
+
" /tianti off 关闭天梯功能",
|
|
2320
|
+
"",
|
|
2321
|
+
"开启后可使用天梯相关功能;运行 /tianti help 查看完整命令。"
|
|
2322
|
+
].join("\n"));
|
|
2323
|
+
if (command === "help" || command === "-h") return text$1(help$1());
|
|
2317
2324
|
if (command === "status") return handleStatus$1();
|
|
2318
2325
|
if (command === "on" || command === "enable") {
|
|
2319
2326
|
await updateTiantiSettings({
|
|
@@ -4922,7 +4929,7 @@ function getLatestRunMessage() {
|
|
|
4922
4929
|
return "没有找到本地研发流程记录。可以先运行 /tianti-deliver latest 或 /tianti-deliver workitem <id> --title <title>。";
|
|
4923
4930
|
}
|
|
4924
4931
|
function ensureTiantiEnabled() {
|
|
4925
|
-
if (!getTiantiRuntimeConfig().enabled) return "Tianti integration is off. Run /tianti on before using /tianti-deliver
|
|
4932
|
+
if (!getTiantiRuntimeConfig().enabled) return "Tianti integration is off. Run /tianti on before using /tianti-deliver.";
|
|
4926
4933
|
}
|
|
4927
4934
|
async function createAndSaveRun(workItem, scenario) {
|
|
4928
4935
|
return saveDevelopmentRun(createDevelopmentRun({
|
|
@@ -4931,8 +4938,6 @@ async function createAndSaveRun(workItem, scenario) {
|
|
|
4931
4938
|
}));
|
|
4932
4939
|
}
|
|
4933
4940
|
async function handleLatest(flags) {
|
|
4934
|
-
const disabled = ensureTiantiEnabled();
|
|
4935
|
-
if (disabled) return text(disabled);
|
|
4936
4941
|
const workItem = latestTaskToWorkItem(await createTiantiClient().getLatestDevelopmentTaskForCurrentUser({ includeDetail: true }));
|
|
4937
4942
|
if (!workItem) return text("没有读取到可交付的天梯开发任务。");
|
|
4938
4943
|
if (isCompletedWorkItemState(workItem.stateName)) return text(`最新开发任务 ${workItem.id} 当前状态为「${workItem.stateName}」,已完成任务不会进入研发交付流程。请指定一个新建或活动中的开发任务。`);
|
|
@@ -5182,6 +5187,8 @@ async function call(args) {
|
|
|
5182
5187
|
const parsed = parseArgs(args);
|
|
5183
5188
|
const [command] = parsed.positionals;
|
|
5184
5189
|
if (!command || command === "help" || command === "-h") return text(help());
|
|
5190
|
+
const disabled = ensureTiantiEnabled();
|
|
5191
|
+
if (disabled) return text(disabled);
|
|
5185
5192
|
if (command === "latest") return handleLatest(parsed.flags);
|
|
5186
5193
|
if (command === "workitem" || command === "task") return handleWorkItem(parsed);
|
|
5187
5194
|
if (command === "status") return handleStatus(void 0, parsed.positionals[1] ?? taskIdFlag(parsed));
|
|
@@ -5218,7 +5225,7 @@ async function call(args) {
|
|
|
5218
5225
|
//#region lib/types/config.js
|
|
5219
5226
|
/** Deployment configuration for the Tianti integration. */
|
|
5220
5227
|
const Config = z.object({
|
|
5221
|
-
enabled: z.boolean().default(
|
|
5228
|
+
enabled: z.boolean().default(false),
|
|
5222
5229
|
enableWriteActions: z.boolean().default(false),
|
|
5223
5230
|
enableModelTools: z.boolean().default(true),
|
|
5224
5231
|
baseUrl: z.string().default("https://devops.chinaunicom.cn"),
|
|
@@ -5251,10 +5258,10 @@ const id = {
|
|
|
5251
5258
|
required: true,
|
|
5252
5259
|
description: "Tianti numeric id/globalId, rather than the internal Mongo _id."
|
|
5253
5260
|
};
|
|
5254
|
-
/** Install
|
|
5261
|
+
/** Install model tools for one enabled Tianti activation; its owner unregisters them on off.
|
|
5255
5262
|
* @param ctx Harness tool registry.
|
|
5256
5263
|
* @param runtime Plugin-owned endpoint and switch state.
|
|
5257
|
-
* @param signal
|
|
5264
|
+
* @param signal Cancellation for this activation, aborted on off or plugin disposal.
|
|
5258
5265
|
* @param track Track active work until plugin disposal settles.
|
|
5259
5266
|
* @returns Registration disposers, removed before active work is drained.
|
|
5260
5267
|
*/
|
|
@@ -5397,13 +5404,18 @@ function validateEndpoint(value) {
|
|
|
5397
5404
|
/** Register migrated commands without changing the agent loop or existing model providers.
|
|
5398
5405
|
* @param ctx Harness command and tool registries.
|
|
5399
5406
|
* @param config Deployment endpoints, switches, and timeouts.
|
|
5407
|
+
* @returns Startup after persisted switches and command descriptions are ready.
|
|
5400
5408
|
*/
|
|
5401
|
-
function apply(ctx, config) {
|
|
5409
|
+
async function apply(ctx, config) {
|
|
5402
5410
|
validateEndpoint(config.baseUrl);
|
|
5403
5411
|
validateEndpoint(config.cvpApiBaseUrl);
|
|
5404
5412
|
const runtime = new TiantiRuntime(ctx, config);
|
|
5413
|
+
await runtime.loadSwitches();
|
|
5405
5414
|
const lifetime = new AbortController();
|
|
5406
5415
|
const active = /* @__PURE__ */ new Set();
|
|
5416
|
+
const switchCommands = [];
|
|
5417
|
+
let disposeModelTools;
|
|
5418
|
+
let appliedState;
|
|
5407
5419
|
const track = (task) => {
|
|
5408
5420
|
active.add(task);
|
|
5409
5421
|
task.then(() => active.delete(task), () => active.delete(task));
|
|
@@ -5416,56 +5428,94 @@ function apply(ctx, config) {
|
|
|
5416
5428
|
cwd: invocation.agent.session.header.cwd ?? process.cwd()
|
|
5417
5429
|
}, async () => {
|
|
5418
5430
|
await runtime.loadSwitches();
|
|
5419
|
-
|
|
5420
|
-
|
|
5421
|
-
|
|
5422
|
-
|
|
5431
|
+
try {
|
|
5432
|
+
return {
|
|
5433
|
+
kind: "success",
|
|
5434
|
+
text: (await command(invocation.rawInput)).value
|
|
5435
|
+
};
|
|
5436
|
+
} finally {
|
|
5437
|
+
refreshIntegration();
|
|
5438
|
+
}
|
|
5423
5439
|
}));
|
|
5440
|
+
const disposeSwitchCommands = () => {
|
|
5441
|
+
for (const dispose of switchCommands.splice(0)) dispose();
|
|
5442
|
+
};
|
|
5443
|
+
const unloadModelTools = () => {
|
|
5444
|
+
const disposal = disposeModelTools?.();
|
|
5445
|
+
disposeModelTools = void 0;
|
|
5446
|
+
runtime.auth.clear();
|
|
5447
|
+
return disposal;
|
|
5448
|
+
};
|
|
5449
|
+
const refreshIntegration = () => {
|
|
5450
|
+
if (lifetime.signal.aborted) return;
|
|
5451
|
+
const enabled = getTiantiRuntimeConfig(runtime).enabled;
|
|
5452
|
+
if (enabled === appliedState) return;
|
|
5453
|
+
const state = enabled ? "on" : "off";
|
|
5454
|
+
unloadModelTools();
|
|
5455
|
+
if (enabled && config.enableModelTools) {
|
|
5456
|
+
const activation = new AbortController();
|
|
5457
|
+
const signal = AbortSignal.any([lifetime.signal, activation.signal]);
|
|
5458
|
+
disposeModelTools = ctx.effect(function* () {
|
|
5459
|
+
yield ctx.on("tools/pre-execute", async (exec, next) => {
|
|
5460
|
+
if (exec.name !== "TiantiProjectSwitch") return next();
|
|
5461
|
+
const decision = await next();
|
|
5462
|
+
if (decision.kind !== "allow") return decision;
|
|
5463
|
+
return {
|
|
5464
|
+
kind: "ask",
|
|
5465
|
+
reason: "Switch the shared Tianti project context.",
|
|
5466
|
+
displayReason: {
|
|
5467
|
+
en: "Switch the Tianti project?",
|
|
5468
|
+
zh: "切换当前天梯项目?"
|
|
5469
|
+
}
|
|
5470
|
+
};
|
|
5471
|
+
});
|
|
5472
|
+
yield* installTools(ctx, runtime, signal, track);
|
|
5473
|
+
yield () => {
|
|
5474
|
+
activation.abort();
|
|
5475
|
+
};
|
|
5476
|
+
}, "enabled tianti model tools");
|
|
5477
|
+
}
|
|
5478
|
+
disposeSwitchCommands();
|
|
5479
|
+
for (const name of ["tianti", "tt"]) switchCommands.push(ctx.commands.register({
|
|
5480
|
+
name,
|
|
5481
|
+
description: `天梯功能(当前:${state},默认关闭):on 打开,off 关闭${name === "tt" ? "(/tianti 的别名)" : ""}`,
|
|
5482
|
+
handler: handler(call$1),
|
|
5483
|
+
input: {
|
|
5484
|
+
hint: `当前:${state} | on 打开 | off 关闭(默认关闭)`,
|
|
5485
|
+
suggestions: [{
|
|
5486
|
+
value: "on",
|
|
5487
|
+
description: `打开天梯功能${enabled ? "(当前:on)" : ""}`
|
|
5488
|
+
}, {
|
|
5489
|
+
value: "off",
|
|
5490
|
+
description: `关闭天梯功能${enabled ? "" : "(当前:off)"}`
|
|
5491
|
+
}]
|
|
5492
|
+
}
|
|
5493
|
+
}));
|
|
5494
|
+
appliedState = enabled;
|
|
5495
|
+
};
|
|
5424
5496
|
ctx.effect(function* () {
|
|
5425
5497
|
yield async () => {
|
|
5426
5498
|
lifetime.abort();
|
|
5427
5499
|
await Promise.allSettled(active);
|
|
5428
5500
|
runtime.auth.clear();
|
|
5429
5501
|
};
|
|
5430
|
-
yield
|
|
5431
|
-
|
|
5432
|
-
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
|
|
5436
|
-
|
|
5437
|
-
displayReason: {
|
|
5438
|
-
en: "Switch the Tianti project?",
|
|
5439
|
-
zh: "切换当前天梯项目?"
|
|
5440
|
-
}
|
|
5441
|
-
};
|
|
5442
|
-
});
|
|
5443
|
-
for (const command of [
|
|
5444
|
-
{
|
|
5445
|
-
name: "tianti",
|
|
5446
|
-
description: "查询天梯任务、项目、SCM 和流水线,审核外部写操作",
|
|
5447
|
-
handler: handler(call$1)
|
|
5448
|
-
},
|
|
5449
|
-
{
|
|
5450
|
-
name: "tt",
|
|
5451
|
-
description: "天梯工具箱(/tianti 的别名)",
|
|
5452
|
-
handler: handler(call$1)
|
|
5453
|
-
},
|
|
5454
|
-
{
|
|
5455
|
-
name: "tianti-deliver",
|
|
5456
|
-
description: "引导天梯任务从需求、验证到研发交付",
|
|
5457
|
-
handler: handler(call)
|
|
5458
|
-
},
|
|
5459
|
-
{
|
|
5460
|
-
name: "td",
|
|
5461
|
-
description: "天梯研发交付(/tianti-deliver 的别名)",
|
|
5462
|
-
handler: handler(call)
|
|
5463
|
-
}
|
|
5464
|
-
]) yield ctx.commands.register({
|
|
5465
|
-
...command,
|
|
5502
|
+
yield disposeSwitchCommands;
|
|
5503
|
+
yield unloadModelTools;
|
|
5504
|
+
refreshIntegration();
|
|
5505
|
+
for (const command of [{
|
|
5506
|
+
name: "tianti-deliver",
|
|
5507
|
+
description: "引导天梯任务从需求、验证到研发交付",
|
|
5508
|
+
handler: handler(call),
|
|
5466
5509
|
input: { hint: "help | status | 子命令与参数" }
|
|
5467
|
-
}
|
|
5468
|
-
|
|
5510
|
+
}, {
|
|
5511
|
+
name: "td",
|
|
5512
|
+
description: "天梯研发交付(/tianti-deliver 的别名)",
|
|
5513
|
+
handler: handler(call),
|
|
5514
|
+
input: { hint: "help | status | 子命令与参数" }
|
|
5515
|
+
}]) yield ctx.commands.register(command);
|
|
5516
|
+
yield () => {
|
|
5517
|
+
lifetime.abort();
|
|
5518
|
+
};
|
|
5469
5519
|
}, "tianti lifecycle");
|
|
5470
5520
|
}
|
|
5471
5521
|
//#endregion
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import z from '@deepseek-ai/schemastery';
|
|
3
3
|
/** Tianti endpoints, switches, and bounded execution settings. */
|
|
4
4
|
export interface Config {
|
|
5
|
-
/**
|
|
5
|
+
/** Initially enable Tianti; defaults off until the user runs /tianti on. */
|
|
6
6
|
enabled: boolean;
|
|
7
7
|
/** Allow execution of human-approved external write reviews. */
|
|
8
8
|
enableWriteActions: boolean;
|
|
9
|
-
/**
|
|
9
|
+
/** Register model-facing query and review-proposal tools only while Tianti is on. */
|
|
10
10
|
enableModelTools: boolean;
|
|
11
11
|
/** Tianti DevOps origin; HTTPS except for loopback test deployments. */
|
|
12
12
|
baseUrl: string;
|
|
@@ -7,6 +7,7 @@ export declare const inject: string[];
|
|
|
7
7
|
/** Register migrated commands without changing the agent loop or existing model providers.
|
|
8
8
|
* @param ctx Harness command and tool registries.
|
|
9
9
|
* @param config Deployment endpoints, switches, and timeouts.
|
|
10
|
+
* @returns Startup after persisted switches and command descriptions are ready.
|
|
10
11
|
*/
|
|
11
|
-
export declare function apply(ctx: Context, config: Config): void
|
|
12
|
+
export declare function apply(ctx: Context, config: Config): Promise<void>;
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TiantiRuntime } from '../../runtime.ts';
|
|
1
2
|
import type { TiantiRuntimeConfig } from './types.ts';
|
|
2
3
|
/** Tianti write actions disabled message for Tianti operations.
|
|
3
4
|
*/
|
|
@@ -6,8 +7,9 @@ export declare const TIANTI_WRITE_ACTIONS_DISABLED_MESSAGE = "\u7814\u53D1\u5E73
|
|
|
6
7
|
*/
|
|
7
8
|
export declare const TIANTI_WRITE_ACTIONS_ENABLED_MESSAGE = "\u7814\u53D1\u5E73\u53F0\u5199\u64CD\u4F5C\u6267\u884C\u6743\u9650\u5DF2\u5F00\u542F\u3002\u6240\u6709\u5916\u90E8\u5199\u64CD\u4F5C\u4ECD\u5FC5\u987B\u5148\u751F\u6210\u5BA1\u6838\u9879\uFF0C\u5E76\u901A\u8FC7 /tianti approve <reviewId> --execute \u660E\u786E\u6279\u51C6\u540E\u624D\u4F1A\u6267\u884C\u3002";
|
|
8
9
|
/** Get tianti runtime config for Tianti operations.
|
|
9
|
-
* @
|
|
10
|
-
|
|
10
|
+
* @param runtime Mounted Tianti runtime; defaults to the current invocation.
|
|
11
|
+
* @returns The runtime's configured endpoints and effective integration switches. */
|
|
12
|
+
export declare function getTiantiRuntimeConfig(runtime?: TiantiRuntime): TiantiRuntimeConfig;
|
|
11
13
|
/** Is tianti enabled for Tianti operations.
|
|
12
14
|
* @returns Whether Tianti resource operations are enabled. */
|
|
13
15
|
export declare function isTiantiEnabled(): boolean;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/** Model-facing Tianti queries and review proposals; human commands execute writes. */
|
|
2
2
|
import type { Context } from '@deepseek-ai/cordis';
|
|
3
3
|
import { TiantiRuntime } from './runtime.ts';
|
|
4
|
-
/** Install
|
|
4
|
+
/** Install model tools for one enabled Tianti activation; its owner unregisters them on off.
|
|
5
5
|
* @param ctx Harness tool registry.
|
|
6
6
|
* @param runtime Plugin-owned endpoint and switch state.
|
|
7
|
-
* @param signal
|
|
7
|
+
* @param signal Cancellation for this activation, aborted on off or plugin disposal.
|
|
8
8
|
* @param track Track active work until plugin disposal settles.
|
|
9
9
|
* @returns Registration disposers, removed before active work is drained.
|
|
10
10
|
*/
|
|
@@ -35,6 +35,8 @@
|
|
|
35
35
|
"@deepseek-ai/dsh-home-paths": "workspace:*"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
+
"@deepseek-ai/dsh-agent-loop": "workspace:*",
|
|
39
|
+
"@deepseek-ai/dsh-session-projection": "workspace:*",
|
|
38
40
|
"@deepseek-ai/dsh-bash-local": "workspace:*",
|
|
39
41
|
"@deepseek-ai/dsh-subprocess-local": "workspace:*",
|
|
40
42
|
"@deepseek-ai/cordis": "workspace:~",
|
|
@@ -20,20 +20,32 @@ export const SERVICE_API = [
|
|
|
20
20
|
methods: [
|
|
21
21
|
{
|
|
22
22
|
signature: 'currentSelection(): ModelSelection',
|
|
23
|
-
description: 'Read the current default model selection.',
|
|
23
|
+
description: 'Read the current default model selection. A first launch without a valid preference adopts the first complete Config default when it arrives; that process-local choice then stays cached.',
|
|
24
24
|
parameters: [],
|
|
25
25
|
returns: 'a detached provider, model, and optional reasoning selection.',
|
|
26
26
|
},
|
|
27
|
+
{
|
|
28
|
+
signature: 'usesSharedPreference(): boolean',
|
|
29
|
+
description: 'Whether this product uses a process-local selection initialized from Home at startup.',
|
|
30
|
+
parameters: [],
|
|
31
|
+
returns: 'true for the integrated ChatCode CLI and Web profiles.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
signature: 'async resolveSelection(): Promise<ModelSelection>',
|
|
35
|
+
description: 'Resolve the cached route against the live catalog without reading or writing preferences. A first launch without a valid preference may adopt an advertised fallback until its first available default is resolved. Saved or initialized choices never switch implicitly. Catalog errors preserve the candidate for retry.',
|
|
36
|
+
parameters: [],
|
|
37
|
+
returns: 'the exact available selection, an unverified candidate, or an empty provider/model pair.',
|
|
38
|
+
},
|
|
27
39
|
{
|
|
28
40
|
signature: 'sharedDisplayName(): { provider: string; model: string; name: string } | undefined',
|
|
29
|
-
description: 'Read
|
|
41
|
+
description: 'Read this process\'s cached display name without observing another process\'s saves.',
|
|
30
42
|
parameters: [],
|
|
31
43
|
returns: 'The saved provider/model/name tuple, or undefined for missing or invalid name metadata.',
|
|
32
44
|
},
|
|
33
45
|
{
|
|
34
|
-
signature: 'async saveSelection(next: ModelSelection): Promise<void>',
|
|
35
|
-
description: 'Save the complete default model selection to the shared ChatCode Home file, or the owning profile entry in other deployments. Saves commit in submission order; a failed save rejects its caller without blocking later saves. A shared save
|
|
36
|
-
parameters: [{ name: 'next', description: 'resolved selection accepted by an entry point.' }],
|
|
46
|
+
signature: 'async saveSelection(next: ModelSelection, name?: string): Promise<void>',
|
|
47
|
+
description: 'Save the complete default model selection to the shared ChatCode Home file, or the owning profile entry in other deployments. Saves commit in submission order; a failed save rejects its caller without blocking later saves. A shared save uses the caller\'s already resolved catalog name without an additional lookup.',
|
|
48
|
+
parameters: [{ name: 'next', description: 'resolved selection accepted by an entry point.' }, { name: 'name', description: 'optional display name from the entry point\'s catalog.' }],
|
|
37
49
|
returns: 'fulfillment after the preference or optional profile write settles.',
|
|
38
50
|
},
|
|
39
51
|
],
|
|
@@ -1843,20 +1855,20 @@ export const SERVICE_API = [
|
|
|
1843
1855
|
returns: 'authorized bounded Session search results.',
|
|
1844
1856
|
},
|
|
1845
1857
|
{
|
|
1846
|
-
signature: '@Remote(\'create\') create(request: SessionCreateRequest): Promise<SessionCreateValue>',
|
|
1858
|
+
signature: '@Remote(\'create\') async create(request: SessionCreateRequest): Promise<SessionCreateValue>',
|
|
1847
1859
|
description: 'Create or idempotently adopt one ordinary Session.',
|
|
1848
1860
|
parameters: [{ name: 'request', description: 'requested identity, location, and Agent preset.' }],
|
|
1849
1861
|
returns: 'the Session identity and resolved preset when configured.',
|
|
1850
1862
|
},
|
|
1851
1863
|
{
|
|
1852
1864
|
signature: '@Remote(\'selectModel\') selectModel(request: SessionSelectModelRequest): Promise<SessionSelectModelValue>',
|
|
1853
|
-
description: 'Select
|
|
1865
|
+
description: 'Select a model after explicitly resuming the Session and awaiting default persistence.',
|
|
1854
1866
|
parameters: [{ name: 'request', description: 'Session identity and requested model selection.' }],
|
|
1855
|
-
returns: 'the normalized selection
|
|
1867
|
+
returns: 'the normalized selection after the shared save and Session selection succeed.',
|
|
1856
1868
|
},
|
|
1857
1869
|
{
|
|
1858
1870
|
signature: '@Remote async initializeDefaultModel(): Promise<void>',
|
|
1859
|
-
description: '
|
|
1871
|
+
description: 'Initialize legacy account deployments without changing a product process\'s cached selection.',
|
|
1860
1872
|
parameters: [],
|
|
1861
1873
|
returns: 'after saving the first available model or retaining the existing default.',
|
|
1862
1874
|
},
|
|
@@ -1935,7 +1947,7 @@ export const SERVICE_API = [
|
|
|
1935
1947
|
returns: 'one chronological page.',
|
|
1936
1948
|
},
|
|
1937
1949
|
{
|
|
1938
|
-
signature: '@Remote({ mode: \'stream\' }) follow(request: SessionFollowRequest, signal: AbortSignal): AsyncIterable<SessionFollowFrame>',
|
|
1950
|
+
signature: '@Remote({ mode: \'stream\' }) async *follow(request: SessionFollowRequest, signal: AbortSignal): AsyncIterable<SessionFollowFrame>',
|
|
1939
1951
|
description: 'Follow one Session log from its opening or resume cursor.',
|
|
1940
1952
|
parameters: [{ name: 'request', description: 'durable address and last committed sequence already held by the caller.' }, { name: 'signal', description: 'cancellation owned by the Remote stream carrier.' }],
|
|
1941
1953
|
returns: 'a complete opening snapshot followed by gap-free durable event frames and optional cursorless assistant-stream frames.',
|
|
@@ -2023,6 +2035,13 @@ export const SERVICE_API = [
|
|
|
2023
2035
|
parameters: [{ name: 'options', description: 'optional cancellation.' }],
|
|
2024
2036
|
returns: 'one snapshot per stored session.',
|
|
2025
2037
|
},
|
|
2038
|
+
{
|
|
2039
|
+
signature: 'prepareDeletion(sessionIds: readonly SessionId[]): Promise<SessionDeletion>',
|
|
2040
|
+
description: 'Reserve every target\'s write ownership before any deletion is committed. The caller persists its recovery journal while this reservation is held, calls commit, and always disposes it to release ownership. Backends must retain deletion identities so old generations cannot reappear or be recreated.',
|
|
2041
|
+
parameters: [{ name: 'sessionIds', description: 'complete deletion scope, including owned descendants.' }],
|
|
2042
|
+
returns: 'an exclusive deletion reservation; missing targets are idempotent.',
|
|
2043
|
+
throws: ['when a writer holds any target, or the backend does not support deletion.'],
|
|
2044
|
+
},
|
|
2026
2045
|
],
|
|
2027
2046
|
},
|
|
2028
2047
|
{
|
|
@@ -3526,6 +3545,18 @@ export const SERVICE_API = [
|
|
|
3526
3545
|
parameters: [{ name: 'request', description: 'Session identity to unarchive.' }],
|
|
3527
3546
|
returns: 'the complete resulting archive set.',
|
|
3528
3547
|
},
|
|
3548
|
+
{
|
|
3549
|
+
signature: '@Remote(\'sessionDeletionScope\') sessionDeletionScope(request: WorkspaceSessionDeletionPreviewRequest): Promise<WorkspaceSessionDeletionValue>',
|
|
3550
|
+
description: 'Preview the archived root and owned subagent Sessions covered by deletion.',
|
|
3551
|
+
parameters: [{ name: 'request', description: 'archived root to preview.' }],
|
|
3552
|
+
returns: 'complete deletion scope for confirmation.',
|
|
3553
|
+
},
|
|
3554
|
+
{
|
|
3555
|
+
signature: '@Remote(\'deleteSession\') deleteSession(request: WorkspaceSessionDeletionRequest): Promise<WorkspaceSessionDeletionValue>',
|
|
3556
|
+
description: 'Permanently remove an archived Session and its confirmed owned subagents.',
|
|
3557
|
+
parameters: [{ name: 'request', description: 'archived root and confirmed scope.' }],
|
|
3558
|
+
returns: 'identities permanently removed.',
|
|
3559
|
+
},
|
|
3529
3560
|
{
|
|
3530
3561
|
signature: '@Remote(\'pinSession\') pinSession(request: WorkspacePinSessionRequest): Promise<WorkspacePinValue>',
|
|
3531
3562
|
description: 'Surface one known unarchived Session ahead of unpinned Sessions.',
|
|
@@ -3630,6 +3661,18 @@ export const SERVICE_API = [
|
|
|
3630
3661
|
parameters: [{ name: 'id', description: 'Workspace to move.' }, { name: 'beforeId', description: 'Workspace anchor; omitted appends.' }],
|
|
3631
3662
|
returns: 'the complete committed workspace order.',
|
|
3632
3663
|
},
|
|
3664
|
+
{
|
|
3665
|
+
signature: 'deleteSession(sessionId: SessionId, expectedIds?: readonly SessionId[]): Promise<readonly SessionId[]>',
|
|
3666
|
+
description: 'Permanently delete an archived, inactive root and its owned subagent descendants. Independent forks are preserved. Reserve every writer before recording a recovery marker; a failure after that marker is retried on refresh or restart.',
|
|
3667
|
+
parameters: [{ name: 'sessionId', description: 'archived root identity; repeated deletion is idempotent.' }, { name: 'expectedIds', description: 'identities confirmed by the user; a changed scope refuses deletion.' }],
|
|
3668
|
+
returns: 'deleted root and descendant identities after durable cleanup.',
|
|
3669
|
+
},
|
|
3670
|
+
{
|
|
3671
|
+
signature: 'sessionDeletionScope(sessionId: SessionId): Promise<readonly SessionId[]>',
|
|
3672
|
+
description: 'Preview the root and owned descendants without opening their histories.',
|
|
3673
|
+
parameters: [{ name: 'sessionId', description: 'archived root to preview.' }],
|
|
3674
|
+
returns: 'identities to show in the deletion confirmation.',
|
|
3675
|
+
},
|
|
3633
3676
|
{
|
|
3634
3677
|
signature: 'archiveSession(sessionId: SessionId, options: ArchiveSessionOptions = {}): Promise<void>',
|
|
3635
3678
|
description: 'Archive one session durably. The session must exist (live or in session persistence); its workspace accounting — or lack of one — is irrelevant. Without `stopActivity` the session must also be inactive: the `workspace/session-activity` waterfall is asked once, and any reported activity rejects with WorkspaceActiveSessionError before anything is written. With `stopActivity` the archive is written without an activity check, and the `workspace/session-stop` providers are then asked to stop the session\'s work: the durable archive set is what a provider\'s `agent/pre-step` gate reads, so every wake the stops induce is already blocked. Archiving drops the session\'s pin in the same durable write (pinning and archival are mutually exclusive). An already archived id resolves without writing, asking, or stopping.',
|
|
@@ -3801,6 +3844,14 @@ export const EVENT_API = [
|
|
|
3801
3844
|
description: 'One Agent failed outside a durable turn position.',
|
|
3802
3845
|
parameters: [{ name: 'sessionId', description: 'Agent and Session identity.' }, { name: 'message', description: 'user-safe failure chain.' }],
|
|
3803
3846
|
},
|
|
3847
|
+
{
|
|
3848
|
+
name: 'api-session/model-updated',
|
|
3849
|
+
mode: 'emit',
|
|
3850
|
+
signature: '\'api-session/model-updated\'(): void',
|
|
3851
|
+
summary: 'The Host process committed a user-selected default; browser catalogs must reload from that process.',
|
|
3852
|
+
description: 'The Host process committed a user-selected default; browser catalogs must reload from that process.',
|
|
3853
|
+
parameters: [],
|
|
3854
|
+
},
|
|
3804
3855
|
{
|
|
3805
3856
|
name: 'api-session/removed',
|
|
3806
3857
|
mode: 'emit',
|
|
@@ -4097,6 +4148,30 @@ export const EVENT_API = [
|
|
|
4097
4148
|
description: 'Creation announcement during session publication. A synchronous throw vetoes and rolls back with a paired disposal; detach requested during dispatch is deferred. A returned-promise rejection is logged but cannot retroactively veto this synchronous boundary. Scope-filtered dispatch (`@deepseek-ai/dsh-scope`): agent-scoped listeners receive only sessions entered through that agent\'s context.',
|
|
4098
4149
|
parameters: [{ name: 'session', description: 'the session just entered and announced.' }],
|
|
4099
4150
|
},
|
|
4151
|
+
{
|
|
4152
|
+
name: 'session/delete-release',
|
|
4153
|
+
mode: 'parallel',
|
|
4154
|
+
signature: '\'session/delete-release\'(request: { readonly sessionIds: readonly SessionId[] }): Promise<void> | void',
|
|
4155
|
+
summary: 'Ask capability owners to release idle, archived Sessions before writer reservation.',
|
|
4156
|
+
description: 'Ask capability owners to release idle, archived Sessions before writer reservation. Owners release only handles they own; foreign or running Sessions remain protected.',
|
|
4157
|
+
parameters: [{ name: 'request', description: 'confirmed root and owned subagent identities.' }],
|
|
4158
|
+
},
|
|
4159
|
+
{
|
|
4160
|
+
name: 'session/deleted',
|
|
4161
|
+
mode: 'emit',
|
|
4162
|
+
signature: '\'session/deleted\'(sessionIds: readonly SessionId[]): void',
|
|
4163
|
+
summary: 'Permanent deletion observed locally or from shared storage.',
|
|
4164
|
+
description: 'Permanent deletion observed locally or from shared storage.',
|
|
4165
|
+
parameters: [{ name: 'sessionIds', description: 'removed identities, including owned descendants.' }],
|
|
4166
|
+
},
|
|
4167
|
+
{
|
|
4168
|
+
name: 'session/deleting',
|
|
4169
|
+
mode: 'parallel',
|
|
4170
|
+
signature: '\'session/deleting\'(request: { readonly sessionIds: readonly SessionId[] }): Promise<void> | void',
|
|
4171
|
+
summary: 'Permanently remove secondary Session records after stored payload deletion.',
|
|
4172
|
+
description: 'Permanently remove secondary Session records after stored payload deletion. Listeners are idempotent; failures leave the deletion journal pending for recovery.',
|
|
4173
|
+
parameters: [{ name: 'request', description: 'confirmed root and owned subagent identities.' }],
|
|
4174
|
+
},
|
|
4100
4175
|
{
|
|
4101
4176
|
name: 'session/disposed',
|
|
4102
4177
|
mode: 'emit',
|
|
@@ -4666,7 +4741,7 @@ export const TYPE_API = [
|
|
|
4666
4741
|
},
|
|
4667
4742
|
{
|
|
4668
4743
|
name: 'CommandInputDescriptor',
|
|
4669
|
-
declaration: 'export interface CommandInputDescriptor {\n readonly hint: string;\n readonly attachments?: boolean;\n}',
|
|
4744
|
+
declaration: 'export interface CommandInputDescriptor {\n readonly hint: string;\n readonly suggestions?: readonly {\n readonly value: string;\n readonly description: string;\n }[];\n readonly attachments?: boolean;\n}',
|
|
4670
4745
|
},
|
|
4671
4746
|
{
|
|
4672
4747
|
name: 'CommandInvocation',
|
|
@@ -5714,7 +5789,7 @@ export const TYPE_API = [
|
|
|
5714
5789
|
},
|
|
5715
5790
|
{
|
|
5716
5791
|
name: 'ModelCatalog',
|
|
5717
|
-
declaration: 'export interface ModelCatalog {\n readonly default: ModelSelection;\n readonly savedDisplayName?: {\n readonly provider: string;\n readonly model: string;\n readonly name: string;\n };\n readonly routableProviders: readonly string[];\n readonly groups: readonly ModelProviderGroup[];\n readonly failures: readonly ModelCatalogFailure[];\n}',
|
|
5792
|
+
declaration: 'export interface ModelCatalog {\n readonly default: ModelSelection;\n readonly selectionScope?: \'process\';\n readonly savedDisplayName?: {\n readonly provider: string;\n readonly model: string;\n readonly name: string;\n };\n readonly routableProviders: readonly string[];\n readonly groups: readonly ModelProviderGroup[];\n readonly failures: readonly ModelCatalogFailure[];\n}',
|
|
5718
5793
|
},
|
|
5719
5794
|
{
|
|
5720
5795
|
name: 'ModelCatalogFailure',
|
|
@@ -6066,7 +6141,7 @@ export const TYPE_API = [
|
|
|
6066
6141
|
},
|
|
6067
6142
|
{
|
|
6068
6143
|
name: 'RecordTable',
|
|
6069
|
-
declaration: 'export type RecordTable<K extends string, V> = Pick<KvTable<K, V>, \'read\' | \'put\'>;',
|
|
6144
|
+
declaration: 'export type RecordTable<K extends string, V> = Pick<KvTable<K, V>, \'read\' | \'put\' | \'delete\'>;',
|
|
6070
6145
|
},
|
|
6071
6146
|
{
|
|
6072
6147
|
name: 'RecurringScheduleRecord',
|
|
@@ -6408,6 +6483,10 @@ export const TYPE_API = [
|
|
|
6408
6483
|
name: 'SessionCreateValue',
|
|
6409
6484
|
declaration: 'export interface SessionCreateValue {\n readonly sessionId: SessionId;\n readonly agentPreset?: string;\n}',
|
|
6410
6485
|
},
|
|
6486
|
+
{
|
|
6487
|
+
name: 'SessionDeletion',
|
|
6488
|
+
declaration: 'export interface SessionDeletion extends AsyncDisposable {\n commit(): Promise<void>;\n}',
|
|
6489
|
+
},
|
|
6411
6490
|
{
|
|
6412
6491
|
name: 'SessionEvent',
|
|
6413
6492
|
declaration: 'export type SessionEvent<T extends SessionEventType = SessionEventType> = {\n [K in SessionEventType]: {\n type: K;\n seq: SessionSeq;\n time: number;\n data: SessionEventMap[K];\n ignorable?: true;\n } & (K extends SurfaceEventType ? SurfaceIntent<K> : {\n surfaceOp?: never;\n sourceEventSeqs?: never;\n });\n}[T];',
|
|
@@ -8028,6 +8107,18 @@ export const TYPE_API = [
|
|
|
8028
8107
|
name: 'WorkspaceRenameRequest',
|
|
8029
8108
|
declaration: 'export interface WorkspaceRenameRequest {\n readonly workspaceId: WorkspaceId;\n readonly title: string;\n}',
|
|
8030
8109
|
},
|
|
8110
|
+
{
|
|
8111
|
+
name: 'WorkspaceSessionDeletionPreviewRequest',
|
|
8112
|
+
declaration: 'export interface WorkspaceSessionDeletionPreviewRequest {\n readonly sessionId: SessionId;\n}',
|
|
8113
|
+
},
|
|
8114
|
+
{
|
|
8115
|
+
name: 'WorkspaceSessionDeletionRequest',
|
|
8116
|
+
declaration: 'export interface WorkspaceSessionDeletionRequest extends WorkspaceSessionDeletionPreviewRequest {\n readonly expectedSessionIds: readonly SessionId[];\n}',
|
|
8117
|
+
},
|
|
8118
|
+
{
|
|
8119
|
+
name: 'WorkspaceSessionDeletionValue',
|
|
8120
|
+
declaration: 'export interface WorkspaceSessionDeletionValue {\n readonly sessionIds: readonly SessionId[];\n}',
|
|
8121
|
+
},
|
|
8031
8122
|
{
|
|
8032
8123
|
name: 'WorkspaceUnarchiveSessionRequest',
|
|
8033
8124
|
declaration: 'export interface WorkspaceUnarchiveSessionRequest {\n readonly sessionId: SessionId;\n}',
|