@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
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { HostToolBridge } from './types.js';
|
|
2
|
+
export declare const CODEX_AUXILIARY_TOOL_NAMES: readonly ["Read", "Write", "Edit", "Bash", "Glob", "Grep"];
|
|
3
|
+
export type CodexAuxiliaryToolName = (typeof CODEX_AUXILIARY_TOOL_NAMES)[number];
|
|
4
|
+
export interface CodexAuxiliaryCommandResult {
|
|
5
|
+
exitCode: number;
|
|
6
|
+
stdout: string;
|
|
7
|
+
stderr: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CodexAuxiliaryToolPolicy {
|
|
10
|
+
allowedTools: readonly CodexAuxiliaryToolName[];
|
|
11
|
+
roots: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
export interface CodexAuxiliaryToolBridgeOptions extends CodexAuxiliaryToolPolicy {
|
|
14
|
+
executeCommand: (command: string, cwd: string, roots: readonly string[], signal?: AbortSignal) => Promise<CodexAuxiliaryCommandResult>;
|
|
15
|
+
}
|
|
16
|
+
export declare function createCodexAuxiliaryToolBridge(options: CodexAuxiliaryToolBridgeOptions): HostToolBridge;
|
|
17
|
+
//# sourceMappingURL=codex-auxiliary-tools.d.ts.map
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CODEX_AUXILIARY_TOOL_NAMES = void 0;
|
|
4
|
+
exports.createCodexAuxiliaryToolBridge = createCodexAuxiliaryToolBridge;
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const minimatch_1 = require("minimatch");
|
|
8
|
+
exports.CODEX_AUXILIARY_TOOL_NAMES = [
|
|
9
|
+
'Read',
|
|
10
|
+
'Write',
|
|
11
|
+
'Edit',
|
|
12
|
+
'Bash',
|
|
13
|
+
'Glob',
|
|
14
|
+
'Grep',
|
|
15
|
+
];
|
|
16
|
+
const STRING = { type: 'string' };
|
|
17
|
+
const DEFINITIONS = {
|
|
18
|
+
Read: definition('Read', 'Read one UTF-8 file inside the MAMA workspace.', {
|
|
19
|
+
path: STRING,
|
|
20
|
+
}, ['path']),
|
|
21
|
+
Write: definition('Write', 'Write one UTF-8 file inside the MAMA workspace.', {
|
|
22
|
+
path: STRING,
|
|
23
|
+
content: STRING,
|
|
24
|
+
}, ['path', 'content']),
|
|
25
|
+
Edit: definition('Edit', 'Replace one exact text occurrence inside a MAMA workspace file.', {
|
|
26
|
+
path: STRING,
|
|
27
|
+
old_string: STRING,
|
|
28
|
+
new_string: STRING,
|
|
29
|
+
}, ['path', 'old_string', 'new_string']),
|
|
30
|
+
Bash: definition('Bash', 'Run one command in the Codex sandbox inside the MAMA workspace.', {
|
|
31
|
+
command: STRING,
|
|
32
|
+
workdir: STRING,
|
|
33
|
+
}, ['command']),
|
|
34
|
+
Glob: definition('Glob', 'List workspace files matching a glob pattern.', {
|
|
35
|
+
pattern: STRING,
|
|
36
|
+
path: STRING,
|
|
37
|
+
}, ['pattern']),
|
|
38
|
+
Grep: definition('Grep', 'Search workspace text files with a regular expression.', {
|
|
39
|
+
pattern: STRING,
|
|
40
|
+
path: STRING,
|
|
41
|
+
glob: STRING,
|
|
42
|
+
}, ['pattern']),
|
|
43
|
+
};
|
|
44
|
+
const MAX_FILE_BYTES = 200_000;
|
|
45
|
+
const MAX_COMMAND_STREAM_BYTES = 50_000;
|
|
46
|
+
const MAX_WALK_ENTRIES = 5_000;
|
|
47
|
+
const MAX_RESULTS = 500;
|
|
48
|
+
function definition(name, description, properties, required) {
|
|
49
|
+
return {
|
|
50
|
+
type: 'function',
|
|
51
|
+
name,
|
|
52
|
+
description,
|
|
53
|
+
inputSchema: { type: 'object', properties, required, additionalProperties: false },
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function requireString(input, name) {
|
|
57
|
+
const value = input[name];
|
|
58
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
59
|
+
throw new Error(`${name} must be a non-empty string`);
|
|
60
|
+
}
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
function optionalString(input, name) {
|
|
64
|
+
const value = input[name];
|
|
65
|
+
if (value === undefined)
|
|
66
|
+
return undefined;
|
|
67
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
68
|
+
throw new Error(`${name} must be a non-empty string when provided`);
|
|
69
|
+
}
|
|
70
|
+
return value;
|
|
71
|
+
}
|
|
72
|
+
function within(root, path) {
|
|
73
|
+
const rel = (0, node_path_1.relative)(root, path);
|
|
74
|
+
return rel === '' || (!rel.startsWith('..') && !(0, node_path_1.isAbsolute)(rel));
|
|
75
|
+
}
|
|
76
|
+
function normalizeRoots(roots) {
|
|
77
|
+
const normalized = [...new Set(roots.map((root) => (0, node_fs_1.realpathSync)((0, node_path_1.resolve)(root))))];
|
|
78
|
+
if (normalized.length === 0)
|
|
79
|
+
throw new Error('Codex auxiliary tools require at least one root');
|
|
80
|
+
return normalized;
|
|
81
|
+
}
|
|
82
|
+
function canonicalizeCandidate(path) {
|
|
83
|
+
let existing = path;
|
|
84
|
+
const missing = [];
|
|
85
|
+
while (!(0, node_fs_1.existsSync)(existing)) {
|
|
86
|
+
const parent = (0, node_path_1.dirname)(existing);
|
|
87
|
+
if (parent === existing)
|
|
88
|
+
throw new Error(`Cannot resolve path: ${path}`);
|
|
89
|
+
missing.unshift((0, node_path_1.basename)(existing));
|
|
90
|
+
existing = parent;
|
|
91
|
+
}
|
|
92
|
+
return (0, node_path_1.resolve)((0, node_fs_1.realpathSync)(existing), ...missing);
|
|
93
|
+
}
|
|
94
|
+
function assertNoSymlinkTraversal(path, root, allowMissingLeaf) {
|
|
95
|
+
const rel = (0, node_path_1.relative)(root, path);
|
|
96
|
+
const segments = rel === '' ? [] : rel.split('/');
|
|
97
|
+
let current = root;
|
|
98
|
+
for (let index = 0; index < segments.length; index += 1) {
|
|
99
|
+
current = (0, node_path_1.resolve)(current, segments[index]);
|
|
100
|
+
try {
|
|
101
|
+
if ((0, node_fs_1.lstatSync)(current).isSymbolicLink()) {
|
|
102
|
+
throw new Error(`Symlink traversal is not allowed: ${path}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
const code = error.code;
|
|
107
|
+
if (code === 'ENOENT' && allowMissingLeaf)
|
|
108
|
+
return;
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function resolveScopedPath(rawPath, roots, options = {}) {
|
|
114
|
+
const candidate = canonicalizeCandidate((0, node_path_1.resolve)(options.base ?? roots[0], rawPath));
|
|
115
|
+
const root = roots.find((allowedRoot) => within(allowedRoot, candidate));
|
|
116
|
+
if (!root)
|
|
117
|
+
throw new Error(`Path is outside the MAMA auxiliary roots: ${rawPath}`);
|
|
118
|
+
assertNoSymlinkTraversal(candidate, root, options.allowMissingLeaf ?? false);
|
|
119
|
+
if (!(options.allowMissingLeaf ?? false)) {
|
|
120
|
+
const real = (0, node_fs_1.realpathSync)(candidate);
|
|
121
|
+
if (!within(root, real))
|
|
122
|
+
throw new Error(`Resolved path escaped the MAMA auxiliary root`);
|
|
123
|
+
}
|
|
124
|
+
return candidate;
|
|
125
|
+
}
|
|
126
|
+
function walkFiles(root) {
|
|
127
|
+
const files = [];
|
|
128
|
+
const pending = [root];
|
|
129
|
+
let visited = 0;
|
|
130
|
+
while (pending.length > 0) {
|
|
131
|
+
const directory = pending.pop();
|
|
132
|
+
if (!directory)
|
|
133
|
+
break;
|
|
134
|
+
for (const entry of (0, node_fs_1.readdirSync)(directory, { withFileTypes: true })) {
|
|
135
|
+
visited += 1;
|
|
136
|
+
if (visited > MAX_WALK_ENTRIES)
|
|
137
|
+
throw new Error('Workspace scan exceeded its entry limit');
|
|
138
|
+
if (entry.isSymbolicLink())
|
|
139
|
+
continue;
|
|
140
|
+
const path = (0, node_path_1.resolve)(directory, entry.name);
|
|
141
|
+
if (entry.isDirectory())
|
|
142
|
+
pending.push(path);
|
|
143
|
+
else if (entry.isFile())
|
|
144
|
+
files.push(path);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return files;
|
|
148
|
+
}
|
|
149
|
+
function content(result, isError = false) {
|
|
150
|
+
return { content: typeof result === 'string' ? result : JSON.stringify(result), isError };
|
|
151
|
+
}
|
|
152
|
+
function boundedCommandStream(value) {
|
|
153
|
+
const encoded = Buffer.from(value, 'utf8');
|
|
154
|
+
if (encoded.byteLength <= MAX_COMMAND_STREAM_BYTES) {
|
|
155
|
+
return { text: value, bytes: encoded.byteLength, truncated: false };
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
text: encoded.subarray(0, MAX_COMMAND_STREAM_BYTES).toString('utf8'),
|
|
159
|
+
bytes: encoded.byteLength,
|
|
160
|
+
truncated: true,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function assertReadableFileSize(path) {
|
|
164
|
+
if ((0, node_fs_1.statSync)(path).size > MAX_FILE_BYTES) {
|
|
165
|
+
throw new Error('File exceeds read limit');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function createCodexAuxiliaryToolBridge(options) {
|
|
169
|
+
const roots = normalizeRoots(options.roots);
|
|
170
|
+
const allowed = [...new Set(options.allowedTools)];
|
|
171
|
+
const tools = allowed.map((name) => DEFINITIONS[name]);
|
|
172
|
+
return {
|
|
173
|
+
tools,
|
|
174
|
+
async execute(call) {
|
|
175
|
+
try {
|
|
176
|
+
if (!allowed.includes(call.name)) {
|
|
177
|
+
throw new Error(`Codex auxiliary tool ${call.name} was not allowed`);
|
|
178
|
+
}
|
|
179
|
+
const name = call.name;
|
|
180
|
+
if (name === 'Read') {
|
|
181
|
+
const path = resolveScopedPath(requireString(call.input, 'path'), roots);
|
|
182
|
+
assertReadableFileSize(path);
|
|
183
|
+
return content((0, node_fs_1.readFileSync)(path, 'utf8'));
|
|
184
|
+
}
|
|
185
|
+
if (name === 'Write') {
|
|
186
|
+
const path = resolveScopedPath(requireString(call.input, 'path'), roots, {
|
|
187
|
+
allowMissingLeaf: true,
|
|
188
|
+
});
|
|
189
|
+
const newContent = requireString(call.input, 'content');
|
|
190
|
+
if (Buffer.byteLength(newContent) > MAX_FILE_BYTES) {
|
|
191
|
+
throw new Error('File exceeds write limit');
|
|
192
|
+
}
|
|
193
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
|
|
194
|
+
(0, node_fs_1.writeFileSync)(path, newContent, 'utf8');
|
|
195
|
+
return content({ path, written: true });
|
|
196
|
+
}
|
|
197
|
+
if (name === 'Edit') {
|
|
198
|
+
const path = resolveScopedPath(requireString(call.input, 'path'), roots);
|
|
199
|
+
const oldText = requireString(call.input, 'old_string');
|
|
200
|
+
const newText = requireString(call.input, 'new_string');
|
|
201
|
+
assertReadableFileSize(path);
|
|
202
|
+
const original = (0, node_fs_1.readFileSync)(path, 'utf8');
|
|
203
|
+
const first = original.indexOf(oldText);
|
|
204
|
+
if (first < 0)
|
|
205
|
+
throw new Error('old_string was not found');
|
|
206
|
+
if (original.indexOf(oldText, first + oldText.length) >= 0) {
|
|
207
|
+
throw new Error('old_string matched more than once');
|
|
208
|
+
}
|
|
209
|
+
const edited = `${original.slice(0, first)}${newText}${original.slice(first + oldText.length)}`;
|
|
210
|
+
if (Buffer.byteLength(edited) > MAX_FILE_BYTES) {
|
|
211
|
+
throw new Error('File exceeds write limit');
|
|
212
|
+
}
|
|
213
|
+
(0, node_fs_1.writeFileSync)(path, edited, 'utf8');
|
|
214
|
+
return content({ path, edited: true });
|
|
215
|
+
}
|
|
216
|
+
if (name === 'Bash') {
|
|
217
|
+
const cwd = resolveScopedPath(optionalString(call.input, 'workdir') ?? roots[0], roots);
|
|
218
|
+
const result = await options.executeCommand(requireString(call.input, 'command'), cwd, roots, call.signal);
|
|
219
|
+
const stdout = boundedCommandStream(result.stdout);
|
|
220
|
+
const stderr = boundedCommandStream(result.stderr);
|
|
221
|
+
return content({
|
|
222
|
+
exitCode: result.exitCode,
|
|
223
|
+
stdout: stdout.text,
|
|
224
|
+
stderr: stderr.text,
|
|
225
|
+
stdoutBytes: stdout.bytes,
|
|
226
|
+
stderrBytes: stderr.bytes,
|
|
227
|
+
stdoutTruncated: stdout.truncated,
|
|
228
|
+
stderrTruncated: stderr.truncated,
|
|
229
|
+
}, result.exitCode !== 0);
|
|
230
|
+
}
|
|
231
|
+
const scanRoot = resolveScopedPath(optionalString(call.input, 'path') ?? roots[0], roots);
|
|
232
|
+
const files = walkFiles(scanRoot);
|
|
233
|
+
if (name === 'Glob') {
|
|
234
|
+
const pattern = requireString(call.input, 'pattern');
|
|
235
|
+
const matches = files
|
|
236
|
+
.filter((path) => (0, minimatch_1.minimatch)((0, node_path_1.relative)(scanRoot, path), pattern, { dot: true }))
|
|
237
|
+
.slice(0, MAX_RESULTS);
|
|
238
|
+
return content(matches);
|
|
239
|
+
}
|
|
240
|
+
const regex = new RegExp(requireString(call.input, 'pattern'), 'g');
|
|
241
|
+
const glob = optionalString(call.input, 'glob');
|
|
242
|
+
const matches = [];
|
|
243
|
+
for (const path of files) {
|
|
244
|
+
if (glob && !(0, minimatch_1.minimatch)((0, node_path_1.relative)(scanRoot, path), glob, { dot: true }))
|
|
245
|
+
continue;
|
|
246
|
+
const stat = (0, node_fs_1.lstatSync)(path);
|
|
247
|
+
if (stat.size > MAX_FILE_BYTES)
|
|
248
|
+
continue;
|
|
249
|
+
const lines = (0, node_fs_1.readFileSync)(path, 'utf8').split(/\r?\n/);
|
|
250
|
+
for (let index = 0; index < lines.length; index += 1) {
|
|
251
|
+
regex.lastIndex = 0;
|
|
252
|
+
if (regex.test(lines[index])) {
|
|
253
|
+
matches.push({ path, line: index + 1, text: lines[index] });
|
|
254
|
+
if (matches.length >= MAX_RESULTS)
|
|
255
|
+
return content(matches);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return content(matches);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
return content(error instanceof Error ? error.message : String(error), true);
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=codex-auxiliary-tools.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CodexAppServerLaunchConfig {
|
|
2
|
+
args: string[];
|
|
3
|
+
env: Record<string, string | undefined>;
|
|
4
|
+
fingerprint: string;
|
|
5
|
+
/** Fingerprint of configured credential values; never persisted in thread policy. */
|
|
6
|
+
secretFingerprint: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const CODEX_REASONING_EFFORTS: readonly ["low", "medium", "high", "xhigh", "max"];
|
|
9
|
+
export type CodexReasoningEffort = (typeof CODEX_REASONING_EFFORTS)[number];
|
|
10
|
+
export declare const DEFAULT_CODEX_REASONING_EFFORT: CodexReasoningEffort;
|
|
11
|
+
export declare function buildMAMACodexAppServerConfig(effort?: string | null, hostNotes?: readonly string[], options?: {
|
|
12
|
+
shellTool?: boolean;
|
|
13
|
+
/** Enable live web search; disabled unless the consumer opts in. */
|
|
14
|
+
webSearch?: boolean;
|
|
15
|
+
shellEnvironment?: Record<string, string>;
|
|
16
|
+
deniedReadPaths?: string[];
|
|
17
|
+
allowLoginShell?: boolean;
|
|
18
|
+
}): string;
|
|
19
|
+
export declare function buildCodexAppServerLaunchConfig(mcpConfigPath: string | undefined, processEnv: Readonly<Record<string, string | undefined>>): CodexAppServerLaunchConfig;
|
|
20
|
+
//# sourceMappingURL=codex-home.d.ts.map
|