@jungjaehoon/mama-core 2.4.1 → 4.1.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/README.md +76 -239
- package/db/migrations/030-case-first-memory-substrate.sql +13 -98
- package/db/migrations/034-add-connector-event-scope-columns.sql +9 -13
- package/db/migrations/039-add-connector-event-operator-ingest-seq.sql +9 -95
- package/db/migrations/062-refresh-connector-event-sequences.sql +9 -113
- package/db/migrations/063-refresh-legacy-connector-event-updates.sql +9 -32
- package/db/migrations/067-add-connector-event-source-entity-id.sql +9 -13
- package/db/migrations/069-create-registry-nodes.sql +52 -0
- package/db/migrations/070-record-identity.sql +35 -0
- package/db/migrations/071-service-operation-origins.sql +187 -0
- package/db/migrations/072-observation-versions.sql +29 -0
- package/db/migrations/073-registry-corrections.sql +45 -0
- package/db/migrations/074-work-graph-ref-kinds.sql +39 -0
- package/db/migrations/075-agent-judgments.sql +58 -0
- package/db/migrations/076-scoped-checkpoint-bindings.sql +15 -0
- package/db/migrations/077-legacy-record-kind.sql +6 -0
- package/db/migrations/078-source-ingest-commands.sql +18 -0
- package/db/migrations/079-twin-edge-relations.sql +43 -0
- package/db/migrations/080-restore-duration-days.sql +7 -0
- package/db/migrations/081-mailbox.sql +61 -0
- package/db/migrations/082-commitments-row-id.sql +12 -0
- package/db/migrations/083-observation-is-the-evidence.sql +49 -0
- package/db/migrations/084-scope-kind-is-not-the-cores-to-list.sql +34 -0
- package/db/migrations/085-a-migration-has-a-source.sql +37 -0
- package/db/migrations/086-the-mailbox-is-generic.sql +110 -0
- package/db/migrations/087-mailbox-payload.sql +5 -0
- package/db/migrations/088-native-input-journal.sql +14 -0
- package/db/migrations/089-native-turn-receipt-lookup.sql +3 -0
- package/db/migrations/090-model-run-native-inputs.sql +29 -0
- package/db/migrations/091-native-turn-results.sql +11 -0
- package/db/migrations/092-restore-decision-fts.sql +34 -0
- package/db/migrations/093-native-turn-primary-kind.sql +14 -0
- package/db/migrations/094-commitment-run-provenance.sql +9 -0
- package/db/migrations/095-model-run-native-input-identity.sql +39 -0
- package/db/migrations/096-drop-connector-event-index-fts.sql +9 -0
- package/db/migrations/097-native-input-json-validity.sql +37 -0
- package/db/migrations/098-workflow-memory-kind.sql +105 -0
- package/db/migrations/099-commitment-revision-graph.sql +2 -0
- package/dist/action-contracts.d.ts +212 -0
- package/dist/action-contracts.js +10 -0
- package/dist/api/catalog.d.ts +118 -0
- package/dist/api/catalog.js +1756 -0
- package/dist/api/dispatch.d.ts +76 -0
- package/dist/api/dispatch.js +372 -0
- package/dist/canonicalize.d.ts +2 -2
- package/dist/canonicalize.js +3 -3
- package/dist/client/client.d.ts +33 -0
- package/dist/client/client.js +123 -0
- package/dist/client/ipc.d.ts +81 -0
- package/dist/client/ipc.js +314 -0
- package/dist/db-adapter/base-adapter.d.ts +6 -66
- package/dist/db-adapter/base-adapter.js +6 -6
- package/dist/db-adapter/index.d.ts +5 -5
- package/dist/db-adapter/index.js +2 -5
- package/dist/db-adapter/node-sqlite-adapter.d.ts +85 -15
- package/dist/db-adapter/node-sqlite-adapter.js +1985 -570
- package/dist/db-manager.d.ts +53 -97
- package/dist/db-manager.js +121 -603
- package/dist/embedding/embedder.d.ts +132 -0
- package/dist/embedding/embedder.js +299 -0
- package/dist/identity/principal-repository.d.ts +2 -2
- package/dist/index.d.ts +43 -58
- package/dist/index.js +97 -145
- package/dist/{context-compile/channel-grant.d.ts → knowledge/access.d.ts} +12 -17
- package/dist/knowledge/access.js +663 -0
- package/dist/knowledge/case-errors.d.ts +31 -0
- package/dist/knowledge/case-errors.js +40 -0
- package/dist/{cases/search-rollup.d.ts → knowledge/case-search-rollup.d.ts} +5 -4
- package/dist/{cases/search-rollup.js → knowledge/case-search-rollup.js} +6 -8
- package/dist/{cases/store.d.ts → knowledge/case-store.d.ts} +3 -6
- package/dist/{cases/store.js → knowledge/case-store.js} +7 -42
- package/dist/{cases/timeline-range.d.ts → knowledge/case-timeline-range.d.ts} +3 -3
- package/dist/{cases/timeline-range.js → knowledge/case-timeline-range.js} +47 -25
- package/dist/{cases/types.d.ts → knowledge/case-types.d.ts} +8 -2
- package/dist/{cases/types.js → knowledge/case-types.js} +1 -1
- package/dist/knowledge/commitment-revision-migration.d.ts +4 -0
- package/dist/knowledge/commitment-revision-migration.js +50 -0
- package/dist/knowledge/commitments.d.ts +192 -0
- package/dist/knowledge/commitments.js +386 -0
- package/dist/knowledge/decision-edges.d.ts +70 -0
- package/dist/knowledge/decision-edges.js +123 -0
- package/dist/{agent-graph/types.d.ts → knowledge/graph-query.d.ts} +80 -70
- package/dist/knowledge/graph-query.js +1585 -0
- package/dist/knowledge/identity.d.ts +16 -0
- package/dist/knowledge/identity.js +22 -0
- package/dist/knowledge/index.d.ts +47 -0
- package/dist/knowledge/index.js +90 -0
- package/dist/knowledge/judgment-edge.d.ts +6 -0
- package/dist/knowledge/judgment-edge.js +22 -0
- package/dist/knowledge/judgments.d.ts +118 -0
- package/dist/knowledge/judgments.js +802 -0
- package/dist/knowledge/observations.d.ts +160 -0
- package/dist/knowledge/observations.js +449 -0
- package/dist/knowledge/question-type.d.ts +34 -0
- package/dist/knowledge/question-type.js +70 -0
- package/dist/{search → knowledge}/ranker-features.js +1 -1
- package/dist/{search → knowledge}/search-quality.d.ts +0 -1
- package/dist/knowledge/search.d.ts +38 -0
- package/dist/knowledge/search.js +91 -0
- package/dist/knowledge/source-ingest.d.ts +65 -0
- package/dist/knowledge/source-ingest.js +174 -0
- package/dist/{edges/types.d.ts → knowledge/twin-edge-types.d.ts} +31 -4
- package/dist/{edges/types.js → knowledge/twin-edge-types.js} +13 -2
- package/dist/knowledge/work-dates.d.ts +49 -0
- package/dist/knowledge/work-dates.js +120 -0
- package/dist/mama-api.d.ts +114 -778
- package/dist/mama-api.js +313 -2461
- package/dist/memory/api.d.ts +264 -24
- package/dist/memory/api.js +1633 -843
- package/dist/memory/bootstrap-builder.d.ts +2 -1
- package/dist/memory/bootstrap-builder.js +5 -5
- package/dist/memory/channel-summary-state-store.d.ts +3 -2
- package/dist/memory/channel-summary-state-store.js +53 -51
- package/dist/memory/channel-summary-store.d.ts +5 -3
- package/dist/memory/channel-summary-store.js +3 -8
- package/dist/memory/dashboard-read.d.ts +46 -0
- package/dist/memory/dashboard-read.js +94 -0
- package/dist/memory/event-store.d.ts +3 -3
- package/dist/memory/event-store.js +3 -10
- package/dist/memory/finding-store.d.ts +3 -2
- package/dist/memory/finding-store.js +2 -7
- package/dist/memory/graph-read.d.ts +52 -0
- package/dist/memory/graph-read.js +130 -0
- package/dist/memory/judgment-types.d.ts +394 -0
- package/dist/memory/judgment-types.js +16 -0
- package/dist/memory/provenance-audit.d.ts +5 -2
- package/dist/memory/provenance-audit.js +8 -14
- package/dist/memory/provenance-live.d.ts +141 -0
- package/dist/memory/provenance-live.js +409 -0
- package/dist/memory/provenance-query.d.ts +5 -4
- package/dist/memory/provenance-query.js +21 -29
- package/dist/memory/provenance-resolver.d.ts +191 -0
- package/dist/memory/provenance-resolver.js +155 -0
- package/dist/memory/provenance.d.ts +1 -11
- package/dist/memory/provenance.js +2 -33
- package/dist/memory/recall-sanitize.d.ts +55 -0
- package/dist/memory/recall-sanitize.js +144 -0
- package/dist/memory/secret-filter.d.ts +32 -0
- package/dist/memory/secret-filter.js +126 -0
- package/dist/memory/truth-store.d.ts +2 -1
- package/dist/memory/truth-store.js +1 -4
- package/dist/memory/types.d.ts +74 -24
- package/dist/memory/types.js +75 -5
- package/dist/memory/write-adapters.d.ts +98 -0
- package/dist/memory/write-adapters.js +242 -0
- package/dist/operations/owner-action-effects.d.ts +53 -0
- package/dist/operations/owner-action-effects.js +96 -0
- package/dist/provenance/source-ref.d.ts +1 -1
- package/dist/provenance/source-ref.js +0 -2
- package/dist/registry/corrections.d.ts +31 -0
- package/dist/registry/corrections.js +332 -0
- package/dist/registry/record-identity.d.ts +49 -0
- package/dist/registry/record-identity.js +133 -0
- package/dist/registry/store.d.ts +101 -0
- package/dist/registry/store.js +395 -0
- package/dist/registry/types.d.ts +28 -0
- package/dist/registry/types.js +5 -0
- package/dist/relevance-scorer.js +2 -2
- package/dist/runtime/agent-event-bus.d.ts +50 -0
- package/dist/runtime/agent-event-bus.js +101 -0
- package/dist/runtime/drivers/claude-cli-wrapper.d.ts +152 -0
- package/dist/runtime/drivers/claude-cli-wrapper.js +375 -0
- package/dist/runtime/drivers/claude-effort.d.ts +4 -0
- package/dist/runtime/drivers/claude-effort.js +16 -0
- package/dist/runtime/drivers/cli-arg-redaction.d.ts +2 -0
- package/dist/runtime/drivers/cli-arg-redaction.js +18 -0
- package/dist/runtime/drivers/cli-secret-redaction.d.ts +17 -0
- package/dist/runtime/drivers/cli-secret-redaction.js +126 -0
- package/dist/runtime/drivers/codex-app-server-process.d.ts +277 -0
- package/dist/runtime/drivers/codex-app-server-process.js +2342 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.d.ts +17 -0
- package/dist/runtime/drivers/codex-auxiliary-tools.js +267 -0
- package/dist/runtime/drivers/codex-home.d.ts +20 -0
- package/dist/runtime/drivers/codex-home.js +674 -0
- package/dist/runtime/drivers/codex-thread-registry.d.ts +63 -0
- package/dist/runtime/drivers/codex-thread-registry.js +433 -0
- package/dist/runtime/drivers/persistent-cli-adapter.d.ts +160 -0
- package/dist/runtime/drivers/persistent-cli-adapter.js +396 -0
- package/dist/runtime/drivers/persistent-cli-process.d.ts +425 -0
- package/dist/runtime/drivers/persistent-cli-process.js +1529 -0
- package/dist/runtime/drivers/types.d.ts +456 -0
- package/dist/runtime/drivers/types.js +110 -0
- package/dist/runtime/mailbox.d.ts +223 -0
- package/dist/runtime/mailbox.js +582 -0
- package/dist/runtime/model-run-store.d.ts +28 -0
- package/dist/{model-runs/store.js → runtime/model-run-store.js} +81 -41
- package/dist/{model-runs/types.d.ts → runtime/model-run-types.d.ts} +33 -4
- package/dist/{model-runs/types.js → runtime/model-run-types.js} +1 -1
- package/dist/runtime/native-effect-observer.d.ts +22 -0
- package/dist/runtime/native-effect-observer.js +103 -0
- package/dist/runtime/native-input-journal.d.ts +46 -0
- package/dist/runtime/native-input-journal.js +308 -0
- package/dist/runtime/native-prompt.d.ts +118 -0
- package/dist/runtime/native-prompt.js +496 -0
- package/dist/runtime/native-session.d.ts +10 -0
- package/dist/{agent-graph/index.js → runtime/native-session.js} +9 -6
- package/dist/runtime/native-tool-trace-observer.d.ts +5 -0
- package/dist/runtime/native-tool-trace-observer.js +65 -0
- package/dist/runtime/native-turn.d.ts +272 -0
- package/dist/runtime/native-turn.js +1041 -0
- package/dist/runtime/operations.d.ts +236 -0
- package/dist/runtime/operations.js +565 -0
- package/dist/runtime/post-tool-handler.d.ts +74 -0
- package/dist/runtime/post-tool-handler.js +137 -0
- package/dist/runtime/prompt-layers.d.ts +126 -0
- package/dist/runtime/prompt-layers.js +239 -0
- package/dist/runtime/runtime-process.d.ts +102 -0
- package/dist/runtime/runtime-process.js +206 -0
- package/dist/runtime/runtime.d.ts +278 -0
- package/dist/runtime/runtime.js +563 -0
- package/dist/runtime/session-pool.d.ts +176 -0
- package/dist/runtime/session-pool.js +369 -0
- package/dist/runtime/stimulus-payload.d.ts +5 -0
- package/dist/runtime/stimulus-payload.js +50 -0
- package/dist/runtime/subagent-bridge.d.ts +24 -0
- package/dist/{agent-graph/types.js → runtime/subagent-bridge.js} +1 -1
- package/dist/runtime/text-completion.d.ts +22 -0
- package/dist/{agent-situation/types.js → runtime/text-completion.js} +1 -1
- package/dist/runtime/token-estimator.d.ts +25 -0
- package/dist/runtime/token-estimator.js +75 -0
- package/dist/runtime/tool-trace-store.d.ts +22 -0
- package/dist/{model-runs → runtime}/tool-trace-store.js +46 -27
- package/dist/runtime/trace-summary.d.ts +5 -0
- package/dist/runtime/trace-summary.js +74 -0
- package/dist/runtime/turn-text.d.ts +23 -0
- package/dist/runtime/turn-text.js +41 -0
- package/dist/storage/database.d.ts +67 -0
- package/dist/storage/database.js +158 -0
- package/package.json +20 -34
- package/dist/agent-graph/alias-write.d.ts +0 -3
- package/dist/agent-graph/alias-write.js +0 -234
- package/dist/agent-graph/entity-resolve.d.ts +0 -3
- package/dist/agent-graph/entity-resolve.js +0 -271
- package/dist/agent-graph/errors.d.ts +0 -4
- package/dist/agent-graph/errors.js +0 -11
- package/dist/agent-graph/graph-query.d.ts +0 -5
- package/dist/agent-graph/graph-query.js +0 -360
- package/dist/agent-graph/index.d.ts +0 -6
- package/dist/agent-situation/builder.d.ts +0 -8
- package/dist/agent-situation/builder.js +0 -239
- package/dist/agent-situation/cache-key.d.ts +0 -4
- package/dist/agent-situation/cache-key.js +0 -64
- package/dist/agent-situation/index.d.ts +0 -7
- package/dist/agent-situation/index.js +0 -28
- package/dist/agent-situation/packet-store.d.ts +0 -27
- package/dist/agent-situation/packet-store.js +0 -228
- package/dist/agent-situation/ranking-policy.d.ts +0 -18
- package/dist/agent-situation/ranking-policy.js +0 -75
- package/dist/agent-situation/source-readers.d.ts +0 -52
- package/dist/agent-situation/source-readers.js +0 -300
- package/dist/agent-situation/types.d.ts +0 -195
- package/dist/cases/wiki-page-index.d.ts +0 -37
- package/dist/cases/wiki-page-index.js +0 -201
- package/dist/config-loader.d.ts +0 -68
- package/dist/config-loader.js +0 -239
- package/dist/connectors/event-index.d.ts +0 -24
- package/dist/connectors/event-index.js +0 -245
- package/dist/connectors/raw-query.d.ts +0 -40
- package/dist/connectors/raw-query.js +0 -412
- package/dist/connectors/types.d.ts +0 -117
- package/dist/connectors/types.js +0 -3
- package/dist/context-compile/boundary-defaults.d.ts +0 -12
- package/dist/context-compile/boundary-defaults.js +0 -105
- package/dist/context-compile/channel-grant.js +0 -66
- package/dist/context-compile/compiler-policy.d.ts +0 -39
- package/dist/context-compile/compiler-policy.js +0 -147
- package/dist/context-compile/compiler.d.ts +0 -18
- package/dist/context-compile/compiler.js +0 -404
- package/dist/context-compile/index.d.ts +0 -10
- package/dist/context-compile/index.js +0 -26
- package/dist/context-compile/packet-store.d.ts +0 -8
- package/dist/context-compile/packet-store.js +0 -239
- package/dist/context-compile/ref.d.ts +0 -7
- package/dist/context-compile/ref.js +0 -102
- package/dist/context-compile/source-readers.d.ts +0 -70
- package/dist/context-compile/source-readers.js +0 -840
- package/dist/context-compile/types.d.ts +0 -155
- package/dist/context-compile/types.js +0 -11
- package/dist/context-compile/visibility.d.ts +0 -21
- package/dist/context-compile/visibility.js +0 -224
- package/dist/decision-tracker.d.ts +0 -206
- package/dist/decision-tracker.js +0 -481
- package/dist/edges/ref-validation.d.ts +0 -7
- package/dist/edges/ref-validation.js +0 -321
- package/dist/edges/store.d.ts +0 -8
- package/dist/edges/store.js +0 -129
- package/dist/embedding-client.d.ts +0 -28
- package/dist/embedding-client.js +0 -53
- package/dist/embedding-server/index.d.ts +0 -67
- package/dist/embedding-server/index.js +0 -405
- package/dist/embedding-server/mobile/auth.d.ts +0 -44
- package/dist/embedding-server/mobile/auth.js +0 -150
- package/dist/embedding-server/mobile/daemon.d.ts +0 -129
- package/dist/embedding-server/mobile/daemon.js +0 -313
- package/dist/embedding-server/mobile/output-parser.d.ts +0 -115
- package/dist/embedding-server/mobile/output-parser.js +0 -241
- package/dist/embedding-server/mobile/session-api.d.ts +0 -57
- package/dist/embedding-server/mobile/session-api.js +0 -261
- package/dist/embedding-server/mobile/session-manager.d.ts +0 -138
- package/dist/embedding-server/mobile/session-manager.js +0 -378
- package/dist/embedding-server/mobile/websocket-handler.d.ts +0 -137
- package/dist/embedding-server/mobile/websocket-handler.js +0 -486
- package/dist/embeddings.d.ts +0 -68
- package/dist/embeddings.js +0 -244
- package/dist/entities/audit-metrics.d.ts +0 -68
- package/dist/entities/audit-metrics.js +0 -124
- package/dist/entities/candidate-generator.d.ts +0 -8
- package/dist/entities/candidate-generator.js +0 -24
- package/dist/entities/entity-linked-decision-counts.d.ts +0 -2
- package/dist/entities/entity-linked-decision-counts.js +0 -29
- package/dist/entities/entity-list.d.ts +0 -22
- package/dist/entities/entity-list.js +0 -3
- package/dist/entities/entity-orphan-list.d.ts +0 -17
- package/dist/entities/entity-orphan-list.js +0 -3
- package/dist/entities/entity-search.d.ts +0 -20
- package/dist/entities/entity-search.js +0 -3
- package/dist/entities/errors.d.ts +0 -55
- package/dist/entities/errors.js +0 -100
- package/dist/entities/lineage-store.d.ts +0 -28
- package/dist/entities/lineage-store.js +0 -204
- package/dist/entities/normalization.d.ts +0 -14
- package/dist/entities/normalization.js +0 -63
- package/dist/entities/policy-store.d.ts +0 -8
- package/dist/entities/policy-store.js +0 -75
- package/dist/entities/policy-types.d.ts +0 -72
- package/dist/entities/policy-types.js +0 -59
- package/dist/entities/projection.d.ts +0 -8
- package/dist/entities/projection.js +0 -82
- package/dist/entities/provenance-query.d.ts +0 -32
- package/dist/entities/provenance-query.js +0 -3
- package/dist/entities/read-identity.d.ts +0 -31
- package/dist/entities/read-identity.js +0 -264
- package/dist/entities/recall-bridge.d.ts +0 -5
- package/dist/entities/recall-bridge.js +0 -171
- package/dist/entities/resolution-engine.d.ts +0 -8
- package/dist/entities/resolution-engine.js +0 -3
- package/dist/entities/rollback-preview.d.ts +0 -35
- package/dist/entities/rollback-preview.js +0 -3
- package/dist/entities/source-locator.d.ts +0 -3
- package/dist/entities/source-locator.js +0 -32
- package/dist/entities/store.d.ts +0 -69
- package/dist/entities/store.js +0 -544
- package/dist/entities/types.d.ts +0 -166
- package/dist/entities/types.js +0 -30
- package/dist/memory/extraction-prompt.d.ts +0 -4
- package/dist/memory/extraction-prompt.js +0 -89
- package/dist/memory/scope-backfill.d.ts +0 -14
- package/dist/memory/scope-backfill.js +0 -3
- package/dist/memory/scope-store.d.ts +0 -4
- package/dist/memory/scope-store.js +0 -9
- package/dist/memory-store.d.ts +0 -87
- package/dist/memory-store.js +0 -78
- package/dist/model-runs/store.d.ts +0 -13
- package/dist/model-runs/tool-trace-store.d.ts +0 -8
- package/dist/notification-manager.d.ts +0 -7
- package/dist/notification-manager.js +0 -12
- package/dist/outcome-tracker.d.ts +0 -151
- package/dist/outcome-tracker.js +0 -271
- package/dist/query-intent.d.ts +0 -23
- package/dist/query-intent.js +0 -114
- package/dist/runtime/trusted-provenance.d.ts +0 -3
- package/dist/runtime/trusted-provenance.js +0 -6
- package/dist/search/question-type.d.ts +0 -5
- package/dist/search/question-type.js +0 -41
- package/dist/test-utils.d.ts +0 -80
- package/dist/test-utils.js +0 -218
- package/dist/tier-validator.d.ts +0 -43
- package/dist/tier-validator.js +0 -159
- package/dist/time-formatter.d.ts +0 -25
- package/dist/time-formatter.js +0 -93
- /package/dist/{search → knowledge}/feedback-store.d.ts +0 -0
- /package/dist/{search → knowledge}/feedback-store.js +0 -0
- /package/dist/{search → knowledge}/ranker-features.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-rescore.js +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.d.ts +0 -0
- /package/dist/{search → knowledge}/ranker-trainer.js +0 -0
- /package/dist/{search → knowledge}/search-quality.js +0 -0
|
@@ -3,17 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.beginModelRunInAdapter = beginModelRunInAdapter;
|
|
7
|
-
exports.commitModelRunInAdapter = commitModelRunInAdapter;
|
|
8
|
-
exports.failModelRunInAdapter = failModelRunInAdapter;
|
|
9
|
-
exports.getModelRunInAdapter = getModelRunInAdapter;
|
|
10
6
|
exports.beginModelRun = beginModelRun;
|
|
11
7
|
exports.commitModelRun = commitModelRun;
|
|
12
8
|
exports.failModelRun = failModelRun;
|
|
13
9
|
exports.getModelRun = getModelRun;
|
|
10
|
+
exports.listModelRunNativeInputs = listModelRunNativeInputs;
|
|
14
11
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
15
|
-
const
|
|
16
|
-
const types_js_1 = require("./types.js");
|
|
12
|
+
const model_run_types_js_1 = require("./model-run-types.js");
|
|
17
13
|
const BEGIN_REPLAY_FIELDS = [
|
|
18
14
|
'model_id',
|
|
19
15
|
'model_provider',
|
|
@@ -73,6 +69,14 @@ function requireTimestamp(value, field, modelRunId) {
|
|
|
73
69
|
function normalizeNumber(value, fallback) {
|
|
74
70
|
return typeof value === 'number' && Number.isFinite(value) ? Math.floor(value) : fallback;
|
|
75
71
|
}
|
|
72
|
+
function requireTokenCount(value) {
|
|
73
|
+
if (value === undefined)
|
|
74
|
+
return undefined;
|
|
75
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
76
|
+
throw new Error('model_runs.token_count must be a non-negative safe integer');
|
|
77
|
+
}
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
76
80
|
function normalizeCost(value) {
|
|
77
81
|
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
78
82
|
}
|
|
@@ -125,7 +129,7 @@ function parseInputRefs(row) {
|
|
|
125
129
|
}
|
|
126
130
|
throw new Error(`Invalid model_runs.input_refs_json for ${row.model_run_id}: expected object`);
|
|
127
131
|
}
|
|
128
|
-
const MODEL_RUN_STATUS_SET = new Set(
|
|
132
|
+
const MODEL_RUN_STATUS_SET = new Set(model_run_types_js_1.MODEL_RUN_STATUSES);
|
|
129
133
|
function requireModelRunStatus(value, modelRunId) {
|
|
130
134
|
if (typeof value === 'string' && MODEL_RUN_STATUS_SET.has(value)) {
|
|
131
135
|
return value;
|
|
@@ -167,10 +171,6 @@ function mapModelRunRow(row) {
|
|
|
167
171
|
: null,
|
|
168
172
|
};
|
|
169
173
|
}
|
|
170
|
-
async function initializedAdapter() {
|
|
171
|
-
await (0, db_manager_js_1.initDB)();
|
|
172
|
-
return (0, db_manager_js_1.getAdapter)();
|
|
173
|
-
}
|
|
174
174
|
function selectModelRun(adapter, id) {
|
|
175
175
|
const row = adapter
|
|
176
176
|
.prepare(`
|
|
@@ -329,11 +329,15 @@ function isDuplicateModelRunError(error) {
|
|
|
329
329
|
const message = error instanceof Error ? error.message : String(error);
|
|
330
330
|
return /UNIQUE constraint failed: model_runs\.model_run_id|PRIMARY KEY constraint failed/i.test(message);
|
|
331
331
|
}
|
|
332
|
-
function resolveExistingCommittedRun(existing, summary) {
|
|
332
|
+
function resolveExistingCommittedRun(existing, summary, tokenCount) {
|
|
333
333
|
if (existing.status === 'committed') {
|
|
334
|
-
if (existing.completion_summary === summary
|
|
334
|
+
if (existing.completion_summary === summary &&
|
|
335
|
+
(tokenCount === undefined || existing.token_count === tokenCount)) {
|
|
335
336
|
return existing;
|
|
336
337
|
}
|
|
338
|
+
if (tokenCount !== undefined && existing.token_count !== tokenCount) {
|
|
339
|
+
throw new Error(`Model run already committed with different token_count: ${existing.model_run_id}`);
|
|
340
|
+
}
|
|
337
341
|
throw new Error(`Model run already committed with different completion_summary: ${existing.model_run_id}`);
|
|
338
342
|
}
|
|
339
343
|
if (existing.status === 'failed') {
|
|
@@ -341,11 +345,15 @@ function resolveExistingCommittedRun(existing, summary) {
|
|
|
341
345
|
}
|
|
342
346
|
throw new Error(`Cannot commit model run in ${existing.status} status: ${existing.model_run_id}`);
|
|
343
347
|
}
|
|
344
|
-
function resolveExistingFailedRun(existing, errorSummary) {
|
|
348
|
+
function resolveExistingFailedRun(existing, errorSummary, tokenCount) {
|
|
345
349
|
if (existing.status === 'failed') {
|
|
346
|
-
if (existing.error_summary === errorSummary
|
|
350
|
+
if (existing.error_summary === errorSummary &&
|
|
351
|
+
(tokenCount === undefined || existing.token_count === tokenCount)) {
|
|
347
352
|
return existing;
|
|
348
353
|
}
|
|
354
|
+
if (tokenCount !== undefined && existing.token_count !== tokenCount) {
|
|
355
|
+
throw new Error(`Model run already failed with different token_count: ${existing.model_run_id}`);
|
|
356
|
+
}
|
|
349
357
|
throw new Error(`Model run already failed with different error_summary: ${existing.model_run_id}`);
|
|
350
358
|
}
|
|
351
359
|
if (existing.status === 'committed') {
|
|
@@ -353,7 +361,7 @@ function resolveExistingFailedRun(existing, errorSummary) {
|
|
|
353
361
|
}
|
|
354
362
|
throw new Error(`Cannot fail model run in ${existing.status} status: ${existing.model_run_id}`);
|
|
355
363
|
}
|
|
356
|
-
function
|
|
364
|
+
function beginModelRun(adapter, input) {
|
|
357
365
|
const id = nullableString(input.model_run_id) ?? modelRunId();
|
|
358
366
|
const createdAt = normalizeTimestamp(input.created_at);
|
|
359
367
|
const status = normalizeBeginStatus(input.status, id);
|
|
@@ -391,11 +399,12 @@ function beginModelRunInAdapter(adapter, input) {
|
|
|
391
399
|
}
|
|
392
400
|
return requireModelRun(adapter, id);
|
|
393
401
|
}
|
|
394
|
-
function
|
|
402
|
+
function commitModelRun(adapter, modelRunId, summary, tokenCount) {
|
|
395
403
|
const summaryValue = nullableString(summary);
|
|
404
|
+
const measuredTokens = requireTokenCount(tokenCount);
|
|
396
405
|
const existing = requireModelRun(adapter, modelRunId);
|
|
397
406
|
if (existing.status !== 'running') {
|
|
398
|
-
return resolveExistingCommittedRun(existing, summaryValue);
|
|
407
|
+
return resolveExistingCommittedRun(existing, summaryValue, measuredTokens);
|
|
399
408
|
}
|
|
400
409
|
const completedAt = Date.now();
|
|
401
410
|
const result = adapter
|
|
@@ -404,20 +413,22 @@ function commitModelRunInAdapter(adapter, modelRunId, summary) {
|
|
|
404
413
|
SET status = 'committed',
|
|
405
414
|
completion_summary = ?,
|
|
406
415
|
error_summary = NULL,
|
|
416
|
+
token_count = ?,
|
|
407
417
|
completed_at = ?
|
|
408
418
|
WHERE model_run_id = ? AND status = 'running'
|
|
409
419
|
`)
|
|
410
|
-
.run(summaryValue, completedAt, modelRunId);
|
|
420
|
+
.run(summaryValue, measuredTokens ?? existing.token_count, completedAt, modelRunId);
|
|
411
421
|
if (result.changes === 0) {
|
|
412
|
-
return resolveExistingCommittedRun(requireModelRun(adapter, modelRunId), summaryValue);
|
|
422
|
+
return resolveExistingCommittedRun(requireModelRun(adapter, modelRunId), summaryValue, measuredTokens);
|
|
413
423
|
}
|
|
414
424
|
return requireModelRun(adapter, modelRunId);
|
|
415
425
|
}
|
|
416
|
-
function
|
|
426
|
+
function failModelRun(adapter, modelRunId, errorSummary, tokenCount) {
|
|
417
427
|
const errorSummaryValue = nullableString(errorSummary);
|
|
428
|
+
const measuredTokens = requireTokenCount(tokenCount);
|
|
418
429
|
const existing = requireModelRun(adapter, modelRunId);
|
|
419
430
|
if (existing.status !== 'running') {
|
|
420
|
-
return resolveExistingFailedRun(existing, errorSummaryValue);
|
|
431
|
+
return resolveExistingFailedRun(existing, errorSummaryValue, measuredTokens);
|
|
421
432
|
}
|
|
422
433
|
const completedAt = Date.now();
|
|
423
434
|
const result = adapter
|
|
@@ -426,32 +437,61 @@ function failModelRunInAdapter(adapter, modelRunId, errorSummary) {
|
|
|
426
437
|
SET status = 'failed',
|
|
427
438
|
completion_summary = NULL,
|
|
428
439
|
error_summary = ?,
|
|
440
|
+
token_count = ?,
|
|
429
441
|
completed_at = ?
|
|
430
442
|
WHERE model_run_id = ? AND status = 'running'
|
|
431
443
|
`)
|
|
432
|
-
.run(errorSummaryValue, completedAt, modelRunId);
|
|
444
|
+
.run(errorSummaryValue, measuredTokens ?? existing.token_count, completedAt, modelRunId);
|
|
433
445
|
if (result.changes === 0) {
|
|
434
|
-
return resolveExistingFailedRun(requireModelRun(adapter, modelRunId), errorSummaryValue);
|
|
446
|
+
return resolveExistingFailedRun(requireModelRun(adapter, modelRunId), errorSummaryValue, measuredTokens);
|
|
435
447
|
}
|
|
436
448
|
return requireModelRun(adapter, modelRunId);
|
|
437
449
|
}
|
|
438
|
-
function
|
|
450
|
+
function getModelRun(adapter, modelRunId) {
|
|
439
451
|
return selectModelRun(adapter, modelRunId);
|
|
440
452
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
453
|
+
/** Read one run's native input cohort without copying payloads or inventing legacy principals. */
|
|
454
|
+
function listModelRunNativeInputs(adapter, modelRunId, principalId, options = {}) {
|
|
455
|
+
requireString(principalId, 'principal_id');
|
|
456
|
+
const run = requireModelRun(adapter, modelRunId);
|
|
457
|
+
if (run.input_refs?.principalId !== principalId ||
|
|
458
|
+
!((typeof run.input_refs.nativeInputId === 'string' && run.input_refs.nativeInputId.trim()) ||
|
|
459
|
+
(typeof run.input_refs.sourceMessageRef === 'string' &&
|
|
460
|
+
run.input_refs.sourceMessageRef.trim()))) {
|
|
461
|
+
throw new Error('Model run has no matching principal-bound native input');
|
|
462
|
+
}
|
|
463
|
+
const afterId = options.afterId ?? 0;
|
|
464
|
+
const limit = options.limit ?? 25;
|
|
465
|
+
if (!Number.isSafeInteger(afterId) || afterId < 0) {
|
|
466
|
+
throw new Error('Model run native input cursor must be a non-negative integer');
|
|
467
|
+
}
|
|
468
|
+
if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {
|
|
469
|
+
throw new Error('Model run native input page limit must be 1 to 100');
|
|
470
|
+
}
|
|
471
|
+
const rows = adapter
|
|
472
|
+
.prepare(`SELECT input_id, stimulus_id, kind, principal_id, channel_key,
|
|
473
|
+
occurred_at, status, native_state
|
|
474
|
+
FROM model_run_native_inputs
|
|
475
|
+
WHERE model_run_id=? AND principal_id=? AND input_id>?
|
|
476
|
+
ORDER BY input_id LIMIT ?`)
|
|
477
|
+
.all(modelRunId, principalId, afterId, limit + 1);
|
|
478
|
+
if (afterId === 0 && rows.length === 0) {
|
|
479
|
+
throw new Error('Model run has no accepted native turn receipt');
|
|
480
|
+
}
|
|
481
|
+
const page = rows.slice(0, limit);
|
|
482
|
+
return {
|
|
483
|
+
runStatus: run.status,
|
|
484
|
+
items: page.map((row) => ({
|
|
485
|
+
inputId: row.input_id,
|
|
486
|
+
stimulusId: row.stimulus_id,
|
|
487
|
+
kind: row.kind,
|
|
488
|
+
principalId: row.principal_id,
|
|
489
|
+
channelKey: row.channel_key,
|
|
490
|
+
occurredAt: row.occurred_at,
|
|
491
|
+
status: row.status,
|
|
492
|
+
nativeState: row.native_state,
|
|
493
|
+
})),
|
|
494
|
+
nextCursor: rows.length > limit ? page[page.length - 1].input_id : null,
|
|
495
|
+
};
|
|
456
496
|
}
|
|
457
|
-
//# sourceMappingURL=store.js.map
|
|
497
|
+
//# sourceMappingURL=model-run-store.js.map
|
|
@@ -42,7 +42,8 @@ export interface ModelRunRecord {
|
|
|
42
42
|
created_at: number;
|
|
43
43
|
completed_at: number | null;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
/** Fields shared by model-backed and service-operation trace appends. */
|
|
46
|
+
interface AppendToolTraceCommon {
|
|
46
47
|
/** Host-derived access scope; legacy rows remain unscoped. */
|
|
47
48
|
owner_scope?: string | null;
|
|
48
49
|
project_id?: string | null;
|
|
@@ -51,7 +52,6 @@ export interface AppendToolTraceInput {
|
|
|
51
52
|
evidence_json?: string | null;
|
|
52
53
|
catalog_revision?: string | null;
|
|
53
54
|
trace_id?: string;
|
|
54
|
-
model_run_id: string;
|
|
55
55
|
gateway_call_id?: string | null;
|
|
56
56
|
tool_name: string;
|
|
57
57
|
input_summary?: string | null;
|
|
@@ -63,6 +63,30 @@ export interface AppendToolTraceInput {
|
|
|
63
63
|
failure_code?: string | null;
|
|
64
64
|
created_at?: number;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Model-backed append. `model_run_id` names the authorizing model run and stays
|
|
68
|
+
* required: the existing gateway/tracing callers are unchanged.
|
|
69
|
+
*/
|
|
70
|
+
export interface AppendToolTraceInput extends AppendToolTraceCommon {
|
|
71
|
+
model_run_id: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Service/CLI operation append. A truthful host operation traces itself without
|
|
75
|
+
* inventing a model run: the row is anchored by a nonempty `operation_id` and
|
|
76
|
+
* `actor_principal_id`, which stay required.
|
|
77
|
+
*
|
|
78
|
+
* `model_run_id` is OPTIONAL causal provenance: when a real completed model run
|
|
79
|
+
* caused this operation observation, its id may be carried so the association is
|
|
80
|
+
* queryable (the `model_runs` FK validates that the reference is real). It is
|
|
81
|
+
* never fabricated, never invented, and never serves as execution authorization
|
|
82
|
+
* - an operation without a causing run simply omits it and the column stays NULL.
|
|
83
|
+
*/
|
|
84
|
+
export interface AppendOperationToolTraceInput extends AppendToolTraceCommon {
|
|
85
|
+
operation_id: string;
|
|
86
|
+
actor_principal_id: string;
|
|
87
|
+
/** Optional real causal model run. Stored when supplied; absent stays NULL. */
|
|
88
|
+
model_run_id?: string | null;
|
|
89
|
+
}
|
|
66
90
|
export interface ToolTraceRecord {
|
|
67
91
|
/** Host-derived access scope; legacy rows remain unscoped. */
|
|
68
92
|
owner_scope?: string | null;
|
|
@@ -72,7 +96,11 @@ export interface ToolTraceRecord {
|
|
|
72
96
|
evidence_json?: string | null;
|
|
73
97
|
catalog_revision?: string | null;
|
|
74
98
|
trace_id: string;
|
|
75
|
-
|
|
99
|
+
/** NULL only for a service/operation-origin trace; legacy rows keep their model id. */
|
|
100
|
+
model_run_id: string | null;
|
|
101
|
+
/** Set (with actor_principal_id) exactly when this is an operation-origin trace. */
|
|
102
|
+
operation_id: string | null;
|
|
103
|
+
actor_principal_id: string | null;
|
|
76
104
|
gateway_call_id: string | null;
|
|
77
105
|
tool_name: string;
|
|
78
106
|
input_summary: string | null;
|
|
@@ -100,4 +128,5 @@ export interface ToolTracePage {
|
|
|
100
128
|
traces: ToolTraceRecord[];
|
|
101
129
|
next_cursor: string | null;
|
|
102
130
|
}
|
|
103
|
-
|
|
131
|
+
export {};
|
|
132
|
+
//# sourceMappingURL=model-run-types.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Notifications are observations, not backend pre-execution authorization hooks. */
|
|
2
|
+
export interface NativeEffectObserver {
|
|
3
|
+
started(name: string, input: Record<string, unknown>): void;
|
|
4
|
+
settled(name: string, toolUseId: string, isError: boolean, outcome?: 'unknown'): void;
|
|
5
|
+
interrupted(): void;
|
|
6
|
+
/** Settle the durable admission marker only after a clean run return. */
|
|
7
|
+
finished?(): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function isDelegationToolName(name: string): boolean;
|
|
10
|
+
export declare function isNativeToolName(name: string): boolean;
|
|
11
|
+
/** TG-03/04/05/06: a completed shell invocation is still unsafe to replay. */
|
|
12
|
+
export declare class NativeEffectReplayBoundary {
|
|
13
|
+
private readonly observer?;
|
|
14
|
+
private observed;
|
|
15
|
+
constructor(observer?: NativeEffectObserver | undefined);
|
|
16
|
+
private observe;
|
|
17
|
+
started(name: string, input: Record<string, unknown>): void;
|
|
18
|
+
settled(name: string, toolUseId: string, isError: boolean, outcome?: 'unknown'): void;
|
|
19
|
+
finished(): void;
|
|
20
|
+
failure(error: unknown, allowPreExecutionRecovery?: boolean): unknown;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=native-effect-observer.d.ts.map
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NativeEffectReplayBoundary = void 0;
|
|
4
|
+
exports.isDelegationToolName = isDelegationToolName;
|
|
5
|
+
exports.isNativeToolName = isNativeToolName;
|
|
6
|
+
const types_js_1 = require("./drivers/types.js");
|
|
7
|
+
const NATIVE_EFFECT_NAMES = new Set([
|
|
8
|
+
'bash',
|
|
9
|
+
'write',
|
|
10
|
+
'edit',
|
|
11
|
+
'multiedit',
|
|
12
|
+
'apply_patch',
|
|
13
|
+
'exec_command',
|
|
14
|
+
'shell',
|
|
15
|
+
'shell_command',
|
|
16
|
+
'commandexecution',
|
|
17
|
+
'filechange',
|
|
18
|
+
'execute_command',
|
|
19
|
+
'write_to_file',
|
|
20
|
+
'replace_in_file',
|
|
21
|
+
]);
|
|
22
|
+
/**
|
|
23
|
+
* Delegation is an admission, not an effect. Spawning a native subagent (Claude `Agent`/
|
|
24
|
+
* `Task`, Codex `spawn_agent`/`send_input`/`resume_agent`) names nothing the replay gate
|
|
25
|
+
* can re-execute: every effect the child performs carries its own ledger row through the
|
|
26
|
+
* gateway. Measured 2026-09-10: a Claude `Agent` tool_use recorded as `native_tool`
|
|
27
|
+
* under the reused `workorder:board:full:repair` occurrence blocked every later board
|
|
28
|
+
* order ("owner effect requires reconciliation before replay", orders #4805-#4807).
|
|
29
|
+
* Codex spawns already bypass this boundary via `onSubagentStart`; the Claude spawn
|
|
30
|
+
* arrives as an ordinary tool_use, so the name set must not claim it.
|
|
31
|
+
*/
|
|
32
|
+
const DELEGATION_NAMES = new Set([
|
|
33
|
+
'agent',
|
|
34
|
+
'task',
|
|
35
|
+
'spawn_agent',
|
|
36
|
+
'collabagenttoolcall',
|
|
37
|
+
'send_input',
|
|
38
|
+
'resume_agent',
|
|
39
|
+
]);
|
|
40
|
+
function isDelegationToolName(name) {
|
|
41
|
+
return DELEGATION_NAMES.has(name.toLowerCase());
|
|
42
|
+
}
|
|
43
|
+
const NATIVE_READ_NAMES = new Set(['read', 'glob', 'grep', 'webfetch', 'websearch', 'web_search']);
|
|
44
|
+
function isNativeToolName(name) {
|
|
45
|
+
return (NATIVE_EFFECT_NAMES.has(name.toLowerCase()) ||
|
|
46
|
+
NATIVE_READ_NAMES.has(name.toLowerCase()) ||
|
|
47
|
+
isDelegationToolName(name));
|
|
48
|
+
}
|
|
49
|
+
/** TG-03/04/05/06: a completed shell invocation is still unsafe to replay. */
|
|
50
|
+
class NativeEffectReplayBoundary {
|
|
51
|
+
observer;
|
|
52
|
+
observed = false;
|
|
53
|
+
constructor(observer) {
|
|
54
|
+
this.observer = observer;
|
|
55
|
+
}
|
|
56
|
+
observe(callback) {
|
|
57
|
+
try {
|
|
58
|
+
callback();
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// A trace sink is not an authorization hook; omit exception text (may contain input).
|
|
62
|
+
console.warn('[NativeEffectObserver] observation failed');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
started(name, input) {
|
|
66
|
+
if (!isNativeToolName(name))
|
|
67
|
+
return;
|
|
68
|
+
if (NATIVE_EFFECT_NAMES.has(name.toLowerCase()))
|
|
69
|
+
this.observed = true;
|
|
70
|
+
this.observe(() => this.observer?.started(name, input));
|
|
71
|
+
}
|
|
72
|
+
settled(name, toolUseId, isError, outcome) {
|
|
73
|
+
if (!isNativeToolName(name))
|
|
74
|
+
return;
|
|
75
|
+
if (NATIVE_EFFECT_NAMES.has(name.toLowerCase()))
|
|
76
|
+
this.observed = true;
|
|
77
|
+
this.observe(() => this.observer?.settled(name, toolUseId, isError, outcome));
|
|
78
|
+
}
|
|
79
|
+
finished() {
|
|
80
|
+
this.observe(() => this.observer?.finished?.());
|
|
81
|
+
}
|
|
82
|
+
failure(error, allowPreExecutionRecovery = false) {
|
|
83
|
+
// Only AgentLoop's trusted recoverable-session predicate may permit a reset.
|
|
84
|
+
// Once a native effect is observed, even a session error cannot allow replay.
|
|
85
|
+
if (allowPreExecutionRecovery && !this.observed) {
|
|
86
|
+
this.observe(() => this.observer?.interrupted());
|
|
87
|
+
return error;
|
|
88
|
+
}
|
|
89
|
+
if (!this.observed) {
|
|
90
|
+
this.observe(() => this.observer?.interrupted());
|
|
91
|
+
return error;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
this.observer?.interrupted();
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// The durable started reservation remains unresolved if settlement fails.
|
|
98
|
+
}
|
|
99
|
+
return new types_js_1.AgentError('Native run effect outcome is uncertain; reconcile effects before replaying the occurrence.', 'MUTATION_OUTCOME_UNKNOWN', error instanceof Error ? error : new Error(String(error)), false);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.NativeEffectReplayBoundary = NativeEffectReplayBoundary;
|
|
103
|
+
//# sourceMappingURL=native-effect-observer.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { DatabaseAdapter } from '../db-manager.js';
|
|
2
|
+
import type { NativeInputDispatch, NativeInputReceipt } from './drivers/types.js';
|
|
3
|
+
import type { NativeTurnResult } from './native-turn.js';
|
|
4
|
+
import type { StimulusKind } from './mailbox.js';
|
|
5
|
+
type NativeTurnResultPayload = Pick<NativeTurnResult, 'response' | 'turns' | 'totalUsage' | 'stopReason' | 'modelRunId' | 'modelRunProvenance' | 'stoppedBy'> & {
|
|
6
|
+
ownerJournalProvenance?: 'commit_failed';
|
|
7
|
+
};
|
|
8
|
+
export type NativeTurnResultRecord = NativeTurnResultPayload & {
|
|
9
|
+
primaryStimulusId: string;
|
|
10
|
+
/** Null only for historical results whose primary mailbox row was already pruned. */
|
|
11
|
+
primaryKind: StimulusKind | null;
|
|
12
|
+
};
|
|
13
|
+
export interface NativeDeliveryRecord {
|
|
14
|
+
invocationId: string | null;
|
|
15
|
+
state: 'prepared' | 'dispatching' | 'accepted' | 'settled' | 'uncertain';
|
|
16
|
+
dispatch: NativeInputDispatch | null;
|
|
17
|
+
receipt: NativeInputReceipt | null;
|
|
18
|
+
error: string | null;
|
|
19
|
+
}
|
|
20
|
+
/** One durable dispatch identity per accepted input. No task meaning or effect classification. */
|
|
21
|
+
export declare class NativeInputJournal {
|
|
22
|
+
private readonly db;
|
|
23
|
+
private readonly now;
|
|
24
|
+
constructor(db: DatabaseAdapter, now?: () => number);
|
|
25
|
+
get(inputId: number): NativeDeliveryRecord | null;
|
|
26
|
+
/** Page the inputs that share one exact native receipt under one principal. */
|
|
27
|
+
listByReceipt(receipt: NativeInputReceipt, principalId: string, options?: {
|
|
28
|
+
afterId?: number;
|
|
29
|
+
limit?: number;
|
|
30
|
+
}): {
|
|
31
|
+
inputIds: number[];
|
|
32
|
+
nextCursor: number | null;
|
|
33
|
+
};
|
|
34
|
+
/** One immutable final result per native turn, written before any consumer reply. */
|
|
35
|
+
storeResult(inputId: number, result: NativeTurnResult): void;
|
|
36
|
+
/** A later accepted input can recover the one final result under its principal. */
|
|
37
|
+
resultForReceipt(receipt: NativeInputReceipt, principalId: string): NativeTurnResultRecord | null;
|
|
38
|
+
prepare(inputId: number): NativeDeliveryRecord;
|
|
39
|
+
dispatch(inputId: number, value: NativeInputDispatch): void;
|
|
40
|
+
accept(inputId: number, value: NativeInputReceipt): void;
|
|
41
|
+
settle(inputId: number, reconciled?: boolean): void;
|
|
42
|
+
uncertain(inputId: number, error: string): void;
|
|
43
|
+
pending(limit: number, afterId?: number): number[];
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=native-input-journal.d.ts.map
|