omp-fabric 0.85.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/LICENSE +21 -0
- package/README.md +170 -0
- package/THIRD_PARTY_NOTICES.md +33 -0
- package/dist/activity/store.d.ts +32 -0
- package/dist/activity/store.d.ts.map +1 -0
- package/dist/activity/types.d.ts +104 -0
- package/dist/activity/types.d.ts.map +1 -0
- package/dist/actors/binding-store.d.ts +17 -0
- package/dist/actors/binding-store.d.ts.map +1 -0
- package/dist/actors/context.d.ts +13 -0
- package/dist/actors/context.d.ts.map +1 -0
- package/dist/actors/delivery-policy.d.ts +8 -0
- package/dist/actors/delivery-policy.d.ts.map +1 -0
- package/dist/actors/directory.d.ts +47 -0
- package/dist/actors/directory.d.ts.map +1 -0
- package/dist/actors/global-registry.d.ts +47 -0
- package/dist/actors/global-registry.d.ts.map +1 -0
- package/dist/actors/host-event-observer.d.ts +5 -0
- package/dist/actors/host-event-observer.d.ts.map +1 -0
- package/dist/actors/host-event-payload.d.ts +14 -0
- package/dist/actors/host-event-payload.d.ts.map +1 -0
- package/dist/actors/manager.d.ts +175 -0
- package/dist/actors/manager.d.ts.map +1 -0
- package/dist/actors/predicate.d.ts +7 -0
- package/dist/actors/predicate.d.ts.map +1 -0
- package/dist/actors/types.d.ts +211 -0
- package/dist/actors/types.d.ts.map +1 -0
- package/dist/agents/bash-worktree-add.d.ts +24 -0
- package/dist/agents/bash-worktree-add.d.ts.map +1 -0
- package/dist/agents/budget-ledger.d.ts +88 -0
- package/dist/agents/budget-ledger.d.ts.map +1 -0
- package/dist/agents/claude-cli.d.ts +32 -0
- package/dist/agents/claude-cli.d.ts.map +1 -0
- package/dist/agents/claude-cli.js +17 -0
- package/dist/agents/claude-cli.js.map +7 -0
- package/dist/agents/clone-first-worktree.d.ts +17 -0
- package/dist/agents/clone-first-worktree.d.ts.map +1 -0
- package/dist/agents/compact-control.d.ts +32 -0
- package/dist/agents/compact-control.d.ts.map +1 -0
- package/dist/agents/compact-control.js +127 -0
- package/dist/agents/compact-control.js.map +7 -0
- package/dist/agents/constants.d.ts +5 -0
- package/dist/agents/constants.d.ts.map +1 -0
- package/dist/agents/cow-clone.d.ts +8 -0
- package/dist/agents/cow-clone.d.ts.map +1 -0
- package/dist/agents/handoff.d.ts +19 -0
- package/dist/agents/handoff.d.ts.map +1 -0
- package/dist/agents/manager.d.ts +68 -0
- package/dist/agents/manager.d.ts.map +1 -0
- package/dist/agents/omp-binary.d.ts +7 -0
- package/dist/agents/omp-binary.d.ts.map +1 -0
- package/dist/agents/rm.d.ts +15 -0
- package/dist/agents/rm.d.ts.map +1 -0
- package/dist/agents/semaphore.d.ts +7 -0
- package/dist/agents/semaphore.d.ts.map +1 -0
- package/dist/agents/session-export.d.ts +9 -0
- package/dist/agents/session-export.d.ts.map +1 -0
- package/dist/agents/thinking-transfer.d.ts +39 -0
- package/dist/agents/thinking-transfer.d.ts.map +1 -0
- package/dist/agents/transports/herdr-transport.d.ts +10 -0
- package/dist/agents/transports/herdr-transport.d.ts.map +1 -0
- package/dist/agents/transports/localterm-transport.d.ts +7 -0
- package/dist/agents/transports/localterm-transport.d.ts.map +1 -0
- package/dist/agents/transports/process-transport.d.ts +7 -0
- package/dist/agents/transports/process-transport.d.ts.map +1 -0
- package/dist/agents/transports/process-utils.d.ts +29 -0
- package/dist/agents/transports/process-utils.d.ts.map +1 -0
- package/dist/agents/transports/screen-transport.d.ts +7 -0
- package/dist/agents/transports/screen-transport.d.ts.map +1 -0
- package/dist/agents/transports/tmux-transport.d.ts +7 -0
- package/dist/agents/transports/tmux-transport.d.ts.map +1 -0
- package/dist/agents/types.d.ts +251 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/veda-cli.d.ts +22 -0
- package/dist/agents/veda-cli.d.ts.map +1 -0
- package/dist/agents/veda-cli.js +13 -0
- package/dist/agents/veda-cli.js.map +7 -0
- package/dist/agents/worktree-manager.d.ts +14 -0
- package/dist/agents/worktree-manager.d.ts.map +1 -0
- package/dist/agents/worktree-paths.d.ts +5 -0
- package/dist/agents/worktree-paths.d.ts.map +1 -0
- package/dist/async-settlement.d.ts +4 -0
- package/dist/async-settlement.d.ts.map +1 -0
- package/dist/audit/details.d.ts +82 -0
- package/dist/audit/details.d.ts.map +1 -0
- package/dist/audit/index.d.ts +4 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/projection.d.ts +20 -0
- package/dist/audit/projection.d.ts.map +1 -0
- package/dist/audit/trace.d.ts +95 -0
- package/dist/audit/trace.d.ts.map +1 -0
- package/dist/capture/catalog.d.ts +29 -0
- package/dist/capture/catalog.d.ts.map +1 -0
- package/dist/capture/interceptor.d.ts +21 -0
- package/dist/capture/interceptor.d.ts.map +1 -0
- package/dist/capture/wrapper.d.ts +15 -0
- package/dist/capture/wrapper.d.ts.map +1 -0
- package/dist/chunks/chunk-2GQC324T.js +5001 -0
- package/dist/chunks/chunk-2GQC324T.js.map +7 -0
- package/dist/chunks/chunk-2KEWFW56.js +1229 -0
- package/dist/chunks/chunk-2KEWFW56.js.map +7 -0
- package/dist/chunks/chunk-3J7BKUNG.js +354 -0
- package/dist/chunks/chunk-3J7BKUNG.js.map +7 -0
- package/dist/chunks/chunk-4A4MVZQW.js +253 -0
- package/dist/chunks/chunk-4A4MVZQW.js.map +7 -0
- package/dist/chunks/chunk-4HQDSTHN.js +221 -0
- package/dist/chunks/chunk-4HQDSTHN.js.map +7 -0
- package/dist/chunks/chunk-4LEDA76O.js +688 -0
- package/dist/chunks/chunk-4LEDA76O.js.map +7 -0
- package/dist/chunks/chunk-5GTPD4BA.js +1318 -0
- package/dist/chunks/chunk-5GTPD4BA.js.map +7 -0
- package/dist/chunks/chunk-5IWFSDU5.js +87 -0
- package/dist/chunks/chunk-5IWFSDU5.js.map +7 -0
- package/dist/chunks/chunk-6N4XGAZY.js +21 -0
- package/dist/chunks/chunk-6N4XGAZY.js.map +7 -0
- package/dist/chunks/chunk-6QBPSZJ5.js +647 -0
- package/dist/chunks/chunk-6QBPSZJ5.js.map +7 -0
- package/dist/chunks/chunk-6X6WUU2K.js +73 -0
- package/dist/chunks/chunk-6X6WUU2K.js.map +7 -0
- package/dist/chunks/chunk-7363CD5A.js +38 -0
- package/dist/chunks/chunk-7363CD5A.js.map +7 -0
- package/dist/chunks/chunk-77FQHHZD.js +231 -0
- package/dist/chunks/chunk-77FQHHZD.js.map +7 -0
- package/dist/chunks/chunk-7BIA5BJN.js +112 -0
- package/dist/chunks/chunk-7BIA5BJN.js.map +7 -0
- package/dist/chunks/chunk-7BOAOKWH.js +64 -0
- package/dist/chunks/chunk-7BOAOKWH.js.map +7 -0
- package/dist/chunks/chunk-7TB7NXSL.js +58 -0
- package/dist/chunks/chunk-7TB7NXSL.js.map +7 -0
- package/dist/chunks/chunk-7VIQNUPS.js +17 -0
- package/dist/chunks/chunk-7VIQNUPS.js.map +7 -0
- package/dist/chunks/chunk-CT2AJ2UI.js +225 -0
- package/dist/chunks/chunk-CT2AJ2UI.js.map +7 -0
- package/dist/chunks/chunk-DLXPTBPL.js +151 -0
- package/dist/chunks/chunk-DLXPTBPL.js.map +7 -0
- package/dist/chunks/chunk-ED3BRM6P.js +17 -0
- package/dist/chunks/chunk-ED3BRM6P.js.map +7 -0
- package/dist/chunks/chunk-G2IBGGBM.js +42 -0
- package/dist/chunks/chunk-G2IBGGBM.js.map +7 -0
- package/dist/chunks/chunk-GKOFZ76R.js +1596 -0
- package/dist/chunks/chunk-GKOFZ76R.js.map +7 -0
- package/dist/chunks/chunk-HDJBUXDX.js +1102 -0
- package/dist/chunks/chunk-HDJBUXDX.js.map +7 -0
- package/dist/chunks/chunk-IGVDD2HT.js +10 -0
- package/dist/chunks/chunk-IGVDD2HT.js.map +7 -0
- package/dist/chunks/chunk-JHKOG5GS.js +187 -0
- package/dist/chunks/chunk-JHKOG5GS.js.map +7 -0
- package/dist/chunks/chunk-JP4LIZFT.js +1334 -0
- package/dist/chunks/chunk-JP4LIZFT.js.map +7 -0
- package/dist/chunks/chunk-JSBTB3P6.js +127 -0
- package/dist/chunks/chunk-JSBTB3P6.js.map +7 -0
- package/dist/chunks/chunk-KAD7UWT2.js +99 -0
- package/dist/chunks/chunk-KAD7UWT2.js.map +7 -0
- package/dist/chunks/chunk-KIH3KLZU.js +95 -0
- package/dist/chunks/chunk-KIH3KLZU.js.map +7 -0
- package/dist/chunks/chunk-KIREBD2V.js +2208 -0
- package/dist/chunks/chunk-KIREBD2V.js.map +7 -0
- package/dist/chunks/chunk-LMAVZN7J.js +8 -0
- package/dist/chunks/chunk-LMAVZN7J.js.map +7 -0
- package/dist/chunks/chunk-NCPJZXLM.js +57 -0
- package/dist/chunks/chunk-NCPJZXLM.js.map +7 -0
- package/dist/chunks/chunk-OJZNMROB.js +195 -0
- package/dist/chunks/chunk-OJZNMROB.js.map +7 -0
- package/dist/chunks/chunk-OPTP4PSE.js +469 -0
- package/dist/chunks/chunk-OPTP4PSE.js.map +7 -0
- package/dist/chunks/chunk-QPXSCMTG.js +24 -0
- package/dist/chunks/chunk-QPXSCMTG.js.map +7 -0
- package/dist/chunks/chunk-ROKMBLGN.js +1265 -0
- package/dist/chunks/chunk-ROKMBLGN.js.map +7 -0
- package/dist/chunks/chunk-SXMWV447.js +2445 -0
- package/dist/chunks/chunk-SXMWV447.js.map +7 -0
- package/dist/chunks/chunk-T5ZA5YRU.js +786 -0
- package/dist/chunks/chunk-T5ZA5YRU.js.map +7 -0
- package/dist/chunks/chunk-T6OAX4FO.js +1835 -0
- package/dist/chunks/chunk-T6OAX4FO.js.map +7 -0
- package/dist/chunks/chunk-U5FYOMG5.js +119 -0
- package/dist/chunks/chunk-U5FYOMG5.js.map +7 -0
- package/dist/chunks/chunk-UOSJZXJV.js +142 -0
- package/dist/chunks/chunk-UOSJZXJV.js.map +7 -0
- package/dist/chunks/chunk-UPCARIJP.js +6627 -0
- package/dist/chunks/chunk-UPCARIJP.js.map +7 -0
- package/dist/chunks/chunk-VPPIJRNZ.js +50 -0
- package/dist/chunks/chunk-VPPIJRNZ.js.map +7 -0
- package/dist/chunks/chunk-XU5Z4JCQ.js +297 -0
- package/dist/chunks/chunk-XU5Z4JCQ.js.map +7 -0
- package/dist/chunks/chunk-YWEXP724.js +427 -0
- package/dist/chunks/chunk-YWEXP724.js.map +7 -0
- package/dist/chunks/chunk-YZZIKJX6.js +60 -0
- package/dist/chunks/chunk-YZZIKJX6.js.map +7 -0
- package/dist/chunks/chunk-ZNAJDPT7.js +2203 -0
- package/dist/chunks/chunk-ZNAJDPT7.js.map +7 -0
- package/dist/chunks/chunk-ZTM45GH5.js +163 -0
- package/dist/chunks/chunk-ZTM45GH5.js.map +7 -0
- package/dist/commands/fabric.d.ts +17 -0
- package/dist/commands/fabric.d.ts.map +1 -0
- package/dist/compaction/bounds.d.ts +23 -0
- package/dist/compaction/bounds.d.ts.map +1 -0
- package/dist/compaction/branch-details.d.ts +83 -0
- package/dist/compaction/branch-details.d.ts.map +1 -0
- package/dist/compaction/branch-summary.d.ts +9 -0
- package/dist/compaction/branch-summary.d.ts.map +1 -0
- package/dist/compaction/enrichers.d.ts +10 -0
- package/dist/compaction/enrichers.d.ts.map +1 -0
- package/dist/compaction/hook.d.ts +98 -0
- package/dist/compaction/hook.d.ts.map +1 -0
- package/dist/compaction/hook.js +19 -0
- package/dist/compaction/hook.js.map +7 -0
- package/dist/compaction/instructions.d.ts +38 -0
- package/dist/compaction/instructions.d.ts.map +1 -0
- package/dist/compaction/normalize.d.ts +83 -0
- package/dist/compaction/normalize.d.ts.map +1 -0
- package/dist/compaction/projections.d.ts +31 -0
- package/dist/compaction/projections.d.ts.map +1 -0
- package/dist/compaction/qa.d.ts +27 -0
- package/dist/compaction/qa.d.ts.map +1 -0
- package/dist/compaction/render.d.ts +10 -0
- package/dist/compaction/render.d.ts.map +1 -0
- package/dist/compaction/threshold.d.ts +5 -0
- package/dist/compaction/threshold.d.ts.map +1 -0
- package/dist/compaction/trace-events.d.ts +23 -0
- package/dist/compaction/trace-events.d.ts.map +1 -0
- package/dist/components/catalog.d.ts +25 -0
- package/dist/components/catalog.d.ts.map +1 -0
- package/dist/components/effect-scope.d.ts +31 -0
- package/dist/components/effect-scope.d.ts.map +1 -0
- package/dist/components/loader.d.ts +27 -0
- package/dist/components/loader.d.ts.map +1 -0
- package/dist/components/model-guidance.d.ts +48 -0
- package/dist/components/model-guidance.d.ts.map +1 -0
- package/dist/components/provider-component.d.ts +31 -0
- package/dist/components/provider-component.d.ts.map +1 -0
- package/dist/components/supervisor.d.ts +29 -0
- package/dist/components/supervisor.d.ts.map +1 -0
- package/dist/components/types.d.ts +140 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/config-migrations.d.ts +11 -0
- package/dist/config-migrations.d.ts.map +1 -0
- package/dist/config.d.ts +269 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core/action-registry.d.ts +159 -0
- package/dist/core/action-registry.d.ts.map +1 -0
- package/dist/core/action-registry.js +17 -0
- package/dist/core/action-registry.js.map +7 -0
- package/dist/core/action-repair.d.ts +20 -0
- package/dist/core/action-repair.d.ts.map +1 -0
- package/dist/core/agent-dir.d.ts +2 -0
- package/dist/core/agent-dir.d.ts.map +1 -0
- package/dist/core/approval-controller.d.ts +30 -0
- package/dist/core/approval-controller.d.ts.map +1 -0
- package/dist/core/atomic-write.d.ts +15 -0
- package/dist/core/atomic-write.d.ts.map +1 -0
- package/dist/core/auto-approval-classifier.d.ts +13 -0
- package/dist/core/auto-approval-classifier.d.ts.map +1 -0
- package/dist/core/call-preview.d.ts +8 -0
- package/dist/core/call-preview.d.ts.map +1 -0
- package/dist/core/child-tool-allowlist.d.ts +3 -0
- package/dist/core/child-tool-allowlist.d.ts.map +1 -0
- package/dist/core/compact-controller.d.ts +42 -0
- package/dist/core/compact-controller.d.ts.map +1 -0
- package/dist/core/core-override-guidance.d.ts +7 -0
- package/dist/core/core-override-guidance.d.ts.map +1 -0
- package/dist/core/direct-tool-approval.d.ts +19 -0
- package/dist/core/direct-tool-approval.d.ts.map +1 -0
- package/dist/core/effect-conflict.d.ts +3 -0
- package/dist/core/effect-conflict.d.ts.map +1 -0
- package/dist/core/file-lock.d.ts +12 -0
- package/dist/core/file-lock.d.ts.map +1 -0
- package/dist/core/model-resolution.d.ts +62 -0
- package/dist/core/model-resolution.d.ts.map +1 -0
- package/dist/core/model-usage.d.ts +8 -0
- package/dist/core/model-usage.d.ts.map +1 -0
- package/dist/core/omp-bash-error.d.ts +11 -0
- package/dist/core/omp-bash-error.d.ts.map +1 -0
- package/dist/core/omp-tools.d.ts +9 -0
- package/dist/core/omp-tools.d.ts.map +1 -0
- package/dist/core/provider-bindings.d.ts +47 -0
- package/dist/core/provider-bindings.d.ts.map +1 -0
- package/dist/core/proxy-contract.d.ts +18 -0
- package/dist/core/proxy-contract.d.ts.map +1 -0
- package/dist/core/session-context.d.ts +6 -0
- package/dist/core/session-context.d.ts.map +1 -0
- package/dist/core/skill-block.d.ts +10 -0
- package/dist/core/skill-block.d.ts.map +1 -0
- package/dist/core/skill-dir.d.ts +4 -0
- package/dist/core/skill-dir.d.ts.map +1 -0
- package/dist/core/skill-prompt.d.ts +3 -0
- package/dist/core/skill-prompt.d.ts.map +1 -0
- package/dist/core/skill-references.d.ts +7 -0
- package/dist/core/skill-references.d.ts.map +1 -0
- package/dist/core/stable-hash.d.ts +3 -0
- package/dist/core/stable-hash.d.ts.map +1 -0
- package/dist/core/system-guidance.d.ts +12 -0
- package/dist/core/system-guidance.d.ts.map +1 -0
- package/dist/core/token-math.d.ts +16 -0
- package/dist/core/token-math.d.ts.map +1 -0
- package/dist/core/tool-ownership.d.ts +52 -0
- package/dist/core/tool-ownership.d.ts.map +1 -0
- package/dist/core/tool-result-proxy.d.ts +18 -0
- package/dist/core/tool-result-proxy.d.ts.map +1 -0
- package/dist/entropy/active.d.ts +7 -0
- package/dist/entropy/active.d.ts.map +1 -0
- package/dist/entropy/compiled-store.d.ts +16 -0
- package/dist/entropy/compiled-store.d.ts.map +1 -0
- package/dist/entropy/compiled-surface.d.ts +51 -0
- package/dist/entropy/compiled-surface.d.ts.map +1 -0
- package/dist/entropy/compiler.d.ts +28 -0
- package/dist/entropy/compiler.d.ts.map +1 -0
- package/dist/entropy/corpus.d.ts +22 -0
- package/dist/entropy/corpus.d.ts.map +1 -0
- package/dist/entropy/fingerprint.d.ts +9 -0
- package/dist/entropy/fingerprint.d.ts.map +1 -0
- package/dist/entropy/index.d.ts +15 -0
- package/dist/entropy/index.d.ts.map +1 -0
- package/dist/entropy/index.js +172 -0
- package/dist/entropy/index.js.map +7 -0
- package/dist/entropy/meter.d.ts +10 -0
- package/dist/entropy/meter.d.ts.map +1 -0
- package/dist/entropy/passes.d.ts +13 -0
- package/dist/entropy/passes.d.ts.map +1 -0
- package/dist/entropy/pool-store.d.ts +15 -0
- package/dist/entropy/pool-store.d.ts.map +1 -0
- package/dist/entropy/pool.d.ts +41 -0
- package/dist/entropy/pool.d.ts.map +1 -0
- package/dist/entropy/presentation.d.ts +13 -0
- package/dist/entropy/presentation.d.ts.map +1 -0
- package/dist/entropy/sessions.d.ts +47 -0
- package/dist/entropy/sessions.d.ts.map +1 -0
- package/dist/entropy/surface.d.ts +30 -0
- package/dist/entropy/surface.d.ts.map +1 -0
- package/dist/entropy/trial.d.ts +35 -0
- package/dist/entropy/trial.d.ts.map +1 -0
- package/dist/entropy/types.d.ts +158 -0
- package/dist/entropy/types.d.ts.map +1 -0
- package/dist/execution-service.d.ts +63 -0
- package/dist/execution-service.d.ts.map +1 -0
- package/dist/fabric-exec-arguments.d.ts +5 -0
- package/dist/fabric-exec-arguments.d.ts.map +1 -0
- package/dist/fabric-exec-tool.d.ts +8 -0
- package/dist/fabric-exec-tool.d.ts.map +1 -0
- package/dist/fabric-runtime-state.d.ts +90 -0
- package/dist/fabric-runtime-state.d.ts.map +1 -0
- package/dist/fabric-runtime-state.js +13060 -0
- package/dist/fabric-runtime-state.js.map +7 -0
- package/dist/fabric-state.d.ts +89 -0
- package/dist/fabric-state.d.ts.map +1 -0
- package/dist/failure-progress.d.ts +3 -0
- package/dist/failure-progress.d.ts.map +1 -0
- package/dist/host-compatibility.d.ts +5 -0
- package/dist/host-compatibility.d.ts.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5719 -0
- package/dist/index.js.map +7 -0
- package/dist/lifecycle/broker.d.ts +30 -0
- package/dist/lifecycle/broker.d.ts.map +1 -0
- package/dist/lifecycle/delivery-scheduler.d.ts +30 -0
- package/dist/lifecycle/delivery-scheduler.d.ts.map +1 -0
- package/dist/lifecycle/types.d.ts +91 -0
- package/dist/lifecycle/types.d.ts.map +1 -0
- package/dist/log-tail.d.ts +11 -0
- package/dist/log-tail.d.ts.map +1 -0
- package/dist/main-agent.d.ts +70 -0
- package/dist/main-agent.d.ts.map +1 -0
- package/dist/memory/context.d.ts +112 -0
- package/dist/memory/context.d.ts.map +1 -0
- package/dist/memory/digest.d.ts +48 -0
- package/dist/memory/digest.d.ts.map +1 -0
- package/dist/memory/digest.js +7 -0
- package/dist/memory/digest.js.map +7 -0
- package/dist/memory/discovery.d.ts +43 -0
- package/dist/memory/discovery.d.ts.map +1 -0
- package/dist/memory/discovery.js +23 -0
- package/dist/memory/discovery.js.map +7 -0
- package/dist/memory/index.d.ts +107 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/lineage.d.ts +20 -0
- package/dist/memory/lineage.d.ts.map +1 -0
- package/dist/memory/normalize.d.ts +170 -0
- package/dist/memory/normalize.d.ts.map +1 -0
- package/dist/memory/normalize.js +22 -0
- package/dist/memory/normalize.js.map +7 -0
- package/dist/memory/regex.d.ts +19 -0
- package/dist/memory/regex.d.ts.map +1 -0
- package/dist/memory/search.d.ts +98 -0
- package/dist/memory/search.d.ts.map +1 -0
- package/dist/memory/search.js +22 -0
- package/dist/memory/search.js.map +7 -0
- package/dist/memory/tokenize.d.ts +24 -0
- package/dist/memory/tokenize.d.ts.map +1 -0
- package/dist/mesh/store.d.ts +78 -0
- package/dist/mesh/store.d.ts.map +1 -0
- package/dist/output-budget.d.ts +12 -0
- package/dist/output-budget.d.ts.map +1 -0
- package/dist/prewalk/arm.d.ts +8 -0
- package/dist/prewalk/arm.d.ts.map +1 -0
- package/dist/prewalk/controller.d.ts +60 -0
- package/dist/prewalk/controller.d.ts.map +1 -0
- package/dist/prewalk/fs-drift.d.ts +19 -0
- package/dist/prewalk/fs-drift.d.ts.map +1 -0
- package/dist/prewalk/handoff.d.ts +45 -0
- package/dist/prewalk/handoff.d.ts.map +1 -0
- package/dist/protocol.d.ts +273 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +46 -0
- package/dist/protocol.js.map +7 -0
- package/dist/providers/agents-actions.d.ts +3 -0
- package/dist/providers/agents-actions.d.ts.map +1 -0
- package/dist/providers/agents-provider.d.ts +59 -0
- package/dist/providers/agents-provider.d.ts.map +1 -0
- package/dist/providers/arg-normalization.d.ts +15 -0
- package/dist/providers/arg-normalization.d.ts.map +1 -0
- package/dist/providers/captured-tools-provider.d.ts +23 -0
- package/dist/providers/captured-tools-provider.d.ts.map +1 -0
- package/dist/providers/compact-provider.d.ts +14 -0
- package/dist/providers/compact-provider.d.ts.map +1 -0
- package/dist/providers/components-provider.d.ts +12 -0
- package/dist/providers/components-provider.d.ts.map +1 -0
- package/dist/providers/mcp-descriptor-cache.d.ts +47 -0
- package/dist/providers/mcp-descriptor-cache.d.ts.map +1 -0
- package/dist/providers/mcp-provider.d.ts +27 -0
- package/dist/providers/mcp-provider.d.ts.map +1 -0
- package/dist/providers/memory-provider.d.ts +35 -0
- package/dist/providers/memory-provider.d.ts.map +1 -0
- package/dist/providers/memory-provider.js +16 -0
- package/dist/providers/memory-provider.js.map +7 -0
- package/dist/providers/mesh-provider.d.ts +17 -0
- package/dist/providers/mesh-provider.d.ts.map +1 -0
- package/dist/providers/omp-bash-cwd.d.ts +31 -0
- package/dist/providers/omp-bash-cwd.d.ts.map +1 -0
- package/dist/providers/omp-tools-provider.d.ts +15 -0
- package/dist/providers/omp-tools-provider.d.ts.map +1 -0
- package/dist/providers/schema-provider.d.ts +15 -0
- package/dist/providers/schema-provider.d.ts.map +1 -0
- package/dist/providers/state-provider.d.ts +16 -0
- package/dist/providers/state-provider.d.ts.map +1 -0
- package/dist/providers/write-diff-limits.d.ts +5 -0
- package/dist/providers/write-diff-limits.d.ts.map +1 -0
- package/dist/providers/write-preview.d.ts +3 -0
- package/dist/providers/write-preview.d.ts.map +1 -0
- package/dist/ref-names.d.ts +2 -0
- package/dist/ref-names.d.ts.map +1 -0
- package/dist/repairs/active.d.ts +7 -0
- package/dist/repairs/active.d.ts.map +1 -0
- package/dist/repairs/apply.d.ts +7 -0
- package/dist/repairs/apply.d.ts.map +1 -0
- package/dist/repairs/catalog-digest.d.ts +5 -0
- package/dist/repairs/catalog-digest.d.ts.map +1 -0
- package/dist/repairs/classify.d.ts +10 -0
- package/dist/repairs/classify.d.ts.map +1 -0
- package/dist/repairs/compiler.d.ts +33 -0
- package/dist/repairs/compiler.d.ts.map +1 -0
- package/dist/repairs/promote.d.ts +4 -0
- package/dist/repairs/promote.d.ts.map +1 -0
- package/dist/repairs/store.d.ts +10 -0
- package/dist/repairs/store.d.ts.map +1 -0
- package/dist/repairs/types.d.ts +49 -0
- package/dist/repairs/types.d.ts.map +1 -0
- package/dist/residency/actor-client.d.ts +16 -0
- package/dist/residency/actor-client.d.ts.map +1 -0
- package/dist/residency/actor-client.js +9 -0
- package/dist/residency/actor-client.js.map +7 -0
- package/dist/residency/client.d.ts +44 -0
- package/dist/residency/client.d.ts.map +1 -0
- package/dist/residency/host.d.ts +3 -0
- package/dist/residency/host.d.ts.map +1 -0
- package/dist/residency/host.js +25 -0
- package/dist/residency/host.js.map +7 -0
- package/dist/residency/launcher-owner.d.ts +7 -0
- package/dist/residency/launcher-owner.d.ts.map +1 -0
- package/dist/residency/launcher.d.ts +3 -0
- package/dist/residency/launcher.d.ts.map +1 -0
- package/dist/residency/launcher.js +152 -0
- package/dist/residency/launcher.js.map +7 -0
- package/dist/residency/omp-entry.d.ts +3 -0
- package/dist/residency/omp-entry.d.ts.map +1 -0
- package/dist/residency/omp-entry.js +41 -0
- package/dist/residency/omp-entry.js.map +7 -0
- package/dist/residency/protocol.d.ts +119 -0
- package/dist/residency/protocol.d.ts.map +1 -0
- package/dist/run-display.d.ts +3 -0
- package/dist/run-display.d.ts.map +1 -0
- package/dist/runtime/core-override-guest-types.d.ts +15 -0
- package/dist/runtime/core-override-guest-types.d.ts.map +1 -0
- package/dist/runtime/core-override-guest-types.js +291 -0
- package/dist/runtime/core-override-guest-types.js.map +7 -0
- package/dist/runtime/core-tool-properties.d.ts +6 -0
- package/dist/runtime/core-tool-properties.d.ts.map +1 -0
- package/dist/runtime/dynamic-guest-types.d.ts +3 -0
- package/dist/runtime/dynamic-guest-types.d.ts.map +1 -0
- package/dist/runtime/dynamic-guest-types.js +226 -0
- package/dist/runtime/dynamic-guest-types.js.map +7 -0
- package/dist/runtime/guest-code-repair.d.ts +2 -0
- package/dist/runtime/guest-code-repair.d.ts.map +1 -0
- package/dist/runtime/guest-stack-map.d.ts +11 -0
- package/dist/runtime/guest-stack-map.d.ts.map +1 -0
- package/dist/runtime/guest-types.d.ts +35 -0
- package/dist/runtime/guest-types.d.ts.map +1 -0
- package/dist/runtime/guest-types.js +13 -0
- package/dist/runtime/guest-types.js.map +7 -0
- package/dist/runtime/node-process-child-source.d.ts +2 -0
- package/dist/runtime/node-process-child-source.d.ts.map +1 -0
- package/dist/runtime/node-process-runtime.d.ts +10 -0
- package/dist/runtime/node-process-runtime.d.ts.map +1 -0
- package/dist/runtime/node-process-runtime.js +319 -0
- package/dist/runtime/node-process-runtime.js.map +7 -0
- package/dist/runtime/orchestration.d.ts +3 -0
- package/dist/runtime/orchestration.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.d.ts +24 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +12 -0
- package/dist/runtime/quickjs-runtime.js.map +7 -0
- package/dist/runtime/type-checker.d.ts +21 -0
- package/dist/runtime/type-checker.d.ts.map +1 -0
- package/dist/runtime/type-checker.js +15 -0
- package/dist/runtime/type-checker.js.map +7 -0
- package/dist/runtime-paths.d.ts +7 -0
- package/dist/runtime-paths.d.ts.map +1 -0
- package/dist/schema/controller.d.ts +35 -0
- package/dist/schema/controller.d.ts.map +1 -0
- package/dist/schema/types.d.ts +86 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/workspace.d.ts +19 -0
- package/dist/schema/workspace.d.ts.map +1 -0
- package/dist/speculation/eligibility.d.ts +22 -0
- package/dist/speculation/eligibility.d.ts.map +1 -0
- package/dist/speculation/freshness.d.ts +10 -0
- package/dist/speculation/freshness.d.ts.map +1 -0
- package/dist/speculation/partial-json.d.ts +9 -0
- package/dist/speculation/partial-json.d.ts.map +1 -0
- package/dist/speculation/scanner.d.ts +13 -0
- package/dist/speculation/scanner.d.ts.map +1 -0
- package/dist/speculation/scanner.js +182 -0
- package/dist/speculation/scanner.js.map +7 -0
- package/dist/speculation/store.d.ts +39 -0
- package/dist/speculation/store.d.ts.map +1 -0
- package/dist/speculation/stream-tap.d.ts +27 -0
- package/dist/speculation/stream-tap.d.ts.map +1 -0
- package/dist/speculation/types.d.ts +44 -0
- package/dist/speculation/types.d.ts.map +1 -0
- package/dist/state/complexity.d.ts +13 -0
- package/dist/state/complexity.d.ts.map +1 -0
- package/dist/state/evidence-runner.d.ts +17 -0
- package/dist/state/evidence-runner.d.ts.map +1 -0
- package/dist/state/store.d.ts +76 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/types.d.ts +165 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/storage/retention.d.ts +22 -0
- package/dist/storage/retention.d.ts.map +1 -0
- package/dist/thinking.d.ts +19 -0
- package/dist/thinking.d.ts.map +1 -0
- package/dist/topology/control-plane.d.ts +58 -0
- package/dist/topology/control-plane.d.ts.map +1 -0
- package/dist/topology/participant-directory.d.ts +33 -0
- package/dist/topology/participant-directory.d.ts.map +1 -0
- package/dist/topology/peer-settle.d.ts +51 -0
- package/dist/topology/peer-settle.d.ts.map +1 -0
- package/dist/topology/records.d.ts +6 -0
- package/dist/topology/records.d.ts.map +1 -0
- package/dist/topology/types.d.ts +89 -0
- package/dist/topology/types.d.ts.map +1 -0
- package/dist/type-error-guidance.d.ts +3 -0
- package/dist/type-error-guidance.d.ts.map +1 -0
- package/dist/ui/arc-group.d.ts +17 -0
- package/dist/ui/arc-group.d.ts.map +1 -0
- package/dist/ui/code-preview-shell.d.ts +26 -0
- package/dist/ui/code-preview-shell.d.ts.map +1 -0
- package/dist/ui/code-preview.d.ts +53 -0
- package/dist/ui/code-preview.d.ts.map +1 -0
- package/dist/ui/controller.d.ts +20 -0
- package/dist/ui/controller.d.ts.map +1 -0
- package/dist/ui/conversation-chrome.d.ts +15 -0
- package/dist/ui/conversation-chrome.d.ts.map +1 -0
- package/dist/ui/conversation-chrome.js +10 -0
- package/dist/ui/conversation-chrome.js.map +7 -0
- package/dist/ui/conversation-native-reader.d.ts +106 -0
- package/dist/ui/conversation-native-reader.d.ts.map +1 -0
- package/dist/ui/conversation-native-reader.js +784 -0
- package/dist/ui/conversation-native-reader.js.map +7 -0
- package/dist/ui/conversation-queue-store.d.ts +12 -0
- package/dist/ui/conversation-queue-store.d.ts.map +1 -0
- package/dist/ui/conversation-queue.d.ts +242 -0
- package/dist/ui/conversation-queue.d.ts.map +1 -0
- package/dist/ui/conversation-render.d.ts +45 -0
- package/dist/ui/conversation-render.d.ts.map +1 -0
- package/dist/ui/conversation-shortcut.d.ts +3 -0
- package/dist/ui/conversation-shortcut.d.ts.map +1 -0
- package/dist/ui/conversation-targets.d.ts +7 -0
- package/dist/ui/conversation-targets.d.ts.map +1 -0
- package/dist/ui/conversation-targets.js +12 -0
- package/dist/ui/conversation-targets.js.map +7 -0
- package/dist/ui/conversation-transcript.d.ts +25 -0
- package/dist/ui/conversation-transcript.d.ts.map +1 -0
- package/dist/ui/conversation.d.ts +170 -0
- package/dist/ui/conversation.d.ts.map +1 -0
- package/dist/ui/conversation.js +1868 -0
- package/dist/ui/conversation.js.map +7 -0
- package/dist/ui/core-tool-render.d.ts +20 -0
- package/dist/ui/core-tool-render.d.ts.map +1 -0
- package/dist/ui/dashboard-detail.d.ts +68 -0
- package/dist/ui/dashboard-detail.d.ts.map +1 -0
- package/dist/ui/dashboard-fabric-graph.d.ts +50 -0
- package/dist/ui/dashboard-fabric-graph.d.ts.map +1 -0
- package/dist/ui/dashboard-model.d.ts +111 -0
- package/dist/ui/dashboard-model.d.ts.map +1 -0
- package/dist/ui/dashboard-presentation.d.ts +6 -0
- package/dist/ui/dashboard-presentation.d.ts.map +1 -0
- package/dist/ui/dashboard.d.ts +188 -0
- package/dist/ui/dashboard.d.ts.map +1 -0
- package/dist/ui/dashboard.js +4604 -0
- package/dist/ui/dashboard.js.map +7 -0
- package/dist/ui/diff-background.d.ts +12 -0
- package/dist/ui/diff-background.d.ts.map +1 -0
- package/dist/ui/dynamic-border.d.ts +8 -0
- package/dist/ui/dynamic-border.d.ts.map +1 -0
- package/dist/ui/escape-halt.d.ts +11 -0
- package/dist/ui/escape-halt.d.ts.map +1 -0
- package/dist/ui/fabric-actor-delivery-selector.d.ts +17 -0
- package/dist/ui/fabric-actor-delivery-selector.d.ts.map +1 -0
- package/dist/ui/fabric-actor-tool-selector.d.ts +22 -0
- package/dist/ui/fabric-actor-tool-selector.d.ts.map +1 -0
- package/dist/ui/fabric-code-parser.d.ts +8 -0
- package/dist/ui/fabric-code-parser.d.ts.map +1 -0
- package/dist/ui/fabric-host-event-selector.d.ts +29 -0
- package/dist/ui/fabric-host-event-selector.d.ts.map +1 -0
- package/dist/ui/fabric-model-selector.d.ts +64 -0
- package/dist/ui/fabric-model-selector.d.ts.map +1 -0
- package/dist/ui/fabric-render.d.ts +113 -0
- package/dist/ui/fabric-render.d.ts.map +1 -0
- package/dist/ui/fabric-thinking-selector.d.ts +26 -0
- package/dist/ui/fabric-thinking-selector.d.ts.map +1 -0
- package/dist/ui/fabric-title-hint.d.ts +2 -0
- package/dist/ui/fabric-title-hint.d.ts.map +1 -0
- package/dist/ui/format.d.ts +9 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/highlight.d.ts +69 -0
- package/dist/ui/highlight.d.ts.map +1 -0
- package/dist/ui/model-picker.d.ts +46 -0
- package/dist/ui/model-picker.d.ts.map +1 -0
- package/dist/ui/model-picker.js +17 -0
- package/dist/ui/model-picker.js.map +7 -0
- package/dist/ui/preview-lines.d.ts +16 -0
- package/dist/ui/preview-lines.d.ts.map +1 -0
- package/dist/ui/row-balance.d.ts +29 -0
- package/dist/ui/row-balance.d.ts.map +1 -0
- package/dist/ui/settings.d.ts +57 -0
- package/dist/ui/settings.d.ts.map +1 -0
- package/dist/ui/settings.js +1908 -0
- package/dist/ui/settings.js.map +7 -0
- package/dist/ui/shiki-language.d.ts +7 -0
- package/dist/ui/shiki-language.d.ts.map +1 -0
- package/dist/ui/shiki-theme.d.ts +7 -0
- package/dist/ui/shiki-theme.d.ts.map +1 -0
- package/dist/ui/snapshot.d.ts +7 -0
- package/dist/ui/snapshot.d.ts.map +1 -0
- package/dist/ui/spinner.d.ts +6 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/state-file-preview.d.ts +13 -0
- package/dist/ui/state-file-preview.d.ts.map +1 -0
- package/dist/ui/structured.d.ts +9 -0
- package/dist/ui/structured.d.ts.map +1 -0
- package/dist/ui/symbol-theme.d.ts +3 -0
- package/dist/ui/symbol-theme.d.ts.map +1 -0
- package/dist/ui/tool-call-timing.d.ts +2 -0
- package/dist/ui/tool-call-timing.d.ts.map +1 -0
- package/dist/ui/tool-display.d.ts +8 -0
- package/dist/ui/tool-display.d.ts.map +1 -0
- package/dist/ui/topology.d.ts +162 -0
- package/dist/ui/topology.d.ts.map +1 -0
- package/dist/ui/transcript-parser.d.ts +18 -0
- package/dist/ui/transcript-parser.d.ts.map +1 -0
- package/dist/ui/transcript-reader.d.ts +10 -0
- package/dist/ui/transcript-reader.d.ts.map +1 -0
- package/dist/ui/transcript-sanitization.d.ts +14 -0
- package/dist/ui/transcript-sanitization.d.ts.map +1 -0
- package/dist/ui/transcript.d.ts +52 -0
- package/dist/ui/transcript.d.ts.map +1 -0
- package/dist/ui/types.d.ts +84 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/widget.d.ts +16 -0
- package/dist/ui/widget.d.ts.map +1 -0
- package/dist/ui/word-diff/alignment.d.ts +6 -0
- package/dist/ui/word-diff/alignment.d.ts.map +1 -0
- package/dist/ui/word-diff/change-block.d.ts +18 -0
- package/dist/ui/word-diff/change-block.d.ts.map +1 -0
- package/dist/ui/word-diff/changed-line.d.ts +14 -0
- package/dist/ui/word-diff/changed-line.d.ts.map +1 -0
- package/dist/ui/word-diff/emphasis.d.ts +9 -0
- package/dist/ui/word-diff/emphasis.d.ts.map +1 -0
- package/dist/ui/word-diff/line-emphasis.d.ts +7 -0
- package/dist/ui/word-diff/line-emphasis.d.ts.map +1 -0
- package/dist/ui/word-diff/line-matching.d.ts +10 -0
- package/dist/ui/word-diff/line-matching.d.ts.map +1 -0
- package/dist/ui/word-diff/line-similarity.d.ts +16 -0
- package/dist/ui/word-diff/line-similarity.d.ts.map +1 -0
- package/dist/ui/word-diff/normalize.d.ts +3 -0
- package/dist/ui/word-diff/normalize.d.ts.map +1 -0
- package/dist/ui/word-diff/parse.d.ts +17 -0
- package/dist/ui/word-diff/parse.d.ts.map +1 -0
- package/dist/ui/word-diff/range-refinement.d.ts +5 -0
- package/dist/ui/word-diff/range-refinement.d.ts.map +1 -0
- package/dist/ui/word-diff/ranges.d.ts +11 -0
- package/dist/ui/word-diff/ranges.d.ts.map +1 -0
- package/dist/ui/word-diff/smart-filter.d.ts +3 -0
- package/dist/ui/word-diff/smart-filter.d.ts.map +1 -0
- package/dist/ui/word-diff/sparse-line-matching.d.ts +25 -0
- package/dist/ui/word-diff/sparse-line-matching.d.ts.map +1 -0
- package/dist/ui/word-diff/text-boundaries.d.ts +11 -0
- package/dist/ui/word-diff/text-boundaries.d.ts.map +1 -0
- package/dist/ui/word-diff/token-alignment.d.ts +9 -0
- package/dist/ui/word-diff/token-alignment.d.ts.map +1 -0
- package/dist/ui/word-diff/token-text-refinement.d.ts +4 -0
- package/dist/ui/word-diff/token-text-refinement.d.ts.map +1 -0
- package/dist/ui/word-diff/tokens.d.ts +16 -0
- package/dist/ui/word-diff/tokens.d.ts.map +1 -0
- package/dist/ui/word-diff/types.d.ts +10 -0
- package/dist/ui/word-diff/types.d.ts.map +1 -0
- package/dist/util.d.ts +3 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/worker/options.d.ts +3 -0
- package/dist/worker/options.d.ts.map +1 -0
- package/dist/worker/options.js +104 -0
- package/dist/worker/options.js.map +7 -0
- package/dist/worker/run-record.d.ts +22 -0
- package/dist/worker/run-record.d.ts.map +1 -0
- package/dist/worker/run-record.js +123 -0
- package/dist/worker/run-record.js.map +7 -0
- package/dist/worker/session-export.d.ts +45 -0
- package/dist/worker/session-export.d.ts.map +1 -0
- package/dist/worker/session-export.js +91 -0
- package/dist/worker/session-export.js.map +7 -0
- package/dist/worker.d.ts +3 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +1061 -0
- package/dist/worker.js.map +7 -0
- package/docs/agents.md +564 -0
- package/docs/architecture.md +139 -0
- package/docs/audit-trace.md +116 -0
- package/docs/certification.md +134 -0
- package/docs/compaction.md +332 -0
- package/docs/component-calculus.md +191 -0
- package/docs/components.md +329 -0
- package/docs/configuration.md +478 -0
- package/docs/entropy.md +396 -0
- package/docs/interface.md +149 -0
- package/docs/memory-recall.md +614 -0
- package/docs/programmatic-compaction.md +207 -0
- package/docs/provider-component-calculus.md +378 -0
- package/docs/providers.md +109 -0
- package/docs/repairs.md +69 -0
- package/docs/residency-runtime.md +82 -0
- package/docs/schema-enforcement.md +166 -0
- package/docs/skills.md +48 -0
- package/docs/speculation.md +132 -0
- package/docs/state-layer.md +197 -0
- package/package.json +116 -0
- package/skills/fabric-advisor/SKILL.md +29 -0
- package/skills/fabric-ambient/SKILL.md +44 -0
- package/skills/fabric-ambient/references/setup.md +90 -0
- package/skills/fabric-council/SKILL.md +94 -0
- package/skills/fabric-exec/SKILL.md +123 -0
- package/skills/fabric-exec/references/agents.md +211 -0
- package/skills/fabric-exec/references/mcp.md +49 -0
- package/skills/fabric-exec/references/mesh.md +51 -0
- package/skills/fabric-fusion/SKILL.md +332 -0
- package/skills/fabric-guide/SKILL.md +28 -0
- package/skills/fabric-rlm/SKILL.md +284 -0
- package/skills/fabric-schema/SKILL.md +121 -0
- package/skills/fabric-spec/SKILL.md +42 -0
- package/skills/fabric-supervisor/SKILL.md +37 -0
- package/skills/fabric-swarm/SKILL.md +80 -0
- package/skills/fabric-workflow/SKILL.md +133 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/memory/normalize.ts"],
|
|
4
|
+
"sourcesContent": ["import fs from \"node:fs\";\nimport type { FabricExecutionOutcomeV1, FabricTraceJsonValue } from \"../audit/trace.js\";\nimport {\n readFabricBranchSummaryDetails,\n type FabricBranchFactV2,\n} from \"../compaction/branch-details.js\";\nimport { readFabricProjectionTrace } from \"../compaction/trace-events.js\";\nimport type { SessionLineage } from \"./lineage.js\";\n\nexport interface MemoryIndexPrivacyPolicy {\n indexThinking: boolean;\n indexToolOutput: boolean;\n}\n\nexport const DEFAULT_MEMORY_INDEX_PRIVACY: MemoryIndexPrivacyPolicy = {\n indexThinking: false,\n indexToolOutput: true,\n};\n\nexport interface NormalizeSessionOptions extends Partial<MemoryIndexPrivacyPolicy> {\n lineage?: SessionLineage;\n}\n\nconst privacyPolicy = (options: NormalizeSessionOptions = {}): MemoryIndexPrivacyPolicy => ({\n indexThinking: options.indexThinking ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexThinking,\n indexToolOutput: options.indexToolOutput ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexToolOutput,\n});\n\n/**\n * A typed, structure-derived projection of one session JSONL line.\n *\n * Text is truncated to `maxEntryChars` for index storage; the full untruncated\n * text remains addressable via {@link expandSession} / `memory.expand`, which\n * re-reads the source line on demand. The `index` is the dense position of the\n * entry among normalized entries within its session (0-based), so it stays\n * stable across re-parse and can address the same line on expand.\n */\nexport interface NormalizedEntry {\n sessionFile: string;\n sessionId: string;\n index: number;\n entryId: string | null;\n parentId: string | null;\n type: string;\n role: string | null;\n toolName: string | null;\n text: string;\n timestamp: number | null;\n isError: boolean;\n truncated: boolean;\n filesTouched?: string[];\n parentEntryId?: string | null;\n operationAddress?: string;\n ref?: string;\n provider?: string;\n action?: string;\n outcome?: FabricExecutionOutcomeV1;\n operation?: NormalizedFabricOperation;\n branchFact?: NormalizedFabricBranchFact;\n factAddress?: string;\n carrierEntryId?: string;\n carrierParentId?: string | null;\n carrierFromId?: string | null;\n}\n\ninterface NormalizedFabricOperation {\n address: string;\n parentEntryId: string;\n sequence?: number;\n subordinal?: string;\n tool: string;\n ref: string;\n provider?: string;\n action?: string;\n args: Record<string, FabricTraceJsonValue>;\n outcome: FabricExecutionOutcomeV1;\n error?: string;\n result?: FabricTraceJsonValue;\n resultOmitted?: boolean;\n}\n\ninterface NormalizedFabricBranchFact {\n kind: FabricBranchFactV2[\"kind\"];\n address: string;\n entryId: string;\n subordinal: string;\n carrierEntryId: string;\n carrierParentId: string | null;\n carrierFromId: string | null;\n text?: string;\n customType?: string;\n display?: boolean;\n phase?: string;\n name?: string;\n description?: string;\n ref?: string;\n provider?: string;\n action?: string;\n tool?: string;\n args?: Record<string, FabricTraceJsonValue>;\n outcome?: FabricExecutionOutcomeV1;\n error?: string;\n result?: FabricTraceJsonValue;\n}\n\nexport interface NormalizationCoverage {\n complete: boolean;\n reasons: string[];\n}\n\nexport interface SessionHeaderInfo {\n sessionId: string;\n cwd: string;\n parentSession?: string;\n}\n\nconst truncate = (text: string, max: number): { text: string; truncated: boolean } => {\n const scalarLimit = Math.max(0, Math.floor(max));\n if (scalarLimit >= text.length) return { text, truncated: false };\n let scalarCount = 0;\n let utf16End = 0;\n for (const scalar of text) {\n if (scalarCount >= scalarLimit) return { text: text.slice(0, utf16End), truncated: true };\n utf16End += scalar.length;\n scalarCount += 1;\n }\n return { text, truncated: false };\n};\n\nconst asString = (value: unknown): string =>\n typeof value === \"string\" ? value : value === undefined || value === null ? \"\" : String(value);\n\nconst joinTextParts = (parts: unknown[]): string => {\n const out: string[] = [];\n for (const part of parts) {\n if (part === null || typeof part !== \"object\") continue;\n const record = part as Record<string, unknown>;\n if (record.type === \"text\" && typeof record.text === \"string\") {\n out.push(record.text);\n }\n }\n return out.join(\"\\n\");\n};\n\nconst summarizeArgs = (args: unknown, max = 400): string => {\n let serialized: string;\n try {\n serialized = JSON.stringify(args) ?? \"\";\n } catch {\n serialized = String(args);\n }\n const bounded = truncate(serialized, max);\n return bounded.truncated ? `${bounded.text}\u2026` : bounded.text;\n};\n\nconst collectPathArguments = (value: unknown, key: string | null, paths: string[]): void => {\n if (typeof value === \"string\") {\n if (key !== null && /(?:file|path)s?$/i.test(key) && value.trim()) paths.push(value.trim());\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) collectPathArguments(item, key, paths);\n return;\n }\n if (value === null || typeof value !== \"object\") return;\n for (const [childKey, childValue] of Object.entries(value as Record<string, unknown>)) {\n collectPathArguments(childValue, childKey, paths);\n }\n};\n\nconst extractFilesTouched = (raw: Record<string, unknown>): string[] => {\n if (asString(raw.type) !== \"message\") return [];\n const message = raw.message as Record<string, unknown> | undefined;\n if (!message || asString(message.role) !== \"assistant\" || !Array.isArray(message.content)) return [];\n const paths: string[] = [];\n for (const block of message.content) {\n if (block === null || typeof block !== \"object\") continue;\n const record = block as Record<string, unknown>;\n if (record.type === \"toolCall\") collectPathArguments(record.arguments, null, paths);\n }\n return [...new Set(paths)];\n};\n\nconst TRACE_OPERATION_MAX_BYTES = 96 * 1024;\nconst SESSION_HEADER_SCAN_LINES = 8;\nconst OMP_FILE_REFS = new Set([\"omp.read\", \"omp.grep\", \"omp.find\", \"omp.ls\", \"omp.edit\", \"omp.write\"]);\n\nconst traceFilesTouched = (ref: string, tool: string, args: Record<string, FabricTraceJsonValue>): string[] => {\n if (!OMP_FILE_REFS.has(ref) || ref !== `omp.${tool}`) return [];\n const path = args.path ?? args.file ?? args.dir;\n return typeof path === \"string\" && path.trim() ? [path.trim()] : [];\n};\n\nconst boundedTraceOperation = (\n parentEntryId: string,\n operation: NonNullable<ReturnType<typeof readFabricProjectionTrace>>[\"operations\"][number],\n includeToolOutput: boolean,\n): NormalizedFabricOperation => {\n const address = `${parentEntryId}/${operation.sequence}`;\n const normalized: NormalizedFabricOperation = {\n address,\n parentEntryId,\n sequence: operation.sequence,\n tool: operation.tool,\n ref: operation.ref,\n ...(operation.provider ? { provider: operation.provider } : {}),\n ...(operation.action ? { action: operation.action } : {}),\n args: operation.args,\n outcome: operation.outcome,\n ...(operation.error !== undefined ? { error: operation.error } : {}),\n ...(includeToolOutput && operation.result !== undefined ? { result: operation.result } : {}),\n ...(!includeToolOutput && operation.result !== undefined ? { resultOmitted: true } : {}),\n };\n if (Buffer.byteLength(JSON.stringify(normalized), \"utf8\") > TRACE_OPERATION_MAX_BYTES && normalized.result !== undefined) {\n delete normalized.result;\n normalized.resultOmitted = true;\n }\n return normalized;\n};\n\nconst traceChildren = (\n raw: Record<string, unknown>,\n base: Omit<NormalizedEntry, \"index\">,\n policy: MemoryIndexPrivacyPolicy,\n): Array<Omit<NormalizedEntry, \"index\">> => {\n if (base.type !== \"message\" || base.role !== \"toolResult\" || base.toolName !== \"fabric_exec\") return [];\n const message = raw.message;\n if (!message || typeof message !== \"object\" || Array.isArray(message)) return [];\n const nested = readFabricProjectionTrace((message as Record<string, unknown>).details);\n if (!nested || nested.source !== \"trace\" || base.entryId === null) return [];\n return nested.operations.map((operation) => {\n const normalized = boundedTraceOperation(base.entryId!, operation, policy.indexToolOutput);\n const filesTouched = traceFilesTouched(normalized.ref, normalized.tool, normalized.args);\n const text = `Fabric operation ${normalized.ref}\\n${JSON.stringify(normalized)}`;\n return {\n sessionFile: base.sessionFile,\n sessionId: base.sessionId,\n entryId: normalized.address,\n parentId: base.parentId,\n type: \"fabric_operation\",\n role: \"fabricOperation\",\n toolName: normalized.tool,\n text,\n timestamp: base.timestamp,\n isError: normalized.outcome !== \"succeeded\",\n truncated: false,\n parentEntryId: base.entryId,\n operationAddress: normalized.address,\n ref: normalized.ref,\n ...(normalized.provider ? { provider: normalized.provider } : {}),\n ...(normalized.action ? { action: normalized.action } : {}),\n outcome: normalized.outcome,\n operation: normalized,\n ...(filesTouched.length > 0 ? { filesTouched } : {}),\n };\n });\n};\n\nconst branchDetails = (raw: Record<string, unknown>) => {\n const type = asString(raw.type);\n const message = raw.message;\n const messageRecord = message && typeof message === \"object\" && !Array.isArray(message)\n ? message as Record<string, unknown>\n : undefined;\n if (type !== \"branch_summary\" && !(type === \"message\" && asString(messageRecord?.role) === \"branchSummary\")) {\n return undefined;\n }\n return readFabricBranchSummaryDetails(raw.details)\n ?? readFabricBranchSummaryDetails(messageRecord?.details);\n};\n\nconst branchFilesTouched = (fact: Extract<FabricBranchFactV2, { kind: \"operation\" }>): string[] => {\n const paths: string[] = [];\n collectPathArguments(fact.args, null, paths);\n return [...new Set(paths)];\n};\n\nconst branchFactChild = (\n fact: FabricBranchFactV2,\n base: Omit<NormalizedEntry, \"index\">,\n carrierFromId: string | null,\n policy: MemoryIndexPrivacyPolicy,\n): Omit<NormalizedEntry, \"index\"> => {\n const carrierEntryId = base.entryId!;\n const carrierParentId = base.parentId;\n const common: Omit<NormalizedEntry, \"index\" | \"text\" | \"role\" | \"toolName\" | \"isError\"> = {\n sessionFile: base.sessionFile,\n sessionId: base.sessionId,\n entryId: fact.address,\n parentId: base.parentId,\n type: \"fabric_branch_fact\",\n timestamp: base.timestamp,\n truncated: false,\n parentEntryId: carrierEntryId,\n factAddress: fact.address,\n carrierEntryId,\n carrierParentId,\n carrierFromId,\n };\n const normalizedFact: NormalizedFabricBranchFact = {\n kind: fact.kind,\n address: fact.address,\n entryId: fact.entryId,\n subordinal: fact.subordinal,\n carrierEntryId,\n carrierParentId,\n carrierFromId,\n ...(fact.kind === \"user\" ? { text: fact.text } : {}),\n ...(fact.kind === \"customMessage\" ? {\n text: fact.text,\n customType: fact.customType,\n display: fact.display,\n } : {}),\n ...(fact.kind === \"phase\" ? { phase: fact.phase } : {}),\n ...(fact.kind === \"fabricRun\" ? {\n name: fact.name,\n ...(fact.description !== undefined ? { description: fact.description } : {}),\n outcome: fact.outcome,\n } : {}),\n ...(fact.kind === \"operation\" ? {\n ref: fact.ref,\n ...(fact.provider ? { provider: fact.provider } : {}),\n ...(fact.action ? { action: fact.action } : {}),\n tool: fact.tool,\n args: fact.args,\n outcome: fact.outcome,\n ...(fact.error !== undefined ? { error: fact.error } : {}),\n ...(policy.indexToolOutput && fact.result !== undefined ? { result: fact.result } : {}),\n } : {}),\n };\n if (fact.kind === \"user\") {\n return {\n ...common,\n role: \"branchUser\",\n toolName: null,\n text: fact.text,\n isError: false,\n branchFact: normalizedFact,\n };\n }\n if (fact.kind === \"customMessage\") {\n return {\n ...common,\n role: \"branchCustomMessage\",\n toolName: null,\n text: fact.customType ? `[${fact.customType}] ${fact.text}` : fact.text,\n isError: false,\n branchFact: normalizedFact,\n };\n }\n if (fact.kind === \"phase\") {\n return {\n ...common,\n role: \"fabricPhase\",\n toolName: null,\n text: `Fabric phase ${fact.phase}`,\n isError: false,\n branchFact: normalizedFact,\n };\n }\n if (fact.kind === \"fabricRun\") {\n const description = fact.description ? ` \u2014 ${fact.description}` : \"\";\n return {\n ...common,\n role: \"fabricRun\",\n toolName: \"fabric_exec\",\n text: `Fabric run ${fact.name}${description} \u2192 ${fact.outcome}`,\n isError: fact.outcome !== \"succeeded\",\n operationAddress: fact.address,\n ref: \"fabric_exec\",\n outcome: fact.outcome,\n branchFact: normalizedFact,\n };\n }\n const operation: NormalizedFabricOperation = {\n address: fact.address,\n parentEntryId: fact.entryId,\n subordinal: fact.subordinal,\n tool: fact.tool,\n ref: fact.ref,\n ...(fact.provider ? { provider: fact.provider } : {}),\n ...(fact.action ? { action: fact.action } : {}),\n args: fact.args,\n outcome: fact.outcome,\n ...(fact.error !== undefined ? { error: fact.error } : {}),\n ...(policy.indexToolOutput && fact.result !== undefined ? { result: fact.result } : {}),\n ...(!policy.indexToolOutput && fact.result !== undefined ? { resultOmitted: true } : {}),\n };\n if (Buffer.byteLength(JSON.stringify(operation), \"utf8\") > TRACE_OPERATION_MAX_BYTES && operation.result !== undefined) {\n delete operation.result;\n operation.resultOmitted = true;\n }\n const filesTouched = branchFilesTouched(fact);\n return {\n ...common,\n role: \"fabricOperation\",\n toolName: fact.tool,\n text: `Fabric branch operation ${fact.ref}\\n${JSON.stringify(operation)}`,\n isError: fact.outcome !== \"succeeded\",\n operationAddress: fact.address,\n ref: fact.ref,\n ...(fact.provider ? { provider: fact.provider } : {}),\n ...(fact.action ? { action: fact.action } : {}),\n outcome: fact.outcome,\n operation,\n branchFact: normalizedFact,\n ...(filesTouched.length > 0 ? { filesTouched } : {}),\n };\n};\n\n/**\n * Extract searchable text from a parsed JSONL entry, structurally \u2014 from the\n * typed message content arrays, tool-call name + args, tool-result content,\n * and bashExecution command + output. No regex over prose lives here.\n */\nexport const extractFullText = (\n raw: Record<string, unknown>,\n options: NormalizeSessionOptions = {},\n): string => {\n const policy = privacyPolicy(options);\n const type = asString(raw.type);\n if (type === \"message\") {\n const message = raw.message as Record<string, unknown> | undefined;\n if (!message || typeof message !== \"object\") return \"\";\n const role = asString(message.role);\n const content = message.content;\n if (role === \"user\") {\n if (typeof content === \"string\") return content;\n if (Array.isArray(content)) return joinTextParts(content);\n return \"\";\n }\n if (role === \"assistant\") {\n const parts: string[] = [];\n if (Array.isArray(content)) {\n for (const block of content) {\n if (block === null || typeof block !== \"object\") continue;\n const record = block as Record<string, unknown>;\n if (record.type === \"text\" && typeof record.text === \"string\") parts.push(record.text);\n else if (\n policy.indexThinking &&\n record.type === \"thinking\" &&\n typeof record.thinking === \"string\"\n ) {\n parts.push(record.thinking);\n } else if (record.type === \"toolCall\") {\n const name = asString(record.name);\n parts.push(`Tool: ${name}(${summarizeArgs(record.arguments)})`);\n }\n }\n }\n const errorMessage = asString(message.errorMessage);\n if (errorMessage) parts.push(`Error: ${errorMessage}`);\n return parts.join(\"\\n\");\n }\n if (role === \"toolResult\") {\n const toolName = asString(message.toolName);\n let body = \"\";\n if (Array.isArray(message.content)) body = joinTextParts(message.content);\n else if (typeof message.content === \"string\") body = message.content;\n const errorSuffix = message.isError === true ? \" [error]\" : \"\";\n const prefix = toolName ? `toolResult(${toolName})${errorSuffix}` : `toolResult${errorSuffix}`;\n return policy.indexToolOutput && body ? `${prefix}: ${body}` : prefix;\n }\n if (role === \"bashExecution\") {\n const command = asString(message.command);\n const output = asString(message.output);\n const exit = message.exitCode;\n const exitSuffix = typeof exit === \"number\" ? ` [exit ${exit}]` : \"\";\n return policy.indexToolOutput && output\n ? `bash$ ${command}${exitSuffix}\\n${output}`\n : `bash$ ${command}${exitSuffix}`;\n }\n if (role === \"custom\") {\n const customType = asString(message.customType);\n let body = \"\";\n if (typeof message.content === \"string\") body = message.content;\n else if (Array.isArray(message.content)) body = joinTextParts(message.content);\n return customType ? `[${customType}] ${body}` : body;\n }\n if (role === \"compactionSummary\") return `compaction: ${asString(message.summary)}`;\n if (role === \"branchSummary\") return \"\";\n return \"\";\n }\n if (type === \"compaction\") return `compaction: ${asString(raw.summary)}`;\n if (type === \"branch_summary\") return \"\";\n if (type === \"custom_message\") {\n let body = \"\";\n if (typeof raw.content === \"string\") body = raw.content;\n else if (Array.isArray(raw.content)) body = joinTextParts(raw.content);\n const customType = asString(raw.customType);\n return customType ? `[${customType}] ${body}` : body;\n }\n return \"\";\n};\n\nconst entryRoleAndTool = (\n raw: Record<string, unknown>,\n): { role: string | null; toolName: string | null; isError: boolean } => {\n const type = asString(raw.type);\n if (type === \"message\") {\n const message = raw.message as Record<string, unknown> | undefined;\n if (!message || typeof message !== \"object\") return { role: null, toolName: null, isError: false };\n const role = asString(message.role) || null;\n let toolName: string | null = null;\n if (role === \"toolResult\") toolName = asString(message.toolName) || null;\n else if (role === \"bashExecution\") toolName = \"bash\";\n else if (role === \"assistant\" && Array.isArray(message.content)) {\n for (const block of message.content) {\n if (block === null || typeof block !== \"object\") continue;\n const record = block as Record<string, unknown>;\n if (record.type === \"toolCall\" && typeof record.name === \"string\") {\n toolName = record.name;\n break;\n }\n }\n }\n const isError = Boolean(message.isError);\n return { role, toolName, isError };\n }\n if (type === \"compaction\") return { role: \"compaction\", toolName: null, isError: false };\n if (type === \"branch_summary\") return { role: \"branchSummary\", toolName: null, isError: false };\n if (type === \"custom_message\") return { role: \"custom\", toolName: null, isError: false };\n return { role: null, toolName: null, isError: false };\n};\n\nconst parseTimestamp = (raw: unknown): number | null => {\n if (typeof raw === \"number\" && Number.isFinite(raw)) return raw;\n if (typeof raw === \"string\") {\n const parsed = Date.parse(raw);\n return Number.isNaN(parsed) ? null : parsed;\n }\n if (raw && typeof raw === \"object\") {\n const record = raw as Record<string, unknown>;\n const entryTimestamp = parseTimestamp(record.timestamp);\n if (entryTimestamp !== null) return entryTimestamp;\n const message = record.message as Record<string, unknown> | undefined;\n if (message) return parseTimestamp(message.timestamp);\n }\n return null;\n};\n\n/**\n * Parse a session JSONL file into typed {@link NormalizedEntry} records.\n *\n * Only entries that carry searchable text are emitted (message, compaction,\n * branch_summary, custom_message); structural-only entries (model_change,\n * thinking_level_change, label, custom, session_info) are skipped, so `index`\n * counts only content-bearing lines. The session header (line 0) is returned\n * separately via {@link readSessionHeader} when needed.\n */\nexport const normalizeSession = (\n sessionFile: string,\n maxEntryChars: number,\n options: NormalizeSessionOptions = {},\n): { entries: NormalizedEntry[]; header: SessionHeaderInfo | null; indexCoverage: NormalizationCoverage } => {\n let content: string;\n try {\n content = fs.readFileSync(sessionFile, \"utf8\");\n } catch {\n return { entries: [], header: null, indexCoverage: { complete: false, reasons: [\"source_unavailable\"] } };\n }\n const lines = content.split(\"\\n\");\n let header: SessionHeaderInfo | null = null;\n const entries: NormalizedEntry[] = [];\n const reasons = new Set<string>();\n const seenBranchFactAddresses = new Set<string>();\n const policy = privacyPolicy(options);\n for (const reason of options.lineage?.coverageReasons ?? []) reasons.add(reason);\n let index = 0;\n let rawOrdinal = 0;\n let sessionId = \"\";\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n let raw: Record<string, unknown>;\n try {\n raw = JSON.parse(trimmed) as Record<string, unknown>;\n } catch {\n continue;\n }\n if (asString(raw.type) === \"session\") {\n sessionId = asString(raw.id);\n header = {\n sessionId,\n cwd: asString(raw.cwd),\n ...(typeof raw.parentSession === \"string\" ? { parentSession: raw.parentSession } : {}),\n };\n continue;\n }\n const type = asString(raw.type);\n const ordinal = rawOrdinal;\n rawOrdinal += 1;\n if (options.lineage && options.lineage.entryOrdinals !== null && !options.lineage.entryOrdinals.has(ordinal)) {\n continue;\n }\n if (\n type !== \"message\" &&\n type !== \"compaction\" &&\n type !== \"branch_summary\" &&\n type !== \"custom_message\"\n ) {\n continue;\n }\n const { role, toolName, isError } = entryRoleAndTool(raw);\n const filesTouched = extractFilesTouched(raw);\n const fullText = extractFullText(raw, policy);\n const { text, truncated } = truncate(fullText, maxEntryChars);\n if (!text.trim() && role === null) continue;\n const entryId = typeof raw.id === \"string\" ? raw.id : null;\n const parentId = typeof raw.parentId === \"string\" ? raw.parentId : null;\n const base: Omit<NormalizedEntry, \"index\"> = {\n sessionFile,\n sessionId: sessionId || \"\",\n entryId,\n parentId,\n type,\n role,\n toolName,\n text,\n timestamp: parseTimestamp(raw),\n isError,\n truncated,\n ...(filesTouched.length > 0 ? { filesTouched } : {}),\n };\n entries.push({ ...base, index });\n if (truncated) reasons.add(\"max_entry_chars\");\n index += 1;\n for (const child of traceChildren(raw, base, policy)) {\n const bounded = truncate(child.text, maxEntryChars);\n entries.push({ ...child, index, text: bounded.text, truncated: bounded.truncated });\n if (bounded.truncated) reasons.add(\"max_entry_chars\");\n index += 1;\n }\n const details = branchDetails(raw);\n if (details && base.entryId !== null) {\n const localAddresses = new Set<string>();\n const duplicateAddress = details.facts.find((fact) => {\n if (localAddresses.has(fact.address)) return true;\n localAddresses.add(fact.address);\n return false;\n });\n if (duplicateAddress) {\n reasons.add(\"duplicate_branch_fact_address\");\n if (duplicateAddress.kind === \"operation\") reasons.add(\"duplicate_operation_address\");\n } else {\n const message = raw.message;\n const messageRecord = message && typeof message === \"object\" && !Array.isArray(message)\n ? message as Record<string, unknown>\n : undefined;\n const carrierFromId = typeof raw.fromId === \"string\"\n ? raw.fromId\n : typeof messageRecord?.fromId === \"string\" ? messageRecord.fromId : null;\n for (const fact of details.facts) {\n if (seenBranchFactAddresses.has(fact.address)) continue;\n seenBranchFactAddresses.add(fact.address);\n const child = branchFactChild(fact, base, carrierFromId, policy);\n const bounded = truncate(child.text, maxEntryChars);\n entries.push({ ...child, index, text: bounded.text, truncated: bounded.truncated });\n if (bounded.truncated) reasons.add(\"max_entry_chars\");\n index += 1;\n }\n }\n }\n }\n\n const entryIds = new Set<string>();\n const operationAddresses = new Set<string>();\n for (const entry of entries) {\n if (entry.entryId !== null) {\n if (entryIds.has(entry.entryId)) reasons.add(\"duplicate_entry_id\");\n entryIds.add(entry.entryId);\n }\n if (entry.operationAddress !== undefined) {\n if (operationAddresses.has(entry.operationAddress)) reasons.add(\"duplicate_operation_address\");\n operationAddresses.add(entry.operationAddress);\n }\n }\n const sortedReasons = [...reasons].sort();\n return {\n entries,\n header,\n indexCoverage: { complete: sortedReasons.length === 0, reasons: sortedReasons },\n };\n};\n\n/** Read the session header record, which OMP writes after its line-0 title slot. */\nexport const readSessionHeader = (sessionFile: string): SessionHeaderInfo | null => {\n try {\n const fd = fs.openSync(sessionFile, \"r\");\n const buffer = Buffer.alloc(65_536);\n const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);\n fs.closeSync(fd);\n const slice = buffer.subarray(0, bytesRead).toString(\"utf8\");\n const lines = slice.split(\"\\n\");\n const complete = slice.endsWith(\"\\n\") ? lines.length : lines.length - 1;\n for (let index = 0; index < Math.min(complete, SESSION_HEADER_SCAN_LINES); index++) {\n const line = lines[index]?.trim();\n if (!line) continue;\n let raw: Record<string, unknown>;\n try {\n raw = JSON.parse(line) as Record<string, unknown>;\n } catch {\n continue;\n }\n if (asString(raw.type) !== \"session\") continue;\n return {\n sessionId: asString(raw.id),\n cwd: asString(raw.cwd),\n ...(typeof raw.parentSession === \"string\" ? { parentSession: raw.parentSession } : {}),\n };\n }\n return null;\n } catch {\n return null;\n }\n};\n\n/** Re-read a single session line and return its full, untruncated text. */\nexport const expandSessionEntry = (\n sessionFile: string,\n index: number,\n options: NormalizeSessionOptions = {},\n): string | null => {\n const { entries } = normalizeSession(sessionFile, Number.MAX_SAFE_INTEGER, options);\n return entries.find((entry) => entry.index === index)?.text ?? null;\n};\n\nexport interface ExpandSessionSelection {\n indices?: number[];\n entryIds?: string[];\n operationAddresses?: string[];\n entryRange?: { first: number; last: number };\n}\n\nexport interface ExpandedSessionEntry {\n index: number;\n entryId: string | null;\n parentId: string | null;\n type: string;\n role: string | null;\n timestamp: number | null;\n isError: boolean;\n text: string;\n parentEntryId?: string | null;\n operationAddress?: string;\n toolName?: string | null;\n ref?: string;\n provider?: string;\n action?: string;\n outcome?: FabricExecutionOutcomeV1;\n filesTouched?: string[];\n operation?: NormalizedFabricOperation;\n branchFact?: NormalizedFabricBranchFact;\n factAddress?: string;\n carrierEntryId?: string;\n carrierParentId?: string | null;\n carrierFromId?: string | null;\n}\n\nconst toExpandedSessionEntry = (entry: NormalizedEntry): ExpandedSessionEntry => ({\n index: entry.index,\n entryId: entry.entryId,\n parentId: entry.parentId,\n type: entry.type,\n role: entry.role,\n timestamp: entry.timestamp,\n isError: entry.isError,\n text: entry.text,\n ...(entry.parentEntryId !== undefined ? { parentEntryId: entry.parentEntryId } : {}),\n ...(entry.operationAddress ? { operationAddress: entry.operationAddress } : {}),\n ...(entry.toolName ? { toolName: entry.toolName } : {}),\n ...(entry.ref ? { ref: entry.ref } : {}),\n ...(entry.provider ? { provider: entry.provider } : {}),\n ...(entry.action ? { action: entry.action } : {}),\n ...(entry.outcome ? { outcome: entry.outcome } : {}),\n ...(entry.filesTouched ? { filesTouched: entry.filesTouched } : {}),\n ...(entry.operation ? { operation: entry.operation } : {}),\n ...(entry.branchFact ? { branchFact: entry.branchFact } : {}),\n ...(entry.factAddress ? { factAddress: entry.factAddress } : {}),\n ...(entry.carrierEntryId ? { carrierEntryId: entry.carrierEntryId } : {}),\n ...(entry.carrierParentId !== undefined ? { carrierParentId: entry.carrierParentId } : {}),\n ...(entry.carrierFromId !== undefined ? { carrierFromId: entry.carrierFromId } : {}),\n});\n\n/** Resolve index, stable entry-id, or inclusive range addresses from one normalized snapshot. */\nconst expandNormalizedEntries = (\n entries: readonly NormalizedEntry[],\n selection: ExpandSessionSelection,\n): ExpandedSessionEntry[] => {\n const indices = new Set(selection.indices ?? []);\n const entryIds = new Set(selection.entryIds ?? []);\n const operationAddresses = new Set(selection.operationAddresses ?? []);\n const range = selection.entryRange;\n return entries\n .filter((entry) =>\n indices.has(entry.index) ||\n (entry.entryId !== null && entryIds.has(entry.entryId)) ||\n (entry.operationAddress !== undefined && operationAddresses.has(entry.operationAddress)) ||\n (range !== undefined && entry.index >= range.first && entry.index <= range.last),\n )\n .map(toExpandedSessionEntry);\n};\n\n/** Re-read source once and resolve index, stable entry-id, or inclusive range addresses. */\nexport const expandSessionEntries = (\n sessionFile: string,\n selection: ExpandSessionSelection,\n options: NormalizeSessionOptions = {},\n): ExpandedSessionEntry[] => {\n const { entries } = normalizeSession(sessionFile, Number.MAX_SAFE_INTEGER, options);\n return expandNormalizedEntries(entries, selection);\n};\n\ninterface ExpansionAddressError {\n code: \"ambiguous_address\" | \"address_not_found\";\n message: string;\n addressType: \"entry_id\" | \"operation_address\";\n address: string;\n matches: number;\n}\n\nexport type ExpandSessionResult =\n | { expanded: ExpandedSessionEntry[] }\n | { expanded: []; error: ExpansionAddressError };\n\n/** Resolve every requested stable address from a source or snapshot, refusing missing or ambiguous identities. */\nexport const expandSessionEntriesChecked = (\n sessionFileOrEntries: string | readonly NormalizedEntry[],\n selection: ExpandSessionSelection,\n options: NormalizeSessionOptions = {},\n): ExpandSessionResult => {\n const entries = typeof sessionFileOrEntries === \"string\"\n ? normalizeSession(sessionFileOrEntries, Number.MAX_SAFE_INTEGER, options).entries\n : sessionFileOrEntries;\n const requestedEntryIds = new Set(selection.entryIds ?? []);\n const requestedOperationAddresses = new Set(selection.operationAddresses ?? []);\n const entryIdCounts = new Map([...requestedEntryIds].map((address) => [address, 0]));\n const operationAddressCounts = new Map(\n [...requestedOperationAddresses].map((address) => [address, 0]),\n );\n for (const entry of entries) {\n if (entry.entryId !== null && requestedEntryIds.has(entry.entryId)) {\n entryIdCounts.set(entry.entryId, (entryIdCounts.get(entry.entryId) ?? 0) + 1);\n }\n if (\n entry.operationAddress !== undefined &&\n requestedOperationAddresses.has(entry.operationAddress)\n ) {\n operationAddressCounts.set(\n entry.operationAddress,\n (operationAddressCounts.get(entry.operationAddress) ?? 0) + 1,\n );\n }\n }\n for (const address of requestedEntryIds) {\n const matches = entryIdCounts.get(address) ?? 0;\n if (matches !== 1) {\n return {\n expanded: [],\n error: {\n code: matches === 0 ? \"address_not_found\" : \"ambiguous_address\",\n message: matches === 0\n ? `Entry address ${JSON.stringify(address)} was not found.`\n : `Entry address ${JSON.stringify(address)} resolves to ${matches} records.`,\n addressType: \"entry_id\",\n address,\n matches,\n },\n };\n }\n }\n for (const address of requestedOperationAddresses) {\n const matches = operationAddressCounts.get(address) ?? 0;\n if (matches !== 1) {\n return {\n expanded: [],\n error: {\n code: matches === 0 ? \"address_not_found\" : \"ambiguous_address\",\n message: matches === 0\n ? `Operation address ${JSON.stringify(address)} was not found.`\n : `Operation address ${JSON.stringify(address)} resolves to ${matches} records.`,\n addressType: \"operation_address\",\n address,\n matches,\n },\n };\n }\n }\n return { expanded: expandNormalizedEntries(entries, selection) };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// src/core/omp-bash-error.ts
|
|
2
|
+
var OMP_BASH_EXIT_MARKER = Symbol.for("omp-fabric.bash-exit");
|
|
3
|
+
var OmpBashExitError = class extends Error {
|
|
4
|
+
constructor(message, exitCode, output) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.exitCode = exitCode;
|
|
7
|
+
this.output = output;
|
|
8
|
+
}
|
|
9
|
+
[OMP_BASH_EXIT_MARKER] = true;
|
|
10
|
+
ompBashExit = true;
|
|
11
|
+
};
|
|
12
|
+
var stripOmpBashTiming = (text) => text.replace(/(\r?\n)\r?\n\r?\nWall time:? [^\r\n]+\r?\n\r?\n/g, "$1\n").replace(/(\r?\n)\r?\n\r?\nWall time:? [^\r\n]+$/g, "$1").replace(/(\r?\n)\r?\nWall time:? [^\r\n]+\r?\n\r?\n/g, "$1\n").replace(/(\r?\n)\r?\nWall time:? [^\r\n]+$/g, "$1");
|
|
13
|
+
function classifyOmpBashError(error) {
|
|
14
|
+
if (!(error instanceof Error)) return error;
|
|
15
|
+
const match = /(?:^|\n\n)Command exited with code (\d+)$/.exec(error.message);
|
|
16
|
+
if (!match) return error;
|
|
17
|
+
const exitCode = Number(match[1]);
|
|
18
|
+
if (!Number.isSafeInteger(exitCode) || exitCode <= 0) return error;
|
|
19
|
+
return new OmpBashExitError(
|
|
20
|
+
error.message,
|
|
21
|
+
exitCode,
|
|
22
|
+
stripOmpBashTiming(error.message.slice(0, match.index))
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
function bashResultOutput(original, text) {
|
|
26
|
+
const hadTiming = text.includes("Wall time:");
|
|
27
|
+
const processed = stripOmpBashTiming(text);
|
|
28
|
+
const message = stripOmpBashTiming(original.message);
|
|
29
|
+
const index = processed.indexOf(message);
|
|
30
|
+
if (index >= 0) {
|
|
31
|
+
return processed.slice(0, index + original.output.length) + processed.slice(index + message.length);
|
|
32
|
+
}
|
|
33
|
+
const marker = new RegExp(`(?:^|\\r?\\n\\r?\\n)Command exited with code ${original.exitCode}(?=\\r?\\n|$)`, "g");
|
|
34
|
+
const match = marker.exec(processed);
|
|
35
|
+
if (!match || marker.exec(processed)) return processed;
|
|
36
|
+
const prefix = processed.slice(0, match.index);
|
|
37
|
+
const suffix = processed.slice(match.index + match[0].length);
|
|
38
|
+
if (hadTiming) return `${prefix}${text.includes("\r\n") ? "\r\n" : "\n"}${suffix}`;
|
|
39
|
+
return prefix + suffix;
|
|
40
|
+
}
|
|
41
|
+
function ompBashExitError(exitCode, text) {
|
|
42
|
+
const marker = new RegExp(`(?:^|\\r?\\n\\r?\\n)Command exited with code ${exitCode}(?=\\r?\\n|$)`);
|
|
43
|
+
const match = marker.exec(text);
|
|
44
|
+
if (!match) return new OmpBashExitError(text, exitCode, text);
|
|
45
|
+
const prefix = text.slice(0, match.index);
|
|
46
|
+
const tail = text.slice(match.index + match[0].length);
|
|
47
|
+
const output = stripOmpBashTiming(prefix) + (tail ? tail.replace(/^\r?\n/, "") : "");
|
|
48
|
+
return new OmpBashExitError(text, exitCode, output);
|
|
49
|
+
}
|
|
50
|
+
function ompBashResultError(original, text) {
|
|
51
|
+
const metadata = ompBashExitMetadata(original);
|
|
52
|
+
if (metadata) {
|
|
53
|
+
const message = original instanceof Error ? original.message : text;
|
|
54
|
+
return new OmpBashExitError(text, metadata.exitCode, bashResultOutput({ message, ...metadata }, text));
|
|
55
|
+
}
|
|
56
|
+
return new Error(text.trim() || "OMP bash failed");
|
|
57
|
+
}
|
|
58
|
+
function ompBashExitMetadata(error) {
|
|
59
|
+
if (typeof error !== "object" || error === null) return void 0;
|
|
60
|
+
if (Reflect.get(error, OMP_BASH_EXIT_MARKER) !== true && Reflect.get(error, "ompBashExit") !== true) return void 0;
|
|
61
|
+
const exitCode = Reflect.get(error, "exitCode");
|
|
62
|
+
const output = Reflect.get(error, "output");
|
|
63
|
+
return Number.isSafeInteger(exitCode) && typeof output === "string" ? { exitCode, output } : void 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
stripOmpBashTiming,
|
|
68
|
+
classifyOmpBashError,
|
|
69
|
+
ompBashExitError,
|
|
70
|
+
ompBashResultError,
|
|
71
|
+
ompBashExitMetadata
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=chunk-6X6WUU2K.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/core/omp-bash-error.ts"],
|
|
4
|
+
"sourcesContent": ["const OMP_BASH_EXIT_MARKER = Symbol.for(\"omp-fabric.bash-exit\");\n\nclass OmpBashExitError extends Error {\n readonly [OMP_BASH_EXIT_MARKER] = true;\n readonly ompBashExit = true;\n\n constructor(message: string, readonly exitCode: number, readonly output: string) {\n super(message);\n }\n}\nexport const stripOmpBashTiming = (text: string): string =>\n text\n .replace(/(\\r?\\n)\\r?\\n\\r?\\nWall time:? [^\\r\\n]+\\r?\\n\\r?\\n/g, \"$1\\n\")\n .replace(/(\\r?\\n)\\r?\\n\\r?\\nWall time:? [^\\r\\n]+$/g, \"$1\")\n .replace(/(\\r?\\n)\\r?\\nWall time:? [^\\r\\n]+\\r?\\n\\r?\\n/g, \"$1\\n\")\n .replace(/(\\r?\\n)\\r?\\nWall time:? [^\\r\\n]+$/g, \"$1\");\n\nexport function classifyOmpBashError(error: unknown): unknown {\n if (!(error instanceof Error)) return error;\n const match = /(?:^|\\n\\n)Command exited with code (\\d+)$/.exec(error.message);\n if (!match) return error;\n const exitCode = Number(match[1]);\n if (!Number.isSafeInteger(exitCode) || exitCode <= 0) return error;\n return new OmpBashExitError(\n error.message,\n exitCode,\n stripOmpBashTiming(error.message.slice(0, match.index)),\n );\n}\n\n// Display cleanup only: this never decides whether an error is a native exit.\n// Work exclusively with the final text so redacted/cleared content stays gone.\nfunction bashResultOutput(original: { message: string; exitCode: number; output: string }, text: string): string {\n const hadTiming = text.includes(\"Wall time:\");\n const processed = stripOmpBashTiming(text);\n const message = stripOmpBashTiming(original.message);\n const index = processed.indexOf(message);\n if (index >= 0) {\n return processed.slice(0, index + original.output.length) + processed.slice(index + message.length);\n }\n\n const marker = new RegExp(`(?:^|\\\\r?\\\\n\\\\r?\\\\n)Command exited with code ${original.exitCode}(?=\\\\r?\\\\n|$)`, \"g\");\n const match = marker.exec(processed);\n if (!match || marker.exec(processed)) return processed;\n const prefix = processed.slice(0, match.index);\n const suffix = processed.slice(match.index + match[0].length);\n if (hadTiming) return `${prefix}${text.includes(\"\\r\\n\") ? \"\\r\\n\" : \"\\n\"}${suffix}`;\n return prefix + suffix;\n}\n\nexport function ompBashExitError(exitCode: number, text: string): Error {\n const marker = new RegExp(`(?:^|\\\\r?\\\\n\\\\r?\\\\n)Command exited with code ${exitCode}(?=\\\\r?\\\\n|$)`);\n const match = marker.exec(text);\n if (!match) return new OmpBashExitError(text, exitCode, text);\n const prefix = text.slice(0, match.index);\n const tail = text.slice(match.index + match[0].length);\n const output = stripOmpBashTiming(prefix) + (tail ? tail.replace(/^\\r?\\n/, \"\") : \"\");\n return new OmpBashExitError(text, exitCode, output);\n}\n\n/** Keep native exit status independent of middleware display transformations. */\nexport function ompBashResultError(original: unknown, text: string): Error {\n const metadata = ompBashExitMetadata(original);\n if (metadata) {\n const message = original instanceof Error ? original.message : text;\n return new OmpBashExitError(text, metadata.exitCode, bashResultOutput({ message, ...metadata }, text));\n }\n return new Error(text.trim() || \"OMP bash failed\");\n}\n\n/** Only provider-classified exits may cross a runtime bridge as settle metadata. */\nexport function ompBashExitMetadata(error: unknown): { exitCode: number; output: string } | undefined {\n if (typeof error !== \"object\" || error === null) return undefined;\n if (Reflect.get(error, OMP_BASH_EXIT_MARKER) !== true && Reflect.get(error, \"ompBashExit\") !== true) return undefined;\n const exitCode = Reflect.get(error, \"exitCode\");\n const output = Reflect.get(error, \"output\");\n return Number.isSafeInteger(exitCode) && typeof output === \"string\"\n ? { exitCode, output }\n : undefined;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// src/core/stable-hash.ts
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
var stableJsonValue = (value) => {
|
|
4
|
+
if (Array.isArray(value)) return value.map(stableJsonValue);
|
|
5
|
+
if (value instanceof URL) return value.href;
|
|
6
|
+
if (value === null || typeof value !== "object") return value;
|
|
7
|
+
return Object.fromEntries(
|
|
8
|
+
Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, nested]) => [key, stableJsonValue(nested)])
|
|
9
|
+
);
|
|
10
|
+
};
|
|
11
|
+
var stableJsonHash = (value) => createHash("sha256").update(JSON.stringify(stableJsonValue(value))).digest("hex");
|
|
12
|
+
var STABLE_HASH_ARRAY_CHUNK = 64;
|
|
13
|
+
var stableJsonHashArrayAsync = async (values) => {
|
|
14
|
+
const hash = createHash("sha256");
|
|
15
|
+
hash.update("[");
|
|
16
|
+
let first = true;
|
|
17
|
+
let batch = [];
|
|
18
|
+
const flush = async () => {
|
|
19
|
+
if (batch.length === 0) return;
|
|
20
|
+
hash.update(`${first ? "" : ","}${batch.join(",")}`);
|
|
21
|
+
first = false;
|
|
22
|
+
batch = [];
|
|
23
|
+
await new Promise((resolve) => setImmediate(resolve));
|
|
24
|
+
};
|
|
25
|
+
for (const value of values) {
|
|
26
|
+
batch.push(JSON.stringify(stableJsonValue(value)) ?? "null");
|
|
27
|
+
if (batch.length >= STABLE_HASH_ARRAY_CHUNK) await flush();
|
|
28
|
+
}
|
|
29
|
+
if (batch.length > 0) hash.update(`${first ? "" : ","}${batch.join(",")}`);
|
|
30
|
+
hash.update("]");
|
|
31
|
+
return hash.digest("hex");
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
stableJsonHash,
|
|
36
|
+
stableJsonHashArrayAsync
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=chunk-7363CD5A.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/core/stable-hash.ts"],
|
|
4
|
+
"sourcesContent": ["import { createHash } from \"node:crypto\";\n\n// Deterministic JSON shaping for hashing: object keys sort recursively so\n// equivalent values hash identically regardless of key insertion order. URL\n// instances hash by href \u2014 they expose no enumerable own properties, so\n// untreated they would all collapse to \"{}\" (MCP server definitions carry\n// `URL` instances for HTTP transports).\nconst stableJsonValue = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(stableJsonValue);\n if (value instanceof URL) return value.href;\n if (value === null || typeof value !== \"object\") return value;\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, nested]) => [key, stableJsonValue(nested)]),\n );\n};\n\nexport const stableJsonHash = (value: unknown): string =>\n createHash(\"sha256\").update(JSON.stringify(stableJsonValue(value))).digest(\"hex\");\nconst STABLE_HASH_ARRAY_CHUNK = 64;\n\n// Cooperative canonical hashing for large evidence arrays. Each element is\n// normalized by the same pure shaper as stableJsonHash; fixed 64-record chunks\n// keep extension hooks responsive without changing a byte of hash input.\nexport const stableJsonHashArrayAsync = async (\n values: readonly unknown[],\n): Promise<string> => {\n const hash = createHash(\"sha256\");\n hash.update(\"[\");\n let first = true;\n let batch: string[] = [];\n const flush = async (): Promise<void> => {\n if (batch.length === 0) return;\n hash.update(`${first ? \"\" : \",\"}${batch.join(\",\")}`);\n first = false;\n batch = [];\n await new Promise((resolve) => setImmediate(resolve));\n };\n for (const value of values) {\n // JSON.stringify renders undefined array entries as null.\n batch.push(JSON.stringify(stableJsonValue(value)) ?? \"null\");\n if (batch.length >= STABLE_HASH_ARRAY_CHUNK) await flush();\n }\n if (batch.length > 0) hash.update(`${first ? \"\" : \",\"}${batch.join(\",\")}`);\n hash.update(\"]\");\n return hash.digest(\"hex\");\n};\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,kBAAkB;AAO3B,IAAM,kBAAkB,CAAC,UAA4B;AACnD,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO,MAAM,IAAI,eAAe;AAC1D,MAAI,iBAAiB,IAAK,QAAO,MAAM;AACvC,MAAI,UAAU,QAAQ,OAAO,UAAU,SAAU,QAAO;AACxD,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,KAAgC,EAC5C,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,MAAM,KAAK,cAAc,KAAK,CAAC,EACnD,IAAI,CAAC,CAAC,KAAK,MAAM,MAAM,CAAC,KAAK,gBAAgB,MAAM,CAAC,CAAC;AAAA,EAC1D;AACF;AAEO,IAAM,iBAAiB,CAAC,UAC7B,WAAW,QAAQ,EAAE,OAAO,KAAK,UAAU,gBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,KAAK;AAClF,IAAM,0BAA0B;AAKzB,IAAM,2BAA2B,OACtC,WACoB;AACpB,QAAM,OAAO,WAAW,QAAQ;AAChC,OAAK,OAAO,GAAG;AACf,MAAI,QAAQ;AACZ,MAAI,QAAkB,CAAC;AACvB,QAAM,QAAQ,YAA2B;AACvC,QAAI,MAAM,WAAW,EAAG;AACxB,SAAK,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,EAAE;AACnD,YAAQ;AACR,YAAQ,CAAC;AACT,UAAM,IAAI,QAAQ,CAAC,YAAY,aAAa,OAAO,CAAC;AAAA,EACtD;AACA,aAAW,SAAS,QAAQ;AAE1B,UAAM,KAAK,KAAK,UAAU,gBAAgB,KAAK,CAAC,KAAK,MAAM;AAC3D,QAAI,MAAM,UAAU,wBAAyB,OAAM,MAAM;AAAA,EAC3D;AACA,MAAI,MAAM,SAAS,EAAG,MAAK,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,EAAE;AACzE,OAAK,OAAO,GAAG;AACf,SAAO,KAAK,OAAO,KAAK;AAC1B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import {
|
|
2
|
+
stableJsonHash
|
|
3
|
+
} from "./chunk-7363CD5A.js";
|
|
4
|
+
|
|
5
|
+
// src/components/model-guidance.ts
|
|
6
|
+
var FABRIC_EXECUTION_GUIDANCE_SLOT = "fabric.execution";
|
|
7
|
+
var MAX_FABRIC_MODEL_GUIDANCE_PER_COMPONENT = 64;
|
|
8
|
+
var MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS = 32e3;
|
|
9
|
+
var MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS = 64e3;
|
|
10
|
+
var MAX_FABRIC_MODEL_GUIDANCE_REGISTRATIONS = 1024;
|
|
11
|
+
var MAX_FABRIC_MODEL_GUIDANCE_SNAPSHOT_CHARS = 1e6;
|
|
12
|
+
var MAX_LABEL_CHARS = 128;
|
|
13
|
+
var MAX_SLOT_CHARS = 128;
|
|
14
|
+
var MAX_MODEL_PATTERNS = 32;
|
|
15
|
+
var MAX_MODEL_PATTERN_CHARS = 256;
|
|
16
|
+
var CONTROL_CHARACTER = /[\u0000-\u001f\u007f]/;
|
|
17
|
+
var REGEX_CHARACTER = /[\\^$+.[\]{}()|]/;
|
|
18
|
+
var compareStableText = (left, right) => left < right ? -1 : left > right ? 1 : 0;
|
|
19
|
+
var compareFabricOwnedModelGuidance = (left, right) => compareStableText(left.componentId, right.componentId) || compareStableText(left.label, right.label);
|
|
20
|
+
var guidanceError = (message) => new Error(`Invalid Fabric model guidance: ${message}`);
|
|
21
|
+
var normalizedIdentifier = (value, field, max) => {
|
|
22
|
+
if (typeof value !== "string") throw guidanceError(`${field} must be a string`);
|
|
23
|
+
const normalized = value.trim();
|
|
24
|
+
if (!normalized) throw guidanceError(`${field} must not be empty`);
|
|
25
|
+
if (normalized.length > max) throw guidanceError(`${field} exceeds ${max} characters`);
|
|
26
|
+
if (CONTROL_CHARACTER.test(normalized)) {
|
|
27
|
+
throw guidanceError(`${field} must not contain control characters`);
|
|
28
|
+
}
|
|
29
|
+
return normalized;
|
|
30
|
+
};
|
|
31
|
+
var normalizeTargets = (targets) => {
|
|
32
|
+
if (targets === void 0) return ["main", "participant"];
|
|
33
|
+
if (!Array.isArray(targets) || targets.length === 0) {
|
|
34
|
+
throw guidanceError("targets must contain main and/or participant");
|
|
35
|
+
}
|
|
36
|
+
const normalized = [];
|
|
37
|
+
for (const target of targets) {
|
|
38
|
+
if (target !== "main" && target !== "participant") {
|
|
39
|
+
throw guidanceError(`unsupported target ${String(target)}`);
|
|
40
|
+
}
|
|
41
|
+
if (!normalized.includes(target)) normalized.push(target);
|
|
42
|
+
}
|
|
43
|
+
return normalized;
|
|
44
|
+
};
|
|
45
|
+
var normalizeFabricModelGuidance = (guidance) => {
|
|
46
|
+
if (!guidance || typeof guidance !== "object" || Array.isArray(guidance)) {
|
|
47
|
+
throw guidanceError("registration must be an object");
|
|
48
|
+
}
|
|
49
|
+
const label = normalizedIdentifier(guidance.label, "label", MAX_LABEL_CHARS);
|
|
50
|
+
if (!Array.isArray(guidance.models) || guidance.models.length === 0) {
|
|
51
|
+
throw guidanceError(`${label} must select at least one provider/model pattern`);
|
|
52
|
+
}
|
|
53
|
+
if (guidance.models.length > MAX_MODEL_PATTERNS) {
|
|
54
|
+
throw guidanceError(`${label} selects more than ${MAX_MODEL_PATTERNS} model patterns`);
|
|
55
|
+
}
|
|
56
|
+
const models = [];
|
|
57
|
+
for (const candidate of guidance.models) {
|
|
58
|
+
if (typeof candidate !== "string") {
|
|
59
|
+
throw guidanceError(`${label} model patterns must be strings`);
|
|
60
|
+
}
|
|
61
|
+
const pattern = candidate.trim();
|
|
62
|
+
if (!pattern || pattern.length > MAX_MODEL_PATTERN_CHARS || !pattern.includes("/")) {
|
|
63
|
+
throw guidanceError(
|
|
64
|
+
`${label} model pattern ${JSON.stringify(candidate)} must be a provider/model glob of at most ${MAX_MODEL_PATTERN_CHARS} characters`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
if (CONTROL_CHARACTER.test(pattern)) {
|
|
68
|
+
throw guidanceError(`${label} model patterns must not contain control characters`);
|
|
69
|
+
}
|
|
70
|
+
if (!models.includes(pattern)) models.push(pattern);
|
|
71
|
+
}
|
|
72
|
+
if (typeof guidance.content !== "string" || !guidance.content.trim()) {
|
|
73
|
+
throw guidanceError(`${label} content must be a non-empty string`);
|
|
74
|
+
}
|
|
75
|
+
const content = guidance.content.trim();
|
|
76
|
+
if (content.length > MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS) {
|
|
77
|
+
throw guidanceError(
|
|
78
|
+
`${label} content exceeds ${MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS} characters`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
const placement = guidance.placement ?? "append";
|
|
82
|
+
if (placement !== "append" && placement !== "replace") {
|
|
83
|
+
throw guidanceError(`${label} placement must be append or replace`);
|
|
84
|
+
}
|
|
85
|
+
const slot = guidance.slot === void 0 ? void 0 : normalizedIdentifier(guidance.slot, "slot", MAX_SLOT_CHARS);
|
|
86
|
+
if (placement === "replace" && !slot) {
|
|
87
|
+
throw guidanceError(`${label} replacement guidance requires a slot`);
|
|
88
|
+
}
|
|
89
|
+
if (placement === "append" && slot) {
|
|
90
|
+
throw guidanceError(`${label} append guidance must not declare a slot`);
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
label,
|
|
94
|
+
models,
|
|
95
|
+
content,
|
|
96
|
+
targets: normalizeTargets(guidance.targets),
|
|
97
|
+
placement,
|
|
98
|
+
...slot ? { slot } : {}
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
var parseFabricOwnedModelGuidance = (value) => {
|
|
102
|
+
if (!Array.isArray(value) || value.length > MAX_FABRIC_MODEL_GUIDANCE_REGISTRATIONS) return [];
|
|
103
|
+
try {
|
|
104
|
+
const parsed = value.map((candidate) => {
|
|
105
|
+
if (!candidate || typeof candidate !== "object" || Array.isArray(candidate)) {
|
|
106
|
+
throw guidanceError("serialized owner must be an object");
|
|
107
|
+
}
|
|
108
|
+
const record = candidate;
|
|
109
|
+
const normalized = normalizeFabricModelGuidance(record);
|
|
110
|
+
if (typeof record.componentId !== "string" || !record.componentId.trim() || typeof record.component !== "string" || !record.component.trim() || !Number.isSafeInteger(record.revision) || (record.revision ?? 0) < 1) {
|
|
111
|
+
throw guidanceError("serialized owner metadata is incomplete");
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
...normalized,
|
|
115
|
+
componentId: record.componentId.trim(),
|
|
116
|
+
component: record.component.trim(),
|
|
117
|
+
revision: record.revision
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
if (parsed.reduce((sum, entry) => sum + entry.content.length, 0) > MAX_FABRIC_MODEL_GUIDANCE_SNAPSHOT_CHARS) return [];
|
|
121
|
+
return parsed;
|
|
122
|
+
} catch {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
var fabricModelGuidanceInfo = (guidance) => ({
|
|
127
|
+
label: guidance.label,
|
|
128
|
+
models: [...guidance.models],
|
|
129
|
+
targets: [...guidance.targets],
|
|
130
|
+
placement: guidance.placement,
|
|
131
|
+
...guidance.slot ? { slot: guidance.slot } : {},
|
|
132
|
+
contentChars: guidance.content.length,
|
|
133
|
+
contentHash: stableJsonHash(guidance.content)
|
|
134
|
+
});
|
|
135
|
+
var wildcardMatch = (pattern, value) => {
|
|
136
|
+
let expression = "^";
|
|
137
|
+
for (const character of pattern) {
|
|
138
|
+
if (character === "*") expression += ".*";
|
|
139
|
+
else if (character === "?") expression += ".";
|
|
140
|
+
else expression += REGEX_CHARACTER.test(character) ? `\\${character}` : character;
|
|
141
|
+
}
|
|
142
|
+
return new RegExp(`${expression}$`, "u").test(value);
|
|
143
|
+
};
|
|
144
|
+
var fabricModelGuidanceMatches = (guidance, model, target) => guidance.targets.includes(target) && guidance.models.some((pattern) => wildcardMatch(pattern, model));
|
|
145
|
+
var sourceInfo = (guidance) => ({
|
|
146
|
+
componentId: guidance.componentId,
|
|
147
|
+
component: guidance.component,
|
|
148
|
+
label: guidance.label,
|
|
149
|
+
placement: guidance.placement,
|
|
150
|
+
...guidance.slot ? { slot: guidance.slot } : {},
|
|
151
|
+
contentHash: stableJsonHash(guidance.content)
|
|
152
|
+
});
|
|
153
|
+
var resolveFabricModelGuidance = (guidance, options) => {
|
|
154
|
+
const includeSlots = options.includeSlots !== false;
|
|
155
|
+
const matching = options.model ? guidance.filter((entry) => fabricModelGuidanceMatches(entry, options.model, options.target)) : [];
|
|
156
|
+
const replacements = /* @__PURE__ */ new Map();
|
|
157
|
+
const additions = [];
|
|
158
|
+
for (const entry of matching) {
|
|
159
|
+
if (entry.placement === "append") {
|
|
160
|
+
additions.push(entry);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (!includeSlots || !entry.slot) continue;
|
|
164
|
+
const existing = replacements.get(entry.slot) ?? [];
|
|
165
|
+
existing.push(entry);
|
|
166
|
+
replacements.set(entry.slot, existing);
|
|
167
|
+
}
|
|
168
|
+
const defaultSlots = options.defaults ?? [];
|
|
169
|
+
const slotOrder = [
|
|
170
|
+
...defaultSlots.map((entry) => entry.slot),
|
|
171
|
+
...[...replacements.keys()].filter((slot) => !defaultSlots.some((entry) => entry.slot === slot)).sort(compareStableText)
|
|
172
|
+
];
|
|
173
|
+
const slotSections = [];
|
|
174
|
+
const sources = [];
|
|
175
|
+
if (includeSlots) {
|
|
176
|
+
for (const slot of slotOrder) {
|
|
177
|
+
const candidates = replacements.get(slot) ?? [];
|
|
178
|
+
if (candidates.length > 1) {
|
|
179
|
+
const owners = candidates.map((entry) => `${entry.componentId}:${entry.label}`).sort(compareStableText).join(", ");
|
|
180
|
+
throw new Error(
|
|
181
|
+
`Fabric guidance slot ${slot} has multiple replacements for ${options.model ?? "the current model"}: ${owners}`
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
const replacement = candidates[0];
|
|
185
|
+
if (replacement) {
|
|
186
|
+
slotSections.push(replacement.content);
|
|
187
|
+
sources.push(sourceInfo(replacement));
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
const fallback = defaultSlots.find((entry) => entry.slot === slot)?.content.trim();
|
|
191
|
+
if (fallback) slotSections.push(fallback);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
additions.sort(compareFabricOwnedModelGuidance);
|
|
195
|
+
for (const addition of additions) sources.push(sourceInfo(addition));
|
|
196
|
+
const appendSections = additions.map((entry) => entry.content);
|
|
197
|
+
const slotText = slotSections.join("\n\n");
|
|
198
|
+
const appendText = appendSections.join("\n\n");
|
|
199
|
+
const resolvedChars = slotText.length + appendText.length + (slotText && appendText ? 2 : 0);
|
|
200
|
+
if (resolvedChars > MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS) {
|
|
201
|
+
throw new Error(
|
|
202
|
+
`Resolved Fabric model guidance exceeds ${MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS} characters for ${options.model ?? "the current model"}`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
slotText,
|
|
207
|
+
appendText,
|
|
208
|
+
sources,
|
|
209
|
+
digest: stableJsonHash({
|
|
210
|
+
model: options.model,
|
|
211
|
+
target: options.target,
|
|
212
|
+
slots: slotSections,
|
|
213
|
+
additions: sources
|
|
214
|
+
})
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
export {
|
|
219
|
+
FABRIC_EXECUTION_GUIDANCE_SLOT,
|
|
220
|
+
MAX_FABRIC_MODEL_GUIDANCE_PER_COMPONENT,
|
|
221
|
+
MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS,
|
|
222
|
+
MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS,
|
|
223
|
+
MAX_FABRIC_MODEL_GUIDANCE_REGISTRATIONS,
|
|
224
|
+
MAX_FABRIC_MODEL_GUIDANCE_SNAPSHOT_CHARS,
|
|
225
|
+
compareFabricOwnedModelGuidance,
|
|
226
|
+
normalizeFabricModelGuidance,
|
|
227
|
+
parseFabricOwnedModelGuidance,
|
|
228
|
+
fabricModelGuidanceInfo,
|
|
229
|
+
resolveFabricModelGuidance
|
|
230
|
+
};
|
|
231
|
+
//# sourceMappingURL=chunk-77FQHHZD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/model-guidance.ts"],
|
|
4
|
+
"sourcesContent": ["import { stableJsonHash } from \"../core/stable-hash.js\";\nimport type {\n FabricModelGuidance,\n FabricModelGuidanceInfo,\n FabricModelGuidancePlacement,\n FabricModelGuidanceTarget,\n} from \"./types.js\";\n\nexport const FABRIC_EXECUTION_GUIDANCE_SLOT = \"fabric.execution\";\nexport const MAX_FABRIC_MODEL_GUIDANCE_PER_COMPONENT = 64;\nexport const MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS = 32_000;\nexport const MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS = 64_000;\nexport const MAX_FABRIC_MODEL_GUIDANCE_REGISTRATIONS = 1_024;\nexport const MAX_FABRIC_MODEL_GUIDANCE_SNAPSHOT_CHARS = 1_000_000;\n\nconst MAX_LABEL_CHARS = 128;\nconst MAX_SLOT_CHARS = 128;\nconst MAX_MODEL_PATTERNS = 32;\nconst MAX_MODEL_PATTERN_CHARS = 256;\nconst CONTROL_CHARACTER = /[\\u0000-\\u001f\\u007f]/;\nconst REGEX_CHARACTER = /[\\\\^$+.[\\]{}()|]/;\n\nexport interface NormalizedFabricModelGuidance {\n label: string;\n models: string[];\n content: string;\n targets: FabricModelGuidanceTarget[];\n placement: FabricModelGuidancePlacement;\n slot?: string;\n}\n\nexport interface FabricOwnedModelGuidance extends NormalizedFabricModelGuidance {\n componentId: string;\n component: string;\n revision: number;\n}\n\nconst compareStableText = (left: string, right: string): number =>\n left < right ? -1 : left > right ? 1 : 0;\n\nexport const compareFabricOwnedModelGuidance = (\n left: FabricOwnedModelGuidance,\n right: FabricOwnedModelGuidance,\n): number =>\n compareStableText(left.componentId, right.componentId) ||\n compareStableText(left.label, right.label);\n\nexport interface FabricGuidanceDefaultSlot {\n slot: string;\n content: string;\n}\n\nexport interface FabricResolvedModelGuidance {\n slotText: string;\n appendText: string;\n digest: string;\n sources: Array<{\n componentId: string;\n component: string;\n label: string;\n placement: FabricModelGuidancePlacement;\n slot?: string;\n contentHash: string;\n }>;\n}\n\nconst guidanceError = (message: string): Error =>\n new Error(`Invalid Fabric model guidance: ${message}`);\n\nconst normalizedIdentifier = (value: unknown, field: \"label\" | \"slot\", max: number): string => {\n if (typeof value !== \"string\") throw guidanceError(`${field} must be a string`);\n const normalized = value.trim();\n if (!normalized) throw guidanceError(`${field} must not be empty`);\n if (normalized.length > max) throw guidanceError(`${field} exceeds ${max} characters`);\n if (CONTROL_CHARACTER.test(normalized)) {\n throw guidanceError(`${field} must not contain control characters`);\n }\n return normalized;\n};\n\nconst normalizeTargets = (\n targets: readonly FabricModelGuidanceTarget[] | undefined,\n): FabricModelGuidanceTarget[] => {\n if (targets === undefined) return [\"main\", \"participant\"];\n if (!Array.isArray(targets) || targets.length === 0) {\n throw guidanceError(\"targets must contain main and/or participant\");\n }\n const normalized: FabricModelGuidanceTarget[] = [];\n for (const target of targets) {\n if (target !== \"main\" && target !== \"participant\") {\n throw guidanceError(`unsupported target ${String(target)}`);\n }\n if (!normalized.includes(target)) normalized.push(target);\n }\n return normalized;\n};\n\nexport const normalizeFabricModelGuidance = (\n guidance: FabricModelGuidance,\n): NormalizedFabricModelGuidance => {\n if (!guidance || typeof guidance !== \"object\" || Array.isArray(guidance)) {\n throw guidanceError(\"registration must be an object\");\n }\n const label = normalizedIdentifier(guidance.label, \"label\", MAX_LABEL_CHARS);\n if (!Array.isArray(guidance.models) || guidance.models.length === 0) {\n throw guidanceError(`${label} must select at least one provider/model pattern`);\n }\n if (guidance.models.length > MAX_MODEL_PATTERNS) {\n throw guidanceError(`${label} selects more than ${MAX_MODEL_PATTERNS} model patterns`);\n }\n const models: string[] = [];\n for (const candidate of guidance.models) {\n if (typeof candidate !== \"string\") {\n throw guidanceError(`${label} model patterns must be strings`);\n }\n const pattern = candidate.trim();\n if (!pattern || pattern.length > MAX_MODEL_PATTERN_CHARS || !pattern.includes(\"/\")) {\n throw guidanceError(\n `${label} model pattern ${JSON.stringify(candidate)} must be a provider/model glob of at most ${MAX_MODEL_PATTERN_CHARS} characters`,\n );\n }\n if (CONTROL_CHARACTER.test(pattern)) {\n throw guidanceError(`${label} model patterns must not contain control characters`);\n }\n if (!models.includes(pattern)) models.push(pattern);\n }\n if (typeof guidance.content !== \"string\" || !guidance.content.trim()) {\n throw guidanceError(`${label} content must be a non-empty string`);\n }\n const content = guidance.content.trim();\n if (content.length > MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS) {\n throw guidanceError(\n `${label} content exceeds ${MAX_FABRIC_MODEL_GUIDANCE_CONTENT_CHARS} characters`,\n );\n }\n const placement = guidance.placement ?? \"append\";\n if (placement !== \"append\" && placement !== \"replace\") {\n throw guidanceError(`${label} placement must be append or replace`);\n }\n const slot = guidance.slot === undefined\n ? undefined\n : normalizedIdentifier(guidance.slot, \"slot\", MAX_SLOT_CHARS);\n if (placement === \"replace\" && !slot) {\n throw guidanceError(`${label} replacement guidance requires a slot`);\n }\n if (placement === \"append\" && slot) {\n throw guidanceError(`${label} append guidance must not declare a slot`);\n }\n return {\n label,\n models,\n content,\n targets: normalizeTargets(guidance.targets),\n placement,\n ...(slot ? { slot } : {}),\n };\n};\n\nexport const parseFabricOwnedModelGuidance = (value: unknown): FabricOwnedModelGuidance[] => {\n if (!Array.isArray(value) || value.length > MAX_FABRIC_MODEL_GUIDANCE_REGISTRATIONS) return [];\n try {\n const parsed = value.map((candidate) => {\n if (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) {\n throw guidanceError(\"serialized owner must be an object\");\n }\n const record = candidate as Partial<FabricOwnedModelGuidance>;\n const normalized = normalizeFabricModelGuidance(record as FabricModelGuidance);\n if (\n typeof record.componentId !== \"string\" ||\n !record.componentId.trim() ||\n typeof record.component !== \"string\" ||\n !record.component.trim() ||\n !Number.isSafeInteger(record.revision) ||\n (record.revision ?? 0) < 1\n ) {\n throw guidanceError(\"serialized owner metadata is incomplete\");\n }\n return {\n ...normalized,\n componentId: record.componentId.trim(),\n component: record.component.trim(),\n revision: record.revision!,\n };\n });\n if (parsed.reduce((sum, entry) => sum + entry.content.length, 0) >\n MAX_FABRIC_MODEL_GUIDANCE_SNAPSHOT_CHARS) return [];\n return parsed;\n } catch {\n return [];\n }\n};\n\nexport const fabricModelGuidanceInfo = (\n guidance: NormalizedFabricModelGuidance,\n): FabricModelGuidanceInfo => ({\n label: guidance.label,\n models: [...guidance.models],\n targets: [...guidance.targets],\n placement: guidance.placement,\n ...(guidance.slot ? { slot: guidance.slot } : {}),\n contentChars: guidance.content.length,\n contentHash: stableJsonHash(guidance.content),\n});\n\nconst wildcardMatch = (pattern: string, value: string): boolean => {\n let expression = \"^\";\n for (const character of pattern) {\n if (character === \"*\") expression += \".*\";\n else if (character === \"?\") expression += \".\";\n else expression += REGEX_CHARACTER.test(character) ? `\\\\${character}` : character;\n }\n return new RegExp(`${expression}$`, \"u\").test(value);\n};\n\nconst fabricModelGuidanceMatches = (\n guidance: NormalizedFabricModelGuidance,\n model: string,\n target: FabricModelGuidanceTarget,\n): boolean =>\n guidance.targets.includes(target) && guidance.models.some((pattern) => wildcardMatch(pattern, model));\n\nconst sourceInfo = (guidance: FabricOwnedModelGuidance) => ({\n componentId: guidance.componentId,\n component: guidance.component,\n label: guidance.label,\n placement: guidance.placement,\n ...(guidance.slot ? { slot: guidance.slot } : {}),\n contentHash: stableJsonHash(guidance.content),\n});\n\nexport const resolveFabricModelGuidance = (\n guidance: readonly FabricOwnedModelGuidance[],\n options: {\n model?: string;\n target: FabricModelGuidanceTarget;\n defaults?: readonly FabricGuidanceDefaultSlot[];\n includeSlots?: boolean;\n },\n): FabricResolvedModelGuidance => {\n const includeSlots = options.includeSlots !== false;\n const matching = options.model\n ? guidance.filter((entry) => fabricModelGuidanceMatches(entry, options.model!, options.target))\n : [];\n const replacements = new Map<string, FabricOwnedModelGuidance[]>();\n const additions: FabricOwnedModelGuidance[] = [];\n for (const entry of matching) {\n if (entry.placement === \"append\") {\n additions.push(entry);\n continue;\n }\n if (!includeSlots || !entry.slot) continue;\n const existing = replacements.get(entry.slot) ?? [];\n existing.push(entry);\n replacements.set(entry.slot, existing);\n }\n\n const defaultSlots = options.defaults ?? [];\n const slotOrder = [\n ...defaultSlots.map((entry) => entry.slot),\n ...[...replacements.keys()]\n .filter((slot) => !defaultSlots.some((entry) => entry.slot === slot))\n .sort(compareStableText),\n ];\n const slotSections: string[] = [];\n const sources: FabricResolvedModelGuidance[\"sources\"] = [];\n if (includeSlots) {\n for (const slot of slotOrder) {\n const candidates = replacements.get(slot) ?? [];\n if (candidates.length > 1) {\n const owners = candidates\n .map((entry) => `${entry.componentId}:${entry.label}`)\n .sort(compareStableText)\n .join(\", \");\n throw new Error(\n `Fabric guidance slot ${slot} has multiple replacements for ${options.model ?? \"the current model\"}: ${owners}`,\n );\n }\n const replacement = candidates[0];\n if (replacement) {\n slotSections.push(replacement.content);\n sources.push(sourceInfo(replacement));\n continue;\n }\n const fallback = defaultSlots.find((entry) => entry.slot === slot)?.content.trim();\n if (fallback) slotSections.push(fallback);\n }\n }\n\n additions.sort(compareFabricOwnedModelGuidance);\n for (const addition of additions) sources.push(sourceInfo(addition));\n const appendSections = additions.map((entry) => entry.content);\n const slotText = slotSections.join(\"\\n\\n\");\n const appendText = appendSections.join(\"\\n\\n\");\n const resolvedChars = slotText.length + appendText.length +\n (slotText && appendText ? 2 : 0);\n if (resolvedChars > MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS) {\n throw new Error(\n `Resolved Fabric model guidance exceeds ${MAX_FABRIC_MODEL_GUIDANCE_TOTAL_CHARS} characters for ${options.model ?? \"the current model\"}`,\n );\n }\n return {\n slotText,\n appendText,\n sources,\n digest: stableJsonHash({\n model: options.model,\n target: options.target,\n slots: slotSections,\n additions: sources,\n }),\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|