@namzu/cli 26.2.0 → 27.0.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/CHANGELOG.md +312 -0
- package/README.md +49 -34
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -1
- package/dist/checkpoints/store.d.ts +17 -4
- package/dist/checkpoints/store.d.ts.map +1 -1
- package/dist/checkpoints/store.js +20 -5
- package/dist/checkpoints/store.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +23 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +41 -2
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts +69 -2
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +214 -134
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/eval.js +1 -1
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/provider-wait.d.ts +5 -5
- package/dist/commands/provider-wait.d.ts.map +1 -1
- package/dist/commands/provider-wait.js +2 -2
- package/dist/commands/resident.d.ts.map +1 -1
- package/dist/commands/resident.js +2 -1
- package/dist/commands/resident.js.map +1 -1
- package/dist/commands/run-flags.d.ts +7 -7
- package/dist/commands/run-flags.js +4 -4
- package/dist/commands/run-stream.d.ts +16 -12
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +142 -98
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts +6 -4
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +129 -45
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/serve.js +2 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/state.js +8 -8
- package/dist/commands/state.js.map +1 -1
- package/dist/config/load.d.ts +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +17 -5
- package/dist/config/load.js.map +1 -1
- package/dist/config/run-limits.d.ts +20 -8
- package/dist/config/run-limits.d.ts.map +1 -1
- package/dist/config/run-limits.js +28 -46
- package/dist/config/run-limits.js.map +1 -1
- package/dist/config/schema.d.ts +44 -19
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/tool-result-screens.js +1 -1
- package/dist/context/directories.d.ts +37 -0
- package/dist/context/directories.d.ts.map +1 -0
- package/dist/context/directories.js +69 -0
- package/dist/context/directories.js.map +1 -0
- package/dist/context/environment.d.ts +55 -0
- package/dist/context/environment.d.ts.map +1 -1
- package/dist/context/environment.js +96 -0
- package/dist/context/environment.js.map +1 -1
- package/dist/context/project-tracker.d.ts +3 -3
- package/dist/context/project-tracker.d.ts.map +1 -1
- package/dist/context/project-tracker.js +3 -3
- package/dist/context/project-tracker.js.map +1 -1
- package/dist/context/project.d.ts +1 -1
- package/dist/context/project.js +1 -1
- package/dist/context/sandbox.d.ts +22 -3
- package/dist/context/sandbox.d.ts.map +1 -1
- package/dist/context/sandbox.js +42 -4
- package/dist/context/sandbox.js.map +1 -1
- package/dist/doctor/checks/chain.d.ts +1 -1
- package/dist/doctor/checks/chain.js +5 -5
- package/dist/doctor/checks/chain.js.map +1 -1
- package/dist/doctor/checks/invariants.d.ts +2 -2
- package/dist/doctor/checks/invariants.js +5 -5
- package/dist/doctor/checks/invariants.js.map +1 -1
- package/dist/doctor/checks/logging.js +1 -1
- package/dist/doctor/checks/logging.js.map +1 -1
- package/dist/doctor/checks/sandbox.js +1 -1
- package/dist/doctor/checks/sandbox.js.map +1 -1
- package/dist/doctor/checks/session-export.d.ts +1 -1
- package/dist/doctor/checks/session-export.js +2 -2
- package/dist/doctor/checks/session-export.js.map +1 -1
- package/dist/doctor/checks/telemetry.d.ts +1 -1
- package/dist/doctor/checks/telemetry.js +1 -1
- package/dist/doctor/registry.js +2 -2
- package/dist/doctor/registry.js.map +1 -1
- package/dist/exit-codes.d.ts +2 -2
- package/dist/exit-codes.js +2 -2
- package/dist/integrations/mcp/servers.d.ts +1 -1
- package/dist/integrations/providers/chain-capabilities.d.ts +6 -6
- package/dist/integrations/providers/chain-capabilities.js +8 -8
- package/dist/integrations/providers/chain-capabilities.js.map +1 -1
- package/dist/integrations/providers/index.d.ts +1 -1
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/index.js.map +1 -1
- package/dist/integrations/providers/register.d.ts +1 -1
- package/dist/integrations/providers/register.js +1 -1
- package/dist/integrations/providers/registry.d.ts +74 -1
- package/dist/integrations/providers/registry.d.ts.map +1 -1
- package/dist/integrations/providers/registry.js +75 -0
- package/dist/integrations/providers/registry.js.map +1 -1
- package/dist/integrations/resident/inspection.d.ts +4 -1
- package/dist/integrations/resident/inspection.d.ts.map +1 -1
- package/dist/integrations/resident/inspection.js +53 -34
- package/dist/integrations/resident/inspection.js.map +1 -1
- package/dist/integrations/resident/learning-storage.d.ts +7 -2
- package/dist/integrations/resident/learning-storage.d.ts.map +1 -1
- package/dist/integrations/resident/learning-storage.js +12 -8
- package/dist/integrations/resident/learning-storage.js.map +1 -1
- package/dist/integrations/resident/runner-store.d.ts +1 -1
- package/dist/integrations/resident/runner-store.d.ts.map +1 -1
- package/dist/integrations/resident/runner-store.js +5 -2
- package/dist/integrations/resident/runner-store.js.map +1 -1
- package/dist/integrations/resident/runner-worker.js +1 -0
- package/dist/integrations/resident/runner-worker.js.map +1 -1
- package/dist/integrations/resident/session-log-reads.d.ts +37 -0
- package/dist/integrations/resident/session-log-reads.d.ts.map +1 -0
- package/dist/integrations/resident/session-log-reads.js +125 -0
- package/dist/integrations/resident/session-log-reads.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts +2 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +15 -13
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/resident/storage.d.ts +23 -1
- package/dist/integrations/resident/storage.d.ts.map +1 -1
- package/dist/integrations/resident/storage.js +60 -17
- package/dist/integrations/resident/storage.js.map +1 -1
- package/dist/integrations/resident/tool-evidence.d.ts +4 -2
- package/dist/integrations/resident/tool-evidence.d.ts.map +1 -1
- package/dist/integrations/resident/tool-evidence.js +36 -30
- package/dist/integrations/resident/tool-evidence.js.map +1 -1
- package/dist/integrations/resident/verification.d.ts +2 -2
- package/dist/integrations/resident/verification.d.ts.map +1 -1
- package/dist/integrations/resident/verification.js +4 -4
- package/dist/integrations/resident/verification.js.map +1 -1
- package/dist/integrations/sessions/checkpoint-view.d.ts +13 -0
- package/dist/integrations/sessions/checkpoint-view.d.ts.map +1 -0
- package/dist/integrations/sessions/checkpoint-view.js +48 -0
- package/dist/integrations/sessions/checkpoint-view.js.map +1 -0
- package/dist/integrations/sessions/context-inventory.js +1 -1
- package/dist/integrations/sessions/context-inventory.js.map +1 -1
- package/dist/integrations/sessions/conversation-search.d.ts +16 -20
- package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
- package/dist/integrations/sessions/conversation-search.js +305 -731
- package/dist/integrations/sessions/conversation-search.js.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.d.ts +4 -4
- package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js.map +1 -1
- package/dist/integrations/sessions/evidence-recall.d.ts +40 -2
- package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-recall.js +41 -97
- package/dist/integrations/sessions/evidence-recall.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts +153 -85
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +414 -484
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/task-context.d.ts +15 -2
- package/dist/integrations/sessions/task-context.d.ts.map +1 -1
- package/dist/integrations/sessions/task-context.js +34 -11
- package/dist/integrations/sessions/task-context.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts +13 -6
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.js +148 -263
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/integrations/state/home.d.ts +4 -16
- package/dist/integrations/state/home.d.ts.map +1 -1
- package/dist/integrations/state/home.js +6 -42
- package/dist/integrations/state/home.js.map +1 -1
- package/dist/integrations/state/project.d.ts +6 -7
- package/dist/integrations/state/project.d.ts.map +1 -1
- package/dist/integrations/state/project.js +7 -9
- package/dist/integrations/state/project.js.map +1 -1
- package/dist/integrations/state/report.d.ts +27 -41
- package/dist/integrations/state/report.d.ts.map +1 -1
- package/dist/integrations/state/report.js +172 -464
- package/dist/integrations/state/report.js.map +1 -1
- package/dist/integrations/state/retention.d.ts +18 -0
- package/dist/integrations/state/retention.d.ts.map +1 -0
- package/dist/integrations/state/retention.js +18 -0
- package/dist/integrations/state/retention.js.map +1 -0
- package/dist/integrations/subagents/activity.d.ts +36 -31
- package/dist/integrations/subagents/activity.d.ts.map +1 -1
- package/dist/integrations/subagents/activity.js +27 -23
- package/dist/integrations/subagents/activity.js.map +1 -1
- package/dist/integrations/subagents/batches.d.ts +91 -0
- package/dist/integrations/subagents/batches.d.ts.map +1 -0
- package/dist/integrations/subagents/batches.js +172 -0
- package/dist/integrations/subagents/batches.js.map +1 -0
- package/dist/integrations/subagents/parent.d.ts +26 -11
- package/dist/integrations/subagents/parent.d.ts.map +1 -1
- package/dist/integrations/subagents/parent.js +13 -28
- package/dist/integrations/subagents/parent.js.map +1 -1
- package/dist/integrations/subagents/policy.d.ts +2 -2
- package/dist/integrations/subagents/policy.d.ts.map +1 -1
- package/dist/integrations/subagents/policy.js +2 -2
- package/dist/integrations/subagents/policy.js.map +1 -1
- package/dist/integrations/subagents/replay.d.ts +91 -26
- package/dist/integrations/subagents/replay.d.ts.map +1 -1
- package/dist/integrations/subagents/replay.js +216 -114
- package/dist/integrations/subagents/replay.js.map +1 -1
- package/dist/integrations/subagents/runtime.d.ts +50 -26
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +132 -126
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/subagents/saved-agents.d.ts +57 -0
- package/dist/integrations/subagents/saved-agents.d.ts.map +1 -0
- package/dist/integrations/subagents/saved-agents.js +102 -0
- package/dist/integrations/subagents/saved-agents.js.map +1 -0
- package/dist/integrations/subagents/slash.d.ts +55 -0
- package/dist/integrations/subagents/slash.d.ts.map +1 -0
- package/dist/integrations/subagents/slash.js +45 -0
- package/dist/integrations/subagents/slash.js.map +1 -0
- package/dist/integrations/telemetry/session-export.d.ts +6 -6
- package/dist/integrations/telemetry/session-export.d.ts.map +1 -1
- package/dist/integrations/telemetry/session-export.js +2 -2
- package/dist/memory/presentation.d.ts +11 -0
- package/dist/memory/presentation.d.ts.map +1 -1
- package/dist/memory/presentation.js +25 -0
- package/dist/memory/presentation.js.map +1 -1
- package/dist/memory/store.d.ts +13 -7
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +37 -11
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/typed.d.ts +116 -0
- package/dist/memory/typed.d.ts.map +1 -0
- package/dist/memory/typed.js +336 -0
- package/dist/memory/typed.js.map +1 -0
- package/dist/permissions/checks.d.ts +1 -1
- package/dist/permissions/checks.js +1 -1
- package/dist/permissions/headless-trust.d.ts +2 -2
- package/dist/permissions/headless-trust.d.ts.map +1 -1
- package/dist/permissions/headless-trust.js +3 -3
- package/dist/permissions/headless-trust.js.map +1 -1
- package/dist/permissions/mode.d.ts +4 -4
- package/dist/permissions/mode.js +1 -1
- package/dist/permissions/rules.d.ts +1 -1
- package/dist/permissions/rules.js +1 -1
- package/dist/termination.d.ts +75 -0
- package/dist/termination.d.ts.map +1 -0
- package/dist/termination.js +143 -0
- package/dist/termination.js.map +1 -0
- package/dist/tui/AgentExplorer.d.ts +2 -2
- package/dist/tui/AgentExplorer.js +4 -4
- package/dist/tui/AgentExplorer.js.map +1 -1
- package/dist/tui/App.d.ts +9 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +458 -304
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +1 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +8 -0
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +25 -2
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/Picker.d.ts +14 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +598 -132
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/agent.d.ts +208 -132
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +523 -313
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/conversation-evidence-view.js +3 -3
- package/dist/tui/conversation-evidence-view.js.map +1 -1
- package/dist/tui/conversation-history.d.ts +4 -21
- package/dist/tui/conversation-history.d.ts.map +1 -1
- package/dist/tui/conversation-history.js +4 -28
- package/dist/tui/conversation-history.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +27 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/log-pane.js +1 -1
- package/dist/tui/markdownParser.d.ts +1 -1
- package/dist/tui/markdownParser.js +1 -1
- package/dist/tui/model-choices.d.ts.map +1 -1
- package/dist/tui/model-choices.js +20 -1
- package/dist/tui/model-choices.js.map +1 -1
- package/dist/tui/permission-review.d.ts +16 -0
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +25 -2
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/provider-list.d.ts +206 -41
- package/dist/tui/provider-list.d.ts.map +1 -1
- package/dist/tui/provider-list.js +248 -52
- package/dist/tui/provider-list.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +29 -40
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +70 -61
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/terminal-choice-text.d.ts +22 -0
- package/dist/tui/terminal-choice-text.d.ts.map +1 -1
- package/dist/tui/terminal-choice-text.js +81 -0
- package/dist/tui/terminal-choice-text.js.map +1 -1
- package/dist/tui/{run-interruption.d.ts → turn-interruption.d.ts} +4 -4
- package/dist/tui/turn-interruption.d.ts.map +1 -0
- package/dist/tui/{run-interruption.js → turn-interruption.js} +20 -20
- package/dist/tui/turn-interruption.js.map +1 -0
- package/dist/tui/turn-limits-settings.d.ts +39 -0
- package/dist/tui/turn-limits-settings.d.ts.map +1 -0
- package/dist/tui/{run-limits-settings.js → turn-limits-settings.js} +18 -18
- package/dist/tui/turn-limits-settings.js.map +1 -0
- package/dist/tui/types.d.ts +3 -3
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/user-commands/store.d.ts +1 -1
- package/dist/user-commands/store.js +1 -1
- package/package.json +8 -8
- package/dist/integrations/sessions/compaction-evidence.d.ts +0 -5
- package/dist/integrations/sessions/compaction-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/compaction-evidence.js +0 -59
- package/dist/integrations/sessions/compaction-evidence.js.map +0 -1
- package/dist/integrations/sessions/database.d.ts +0 -5
- package/dist/integrations/sessions/database.d.ts.map +0 -1
- package/dist/integrations/sessions/database.js +0 -34
- package/dist/integrations/sessions/database.js.map +0 -1
- package/dist/integrations/sessions/paths.d.ts +0 -7
- package/dist/integrations/sessions/paths.d.ts.map +0 -1
- package/dist/integrations/sessions/paths.js +0 -14
- package/dist/integrations/sessions/paths.js.map +0 -1
- package/dist/integrations/sessions/run-discovery.d.ts +0 -24
- package/dist/integrations/sessions/run-discovery.d.ts.map +0 -1
- package/dist/integrations/sessions/run-discovery.js +0 -142
- package/dist/integrations/sessions/run-discovery.js.map +0 -1
- package/dist/integrations/sessions/turn-evidence.d.ts +0 -129
- package/dist/integrations/sessions/turn-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/turn-evidence.js +0 -517
- package/dist/integrations/sessions/turn-evidence.js.map +0 -1
- package/dist/integrations/subagents/history.d.ts +0 -26
- package/dist/integrations/subagents/history.d.ts.map +0 -1
- package/dist/integrations/subagents/history.js +0 -76
- package/dist/integrations/subagents/history.js.map +0 -1
- package/dist/integrations/subagents/runs.d.ts +0 -72
- package/dist/integrations/subagents/runs.d.ts.map +0 -1
- package/dist/integrations/subagents/runs.js +0 -155
- package/dist/integrations/subagents/runs.js.map +0 -1
- package/dist/tui/run-interruption.d.ts.map +0 -1
- package/dist/tui/run-interruption.js.map +0 -1
- package/dist/tui/run-limits-settings.d.ts +0 -39
- package/dist/tui/run-limits-settings.d.ts.map +0 -1
- package/dist/tui/run-limits-settings.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-evidence.d.ts","sourceRoot":"","sources":["../../../src/integrations/resident/tool-evidence.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"tool-evidence.d.ts","sourceRoot":"","sources":["../../../src/integrations/resident/tool-evidence.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,qBAAqB,EAO1B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAOvD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE9D;AAwBD,wBAAsB,0BAA0B,CAC/C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAiClB;AAED,2FAA2F;AAC3F,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,qBAAqB,EAC9B,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC,EAC9D,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,mDA8DrB"}
|
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import { constants } from 'node:fs';
|
|
2
2
|
import { lstat, open } from 'node:fs/promises';
|
|
3
3
|
import { join, relative, resolve, sep } from 'node:path';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { SessionPaths, asSessionId, asTurnId, createResidentToolEvidenceSource, createSessionEvidenceSource, isEntityId, } from '@namzu/sdk';
|
|
5
|
+
import { SESSION_HEAD_BYTES, readSessionStart } from './session-log-reads.js';
|
|
6
6
|
const ATTEMPT_DOCUMENT_BYTES = 65_536;
|
|
7
|
+
const UUID = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/iu;
|
|
8
|
+
/** Pursuit and claim ids are UUIDs the resident agenda minted; they name no kernel entity. */
|
|
9
|
+
export function isResidentUuid(value) {
|
|
10
|
+
return typeof value === 'string' && UUID.test(value);
|
|
11
|
+
}
|
|
7
12
|
function identity(value) {
|
|
8
13
|
if (!value || typeof value !== 'object')
|
|
9
14
|
throw new Error('Invalid attempt receipt.');
|
|
10
15
|
const v = value;
|
|
11
16
|
if (v.version !== 1 ||
|
|
12
|
-
!
|
|
13
|
-
!
|
|
14
|
-
|
|
15
|
-
|
|
17
|
+
!isResidentUuid(v.pursuitId) ||
|
|
18
|
+
!isResidentUuid(v.claimId) ||
|
|
19
|
+
!isEntityId(v.sessionId, 'session') ||
|
|
20
|
+
!isEntityId(v.turnId, 'turn'))
|
|
16
21
|
throw new Error('Invalid attempt identity.');
|
|
17
22
|
return {
|
|
18
23
|
pursuitId: v.pursuitId,
|
|
19
24
|
claimId: v.claimId,
|
|
20
25
|
sessionId: asSessionId(v.sessionId),
|
|
21
|
-
|
|
26
|
+
turnId: asTurnId(v.turnId),
|
|
22
27
|
startedAt: v.startedAt,
|
|
23
28
|
finishedAt: v.finishedAt,
|
|
24
29
|
cleanup: v.cleanup,
|
|
@@ -60,21 +65,22 @@ export async function readResidentAttemptReceipt(root, path, signal) {
|
|
|
60
65
|
await file.close();
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
|
-
/** CLI supplies attempt/
|
|
64
|
-
export function residentToolEvidence(history, sessions, artifactsRoot) {
|
|
68
|
+
/** CLI supplies attempt/session authorization; SDK owns bounded retrieval and indexing. */
|
|
69
|
+
export function residentToolEvidence(history, sessions, projectSlug, artifactsRoot) {
|
|
65
70
|
const root = resolve(artifactsRoot);
|
|
66
|
-
const paths = new
|
|
71
|
+
const paths = new SessionPaths({ home: sessions.root, slug: projectSlug });
|
|
67
72
|
if (history.scope.tenantId !== sessions.tenantId)
|
|
68
73
|
throw new Error('Resident history tenant mismatch.');
|
|
69
74
|
return createResidentToolEvidenceSource({
|
|
70
75
|
history,
|
|
71
76
|
projectId: sessions.projectId,
|
|
72
|
-
// Start and finish documents are size-checked before reading
|
|
73
|
-
//
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
// Start and finish documents are size-checked before reading, and the
|
|
78
|
+
// log's first record is read to attribute it. Reserve their upper bound,
|
|
79
|
+
// not a fabricated measurement of stat I/O.
|
|
80
|
+
resolutionReadBytes: 2 * ATTEMPT_DOCUMENT_BYTES + SESSION_HEAD_BYTES,
|
|
81
|
+
async resolveTurn(settled, signal) {
|
|
76
82
|
const claimId = settled.claimId;
|
|
77
|
-
if (!
|
|
83
|
+
if (!isResidentUuid(claimId))
|
|
78
84
|
throw new Error('Invalid claim id.');
|
|
79
85
|
const start = identity(await readResidentAttemptReceipt(root, join(root, claimId, 'start.json'), signal));
|
|
80
86
|
const finish = identity(await readResidentAttemptReceipt(root, join(root, claimId, 'finish.json'), signal));
|
|
@@ -82,7 +88,7 @@ export function residentToolEvidence(history, sessions, artifactsRoot) {
|
|
|
82
88
|
if (record.claimId !== claimId ||
|
|
83
89
|
record.pursuitId !== history.scope.pursuitId ||
|
|
84
90
|
record.sessionId !== start.sessionId ||
|
|
85
|
-
record.
|
|
91
|
+
record.turnId !== start.turnId)
|
|
86
92
|
throw new Error('Attempt identity does not match its settled claim.');
|
|
87
93
|
if (finish.cleanup !== 'confirmed' ||
|
|
88
94
|
typeof start.startedAt !== 'number' ||
|
|
@@ -91,25 +97,25 @@ export function residentToolEvidence(history, sessions, artifactsRoot) {
|
|
|
91
97
|
!Number.isFinite(finish.finishedAt) ||
|
|
92
98
|
finish.finishedAt < start.startedAt)
|
|
93
99
|
throw new Error('Invalid attempt receipt order.');
|
|
94
|
-
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
100
|
+
// A resident step is its own root session. Its log names the project
|
|
101
|
+
// and tenant it was opened under, and both must be this resident's.
|
|
102
|
+
const logPath = paths.sessionLog({ sessionId: start.sessionId });
|
|
103
|
+
const opened = await readSessionStart(sessions.root, logPath, signal);
|
|
104
|
+
if (!opened)
|
|
105
|
+
throw new Error('Attempt session log is missing.');
|
|
106
|
+
if (opened.sessionId !== start.sessionId ||
|
|
107
|
+
opened.projectId !== sessions.projectId ||
|
|
108
|
+
(opened.tenantId !== undefined && opened.tenantId !== sessions.tenantId))
|
|
109
|
+
throw new Error('Attempt session belongs to a different project.');
|
|
101
110
|
signal?.throwIfAborted();
|
|
102
|
-
|
|
103
|
-
const indexDir = join(runDir, 'evidence-index');
|
|
104
|
-
return createDiskRunEvidenceSource({
|
|
111
|
+
return createSessionEvidenceSource({
|
|
105
112
|
scope: {
|
|
106
113
|
tenantId: sessions.tenantId,
|
|
107
114
|
projectId: sessions.projectId,
|
|
108
|
-
sessionId,
|
|
109
|
-
|
|
115
|
+
sessionId: start.sessionId,
|
|
116
|
+
turnId: start.turnId,
|
|
110
117
|
},
|
|
111
|
-
|
|
112
|
-
indexDir,
|
|
118
|
+
logPath,
|
|
113
119
|
});
|
|
114
120
|
},
|
|
115
121
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-evidence.js","sourceRoot":"","sources":["../../../src/integrations/resident/tool-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAEN,
|
|
1
|
+
{"version":3,"file":"tool-evidence.js","sourceRoot":"","sources":["../../../src/integrations/resident/tool-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type JsonClaimRequirement, type
|
|
1
|
+
import { type JsonClaimRequirement, type TurnId } from '@namzu/sdk';
|
|
2
2
|
export interface ResidentVerificationSpec {
|
|
3
3
|
readonly version: 1;
|
|
4
4
|
readonly claims: readonly JsonClaimRequirement[];
|
|
@@ -6,6 +6,6 @@ export interface ResidentVerificationSpec {
|
|
|
6
6
|
/** Snapshot the explicitly selected manifest once; edits cannot expand a running worker's authority. */
|
|
7
7
|
export declare function loadResidentVerification(path: string, cwd: string): Promise<ResidentVerificationSpec>;
|
|
8
8
|
/** Explicit host reads, like --gate: no additional authority is granted to model tools. */
|
|
9
|
-
export declare function residentClaimVerifier(spec: ResidentVerificationSpec, cwd: string, scope: string,
|
|
9
|
+
export declare function residentClaimVerifier(spec: ResidentVerificationSpec, cwd: string, scope: string, turnId: TurnId): import("@namzu/sdk").JsonClaimVerifier;
|
|
10
10
|
export declare function verificationInstructions(spec: ResidentVerificationSpec): string;
|
|
11
11
|
//# sourceMappingURL=verification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/integrations/resident/verification.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/integrations/resident/verification.ts"],"names":[],"mappings":"AAGA,OAAO,EAEN,KAAK,oBAAoB,EACzB,KAAK,MAAM,EAGX,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAChD;AAsFD,wGAAwG;AACxG,wBAAsB,wBAAwB,CAC7C,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,wBAAwB,CAAC,CAQnC;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,wBAAwB,EAC9B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,0CAoBd;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAO/E"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { constants } from 'node:fs';
|
|
2
2
|
import { open, realpath, stat } from 'node:fs/promises';
|
|
3
3
|
import { isAbsolute, relative, resolve } from 'node:path';
|
|
4
|
-
import { createJsonClaimVerifier,
|
|
4
|
+
import { createJsonClaimVerifier, generateTurnId, } from '@namzu/sdk';
|
|
5
5
|
/** Bounded regular-file observation; checks changes during the read, never runs commands. */
|
|
6
6
|
async function readDocument(path, maxBytes, signal) {
|
|
7
7
|
signal?.throwIfAborted();
|
|
@@ -63,7 +63,7 @@ function validateSpec(value) {
|
|
|
63
63
|
// Validate the shared pointer/value/size contract before admitting a model.
|
|
64
64
|
createJsonClaimVerifier({
|
|
65
65
|
scope: 'configuration',
|
|
66
|
-
|
|
66
|
+
turnId: generateTurnId(),
|
|
67
67
|
requirements: spec.claims,
|
|
68
68
|
observe: async () => {
|
|
69
69
|
throw new Error('Configuration validation never observes sources.');
|
|
@@ -76,11 +76,11 @@ export async function loadResidentVerification(path, cwd) {
|
|
|
76
76
|
return validateSpec(JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(await readDocument(resolve(cwd, path), 65_536))));
|
|
77
77
|
}
|
|
78
78
|
/** Explicit host reads, like --gate: no additional authority is granted to model tools. */
|
|
79
|
-
export function residentClaimVerifier(spec, cwd, scope,
|
|
79
|
+
export function residentClaimVerifier(spec, cwd, scope, turnId) {
|
|
80
80
|
const snapshot = validateSpec(spec);
|
|
81
81
|
const verifier = createJsonClaimVerifier({
|
|
82
82
|
scope,
|
|
83
|
-
|
|
83
|
+
turnId,
|
|
84
84
|
requirements: snapshot.claims,
|
|
85
85
|
observe: async (source, request) => {
|
|
86
86
|
request.signal.throwIfAborted();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/integrations/resident/verification.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/integrations/resident/verification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CheckpointLogView, SessionLog } from '@namzu/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* What a checkpoint store asks of the session log it protects, answered by
|
|
4
|
+
* reading that log strictly.
|
|
5
|
+
*
|
|
6
|
+
* The disk checkpoint store verifies a checkpoint against the log before a
|
|
7
|
+
* restore (the record at `throughSeq` still hashes the same, and the document
|
|
8
|
+
* hashes to its `checkpoint_written.docSha256`) and never prunes one an open
|
|
9
|
+
* decision names. A resume in this process builds the store over the same log
|
|
10
|
+
* the turn appends to.
|
|
11
|
+
*/
|
|
12
|
+
export declare function sessionLogCheckpointView(log: Pick<SessionLog, 'read' | 'sessionId'>): CheckpointLogView;
|
|
13
|
+
//# sourceMappingURL=checkpoint-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-view.d.ts","sourceRoot":"","sources":["../../../src/integrations/sessions/checkpoint-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,iBAAiB,EAAmB,UAAU,EAAE,MAAM,YAAY,CAAA;AAE9F;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CAAC,GACzC,iBAAiB,CA+BnB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a checkpoint store asks of the session log it protects, answered by
|
|
3
|
+
* reading that log strictly.
|
|
4
|
+
*
|
|
5
|
+
* The disk checkpoint store verifies a checkpoint against the log before a
|
|
6
|
+
* restore (the record at `throughSeq` still hashes the same, and the document
|
|
7
|
+
* hashes to its `checkpoint_written.docSha256`) and never prunes one an open
|
|
8
|
+
* decision names. A resume in this process builds the store over the same log
|
|
9
|
+
* the turn appends to.
|
|
10
|
+
*/
|
|
11
|
+
export function sessionLogCheckpointView(log) {
|
|
12
|
+
const owns = (scope) => scope.sessionId === log.sessionId;
|
|
13
|
+
return {
|
|
14
|
+
async verifyThrough(scope, throughSeq, throughSha256) {
|
|
15
|
+
if (!owns(scope))
|
|
16
|
+
return false;
|
|
17
|
+
for await (const { pointer } of log.read({ mode: 'strict', throughSeq })) {
|
|
18
|
+
if (pointer.seq === throughSeq)
|
|
19
|
+
return pointer.sha256 === throughSha256;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
},
|
|
23
|
+
async writtenDocSha256(scope, checkpointId) {
|
|
24
|
+
if (!owns(scope))
|
|
25
|
+
return null;
|
|
26
|
+
let found = null;
|
|
27
|
+
for await (const { record } of log.read({ mode: 'strict' })) {
|
|
28
|
+
if (record.type === 'checkpoint_written' && record.checkpointId === checkpointId) {
|
|
29
|
+
found = record.docSha256;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return found;
|
|
33
|
+
},
|
|
34
|
+
async openDecisionCheckpoints(scope) {
|
|
35
|
+
const open = new Map();
|
|
36
|
+
if (!owns(scope))
|
|
37
|
+
return [];
|
|
38
|
+
for await (const { record } of log.read({ mode: 'strict' })) {
|
|
39
|
+
if (record.type === 'decision_requested')
|
|
40
|
+
open.set(record.decisionId, record.checkpointId);
|
|
41
|
+
else if (record.type === 'decision_resolved' || record.type === 'decision_expired')
|
|
42
|
+
open.delete(record.decisionId);
|
|
43
|
+
}
|
|
44
|
+
return [...open.values()];
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=checkpoint-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoint-view.js","sourceRoot":"","sources":["../../../src/integrations/sessions/checkpoint-view.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACvC,GAA2C;IAE3C,MAAM,IAAI,GAAG,CAAC,KAAsB,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS,CAAA;IAC1E,OAAO;QACN,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa;YACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;gBAC1E,IAAI,OAAO,CAAC,GAAG,KAAK,UAAU;oBAAE,OAAO,OAAO,CAAC,MAAM,KAAK,aAAa,CAAA;YACxE,CAAC;YACD,OAAO,KAAK,CAAA;QACb,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,YAAY;YACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YAC7B,IAAI,KAAK,GAAkB,IAAI,CAAA;YAC/B,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;oBAClF,KAAK,GAAG,MAAM,CAAC,SAAS,CAAA;gBACzB,CAAC;YACF,CAAC;YACD,OAAO,KAAK,CAAA;QACb,CAAC;QACD,KAAK,CAAC,uBAAuB,CAAC,KAAK;YAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAA;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC3B,IAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;gBAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB;oBAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;qBACrF,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB;oBACjF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChC,CAAC;YACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1B,CAAC;KACD,CAAA;AACF,CAAC"}
|
|
@@ -36,7 +36,7 @@ export function createContextInventoryStep() {
|
|
|
36
36
|
estimatedRemainingTokens: contextBudget?.remainingTokens,
|
|
37
37
|
largestToolBlocks: blocks.sort((a, b) => b.chars - a.chars).slice(0, 6),
|
|
38
38
|
};
|
|
39
|
-
const text = 'Context inventory (current request only). Positions are temporary, not archive IDs. Sizes are UTF-16 text characters; non-text payloads are counted, not estimated as base64 text tokens. For earlier evidence use search_conversation, then read_conversation(
|
|
39
|
+
const text = 'Context inventory (current request only). Positions are temporary, not archive IDs. Sizes are UTF-16 text characters; non-text payloads are counted, not estimated as base64 text tokens. For earlier evidence use search_conversation, then read_conversation(seq, part) for exact retained pages. Do not repeat a state-changing action to recover its output.\n' +
|
|
40
40
|
JSON.stringify(inventory);
|
|
41
41
|
return { context: [prepared.context, text].filter(Boolean).join('\n\n') };
|
|
42
42
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-inventory.js","sourceRoot":"","sources":["../../../src/integrations/sessions/context-inventory.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,MAAM,UAAU,0BAA0B;IACzC,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QACxD,MAAM,EAAE,cAAc,EAAE,CAAA;QACxB,MAAM,MAAM,GAA2E,EAAE,CAAA;QACzF,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAQ;YACrC,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAA;iBAClE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA;;wBAChD,MAAM,EAAE,CAAA;gBACd,CAAC;YACF,UAAU,IAAI,KAAK,CAAA;YACnB,UAAU,IAAI,MAAM,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAC,eAAe,GAAG,aAAa,CAAC,YAAY,GAAG,CAAC,CAAA;QAChG,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QACtD,gFAAgF;QAChF,IAAI,aAAa,IAAI,aAAa,CAAC,eAAe,GAAG,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5E,MAAM,SAAS,GAAG;YACjB,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,oBAAoB,EAAE,UAAU;YAChC,oBAAoB,EAAE,UAAU;YAChC,wBAAwB,EAAE,aAAa,EAAE,eAAe;YACxD,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACvE,CAAA;QACD,MAAM,IAAI,GACT,
|
|
1
|
+
{"version":3,"file":"context-inventory.js","sourceRoot":"","sources":["../../../src/integrations/sessions/context-inventory.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,MAAM,UAAU,0BAA0B;IACzC,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QACxD,MAAM,EAAE,cAAc,EAAE,CAAA;QACxB,MAAM,MAAM,GAA2E,EAAE,CAAA;QACzF,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;gBAAE,SAAQ;YACrC,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;gBAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAA;iBAClE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAA;;wBAChD,MAAM,EAAE,CAAA;gBACd,CAAC;YACF,UAAU,IAAI,KAAK,CAAA;YACnB,UAAU,IAAI,MAAM,CAAA;YACpB,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAC,eAAe,GAAG,aAAa,CAAC,YAAY,GAAG,CAAC,CAAA;QAChG,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QACtD,gFAAgF;QAChF,IAAI,aAAa,IAAI,aAAa,CAAC,eAAe,GAAG,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5E,MAAM,SAAS,GAAG;YACjB,eAAe,EAAE,QAAQ,CAAC,MAAM;YAChC,oBAAoB,EAAE,UAAU;YAChC,oBAAoB,EAAE,UAAU;YAChC,wBAAwB,EAAE,aAAa,EAAE,eAAe;YACxD,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACvE,CAAA;QACD,MAAM,IAAI,GACT,oWAAoW;YACpW,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAA;IAC1E,CAAC,CAAA;AACF,CAAC"}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { type EvidenceRecordKind, type SessionId, type ToolContext, type ToolDefinition } from '@namzu/sdk';
|
|
2
|
-
import type
|
|
2
|
+
import { type ConversationContext } from './store.js';
|
|
3
3
|
/** Successful archive retrievals quote earlier records; they are not new observations. */
|
|
4
4
|
export declare const CONVERSATION_RETRIEVAL_TOOLS: readonly ["read_conversation", "search_conversation"];
|
|
5
5
|
/** Stable capability guidance; include only when this host mounts both tools. */
|
|
6
|
-
export declare const CONVERSATION_EVIDENCE_GUIDANCE = "## Conversation evidence\nWhen a question asks about an earlier observation, use the evidence already in context. If the detail is missing or clipped, use search_conversation to locate the original recorded output, then read_conversation for exact text beyond an excerpt. Pass a supplied recall continuation's cursor to search_conversation to continue from the scan's existing position. This works before compaction as well as after compaction or restart, within this conversation only. New searches omit successful search_conversation/read_conversation outputs, which repeat earlier records. To inspect those outputs themselves, start a new search with includeRetrievalResults=true. excerptComplete=true means the entire full-retained text part is already shown: reading the same unchanged part adds no text or independent evidence. False or absent means partial or unknown. This does not establish the truth of a prior claim or exhaust the conversation.\nA path following \"The full output was written to:\" identifies an internal backing file, not a workspace file. Recover its contents through search_conversation and read_conversation, which verify ownership and retained-byte integrity. Do not use bash, read or grep to bypass a workspace-path refusal when recovering archived output.\nrecordedAt is the event recorder\u2019s wall-clock time in Unix milliseconds, not the time its text became true. For compaction_shed it dates the copy, not the original observation. compaction_shed:summary identifies derived summary text, not an independent observation. Missing stamps stay unknown; clocks can move backwards or differ.
|
|
6
|
+
export declare const CONVERSATION_EVIDENCE_GUIDANCE = "## Conversation evidence\nWhen a question asks about an earlier observation, use the evidence already in context. If the detail is missing or clipped, use search_conversation to locate the original recorded output, then read_conversation for exact text beyond an excerpt. Pass a supplied recall continuation's cursor to search_conversation to continue from the scan's existing position. This works before compaction as well as after compaction or restart, within this conversation only. New searches omit successful search_conversation/read_conversation outputs, which repeat earlier records. To inspect those outputs themselves, start a new search with includeRetrievalResults=true. excerptComplete=true means the entire full-retained text part is already shown: reading the same unchanged part adds no text or independent evidence. False or absent means partial or unknown. This does not establish the truth of a prior claim or exhaust the conversation.\nA path following \"The full output was written to:\" identifies an internal backing file, not a workspace file. Recover its contents through search_conversation and read_conversation, which verify ownership and retained-byte integrity. Do not use bash, read or grep to bypass a workspace-path refusal when recovering archived output.\nrecordedAt is the event recorder\u2019s wall-clock time in Unix milliseconds, not the time its text became true. For compaction_shed it dates the copy, not the original observation. compaction_shed:summary identifies derived summary text, not an independent observation. Missing stamps stay unknown; clocks can move backwards or differ. seq orders the records of this conversation's log; it is not a clock.\nFor what a file contained earlier, recover its earlier observation; reading or searching the current file cannot establish its past contents. For what is true now, inspect the current source when freshness matters. Do not substitute one time for the other. Report unavailable historical evidence honestly and never repeat a state-changing action to recover its output.";
|
|
7
|
+
/** The part of a tool call's context that can hand over the live turn's evidence. */
|
|
8
|
+
export type ActiveEvidence = Pick<ToolContext, 'sessionId' | 'turnId' | 'captureSessionEvidence'>;
|
|
7
9
|
interface EvidenceMatch {
|
|
8
10
|
/** Stored event wall-clock Unix milliseconds; not original fact time. */
|
|
9
11
|
recordedAt?: number;
|
|
10
|
-
runId: string;
|
|
11
12
|
seq: number;
|
|
12
13
|
source: string;
|
|
13
14
|
/** Producer classification only, not a truth or successful-action verdict. */
|
|
14
15
|
recordKind: EvidenceRecordKind;
|
|
15
16
|
text: string;
|
|
16
|
-
/** Zero-based textual part within this
|
|
17
|
+
/** Zero-based textual part within this record (not a character offset). */
|
|
17
18
|
part: number;
|
|
18
|
-
/** Optional UTF-8 position to begin reading near this
|
|
19
|
+
/** Optional UTF-8 position to begin reading near this match. */
|
|
19
20
|
byteOffset?: number;
|
|
20
21
|
retained?: 'full' | 'preview';
|
|
21
22
|
/** True only when this excerpt covers the entire full-retained text part. */
|
|
22
23
|
excerptComplete?: boolean;
|
|
23
|
-
/** Originating tool, when the authenticated
|
|
24
|
+
/** Originating tool, when the authenticated record provides it. */
|
|
24
25
|
toolName?: string;
|
|
25
26
|
isError?: boolean;
|
|
26
27
|
}
|
|
@@ -29,11 +30,11 @@ export interface ConversationSearchResult {
|
|
|
29
30
|
guidance: string;
|
|
30
31
|
recordKindGuidance: string;
|
|
31
32
|
matches: EvidenceMatch[];
|
|
32
|
-
scannedRuns: number;
|
|
33
33
|
scannedBytes: number;
|
|
34
34
|
/** True means the search cannot establish that absent evidence does not exist. */
|
|
35
35
|
incomplete: boolean;
|
|
36
|
-
|
|
36
|
+
/** Records the reader could not verify or read back in this page. */
|
|
37
|
+
unavailable: number;
|
|
37
38
|
/** Successful tool outputs omitted by the host's source filter in this page. */
|
|
38
39
|
excludedToolResults?: number;
|
|
39
40
|
/** Known derived-summary visits omitted by a focused scan. */
|
|
@@ -43,27 +44,24 @@ export interface ConversationSearchResult {
|
|
|
43
44
|
}
|
|
44
45
|
/** Release process-local search resources after the host has settled this conversation's work. */
|
|
45
46
|
export declare function releaseConversationEvidence(sessions: ConversationContext, sessionId: SessionId): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
export declare function retainLiveConversationSearch(sessions: ConversationContext, sessionId: SessionId, runId: string, terms: readonly string[], indexCursor: string, omitted?: boolean, matchMode?: 'literal' | 'token', excludeSuccessfulTools?: readonly string[], excludeDerivedSummaries?: boolean): string;
|
|
48
|
-
/** Searches only local runs of the host-selected conversation, never arbitrary paths. */
|
|
47
|
+
/** Searches only the host-selected conversation's log, never arbitrary paths. */
|
|
49
48
|
export declare function searchConversation(sessions: ConversationContext, sessionId: SessionId, input: {
|
|
50
49
|
query?: string;
|
|
51
50
|
caseSensitive?: boolean;
|
|
52
|
-
|
|
51
|
+
turnId?: string;
|
|
53
52
|
limit?: number;
|
|
54
53
|
cursor?: string;
|
|
55
54
|
includeRetrievalResults?: boolean;
|
|
56
|
-
}, signal?: AbortSignal, active?:
|
|
55
|
+
}, signal?: AbortSignal, active?: ActiveEvidence): Promise<ConversationSearchResult>;
|
|
57
56
|
/** Host-only bounded candidate discovery; does not change the model tool schema. */
|
|
58
57
|
export declare function searchConversationTerms(sessions: ConversationContext, sessionId: SessionId, input: {
|
|
59
58
|
terms: readonly string[];
|
|
60
|
-
excludeRunId: string;
|
|
61
59
|
maxReadBytes: number;
|
|
62
60
|
cursor?: string;
|
|
63
61
|
matchMode?: 'literal' | 'token';
|
|
64
62
|
excludeSuccessfulTools?: readonly string[];
|
|
65
63
|
excludeDerivedSummaries?: boolean;
|
|
66
|
-
}, signal?: AbortSignal): Promise<ConversationSearchResult>;
|
|
64
|
+
}, signal?: AbortSignal, active?: ActiveEvidence): Promise<ConversationSearchResult>;
|
|
67
65
|
export declare function buildConversationSearchTool(resolveScope: (context: ToolContext) => {
|
|
68
66
|
sessions: ConversationContext;
|
|
69
67
|
sessionId: SessionId;
|
|
@@ -71,10 +69,9 @@ export declare function buildConversationSearchTool(resolveScope: (context: Tool
|
|
|
71
69
|
export interface ConversationEvidencePage {
|
|
72
70
|
/** Stored event wall-clock Unix milliseconds; unknown when absent. */
|
|
73
71
|
recordedAt?: number;
|
|
74
|
-
runId: string;
|
|
75
72
|
seq: number;
|
|
76
73
|
part: number;
|
|
77
|
-
/** Exact retained text, paged without summarization. Empty while
|
|
74
|
+
/** Exact retained text, paged without summarization. Empty while locating. */
|
|
78
75
|
text: string;
|
|
79
76
|
offset: number;
|
|
80
77
|
totalChars?: number;
|
|
@@ -92,14 +89,13 @@ export interface ConversationEvidencePage {
|
|
|
92
89
|
retainedPreview: boolean;
|
|
93
90
|
nextCursor?: string;
|
|
94
91
|
}
|
|
95
|
-
/** Read a recorded text by durable
|
|
92
|
+
/** Read a recorded text by durable seq/part identity, within the current conversation. */
|
|
96
93
|
export declare function readConversationEvidence(sessions: ConversationContext, sessionId: SessionId, input: {
|
|
97
|
-
runId: string;
|
|
98
94
|
seq: number;
|
|
99
95
|
part?: number;
|
|
100
96
|
cursor?: string;
|
|
101
97
|
byteOffset?: number;
|
|
102
|
-
}, signal?: AbortSignal, active?:
|
|
98
|
+
}, signal?: AbortSignal, active?: ActiveEvidence): Promise<ConversationEvidencePage>;
|
|
103
99
|
export declare function buildConversationReadTool(resolveScope: (context: ToolContext) => {
|
|
104
100
|
sessions: ConversationContext;
|
|
105
101
|
sessionId: SessionId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-search.d.ts","sourceRoot":"","sources":["../../../src/integrations/sessions/conversation-search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation-search.d.ts","sourceRoot":"","sources":["../../../src/integrations/sessions/conversation-search.ts"],"names":[],"mappings":"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"}
|