dsh-super-code 0.3.6 → 0.3.8
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.md +95 -63
- package/client/index.js +1049 -47
- package/cordis.patch.yml +1 -1
- package/docs/Changelog.md +19 -0
- package/docs/Compatibility.md +44 -0
- package/docs/EvaluationResults.md +134 -58
- package/docs/UsageGuide.md +112 -0
- package/lib/connection/directories.d.ts +30 -0
- package/lib/connection/directories.d.ts.map +1 -0
- package/lib/connection/directories.js +82 -0
- package/lib/connection/directories.js.map +1 -0
- package/lib/connection/git.d.ts +5 -0
- package/lib/connection/git.d.ts.map +1 -0
- package/lib/connection/git.js +86 -0
- package/lib/connection/git.js.map +1 -0
- package/lib/connection/http.d.ts +38 -0
- package/lib/connection/http.d.ts.map +1 -0
- package/lib/connection/http.js +275 -0
- package/lib/connection/http.js.map +1 -0
- package/lib/connection/service.d.ts +57 -0
- package/lib/connection/service.d.ts.map +1 -0
- package/lib/connection/service.js +168 -0
- package/lib/connection/service.js.map +1 -0
- package/lib/connection/store.d.ts +21 -0
- package/lib/connection/store.d.ts.map +1 -0
- package/lib/connection/store.js +139 -0
- package/lib/connection/store.js.map +1 -0
- package/lib/connection/tasks.d.ts +84 -0
- package/lib/connection/tasks.d.ts.map +1 -0
- package/lib/connection/tasks.js +270 -0
- package/lib/connection/tasks.js.map +1 -0
- package/lib/connection/types.d.ts +90 -0
- package/lib/connection/types.d.ts.map +1 -0
- package/lib/connection/types.js +21 -0
- package/lib/connection/types.js.map +1 -0
- package/lib/core/deletion-command.d.ts +3 -0
- package/lib/core/deletion-command.d.ts.map +1 -0
- package/lib/core/deletion-command.js +169 -0
- package/lib/core/deletion-command.js.map +1 -0
- package/lib/dsh/budgets.d.ts +5 -0
- package/lib/dsh/budgets.d.ts.map +1 -1
- package/lib/dsh/budgets.js +11 -0
- package/lib/dsh/budgets.js.map +1 -1
- package/lib/dsh/connection-host.d.ts +81 -0
- package/lib/dsh/connection-host.d.ts.map +1 -0
- package/lib/dsh/connection-host.js +130 -0
- package/lib/dsh/connection-host.js.map +1 -0
- package/lib/dsh/connection.d.ts +72 -0
- package/lib/dsh/connection.d.ts.map +1 -0
- package/lib/dsh/connection.js +183 -0
- package/lib/dsh/connection.js.map +1 -0
- package/lib/dsh/deletion-protection.d.ts +13 -0
- package/lib/dsh/deletion-protection.d.ts.map +1 -0
- package/lib/dsh/deletion-protection.js +68 -0
- package/lib/dsh/deletion-protection.js.map +1 -0
- package/lib/dsh/index.d.ts.map +1 -1
- package/lib/dsh/index.js +6 -0
- package/lib/dsh/index.js.map +1 -1
- package/lib/task-feedback-projection.d.ts +68 -0
- package/lib/task-feedback-projection.d.ts.map +1 -0
- package/lib/task-feedback-projection.js +176 -0
- package/lib/task-feedback-projection.js.map +1 -0
- package/package.json +7 -6
- package/presets/super-code/agent.cordis.yml +1 -1
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
2
|
+
import { configurationOf, deletionProtectionMode } from './budgets.js';
|
|
3
|
+
import { deletionCommand } from '../core/deletion-command.js';
|
|
4
|
+
export const DELETION_INSTRUCTION = '删除文件或目录默认用 trash <path>(可恢复);仅清理临时文件、构建产物且我已确认时才用 rm。脚本、内联脚本和间接调用也不允许直接使用 rm 或其他永久删除命令,不得用脚本绕过删除保护;同样优先移动到回收站。确需清理临时文件或构建产物时,必须对具体命令和路径取得用户二次确认,仅对当前调用有效。trash 不可用时,改用其他可恢复的回收站方式或先停止,不得静默退回 rm。\nUse trash <path> (recoverable) by default for files and directories. Use rm only to clean temporary files or build artifacts after the user explicitly confirms the exact operation. Scripts, inline scripts, and indirect invocations must also avoid rm or other permanent deletion commands; never use a script to bypass this protection. Prefer a recoverable trash mechanism. An exception requires a separate user confirmation for this exact command and its paths, valid for this call only. If trash is unavailable, use another recoverable trash mechanism or stop; never silently fall back to rm.';
|
|
5
|
+
export const RELAXED_DELETION_INSTRUCTION = '删除文件或目录默认用 trash <path>(可恢复);仅清理临时文件、构建产物且我已确认时才用 rm。脚本、内联脚本和间接调用中也建议使用 trash 等可恢复命令,尽量避免 rm。当前为宽松模式:用户已明确说明需要使用 rm 时,可以按用户指定的范围使用,包括在脚本中使用;该明确要求可作为确认,无需本插件额外二次确认。用户没有明确要求时,不要自行改用永久删除。宿主原有权限检查仍然有效。\nUse trash <path> (recoverable) by default for files and directories; use rm for temporary files or build artifacts after confirmation. Scripts, inline scripts, and indirect calls should also prefer recoverable trash commands and avoid rm when possible. In relaxed mode, an explicit user request to use rm is sufficient confirmation within the requested scope, including in scripts; this plugin requires no additional confirmation. Without an explicit request, do not silently switch to permanent deletion. Host permission checks still apply.';
|
|
6
|
+
function instruction(mode) {
|
|
7
|
+
return mode === 'strict' ? DELETION_INSTRUCTION : mode === 'relaxed' ? RELAXED_DELETION_INSTRUCTION : '';
|
|
8
|
+
}
|
|
9
|
+
const corrective = 'SUPER_CODE_DELETE_PROTECTED: 已拦截永久删除命令。请使用 trash <path> 等可恢复的回收站命令,脚本也不得绕过。仅清理临时文件或构建产物且用户对当前命令二次确认后才可执行。\nPermanent deletion blocked. Use trash <path> or another recoverable trash command, including in scripts. Only temporary/build cleanup with a separate one-time user confirmation may proceed.';
|
|
10
|
+
const official = new Set(['standard', 'ptc', 'minimal', 'cordis']);
|
|
11
|
+
export function applyDeletionProtection(ctx) {
|
|
12
|
+
ctx.inject(['tools', 'systemPrompt'], owner => {
|
|
13
|
+
const modeFor = (agent) => {
|
|
14
|
+
const config = configurationOf(owner);
|
|
15
|
+
const mode = deletionProtectionMode(config);
|
|
16
|
+
if (mode === 'off' || !agent)
|
|
17
|
+
return 'off';
|
|
18
|
+
if (owner.tools.get('super_code_task', agent))
|
|
19
|
+
return mode;
|
|
20
|
+
const presets = owner.get('agentPresets');
|
|
21
|
+
return config.deletionProtectionForOfficialPresets === true && !!presets && official.has(presets.composedPreset(agent.ctx) ?? '') ? mode : 'off';
|
|
22
|
+
};
|
|
23
|
+
owner.systemPrompt.section({ name: 'super-code:deletion-protection', order: 95,
|
|
24
|
+
text: ({ agent }) => instruction(modeFor(agent)) });
|
|
25
|
+
// Minimal owns a complete system prompt and suppresses global context.
|
|
26
|
+
// Use its public pre-step message seam so the policy remains logged and replayable.
|
|
27
|
+
const minimalNotices = new WeakMap();
|
|
28
|
+
owner.on('agent/pre-step', async ({ agent }, next) => {
|
|
29
|
+
const result = await next();
|
|
30
|
+
const presets = owner.get('agentPresets');
|
|
31
|
+
if (result.kind !== 'enter' || presets?.composedPreset(agent.ctx) !== 'minimal')
|
|
32
|
+
return result;
|
|
33
|
+
const mode = modeFor(agent), previous = minimalNotices.get(agent);
|
|
34
|
+
if (previous === mode || mode === 'off' && previous === undefined)
|
|
35
|
+
return result;
|
|
36
|
+
minimalNotices.set(agent, mode);
|
|
37
|
+
const notice = createUserMessage({ source: { kind: 'dsh-super-code/deletion-protection' }, content: [{ type: 'text',
|
|
38
|
+
text: mode === 'off' ? '此预设的删除保护已关闭,先前的删除保护提示不再适用;宿主自身权限检查仍然有效。\nDeletion protection is now disabled for this preset. Earlier deletion-protection notices no longer apply; host permission checks still apply.'
|
|
39
|
+
: (previous === undefined ? '' : '删除保护模式已切换,以下规则取代先前的删除保护规则。\nThe deletion-protection mode has changed; the following rules replace earlier deletion-protection instructions.\n') + instruction(mode),
|
|
40
|
+
}] });
|
|
41
|
+
return { ...result, messages: [...result.messages, notice] };
|
|
42
|
+
});
|
|
43
|
+
owner.on('tools/execute', async (exec, next) => {
|
|
44
|
+
if (modeFor(exec.agent) !== 'strict' || !['bash', 'pwsh'].includes(exec.name))
|
|
45
|
+
return next();
|
|
46
|
+
const args = exec.arguments;
|
|
47
|
+
if (typeof args?.command !== 'string' || !deletionCommand(args.command, exec.name === 'pwsh'))
|
|
48
|
+
return next();
|
|
49
|
+
exec.signal.throwIfAborted();
|
|
50
|
+
const approval = owner.get('approval');
|
|
51
|
+
if (!approval || !exec.agent)
|
|
52
|
+
throw new Error(corrective + '\n当前宿主无可用确认渠道,命令未执行。 No approval channel is available; nothing ran.');
|
|
53
|
+
const reason = `删除保护:建议改用 trash。仅在本次操作是临时文件或构建产物清理时,确认以下命令的永久删除;其他文件请选择拒绝。\nDeletion protection: prefer trash. Approve permanent deletion only for temporary files or build artifacts in this exact call; reject other deletions.\n${typeof args.workdir === 'string' ? `工作目录 / Workdir: ${args.workdir}\n` : ''}${args.command}`;
|
|
54
|
+
let outcome;
|
|
55
|
+
try {
|
|
56
|
+
outcome = await approval.request({ agent: exec.agent, toolName: exec.name, callId: exec.callId, reason, signal: exec.signal });
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
throw new Error(corrective + '\n确认渠道不可用,命令未执行。 Approval failed; nothing ran.');
|
|
60
|
+
}
|
|
61
|
+
exec.signal.throwIfAborted();
|
|
62
|
+
if (outcome !== 'allowed-once')
|
|
63
|
+
throw new Error(corrective + `\n确认结果 / Approval: ${outcome}`);
|
|
64
|
+
return next();
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=deletion-protection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deletion-protection.js","sourceRoot":"","sources":["../../src/dsh/deletion-protection.ts"],"names":[],"mappings":"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"}
|
package/lib/dsh/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAQlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAMjD,eAAO,MAAM,IAAI,eAAe,CAAA;AAChC,eAAO,MAAM,MAAM,EAAE,OAAO,mBAAyC,CAAA;AAgBrE,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnF;AAED,eAAe,KAAK,CAAA"}
|
package/lib/dsh/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Host projections and preset installation; execution belongs to Harness. */
|
|
2
2
|
import { applyPresetInstallation } from './preset-installation.js';
|
|
3
3
|
import { superAgentUsageProjectionDefinition } from '../super-agent-usage.js';
|
|
4
|
+
import { taskFeedbackProjection } from '../task-feedback-projection.js';
|
|
4
5
|
import { taskMemoryProjection } from '../task-memory-projection.js';
|
|
5
6
|
import { LongMemoryStore, longMemoryDomainSpec } from '../long-memory.js';
|
|
6
7
|
import { memoryUsageProjection } from '../memory-usage-projection.js';
|
|
@@ -8,6 +9,8 @@ import { SuperCodeMemory } from './memory-library.js';
|
|
|
8
9
|
import { configurationSchema } from './budgets.js';
|
|
9
10
|
import { applyBudgetSettings } from './budget-settings.js';
|
|
10
11
|
import { applyOfficialBudgets } from './official-budgets.js';
|
|
12
|
+
import { applyConnection } from './connection.js';
|
|
13
|
+
import { applyDeletionProtection } from './deletion-protection.js';
|
|
11
14
|
export const name = 'super-code';
|
|
12
15
|
export const Config = configurationSchema;
|
|
13
16
|
async function installLongMemory(ctx) {
|
|
@@ -27,13 +30,16 @@ async function installLongMemory(ctx) {
|
|
|
27
30
|
export async function apply(ctx, config = {}) {
|
|
28
31
|
applyBudgetSettings(ctx, config);
|
|
29
32
|
applyOfficialBudgets(ctx);
|
|
33
|
+
applyDeletionProtection(ctx);
|
|
30
34
|
applyPresetInstallation(ctx);
|
|
35
|
+
applyConnection(ctx);
|
|
31
36
|
ctx.inject(['superCodeLongMemory', 'sessions'], owner => {
|
|
32
37
|
new SuperCodeMemory(owner, owner.get('superCodeLongMemory'));
|
|
33
38
|
});
|
|
34
39
|
ctx.inject(['sessionProjections'], projectionCtx => {
|
|
35
40
|
projectionCtx.sessionProjections.register(superAgentUsageProjectionDefinition);
|
|
36
41
|
projectionCtx.sessionProjections.register(taskMemoryProjection);
|
|
42
|
+
projectionCtx.sessionProjections.register(taskFeedbackProjection);
|
|
37
43
|
projectionCtx.sessionProjections.register(memoryUsageProjection);
|
|
38
44
|
});
|
|
39
45
|
await installLongMemory(ctx);
|
package/lib/dsh/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,OAAO,EAAE,mCAAmC,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsh/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { SessionEvent } from '@deepseek-ai/dsh-session';
|
|
2
|
+
import type { ProjectionDefinition } from '@deepseek-ai/dsh-session-projection';
|
|
3
|
+
interface FileFact {
|
|
4
|
+
path: string;
|
|
5
|
+
operation: 'write' | 'edit' | 'create' | 'patch';
|
|
6
|
+
seq: number;
|
|
7
|
+
tool: string;
|
|
8
|
+
callId: string;
|
|
9
|
+
}
|
|
10
|
+
interface Activity {
|
|
11
|
+
callId: string;
|
|
12
|
+
tool: string;
|
|
13
|
+
description: string;
|
|
14
|
+
seq: number;
|
|
15
|
+
status: 'running' | 'succeeded' | 'failed' | 'interrupted';
|
|
16
|
+
parent: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TaskFeedbackView {
|
|
19
|
+
request: string;
|
|
20
|
+
latestRequest: string;
|
|
21
|
+
phase: 'idle' | 'running' | 'waiting' | 'error' | 'interrupted';
|
|
22
|
+
goal: {
|
|
23
|
+
kind: 'none';
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'recorded';
|
|
26
|
+
text: string;
|
|
27
|
+
status: string;
|
|
28
|
+
};
|
|
29
|
+
todos: {
|
|
30
|
+
content: string;
|
|
31
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
32
|
+
}[];
|
|
33
|
+
activities: Activity[];
|
|
34
|
+
files: FileFact[];
|
|
35
|
+
omittedActivities: number;
|
|
36
|
+
omittedFiles: number;
|
|
37
|
+
omittedTodos: number;
|
|
38
|
+
}
|
|
39
|
+
export interface TaskFeedbackState extends TaskFeedbackView {
|
|
40
|
+
inherited: number;
|
|
41
|
+
cursor: number;
|
|
42
|
+
cwd: string;
|
|
43
|
+
approvals: string[];
|
|
44
|
+
pending: {
|
|
45
|
+
callId: string;
|
|
46
|
+
turn: number;
|
|
47
|
+
step: number;
|
|
48
|
+
files: {
|
|
49
|
+
path: string;
|
|
50
|
+
operation: FileFact['operation'];
|
|
51
|
+
}[];
|
|
52
|
+
}[];
|
|
53
|
+
}
|
|
54
|
+
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
55
|
+
interface SessionProjectionStateMap {
|
|
56
|
+
superCodeFeedback: TaskFeedbackState;
|
|
57
|
+
}
|
|
58
|
+
interface SessionProjectionMap {
|
|
59
|
+
superCodeFeedback: TaskFeedbackView;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** Pure, bounded and idempotent for repeated event delivery. Fork history is not attributed to a child. */
|
|
63
|
+
export declare function foldTaskFeedback(state: TaskFeedbackState, event: SessionEvent): TaskFeedbackState;
|
|
64
|
+
export declare const taskFeedbackProjection: ProjectionDefinition<'superCodeFeedback', TaskFeedbackState> & {
|
|
65
|
+
wire: NonNullable<ProjectionDefinition<'superCodeFeedback', TaskFeedbackState>['wire']>;
|
|
66
|
+
};
|
|
67
|
+
export {};
|
|
68
|
+
//# sourceMappingURL=task-feedback-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-feedback-projection.d.ts","sourceRoot":"","sources":["../src/task-feedback-projection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAsB/E,UAAU,QAAQ;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAChI,UAAU,QAAQ;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAClF,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IACvG,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3E,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;KAAE,EAAE,CAAA;IAC7E,UAAU,EAAE,QAAQ,EAAE,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CACjH;AACD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;IACnE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;SAAE,EAAE,CAAA;KAAE,EAAE,CAAA;CACvH;AAED,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,yBAAyB;QAAG,iBAAiB,EAAE,iBAAiB,CAAA;KAAE;IAC5E,UAAU,oBAAoB;QAAG,iBAAiB,EAAE,gBAAgB,CAAA;KAAE;CACvE;AA+ED,2GAA2G;AAC3G,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAuCjG;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,GAAG;IAClG,IAAI,EAAE,WAAW,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;CAUxF,CAAA"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/** UI-only facts from the existing journal. Never emits messages or changes execution. */
|
|
2
|
+
import { posix, win32 } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { recordedToolResult } from './core/host-messages.js';
|
|
5
|
+
const LIMIT = { activities: 80, files: 160, pending: 64, todos: 200 };
|
|
6
|
+
const phaseSchema = z.enum(['idle', 'running', 'waiting', 'error', 'interrupted']);
|
|
7
|
+
const fileSchema = z.object({ path: z.string(), operation: z.enum(['write', 'edit', 'create', 'patch']),
|
|
8
|
+
seq: z.number(), tool: z.string(), callId: z.string() }).strict();
|
|
9
|
+
const activitySchema = z.object({ callId: z.string(), tool: z.string(), description: z.string(), seq: z.number(),
|
|
10
|
+
status: z.enum(['running', 'succeeded', 'failed', 'interrupted']), parent: z.string() }).strict();
|
|
11
|
+
const pendingSchema = z.object({ callId: z.string(), turn: z.number(), step: z.number(),
|
|
12
|
+
files: z.array(fileSchema.omit({ seq: true, tool: true, callId: true })),
|
|
13
|
+
}).strict();
|
|
14
|
+
const todoSchema = z.object({ content: z.string(), status: z.enum(['pending', 'in_progress', 'completed']) });
|
|
15
|
+
const goalSchema = z.discriminatedUnion('kind', [z.object({ kind: z.literal('none') }).strict(),
|
|
16
|
+
z.object({ kind: z.literal('recorded'), text: z.string(), status: z.string() }).strict()]);
|
|
17
|
+
const viewSchema = z.object({ request: z.string(), latestRequest: z.string(), phase: phaseSchema, goal: goalSchema,
|
|
18
|
+
todos: z.array(todoSchema).max(LIMIT.todos), activities: z.array(activitySchema).max(LIMIT.activities),
|
|
19
|
+
files: z.array(fileSchema).max(LIMIT.files), omittedActivities: z.number(), omittedFiles: z.number(), omittedTodos: z.number(),
|
|
20
|
+
}).strict();
|
|
21
|
+
const stateSchema = viewSchema.extend({ inherited: z.number(), cursor: z.number(), cwd: z.string(),
|
|
22
|
+
pending: z.array(pendingSchema).max(LIMIT.pending), approvals: z.array(z.string()).max(LIMIT.pending),
|
|
23
|
+
}).strict();
|
|
24
|
+
function object(value) {
|
|
25
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
26
|
+
return {};
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function parse(value) {
|
|
30
|
+
if (typeof value !== 'string')
|
|
31
|
+
return object(value);
|
|
32
|
+
// Avoid decoding unbounded tool arguments while folding old histories.
|
|
33
|
+
if (value.length > 2_000_000)
|
|
34
|
+
return {};
|
|
35
|
+
try {
|
|
36
|
+
return object(JSON.parse(value));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function text(value, max = 1600) { return typeof value === 'string' ? value.trim().slice(0, max) : ''; }
|
|
43
|
+
function filePath(path, cwd) {
|
|
44
|
+
if (typeof path !== 'string' || !path.trim() || path.length > 4096 || path.includes('\0'))
|
|
45
|
+
return '';
|
|
46
|
+
const paths = /^[a-z]:[\\/]|^\\\\/i.test(cwd || path) ? win32 : posix;
|
|
47
|
+
return paths.isAbsolute(path) ? paths.normalize(path) : cwd ? paths.resolve(cwd, path) : paths.normalize(path);
|
|
48
|
+
}
|
|
49
|
+
/** Only named filesystem tools are evidence; shell text is never treated as a file mutation. */
|
|
50
|
+
function fileCandidates(name, args, cwd) {
|
|
51
|
+
const path = filePath(args.file_path ?? args.path, cwd);
|
|
52
|
+
if (path && ['write', 'write_file'].includes(name))
|
|
53
|
+
return [{ path, operation: 'write' }];
|
|
54
|
+
if (path && ['edit', 'edit_file'].includes(name))
|
|
55
|
+
return [{ path, operation: 'edit' }];
|
|
56
|
+
if (path && name === 'str_replace_editor' && ['create', 'str_replace', 'insert'].includes(args.command)) {
|
|
57
|
+
return [{ path, operation: args.command === 'create' ? 'create' : 'edit' }];
|
|
58
|
+
}
|
|
59
|
+
// No parsing of apply_patch inside arbitrary shell commands or program text.
|
|
60
|
+
// The standalone patch tool's explicit file markers retain operation evidence.
|
|
61
|
+
if (name === 'apply_patch' && typeof args.patch === 'string') {
|
|
62
|
+
return [...args.patch.matchAll(/^\*\*\* (?:Add|Update|Delete) File: (.+)$/gm)].slice(0, LIMIT.files)
|
|
63
|
+
.flatMap(match => { const path = filePath(match[1], cwd); return path ? [{ path, operation: 'patch' }] : []; });
|
|
64
|
+
}
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
function description(name, args) {
|
|
68
|
+
return text(args.description, 240) || (['bash', 'pwsh'].includes(name) ? text(args.command, 240)
|
|
69
|
+
: text(args.file_path ?? args.path, 240) || text(args.query, 240) || text(args.action, 240));
|
|
70
|
+
}
|
|
71
|
+
function begin(state, data, seq, nested) {
|
|
72
|
+
const callId = text(nested ? data.subCallId : data.callId, 512), name = text(data.name, 120);
|
|
73
|
+
if (!callId || !name || state.activities.some(row => row.callId === callId))
|
|
74
|
+
return state;
|
|
75
|
+
const args = parse(data.arguments);
|
|
76
|
+
const activity = { callId, tool: name, description: description(name, args), seq, status: 'running',
|
|
77
|
+
parent: nested ? text(data.parentCallId, 512) : '' };
|
|
78
|
+
const activities = [...state.activities, activity];
|
|
79
|
+
return { ...state, activities: activities.slice(-LIMIT.activities),
|
|
80
|
+
omittedActivities: state.omittedActivities + Math.max(0, activities.length - LIMIT.activities),
|
|
81
|
+
pending: [...state.pending, { callId, turn: data.turn ?? -1, step: data.step ?? -1,
|
|
82
|
+
files: fileCandidates(name, args, state.cwd) }].slice(-LIMIT.pending) };
|
|
83
|
+
}
|
|
84
|
+
/** New tools can expose applied diffs through the existing presentation metadata. */
|
|
85
|
+
function metadataFiles(meta, cwd) {
|
|
86
|
+
const diffs = object(meta).diffs;
|
|
87
|
+
if (!Array.isArray(diffs))
|
|
88
|
+
return [];
|
|
89
|
+
return diffs.slice(0, LIMIT.files).flatMap(value => {
|
|
90
|
+
const diff = object(value), path = filePath(diff.path, cwd);
|
|
91
|
+
const valid = (diff.oldText === null || typeof diff.oldText === 'string') && typeof diff.newText === 'string';
|
|
92
|
+
return path && valid && diff.oldText !== diff.newText ? [{ path, operation: 'patch' }] : [];
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function finish(state, callId, isError, seq, turn = -1, step = -1, meta = {}) {
|
|
96
|
+
const pending = state.pending.find(row => row.callId === callId);
|
|
97
|
+
if (pending && turn >= 0 && (pending.turn !== turn || pending.step !== step))
|
|
98
|
+
return state;
|
|
99
|
+
const call = state.pending.find(row => row.callId === callId && (turn < 0 || row.turn === turn && row.step === step));
|
|
100
|
+
const activity = state.activities.find(row => row.callId === callId);
|
|
101
|
+
if (!call && (!activity || activity.status !== 'running'))
|
|
102
|
+
return state;
|
|
103
|
+
const activities = state.activities.map(row => row.callId === callId ? { ...row, status: isError ? 'failed' : 'succeeded' } : row);
|
|
104
|
+
const files = [...state.files];
|
|
105
|
+
const applied = metadataFiles(meta, state.cwd);
|
|
106
|
+
if (!isError && activity && call)
|
|
107
|
+
for (const file of applied.length ? applied : call.files) {
|
|
108
|
+
const index = files.findIndex(row => row.path === file.path);
|
|
109
|
+
if (index >= 0)
|
|
110
|
+
files.splice(index, 1);
|
|
111
|
+
files.push({ ...file, seq, tool: activity.tool, callId });
|
|
112
|
+
}
|
|
113
|
+
return { ...state, activities, pending: state.pending.filter(row => row !== call), files: files.slice(-LIMIT.files),
|
|
114
|
+
omittedFiles: state.omittedFiles + Math.max(0, files.length - LIMIT.files) };
|
|
115
|
+
}
|
|
116
|
+
/** Pure, bounded and idempotent for repeated event delivery. Fork history is not attributed to a child. */
|
|
117
|
+
export function foldTaskFeedback(state, event) {
|
|
118
|
+
if (event.seq < state.inherited || event.seq <= state.cursor)
|
|
119
|
+
return state;
|
|
120
|
+
const data = object(event.data), type = event.type;
|
|
121
|
+
let next = state;
|
|
122
|
+
if (type === 'user/message' && data.source?.kind === 'user') {
|
|
123
|
+
const request = text((Array.isArray(data.content) ? data.content : []).map(object)
|
|
124
|
+
.filter(block => block.type === 'text' && typeof block.text === 'string').map(block => block.text).join('\n'), 4000);
|
|
125
|
+
if (request)
|
|
126
|
+
next = { ...next, request: state.request || request, latestRequest: request };
|
|
127
|
+
}
|
|
128
|
+
if (type === 'goal/change') {
|
|
129
|
+
if (data.operation === 'clear')
|
|
130
|
+
next = { ...next, goal: { kind: 'none' } };
|
|
131
|
+
else if (text(data.goal?.objective))
|
|
132
|
+
next = { ...next, goal: { kind: 'recorded', text: text(data.goal.objective, 4000), status: text(data.goal.phase, 40) } };
|
|
133
|
+
}
|
|
134
|
+
if (type === 'todo/write' && Array.isArray(data.todos)) {
|
|
135
|
+
const todos = data.todos.slice(0, LIMIT.todos).flatMap((item) => {
|
|
136
|
+
const parsed = todoSchema.safeParse(item);
|
|
137
|
+
return parsed.success ? [{ ...parsed.data, content: text(parsed.data.content, 800) }] : [];
|
|
138
|
+
});
|
|
139
|
+
next = { ...next, todos, omittedTodos: data.todos.length - todos.length };
|
|
140
|
+
}
|
|
141
|
+
if (type === 'turn/start')
|
|
142
|
+
next = { ...next, phase: 'running', todos: [], omittedTodos: 0, approvals: [],
|
|
143
|
+
pending: [], activities: state.activities.map(row => row.status === 'running' ? { ...row, status: 'interrupted' } : row) };
|
|
144
|
+
if (type === 'turn/end')
|
|
145
|
+
next = { ...next, phase: data.reason?.kind === 'error' ? 'error' : data.reason?.kind === 'aborted' ? 'interrupted' : 'idle',
|
|
146
|
+
pending: [], approvals: [], activities: state.activities.map(row => row.status === 'running' ? { ...row, status: 'interrupted' } : row) };
|
|
147
|
+
if (type === 'approval/asked' && typeof data.id === 'string')
|
|
148
|
+
next = { ...next, phase: 'waiting', approvals: [...new Set([...state.approvals, data.id])].slice(-LIMIT.pending) };
|
|
149
|
+
if (type === 'approval/decided' && state.approvals.includes(data.id)) {
|
|
150
|
+
const approvals = state.approvals.filter(id => id !== data.id);
|
|
151
|
+
next = { ...next, approvals, phase: approvals.length ? 'waiting' : state.phase === 'waiting' ? 'running' : state.phase };
|
|
152
|
+
}
|
|
153
|
+
if (type === 'tool/call' || type === 'tool/ptc-dispatch-start')
|
|
154
|
+
next = begin(next, data, event.seq, type === 'tool/ptc-dispatch-start');
|
|
155
|
+
if (type === 'tool/result') {
|
|
156
|
+
const result = recordedToolResult(data.message);
|
|
157
|
+
if (result.kind === 'record')
|
|
158
|
+
next = finish(next, result.callId, result.isError, event.seq, data.turn, data.step, data.meta);
|
|
159
|
+
}
|
|
160
|
+
if (type === 'tool/ptc-dispatch' && typeof data.subCallId === 'string' && typeof data.isError === 'boolean') {
|
|
161
|
+
next = begin(next, data, event.seq, true);
|
|
162
|
+
next = finish(next, data.subCallId, data.isError, event.seq, -1, -1, data.meta);
|
|
163
|
+
}
|
|
164
|
+
return next === state ? state : { ...next, cursor: event.seq };
|
|
165
|
+
}
|
|
166
|
+
export const taskFeedbackProjection = {
|
|
167
|
+
key: 'superCodeFeedback', stateVersion: 1, stateSchema,
|
|
168
|
+
init: (header, inherited) => ({ request: '', latestRequest: '', goal: { kind: 'none' }, phase: 'idle', todos: [], activities: [], files: [],
|
|
169
|
+
omittedActivities: 0, omittedFiles: 0, omittedTodos: 0, pending: [], approvals: [], inherited, cursor: -1, cwd: header.cwd ?? '' }),
|
|
170
|
+
apply: foldTaskFeedback,
|
|
171
|
+
wire: { viewSchema, view: state => {
|
|
172
|
+
const { inherited: _inherited, cursor: _cursor, cwd: _cwd, pending: _pending, approvals: _approvals, ...view } = state;
|
|
173
|
+
return view;
|
|
174
|
+
} },
|
|
175
|
+
};
|
|
176
|
+
//# sourceMappingURL=task-feedback-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-feedback-projection.js","sourceRoot":"","sources":["../src/task-feedback-projection.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-super-code",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.8",
|
|
4
4
|
"description": "Task-focused coding, specialist teams, and durable task memory with directory and declarative presets for DeepSeek Harness.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -60,12 +60,15 @@
|
|
|
60
60
|
"locales"
|
|
61
61
|
],
|
|
62
62
|
"dependencies": {
|
|
63
|
+
"@modelcontextprotocol/sdk": "1.32.2",
|
|
63
64
|
"js-yaml": "^4.1.0",
|
|
64
|
-
"zod": "^4.
|
|
65
|
+
"zod": "^4.6.7"
|
|
65
66
|
},
|
|
66
67
|
"peerDependencies": {
|
|
67
68
|
"@deepseek-ai/cordis": "^4.0.2 || ^4.0.5-alpha.1",
|
|
68
69
|
"@deepseek-ai/dsh-agent": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
70
|
+
"@deepseek-ai/dsh-compaction": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
71
|
+
"@deepseek-ai/dsh-compaction-basic": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
69
72
|
"@deepseek-ai/dsh-llm": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
70
73
|
"@deepseek-ai/dsh-scope": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
71
74
|
"@deepseek-ai/dsh-session": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
@@ -73,12 +76,10 @@
|
|
|
73
76
|
"@deepseek-ai/dsh-settings": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
74
77
|
"@deepseek-ai/dsh-storage-domain": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
75
78
|
"@deepseek-ai/dsh-system-prompt": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
79
|
+
"@deepseek-ai/dsh-token-meter": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
76
80
|
"@deepseek-ai/dsh-tools": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
77
81
|
"@deepseek-ai/dsh-typert-protocol": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
78
|
-
"@deepseek-ai/schemastery": "^3.18.2 || ^3.18.5-alpha.1"
|
|
79
|
-
"@deepseek-ai/dsh-compaction-basic": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
80
|
-
"@deepseek-ai/dsh-compaction": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1",
|
|
81
|
-
"@deepseek-ai/dsh-token-meter": "^0.1.5-alpha.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.2.0-rc.1 || ^0.2.1-alpha.1"
|
|
82
|
+
"@deepseek-ai/schemastery": "^3.18.2 || ^3.18.5-alpha.1"
|
|
82
83
|
},
|
|
83
84
|
"peerDependenciesMeta": {
|
|
84
85
|
"@deepseek-ai/cordis": {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
- id: super-code
|
|
3
3
|
name: dsh-super-code/super-code
|
|
4
4
|
config:
|
|
5
|
-
presetVersion: 0.3.
|
|
5
|
+
presetVersion: 0.3.8
|
|
6
6
|
# Reuse the host backend in an agent-local realm, as shipped Harness presets do.
|
|
7
7
|
# The token meter remains host-owned; each agent owns its compaction lifecycle.
|
|
8
8
|
- id: compaction
|