@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
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA (Memory-Augmented MCP Architecture) - Outcome Tracker
|
|
3
|
-
*
|
|
4
|
-
* Track decision outcomes from user feedback
|
|
5
|
-
* Tasks: 4.1-4.8 (Failure/success indicators, UserPromptSubmit analysis, outcome marking)
|
|
6
|
-
* AC #3: Failure tracking (user feedback → outcome marked, failure_reason extracted, duration calculated)
|
|
7
|
-
*
|
|
8
|
-
* @module outcome-tracker
|
|
9
|
-
* @version 1.0
|
|
10
|
-
* @date 2025-11-14
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Decision record from database
|
|
14
|
-
*/
|
|
15
|
-
interface DecisionRecord {
|
|
16
|
-
id: string;
|
|
17
|
-
topic: string;
|
|
18
|
-
decision: string;
|
|
19
|
-
outcome?: string | null;
|
|
20
|
-
confidence?: number;
|
|
21
|
-
created_at: number;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Hook context from Claude Code
|
|
25
|
-
*/
|
|
26
|
-
export interface HookContext {
|
|
27
|
-
user_message?: string;
|
|
28
|
-
session_id?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Failure indicators
|
|
32
|
-
* Task 4.2: Define failure indicators
|
|
33
|
-
*/
|
|
34
|
-
export declare const FAILURE_INDICATORS: RegExp[];
|
|
35
|
-
/**
|
|
36
|
-
* Success indicators
|
|
37
|
-
* Task 4.3: Define success indicators
|
|
38
|
-
*/
|
|
39
|
-
export declare const SUCCESS_INDICATORS: RegExp[];
|
|
40
|
-
/**
|
|
41
|
-
* Partial success indicators
|
|
42
|
-
* Task 4.3: Define partial success indicators
|
|
43
|
-
*/
|
|
44
|
-
export declare const PARTIAL_INDICATORS: RegExp[];
|
|
45
|
-
/**
|
|
46
|
-
* Recent decision time window (1 hour in milliseconds)
|
|
47
|
-
* Task 4.5: Only mark outcome if decision is recent (< 1 hour)
|
|
48
|
-
*/
|
|
49
|
-
export declare const RECENT_WINDOW_MS: number;
|
|
50
|
-
/**
|
|
51
|
-
* Check if message matches failure indicators
|
|
52
|
-
*
|
|
53
|
-
* Task 4.2: Match failure patterns
|
|
54
|
-
*
|
|
55
|
-
* @param message - User message
|
|
56
|
-
* @returns True if failure detected
|
|
57
|
-
*/
|
|
58
|
-
export declare function matchesFailureIndicators(message: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Check if message matches success indicators
|
|
61
|
-
*
|
|
62
|
-
* Task 4.3: Match success patterns
|
|
63
|
-
*
|
|
64
|
-
* @param message - User message
|
|
65
|
-
* @returns True if success detected
|
|
66
|
-
*/
|
|
67
|
-
export declare function matchesSuccessIndicators(message: string): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Check if message matches partial success indicators
|
|
70
|
-
*
|
|
71
|
-
* Task 4.3: Match partial success patterns
|
|
72
|
-
*
|
|
73
|
-
* @param message - User message
|
|
74
|
-
* @returns True if partial success detected
|
|
75
|
-
*/
|
|
76
|
-
export declare function matchesPartialIndicators(message: string): boolean;
|
|
77
|
-
/**
|
|
78
|
-
* Outcome type from analysis
|
|
79
|
-
*/
|
|
80
|
-
export type OutcomeType = 'FAILED' | 'SUCCESS' | 'PARTIAL';
|
|
81
|
-
/**
|
|
82
|
-
* Determine outcome from user message
|
|
83
|
-
*
|
|
84
|
-
* Task 4.4, 4.5: Analyze user message for indicators
|
|
85
|
-
* AC #3: Failure tracking from user feedback
|
|
86
|
-
*
|
|
87
|
-
* @param message - User message
|
|
88
|
-
* @returns Outcome type ('FAILED', 'SUCCESS', 'PARTIAL') or null
|
|
89
|
-
*/
|
|
90
|
-
export declare function analyzeOutcome(message: string): OutcomeType | null;
|
|
91
|
-
/**
|
|
92
|
-
* Extract failure reason from user message
|
|
93
|
-
*
|
|
94
|
-
* Task 4.6: Extract failure_reason from user message
|
|
95
|
-
* AC #3: failure_reason extracted
|
|
96
|
-
*
|
|
97
|
-
* Simple extraction: First sentence or first 200 characters
|
|
98
|
-
* Future: Use LLM for better extraction
|
|
99
|
-
*
|
|
100
|
-
* @param message - User message
|
|
101
|
-
* @param outcome - Outcome type
|
|
102
|
-
* @returns Failure reason
|
|
103
|
-
*/
|
|
104
|
-
export declare function extractFailureReason(message: string, outcome: OutcomeType | null): string | null;
|
|
105
|
-
/**
|
|
106
|
-
* Get recent decision (within 1 hour)
|
|
107
|
-
*
|
|
108
|
-
* Task 4.5: Find recent decision (< 1 hour)
|
|
109
|
-
* AC #3: Recent decision (< 1 hour) marked
|
|
110
|
-
*
|
|
111
|
-
* @param sessionId - Session ID
|
|
112
|
-
* @returns Recent decision or null
|
|
113
|
-
*/
|
|
114
|
-
export declare function getRecentDecision(sessionId: string): DecisionRecord | null;
|
|
115
|
-
/**
|
|
116
|
-
* Calculate duration in days
|
|
117
|
-
*
|
|
118
|
-
* Task 4.7: Calculate duration_days
|
|
119
|
-
* AC #3: duration_days calculated
|
|
120
|
-
*
|
|
121
|
-
* @param createdAt - Decision created timestamp
|
|
122
|
-
* @returns Duration in days
|
|
123
|
-
*/
|
|
124
|
-
export declare function calculateDurationDays(createdAt: number): number;
|
|
125
|
-
/**
|
|
126
|
-
* Get evidence impact for outcome
|
|
127
|
-
*
|
|
128
|
-
* Task 6: Confidence evolution - Calculate impact based on outcome
|
|
129
|
-
* AC #5: Confidence score calculated based on history
|
|
130
|
-
*
|
|
131
|
-
* @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL')
|
|
132
|
-
* @param durationDays - Duration in days
|
|
133
|
-
* @returns Impact on confidence
|
|
134
|
-
*/
|
|
135
|
-
export declare function getEvidenceImpact(outcome: OutcomeType, durationDays: number): number;
|
|
136
|
-
/**
|
|
137
|
-
* Mark decision outcome
|
|
138
|
-
*
|
|
139
|
-
* Task 4.8: Update decision row with outcome, failure_reason, duration_days
|
|
140
|
-
* Task 6.5: Update confidence when outcome is marked
|
|
141
|
-
* AC #3: Outcome marked with failure_reason and duration_days
|
|
142
|
-
* AC #5: Confidence evolution
|
|
143
|
-
*
|
|
144
|
-
* @param decisionId - Decision ID
|
|
145
|
-
* @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL')
|
|
146
|
-
* @param failureReason - Failure reason (if outcome=FAILED)
|
|
147
|
-
* @param durationDays - Duration in days
|
|
148
|
-
*/
|
|
149
|
-
export declare function markOutcome(decisionId: string, outcome: OutcomeType, failureReason: string | null, durationDays: number): Promise<void>;
|
|
150
|
-
export {};
|
|
151
|
-
//# sourceMappingURL=outcome-tracker.d.ts.map
|
package/dist/outcome-tracker.js
DELETED
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MAMA (Memory-Augmented MCP Architecture) - Outcome Tracker
|
|
4
|
-
*
|
|
5
|
-
* Track decision outcomes from user feedback
|
|
6
|
-
* Tasks: 4.1-4.8 (Failure/success indicators, UserPromptSubmit analysis, outcome marking)
|
|
7
|
-
* AC #3: Failure tracking (user feedback → outcome marked, failure_reason extracted, duration calculated)
|
|
8
|
-
*
|
|
9
|
-
* @module outcome-tracker
|
|
10
|
-
* @version 1.0
|
|
11
|
-
* @date 2025-11-14
|
|
12
|
-
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.RECENT_WINDOW_MS = exports.PARTIAL_INDICATORS = exports.SUCCESS_INDICATORS = exports.FAILURE_INDICATORS = void 0;
|
|
15
|
-
exports.matchesFailureIndicators = matchesFailureIndicators;
|
|
16
|
-
exports.matchesSuccessIndicators = matchesSuccessIndicators;
|
|
17
|
-
exports.matchesPartialIndicators = matchesPartialIndicators;
|
|
18
|
-
exports.analyzeOutcome = analyzeOutcome;
|
|
19
|
-
exports.extractFailureReason = extractFailureReason;
|
|
20
|
-
exports.getRecentDecision = getRecentDecision;
|
|
21
|
-
exports.calculateDurationDays = calculateDurationDays;
|
|
22
|
-
exports.getEvidenceImpact = getEvidenceImpact;
|
|
23
|
-
exports.markOutcome = markOutcome;
|
|
24
|
-
const debug_logger_js_1 = require("./debug-logger.js");
|
|
25
|
-
const memory_store_js_1 = require("./memory-store.js");
|
|
26
|
-
const decision_tracker_js_1 = require("./decision-tracker.js");
|
|
27
|
-
/**
|
|
28
|
-
* Failure indicators
|
|
29
|
-
* Task 4.2: Define failure indicators
|
|
30
|
-
*/
|
|
31
|
-
exports.FAILURE_INDICATORS = [
|
|
32
|
-
/doesn't\s*work/i,
|
|
33
|
-
/failed/i,
|
|
34
|
-
/error/i,
|
|
35
|
-
/slow/i,
|
|
36
|
-
/broken/i,
|
|
37
|
-
/bug/i,
|
|
38
|
-
/wrong/i,
|
|
39
|
-
/not\s*working/i,
|
|
40
|
-
];
|
|
41
|
-
/**
|
|
42
|
-
* Success indicators
|
|
43
|
-
* Task 4.3: Define success indicators
|
|
44
|
-
*/
|
|
45
|
-
exports.SUCCESS_INDICATORS = [
|
|
46
|
-
/works/i,
|
|
47
|
-
/perfect/i,
|
|
48
|
-
/great/i,
|
|
49
|
-
/success/i,
|
|
50
|
-
/excellent/i,
|
|
51
|
-
/fast/i,
|
|
52
|
-
/good/i,
|
|
53
|
-
];
|
|
54
|
-
/**
|
|
55
|
-
* Partial success indicators
|
|
56
|
-
* Task 4.3: Define partial success indicators
|
|
57
|
-
*/
|
|
58
|
-
exports.PARTIAL_INDICATORS = [/okay/i, /acceptable/i, /improved/i, /better/i];
|
|
59
|
-
/**
|
|
60
|
-
* Recent decision time window (1 hour in milliseconds)
|
|
61
|
-
* Task 4.5: Only mark outcome if decision is recent (< 1 hour)
|
|
62
|
-
*/
|
|
63
|
-
exports.RECENT_WINDOW_MS = 60 * 60 * 1000; // 1 hour
|
|
64
|
-
/**
|
|
65
|
-
* Check if message matches failure indicators
|
|
66
|
-
*
|
|
67
|
-
* Task 4.2: Match failure patterns
|
|
68
|
-
*
|
|
69
|
-
* @param message - User message
|
|
70
|
-
* @returns True if failure detected
|
|
71
|
-
*/
|
|
72
|
-
function matchesFailureIndicators(message) {
|
|
73
|
-
return exports.FAILURE_INDICATORS.some((pattern) => pattern.test(message));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Check if message matches success indicators
|
|
77
|
-
*
|
|
78
|
-
* Task 4.3: Match success patterns
|
|
79
|
-
*
|
|
80
|
-
* @param message - User message
|
|
81
|
-
* @returns True if success detected
|
|
82
|
-
*/
|
|
83
|
-
function matchesSuccessIndicators(message) {
|
|
84
|
-
return exports.SUCCESS_INDICATORS.some((pattern) => pattern.test(message));
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Check if message matches partial success indicators
|
|
88
|
-
*
|
|
89
|
-
* Task 4.3: Match partial success patterns
|
|
90
|
-
*
|
|
91
|
-
* @param message - User message
|
|
92
|
-
* @returns True if partial success detected
|
|
93
|
-
*/
|
|
94
|
-
function matchesPartialIndicators(message) {
|
|
95
|
-
return exports.PARTIAL_INDICATORS.some((pattern) => pattern.test(message));
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Determine outcome from user message
|
|
99
|
-
*
|
|
100
|
-
* Task 4.4, 4.5: Analyze user message for indicators
|
|
101
|
-
* AC #3: Failure tracking from user feedback
|
|
102
|
-
*
|
|
103
|
-
* @param message - User message
|
|
104
|
-
* @returns Outcome type ('FAILED', 'SUCCESS', 'PARTIAL') or null
|
|
105
|
-
*/
|
|
106
|
-
function analyzeOutcome(message) {
|
|
107
|
-
if (matchesFailureIndicators(message)) {
|
|
108
|
-
return 'FAILED';
|
|
109
|
-
}
|
|
110
|
-
if (matchesSuccessIndicators(message)) {
|
|
111
|
-
return 'SUCCESS';
|
|
112
|
-
}
|
|
113
|
-
if (matchesPartialIndicators(message)) {
|
|
114
|
-
return 'PARTIAL';
|
|
115
|
-
}
|
|
116
|
-
return null; // No clear outcome
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Extract failure reason from user message
|
|
120
|
-
*
|
|
121
|
-
* Task 4.6: Extract failure_reason from user message
|
|
122
|
-
* AC #3: failure_reason extracted
|
|
123
|
-
*
|
|
124
|
-
* Simple extraction: First sentence or first 200 characters
|
|
125
|
-
* Future: Use LLM for better extraction
|
|
126
|
-
*
|
|
127
|
-
* @param message - User message
|
|
128
|
-
* @param outcome - Outcome type
|
|
129
|
-
* @returns Failure reason
|
|
130
|
-
*/
|
|
131
|
-
function extractFailureReason(message, outcome) {
|
|
132
|
-
if (outcome !== 'FAILED') {
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
// Extract first sentence
|
|
136
|
-
const firstSentence = message.split(/[.!?]/)[0].trim();
|
|
137
|
-
// Limit to 200 characters
|
|
138
|
-
const reason = firstSentence.substring(0, 200);
|
|
139
|
-
return reason || 'User indicated failure';
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Get recent decision (within 1 hour)
|
|
143
|
-
*
|
|
144
|
-
* Task 4.5: Find recent decision (< 1 hour)
|
|
145
|
-
* AC #3: Recent decision (< 1 hour) marked
|
|
146
|
-
*
|
|
147
|
-
* @param sessionId - Session ID
|
|
148
|
-
* @returns Recent decision or null
|
|
149
|
-
*/
|
|
150
|
-
function getRecentDecision(sessionId) {
|
|
151
|
-
const db = (0, memory_store_js_1.getDB)();
|
|
152
|
-
try {
|
|
153
|
-
const now = Date.now();
|
|
154
|
-
const cutoffTime = now - exports.RECENT_WINDOW_MS;
|
|
155
|
-
const recent = db
|
|
156
|
-
.prepare(`
|
|
157
|
-
SELECT * FROM decisions
|
|
158
|
-
WHERE session_id = ?
|
|
159
|
-
AND outcome IS NULL
|
|
160
|
-
AND created_at > ?
|
|
161
|
-
ORDER BY created_at DESC
|
|
162
|
-
LIMIT 1
|
|
163
|
-
`)
|
|
164
|
-
.get(sessionId, cutoffTime);
|
|
165
|
-
return recent || null;
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
169
|
-
throw new Error(`Failed to query recent decision: ${message}`);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Calculate duration in days
|
|
174
|
-
*
|
|
175
|
-
* Task 4.7: Calculate duration_days
|
|
176
|
-
* AC #3: duration_days calculated
|
|
177
|
-
*
|
|
178
|
-
* @param createdAt - Decision created timestamp
|
|
179
|
-
* @returns Duration in days
|
|
180
|
-
*/
|
|
181
|
-
function calculateDurationDays(createdAt) {
|
|
182
|
-
const now = Date.now();
|
|
183
|
-
const durationMs = now - createdAt;
|
|
184
|
-
const durationDays = durationMs / (1000 * 60 * 60 * 24);
|
|
185
|
-
// Round to 2 decimal places
|
|
186
|
-
return Math.round(durationDays * 100) / 100;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Get evidence impact for outcome
|
|
190
|
-
*
|
|
191
|
-
* Task 6: Confidence evolution - Calculate impact based on outcome
|
|
192
|
-
* AC #5: Confidence score calculated based on history
|
|
193
|
-
*
|
|
194
|
-
* @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL')
|
|
195
|
-
* @param durationDays - Duration in days
|
|
196
|
-
* @returns Impact on confidence
|
|
197
|
-
*/
|
|
198
|
-
function getEvidenceImpact(outcome, durationDays) {
|
|
199
|
-
// Task 6.3: Define evidence impacts
|
|
200
|
-
let impact = 0;
|
|
201
|
-
switch (outcome) {
|
|
202
|
-
case 'SUCCESS':
|
|
203
|
-
impact = 0.2; // +0.2 for success
|
|
204
|
-
break;
|
|
205
|
-
case 'FAILED':
|
|
206
|
-
impact = -0.3; // -0.3 for failure
|
|
207
|
-
break;
|
|
208
|
-
case 'PARTIAL':
|
|
209
|
-
impact = 0.1; // +0.1 for partial success
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
// Task 6.3: Temporal stability bonus (30+ days)
|
|
213
|
-
if (outcome === 'SUCCESS' && durationDays >= 30) {
|
|
214
|
-
impact += 0.1; // +0.1 for temporal stability
|
|
215
|
-
}
|
|
216
|
-
return impact;
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Mark decision outcome
|
|
220
|
-
*
|
|
221
|
-
* Task 4.8: Update decision row with outcome, failure_reason, duration_days
|
|
222
|
-
* Task 6.5: Update confidence when outcome is marked
|
|
223
|
-
* AC #3: Outcome marked with failure_reason and duration_days
|
|
224
|
-
* AC #5: Confidence evolution
|
|
225
|
-
*
|
|
226
|
-
* @param decisionId - Decision ID
|
|
227
|
-
* @param outcome - Outcome type ('FAILED', 'SUCCESS', 'PARTIAL')
|
|
228
|
-
* @param failureReason - Failure reason (if outcome=FAILED)
|
|
229
|
-
* @param durationDays - Duration in days
|
|
230
|
-
*/
|
|
231
|
-
async function markOutcome(decisionId, outcome, failureReason, durationDays) {
|
|
232
|
-
try {
|
|
233
|
-
// Get current decision to read confidence
|
|
234
|
-
const db = (0, memory_store_js_1.getDB)();
|
|
235
|
-
const decision = db.prepare('SELECT * FROM decisions WHERE id = ?').get(decisionId);
|
|
236
|
-
if (!decision) {
|
|
237
|
-
throw new Error(`Decision not found: ${decisionId}`);
|
|
238
|
-
}
|
|
239
|
-
// Guard against double-marking
|
|
240
|
-
if (decision.outcome) {
|
|
241
|
-
(0, debug_logger_js_1.info)(`[MAMA] Outcome already set for ${decisionId}: ${decision.outcome}`);
|
|
242
|
-
return;
|
|
243
|
-
}
|
|
244
|
-
// Task 6.5: Calculate new confidence
|
|
245
|
-
const evidenceImpact = getEvidenceImpact(outcome, durationDays);
|
|
246
|
-
// Map OutcomeType to EvidenceItem.type (FAILED → failure, not 'failed')
|
|
247
|
-
const outcomeToEvidenceType = {
|
|
248
|
-
SUCCESS: 'success',
|
|
249
|
-
FAILED: 'failure',
|
|
250
|
-
PARTIAL: 'partial',
|
|
251
|
-
};
|
|
252
|
-
const evidence = [
|
|
253
|
-
{ type: outcomeToEvidenceType[outcome], impact: evidenceImpact },
|
|
254
|
-
];
|
|
255
|
-
const prevConfidence = Number(decision.confidence ?? 0);
|
|
256
|
-
const newConfidence = (0, decision_tracker_js_1.updateConfidence)(prevConfidence, evidence);
|
|
257
|
-
// Update decision with outcome and new confidence
|
|
258
|
-
await (0, memory_store_js_1.updateDecisionOutcome)(decisionId, {
|
|
259
|
-
outcome,
|
|
260
|
-
failure_reason: failureReason,
|
|
261
|
-
duration_days: durationDays,
|
|
262
|
-
confidence: newConfidence,
|
|
263
|
-
});
|
|
264
|
-
(0, debug_logger_js_1.info)(`[MAMA] Confidence updated: ${prevConfidence.toFixed(2)} → ${newConfidence.toFixed(2)} (${outcome})`);
|
|
265
|
-
}
|
|
266
|
-
catch (error) {
|
|
267
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
268
|
-
throw new Error(`Failed to mark outcome: ${message}`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
//# sourceMappingURL=outcome-tracker.js.map
|
package/dist/query-intent.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA (Memory-Augmented MCP Architecture) - Query Intent Analysis
|
|
3
|
-
*
|
|
4
|
-
* Analyzes user queries to detect decision-related intent using EXAONE 3.5
|
|
5
|
-
* Tasks: 2.1-2.8 (LLM intent analysis with fallback chain)
|
|
6
|
-
*
|
|
7
|
-
* @module query-intent
|
|
8
|
-
*/
|
|
9
|
-
export interface IntentResult {
|
|
10
|
-
involves_decision: boolean;
|
|
11
|
-
topic: string | null;
|
|
12
|
-
confidence: number;
|
|
13
|
-
reasoning: string;
|
|
14
|
-
}
|
|
15
|
-
export interface AnalyzeOptions {
|
|
16
|
-
timeout?: number;
|
|
17
|
-
threshold?: number;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Analyze user message for decision-related intent
|
|
21
|
-
*/
|
|
22
|
-
export declare function analyzeIntent(userMessage: string, options?: AnalyzeOptions): Promise<IntentResult>;
|
|
23
|
-
//# sourceMappingURL=query-intent.d.ts.map
|
package/dist/query-intent.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MAMA (Memory-Augmented MCP Architecture) - Query Intent Analysis
|
|
4
|
-
*
|
|
5
|
-
* Analyzes user queries to detect decision-related intent using EXAONE 3.5
|
|
6
|
-
* Tasks: 2.1-2.8 (LLM intent analysis with fallback chain)
|
|
7
|
-
*
|
|
8
|
-
* @module query-intent
|
|
9
|
-
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.analyzeIntent = analyzeIntent;
|
|
12
|
-
const debug_logger_js_1 = require("./debug-logger.js");
|
|
13
|
-
const ollama_client_js_1 = require("./ollama-client.js");
|
|
14
|
-
/**
|
|
15
|
-
* Analyze user message for decision-related intent
|
|
16
|
-
*/
|
|
17
|
-
async function analyzeIntent(userMessage, options = {}) {
|
|
18
|
-
const { timeout = 5000, // Increased: LLM needs time, user accepts longer thinking
|
|
19
|
-
threshold = 0.6, } = options;
|
|
20
|
-
try {
|
|
21
|
-
// Task 2.2: Build prompt for decision-making analysis
|
|
22
|
-
const prompt = `
|
|
23
|
-
Analyze if this query involves decision-making or past choices:
|
|
24
|
-
|
|
25
|
-
User Message: "${userMessage}"
|
|
26
|
-
|
|
27
|
-
Decision Indicators:
|
|
28
|
-
1. References to past decisions ("we chose X", "last time we did Y")
|
|
29
|
-
2. Questions about previous approaches ("why did we use X?")
|
|
30
|
-
3. Decision evolution queries ("should we change from X to Y?")
|
|
31
|
-
4. Architecture/strategy questions
|
|
32
|
-
5. Method/approach questions ("how do I...", "what's the way to...")
|
|
33
|
-
6. Best practice questions ("what should I use for...", "which one should I use...")
|
|
34
|
-
|
|
35
|
-
Return JSON with "topic" as a short snake_case identifier (e.g., "mesh_structure", "database_choice", "auth_strategy", "coding_style", "error_handling"):
|
|
36
|
-
{
|
|
37
|
-
"involves_decision": boolean,
|
|
38
|
-
"topic": string or null (extract main technical topic in snake_case),
|
|
39
|
-
"confidence": 0.0-1.0,
|
|
40
|
-
"reasoning": "brief explanation"
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
IMPORTANT: Generate "topic" freely based on the message content. Do NOT limit to predefined values.
|
|
44
|
-
|
|
45
|
-
Examples:
|
|
46
|
-
- "Why did we choose COMPLEX mesh structure?" → {"involves_decision": true, "topic": "mesh_structure", "confidence": 0.9}
|
|
47
|
-
- "Let's use PostgreSQL for database" → {"involves_decision": true, "topic": "database_choice", "confidence": 0.9}
|
|
48
|
-
- "How should we store workflow data?" → {"involves_decision": true, "topic": "workflow_storage", "confidence": 0.85}
|
|
49
|
-
- "Read the file please" → {"involves_decision": false, "topic": null, "confidence": 0.1}
|
|
50
|
-
`.trim();
|
|
51
|
-
// Task 2.3: Call EXAONE 3.5 with Tier 1 fallback
|
|
52
|
-
const result = await generateWithFallback(prompt, {
|
|
53
|
-
format: 'json',
|
|
54
|
-
temperature: 0.3,
|
|
55
|
-
max_tokens: 200,
|
|
56
|
-
timeout,
|
|
57
|
-
});
|
|
58
|
-
// Task 2.4: Parse response
|
|
59
|
-
const parsed = (typeof result === 'string' ? JSON.parse(result) : result);
|
|
60
|
-
// Task 2.5: Threshold check
|
|
61
|
-
const meetsThreshold = parsed.confidence >= threshold;
|
|
62
|
-
if (!meetsThreshold) {
|
|
63
|
-
(0, debug_logger_js_1.info)(`[MAMA] Intent confidence ${parsed.confidence} below threshold ${threshold}`);
|
|
64
|
-
return {
|
|
65
|
-
involves_decision: false,
|
|
66
|
-
topic: null,
|
|
67
|
-
confidence: parsed.confidence,
|
|
68
|
-
reasoning: 'Confidence below threshold',
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
return parsed;
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
// CLAUDE.md Rule #1: NO FALLBACK
|
|
75
|
-
// Errors must be thrown for debugging
|
|
76
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
77
|
-
(0, debug_logger_js_1.error)(`[MAMA] Intent analysis FAILED: ${message}`);
|
|
78
|
-
throw new Error(`Intent analysis failed: ${message}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Generate with tiered fallback chain
|
|
83
|
-
*/
|
|
84
|
-
async function generateWithFallback(prompt, options = {}) {
|
|
85
|
-
const models = [
|
|
86
|
-
ollama_client_js_1.DEFAULT_MODEL, // Tier 1: EXAONE 3.5 (2.4B)
|
|
87
|
-
ollama_client_js_1.FALLBACK_MODEL, // Tier 2: Gemma 2B
|
|
88
|
-
'qwen:3b', // Tier 3: Qwen 3B
|
|
89
|
-
];
|
|
90
|
-
for (let i = 0; i < models.length; i++) {
|
|
91
|
-
const model = models[i];
|
|
92
|
-
try {
|
|
93
|
-
(0, debug_logger_js_1.info)(`[MAMA] Trying ${model}...`);
|
|
94
|
-
const result = await (0, ollama_client_js_1.generate)(prompt, {
|
|
95
|
-
...options,
|
|
96
|
-
model,
|
|
97
|
-
});
|
|
98
|
-
(0, debug_logger_js_1.info)(`[MAMA] ${model} succeeded`);
|
|
99
|
-
return result;
|
|
100
|
-
}
|
|
101
|
-
catch (error) {
|
|
102
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
103
|
-
(0, debug_logger_js_1.warn)(`[MAMA] ${model} failed: ${message}`);
|
|
104
|
-
// Continue to next tier
|
|
105
|
-
if (i === models.length - 1) {
|
|
106
|
-
// All tiers failed
|
|
107
|
-
throw new Error(`All LLM tiers failed. Last error: ${message}`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
// Unreachable: loop always returns or throws
|
|
112
|
-
throw new Error('Unexpected: all LLM tiers exhausted without result');
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=query-intent.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createTrustedProvenanceCapability = void 0;
|
|
4
|
-
var provenance_js_1 = require("../memory/provenance.js");
|
|
5
|
-
Object.defineProperty(exports, "createTrustedProvenanceCapability", { enumerable: true, get: function () { return provenance_js_1.createTrustedProvenanceCapability; } });
|
|
6
|
-
//# sourceMappingURL=trusted-provenance.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export type QuestionType = 'correction' | 'artifact' | 'timeline' | 'status' | 'decision_reason' | 'how_to' | 'unknown';
|
|
2
|
-
export declare const QUESTION_TYPES: readonly QuestionType[];
|
|
3
|
-
export declare function classifyQuestionType(query: string): QuestionType;
|
|
4
|
-
export declare function isQuestionType(value: string): value is QuestionType;
|
|
5
|
-
//# sourceMappingURL=question-type.d.ts.map
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QUESTION_TYPES = void 0;
|
|
4
|
-
exports.classifyQuestionType = classifyQuestionType;
|
|
5
|
-
exports.isQuestionType = isQuestionType;
|
|
6
|
-
exports.QUESTION_TYPES = [
|
|
7
|
-
'correction',
|
|
8
|
-
'artifact',
|
|
9
|
-
'timeline',
|
|
10
|
-
'status',
|
|
11
|
-
'decision_reason',
|
|
12
|
-
'how_to',
|
|
13
|
-
'unknown',
|
|
14
|
-
];
|
|
15
|
-
// Korean: patterns for classifyQuestionType() multilingual query routing.
|
|
16
|
-
const CORRECTION_PATTERN = /\b(fix|revert|correct|correction|supersede|superseded|revise|revision|수정|되돌|정정|교정)\b/i; // Korean: keywords
|
|
17
|
-
const ARTIFACT_PATTERN = /\b(file|doc|docs|document|image|video|pdf|drive|obsidian|attachment|artifact|파일|문서|이미지|영상|첨부|드라이브|옵시디언)\b/i; // Korean: keywords
|
|
18
|
-
const TIMELINE_PATTERN = /\b(when|history|before|after|around|timeline|chronology|언제|이력|히스토리|전|후|즈음)\b|\bon\s+\d{4}(?:-\d{1,2})?(?:-\d{1,2})?\b|\b\d{4}-\d{1,2}-\d{1,2}\b/i; // Korean: keywords
|
|
19
|
-
const STATUS_PATTERN = /\b(status|state|current|currently|now|latest|progress|blocked|done|상태|현재|최신|진행|진척)\b/i; // Korean: keywords
|
|
20
|
-
const DECISION_REASON_PATTERN = /\b(why|reason|because|rationale|근거|이유|왜|때문)\b/i; // Korean: keywords
|
|
21
|
-
const HOW_TO_PATTERN = /\b(how\s+to|how\s+do|setup|set\s+up|configure|configuration|install|설정|구성|어떻게)\b/i; // Korean: keywords
|
|
22
|
-
function classifyQuestionType(query) {
|
|
23
|
-
const normalized = query.trim();
|
|
24
|
-
if (CORRECTION_PATTERN.test(normalized))
|
|
25
|
-
return 'correction';
|
|
26
|
-
if (ARTIFACT_PATTERN.test(normalized))
|
|
27
|
-
return 'artifact';
|
|
28
|
-
if (TIMELINE_PATTERN.test(normalized))
|
|
29
|
-
return 'timeline';
|
|
30
|
-
if (STATUS_PATTERN.test(normalized))
|
|
31
|
-
return 'status';
|
|
32
|
-
if (DECISION_REASON_PATTERN.test(normalized))
|
|
33
|
-
return 'decision_reason';
|
|
34
|
-
if (HOW_TO_PATTERN.test(normalized))
|
|
35
|
-
return 'how_to';
|
|
36
|
-
return 'unknown';
|
|
37
|
-
}
|
|
38
|
-
function isQuestionType(value) {
|
|
39
|
-
return exports.QUESTION_TYPES.includes(value);
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=question-type.js.map
|