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/core/call-preview.ts", "../../src/ui/preview-lines.ts", "../../src/providers/write-diff-limits.ts", "../../src/ui/transcript-reader.ts", "../../src/ui/transcript-parser.ts", "../../src/ui/transcript.ts"],
|
|
4
|
+
"sourcesContent": ["// A shared, provider-agnostic heuristic for the one-line \"headline\" argument\n// of a nested Fabric call \u2014 the value shown beside a tool's name in the chat\n// preview (e.g. `recall <query>`) and appended to its ref in the dashboard\n// (e.g. `extensions.vcc_recall \u00B7 <query>`). OMP core tools and the first-class\n// Fabric providers (agents/mesh/mcp management) keep their bespoke, tuned\n// previews; this picks up everything else \u2014 captured extension tools and\n// arbitrary MCP tools \u2014 so they no longer render as a bare tool name.\n//\n// The key order preserves the dashboard's prior task -> path -> query ->\n// message preference for the fields it already recognized, then extends to\n// other common payload names. The final first-string fallback covers tools\n// whose argument names are unfamiliar, skipping structural/metadata keys\n// (label/title/mode/limit/...) that describe the call rather than its\n// payload. Control characters are not stripped here: the inline preview\n// already tolerates them (matching the existing task fallback) and the\n// dashboard sanitizes labels via safeText at render time.\nexport const HEADLINE_ARG_KEYS = [\n \"task\", \"path\", \"query\", \"message\", \"search\", \"pattern\", \"command\", \"text\",\n \"prompt\", \"question\", \"input\", \"content\", \"expression\", \"url\", \"topic\",\n \"key\", \"filter\", \"name\", \"q\",\n] as const;\n\nconst HEADLINE_SKIP_KEYS = new Set([\n \"label\", \"title\", \"type\", \"kind\", \"mode\", \"format\", \"resultFormat\",\n \"limit\", \"max\", \"offset\", \"start\", \"concurrency\", \"overwrite\", \"id\",\n \"provider\", \"namespace\", \"server\", \"tool\", \"ref\", \"recursive\", \"synthesize\",\n \"commandDigest\",\n]);\n\nconst cleanOneLine = (value: string, max: number): string => {\n const single = value.replace(/\\s+/g, \" \").trim();\n if (!single) return \"\";\n return single.length <= max ? single : `${single.slice(0, Math.max(1, max - 1))}\u2026`;\n};\n\n/**\n * Pick the best single-line argument value to display beside a nested call's\n * tool name, for tools that have no bespoke preview. Returns `undefined`\n * when no string payload argument is present.\n */\nexport const headlineArg = (\n args: Record<string, unknown> | undefined,\n max = 96,\n): string | undefined => {\n if (!args) return undefined;\n for (const key of HEADLINE_ARG_KEYS) {\n const value = args[key];\n if (typeof value === \"string\") {\n const cleaned = cleanOneLine(value, max);\n if (cleaned) return cleaned;\n }\n }\n for (const [key, value] of Object.entries(args)) {\n if (HEADLINE_SKIP_KEYS.has(key)) continue;\n if (typeof value === \"string\") {\n const cleaned = cleanOneLine(value, max);\n if (cleaned) return cleaned;\n }\n }\n return undefined;\n};\n", "// Adapted from pi-code-previews; see THIRD_PARTY_NOTICES.md.\n\nexport type PreviewLineEntry<T> =\n | { kind: \"line\"; line: T; index: number }\n | { kind: \"hidden\"; hidden: number };\n\nexport function countContentLines(content: string): number {\n if (!content) return 0;\n let terminators = 0;\n for (let index = 0; index < content.length; index++) {\n const code = content.charCodeAt(index);\n if (code === 13) {\n terminators++;\n if (content.charCodeAt(index + 1) === 10) index++;\n } else if (code === 10) {\n terminators++;\n }\n }\n const finalCode = content.charCodeAt(content.length - 1);\n return terminators + (finalCode === 10 || finalCode === 13 ? 0 : 1);\n}\n\nexport function selectPreviewTextLines(\n text: string,\n limit: number,\n): { entries: Array<PreviewLineEntry<string>>; shown: number; hidden: number; total: number } {\n if (!Number.isInteger(limit)) {\n const lines = collectPreviewTextLines(text);\n return { ...selectPreviewLines(lines, limit), total: lines.length };\n }\n\n const entries: Array<PreviewLineEntry<string>> = [];\n const split = limit >= 8;\n const head = split ? Math.ceil(limit * 0.65) : limit;\n const tailLimit = split ? Math.max(1, limit - head - 1) : 0;\n const tail: Array<string | undefined> = [];\n let tailSize = 0;\n let tailCursor = 0;\n let total = 0;\n forEachPreviewTextLine(text, (line, index) => {\n total++;\n if (limit <= 0 || index < limit) entries.push({ kind: \"line\", line, index });\n if (!split || index < head) return;\n tail[tailCursor] = line;\n if (++tailCursor === tailLimit) tailCursor = 0;\n if (tailSize < tailLimit) tailSize++;\n });\n\n if (limit <= 0 || total <= limit) return { entries, shown: total, hidden: 0, total };\n if (!split) return { entries, shown: limit, hidden: total - limit, total };\n const hidden = total - head - tailLimit;\n const selected = entries.slice(0, head);\n selected.push({ kind: \"hidden\", hidden });\n let tailSlot = tailSize === tailLimit ? tailCursor : 0;\n for (let offset = 0; offset < tailSize; offset++) {\n const line = tail[tailSlot];\n if (line === undefined) throw new RangeError(`Missing preview tail line ${offset}`);\n selected.push({ kind: \"line\", line, index: total - tailSize + offset });\n if (++tailSlot === tailLimit) tailSlot = 0;\n }\n return { entries: selected, shown: head + tailLimit, hidden, total };\n}\n\nfunction selectPreviewLines<T>(\n lines: T[],\n limit: number,\n): { entries: Array<PreviewLineEntry<T>>; shown: number; hidden: number } {\n if (lines.length <= limit || limit <= 0) {\n return {\n entries: lines.map((line, index) => ({ kind: \"line\", line, index })),\n shown: lines.length,\n hidden: 0,\n };\n }\n if (limit < 8) {\n return {\n entries: lines.slice(0, limit).map((line, index) => ({ kind: \"line\", line, index })),\n shown: limit,\n hidden: lines.length - limit,\n };\n }\n const head = Math.ceil(limit * 0.65);\n const tail = Math.max(1, limit - head - 1);\n const hidden = lines.length - head - tail;\n return {\n entries: [\n ...lines.slice(0, head).map((line, index) => ({ kind: \"line\" as const, line, index })),\n { kind: \"hidden\", hidden },\n ...lines.slice(-tail).map((line, offset) => ({\n kind: \"line\" as const,\n line,\n index: lines.length - tail + offset,\n })),\n ],\n shown: head + tail,\n hidden,\n };\n}\n\nfunction collectPreviewTextLines(text: string): string[] {\n const lines: string[] = [];\n forEachPreviewTextLine(text, (line) => lines.push(line));\n return lines;\n}\n\nfunction forEachPreviewTextLine(\n text: string,\n callback: (line: string, index: number) => void,\n): void {\n let index = 0;\n let pendingEmpty = 0;\n forEachRawTextLine(text, (line) => {\n if (line === \"\") {\n pendingEmpty++;\n return;\n }\n while (pendingEmpty > 0) {\n callback(\"\", index++);\n pendingEmpty--;\n }\n callback(line, index++);\n });\n if (index === 0 && pendingEmpty > 0 && text.length > 0) callback(\"\", index);\n}\n\nfunction forEachRawTextLine(text: string, callback: (line: string) => void): void {\n let start = 0;\n while (start <= text.length) {\n const newline = text.indexOf(\"\\n\", start);\n if (newline < 0) {\n callback(text.slice(start));\n break;\n }\n callback(text.slice(start, newline));\n start = newline + 1;\n }\n}\n", "// Pure write-diff size guards shared by the write-preview tool wrapper and the\n// dashboard's core-tool-render. Keep this module free of imports from\n// \"@oh-my-pi/pi-coding-agent\": it is part of the lazily imported\n// dashboard graph, which cannot resolve OMP's host package in managed\n// installs (issue #13).\n\nconst configuredMaxBytes = Number.parseInt(\n process.env.CODE_PREVIEW_MAX_WRITE_DIFF_BYTES ?? \"\",\n 10,\n);\nexport const MAX_WRITE_DIFF_BYTES =\n Number.isFinite(configuredMaxBytes) && configuredMaxBytes > 0\n ? configuredMaxBytes\n : 200_000;\n\nconst configuredMaxChangedLineCells = Number.parseInt(\n process.env.CODE_PREVIEW_MAX_WRITE_DIFF_CHANGED_LINE_CELLS ?? \"\",\n 10,\n);\nconst MAX_WRITE_DIFF_CHANGED_LINE_CELLS =\n Number.isFinite(configuredMaxChangedLineCells) && configuredMaxChangedLineCells > 0\n ? configuredMaxChangedLineCells\n : 1_000_000;\n\nexport const writeContentForPreview = (content: string): string | undefined =>\n Buffer.byteLength(content, \"utf8\") <= MAX_WRITE_DIFF_BYTES ? content : undefined;\n\nexport const shouldSkipWriteDiffBytes = (...texts: string[]): boolean => {\n let total = 0;\n for (const text of texts) {\n total += Buffer.byteLength(text, \"utf8\");\n if (total > MAX_WRITE_DIFF_BYTES) return true;\n }\n return false;\n};\n\nexport const shouldSkipWriteDiffComplexity = (before: string, after: string): boolean => {\n const beforeLines = before.split(\"\\n\");\n const afterLines = after.split(\"\\n\");\n const sharedLimit = Math.min(beforeLines.length, afterLines.length);\n let prefix = 0;\n while (prefix < sharedLimit && beforeLines[prefix] === afterLines[prefix]) prefix++;\n\n let suffix = 0;\n const suffixLimit = sharedLimit - prefix;\n while (\n suffix < suffixLimit &&\n beforeLines[beforeLines.length - suffix - 1] ===\n afterLines[afterLines.length - suffix - 1]\n ) {\n suffix++;\n }\n\n const changedBefore = beforeLines.length - prefix - suffix;\n const changedAfter = afterLines.length - prefix - suffix;\n return changedBefore * changedAfter > MAX_WRITE_DIFF_CHANGED_LINE_CELLS;\n};\n", "import fs from \"node:fs\";\nimport { readJsonlPageFromDescriptor } from \"../log-tail.js\";\nimport type { FabricLogLine } from \"../agents/types.js\";\nimport {\n missingToolStartIds,\n normalizedToolStarts,\n parsedEvents,\n parseRaw,\n TranscriptAccumulator,\n} from \"./transcript-parser.js\";\nimport type { FabricAgentTranscript, FabricTranscriptSource } from \"./transcript.js\";\n\nconst PAGE_LINES = 40;\nconst TOOL_LIFECYCLE_CONTEXT_LINES = PAGE_LINES * 4;\nconst MAX_PAGE_BYTES = 512 * 1024;\nconst MAX_CACHE_ENTRIES = 32;\nconst FORWARD_READ_CHUNK_BYTES = 64 * 1024;\n\ninterface CachedTranscript {\n device: number;\n inode: number;\n modifiedAt: number;\n offset: number;\n completeEnd: number;\n pageStart: number;\n pageEnd: number;\n hasMore: boolean;\n transcript: FabricAgentTranscript;\n}\n\ninterface ForwardTranscriptPage {\n lines: FabricLogLine[];\n end: number;\n}\n\nconst completeLogEnd = (descriptor: number, size: number, fallback = 0): number => {\n if (size <= 0) return 0;\n const scanFloor = Math.max(0, size - MAX_PAGE_BYTES);\n let scanEnd = size;\n while (scanEnd > scanFloor) {\n const scanStart = Math.max(scanFloor, scanEnd - FORWARD_READ_CHUNK_BYTES);\n const chunk = Buffer.allocUnsafe(scanEnd - scanStart);\n const bytesRead = fs.readSync(descriptor, chunk, 0, chunk.length, scanStart);\n if (bytesRead <= 0) return 0;\n for (let index = bytesRead - 1; index >= 0; index--) {\n if (chunk[index] === 0x0a) return scanStart + index + 1;\n }\n scanEnd = scanStart;\n }\n return Math.min(fallback, size);\n};\n\nconst readForwardPage = (\n descriptor: number,\n start: number,\n end: number,\n): ForwardTranscriptPage => {\n const lines: FabricLogLine[] = [];\n const readLimit = Math.min(end, Math.max(0, start) + MAX_PAGE_BYTES);\n let readOffset = Math.max(0, start);\n let pending = Buffer.alloc(0);\n let pendingOffset = readOffset;\n let pageEnd = readOffset;\n\n while (readOffset < readLimit && lines.length < PAGE_LINES) {\n const chunkSize = Math.min(FORWARD_READ_CHUNK_BYTES, readLimit - readOffset);\n const chunk = Buffer.allocUnsafe(chunkSize);\n const bytesRead = fs.readSync(descriptor, chunk, 0, chunkSize, readOffset);\n if (bytesRead <= 0) break;\n const data = pending.length > 0\n ? Buffer.concat([pending, chunk.subarray(0, bytesRead)])\n : chunk.subarray(0, bytesRead);\n const dataOffset = pending.length > 0 ? pendingOffset : readOffset;\n let lineStart = 0;\n for (let index = 0; index < data.length; index++) {\n if (data[index] !== 0x0a) continue;\n const raw = data.subarray(lineStart, index).toString(\"utf8\").replace(/\\r$/, \"\");\n pageEnd = dataOffset + index + 1;\n if (raw) {\n const offset = dataOffset + lineStart;\n const parsed = parseRaw(raw);\n lines.push({ offset, raw, ...(parsed ? { parsed } : {}) });\n if (lines.length >= PAGE_LINES) return { lines, end: pageEnd };\n }\n lineStart = index + 1;\n }\n pending = Buffer.from(data.subarray(lineStart));\n pendingOffset = dataOffset + lineStart;\n readOffset += bytesRead;\n }\n\n return { lines, end: readOffset >= end ? end : pageEnd };\n};\n\nexport class AgentTranscriptReader {\n readonly #cache = new Map<string, CachedTranscript>();\n\n read(\n source: FabricTranscriptSource,\n followLatest = true,\n ): FabricAgentTranscript {\n const filePath = source.logFile;\n if (!filePath) {\n return { entries: [], truncated: false, hasMore: false, hasNewer: false };\n }\n const cached = this.#cache.get(filePath);\n let descriptor: number | undefined;\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile()) {\n return cached?.transcript ?? {\n entries: [],\n truncated: false,\n hasMore: false,\n hasNewer: false,\n };\n }\n const sameFile = cached?.device === stat.dev && cached.inode === stat.ino;\n const sameSizeRewrite =\n sameFile && cached.offset === stat.size && cached.modifiedAt !== stat.mtimeMs;\n let state: CachedTranscript;\n if (!cached || !sameFile || stat.size < cached.offset || sameSizeRewrite) {\n state = this.#latestState(descriptor, stat);\n } else if (stat.size !== cached.offset || stat.mtimeMs !== cached.modifiedAt) {\n const wasAtTail = cached.pageEnd >= cached.completeEnd;\n const completeEnd = completeLogEnd(descriptor, stat.size, cached.completeEnd);\n if (\n cached.pageEnd > completeEnd ||\n (followLatest && wasAtTail && completeEnd > cached.completeEnd)\n ) {\n state = this.#latestState(descriptor, stat, completeEnd);\n } else {\n state = {\n ...cached,\n modifiedAt: stat.mtimeMs,\n offset: stat.size,\n completeEnd,\n transcript: {\n ...cached.transcript,\n hasNewer: cached.pageEnd < completeEnd,\n updatedAt: stat.mtimeMs,\n },\n };\n }\n } else {\n state = cached;\n }\n this.#remember(filePath, state);\n return state.transcript;\n } catch {\n return cached?.transcript ?? {\n entries: [],\n truncated: false,\n hasMore: false,\n hasNewer: false,\n };\n } finally {\n if (descriptor !== undefined) {\n try { fs.closeSync(descriptor); } catch {}\n }\n }\n }\n\n loadOlder(source: FabricTranscriptSource): boolean {\n const filePath = source.logFile;\n if (!filePath) return false;\n this.read(source, false);\n const cached = this.#cache.get(filePath);\n if (!cached?.hasMore || cached.pageStart <= 0) return false;\n let descriptor: number | undefined;\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile() || stat.dev !== cached.device || stat.ino !== cached.inode) return false;\n const completeEnd = completeLogEnd(descriptor, stat.size, cached.completeEnd);\n const pageEnd = Math.min(cached.pageStart, completeEnd);\n const page = readJsonlPageFromDescriptor(\n descriptor,\n PAGE_LINES,\n pageEnd,\n stat.size,\n MAX_PAGE_BYTES,\n );\n const pageStart = page.lines[0]?.offset;\n if (pageStart === undefined) return false;\n const state = this.#stateForPage(\n descriptor,\n stat,\n completeEnd,\n page.lines,\n pageStart,\n pageEnd,\n page.hasMore,\n );\n this.#remember(filePath, state);\n return true;\n } catch {\n return false;\n } finally {\n if (descriptor !== undefined) {\n try { fs.closeSync(descriptor); } catch {}\n }\n }\n }\n\n loadNewer(source: FabricTranscriptSource): boolean {\n const filePath = source.logFile;\n if (!filePath) return false;\n this.read(source, false);\n const cached = this.#cache.get(filePath);\n if (!cached || cached.pageEnd >= cached.completeEnd) return false;\n let descriptor: number | undefined;\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile() || stat.dev !== cached.device || stat.ino !== cached.inode) return false;\n const completeEnd = completeLogEnd(descriptor, stat.size, cached.completeEnd);\n const page = readForwardPage(descriptor, cached.pageEnd, completeEnd);\n if (page.lines.length === 0 || page.end <= cached.pageEnd) return false;\n const state = this.#stateForPage(\n descriptor,\n stat,\n completeEnd,\n page.lines,\n cached.pageEnd,\n page.end,\n cached.pageEnd > 0,\n );\n this.#remember(filePath, state);\n return true;\n } catch {\n return false;\n } finally {\n if (descriptor !== undefined) {\n try { fs.closeSync(descriptor); } catch {}\n }\n }\n }\n\n loadLatest(source: FabricTranscriptSource): boolean {\n const filePath = source.logFile;\n if (!filePath) return false;\n this.read(source, false);\n const cached = this.#cache.get(filePath);\n let descriptor: number | undefined;\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile()) return false;\n if (cached && (stat.dev !== cached.device || stat.ino !== cached.inode)) return false;\n const completeEnd = completeLogEnd(descriptor, stat.size, cached?.completeEnd ?? 0);\n const state = this.#latestState(descriptor, stat, completeEnd);\n this.#remember(filePath, state);\n return true;\n } catch {\n return false;\n } finally {\n if (descriptor !== undefined) {\n try { fs.closeSync(descriptor); } catch {}\n }\n }\n }\n\n clear(): void {\n this.#cache.clear();\n }\n\n #latestState(\n descriptor: number,\n stat: fs.Stats,\n knownCompleteEnd?: number,\n ): CachedTranscript {\n const completeEnd = knownCompleteEnd ?? completeLogEnd(descriptor, stat.size);\n const page = readJsonlPageFromDescriptor(\n descriptor,\n PAGE_LINES,\n completeEnd,\n stat.size,\n MAX_PAGE_BYTES,\n );\n return this.#stateForPage(\n descriptor,\n stat,\n completeEnd,\n page.lines,\n page.lines[0]?.offset ?? completeEnd,\n completeEnd,\n page.hasMore,\n );\n }\n\n #stateForPage(\n descriptor: number,\n stat: fs.Stats,\n completeEnd: number,\n lines: FabricLogLine[],\n pageStart: number,\n pageEnd: number,\n hasMore: boolean,\n ): CachedTranscript {\n const events = parsedEvents(lines);\n const missingStarts = missingToolStartIds(events);\n const lifecycleContext: Array<Record<string, unknown>> = [];\n if (missingStarts.size > 0 && pageStart > 0) {\n const contextPage = readJsonlPageFromDescriptor(\n descriptor,\n TOOL_LIFECYCLE_CONTEXT_LINES,\n pageStart,\n stat.size,\n MAX_PAGE_BYTES,\n );\n const contextEvents = parsedEvents(contextPage.lines);\n for (let index = contextEvents.length - 1; index >= 0 && missingStarts.size > 0; index--) {\n const starts = normalizedToolStarts(contextEvents[index]!);\n for (let startIndex = starts.length - 1; startIndex >= 0; startIndex--) {\n const start = starts[startIndex]!;\n if (!missingStarts.delete(start.id)) continue;\n lifecycleContext.unshift(start.event);\n }\n }\n }\n const accumulator = new TranscriptAccumulator();\n accumulator.append([...lifecycleContext, ...events]);\n const transcript = {\n ...accumulator.snapshot(hasMore, stat.mtimeMs, Number.MAX_SAFE_INTEGER),\n hasNewer: pageEnd < completeEnd,\n };\n return {\n device: stat.dev,\n inode: stat.ino,\n modifiedAt: stat.mtimeMs,\n offset: stat.size,\n completeEnd,\n pageStart,\n pageEnd,\n hasMore: transcript.hasMore ?? false,\n transcript,\n };\n }\n\n #remember(filePath: string, state: CachedTranscript): void {\n this.#cache.delete(filePath);\n this.#cache.set(filePath, state);\n while (this.#cache.size > MAX_CACHE_ENTRIES) {\n const oldest = this.#cache.keys().next().value as string | undefined;\n if (!oldest) break;\n this.#cache.delete(oldest);\n }\n }\n}\n", "import type { FabricLogLine } from \"../agents/types.js\";\nimport type { FabricAgentTranscript, FabricTranscriptEntry } from \"./transcript.js\";\nimport { unwrapActorEnvelopeText } from \"./conversation-transcript.js\";\nimport {\n clip,\n compactRedactedValue,\n contentText,\n messageError,\n recordOf,\n redact,\n redactRecord,\n terminalSafe,\n} from \"./transcript-sanitization.js\";\n\nconst MAX_TOOL_SUMMARY_CHARS = 500;\nconst MAX_TRANSCRIPT_MESSAGE_CHARS = 40_000;\nconst TRANSCRIPT_ENTRY_LIMIT = 80;\n\ntype FabricTranscriptEntryStatus = \"running\" | \"completed\" | \"failed\";\n\nexport class TranscriptAccumulator {\n readonly entries: FabricTranscriptEntry[] = [];\n readonly #tools = new Map<string, FabricTranscriptEntry>();\n readonly #anonymousTools = new Map<string, FabricTranscriptEntry[]>();\n readonly #activeTools: FabricTranscriptEntry[] = [];\n #assistant: FabricTranscriptEntry | undefined;\n #retry: FabricTranscriptEntry | undefined;\n #compaction: FabricTranscriptEntry | undefined;\n readonly #userMessages = new Map<string, FabricTranscriptEntry>();\n readonly #userBoundaries = new Map<string, { serial: number; ended: boolean }>();\n #sequence = 0;\n\n append(events: Array<Record<string, unknown>>): void {\n for (const event of events) this.#append(event);\n }\n\n snapshot(\n olderAvailable = false,\n updatedAt?: number,\n maxEntries = TRANSCRIPT_ENTRY_LIMIT,\n ): FabricAgentTranscript {\n const entries = maxEntries > 0 && this.entries.length > maxEntries\n ? this.entries.slice(-maxEntries)\n : this.entries;\n const omitted = entries.length < this.entries.length;\n return {\n entries: entries.map((entry) => ({ ...entry })),\n truncated: olderAvailable || omitted,\n hasMore: olderAvailable || omitted,\n ...(updatedAt !== undefined ? { updatedAt } : {}),\n };\n }\n\n #nextId(event: Record<string, unknown>, prefix = \"event\"): string {\n if (typeof event.toolCallId === \"string\") return event.toolCallId;\n if (typeof event.uuid === \"string\") return event.uuid;\n if (typeof event.id === \"string\") return event.id;\n return `${prefix}-${this.#sequence++}`;\n }\n\n #finishAssistant(status: \"completed\" | \"failed\"): void {\n if (!this.#assistant) return;\n this.#assistant.status = status;\n this.#assistant = undefined;\n }\n\n #pushMessage(\n kind: \"user\" | \"assistant\",\n id: string,\n text: string,\n status: FabricTranscriptEntryStatus = \"completed\",\n label = kind === \"assistant\" ? \"Agent\" : \"User\",\n identity?: string,\n ): void {\n const display = kind === \"user\" ? (unwrapActorEnvelopeText(text) ?? text) : text;\n const safe = clip(display, MAX_TRANSCRIPT_MESSAGE_CHARS, kind !== \"user\");\n if (!safe) return;\n const entry: FabricTranscriptEntry = { id, kind, label, text: safe, status };\n if (kind === \"user\" && identity) {\n // Identity-aware start/end correlation: message_start and message_end\n // carry the same timestamp/content within one lifecycle. The boundary\n // serial distinguishes repeated turns even if their timestamps collide.\n const existing = this.#userMessages.get(identity);\n if (existing) {\n existing.text = safe;\n return;\n }\n this.#userMessages.set(identity, entry);\n }\n this.entries.push(entry);\n }\n\n #userIdentity(event: Record<string, unknown>, message: Record<string, unknown>): string | undefined {\n if (event.type === \"message_start\" || event.type === \"message_end\" || event.type === \"message\") {\n const timestamp = message.timestamp;\n if (typeof timestamp === \"number\" && Number.isFinite(timestamp)) {\n const base = JSON.stringify([timestamp, contentText(message.content)]);\n let boundary = this.#userBoundaries.get(base);\n if (!boundary || (event.type === \"message_start\" && boundary.ended)) {\n boundary = { serial: (boundary?.serial ?? -1) + 1, ended: false };\n this.#userBoundaries.set(base, boundary);\n }\n if (event.type === \"message_end\") boundary.ended = true;\n return `user:${base}:${boundary.serial}`;\n }\n }\n return undefined;\n }\n\n #toolParent(id: string): FabricTranscriptEntry | undefined {\n if (!id.startsWith(\"fabric_\")) return undefined;\n for (let index = this.#activeTools.length - 1; index >= 0; index--) {\n const candidate = this.#activeTools[index];\n if (candidate?.toolName === \"fabric_exec\" && candidate.status === \"running\") return candidate;\n }\n return undefined;\n }\n\n #startTool(\n id: string,\n label: string,\n args: unknown,\n ): FabricTranscriptEntry {\n const existing = this.#tools.get(id);\n const safeArgs = args === undefined ? undefined : redactRecord(args);\n if (existing) {\n if (safeArgs !== undefined) existing.args = safeArgs;\n if (args !== undefined) existing.text = compactRedactedValue(safeArgs ?? redact(args));\n return existing;\n }\n const parent = this.#toolParent(id);\n const safeLabel = terminalSafe(label) || \"tool\";\n const entry: FabricTranscriptEntry = {\n id,\n kind: \"tool\",\n label: safeLabel,\n toolName: safeLabel,\n status: \"running\",\n ...(safeArgs !== undefined ? { args: safeArgs } : {}),\n ...(args !== undefined\n ? { text: compactRedactedValue(safeArgs ?? redact(args)) }\n : {}),\n ...(parent ? { parentId: parent.id, depth: (parent.depth ?? 0) + 1 } : {}),\n };\n this.entries.push(entry);\n this.#tools.set(id, entry);\n this.#activeTools.push(entry);\n return entry;\n }\n\n #finishTool(id: string | undefined, label: string, result: unknown, failed: boolean): void {\n const safeLabel = terminalSafe(label) || \"tool\";\n const anonymous = this.#anonymousTools.get(safeLabel);\n const entry = id ? this.#tools.get(id) : anonymous?.shift();\n if (anonymous?.length === 0) this.#anonymousTools.delete(safeLabel);\n const safeResult = result === undefined ? undefined : redact(result);\n if (entry) {\n entry.status = failed ? \"failed\" : \"completed\";\n if (safeResult !== undefined) entry.result = safeResult;\n if (failed && result !== undefined) {\n const failure = compactRedactedValue(safeResult);\n entry.text = clip(\n `${entry.text ? `${entry.text} \u00B7 ` : \"\"}error: ${failure}`,\n MAX_TOOL_SUMMARY_CHARS,\n );\n }\n this.#tools.delete(entry.id);\n const activeIndex = this.#activeTools.indexOf(entry);\n if (activeIndex >= 0) this.#activeTools.splice(activeIndex, 1);\n return;\n }\n this.entries.push({\n id: id ?? `tool-${this.#sequence++}`,\n kind: \"tool\",\n label: safeLabel,\n toolName: safeLabel,\n status: failed ? \"failed\" : \"completed\",\n ...(safeResult !== undefined ? { result: safeResult } : {}),\n ...(failed && safeResult !== undefined ? { text: compactRedactedValue(safeResult) } : {}),\n });\n }\n\n #appendSessionMessage(event: Record<string, unknown>, message: Record<string, unknown>): void {\n const id = this.#nextId(event, \"message\");\n if (message.role === \"user\") {\n this.#pushMessage(\"user\", id, contentText(message.content), \"completed\", \"User\", this.#userIdentity(event, message));\n return;\n }\n if (message.role === \"assistant\") {\n const error = messageError(message);\n const text = contentText(message.content);\n if (text) this.#pushMessage(\"assistant\", id, text, error ? \"failed\" : \"completed\");\n if (error) {\n this.entries.push({\n id: `${id}-error`,\n kind: \"error\",\n label: \"Agent error\",\n text: error,\n status: \"failed\",\n });\n }\n if (Array.isArray(message.content)) {\n for (const value of message.content) {\n const part = recordOf(value);\n if (part?.type !== \"toolCall\" || typeof part.name !== \"string\") continue;\n const toolId = typeof part.id === \"string\" ? part.id : `session-tool-${this.#sequence++}`;\n this.#startTool(toolId, part.name, part.arguments);\n }\n }\n return;\n }\n if (message.role === \"toolResult\") {\n const toolId = typeof message.toolCallId === \"string\" ? message.toolCallId : undefined;\n const label = typeof message.toolName === \"string\" ? message.toolName : \"tool\";\n this.#finishTool(\n toolId,\n label,\n { content: message.content, ...(message.details !== undefined ? { details: message.details } : {}) },\n message.isError === true,\n );\n }\n }\n\n #append(event: Record<string, unknown>): void {\n if (typeof event.type !== \"string\") return;\n const id = this.#nextId(event);\n\n if (event.type === \"message\") {\n const message = recordOf(event.message);\n if (message) this.#appendSessionMessage(event, message);\n return;\n }\n\n if (event.type === \"model_changed\") {\n const provider = typeof event.provider === \"string\" ? event.provider : \"\";\n const model = typeof event.modelId === \"string\" ? event.modelId : \"\";\n this.entries.push({\n id,\n kind: \"status\",\n label: \"Model changed\",\n ...(provider || model ? { text: [provider, model].filter(Boolean).join(\"/\") } : {}),\n status: \"completed\",\n });\n return;\n }\n\n if (event.type === \"thinking_level_changed\") {\n this.entries.push({\n id,\n kind: \"status\",\n label: \"Thinking changed\",\n ...(typeof event.thinkingLevel === \"string\" ? { text: event.thinkingLevel } : {}),\n status: \"completed\",\n });\n return;\n }\n\n if (event.type === \"compaction\") {\n this.entries.push({\n id,\n kind: \"status\",\n label: \"Compacted context\",\n ...(typeof event.summary === \"string\" ? { text: terminalSafe(event.summary) } : {}),\n status: \"completed\",\n });\n return;\n }\n\n if (event.type === \"stream_event\") {\n const stream = recordOf(event.event);\n const delta = recordOf(stream?.delta);\n if (stream?.type === \"content_block_delta\" && delta?.type === \"text_delta\") {\n const text = typeof delta.text === \"string\" ? terminalSafe(delta.text, false) : \"\";\n if (!text) return;\n if (!this.#assistant) {\n this.#assistant = {\n id,\n kind: \"assistant\",\n label: \"Claude\",\n text: clip(text, MAX_TRANSCRIPT_MESSAGE_CHARS, false),\n status: \"running\",\n };\n this.entries.push(this.#assistant);\n } else {\n this.#assistant.text = clip(\n `${this.#assistant.text ?? \"\"}${text}`,\n MAX_TRANSCRIPT_MESSAGE_CHARS,\n false,\n );\n }\n }\n return;\n }\n\n if (event.type === \"assistant\") {\n const message = recordOf(event.message);\n if (!message || message.role !== \"assistant\") return;\n if (Array.isArray(message.content)) {\n for (const value of message.content) {\n const part = recordOf(value);\n if (part?.type !== \"tool_use\") continue;\n const toolId = typeof part.id === \"string\" ? part.id : `claude-tool-${this.#sequence++}`;\n const label = typeof part.name === \"string\" ? part.name : \"tool\";\n this.#startTool(toolId, label, part.input);\n }\n }\n const text = terminalSafe(contentText(message.content));\n if (text) {\n if (this.#assistant) {\n this.#assistant.text = clip(text, MAX_TRANSCRIPT_MESSAGE_CHARS);\n this.#finishAssistant(\"completed\");\n } else {\n this.#pushMessage(\"assistant\", id, text, \"completed\", \"Claude\");\n }\n }\n if (typeof event.error === \"string\") {\n this.entries.push({\n id: `${id}-error`,\n kind: \"error\",\n label: \"Claude error\",\n text: clip(event.error, MAX_TOOL_SUMMARY_CHARS),\n status: \"failed\",\n });\n }\n return;\n }\n\n if (event.type === \"user\") {\n const message = recordOf(event.message);\n if (!message || !Array.isArray(message.content)) return;\n let hasToolResult = false;\n for (const value of message.content) {\n const part = recordOf(value);\n if (part?.type !== \"tool_result\" || typeof part.tool_use_id !== \"string\") continue;\n hasToolResult = true;\n this.#finishTool(part.tool_use_id, \"tool\", part.content, part.is_error === true);\n }\n if (!hasToolResult) this.#pushMessage(\"user\", id, contentText(message.content));\n return;\n }\n\n if (event.type === \"result\") {\n this.#finishAssistant(event.is_error === true ? \"failed\" : \"completed\");\n if (event.is_error === true || event.subtype !== \"success\") {\n const errors = Array.isArray(event.errors)\n ? event.errors.filter((value): value is string => typeof value === \"string\").join(\" \u00B7 \")\n : \"\";\n const text = errors || (typeof event.result === \"string\" ? event.result : \"Claude run failed\");\n this.entries.push({\n id,\n kind: \"error\",\n label: \"Claude result\",\n text: clip(text, MAX_TOOL_SUMMARY_CHARS),\n status: \"failed\",\n });\n }\n return;\n }\n\n if (event.type === \"system\" && event.subtype === \"api_retry\") {\n this.entries.push({\n id,\n kind: \"status\",\n label: \"Claude API retry\",\n status: \"running\",\n ...(typeof event.error === \"string\"\n ? { text: clip(event.error, MAX_TOOL_SUMMARY_CHARS) }\n : {}),\n });\n return;\n }\n\n if (event.type === \"message_start\") this.#finishAssistant(\"completed\");\n if (event.type === \"message_start\" || event.type === \"message_update\") {\n const message = recordOf(event.message);\n if (!message) return;\n if (message.role === \"user\") {\n if (event.type === \"message_start\") {\n this.#pushMessage(\"user\", id, contentText(message.content), \"completed\", \"User\", this.#userIdentity(event, message));\n }\n return;\n }\n if (message.role !== \"assistant\") return;\n const text = terminalSafe(contentText(message.content));\n if (!text) return;\n if (!this.#assistant) {\n this.#assistant = {\n id,\n kind: \"assistant\",\n label: \"Agent\",\n text: clip(text, MAX_TRANSCRIPT_MESSAGE_CHARS),\n status: \"running\",\n };\n this.entries.push(this.#assistant);\n } else {\n this.#assistant.text = clip(text, MAX_TRANSCRIPT_MESSAGE_CHARS);\n if (!this.entries.includes(this.#assistant)) this.entries.push(this.#assistant);\n }\n return;\n }\n\n if (event.type === \"message_end\") {\n const message = recordOf(event.message);\n if (!message) return;\n if (message.role === \"user\") {\n this.#pushMessage(\"user\", id, contentText(message.content), \"completed\", \"User\", this.#userIdentity(event, message));\n return;\n }\n if (message.role !== \"assistant\") return;\n const error = messageError(message);\n if (error) {\n this.#finishAssistant(\"failed\");\n this.entries.push({ id, kind: \"error\", label: \"Agent error\", text: error, status: \"failed\" });\n return;\n }\n const text = terminalSafe(contentText(message.content));\n if (!text) {\n this.#finishAssistant(\"completed\");\n return;\n }\n if (!this.#assistant) this.#pushMessage(\"assistant\", id, text);\n else {\n this.#assistant.text = clip(text, MAX_TRANSCRIPT_MESSAGE_CHARS);\n this.#finishAssistant(\"completed\");\n }\n return;\n }\n\n if (event.type === \"response\" && event.command === \"prompt\" && event.success === false) {\n const text = typeof event.error === \"string\" ? event.error : \"OMP rejected the prompt\";\n this.entries.push({\n id,\n kind: \"error\",\n label: \"Prompt rejected\",\n text: clip(text, MAX_TOOL_SUMMARY_CHARS),\n status: \"failed\",\n });\n return;\n }\n\n if (event.type === \"tool_execution_start\") {\n const label = typeof event.toolName === \"string\" ? event.toolName : \"tool\";\n const entry = this.#startTool(id, label, event.args);\n if (typeof event.toolCallId !== \"string\") {\n const key = terminalSafe(label) || \"tool\";\n this.#tools.delete(entry.id);\n this.#anonymousTools.set(key, [...(this.#anonymousTools.get(key) ?? []), entry]);\n }\n return;\n }\n\n if (event.type === \"tool_execution_end\") {\n const label = typeof event.toolName === \"string\" ? event.toolName : \"tool\";\n this.#finishTool(\n typeof event.toolCallId === \"string\" ? event.toolCallId : undefined,\n label,\n event.result,\n event.isError === true,\n );\n return;\n }\n\n if (event.type === \"auto_retry_start\") {\n const attempt = typeof event.attempt === \"number\" ? ` ${event.attempt}` : \"\";\n this.#retry = {\n id,\n kind: \"status\",\n label: `Retry${attempt}`,\n status: \"running\",\n ...(typeof event.errorMessage === \"string\"\n ? { text: clip(event.errorMessage, MAX_TOOL_SUMMARY_CHARS) }\n : {}),\n };\n this.entries.push(this.#retry);\n return;\n }\n if (event.type === \"auto_retry_end\") {\n const failed = event.success === false;\n if (this.#retry) {\n this.#retry.status = failed ? \"failed\" : \"completed\";\n if (failed && typeof event.finalError === \"string\") {\n this.#retry.text = clip(event.finalError, MAX_TOOL_SUMMARY_CHARS);\n }\n this.#retry = undefined;\n }\n return;\n }\n\n if (event.type === \"auto_compaction_start\") {\n this.#compaction = {\n id,\n kind: \"status\",\n label: \"Compacting context\",\n status: \"running\",\n };\n this.entries.push(this.#compaction);\n return;\n }\n if (event.type === \"auto_compaction_end\") {\n if (this.#compaction) {\n const failed = event.aborted === true || typeof event.errorMessage === \"string\";\n this.#compaction.status = failed ? \"failed\" : \"completed\";\n if (typeof event.errorMessage === \"string\") {\n this.#compaction.text = clip(event.errorMessage, MAX_TOOL_SUMMARY_CHARS);\n }\n this.#compaction = undefined;\n }\n return;\n }\n\n if (event.type === \"extension_error\" || event.type === \"worker_stderr\") {\n const text =\n typeof event.error === \"string\"\n ? event.error\n : typeof event.text === \"string\"\n ? event.text\n : \"Extension error\";\n const warningLines = text.split(/\\r?\\n/).filter((line) => line.trim());\n const warningCount = event.type === \"worker_stderr\" && warningLines.length > 0 &&\n warningLines.every((line) => /^\\s*Warning:/.test(line)) ? warningLines.length : 0;\n this.entries.push({\n id,\n kind: \"error\",\n label: event.type === \"worker_stderr\" ? \"Worker stderr\" : \"Error\",\n text: clip(text, warningCount > 0 ? MAX_TRANSCRIPT_MESSAGE_CHARS : MAX_TOOL_SUMMARY_CHARS),\n ...(event.type === \"worker_stderr\" ? { warningCount } : {}),\n status: \"failed\",\n });\n }\n }\n}\n\nexport const parseRaw = (raw: string): Record<string, unknown> | undefined => {\n try {\n return recordOf(JSON.parse(raw));\n } catch {\n return undefined;\n }\n};\n\nexport const parsedEvents = (lines: FabricLogLine[]): Array<Record<string, unknown>> =>\n lines\n .map((line) => recordOf(line.parsed) ?? parseRaw(line.raw))\n .filter((event): event is Record<string, unknown> => event !== undefined);\n\ninterface ToolLifecycleStart {\n id: string;\n event: Record<string, unknown>;\n}\n\nexport const normalizedToolStarts = (event: Record<string, unknown>): ToolLifecycleStart[] => {\n if (\n event.type === \"tool_execution_start\" &&\n typeof event.toolCallId === \"string\"\n ) {\n return [{ id: event.toolCallId, event }];\n }\n\n const starts: ToolLifecycleStart[] = [];\n const appendContentStarts = (\n content: unknown,\n type: \"toolCall\" | \"tool_use\",\n ): void => {\n if (!Array.isArray(content)) return;\n for (const value of content) {\n const part = recordOf(value);\n if (part?.type !== type || typeof part.id !== \"string\") continue;\n const name = typeof part.name === \"string\" ? part.name : \"tool\";\n starts.push({\n id: part.id,\n event: {\n type: \"tool_execution_start\",\n toolCallId: part.id,\n toolName: name,\n args: type === \"toolCall\" ? part.arguments : part.input,\n },\n });\n }\n };\n\n if (event.type === \"message\") {\n const message = recordOf(event.message);\n if (message?.role === \"assistant\") appendContentStarts(message.content, \"toolCall\");\n } else if (event.type === \"assistant\") {\n const message = recordOf(event.message);\n if (message?.role === \"assistant\") appendContentStarts(message.content, \"tool_use\");\n }\n return starts;\n};\n\nconst toolLifecycleEndIds = (event: Record<string, unknown>): string[] => {\n if (event.type === \"tool_execution_end\" && typeof event.toolCallId === \"string\") {\n return [event.toolCallId];\n }\n if (event.type === \"message\") {\n const message = recordOf(event.message);\n return message?.role === \"toolResult\" && typeof message.toolCallId === \"string\"\n ? [message.toolCallId]\n : [];\n }\n if (event.type !== \"user\") return [];\n const message = recordOf(event.message);\n if (!Array.isArray(message?.content)) return [];\n return message.content.flatMap((value) => {\n const part = recordOf(value);\n return part?.type === \"tool_result\" && typeof part.tool_use_id === \"string\"\n ? [part.tool_use_id]\n : [];\n });\n};\n\nexport const missingToolStartIds = (events: Array<Record<string, unknown>>): Set<string> => {\n const active = new Set<string>();\n const missing = new Set<string>();\n for (const event of events) {\n for (const start of normalizedToolStarts(event)) active.add(start.id);\n for (const id of toolLifecycleEndIds(event)) {\n if (active.has(id)) active.delete(id);\n else missing.add(id);\n }\n }\n return missing;\n};\n", "import { TranscriptAccumulator } from \"./transcript-parser.js\";\nimport { AgentTranscriptReader } from \"./transcript-reader.js\";\nimport { recordOf } from \"./transcript-sanitization.js\";\n\ntype FabricTranscriptEntryStatus = \"running\" | \"completed\" | \"failed\";\n\nexport interface FabricTranscriptEntry {\n id: string;\n kind: \"user\" | \"assistant\" | \"tool\" | \"error\" | \"status\";\n label: string;\n text?: string;\n status?: FabricTranscriptEntryStatus;\n toolName?: string;\n args?: Record<string, unknown>;\n result?: unknown;\n parentId?: string;\n depth?: number;\n /** Count only when the original stderr chunk contains warnings exclusively. */\n warningCount?: number;\n}\n\nexport interface FabricAgentTranscript {\n entries: FabricTranscriptEntry[];\n /** Kept for compatibility; true means older pages are available. */\n truncated: boolean;\n hasMore?: boolean;\n hasNewer?: boolean;\n updatedAt?: number;\n}\n\nexport interface FabricTranscriptSource {\n id: string;\n status: string;\n logFile?: string;\n}\n\nexport interface FabricAgentToolPreviewNode {\n id: string;\n name: string;\n status?: string;\n runner?: \"omp\" | \"claude\" | \"veda\";\n owner?: \"agent\" | \"actor\";\n /** Most recent tool the agent was observed running, when known. */\n currentTool?: string;\n text?: string;\n tools: FabricTranscriptEntry[];\n /** Descendant previews, one branch per spawned nested agent run. */\n agents?: FabricAgentToolPreviewNode[];\n /** True when descendant previews were cut by the preview tree budget. */\n agentsTruncated?: boolean;\n}\n\nexport interface FabricAgentToolPreview extends FabricAgentToolPreviewNode {\n kind: \"fabric-agent-tools\";\n}\n\nexport const projectAgentTranscript = (\n events: Array<Record<string, unknown>>,\n olderAvailable = false,\n): FabricAgentTranscript => {\n const accumulator = new TranscriptAccumulator();\n accumulator.append(events);\n return accumulator.snapshot(olderAvailable);\n};\n\nconst PREVIEW_TREE_GUARD_MAX_DEPTH = 8;\n\nconst isFabricAgentToolPreviewNode = (\n value: unknown,\n depth: number,\n): value is FabricAgentToolPreviewNode => {\n const record = recordOf(value);\n if (\n !record ||\n typeof record.id !== \"string\" ||\n typeof record.name !== \"string\" ||\n (record.text !== undefined && typeof record.text !== \"string\") ||\n (record.currentTool !== undefined && typeof record.currentTool !== \"string\") ||\n !Array.isArray(record.tools)\n ) {\n return false;\n }\n if (record.agents === undefined) return true;\n if (depth >= PREVIEW_TREE_GUARD_MAX_DEPTH || !Array.isArray(record.agents)) return false;\n return record.agents.every((child) => isFabricAgentToolPreviewNode(child, depth + 1));\n};\n\nexport const isFabricAgentToolPreview = (value: unknown): value is FabricAgentToolPreview =>\n recordOf(value)?.kind === \"fabric-agent-tools\" && isFabricAgentToolPreviewNode(value, 0);\n\nexport const recentTranscriptTools = (\n transcript: FabricAgentTranscript,\n limit = 2,\n): FabricTranscriptEntry[] => {\n const tools = transcript.entries.filter((entry) => entry.kind === \"tool\");\n const boundedLimit = Math.max(1, limit);\n const running = tools.filter((entry) => entry.status === \"running\");\n const completed = tools.filter((entry) => entry.status !== \"running\");\n const completedSlots = Math.max(0, boundedLimit - Math.min(running.length, boundedLimit));\n const retained = new Set([\n ...running.slice(-boundedLimit),\n ...completed.slice(-completedSlots),\n ]);\n return tools\n .filter((entry) => retained.has(entry))\n .slice(-boundedLimit)\n .map((entry) => ({ ...entry }));\n};\n\nexport { AgentTranscriptReader };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["message"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/ref-names.ts
|
|
2
|
+
var sanitizeMcpRefPart = (value) => {
|
|
3
|
+
const sanitized = value.replace(/[^A-Za-z0-9_$]/g, "_");
|
|
4
|
+
return /^[A-Za-z_$]/.test(sanitized) ? sanitized : `_${sanitized}`;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
sanitizeMcpRefPart
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=chunk-IGVDD2HT.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ref-names.ts"],
|
|
4
|
+
"sourcesContent": ["// Identifier-safe shape used by the QuickJS `mcp.<server>.<tool>` proxy, the\n// rendered advisory refs, and the generated guest type declarations. Shared so\n// the provider, the advisory adapter, the declaration renderer, and the\n// transcript ash-replay all agree on how a raw name appears in code. Kept\n// dependency-free so runtime declaration builders and host providers can both\n// import it without pulling in provider dependency graphs.\nexport const sanitizeMcpRefPart = (value: string): string => {\n const sanitized = value.replace(/[^A-Za-z0-9_$]/g, \"_\");\n return /^[A-Za-z_$]/.test(sanitized) ? sanitized : `_${sanitized}`;\n};\n"],
|
|
5
|
+
"mappings": ";AAMO,IAAM,qBAAqB,CAAC,UAA0B;AAC3D,QAAM,YAAY,MAAM,QAAQ,mBAAmB,GAAG;AACtD,SAAO,cAAc,KAAK,SAAS,IAAI,YAAY,IAAI,SAAS;AAClE;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// src/runtime/type-checker.ts
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import ts from "typescript";
|
|
4
|
+
var compilerOptions = {
|
|
5
|
+
target: ts.ScriptTarget.ES2022,
|
|
6
|
+
module: ts.ModuleKind.ESNext,
|
|
7
|
+
moduleResolution: ts.ModuleResolutionKind.NodeNext,
|
|
8
|
+
strict: false,
|
|
9
|
+
noImplicitAny: false,
|
|
10
|
+
strictNullChecks: false,
|
|
11
|
+
strictFunctionTypes: false,
|
|
12
|
+
strictBindCallApply: false,
|
|
13
|
+
alwaysStrict: false,
|
|
14
|
+
strictPropertyInitialization: false,
|
|
15
|
+
noImplicitThis: false,
|
|
16
|
+
useUnknownInCatchVariables: false,
|
|
17
|
+
noEmit: false,
|
|
18
|
+
sourceMap: true,
|
|
19
|
+
skipLibCheck: true,
|
|
20
|
+
lib: ["lib.es2022.d.ts"]
|
|
21
|
+
};
|
|
22
|
+
var TYPE_CORRECTNESS_CODES = /* @__PURE__ */ new Set([
|
|
23
|
+
2339,
|
|
24
|
+
2551,
|
|
25
|
+
2322,
|
|
26
|
+
2345,
|
|
27
|
+
2367,
|
|
28
|
+
2531,
|
|
29
|
+
2532,
|
|
30
|
+
18047,
|
|
31
|
+
18048,
|
|
32
|
+
7006,
|
|
33
|
+
7008,
|
|
34
|
+
7019,
|
|
35
|
+
7031,
|
|
36
|
+
7032,
|
|
37
|
+
7033,
|
|
38
|
+
7034
|
|
39
|
+
]);
|
|
40
|
+
var nextCheckerId = 0;
|
|
41
|
+
var normalizeTypeScriptPath = (fileName) => fileName.replaceAll("\\", "/");
|
|
42
|
+
var OMP_GUEST_ENTRYPOINT = "__ompFabricMain";
|
|
43
|
+
var wrapFabricGuestCode = (code) => `async function ${OMP_GUEST_ENTRYPOINT}() {
|
|
44
|
+
${code}
|
|
45
|
+
}
|
|
46
|
+
`;
|
|
47
|
+
var FabricTypeChecker = class {
|
|
48
|
+
constructor(declarations) {
|
|
49
|
+
this.declarations = declarations;
|
|
50
|
+
const id = ++nextCheckerId;
|
|
51
|
+
this.#guestFile = normalizeTypeScriptPath(path.resolve(`/__omp_fabric_guest_${id}.ts`));
|
|
52
|
+
this.#declarationFile = normalizeTypeScriptPath(
|
|
53
|
+
path.resolve(`/__omp_fabric_globals_${id}.d.ts`)
|
|
54
|
+
);
|
|
55
|
+
this.#sourceFile = ts.createSourceFile(
|
|
56
|
+
this.#guestFile,
|
|
57
|
+
"",
|
|
58
|
+
ts.ScriptTarget.ES2022,
|
|
59
|
+
true
|
|
60
|
+
);
|
|
61
|
+
this.#declarationSource = ts.createSourceFile(
|
|
62
|
+
this.#declarationFile,
|
|
63
|
+
declarations,
|
|
64
|
+
ts.ScriptTarget.ES2022,
|
|
65
|
+
true
|
|
66
|
+
);
|
|
67
|
+
const isGuestFile = (fileName) => this.#baseHost.getCanonicalFileName(normalizeTypeScriptPath(fileName)) === this.#baseHost.getCanonicalFileName(this.#guestFile);
|
|
68
|
+
const isDeclarationFile = (fileName) => this.#baseHost.getCanonicalFileName(normalizeTypeScriptPath(fileName)) === this.#baseHost.getCanonicalFileName(this.#declarationFile);
|
|
69
|
+
this.#host = {
|
|
70
|
+
...this.#baseHost,
|
|
71
|
+
fileExists: (fileName) => isGuestFile(fileName) || isDeclarationFile(fileName) || this.#baseHost.fileExists(fileName),
|
|
72
|
+
readFile: (fileName) => {
|
|
73
|
+
if (isGuestFile(fileName)) return this.#sourceText;
|
|
74
|
+
if (isDeclarationFile(fileName)) return this.declarations;
|
|
75
|
+
return this.#baseHost.readFile(fileName);
|
|
76
|
+
},
|
|
77
|
+
getSourceFile: (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {
|
|
78
|
+
if (isGuestFile(fileName)) return this.#sourceFile;
|
|
79
|
+
if (isDeclarationFile(fileName)) return this.#declarationSource;
|
|
80
|
+
const cached = this.#stableFiles.get(fileName);
|
|
81
|
+
if (cached) return cached;
|
|
82
|
+
const source = this.#baseHost.getSourceFile(
|
|
83
|
+
fileName,
|
|
84
|
+
languageVersion,
|
|
85
|
+
onError,
|
|
86
|
+
shouldCreateNewSourceFile
|
|
87
|
+
);
|
|
88
|
+
if (source) this.#stableFiles.set(fileName, source);
|
|
89
|
+
return source;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
#guestFile;
|
|
94
|
+
#declarationFile;
|
|
95
|
+
#baseHost = ts.createCompilerHost(compilerOptions, true);
|
|
96
|
+
#stableFiles = /* @__PURE__ */ new Map();
|
|
97
|
+
#declarationSource;
|
|
98
|
+
#host;
|
|
99
|
+
#sourceText = "";
|
|
100
|
+
#sourceFile;
|
|
101
|
+
#program;
|
|
102
|
+
check(code) {
|
|
103
|
+
this.#sourceText = wrapFabricGuestCode(code);
|
|
104
|
+
this.#sourceFile = ts.createSourceFile(
|
|
105
|
+
this.#guestFile,
|
|
106
|
+
this.#sourceText,
|
|
107
|
+
ts.ScriptTarget.ES2022,
|
|
108
|
+
true
|
|
109
|
+
);
|
|
110
|
+
const program = ts.createProgram({
|
|
111
|
+
rootNames: [this.#declarationFile, this.#guestFile],
|
|
112
|
+
options: compilerOptions,
|
|
113
|
+
host: this.#host,
|
|
114
|
+
...this.#program ? { oldProgram: this.#program } : {}
|
|
115
|
+
});
|
|
116
|
+
this.#program = program;
|
|
117
|
+
const diagnostics = [
|
|
118
|
+
...program.getSyntacticDiagnostics(this.#sourceFile),
|
|
119
|
+
...program.getSemanticDiagnostics(this.#sourceFile).filter((diagnostic) => !TYPE_CORRECTNESS_CODES.has(diagnostic.code))
|
|
120
|
+
];
|
|
121
|
+
const errors = diagnostics.map((diagnostic) => {
|
|
122
|
+
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
123
|
+
if (!diagnostic.file || diagnostic.start === void 0) {
|
|
124
|
+
return { line: 0, column: 0, message };
|
|
125
|
+
}
|
|
126
|
+
const position = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
127
|
+
return {
|
|
128
|
+
line: Math.max(1, position.line),
|
|
129
|
+
column: position.character + 1,
|
|
130
|
+
message
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
if (errors.length > 0) return { errors };
|
|
134
|
+
let javascript;
|
|
135
|
+
let sourceMap;
|
|
136
|
+
program.emit(this.#sourceFile, (fileName, content) => {
|
|
137
|
+
if (fileName.endsWith(".js.map")) sourceMap = content;
|
|
138
|
+
else if (fileName.endsWith(".js")) javascript = content;
|
|
139
|
+
});
|
|
140
|
+
return {
|
|
141
|
+
errors,
|
|
142
|
+
...javascript ? { javascript } : {},
|
|
143
|
+
...sourceMap ? { sourceMap } : {}
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
var checkerCache = /* @__PURE__ */ new Map();
|
|
148
|
+
var MAX_CHECKERS = 4;
|
|
149
|
+
var checkerFor = (declarations) => {
|
|
150
|
+
const cached = checkerCache.get(declarations);
|
|
151
|
+
if (cached) {
|
|
152
|
+
checkerCache.delete(declarations);
|
|
153
|
+
checkerCache.set(declarations, cached);
|
|
154
|
+
return cached;
|
|
155
|
+
}
|
|
156
|
+
const checker = new FabricTypeChecker(declarations);
|
|
157
|
+
checkerCache.set(declarations, checker);
|
|
158
|
+
while (checkerCache.size > MAX_CHECKERS) {
|
|
159
|
+
const oldest = checkerCache.keys().next().value;
|
|
160
|
+
if (oldest === void 0) break;
|
|
161
|
+
checkerCache.delete(oldest);
|
|
162
|
+
}
|
|
163
|
+
return checker;
|
|
164
|
+
};
|
|
165
|
+
var transpileFabricCodeWithSourceMap = (code) => {
|
|
166
|
+
const result = ts.transpileModule(wrapFabricGuestCode(code), {
|
|
167
|
+
compilerOptions: {
|
|
168
|
+
target: ts.ScriptTarget.ES2022,
|
|
169
|
+
module: ts.ModuleKind.ESNext,
|
|
170
|
+
sourceMap: true
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
return {
|
|
174
|
+
code: result.outputText,
|
|
175
|
+
...result.sourceMapText ? { sourceMap: result.sourceMapText } : {}
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
var typeCheckFabricCode = (code, declarations) => checkerFor(declarations).check(code);
|
|
179
|
+
|
|
180
|
+
export {
|
|
181
|
+
normalizeTypeScriptPath,
|
|
182
|
+
OMP_GUEST_ENTRYPOINT,
|
|
183
|
+
wrapFabricGuestCode,
|
|
184
|
+
transpileFabricCodeWithSourceMap,
|
|
185
|
+
typeCheckFabricCode
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=chunk-JHKOG5GS.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/runtime/type-checker.ts"],
|
|
4
|
+
"sourcesContent": ["import path from \"node:path\";\nimport ts from \"typescript\";\n\nexport interface FabricTypeError {\n line: number;\n column: number;\n message: string;\n}\n\nexport interface FabricTypeCheckResult {\n errors: FabricTypeError[];\n javascript?: string;\n sourceMap?: string;\n}\n\nconst compilerOptions: ts.CompilerOptions = {\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext,\n strict: false,\n noImplicitAny: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictBindCallApply: false,\n alwaysStrict: false,\n strictPropertyInitialization: false,\n noImplicitThis: false,\n useUnknownInCatchVariables: false,\n noEmit: false,\n sourceMap: true,\n skipLibCheck: true,\n lib: [\"lib.es2022.d.ts\"],\n};\n\nconst TYPE_CORRECTNESS_CODES = new Set<number>([\n 2339, 2551,\n 2322, 2345, 2367,\n 2531, 2532, 18047, 18048,\n 7006, 7008, 7019, 7031, 7032, 7033, 7034,\n]);\n\nlet nextCheckerId = 0;\n\nexport const normalizeTypeScriptPath = (fileName: string): string =>\n fileName.replaceAll(\"\\\\\", \"/\");\n\nexport const OMP_GUEST_ENTRYPOINT = \"__ompFabricMain\";\n\n/** Guest programs execute inside this wrapper; user code starts on wrapped line 2. */\nexport const wrapFabricGuestCode = (code: string): string =>\n `async function ${OMP_GUEST_ENTRYPOINT}() {\\n${code}\\n}\\n`;\n\nclass FabricTypeChecker {\n readonly #guestFile: string;\n readonly #declarationFile: string;\n readonly #baseHost = ts.createCompilerHost(compilerOptions, true);\n readonly #stableFiles = new Map<string, ts.SourceFile>();\n readonly #declarationSource: ts.SourceFile;\n readonly #host: ts.CompilerHost;\n #sourceText = \"\";\n #sourceFile: ts.SourceFile;\n #program: ts.Program | undefined;\n\n constructor(readonly declarations: string) {\n const id = ++nextCheckerId;\n this.#guestFile = normalizeTypeScriptPath(path.resolve(`/__omp_fabric_guest_${id}.ts`));\n this.#declarationFile = normalizeTypeScriptPath(\n path.resolve(`/__omp_fabric_globals_${id}.d.ts`),\n );\n this.#sourceFile = ts.createSourceFile(\n this.#guestFile,\n \"\",\n ts.ScriptTarget.ES2022,\n true,\n );\n this.#declarationSource = ts.createSourceFile(\n this.#declarationFile,\n declarations,\n ts.ScriptTarget.ES2022,\n true,\n );\n const isGuestFile = (fileName: string): boolean =>\n this.#baseHost.getCanonicalFileName(normalizeTypeScriptPath(fileName)) ===\n this.#baseHost.getCanonicalFileName(this.#guestFile);\n const isDeclarationFile = (fileName: string): boolean =>\n this.#baseHost.getCanonicalFileName(normalizeTypeScriptPath(fileName)) ===\n this.#baseHost.getCanonicalFileName(this.#declarationFile);\n this.#host = {\n ...this.#baseHost,\n fileExists: (fileName) =>\n isGuestFile(fileName) ||\n isDeclarationFile(fileName) ||\n this.#baseHost.fileExists(fileName),\n readFile: (fileName) => {\n if (isGuestFile(fileName)) return this.#sourceText;\n if (isDeclarationFile(fileName)) return this.declarations;\n return this.#baseHost.readFile(fileName);\n },\n getSourceFile: (fileName, languageVersion, onError, shouldCreateNewSourceFile) => {\n if (isGuestFile(fileName)) return this.#sourceFile;\n if (isDeclarationFile(fileName)) return this.#declarationSource;\n const cached = this.#stableFiles.get(fileName);\n if (cached) return cached;\n const source = this.#baseHost.getSourceFile(\n fileName,\n languageVersion,\n onError,\n shouldCreateNewSourceFile,\n );\n if (source) this.#stableFiles.set(fileName, source);\n return source;\n },\n };\n }\n\n check(code: string): FabricTypeCheckResult {\n this.#sourceText = wrapFabricGuestCode(code);\n this.#sourceFile = ts.createSourceFile(\n this.#guestFile,\n this.#sourceText,\n ts.ScriptTarget.ES2022,\n true,\n );\n const program = ts.createProgram({\n rootNames: [this.#declarationFile, this.#guestFile],\n options: compilerOptions,\n host: this.#host,\n ...(this.#program ? { oldProgram: this.#program } : {}),\n });\n this.#program = program;\n const diagnostics = [\n ...program.getSyntacticDiagnostics(this.#sourceFile),\n ...program\n .getSemanticDiagnostics(this.#sourceFile)\n .filter((diagnostic) => !TYPE_CORRECTNESS_CODES.has(diagnostic.code)),\n ];\n const errors = diagnostics.map((diagnostic) => {\n const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, \"\\n\");\n if (!diagnostic.file || diagnostic.start === undefined) {\n return { line: 0, column: 0, message };\n }\n const position = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);\n return {\n line: Math.max(1, position.line),\n column: position.character + 1,\n message,\n };\n });\n if (errors.length > 0) return { errors };\n\n let javascript: string | undefined;\n let sourceMap: string | undefined;\n program.emit(this.#sourceFile, (fileName, content) => {\n if (fileName.endsWith(\".js.map\")) sourceMap = content;\n else if (fileName.endsWith(\".js\")) javascript = content;\n });\n return {\n errors,\n ...(javascript ? { javascript } : {}),\n ...(sourceMap ? { sourceMap } : {}),\n };\n }\n}\n\nconst checkerCache = new Map<string, FabricTypeChecker>();\nconst MAX_CHECKERS = 4;\n\nconst checkerFor = (declarations: string): FabricTypeChecker => {\n const cached = checkerCache.get(declarations);\n if (cached) {\n checkerCache.delete(declarations);\n checkerCache.set(declarations, cached);\n return cached;\n }\n const checker = new FabricTypeChecker(declarations);\n checkerCache.set(declarations, checker);\n while (checkerCache.size > MAX_CHECKERS) {\n const oldest = checkerCache.keys().next().value as string | undefined;\n if (oldest === undefined) break;\n checkerCache.delete(oldest);\n }\n return checker;\n};\n\nexport interface FabricTranspileResult {\n code: string;\n sourceMap?: string;\n}\n\nexport const transpileFabricCodeWithSourceMap = (code: string): FabricTranspileResult => {\n const result = ts.transpileModule(wrapFabricGuestCode(code), {\n compilerOptions: {\n target: ts.ScriptTarget.ES2022,\n module: ts.ModuleKind.ESNext,\n sourceMap: true,\n },\n });\n return {\n code: result.outputText,\n ...(result.sourceMapText ? { sourceMap: result.sourceMapText } : {}),\n };\n};\n\nexport const typeCheckFabricCode = (\n code: string,\n declarations: string,\n): FabricTypeCheckResult => checkerFor(declarations).check(code);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|