@jungjaehoon/mama-core 2.4.1 → 4.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/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/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 +1968 -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/commitments.d.ts +188 -0
- package/dist/knowledge/commitments.js +370 -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/judgments.d.ts +118 -0
- package/dist/knowledge/judgments.js +808 -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 +155 -0
- package/dist/runtime/drivers/claude-cli-wrapper.js +392 -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 +424 -0
- package/dist/runtime/drivers/persistent-cli-process.js +1543 -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
package/dist/test-utils.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA Core Test Utilities
|
|
3
|
-
*
|
|
4
|
-
* Shared test helpers for mama-core consumers.
|
|
5
|
-
* Optimizes test performance by sharing expensive resources (embedding model, DB adapter).
|
|
6
|
-
*
|
|
7
|
-
* @module test-utils
|
|
8
|
-
* @version 1.1
|
|
9
|
-
*/
|
|
10
|
-
import type Database from 'better-sqlite3';
|
|
11
|
-
/**
|
|
12
|
-
* Returns migration SQL filenames sorted by their leading three-digit version.
|
|
13
|
-
*/
|
|
14
|
-
export declare function migrationFiles(): string[];
|
|
15
|
-
export declare function migrationVersion(file: string): number;
|
|
16
|
-
/**
|
|
17
|
-
* Apply migrations in order up to `maxVersion` (inclusive), starting from
|
|
18
|
-
* `fromVersion`. Mirrors the production runner's two-part contract:
|
|
19
|
-
* - skip files whose version is already recorded in `schema_version`
|
|
20
|
-
* - tolerate `duplicate column` errors (legacy migrations that add
|
|
21
|
-
* columns idempotently without recording into schema_version)
|
|
22
|
-
*/
|
|
23
|
-
export declare function applyMigrationsThrough(db: Database.Database, maxVersion: number, fromVersion?: number): void;
|
|
24
|
-
/**
|
|
25
|
-
* Preload embedding model (call once in globalSetup)
|
|
26
|
-
*
|
|
27
|
-
* This loads the embedding model into memory so subsequent tests don't pay the ~2s load time.
|
|
28
|
-
* The model stays in memory due to singleton pattern in embeddings.ts.
|
|
29
|
-
*/
|
|
30
|
-
export declare function preloadEmbeddingModel(): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Create isolated test database
|
|
33
|
-
*
|
|
34
|
-
* Creates a unique test database and sets MAMA_DB_PATH.
|
|
35
|
-
* Use in beforeAll() of each test file.
|
|
36
|
-
*
|
|
37
|
-
* @param testName - Unique test identifier (e.g., 'search-narrative')
|
|
38
|
-
* @returns Test database path
|
|
39
|
-
*/
|
|
40
|
-
export declare function initTestDB(testName: string): Promise<string>;
|
|
41
|
-
/**
|
|
42
|
-
* Cleanup test database
|
|
43
|
-
*
|
|
44
|
-
* Call in afterAll() to clean up test database files.
|
|
45
|
-
*
|
|
46
|
-
* @param testDbPath - Path returned by initTestDB
|
|
47
|
-
*/
|
|
48
|
-
export declare function cleanupTestDB(testDbPath?: string): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Cleanup all test databases
|
|
51
|
-
*
|
|
52
|
-
* Call in globalTeardown to clean up all test databases.
|
|
53
|
-
*/
|
|
54
|
-
export declare function cleanupAllTestDBs(): void;
|
|
55
|
-
/**
|
|
56
|
-
* Check if embeddings are available
|
|
57
|
-
*
|
|
58
|
-
* Returns false if embedding model failed to load (e.g., CI without ONNX).
|
|
59
|
-
* Use to conditionally skip semantic search tests.
|
|
60
|
-
*/
|
|
61
|
-
export declare function isEmbeddingsAvailable(): Promise<boolean>;
|
|
62
|
-
/**
|
|
63
|
-
* Create mock tool context
|
|
64
|
-
*
|
|
65
|
-
* Returns a mock context object for MCP tool tests.
|
|
66
|
-
*/
|
|
67
|
-
export declare function createMockToolContext(): {
|
|
68
|
-
logger: {
|
|
69
|
-
info: () => void;
|
|
70
|
-
warn: () => void;
|
|
71
|
-
error: () => void;
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Suppress console output during tests
|
|
76
|
-
*
|
|
77
|
-
* Returns restore function to call after test.
|
|
78
|
-
*/
|
|
79
|
-
export declare function suppressConsole(): () => void;
|
|
80
|
-
//# sourceMappingURL=test-utils.d.ts.map
|
package/dist/test-utils.js
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MAMA Core Test Utilities
|
|
4
|
-
*
|
|
5
|
-
* Shared test helpers for mama-core consumers.
|
|
6
|
-
* Optimizes test performance by sharing expensive resources (embedding model, DB adapter).
|
|
7
|
-
*
|
|
8
|
-
* @module test-utils
|
|
9
|
-
* @version 1.1
|
|
10
|
-
*/
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.migrationFiles = migrationFiles;
|
|
16
|
-
exports.migrationVersion = migrationVersion;
|
|
17
|
-
exports.applyMigrationsThrough = applyMigrationsThrough;
|
|
18
|
-
exports.preloadEmbeddingModel = preloadEmbeddingModel;
|
|
19
|
-
exports.initTestDB = initTestDB;
|
|
20
|
-
exports.cleanupTestDB = cleanupTestDB;
|
|
21
|
-
exports.cleanupAllTestDBs = cleanupAllTestDBs;
|
|
22
|
-
exports.isEmbeddingsAvailable = isEmbeddingsAvailable;
|
|
23
|
-
exports.createMockToolContext = createMockToolContext;
|
|
24
|
-
exports.suppressConsole = suppressConsole;
|
|
25
|
-
const path_1 = __importDefault(require("path"));
|
|
26
|
-
const fs_1 = __importDefault(require("fs"));
|
|
27
|
-
const os_1 = __importDefault(require("os"));
|
|
28
|
-
const node_fs_1 = require("node:fs");
|
|
29
|
-
const node_path_1 = require("node:path");
|
|
30
|
-
const db_manager_js_1 = require("./db-manager.js");
|
|
31
|
-
const debug_logger_js_1 = require("./debug-logger.js");
|
|
32
|
-
const MIGRATIONS_DIR = (0, node_path_1.join)(__dirname, '..', 'db', 'migrations');
|
|
33
|
-
/**
|
|
34
|
-
* Returns migration SQL filenames sorted by their leading three-digit version.
|
|
35
|
-
*/
|
|
36
|
-
function migrationFiles() {
|
|
37
|
-
return (0, node_fs_1.readdirSync)(MIGRATIONS_DIR)
|
|
38
|
-
.filter((file) => /^\d{3}-.+\.sql$/.test(file))
|
|
39
|
-
.sort((left, right) => left.localeCompare(right));
|
|
40
|
-
}
|
|
41
|
-
function migrationVersion(file) {
|
|
42
|
-
return Number.parseInt(file.slice(0, 3), 10);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Apply migrations in order up to `maxVersion` (inclusive), starting from
|
|
46
|
-
* `fromVersion`. Mirrors the production runner's two-part contract:
|
|
47
|
-
* - skip files whose version is already recorded in `schema_version`
|
|
48
|
-
* - tolerate `duplicate column` errors (legacy migrations that add
|
|
49
|
-
* columns idempotently without recording into schema_version)
|
|
50
|
-
*/
|
|
51
|
-
function applyMigrationsThrough(db, maxVersion, fromVersion = 1) {
|
|
52
|
-
for (const file of migrationFiles()) {
|
|
53
|
-
const version = migrationVersion(file);
|
|
54
|
-
if (version < fromVersion)
|
|
55
|
-
continue;
|
|
56
|
-
if (version > maxVersion)
|
|
57
|
-
break;
|
|
58
|
-
let alreadyApplied = false;
|
|
59
|
-
try {
|
|
60
|
-
alreadyApplied = !!db
|
|
61
|
-
.prepare('SELECT 1 FROM schema_version WHERE version = ?')
|
|
62
|
-
.get(version);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
alreadyApplied = false;
|
|
66
|
-
}
|
|
67
|
-
if (alreadyApplied)
|
|
68
|
-
continue;
|
|
69
|
-
try {
|
|
70
|
-
db.exec((0, node_fs_1.readFileSync)((0, node_path_1.join)(MIGRATIONS_DIR, file), 'utf8'));
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
74
|
-
if (!/duplicate column/i.test(msg))
|
|
75
|
-
throw err;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
// Track test databases for cleanup
|
|
80
|
-
const testDatabases = [];
|
|
81
|
-
// Embedding model preload state
|
|
82
|
-
let embeddingModelPreloaded = false;
|
|
83
|
-
/**
|
|
84
|
-
* Preload embedding model (call once in globalSetup)
|
|
85
|
-
*
|
|
86
|
-
* This loads the embedding model into memory so subsequent tests don't pay the ~2s load time.
|
|
87
|
-
* The model stays in memory due to singleton pattern in embeddings.ts.
|
|
88
|
-
*/
|
|
89
|
-
async function preloadEmbeddingModel() {
|
|
90
|
-
if (embeddingModelPreloaded) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
try {
|
|
94
|
-
const { generateEmbedding } = await import('./embeddings.js');
|
|
95
|
-
await generateEmbedding('preload');
|
|
96
|
-
embeddingModelPreloaded = true;
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
// Non-fatal: some CI environments may not have ONNX runtime
|
|
100
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
101
|
-
(0, debug_logger_js_1.warn)(`[test-utils] Embedding model preload failed: ${message}`);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Create isolated test database
|
|
106
|
-
*
|
|
107
|
-
* Creates a unique test database and sets MAMA_DB_PATH.
|
|
108
|
-
* Use in beforeAll() of each test file.
|
|
109
|
-
*
|
|
110
|
-
* @param testName - Unique test identifier (e.g., 'search-narrative')
|
|
111
|
-
* @returns Test database path
|
|
112
|
-
*/
|
|
113
|
-
async function initTestDB(testName) {
|
|
114
|
-
// Reset any existing DB state first
|
|
115
|
-
(0, db_manager_js_1.resetDBState)({ disconnect: true });
|
|
116
|
-
// Create unique test database path
|
|
117
|
-
const testDbPath = path_1.default.join(os_1.default.tmpdir(), `mama-test-${testName}-${Date.now()}.db`);
|
|
118
|
-
// Clean up any existing files
|
|
119
|
-
cleanupDbFiles(testDbPath);
|
|
120
|
-
// Set environment variable
|
|
121
|
-
process.env.MAMA_DB_PATH = testDbPath;
|
|
122
|
-
// Track for cleanup
|
|
123
|
-
testDatabases.push(testDbPath);
|
|
124
|
-
// Initialize database
|
|
125
|
-
await (0, db_manager_js_1.initDB)();
|
|
126
|
-
return testDbPath;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Cleanup test database
|
|
130
|
-
*
|
|
131
|
-
* Call in afterAll() to clean up test database files.
|
|
132
|
-
*
|
|
133
|
-
* @param testDbPath - Path returned by initTestDB
|
|
134
|
-
*/
|
|
135
|
-
async function cleanupTestDB(testDbPath) {
|
|
136
|
-
// Close database connection
|
|
137
|
-
await (0, db_manager_js_1.closeDB)();
|
|
138
|
-
// Clean up files
|
|
139
|
-
if (testDbPath) {
|
|
140
|
-
cleanupDbFiles(testDbPath);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Cleanup all test databases
|
|
145
|
-
*
|
|
146
|
-
* Call in globalTeardown to clean up all test databases.
|
|
147
|
-
*/
|
|
148
|
-
function cleanupAllTestDBs() {
|
|
149
|
-
for (const dbPath of testDatabases) {
|
|
150
|
-
cleanupDbFiles(dbPath);
|
|
151
|
-
}
|
|
152
|
-
testDatabases.length = 0;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Helper to clean up SQLite database files
|
|
156
|
-
*/
|
|
157
|
-
function cleanupDbFiles(dbPath) {
|
|
158
|
-
const files = [dbPath, `${dbPath}-wal`, `${dbPath}-shm`];
|
|
159
|
-
for (const file of files) {
|
|
160
|
-
try {
|
|
161
|
-
if (fs_1.default.existsSync(file)) {
|
|
162
|
-
fs_1.default.unlinkSync(file);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch {
|
|
166
|
-
// Ignore cleanup errors
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Check if embeddings are available
|
|
172
|
-
*
|
|
173
|
-
* Returns false if embedding model failed to load (e.g., CI without ONNX).
|
|
174
|
-
* Use to conditionally skip semantic search tests.
|
|
175
|
-
*/
|
|
176
|
-
async function isEmbeddingsAvailable() {
|
|
177
|
-
try {
|
|
178
|
-
const { generateEmbedding } = await import('./embeddings.js');
|
|
179
|
-
await generateEmbedding('test');
|
|
180
|
-
return true;
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
return false;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Create mock tool context
|
|
188
|
-
*
|
|
189
|
-
* Returns a mock context object for MCP tool tests.
|
|
190
|
-
*/
|
|
191
|
-
function createMockToolContext() {
|
|
192
|
-
return {
|
|
193
|
-
logger: {
|
|
194
|
-
info: () => { },
|
|
195
|
-
warn: () => { },
|
|
196
|
-
error: () => { },
|
|
197
|
-
},
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Suppress console output during tests
|
|
202
|
-
*
|
|
203
|
-
* Returns restore function to call after test.
|
|
204
|
-
*/
|
|
205
|
-
function suppressConsole() {
|
|
206
|
-
const originalLog = console.log;
|
|
207
|
-
const originalWarn = console.warn;
|
|
208
|
-
const originalError = console.error;
|
|
209
|
-
console.log = () => { };
|
|
210
|
-
console.warn = () => { };
|
|
211
|
-
console.error = () => { };
|
|
212
|
-
return () => {
|
|
213
|
-
console.log = originalLog;
|
|
214
|
-
console.warn = originalWarn;
|
|
215
|
-
console.error = originalError;
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
//# sourceMappingURL=test-utils.js.map
|
package/dist/tier-validator.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAMA Tier Validator
|
|
3
|
-
*
|
|
4
|
-
* Centralized tier validation module for MAMA.
|
|
5
|
-
* Validates system requirements and determines tier status (1 or 2).
|
|
6
|
-
*
|
|
7
|
-
* Tier 1: Full features (Node.js 22.13+, SQLite, Embeddings, Database)
|
|
8
|
-
* Tier 2: Degraded mode (missing one or more requirements)
|
|
9
|
-
*
|
|
10
|
-
* @module tier-validator
|
|
11
|
-
*/
|
|
12
|
-
export interface CheckResult {
|
|
13
|
-
status: 'pass' | 'fail';
|
|
14
|
-
details: string;
|
|
15
|
-
}
|
|
16
|
-
export interface NamedCheckResult extends CheckResult {
|
|
17
|
-
name: string;
|
|
18
|
-
}
|
|
19
|
-
export interface TierValidation {
|
|
20
|
-
tier: 1 | 2;
|
|
21
|
-
checks: NamedCheckResult[];
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Validates Node.js version requirement
|
|
25
|
-
*/
|
|
26
|
-
export declare function checkNodeVersion(): CheckResult;
|
|
27
|
-
/**
|
|
28
|
-
* Validates SQLite availability (node:sqlite)
|
|
29
|
-
*/
|
|
30
|
-
export declare function checkSQLite(): CheckResult;
|
|
31
|
-
/**
|
|
32
|
-
* Validates embedding model availability
|
|
33
|
-
*/
|
|
34
|
-
export declare function checkEmbeddings(): CheckResult;
|
|
35
|
-
/**
|
|
36
|
-
* Validates database file accessibility
|
|
37
|
-
*/
|
|
38
|
-
export declare function checkDatabase(): CheckResult;
|
|
39
|
-
/**
|
|
40
|
-
* Get user-friendly tier description
|
|
41
|
-
*/
|
|
42
|
-
export declare function getTierDescription(tier: number): string;
|
|
43
|
-
//# sourceMappingURL=tier-validator.d.ts.map
|
package/dist/tier-validator.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MAMA Tier Validator
|
|
4
|
-
*
|
|
5
|
-
* Centralized tier validation module for MAMA.
|
|
6
|
-
* Validates system requirements and determines tier status (1 or 2).
|
|
7
|
-
*
|
|
8
|
-
* Tier 1: Full features (Node.js 22.13+, SQLite, Embeddings, Database)
|
|
9
|
-
* Tier 2: Degraded mode (missing one or more requirements)
|
|
10
|
-
*
|
|
11
|
-
* @module tier-validator
|
|
12
|
-
*/
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.checkNodeVersion = checkNodeVersion;
|
|
18
|
-
exports.checkSQLite = checkSQLite;
|
|
19
|
-
exports.checkEmbeddings = checkEmbeddings;
|
|
20
|
-
exports.checkDatabase = checkDatabase;
|
|
21
|
-
exports.getTierDescription = getTierDescription;
|
|
22
|
-
const fs_1 = __importDefault(require("fs"));
|
|
23
|
-
const path_1 = __importDefault(require("path"));
|
|
24
|
-
const os_1 = __importDefault(require("os"));
|
|
25
|
-
/**
|
|
26
|
-
* Validates Node.js version requirement
|
|
27
|
-
*/
|
|
28
|
-
function checkNodeVersion() {
|
|
29
|
-
try {
|
|
30
|
-
const nodeVersion = process.versions.node;
|
|
31
|
-
const [majorVersion, minorVersion] = nodeVersion.split('.').map((part) => parseInt(part, 10));
|
|
32
|
-
if (majorVersion > 22 || (majorVersion === 22 && minorVersion >= 13)) {
|
|
33
|
-
return {
|
|
34
|
-
status: 'pass',
|
|
35
|
-
details: `v${nodeVersion}`,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
status: 'fail',
|
|
40
|
-
details: `v${nodeVersion} (requires 22.13+)`,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
45
|
-
return {
|
|
46
|
-
status: 'fail',
|
|
47
|
-
details: `Error checking version: ${message}`,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Validates SQLite availability (node:sqlite)
|
|
53
|
-
*/
|
|
54
|
-
function checkSQLite() {
|
|
55
|
-
try {
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
57
|
-
const { DatabaseSync } = require('node:sqlite');
|
|
58
|
-
const testDb = new DatabaseSync(':memory:');
|
|
59
|
-
testDb.close();
|
|
60
|
-
return {
|
|
61
|
-
status: 'pass',
|
|
62
|
-
details: 'node:sqlite built-in driver ready',
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
67
|
-
return {
|
|
68
|
-
status: 'fail',
|
|
69
|
-
details: `node:sqlite not available: ${message}`,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Validates embedding model availability
|
|
75
|
-
*/
|
|
76
|
-
function checkEmbeddings() {
|
|
77
|
-
try {
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
79
|
-
const { getModelName } = require('./embeddings');
|
|
80
|
-
const modelName = getModelName();
|
|
81
|
-
// Check if model is cached
|
|
82
|
-
const cacheDir = process.env.HF_HOME ||
|
|
83
|
-
process.env.TRANSFORMERS_CACHE ||
|
|
84
|
-
path_1.default.join(os_1.default.homedir(), '.cache', 'huggingface', 'transformers');
|
|
85
|
-
// Model cache structure: cache_dir/models--org--model/snapshots/hash/
|
|
86
|
-
const modelPath = path_1.default.join(cacheDir, `models--${modelName.replace('/', '--')}`);
|
|
87
|
-
if (fs_1.default.existsSync(modelPath)) {
|
|
88
|
-
return {
|
|
89
|
-
status: 'pass',
|
|
90
|
-
details: `${modelName} (cached)`,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
return {
|
|
94
|
-
status: 'fail',
|
|
95
|
-
details: `${modelName} not cached (will download on first use)`,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
100
|
-
return {
|
|
101
|
-
status: 'fail',
|
|
102
|
-
details: `Error checking embeddings: ${message}`,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Validates database file accessibility
|
|
108
|
-
*/
|
|
109
|
-
function checkDatabase() {
|
|
110
|
-
try {
|
|
111
|
-
const dbPath = process.env.MAMA_DB_PATH || path_1.default.join(os_1.default.homedir(), '.claude', 'mama-memory.db');
|
|
112
|
-
const dbDir = path_1.default.dirname(dbPath);
|
|
113
|
-
// Check if directory exists or can be created
|
|
114
|
-
if (!fs_1.default.existsSync(dbDir)) {
|
|
115
|
-
try {
|
|
116
|
-
fs_1.default.mkdirSync(dbDir, { recursive: true });
|
|
117
|
-
}
|
|
118
|
-
catch (mkdirErr) {
|
|
119
|
-
const message = mkdirErr instanceof Error ? mkdirErr.message : String(mkdirErr);
|
|
120
|
-
return {
|
|
121
|
-
status: 'fail',
|
|
122
|
-
details: `Cannot create database directory: ${message}`,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Check write access
|
|
127
|
-
try {
|
|
128
|
-
fs_1.default.accessSync(dbDir, fs_1.default.constants.W_OK);
|
|
129
|
-
}
|
|
130
|
-
catch {
|
|
131
|
-
return {
|
|
132
|
-
status: 'fail',
|
|
133
|
-
details: `No write access to ${dbDir}`,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
return {
|
|
137
|
-
status: 'pass',
|
|
138
|
-
details: dbPath,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
143
|
-
return {
|
|
144
|
-
status: 'fail',
|
|
145
|
-
details: `Error checking database: ${message}`,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Get user-friendly tier description
|
|
151
|
-
*/
|
|
152
|
-
function getTierDescription(tier) {
|
|
153
|
-
const descriptions = {
|
|
154
|
-
1: 'Full Features - All systems operational',
|
|
155
|
-
2: 'Degraded Mode - Some features unavailable',
|
|
156
|
-
};
|
|
157
|
-
return descriptions[tier] || 'Unknown Tier';
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=tier-validator.js.map
|
package/dist/time-formatter.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Time Formatter - Human-Readable Time Formatting
|
|
3
|
-
*
|
|
4
|
-
* Converts Unix timestamps to human-readable relative time format
|
|
5
|
-
* Examples: "2d ago", "3h ago", "just now"
|
|
6
|
-
*
|
|
7
|
-
* Used by list_decisions and recall_decision tools
|
|
8
|
-
*
|
|
9
|
-
* @module time-formatter
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Format Unix timestamp (milliseconds) to human-readable relative time
|
|
13
|
-
*
|
|
14
|
-
* AC #2: Format created_at as human-readable ("2d ago", "3h ago", etc.)
|
|
15
|
-
*
|
|
16
|
-
* @param timestamp - Unix timestamp in milliseconds OR ISO 8601 string
|
|
17
|
-
* @returns Human-readable time string
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* formatTimeAgo(Date.now() - 3600000) // "1h ago"
|
|
21
|
-
* formatTimeAgo(Date.now() - 172800000) // "2d ago"
|
|
22
|
-
* formatTimeAgo("2025-11-20T10:30:00Z") // "2d ago" (if today is 2025-11-22)
|
|
23
|
-
*/
|
|
24
|
-
export declare function formatTimeAgo(timestamp: number | string | null | undefined): string;
|
|
25
|
-
//# sourceMappingURL=time-formatter.d.ts.map
|
package/dist/time-formatter.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Time Formatter - Human-Readable Time Formatting
|
|
4
|
-
*
|
|
5
|
-
* Converts Unix timestamps to human-readable relative time format
|
|
6
|
-
* Examples: "2d ago", "3h ago", "just now"
|
|
7
|
-
*
|
|
8
|
-
* Used by list_decisions and recall_decision tools
|
|
9
|
-
*
|
|
10
|
-
* @module time-formatter
|
|
11
|
-
*/
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.formatTimeAgo = formatTimeAgo;
|
|
14
|
-
const debug_logger_js_1 = require("./debug-logger.js");
|
|
15
|
-
/**
|
|
16
|
-
* Format Unix timestamp (milliseconds) to human-readable relative time
|
|
17
|
-
*
|
|
18
|
-
* AC #2: Format created_at as human-readable ("2d ago", "3h ago", etc.)
|
|
19
|
-
*
|
|
20
|
-
* @param timestamp - Unix timestamp in milliseconds OR ISO 8601 string
|
|
21
|
-
* @returns Human-readable time string
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* formatTimeAgo(Date.now() - 3600000) // "1h ago"
|
|
25
|
-
* formatTimeAgo(Date.now() - 172800000) // "2d ago"
|
|
26
|
-
* formatTimeAgo("2025-11-20T10:30:00Z") // "2d ago" (if today is 2025-11-22)
|
|
27
|
-
*/
|
|
28
|
-
function formatTimeAgo(timestamp) {
|
|
29
|
-
try {
|
|
30
|
-
// Handle null/undefined (but allow 0 as valid Unix epoch)
|
|
31
|
-
if (timestamp === null || timestamp === undefined) {
|
|
32
|
-
(0, debug_logger_js_1.warn)('[time-formatter] Timestamp is null or undefined, returning "unknown"');
|
|
33
|
-
return 'unknown';
|
|
34
|
-
}
|
|
35
|
-
// Parse ISO 8601 string to timestamp (if string provided)
|
|
36
|
-
let timestampMs;
|
|
37
|
-
if (typeof timestamp === 'string') {
|
|
38
|
-
timestampMs = new Date(timestamp).getTime();
|
|
39
|
-
if (isNaN(timestampMs)) {
|
|
40
|
-
(0, debug_logger_js_1.warn)(`[time-formatter] Invalid ISO 8601 string: ${timestamp}`);
|
|
41
|
-
return 'unknown';
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
timestampMs = timestamp;
|
|
46
|
-
}
|
|
47
|
-
const now = Date.now();
|
|
48
|
-
const diff = now - timestampMs;
|
|
49
|
-
// Handle future timestamps (shouldn't happen, but be defensive)
|
|
50
|
-
if (diff < 0) {
|
|
51
|
-
(0, debug_logger_js_1.warn)(`[time-formatter] Future timestamp detected: ${timestamp}`);
|
|
52
|
-
return 'just now';
|
|
53
|
-
}
|
|
54
|
-
// Calculate time units
|
|
55
|
-
const seconds = Math.floor(diff / 1000);
|
|
56
|
-
const minutes = Math.floor(seconds / 60);
|
|
57
|
-
const hours = Math.floor(minutes / 60);
|
|
58
|
-
const days = Math.floor(hours / 24);
|
|
59
|
-
const weeks = Math.floor(days / 7);
|
|
60
|
-
const months = Math.floor(days / 30);
|
|
61
|
-
const years = Math.floor(days / 365);
|
|
62
|
-
// Return human-readable format
|
|
63
|
-
if (seconds < 60) {
|
|
64
|
-
return 'just now';
|
|
65
|
-
}
|
|
66
|
-
if (minutes < 60) {
|
|
67
|
-
return `${minutes}m ago`;
|
|
68
|
-
}
|
|
69
|
-
if (hours < 24) {
|
|
70
|
-
return `${hours}h ago`;
|
|
71
|
-
}
|
|
72
|
-
if (days < 7) {
|
|
73
|
-
return `${days}d ago`;
|
|
74
|
-
}
|
|
75
|
-
if (weeks < 4) {
|
|
76
|
-
return `${weeks}w ago`;
|
|
77
|
-
}
|
|
78
|
-
// Guard against "0mo ago" when days are 28-29 (months = Math.floor(days/30) = 0)
|
|
79
|
-
if (months < 1) {
|
|
80
|
-
return `${weeks}w ago`;
|
|
81
|
-
}
|
|
82
|
-
if (months < 12) {
|
|
83
|
-
return `${months}mo ago`;
|
|
84
|
-
}
|
|
85
|
-
return `${years}y ago`;
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
89
|
-
(0, debug_logger_js_1.warn)(`[time-formatter] Error formatting timestamp ${timestamp}: ${message}`);
|
|
90
|
-
return 'unknown';
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=time-formatter.js.map
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|