kiokuko-dsh 0.1.98 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PERMISSIONS.md +52 -19
- package/README.ja.md +6 -12
- package/README.ko.md +12 -18
- package/README.md +7 -12
- package/README.zh-CN.md +12 -17
- package/THIRD_PARTY_NOTICES.md +5 -5
- package/dist/client.cjs +57 -4
- package/dist/client.d.ts +23 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/dsh/agenticreplay-command-surface.d.ts +5 -0
- package/dist/dsh/agenticreplay-command-surface.d.ts.map +1 -0
- package/dist/dsh/{orca-command-surface.js → agenticreplay-command-surface.js} +15 -15
- package/dist/dsh/agenticreplay-command-surface.js.map +1 -0
- package/dist/dsh/{orca-event-mapper.d.ts → agenticreplay-event-mapper.d.ts} +7 -7
- package/dist/dsh/agenticreplay-event-mapper.d.ts.map +1 -0
- package/dist/dsh/{orca-event-mapper.js → agenticreplay-event-mapper.js} +9 -9
- package/dist/dsh/agenticreplay-event-mapper.js.map +1 -0
- package/dist/dsh/agenticreplay-files.d.ts +21 -0
- package/dist/dsh/agenticreplay-files.d.ts.map +1 -0
- package/dist/dsh/{orca-files.js → agenticreplay-files.js} +32 -31
- package/dist/dsh/agenticreplay-files.js.map +1 -0
- package/dist/dsh/agenticreplay-hooks.d.ts +5 -0
- package/dist/dsh/agenticreplay-hooks.d.ts.map +1 -0
- package/dist/dsh/{orca-hooks.js → agenticreplay-hooks.js} +2 -2
- package/dist/dsh/agenticreplay-hooks.js.map +1 -0
- package/dist/dsh/{orca-host.d.ts → agenticreplay-host.d.ts} +5 -5
- package/dist/dsh/agenticreplay-host.d.ts.map +1 -0
- package/dist/dsh/{orca-host.js → agenticreplay-host.js} +15 -15
- package/dist/dsh/agenticreplay-host.js.map +1 -0
- package/dist/dsh/agenticreplay-libraries.d.ts +85 -0
- package/dist/dsh/agenticreplay-libraries.d.ts.map +1 -0
- package/dist/dsh/agenticreplay-libraries.js +23 -0
- package/dist/dsh/agenticreplay-libraries.js.map +1 -0
- package/dist/dsh/agenticreplay-read-service.d.ts +21 -0
- package/dist/dsh/agenticreplay-read-service.d.ts.map +1 -0
- package/dist/dsh/{orca-read-service.js → agenticreplay-read-service.js} +27 -26
- package/dist/dsh/agenticreplay-read-service.js.map +1 -0
- package/dist/dsh/{orca-recorder.d.ts → agenticreplay-recorder.d.ts} +21 -21
- package/dist/dsh/agenticreplay-recorder.d.ts.map +1 -0
- package/dist/dsh/{orca-recorder.js → agenticreplay-recorder.js} +38 -48
- package/dist/dsh/agenticreplay-recorder.js.map +1 -0
- package/dist/dsh/{orca-security.d.ts → agenticreplay-security.d.ts} +5 -5
- package/dist/dsh/agenticreplay-security.d.ts.map +1 -0
- package/dist/dsh/{orca-security.js → agenticreplay-security.js} +29 -28
- package/dist/dsh/agenticreplay-security.js.map +1 -0
- package/dist/dsh/agenticreplay-session-choice.d.ts +24 -0
- package/dist/dsh/agenticreplay-session-choice.d.ts.map +1 -0
- package/dist/dsh/{orca-session-choice.js → agenticreplay-session-choice.js} +10 -10
- package/dist/dsh/agenticreplay-session-choice.js.map +1 -0
- package/dist/dsh/agenticreplay-status-presentation.d.ts +6 -0
- package/dist/dsh/agenticreplay-status-presentation.d.ts.map +1 -0
- package/dist/dsh/{orca-status-presentation.js → agenticreplay-status-presentation.js} +14 -14
- package/dist/dsh/agenticreplay-status-presentation.js.map +1 -0
- package/dist/dsh/agenticreplay-store.d.ts +16 -0
- package/dist/dsh/agenticreplay-store.d.ts.map +1 -0
- package/dist/dsh/agenticreplay-store.js +42 -0
- package/dist/dsh/agenticreplay-store.js.map +1 -0
- package/dist/dsh/agenticreplay-types.d.ts +64 -0
- package/dist/dsh/agenticreplay-types.d.ts.map +1 -0
- package/dist/dsh/{orca-types.js → agenticreplay-types.js} +5 -5
- package/dist/dsh/agenticreplay-types.js.map +1 -0
- package/dist/dsh/composition.d.ts +1 -1
- package/dist/dsh/composition.d.ts.map +1 -1
- package/dist/dsh/composition.js +4 -1
- package/dist/dsh/composition.js.map +1 -1
- package/dist/dsh/config.d.ts +8 -3
- package/dist/dsh/config.d.ts.map +1 -1
- package/dist/dsh/config.js +4 -2
- package/dist/dsh/config.js.map +1 -1
- package/dist/dsh/core/host.d.ts.map +1 -1
- package/dist/dsh/core/host.js +6 -25
- package/dist/dsh/core/host.js.map +1 -1
- package/dist/dsh/core/index.d.ts +256 -1
- package/dist/dsh/core/index.d.ts.map +1 -1
- package/dist/dsh/core/index.js +5 -2
- package/dist/dsh/core/index.js.map +1 -1
- package/dist/dsh/decisions/akinator-classification.d.ts +3 -3
- package/dist/dsh/decisions/akinator-classification.d.ts.map +1 -1
- package/dist/dsh/decisions/akinator-classification.js +17 -56
- package/dist/dsh/decisions/akinator-classification.js.map +1 -1
- package/dist/dsh/execution-support.d.ts +10 -0
- package/dist/dsh/execution-support.d.ts.map +1 -1
- package/dist/dsh/execution-support.js +25 -9
- package/dist/dsh/execution-support.js.map +1 -1
- package/dist/dsh/host-adapter/memory-application-host.d.ts +2 -0
- package/dist/dsh/host-adapter/memory-application-host.d.ts.map +1 -1
- package/dist/dsh/host-adapter/memory-application-host.js +1 -0
- package/dist/dsh/host-adapter/memory-application-host.js.map +1 -1
- package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
- package/dist/dsh/host-adapter/routing.js +1 -22
- package/dist/dsh/host-adapter/routing.js.map +1 -1
- package/dist/dsh/host-adapter.d.ts +2 -2
- package/dist/dsh/host-adapter.d.ts.map +1 -1
- package/dist/dsh/host-adapter.js +16 -10
- package/dist/dsh/host-adapter.js.map +1 -1
- package/dist/dsh/index.d.ts +486 -4
- package/dist/dsh/index.d.ts.map +1 -1
- package/dist/dsh/index.js +18 -15
- package/dist/dsh/index.js.map +1 -1
- package/dist/dsh/intake-clarification.js +2 -2
- package/dist/dsh/intake-clarification.js.map +1 -1
- package/dist/dsh/legacy-session-codecs.js +627 -7
- package/dist/dsh/legacy-session-codecs.js.map +3 -3
- package/dist/dsh/lisp/approval-settings.d.ts +6 -0
- package/dist/dsh/lisp/approval-settings.d.ts.map +1 -0
- package/dist/dsh/lisp/approval-settings.js +39 -0
- package/dist/dsh/lisp/approval-settings.js.map +1 -0
- package/dist/dsh/lisp/approval.d.ts +16 -2
- package/dist/dsh/lisp/approval.d.ts.map +1 -1
- package/dist/dsh/lisp/approval.js +32 -8
- package/dist/dsh/lisp/approval.js.map +1 -1
- package/dist/dsh/lisp/ci.js +3 -3
- package/dist/dsh/lisp/ci.js.map +1 -1
- package/dist/dsh/lisp/contracts.d.ts +4 -0
- package/dist/dsh/lisp/contracts.d.ts.map +1 -1
- package/dist/dsh/lisp/contracts.js +1 -0
- package/dist/dsh/lisp/contracts.js.map +1 -1
- package/dist/dsh/lisp/hot-store.d.ts +2 -0
- package/dist/dsh/lisp/hot-store.d.ts.map +1 -1
- package/dist/dsh/lisp/hot-store.js +2 -2
- package/dist/dsh/lisp/hot-store.js.map +1 -1
- package/dist/dsh/lisp/hot-tools.d.ts.map +1 -1
- package/dist/dsh/lisp/hot-tools.js +4 -2
- package/dist/dsh/lisp/hot-tools.js.map +1 -1
- package/dist/dsh/lisp/manager.d.ts +2 -0
- package/dist/dsh/lisp/manager.d.ts.map +1 -1
- package/dist/dsh/lisp/manager.js +24 -7
- package/dist/dsh/lisp/manager.js.map +1 -1
- package/dist/dsh/lisp/package-manager.d.ts +9 -0
- package/dist/dsh/lisp/package-manager.d.ts.map +1 -0
- package/dist/dsh/lisp/package-manager.js +62 -0
- package/dist/dsh/lisp/package-manager.js.map +1 -0
- package/dist/dsh/lisp/packages.d.ts +28 -0
- package/dist/dsh/lisp/packages.d.ts.map +1 -0
- package/dist/dsh/lisp/packages.js +260 -0
- package/dist/dsh/lisp/packages.js.map +1 -0
- package/dist/dsh/lisp/proposal-batch.d.ts +1 -0
- package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -1
- package/dist/dsh/lisp/proposal-batch.js +5 -3
- package/dist/dsh/lisp/proposal-batch.js.map +1 -1
- package/dist/dsh/lisp/surface.d.ts.map +1 -1
- package/dist/dsh/lisp/surface.js +98 -33
- package/dist/dsh/lisp/surface.js.map +1 -1
- package/dist/dsh/lisp/worker.js +2 -2
- package/dist/dsh/lisp/worker.js.map +1 -1
- package/dist/dsh/live-approval-config.d.ts +23 -0
- package/dist/dsh/live-approval-config.d.ts.map +1 -0
- package/dist/dsh/live-approval-config.js +25 -0
- package/dist/dsh/live-approval-config.js.map +1 -0
- package/dist/dsh/memory-application.d.ts +3 -1
- package/dist/dsh/memory-application.d.ts.map +1 -1
- package/dist/dsh/memory-application.js +2 -2
- package/dist/dsh/memory-application.js.map +1 -1
- package/dist/dsh/modules/enno.js +1 -1
- package/dist/dsh/modules/enno.js.map +1 -1
- package/dist/dsh/native-search.d.ts +3 -0
- package/dist/dsh/native-search.d.ts.map +1 -0
- package/dist/dsh/native-search.js +31 -0
- package/dist/dsh/native-search.js.map +1 -0
- package/dist/dsh/on-demand-intake.d.ts +7 -2
- package/dist/dsh/on-demand-intake.d.ts.map +1 -1
- package/dist/dsh/on-demand-intake.js +45 -10
- package/dist/dsh/on-demand-intake.js.map +1 -1
- package/dist/dsh/orchestration/managed-agent-executor.d.ts +20 -14
- package/dist/dsh/orchestration/managed-agent-executor.d.ts.map +1 -1
- package/dist/dsh/orchestration/managed-agent-executor.js +18 -6
- package/dist/dsh/orchestration/managed-agent-executor.js.map +1 -1
- package/dist/dsh/paths.d.ts +1 -1
- package/dist/dsh/paths.d.ts.map +1 -1
- package/dist/dsh/paths.js +2 -2
- package/dist/dsh/paths.js.map +1 -1
- package/dist/dsh/setup.d.ts +1 -1
- package/dist/dsh/setup.d.ts.map +1 -1
- package/dist/dsh/setup.js +2 -0
- package/dist/dsh/setup.js.map +1 -1
- package/dist/dsh/skill-prompts.json +1 -1
- package/dist/index.js +2 -2
- package/dist/locale/en.json +1 -1
- package/dist/locale/ja.json +1 -1
- package/dist/locale/ko.json +1 -1
- package/dist/locale/zh-CN.json +1 -1
- package/dist/memory/application.d.ts +4 -1
- package/dist/memory/application.d.ts.map +1 -1
- package/dist/memory/application.js +4 -3
- package/dist/memory/application.js.map +1 -1
- package/docs/{orca-recording.md → agenticreplay-recording.md} +56 -38
- package/docs/agenticreplay-verification.md +54 -0
- package/docs/core-modules.md +2 -2
- package/docs/deep-planning.md +4 -4
- package/docs/dependency-security.md +20 -1
- package/docs/dsh-plugin.md +21 -24
- package/docs/execution-support.md +2 -2
- package/docs/getting-started.ja.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/harness-map.md +1 -1
- package/docs/keyboard-shortcuts.md +1 -2
- package/docs/lisp-verification.md +1 -1
- package/docs/lisp.md +44 -2
- package/docs/memory-application.md +1 -1
- package/docs/memory-lifecycle-verification.md +1 -1
- package/docs/model-selection.ja.md +1 -1
- package/docs/model-selection.md +1 -1
- package/docs/on-demand-intake.md +6 -6
- package/docs/pr72-ci-verification.md +3 -4
- package/docs/session-history-repair.md +1 -1
- package/docs/token-efficiency.md +2 -2
- package/docs/tool-exposure.md +4 -4
- package/docs/typed-decisions.md +13 -8
- package/dsh/cordis.patch.yml +1 -1
- package/lisp/supervisor.mjs +10 -4
- package/lisp/tools.lisp +20 -3
- package/migrations/034_agenticreplay.sql +42 -0
- package/package.json +45 -24
- package/scripts/repair-continuation-source.mjs +21 -13
- package/scripts/verify-lisp-vendor.mjs +4 -2
- package/skills/kiokuko-lisp/SKILL.md +155 -145
- package/skills/kiokuko-soul/SKILL.md +3 -3
- package/dist/dsh/memory-review-presentation.d.ts +0 -10
- package/dist/dsh/memory-review-presentation.d.ts.map +0 -1
- package/dist/dsh/memory-review-presentation.js +0 -29
- package/dist/dsh/memory-review-presentation.js.map +0 -1
- package/dist/dsh/orca-command-surface.d.ts +0 -5
- package/dist/dsh/orca-command-surface.d.ts.map +0 -1
- package/dist/dsh/orca-command-surface.js.map +0 -1
- package/dist/dsh/orca-event-mapper.d.ts.map +0 -1
- package/dist/dsh/orca-event-mapper.js.map +0 -1
- package/dist/dsh/orca-files.d.ts +0 -21
- package/dist/dsh/orca-files.d.ts.map +0 -1
- package/dist/dsh/orca-files.js.map +0 -1
- package/dist/dsh/orca-hooks.d.ts +0 -5
- package/dist/dsh/orca-hooks.d.ts.map +0 -1
- package/dist/dsh/orca-hooks.js.map +0 -1
- package/dist/dsh/orca-host.d.ts.map +0 -1
- package/dist/dsh/orca-host.js.map +0 -1
- package/dist/dsh/orca-read-service.d.ts +0 -20
- package/dist/dsh/orca-read-service.d.ts.map +0 -1
- package/dist/dsh/orca-read-service.js.map +0 -1
- package/dist/dsh/orca-recorder.d.ts.map +0 -1
- package/dist/dsh/orca-recorder.js.map +0 -1
- package/dist/dsh/orca-security.d.ts.map +0 -1
- package/dist/dsh/orca-security.js.map +0 -1
- package/dist/dsh/orca-session-choice.d.ts +0 -24
- package/dist/dsh/orca-session-choice.d.ts.map +0 -1
- package/dist/dsh/orca-session-choice.js.map +0 -1
- package/dist/dsh/orca-status-presentation.d.ts +0 -6
- package/dist/dsh/orca-status-presentation.d.ts.map +0 -1
- package/dist/dsh/orca-status-presentation.js.map +0 -1
- package/dist/dsh/orca-store.d.ts +0 -16
- package/dist/dsh/orca-store.d.ts.map +0 -1
- package/dist/dsh/orca-store.js +0 -42
- package/dist/dsh/orca-store.js.map +0 -1
- package/dist/dsh/orca-types.d.ts +0 -64
- package/dist/dsh/orca-types.d.ts.map +0 -1
- package/dist/dsh/orca-types.js.map +0 -1
- package/docs/orca-verification.md +0 -61
- /package/docs/{ORCAREPLAY-LICENSE.txt → AGENTICREPLAY-LICENSE.txt} +0 -0
|
@@ -1,38 +1,39 @@
|
|
|
1
|
+
import { loadAgenticReplayLibrary } from './agenticreplay-libraries.js';
|
|
1
2
|
import { createHash } from 'node:crypto';
|
|
2
3
|
import { constants } from 'node:fs';
|
|
3
4
|
import { lstat, mkdir, open, realpath } from 'node:fs/promises';
|
|
4
5
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
6
|
-
export const
|
|
6
|
+
import { AgenticReplayError } from './agenticreplay-types.js';
|
|
7
|
+
export const AGENTICREPLAY_RUN_ID = /^run_[0-9a-f]{6,32}$/u;
|
|
7
8
|
export const workspaceKey = (root) => createHash('sha256').update(root).digest('hex');
|
|
8
|
-
export function
|
|
9
|
+
export function scrubAgenticReplayText(text) {
|
|
9
10
|
return text.replace(/\b(?:sk|ghp|github_pat|xox[baprs])[-_][A-Za-z0-9_-]{8,}/gu, '[REDACTED]')
|
|
10
11
|
.replace(/\b(?:authorization|cookie|set-cookie|api[-_ ]?key|password|access[-_ ]?token|secret)\s*[:=]\s*[^\r\n,;}]+/giu, '[REDACTED]')
|
|
11
12
|
.replace(/\bBearer\s+[A-Za-z0-9._~+/-]+=*/giu, 'Bearer [REDACTED]')
|
|
12
13
|
.replace(/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/gu, '[REDACTED]');
|
|
13
14
|
}
|
|
14
15
|
/** Budget is charged before copying or escaping. Runtime objects/accessors are rejected. */
|
|
15
|
-
export function
|
|
16
|
+
export function projectAgenticReplayJson(value, maxBytes) {
|
|
16
17
|
let remaining = maxBytes;
|
|
17
18
|
const seen = new Set();
|
|
18
19
|
function charge(n) { remaining -= n; if (remaining < 0)
|
|
19
|
-
throw new
|
|
20
|
+
throw new AgenticReplayError('queue_limit'); }
|
|
20
21
|
function visit(item, depth) {
|
|
21
22
|
charge(16);
|
|
22
23
|
if (depth > 32)
|
|
23
|
-
throw new
|
|
24
|
+
throw new AgenticReplayError('projection_depth');
|
|
24
25
|
if (item === null || typeof item === 'boolean')
|
|
25
26
|
return item;
|
|
26
27
|
if (typeof item === 'number')
|
|
27
28
|
return Number.isFinite(item) ? item : null;
|
|
28
29
|
if (typeof item === 'string') {
|
|
29
30
|
charge(item.length * 6);
|
|
30
|
-
return
|
|
31
|
+
return scrubAgenticReplayText(item);
|
|
31
32
|
}
|
|
32
33
|
if (typeof item !== 'object')
|
|
33
34
|
return undefined;
|
|
34
35
|
if (seen.has(item))
|
|
35
|
-
throw new
|
|
36
|
+
throw new AgenticReplayError('projection_cycle');
|
|
36
37
|
if (!Array.isArray(item) && Object.getPrototypeOf(item) !== Object.prototype && Object.getPrototypeOf(item) !== null)
|
|
37
38
|
return '[runtime object omitted]';
|
|
38
39
|
seen.add(item);
|
|
@@ -51,7 +52,7 @@ export function projectOrcaJson(value, maxBytes) {
|
|
|
51
52
|
const descriptor = Object.getOwnPropertyDescriptor(item, key);
|
|
52
53
|
if (!descriptor || !('value' in descriptor))
|
|
53
54
|
continue;
|
|
54
|
-
const safeKey =
|
|
55
|
+
const safeKey = scrubAgenticReplayText(key);
|
|
55
56
|
if (safeKey === '__proto__' || safeKey === 'constructor')
|
|
56
57
|
continue;
|
|
57
58
|
result[safeKey] = visit(descriptor.value, depth + 1);
|
|
@@ -68,7 +69,7 @@ export async function checkPrivatePath(target, directory) {
|
|
|
68
69
|
const stat = await lstat(target);
|
|
69
70
|
if (stat.isSymbolicLink() || (directory ? !stat.isDirectory() : !stat.isFile())
|
|
70
71
|
|| (process.getuid !== undefined && (stat.uid !== process.getuid() || (stat.mode & 0o077) !== 0))) {
|
|
71
|
-
throw new
|
|
72
|
+
throw new AgenticReplayError('unsafe_path');
|
|
72
73
|
}
|
|
73
74
|
return stat;
|
|
74
75
|
}
|
|
@@ -83,20 +84,20 @@ export async function privateDirectory(target) {
|
|
|
83
84
|
await checkPrivatePath(target, true);
|
|
84
85
|
}
|
|
85
86
|
/** Validate every store ancestor without chmod-ing existing user directories. */
|
|
86
|
-
export async function
|
|
87
|
+
export async function prepareAgenticReplayParent(root) {
|
|
87
88
|
if (!path.isAbsolute(root) || root === path.parse(root).root || root.includes('\0'))
|
|
88
|
-
throw new
|
|
89
|
+
throw new AgenticReplayError('unsafe_path');
|
|
89
90
|
const ancestors = [];
|
|
90
91
|
let current = root;
|
|
91
92
|
while (true) {
|
|
92
93
|
try {
|
|
93
94
|
const stat = await lstat(current);
|
|
94
95
|
if (!stat.isDirectory() || stat.isSymbolicLink())
|
|
95
|
-
throw new
|
|
96
|
+
throw new AgenticReplayError('unsafe_path');
|
|
96
97
|
if (process.getuid && (stat.uid !== process.getuid() || (stat.mode & 0o022) !== 0))
|
|
97
|
-
throw new
|
|
98
|
+
throw new AgenticReplayError('unsafe_store_parent');
|
|
98
99
|
if (await realpath(current) !== current)
|
|
99
|
-
throw new
|
|
100
|
+
throw new AgenticReplayError('noncanonical_store_parent');
|
|
100
101
|
break;
|
|
101
102
|
}
|
|
102
103
|
catch (error) {
|
|
@@ -108,9 +109,9 @@ export async function prepareOrcaParent(root) {
|
|
|
108
109
|
}
|
|
109
110
|
for (const directory of ancestors.reverse())
|
|
110
111
|
await privateDirectory(directory);
|
|
111
|
-
await privateDirectory(path.join(root, '.
|
|
112
|
-
await privateDirectory(path.join(root, '.
|
|
113
|
-
const ignore = path.join(root, '.
|
|
112
|
+
await privateDirectory(path.join(root, '.agenticreplay'));
|
|
113
|
+
await privateDirectory(path.join(root, '.agenticreplay', 'runs'));
|
|
114
|
+
const ignore = path.join(root, '.agenticreplay', '.gitignore');
|
|
114
115
|
try {
|
|
115
116
|
await checkPrivatePath(ignore, false);
|
|
116
117
|
}
|
|
@@ -118,18 +119,18 @@ export async function prepareOrcaParent(root) {
|
|
|
118
119
|
if (error.code !== 'ENOENT')
|
|
119
120
|
throw error;
|
|
120
121
|
}
|
|
121
|
-
const { ensureRunsDir } = await
|
|
122
|
+
const { ensureRunsDir } = await loadAgenticReplayLibrary('core');
|
|
122
123
|
await ensureRunsDir(root);
|
|
123
124
|
await checkPrivatePath(ignore, false);
|
|
124
|
-
return path.join(root, '.
|
|
125
|
+
return path.join(root, '.agenticreplay', 'runs');
|
|
125
126
|
}
|
|
126
127
|
export async function checkedRunDir(root, runId) {
|
|
127
|
-
if (!
|
|
128
|
-
throw new
|
|
129
|
-
for (const directory of [path.join(root, '.
|
|
128
|
+
if (!AGENTICREPLAY_RUN_ID.test(runId) || !path.isAbsolute(root) || await realpath(root) !== root)
|
|
129
|
+
throw new AgenticReplayError('trace_not_found');
|
|
130
|
+
for (const directory of [path.join(root, '.agenticreplay'), path.join(root, '.agenticreplay', 'runs'), path.join(root, '.agenticreplay', 'runs', runId)]) {
|
|
130
131
|
await checkPrivatePath(directory, true);
|
|
131
132
|
}
|
|
132
|
-
return path.join(root, '.
|
|
133
|
+
return path.join(root, '.agenticreplay', 'runs', runId);
|
|
133
134
|
}
|
|
134
135
|
export async function openPrivateFile(target) {
|
|
135
136
|
const before = await checkPrivatePath(target, false);
|
|
@@ -137,7 +138,7 @@ export async function openPrivateFile(target) {
|
|
|
137
138
|
const after = await handle.stat();
|
|
138
139
|
if (before.ino !== after.ino || before.dev !== after.dev) {
|
|
139
140
|
await handle.close();
|
|
140
|
-
throw new
|
|
141
|
+
throw new AgenticReplayError('file_changed');
|
|
141
142
|
}
|
|
142
143
|
return handle;
|
|
143
144
|
}
|
|
@@ -146,15 +147,15 @@ export async function readPrivateFile(target, limit) {
|
|
|
146
147
|
try {
|
|
147
148
|
const stat = await handle.stat();
|
|
148
149
|
if (stat.size > limit)
|
|
149
|
-
throw new
|
|
150
|
+
throw new AgenticReplayError('read_limit');
|
|
150
151
|
const buffer = Buffer.alloc(Math.min(stat.size + 1, limit + 1));
|
|
151
152
|
const { bytesRead } = await handle.read(buffer, 0, buffer.length, 0);
|
|
152
153
|
if (bytesRead !== stat.size || (await handle.stat()).size !== stat.size)
|
|
153
|
-
throw new
|
|
154
|
+
throw new AgenticReplayError('file_changed');
|
|
154
155
|
return buffer.subarray(0, bytesRead);
|
|
155
156
|
}
|
|
156
157
|
finally {
|
|
157
158
|
await handle.close();
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
|
-
//# sourceMappingURL=
|
|
161
|
+
//# sourceMappingURL=agenticreplay-security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-security.js","sourceRoot":"","sources":["../../src/dsh/agenticreplay-security.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type DshAgenticReplayBinding, type WithAgenticReplayIndex } from './agenticreplay-types.js';
|
|
2
|
+
import type { DshUserQuestionAgent, DshUserQuestions } from './user-interaction.js';
|
|
3
|
+
/**
|
|
4
|
+
* One recording decision per session, with explicit commands superseding pending answers.
|
|
5
|
+
* Without a saved choice, `askOnStart` decides between asking the human and recording
|
|
6
|
+
* directly; the default asks, so only explicit configuration authorizes capture silently.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DshAgenticReplaySessionChoices {
|
|
9
|
+
#private;
|
|
10
|
+
private readonly withIndex;
|
|
11
|
+
private readonly questions?;
|
|
12
|
+
private readonly askOnStart;
|
|
13
|
+
constructor(withIndex: WithAgenticReplayIndex, questions?: DshUserQuestions | undefined, askOnStart?: boolean);
|
|
14
|
+
allows(binding: DshAgenticReplayBinding): boolean;
|
|
15
|
+
status(binding: DshAgenticReplayBinding): Promise<{
|
|
16
|
+
selectionError?: string;
|
|
17
|
+
sessionRecording: string;
|
|
18
|
+
}>;
|
|
19
|
+
set(binding: DshAgenticReplayBinding, enabled: boolean): Promise<void>;
|
|
20
|
+
prepare(binding: DshAgenticReplayBinding, agent: DshUserQuestionAgent, signal: AbortSignal, isCurrent: () => boolean): Promise<void>;
|
|
21
|
+
forget(binding: DshAgenticReplayBinding): void;
|
|
22
|
+
shutdown(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=agenticreplay-session-choice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-session-choice.d.ts","sourceRoot":"","sources":["../../src/dsh/agenticreplay-session-choice.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,uBAAuB,EAAE,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACxH,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAanF;;;;GAIG;AACH,qBAAa,8BAA8B;;IAG7B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA0B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IACzF,OAAO,CAAC,QAAQ,CAAC,UAAU;gBADA,SAAS,EAAE,sBAAsB,EAAmB,SAAS,CAAC,EAAE,gBAAgB,YAAA,EAC1F,UAAU,UAAO;IAUpC,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;IAa3C,MAAM,CAAC,OAAO,EAAE,uBAAuB;;;;IAMvC,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5E,OAAO,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCpI,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAMxC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { abortable } from './boundary-worker.js';
|
|
2
|
-
import {
|
|
2
|
+
import { AgenticReplayError } from './agenticreplay-types.js';
|
|
3
3
|
/**
|
|
4
4
|
* One recording decision per session, with explicit commands superseding pending answers.
|
|
5
5
|
* Without a saved choice, `askOnStart` decides between asking the human and recording
|
|
6
6
|
* directly; the default asks, so only explicit configuration authorizes capture silently.
|
|
7
7
|
*/
|
|
8
|
-
export class
|
|
8
|
+
export class DshAgenticReplaySessionChoices {
|
|
9
9
|
withIndex;
|
|
10
10
|
questions;
|
|
11
11
|
askOnStart;
|
|
@@ -34,7 +34,7 @@ export class DshOrcaSessionChoices {
|
|
|
34
34
|
entry.choice = choice;
|
|
35
35
|
}).catch(() => {
|
|
36
36
|
entry.error = 'recording_choice_persistence_failed';
|
|
37
|
-
throw new
|
|
37
|
+
throw new AgenticReplayError(entry.error);
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
await entry.loaded;
|
|
@@ -50,7 +50,7 @@ export class DshOrcaSessionChoices {
|
|
|
50
50
|
}
|
|
51
51
|
async set(binding, enabled) {
|
|
52
52
|
if (this.#closed)
|
|
53
|
-
throw new
|
|
53
|
+
throw new AgenticReplayError('recording_host_closed');
|
|
54
54
|
const entry = this.#entry(binding), revision = ++entry.revision;
|
|
55
55
|
entry.controller.abort();
|
|
56
56
|
entry.attempted = true;
|
|
@@ -58,7 +58,7 @@ export class DshOrcaSessionChoices {
|
|
|
58
58
|
entry.choice = false;
|
|
59
59
|
const write = entry.writes.then(async () => {
|
|
60
60
|
if (this.#closed)
|
|
61
|
-
throw new
|
|
61
|
+
throw new AgenticReplayError('recording_host_closed');
|
|
62
62
|
await this.withIndex(store => store.saveRecordingChoice(binding, enabled));
|
|
63
63
|
if (entry.revision === revision && !this.#closed) {
|
|
64
64
|
entry.choice = enabled;
|
|
@@ -67,7 +67,7 @@ export class DshOrcaSessionChoices {
|
|
|
67
67
|
}).catch(() => {
|
|
68
68
|
if (entry.revision === revision)
|
|
69
69
|
entry.error = 'recording_choice_persistence_failed';
|
|
70
|
-
throw new
|
|
70
|
+
throw new AgenticReplayError('recording_choice_persistence_failed');
|
|
71
71
|
});
|
|
72
72
|
entry.writes = write.catch(() => undefined);
|
|
73
73
|
entry.loaded = entry.writes;
|
|
@@ -94,11 +94,11 @@ export class DshOrcaSessionChoices {
|
|
|
94
94
|
}
|
|
95
95
|
const revision = entry.revision;
|
|
96
96
|
const combined = AbortSignal.any([signal, entry.controller.signal]);
|
|
97
|
-
const id = 'kioku-
|
|
97
|
+
const id = 'kioku-agenticreplay-recording';
|
|
98
98
|
const result = await abortable(this.questions.ask({
|
|
99
|
-
agent, signal: combined, questions: [{ id, header: '
|
|
99
|
+
agent, signal: combined, questions: [{ id, header: 'AgenticReplay · 詳細ログ',
|
|
100
100
|
question: 'このチャットの詳細ログを記録しますか?',
|
|
101
|
-
detail: 'モデルの応答やツールの実行結果をローカルに保存し、後で確認・HTML出力できます。本文を含み、秘密情報の除去は完全ではありません。記録しなくても作業は進められます。後から /kioku-
|
|
101
|
+
detail: 'モデルの応答やツールの実行結果をローカルに保存し、後で確認・HTML出力できます。本文を含み、秘密情報の除去は完全ではありません。記録しなくても作業は進められます。後から /kioku-agenticreplay start・stop で変更できます。',
|
|
102
102
|
options: [{ label: '記録する', description: 'この選択以降の動作を記録します。' },
|
|
103
103
|
{ label: '記録しない', description: '詳細ログを作らずに続行します。' }] }],
|
|
104
104
|
}), combined);
|
|
@@ -136,4 +136,4 @@ export class DshOrcaSessionChoices {
|
|
|
136
136
|
this.#entries.clear();
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
//# sourceMappingURL=
|
|
139
|
+
//# sourceMappingURL=agenticreplay-session-choice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-session-choice.js","sourceRoot":"","sources":["../../src/dsh/agenticreplay-session-choice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DshAgenticReplayHostServices } from './agenticreplay-types.js';
|
|
2
|
+
type Status = ReturnType<DshAgenticReplayHostServices['recorder']['status']> & Awaited<ReturnType<DshAgenticReplayHostServices['sessionRecordingStatus']>>;
|
|
3
|
+
/** Present the current session first; retain internal diagnostics in status --json. */
|
|
4
|
+
export declare function formatDshAgenticReplayStatus(status: Status, storeRoot: string): string;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=agenticreplay-status-presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-status-presentation.d.ts","sourceRoot":"","sources":["../../src/dsh/agenticreplay-status-presentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AAE5E,KAAK,MAAM,GAAG,UAAU,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,GACxE,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAA;AAE/E,uFAAuF;AACvF,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA2CtF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
2
|
/** Present the current session first; retain internal diagnostics in status --json. */
|
|
3
|
-
export function
|
|
3
|
+
export function formatDshAgenticReplayStatus(status, storeRoot) {
|
|
4
4
|
const trace = status.trace;
|
|
5
5
|
const states = { starting: '記録を開始しています', recording: '記録中', finalizing: 'ログを保存しています',
|
|
6
6
|
completed: '記録完了', incomplete: '記録に欠落があります', failed: '記録に失敗しました' };
|
|
@@ -8,7 +8,7 @@ export function formatDshOrcaStatus(status, storeRoot) {
|
|
|
8
8
|
let next;
|
|
9
9
|
if (status.capability === 'disabled') {
|
|
10
10
|
title = '機能が無効です';
|
|
11
|
-
next = '設定で
|
|
11
|
+
next = '設定で agenticReplay.enabled を true にして DSH を再読み込みしてください。';
|
|
12
12
|
}
|
|
13
13
|
else if (status.capability === 'unavailable') {
|
|
14
14
|
title = '記録機能を利用できません';
|
|
@@ -21,22 +21,22 @@ export function formatDshOrcaStatus(status, storeRoot) {
|
|
|
21
21
|
else if (trace) {
|
|
22
22
|
title = states[trace.state];
|
|
23
23
|
next = trace.state === 'starting' || trace.state === 'recording'
|
|
24
|
-
? '停止して保存: /kioku-
|
|
25
|
-
: trace.state === 'finalizing' ? '保存完了後に /kioku-
|
|
26
|
-
: trace.state === 'completed' ? `HTML 出力: /kioku-
|
|
27
|
-
: '詳細: /kioku-
|
|
24
|
+
? '停止して保存: /kioku-agenticreplay stop'
|
|
25
|
+
: trace.state === 'finalizing' ? '保存完了後に /kioku-agenticreplay status で確認できます。'
|
|
26
|
+
: trace.state === 'completed' ? `HTML 出力: /kioku-agenticreplay export ${trace.agenticreplay_run_id}`
|
|
27
|
+
: '詳細: /kioku-agenticreplay status --json';
|
|
28
28
|
}
|
|
29
29
|
else if (status.sessionRecording === 'enabled') {
|
|
30
30
|
title = '記録待機中';
|
|
31
|
-
next = '次のモデル応答・ツール実行から記録します。停止: /kioku-
|
|
31
|
+
next = '次のモデル応答・ツール実行から記録します。停止: /kioku-agenticreplay stop';
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
title = status.sessionRecording === 'disabled' ? '記録停止中' : '未開始(記録するか未選択)';
|
|
35
|
-
next = '記録を開始: /kioku-
|
|
35
|
+
next = '記録を開始: /kioku-agenticreplay start';
|
|
36
36
|
}
|
|
37
|
-
const lines = [`
|
|
37
|
+
const lines = [`AgenticReplay: ${title}`, next];
|
|
38
38
|
if (trace) {
|
|
39
|
-
lines.push(`保存先: ${join(trace.store_root, '.
|
|
39
|
+
lines.push(`保存先: ${join(trace.store_root, '.agenticreplay', 'runs', trace.agenticreplay_run_id)}`);
|
|
40
40
|
// The recorder finalizes event_count on close; zero during capture is not a measured count.
|
|
41
41
|
if (trace.ended_at !== null && trace.state !== 'failed')
|
|
42
42
|
lines.push(`記録済み: ${trace.event_count} イベント`);
|
|
@@ -45,12 +45,12 @@ export function formatDshOrcaStatus(status, storeRoot) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
else if (status.capability === 'available') {
|
|
48
|
-
lines.push(`保存先(記録開始後): ${join(storeRoot, '.
|
|
48
|
+
lines.push(`保存先(記録開始後): ${join(storeRoot, '.agenticreplay', 'runs')}`);
|
|
49
49
|
}
|
|
50
50
|
if (status.selectionError === 'recording_question_unavailable')
|
|
51
51
|
lines.push('注意: 記録するかの確認を表示できませんでした。');
|
|
52
|
-
if (next !== '詳細: /kioku-
|
|
53
|
-
lines.push('詳細: /kioku-
|
|
52
|
+
if (next !== '詳細: /kioku-agenticreplay status --json')
|
|
53
|
+
lines.push('詳細: /kioku-agenticreplay status --json');
|
|
54
54
|
return lines.join('\n');
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=
|
|
56
|
+
//# sourceMappingURL=agenticreplay-status-presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-status-presentation.js","sourceRoot":"","sources":["../../src/dsh/agenticreplay-status-presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { SqliteDatabase } from '../db/adapter.js';
|
|
2
|
+
import type { DshAgenticReplayBinding, AgenticReplayTrace } from './agenticreplay-types.js';
|
|
3
|
+
/** Only metadata is stored here; no event content or host objects. */
|
|
4
|
+
export declare class DshAgenticReplayStore {
|
|
5
|
+
private readonly db;
|
|
6
|
+
constructor(db: SqliteDatabase);
|
|
7
|
+
recordingChoice(binding: DshAgenticReplayBinding): boolean | undefined;
|
|
8
|
+
saveRecordingChoice(binding: DshAgenticReplayBinding, enabled: boolean): void;
|
|
9
|
+
save(trace: AgenticReplayTrace): void;
|
|
10
|
+
link(runId: string, logicalRunId: string): void;
|
|
11
|
+
list(sessionId: string, workspaceKey: string): AgenticReplayTrace[];
|
|
12
|
+
get(sessionId: string, workspaceKey: string, runId: string): AgenticReplayTrace | undefined;
|
|
13
|
+
/** Caller supplies proof of a dead owner. Never repair arbitrary process-owned rows. */
|
|
14
|
+
markOwnerIncomplete(instance: string): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=agenticreplay-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-store.d.ts","sourceRoot":"","sources":["../../src/dsh/agenticreplay-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAG3F,sEAAsE;AACtE,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAC/C,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,GAAG,SAAS;IAMtE,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAM7E,IAAI,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAKrC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAG/C,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAInE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI3F,wFAAwF;IACxF,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAI5C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const fields = ['agenticreplay_run_id', 'dsh_session_id', 'recorder_instance_id', 'recording_generation', 'workspace_key', 'store_root', 'session_cwd', 'capture_format_version', 'state', 'started_at', 'ended_at', 'last_error_code', 'missing_event_count', 'unresolved_call_count', 'event_count', 'recorded_bytes', 'export_input_bytes'];
|
|
2
|
+
/** Only metadata is stored here; no event content or host objects. */
|
|
3
|
+
export class DshAgenticReplayStore {
|
|
4
|
+
db;
|
|
5
|
+
constructor(db) {
|
|
6
|
+
this.db = db;
|
|
7
|
+
}
|
|
8
|
+
recordingChoice(binding) {
|
|
9
|
+
const row = this.db.prepare(`SELECT enabled FROM dsh_agenticreplay_session_choices
|
|
10
|
+
WHERE dsh_session_id=? AND workspace_root=? AND session_cwd=? AND store_root=?`)
|
|
11
|
+
.get(binding.sessionId, binding.workspaceRoot, binding.sessionCwd, binding.storeRoot);
|
|
12
|
+
return row === undefined ? undefined : row.enabled === 1;
|
|
13
|
+
}
|
|
14
|
+
saveRecordingChoice(binding, enabled) {
|
|
15
|
+
this.db.prepare(`INSERT INTO dsh_agenticreplay_session_choices VALUES (?, ?, ?, ?, ?, ?)
|
|
16
|
+
ON CONFLICT(dsh_session_id, workspace_root, session_cwd, store_root)
|
|
17
|
+
DO UPDATE SET enabled=excluded.enabled, updated_at=excluded.updated_at`)
|
|
18
|
+
.run(binding.sessionId, binding.workspaceRoot, binding.sessionCwd, binding.storeRoot, enabled ? 1 : 0, new Date().toISOString());
|
|
19
|
+
}
|
|
20
|
+
save(trace) {
|
|
21
|
+
this.db.prepare(`INSERT INTO dsh_agenticreplay_traces (${fields.join(',')}) VALUES (${fields.map(() => '?').join(',')})
|
|
22
|
+
ON CONFLICT(agenticreplay_run_id) DO UPDATE SET ${fields.slice(8).map(f => `${f}=excluded.${f}`).join(',')}`)
|
|
23
|
+
.run(...fields.map(f => trace[f]));
|
|
24
|
+
}
|
|
25
|
+
link(runId, logicalRunId) {
|
|
26
|
+
this.db.prepare('INSERT OR IGNORE INTO dsh_agenticreplay_trace_run_links VALUES (?, ?)').run(runId, logicalRunId);
|
|
27
|
+
}
|
|
28
|
+
list(sessionId, workspaceKey) {
|
|
29
|
+
return this.db.prepare('SELECT * FROM dsh_agenticreplay_traces WHERE dsh_session_id=? AND workspace_key=? ORDER BY started_at DESC, agenticreplay_run_id DESC LIMIT 200')
|
|
30
|
+
.all(sessionId, workspaceKey);
|
|
31
|
+
}
|
|
32
|
+
get(sessionId, workspaceKey, runId) {
|
|
33
|
+
return this.db.prepare('SELECT * FROM dsh_agenticreplay_traces WHERE dsh_session_id=? AND workspace_key=? AND agenticreplay_run_id=?')
|
|
34
|
+
.get(sessionId, workspaceKey, runId);
|
|
35
|
+
}
|
|
36
|
+
/** Caller supplies proof of a dead owner. Never repair arbitrary process-owned rows. */
|
|
37
|
+
markOwnerIncomplete(instance) {
|
|
38
|
+
this.db.prepare(`UPDATE dsh_agenticreplay_traces SET state='incomplete', last_error_code='owner_terminated', ended_at=?
|
|
39
|
+
WHERE recorder_instance_id=? AND state IN ('starting','recording','finalizing')`).run(new Date().toISOString(), instance);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=agenticreplay-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-store.js","sourceRoot":"","sources":["../../src/dsh/agenticreplay-store.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,GAAG,CAAC,sBAAsB,EAAC,gBAAgB,EAAC,sBAAsB,EAAC,sBAAsB,EAAC,eAAe,EAAC,YAAY,EAAC,aAAa,EAAC,wBAAwB,EAAC,OAAO,EAAC,YAAY,EAAC,UAAU,EAAC,iBAAiB,EAAC,qBAAqB,EAAC,uBAAuB,EAAC,aAAa,EAAC,gBAAgB,EAAC,oBAAoB,CAAU,CAAA;AACvU,sEAAsE;AACtE,MAAM,OAAO,qBAAqB;IACH;IAA7B,YAA6B,EAAkB;QAAlB,OAAE,GAAF,EAAE,CAAgB;IAAG,CAAC;IACnD,eAAe,CAAC,OAAgC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;qFACqD,CAAC;aAC/E,GAAG,CAAsB,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5G,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAA;IAC1D,CAAC;IACD,mBAAmB,CAAC,OAAgC,EAAE,OAAgB;QACpE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;6EAEyD,CAAC;aACvE,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IACpI,CAAC;IACD,IAAI,CAAC,KAAyB;QAC5B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wDACjE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;aAC5G,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,CAAC;IACD,IAAI,CAAC,KAAa,EAAE,YAAoB;QACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IACnH,CAAC;IACD,IAAI,CAAC,SAAiB,EAAE,YAAoB;QAC1C,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iJAAiJ,CAAC;aACtK,GAAG,CAAC,SAAS,EAAE,YAAY,CAAoC,CAAA;IACpE,CAAC;IACD,GAAG,CAAC,SAAiB,EAAE,YAAoB,EAAE,KAAa;QACxD,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8GAA8G,CAAC;aACnI,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAA8C,CAAA;IACrF,CAAC;IACD,wFAAwF;IACxF,mBAAmB,CAAC,QAAgB;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;sFACkE,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAA;IAC7H,CAAC;CACF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { AgenticReplayConfig } from './config.js';
|
|
2
|
+
import type { DshAgenticReplayRecorder } from './agenticreplay-recorder.js';
|
|
3
|
+
import type { DshAgenticReplayStore } from './agenticreplay-store.js';
|
|
4
|
+
export interface DshAgenticReplayBinding {
|
|
5
|
+
readonly sessionId: string;
|
|
6
|
+
readonly workspaceRoot: string;
|
|
7
|
+
readonly sessionCwd: string;
|
|
8
|
+
readonly storeRoot: string;
|
|
9
|
+
readonly kiokukoRunId?: string;
|
|
10
|
+
}
|
|
11
|
+
export type AgenticReplayState = 'starting' | 'recording' | 'finalizing' | 'completed' | 'incomplete' | 'failed';
|
|
12
|
+
export interface AgenticReplayTrace {
|
|
13
|
+
agenticreplay_run_id: string;
|
|
14
|
+
dsh_session_id: string;
|
|
15
|
+
recorder_instance_id: string;
|
|
16
|
+
recording_generation: string;
|
|
17
|
+
workspace_key: string;
|
|
18
|
+
store_root: string;
|
|
19
|
+
session_cwd: string;
|
|
20
|
+
capture_format_version: number;
|
|
21
|
+
state: AgenticReplayState;
|
|
22
|
+
started_at: string;
|
|
23
|
+
ended_at: string | null;
|
|
24
|
+
last_error_code: string | null;
|
|
25
|
+
missing_event_count: number;
|
|
26
|
+
unresolved_call_count: number;
|
|
27
|
+
event_count: number;
|
|
28
|
+
recorded_bytes: number;
|
|
29
|
+
export_input_bytes: number;
|
|
30
|
+
}
|
|
31
|
+
export type WithAgenticReplayIndex = <T>(operation: (store: DshAgenticReplayStore) => T | PromiseLike<T>) => Promise<T>;
|
|
32
|
+
export interface DshAgenticReplayHostServices {
|
|
33
|
+
readonly config: AgenticReplayConfig;
|
|
34
|
+
resolveSessionBinding(agent: object, session: object): DshAgenticReplayBinding | undefined;
|
|
35
|
+
resolveModelBinding(sessionId: string): DshAgenticReplayBinding | undefined;
|
|
36
|
+
canRecord(binding: DshAgenticReplayBinding): boolean;
|
|
37
|
+
sessionRecordingStatus(binding: DshAgenticReplayBinding): Promise<{
|
|
38
|
+
sessionRecording: string;
|
|
39
|
+
selectionError?: string;
|
|
40
|
+
}>;
|
|
41
|
+
setSessionRecording(binding: DshAgenticReplayBinding, enabled: boolean): Promise<void>;
|
|
42
|
+
readonly withIndex: WithAgenticReplayIndex;
|
|
43
|
+
readonly recorder: DshAgenticReplayRecorder;
|
|
44
|
+
closeSessionRecording(sessionId: string, reason: string): Promise<void>;
|
|
45
|
+
shutdown(): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
/** Structural subset verified against DSH 0.2.1-alpha.2. No runtime DSH dependency. */
|
|
48
|
+
export interface AgenticReplayToolExecution {
|
|
49
|
+
readonly token: symbol;
|
|
50
|
+
readonly parent?: symbol;
|
|
51
|
+
readonly callId: string;
|
|
52
|
+
readonly rootCallId: string;
|
|
53
|
+
readonly name: string;
|
|
54
|
+
readonly arguments: unknown;
|
|
55
|
+
readonly agent?: {
|
|
56
|
+
readonly session?: object;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export declare class AgenticReplayError extends Error {
|
|
60
|
+
readonly code: string;
|
|
61
|
+
constructor(code: string);
|
|
62
|
+
}
|
|
63
|
+
export declare function agenticReplayErrorCode(error: unknown): string;
|
|
64
|
+
//# sourceMappingURL=agenticreplay-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-types.d.ts","sourceRoot":"","sources":["../../src/dsh/agenticreplay-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class AgenticReplayError extends Error {
|
|
2
2
|
code;
|
|
3
3
|
constructor(code) {
|
|
4
4
|
super(code);
|
|
5
5
|
this.code = code;
|
|
6
|
-
this.name = '
|
|
6
|
+
this.name = 'AgenticReplayError';
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
export function
|
|
10
|
-
if (error instanceof
|
|
9
|
+
export function agenticReplayErrorCode(error) {
|
|
10
|
+
if (error instanceof AgenticReplayError)
|
|
11
11
|
return error.code;
|
|
12
12
|
const code = error?.code;
|
|
13
13
|
return code === 'ENOSPC' || code === 'EACCES' || code === 'EPERM' ? code : 'recording_io_failed';
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=agenticreplay-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agenticreplay-types.js","sourceRoot":"","sources":["../../src/dsh/agenticreplay-types.ts"],"names":[],"mappings":"AAsDA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACtB;IAArB,YAAqB,IAAY;QAAI,KAAK,CAAC,IAAI,CAAC,CAAC;QAA5B,SAAI,GAAJ,IAAI,CAAQ;QAAiB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAAC,CAAC;CACrF;AACD,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,KAAK,YAAY,kBAAkB;QAAE,OAAO,KAAK,CAAC,IAAI,CAAA;IAC1D,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAA;IACvD,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAA;AAClG,CAAC"}
|
|
@@ -85,7 +85,7 @@ export interface DshCompositionHost {
|
|
|
85
85
|
observe: boolean;
|
|
86
86
|
inputMode: import('./efficiency.js').FinalizationInputMode;
|
|
87
87
|
}) => void;
|
|
88
|
-
readonly
|
|
88
|
+
readonly agenticReplay?: import('./agenticreplay-types.js').DshAgenticReplayHostServices;
|
|
89
89
|
readonly skills?: DshSkillContext['skills'];
|
|
90
90
|
readonly systemPrompt?: Parameters<typeof mountSoulPrompt>[0]['systemPrompt'];
|
|
91
91
|
readonly runtime?: DshRuntime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAA;AAGzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAI5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACxE,OAAO,EAAoC,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAI/G,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAA0D,MAAM,sBAAsB,CAAA;AAChH,OAAO,EAAE,aAAa,EAA2B,KAAK,eAAe,EAA0B,MAAM,kBAAkB,CAAA;AACvH,OAAO,EAAmD,KAAK,cAAc,EAAgC,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAmC,MAAM,qBAAqB,CAAA;AACtN,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAsB,KAAK,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/dsh/composition.ts"],"names":[],"mappings":"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"}
|
package/dist/dsh/composition.js
CHANGED
|
@@ -16,6 +16,7 @@ import { DshSkillPrompts } from './skill-prompts.js';
|
|
|
16
16
|
import { mountDshIdleLifecycle, mountDshSessionLifecycle } from './session-bridge.js';
|
|
17
17
|
import { mountDshToolPolicy } from './tool-policy.js';
|
|
18
18
|
import { mountDshModelTools } from './tools.js';
|
|
19
|
+
import { mountNativeSearch } from './native-search.js';
|
|
19
20
|
import { DshPonytailModes, mountDshPonytailCommand } from './commands.js';
|
|
20
21
|
import { mountStandardSkillProvider } from './standard-skill-provider.js';
|
|
21
22
|
import { mountSoulPrompt } from './prompt-policy.js';
|
|
@@ -316,6 +317,8 @@ export async function mountDshComposition(ctx, host, lisp, prompts = host.skillP
|
|
|
316
317
|
on: (name, listener, options) => ctx.on(name, listener, options),
|
|
317
318
|
}, host.toolPolicy));
|
|
318
319
|
ingressDisposers.push(mountDshModelTools({ tools: registration }, host.toolHost, host.modelToolDefinitionsChanged));
|
|
320
|
+
// Improve missing-target guidance while preserving the native ripgrep definition and policies.
|
|
321
|
+
ingressDisposers.push(mountNativeSearch(ctx));
|
|
319
322
|
}
|
|
320
323
|
if (host.intakeGate !== undefined) {
|
|
321
324
|
if (host.mapPreStep === undefined)
|
|
@@ -361,7 +364,7 @@ export async function mountDshComposition(ctx, host, lisp, prompts = host.skillP
|
|
|
361
364
|
stopIngress();
|
|
362
365
|
const setupFailures = [error];
|
|
363
366
|
try {
|
|
364
|
-
await host.
|
|
367
|
+
await host.agenticReplay?.shutdown();
|
|
365
368
|
}
|
|
366
369
|
catch (cleanupError) {
|
|
367
370
|
setupFailures.push(cleanupError);
|