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,112 @@
|
|
|
1
|
+
import {
|
|
2
|
+
readSessionHeader
|
|
3
|
+
} from "./chunk-6QBPSZJ5.js";
|
|
4
|
+
|
|
5
|
+
// src/memory/discovery.ts
|
|
6
|
+
import fs from "node:fs";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
var SESSIONS_SUBDIR = "sessions";
|
|
9
|
+
var isJsonlFile = (name) => name.endsWith(".jsonl");
|
|
10
|
+
var encodeCwdDir = (cwd) => `--${path.resolve(cwd).replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
|
|
11
|
+
var sessionDirForCwd = (cwd, agentDir) => path.join(agentDir, SESSIONS_SUBDIR, encodeCwdDir(cwd));
|
|
12
|
+
var listJsonlInDir = (dir) => {
|
|
13
|
+
try {
|
|
14
|
+
return fs.readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isFile() && isJsonlFile(entry.name)).map((entry) => path.join(dir, entry.name));
|
|
15
|
+
} catch {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var statMtime = (file) => {
|
|
20
|
+
try {
|
|
21
|
+
return fs.statSync(file).mtimeMs;
|
|
22
|
+
} catch {
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var refFromFile = (file) => {
|
|
27
|
+
const header = readSessionHeader(file);
|
|
28
|
+
return {
|
|
29
|
+
id: header?.sessionId ?? path.basename(file, ".jsonl"),
|
|
30
|
+
file,
|
|
31
|
+
cwd: header?.cwd ?? "",
|
|
32
|
+
mtime: statMtime(file)
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
var sessionsDirRoot = (agentDir) => path.join(agentDir, SESSIONS_SUBDIR);
|
|
36
|
+
var compareRefsByRecency = (left, right) => {
|
|
37
|
+
if (right.mtime !== left.mtime) return right.mtime - left.mtime;
|
|
38
|
+
return left.file < right.file ? -1 : left.file > right.file ? 1 : 0;
|
|
39
|
+
};
|
|
40
|
+
var enumerateAllSessions = (agentDir, maxSessions) => {
|
|
41
|
+
const root = sessionsDirRoot(agentDir);
|
|
42
|
+
let projectDirs = [];
|
|
43
|
+
try {
|
|
44
|
+
projectDirs = fs.readdirSync(root, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => path.join(root, entry.name));
|
|
45
|
+
} catch {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const files = [];
|
|
49
|
+
for (const dir of projectDirs) {
|
|
50
|
+
for (const file of listJsonlInDir(dir)) files.push(file);
|
|
51
|
+
}
|
|
52
|
+
return files.map(refFromFile).sort(compareRefsByRecency).slice(0, Math.max(1, maxSessions));
|
|
53
|
+
};
|
|
54
|
+
var newestSessionInDir = (dir) => {
|
|
55
|
+
const files = listJsonlInDir(dir);
|
|
56
|
+
if (files.length === 0) return null;
|
|
57
|
+
return files.map(refFromFile).sort(compareRefsByRecency)[0];
|
|
58
|
+
};
|
|
59
|
+
var AmbiguousSessionError = class extends Error {
|
|
60
|
+
constructor(session, candidates) {
|
|
61
|
+
super(`Session id ${JSON.stringify(session)} is ambiguous; use an exact session file path.`);
|
|
62
|
+
this.session = session;
|
|
63
|
+
this.candidates = candidates;
|
|
64
|
+
this.name = "AmbiguousSessionError";
|
|
65
|
+
}
|
|
66
|
+
code = "ambiguous_session";
|
|
67
|
+
};
|
|
68
|
+
var resolveSessionTarget = (agentDir, target) => {
|
|
69
|
+
if (target.endsWith(".jsonl") && fs.existsSync(target)) {
|
|
70
|
+
return refFromFile(path.resolve(target));
|
|
71
|
+
}
|
|
72
|
+
const all = enumerateAllSessions(agentDir, Number.MAX_SAFE_INTEGER);
|
|
73
|
+
const byId = all.filter((ref) => ref.id === target);
|
|
74
|
+
if (byId.length > 1) throw new AmbiguousSessionError(target, byId.map((ref) => ref.file));
|
|
75
|
+
if (byId.length === 1) return byId[0];
|
|
76
|
+
const byStem = all.filter((ref) => path.basename(ref.file, ".jsonl") === target);
|
|
77
|
+
if (byStem.length > 1) throw new AmbiguousSessionError(target, byStem.map((ref) => ref.file));
|
|
78
|
+
return byStem[0] ?? null;
|
|
79
|
+
};
|
|
80
|
+
var resolveScope = (input) => {
|
|
81
|
+
const scope = input.scope?.trim();
|
|
82
|
+
if (scope.startsWith("session:")) {
|
|
83
|
+
const target = scope.slice("session:".length).trim();
|
|
84
|
+
const ref = resolveSessionTarget(input.agentDir, target);
|
|
85
|
+
return ref ? [ref] : [];
|
|
86
|
+
}
|
|
87
|
+
if (scope === "global") {
|
|
88
|
+
return enumerateAllSessions(input.agentDir, input.maxSessions);
|
|
89
|
+
}
|
|
90
|
+
if (scope === "project") {
|
|
91
|
+
const dir2 = sessionDirForCwd(input.cwd, input.agentDir);
|
|
92
|
+
return listJsonlInDir(dir2).map(refFromFile).sort(compareRefsByRecency).slice(0, Math.max(1, input.maxSessions));
|
|
93
|
+
}
|
|
94
|
+
if (input.sessionFile) {
|
|
95
|
+
const ref = refFromFile(input.sessionFile);
|
|
96
|
+
return [ref];
|
|
97
|
+
}
|
|
98
|
+
const dir = sessionDirForCwd(input.cwd, input.agentDir);
|
|
99
|
+
const newest = newestSessionInDir(dir);
|
|
100
|
+
return newest ? [newest] : [];
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
export {
|
|
104
|
+
encodeCwdDir,
|
|
105
|
+
sessionDirForCwd,
|
|
106
|
+
sessionsDirRoot,
|
|
107
|
+
enumerateAllSessions,
|
|
108
|
+
AmbiguousSessionError,
|
|
109
|
+
resolveSessionTarget,
|
|
110
|
+
resolveScope
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=chunk-7BIA5BJN.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/memory/discovery.ts"],
|
|
4
|
+
"sourcesContent": ["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { readSessionHeader } from \"./normalize.js\";\n\nexport interface SessionRef {\n id: string;\n file: string;\n cwd: string;\n mtime: number;\n}\n\nexport interface ResolveScopeInput {\n agentDir: string;\n cwd: string;\n scope: string;\n sessionId?: string;\n sessionFile?: string;\n maxSessions: number;\n}\n\nconst SESSIONS_SUBDIR = \"sessions\";\n\nconst isJsonlFile = (name: string): boolean => name.endsWith(\".jsonl\");\n\n/** Encode a cwd into the safe directory name OMP stores session files under. */\nexport const encodeCwdDir = (cwd: string): string =>\n `--${path.resolve(cwd).replace(/^[/\\\\]/, \"\").replace(/[/\\\\:]/g, \"-\")}--`;\n\n/** Directory OMP stores this project's session JSONL files under. */\nexport const sessionDirForCwd = (cwd: string, agentDir: string): string =>\n path.join(agentDir, SESSIONS_SUBDIR, encodeCwdDir(cwd));\n\nconst listJsonlInDir = (dir: string): string[] => {\n try {\n return fs\n .readdirSync(dir, { withFileTypes: true })\n .filter((entry) => entry.isFile() && isJsonlFile(entry.name))\n .map((entry) => path.join(dir, entry.name));\n } catch {\n return [];\n }\n};\n\nconst statMtime = (file: string): number => {\n try {\n return fs.statSync(file).mtimeMs;\n } catch {\n return 0;\n }\n};\n\nconst refFromFile = (file: string): SessionRef => {\n const header = readSessionHeader(file);\n return {\n id: header?.sessionId ?? path.basename(file, \".jsonl\"),\n file,\n cwd: header?.cwd ?? \"\",\n mtime: statMtime(file),\n };\n};\n\nexport const sessionsDirRoot = (agentDir: string): string => path.join(agentDir, SESSIONS_SUBDIR);\n\nconst compareRefsByRecency = (left: SessionRef, right: SessionRef): number => {\n if (right.mtime !== left.mtime) return right.mtime - left.mtime;\n return left.file < right.file ? -1 : left.file > right.file ? 1 : 0;\n};\n\n/**\n * Enumerate every session JSONL file under the agent dir, newest first by\n * file mtime. Bounded by `maxSessions`. Returns refs with resolved cwd and\n * sessionId from each file header (falling back to the file stem).\n */\nexport const enumerateAllSessions = (agentDir: string, maxSessions: number): SessionRef[] => {\n const root = sessionsDirRoot(agentDir);\n let projectDirs: string[] = [];\n try {\n projectDirs = fs\n .readdirSync(root, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => path.join(root, entry.name));\n } catch {\n return [];\n }\n const files: string[] = [];\n for (const dir of projectDirs) {\n for (const file of listJsonlInDir(dir)) files.push(file);\n }\n return files\n .map(refFromFile)\n .sort(compareRefsByRecency)\n .slice(0, Math.max(1, maxSessions));\n};\n\nconst newestSessionInDir = (dir: string): SessionRef | null => {\n const files = listJsonlInDir(dir);\n if (files.length === 0) return null;\n return files\n .map(refFromFile)\n .sort(compareRefsByRecency)[0]!;\n};\n\nexport class AmbiguousSessionError extends Error {\n readonly code = \"ambiguous_session\";\n\n constructor(\n readonly session: string,\n readonly candidates: string[],\n ) {\n super(`Session id ${JSON.stringify(session)} is ambiguous; use an exact session file path.`);\n this.name = \"AmbiguousSessionError\";\n }\n}\n\nexport const resolveSessionTarget = (\n agentDir: string,\n target: string,\n): SessionRef | null => {\n if (target.endsWith(\".jsonl\") && fs.existsSync(target)) {\n return refFromFile(path.resolve(target));\n }\n const all = enumerateAllSessions(agentDir, Number.MAX_SAFE_INTEGER);\n const byId = all.filter((ref) => ref.id === target);\n if (byId.length > 1) throw new AmbiguousSessionError(target, byId.map((ref) => ref.file));\n if (byId.length === 1) return byId[0]!;\n const byStem = all.filter((ref) => path.basename(ref.file, \".jsonl\") === target);\n if (byStem.length > 1) throw new AmbiguousSessionError(target, byStem.map((ref) => ref.file));\n return byStem[0] ?? null;\n};\n\n/**\n * Resolve a scope string into the concrete set of session files to search.\n *\n * - `session` (default): the current session file (from invocation context\n * if available, else the newest session for the current cwd).\n * - `project`: all sessions stored under the current cwd's default session dir.\n * - `global`: all sessions under the agent dir, bounded by `maxSessions`.\n * - `session:<id-or-path>`: one specific session by id or file path.\n */\nexport const resolveScope = (input: ResolveScopeInput): SessionRef[] => {\n const scope = input.scope?.trim();\n if (scope.startsWith(\"session:\")) {\n const target = scope.slice(\"session:\".length).trim();\n const ref = resolveSessionTarget(input.agentDir, target);\n return ref ? [ref] : [];\n }\n if (scope === \"global\") {\n return enumerateAllSessions(input.agentDir, input.maxSessions);\n }\n if (scope === \"project\") {\n const dir = sessionDirForCwd(input.cwd, input.agentDir);\n return listJsonlInDir(dir)\n .map(refFromFile)\n .sort(compareRefsByRecency)\n .slice(0, Math.max(1, input.maxSessions));\n }\n // default: session\n if (input.sessionFile) {\n const ref = refFromFile(input.sessionFile);\n return [ref];\n }\n const dir = sessionDirForCwd(input.cwd, input.agentDir);\n const newest = newestSessionInDir(dir);\n return newest ? [newest] : [];\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["dir"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// src/ui/model-picker.ts
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
var buildModelKey = (provider, id) => `${provider}/${id}`;
|
|
5
|
+
var INHERIT_VALUE = "Inherit";
|
|
6
|
+
function readModelSortLastUsed(agentDir) {
|
|
7
|
+
if (!agentDir) return {};
|
|
8
|
+
try {
|
|
9
|
+
const configPath = join(agentDir, "extensions", "pi-model-sort.json");
|
|
10
|
+
if (!existsSync(configPath)) return {};
|
|
11
|
+
const parsed = JSON.parse(readFileSync(configPath, "utf-8"));
|
|
12
|
+
return parsed.lastUsed ?? {};
|
|
13
|
+
} catch {
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function sortByLastUsed(items, lastUsed, currentModelKey) {
|
|
18
|
+
const sorted = [...items];
|
|
19
|
+
sorted.sort((a, b) => {
|
|
20
|
+
const aKey = buildModelKey(a.provider, a.id);
|
|
21
|
+
const bKey = buildModelKey(b.provider, b.id);
|
|
22
|
+
if (currentModelKey !== null) {
|
|
23
|
+
const aIsCurrent = aKey === currentModelKey;
|
|
24
|
+
const bIsCurrent = bKey === currentModelKey;
|
|
25
|
+
if (aIsCurrent && !bIsCurrent) return -1;
|
|
26
|
+
if (!aIsCurrent && bIsCurrent) return 1;
|
|
27
|
+
}
|
|
28
|
+
const aLast = lastUsed[aKey] ?? 0;
|
|
29
|
+
const bLast = lastUsed[bKey] ?? 0;
|
|
30
|
+
if (aLast !== bLast) return bLast - aLast;
|
|
31
|
+
return a.provider.localeCompare(b.provider) || a.id.localeCompare(b.id);
|
|
32
|
+
});
|
|
33
|
+
return sorted;
|
|
34
|
+
}
|
|
35
|
+
function buildModelSource(registry, agentDir) {
|
|
36
|
+
let models;
|
|
37
|
+
try {
|
|
38
|
+
models = registry.getAvailable();
|
|
39
|
+
} catch {
|
|
40
|
+
models = [];
|
|
41
|
+
}
|
|
42
|
+
return { models, lastUsed: readModelSortLastUsed(agentDir) };
|
|
43
|
+
}
|
|
44
|
+
function buildClaudeModelSource(models) {
|
|
45
|
+
return {
|
|
46
|
+
models: models.map((model) => ({
|
|
47
|
+
provider: "claude",
|
|
48
|
+
id: model.value,
|
|
49
|
+
name: model.displayName ?? model.resolvedModel ?? model.value
|
|
50
|
+
})),
|
|
51
|
+
lastUsed: {}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
var modelKey = buildModelKey;
|
|
55
|
+
|
|
56
|
+
export {
|
|
57
|
+
INHERIT_VALUE,
|
|
58
|
+
readModelSortLastUsed,
|
|
59
|
+
sortByLastUsed,
|
|
60
|
+
buildModelSource,
|
|
61
|
+
buildClaudeModelSource,
|
|
62
|
+
modelKey
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=chunk-7BOAOKWH.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ui/model-picker.ts"],
|
|
4
|
+
"sourcesContent": ["import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nexport type ModelLike = { provider: string; id: string; name?: string };\n\nexport type ClaudeModelLike = { value: string; displayName?: string; resolvedModel?: string };\n\n/** Structural shape buildModelSource needs; the real ModelRegistry satisfies this. */\ntype ModelRegistryLike = {\n getAvailable(): ModelLike[];\n};\n\nconst buildModelKey = (provider: string, id: string): string => `${provider}/${id}`;\n\n/** Value used for the \"no override\" picker entry. Stored as \"\" on disk. */\nexport const INHERIT_VALUE = \"Inherit\";\n\n/** A model list plus pi-model-sort's last-used timestamps, ready for the picker. */\nexport interface ModelSource {\n models: ModelLike[];\n lastUsed: Record<string, number>;\n}\n\n/**\n * Read pi-model-sort's last-used timestamps from\n * <agentDir>/extensions/pi-model-sort.json (best-effort). Returns {} when the\n * agent dir is unknown or the file is absent/unreadable so the picker degrades\n * to alphabetical order.\n *\n * The agent dir is injected by the caller because this module loads through a\n * native dynamic import (lazy dashboard) that cannot resolve OMP's\n * extension-loader alias for \"@oh-my-pi/pi-coding-agent\" (#13).\n */\nexport function readModelSortLastUsed(agentDir?: string): Record<string, number> {\n if (!agentDir) return {};\n try {\n const configPath = join(agentDir, \"extensions\", \"pi-model-sort.json\");\n if (!existsSync(configPath)) return {};\n const parsed = JSON.parse(readFileSync(configPath, \"utf-8\")) as {\n lastUsed?: Record<string, number>;\n };\n return parsed.lastUsed ?? {};\n } catch {\n return {};\n }\n}\n\n/**\n * Sort models the way pi-model-sort reorders the /model picker: current model\n * first, then most recently used (descending), then provider/id alphabetical.\n * Mirrors sortByLastUsed from pi-model-sort/src/index.ts so this picker matches\n * the order users see in /model.\n */\nexport function sortByLastUsed<T extends ModelLike>(\n items: T[],\n lastUsed: Record<string, number>,\n currentModelKey: string | null,\n): T[] {\n const sorted = [...items];\n sorted.sort((a, b) => {\n const aKey = buildModelKey(a.provider, a.id);\n const bKey = buildModelKey(b.provider, b.id);\n if (currentModelKey !== null) {\n const aIsCurrent = aKey === currentModelKey;\n const bIsCurrent = bKey === currentModelKey;\n if (aIsCurrent && !bIsCurrent) return -1;\n if (!aIsCurrent && bIsCurrent) return 1;\n }\n const aLast = lastUsed[aKey] ?? 0;\n const bLast = lastUsed[bKey] ?? 0;\n if (aLast !== bLast) return bLast - aLast;\n return a.provider.localeCompare(b.provider) || a.id.localeCompare(b.id);\n });\n return sorted;\n}\n\n/** Build a ModelSource from the registry, degrading to an empty list on failure. */\nexport function buildModelSource(registry: ModelRegistryLike, agentDir?: string): ModelSource {\n let models: ModelLike[];\n try {\n models = registry.getAvailable();\n } catch {\n models = [];\n }\n return { models, lastUsed: readModelSortLastUsed(agentDir) };\n}\n\nexport function buildClaudeModelSource(models: readonly ClaudeModelLike[]): ModelSource {\n return {\n models: models.map((model) => ({\n provider: \"claude\",\n id: model.value,\n name: model.displayName ?? model.resolvedModel ?? model.value,\n })),\n lastUsed: {},\n };\n}\n\n/** Build the canonical `provider/id` key used on disk and by `omp --model`. */\nexport const modelKey = buildModelKey;\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,YAAY,oBAAoB;AACzC,SAAS,YAAY;AAWrB,IAAM,gBAAgB,CAAC,UAAkB,OAAuB,GAAG,QAAQ,IAAI,EAAE;AAG1E,IAAM,gBAAgB;AAkBtB,SAAS,sBAAsB,UAA2C;AAC/E,MAAI,CAAC,SAAU,QAAO,CAAC;AACvB,MAAI;AACF,UAAM,aAAa,KAAK,UAAU,cAAc,oBAAoB;AACpE,QAAI,CAAC,WAAW,UAAU,EAAG,QAAO,CAAC;AACrC,UAAM,SAAS,KAAK,MAAM,aAAa,YAAY,OAAO,CAAC;AAG3D,WAAO,OAAO,YAAY,CAAC;AAAA,EAC7B,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAQO,SAAS,eACd,OACA,UACA,iBACK;AACL,QAAM,SAAS,CAAC,GAAG,KAAK;AACxB,SAAO,KAAK,CAAC,GAAG,MAAM;AACpB,UAAM,OAAO,cAAc,EAAE,UAAU,EAAE,EAAE;AAC3C,UAAM,OAAO,cAAc,EAAE,UAAU,EAAE,EAAE;AAC3C,QAAI,oBAAoB,MAAM;AAC5B,YAAM,aAAa,SAAS;AAC5B,YAAM,aAAa,SAAS;AAC5B,UAAI,cAAc,CAAC,WAAY,QAAO;AACtC,UAAI,CAAC,cAAc,WAAY,QAAO;AAAA,IACxC;AACA,UAAM,QAAQ,SAAS,IAAI,KAAK;AAChC,UAAM,QAAQ,SAAS,IAAI,KAAK;AAChC,QAAI,UAAU,MAAO,QAAO,QAAQ;AACpC,WAAO,EAAE,SAAS,cAAc,EAAE,QAAQ,KAAK,EAAE,GAAG,cAAc,EAAE,EAAE;AAAA,EACxE,CAAC;AACD,SAAO;AACT;AAGO,SAAS,iBAAiB,UAA6B,UAAgC;AAC5F,MAAI;AACJ,MAAI;AACF,aAAS,SAAS,aAAa;AAAA,EACjC,QAAQ;AACN,aAAS,CAAC;AAAA,EACZ;AACA,SAAO,EAAE,QAAQ,UAAU,sBAAsB,QAAQ,EAAE;AAC7D;AAEO,SAAS,uBAAuB,QAAiD;AACtF,SAAO;AAAA,IACL,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,MAC7B,UAAU;AAAA,MACV,IAAI,MAAM;AAAA,MACV,MAAM,MAAM,eAAe,MAAM,iBAAiB,MAAM;AAAA,IAC1D,EAAE;AAAA,IACF,UAAU,CAAC;AAAA,EACb;AACF;AAGO,IAAM,WAAW;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// src/async-settlement.ts
|
|
2
|
+
var abortError = (signal) => {
|
|
3
|
+
const reason = signal.reason;
|
|
4
|
+
if (reason instanceof Error) return reason;
|
|
5
|
+
return new Error(typeof reason === "string" && reason ? reason : "Operation aborted");
|
|
6
|
+
};
|
|
7
|
+
var throwIfAborted = (signal) => {
|
|
8
|
+
if (signal?.aborted) throw abortError(signal);
|
|
9
|
+
};
|
|
10
|
+
var raceWithAbort = (operation, signal) => {
|
|
11
|
+
if (!signal) return Promise.resolve(operation);
|
|
12
|
+
if (signal.aborted) return Promise.reject(abortError(signal));
|
|
13
|
+
return new Promise((resolve, reject) => {
|
|
14
|
+
let settled = false;
|
|
15
|
+
const finish = (callback) => {
|
|
16
|
+
if (settled) return;
|
|
17
|
+
settled = true;
|
|
18
|
+
signal.removeEventListener("abort", onAbort);
|
|
19
|
+
callback();
|
|
20
|
+
};
|
|
21
|
+
const onAbort = () => finish(() => reject(abortError(signal)));
|
|
22
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
23
|
+
Promise.resolve(operation).then(
|
|
24
|
+
(value) => finish(() => resolve(value)),
|
|
25
|
+
(error) => finish(() => reject(error))
|
|
26
|
+
);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
var runAbortable = (signal, operation) => {
|
|
30
|
+
try {
|
|
31
|
+
throwIfAborted(signal);
|
|
32
|
+
return raceWithAbort(Promise.resolve(operation()), signal);
|
|
33
|
+
} catch (error) {
|
|
34
|
+
return Promise.reject(error);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var settleWithin = async (operations, timeoutMs) => {
|
|
38
|
+
const pending = [...operations].map((operation) => Promise.resolve(operation));
|
|
39
|
+
if (pending.length === 0) return true;
|
|
40
|
+
let timer;
|
|
41
|
+
try {
|
|
42
|
+
return await Promise.race([
|
|
43
|
+
Promise.allSettled(pending).then(() => true),
|
|
44
|
+
new Promise((resolve) => {
|
|
45
|
+
timer = setTimeout(() => resolve(false), Math.max(0, timeoutMs));
|
|
46
|
+
})
|
|
47
|
+
]);
|
|
48
|
+
} finally {
|
|
49
|
+
if (timer) clearTimeout(timer);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
throwIfAborted,
|
|
55
|
+
runAbortable,
|
|
56
|
+
settleWithin
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=chunk-7TB7NXSL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/async-settlement.ts"],
|
|
4
|
+
"sourcesContent": ["const abortError = (signal: AbortSignal): Error => {\n const reason = signal.reason;\n if (reason instanceof Error) return reason;\n return new Error(typeof reason === \"string\" && reason ? reason : \"Operation aborted\");\n};\n\nexport const throwIfAborted = (signal: AbortSignal | undefined): void => {\n if (signal?.aborted) throw abortError(signal);\n};\n\nconst raceWithAbort = <T>(\n operation: PromiseLike<T>,\n signal: AbortSignal | undefined,\n): Promise<T> => {\n if (!signal) return Promise.resolve(operation);\n if (signal.aborted) return Promise.reject(abortError(signal));\n\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const finish = (callback: () => void): void => {\n if (settled) return;\n settled = true;\n signal.removeEventListener(\"abort\", onAbort);\n callback();\n };\n const onAbort = (): void => finish(() => reject(abortError(signal)));\n signal.addEventListener(\"abort\", onAbort, { once: true });\n Promise.resolve(operation).then(\n (value) => finish(() => resolve(value)),\n (error) => finish(() => reject(error)),\n );\n });\n};\n\nexport const runAbortable = <T>(\n signal: AbortSignal | undefined,\n operation: () => T | PromiseLike<T>,\n): Promise<T> => {\n try {\n throwIfAborted(signal);\n return raceWithAbort(Promise.resolve(operation()), signal);\n } catch (error) {\n return Promise.reject(error);\n }\n};\n\nexport const settleWithin = async (\n operations: Iterable<PromiseLike<unknown>>,\n timeoutMs: number,\n): Promise<boolean> => {\n const pending = [...operations].map((operation) => Promise.resolve(operation));\n if (pending.length === 0) return true;\n\n let timer: NodeJS.Timeout | undefined;\n try {\n return await Promise.race([\n Promise.allSettled(pending).then(() => true),\n new Promise<false>((resolve) => {\n timer = setTimeout(() => resolve(false), Math.max(0, timeoutMs));\n }),\n ]);\n } finally {\n if (timer) clearTimeout(timer);\n }\n};\n"],
|
|
5
|
+
"mappings": ";AAAA,IAAM,aAAa,CAAC,WAA+B;AACjD,QAAM,SAAS,OAAO;AACtB,MAAI,kBAAkB,MAAO,QAAO;AACpC,SAAO,IAAI,MAAM,OAAO,WAAW,YAAY,SAAS,SAAS,mBAAmB;AACtF;AAEO,IAAM,iBAAiB,CAAC,WAA0C;AACvE,MAAI,QAAQ,QAAS,OAAM,WAAW,MAAM;AAC9C;AAEA,IAAM,gBAAgB,CACpB,WACA,WACe;AACf,MAAI,CAAC,OAAQ,QAAO,QAAQ,QAAQ,SAAS;AAC7C,MAAI,OAAO,QAAS,QAAO,QAAQ,OAAO,WAAW,MAAM,CAAC;AAE5D,SAAO,IAAI,QAAW,CAAC,SAAS,WAAW;AACzC,QAAI,UAAU;AACd,UAAM,SAAS,CAAC,aAA+B;AAC7C,UAAI,QAAS;AACb,gBAAU;AACV,aAAO,oBAAoB,SAAS,OAAO;AAC3C,eAAS;AAAA,IACX;AACA,UAAM,UAAU,MAAY,OAAO,MAAM,OAAO,WAAW,MAAM,CAAC,CAAC;AACnE,WAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AACxD,YAAQ,QAAQ,SAAS,EAAE;AAAA,MACzB,CAAC,UAAU,OAAO,MAAM,QAAQ,KAAK,CAAC;AAAA,MACtC,CAAC,UAAU,OAAO,MAAM,OAAO,KAAK,CAAC;AAAA,IACvC;AAAA,EACF,CAAC;AACH;AAEO,IAAM,eAAe,CAC1B,QACA,cACe;AACf,MAAI;AACF,mBAAe,MAAM;AACrB,WAAO,cAAc,QAAQ,QAAQ,UAAU,CAAC,GAAG,MAAM;AAAA,EAC3D,SAAS,OAAO;AACd,WAAO,QAAQ,OAAO,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,eAAe,OAC1B,YACA,cACqB;AACrB,QAAM,UAAU,CAAC,GAAG,UAAU,EAAE,IAAI,CAAC,cAAc,QAAQ,QAAQ,SAAS,CAAC;AAC7E,MAAI,QAAQ,WAAW,EAAG,QAAO;AAEjC,MAAI;AACJ,MAAI;AACF,WAAO,MAAM,QAAQ,KAAK;AAAA,MACxB,QAAQ,WAAW,OAAO,EAAE,KAAK,MAAM,IAAI;AAAA,MAC3C,IAAI,QAAe,CAAC,YAAY;AAC9B,gBAAQ,WAAW,MAAM,QAAQ,KAAK,GAAG,KAAK,IAAI,GAAG,SAAS,CAAC;AAAA,MACjE,CAAC;AAAA,IACH,CAAC;AAAA,EACH,UAAE;AACA,QAAI,MAAO,cAAa,KAAK;AAAA,EAC/B;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// src/ui/dynamic-border.ts
|
|
2
|
+
var DynamicBorder = class {
|
|
3
|
+
#color;
|
|
4
|
+
constructor(color = (str) => str) {
|
|
5
|
+
this.#color = color;
|
|
6
|
+
}
|
|
7
|
+
invalidate() {
|
|
8
|
+
}
|
|
9
|
+
render(width) {
|
|
10
|
+
return [this.#color("\u2500".repeat(Math.max(1, width)))];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export {
|
|
15
|
+
DynamicBorder
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=chunk-7VIQNUPS.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ui/dynamic-border.ts"],
|
|
4
|
+
"sourcesContent": ["// Local mirror of the host's DynamicBorder component (OMP host). Fabric only\n// constructs it with an explicit color function, so the host's global-theme\n// default (unreliable across module realms) is replaced with a pass-through\n// fallback that guards the no-color case.\n\nexport type DynamicBorderColor = (text: string) => string;\n\nexport class DynamicBorder {\n readonly #color: DynamicBorderColor;\n\n constructor(color: DynamicBorderColor = (str: string) => str) {\n this.#color = color;\n }\n\n invalidate(): void {\n // No cached state to invalidate.\n }\n\n render(width: number): string[] {\n return [this.#color(\"\u2500\".repeat(Math.max(1, width)))];\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAOO,IAAM,gBAAN,MAAoB;AAAA,EAChB;AAAA,EAET,YAAY,QAA4B,CAAC,QAAgB,KAAK;AAC5D,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,aAAmB;AAAA,EAEnB;AAAA,EAEA,OAAO,OAAyB;AAC9B,WAAO,CAAC,KAAK,OAAO,SAAI,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;AAAA,EACrD;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// src/agents/claude-cli.ts
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import crossSpawn from "cross-spawn";
|
|
5
|
+
var NODE_SCRIPT_EXTENSIONS = /* @__PURE__ */ new Set([".js", ".cjs", ".mjs", ".ts", ".cts", ".mts"]);
|
|
6
|
+
var spawnCli = (command, args, options) => NODE_SCRIPT_EXTENSIONS.has(path.extname(command).toLowerCase()) ? crossSpawn(process.execPath, [command, ...args], options) : crossSpawn(command, [...args], options);
|
|
7
|
+
var MODEL_DISCOVERY_TIMEOUT_MS = 1e4;
|
|
8
|
+
var MODEL_DISCOVERY_MAX_CHARS = 2e6;
|
|
9
|
+
var CLAUDE_TOOL_NAMES = {
|
|
10
|
+
read: "Read",
|
|
11
|
+
grep: "Grep",
|
|
12
|
+
find: "Glob",
|
|
13
|
+
ls: "Glob",
|
|
14
|
+
bash: "Bash",
|
|
15
|
+
edit: "Edit",
|
|
16
|
+
write: "Write"
|
|
17
|
+
};
|
|
18
|
+
var nonEmptyString = (value) => typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
19
|
+
var asClaudeModel = (value) => {
|
|
20
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return void 0;
|
|
21
|
+
const record = value;
|
|
22
|
+
const modelValue = nonEmptyString(record.value);
|
|
23
|
+
if (!modelValue) return void 0;
|
|
24
|
+
const resolvedModel = nonEmptyString(record.resolvedModel) ?? modelValue;
|
|
25
|
+
const displayName = nonEmptyString(record.displayName) ?? modelValue;
|
|
26
|
+
const description = nonEmptyString(record.description) ?? resolvedModel;
|
|
27
|
+
const supportedEffortLevels = Array.isArray(record.supportedEffortLevels) ? record.supportedEffortLevels.filter(
|
|
28
|
+
(level) => typeof level === "string" && Boolean(level.trim())
|
|
29
|
+
) : void 0;
|
|
30
|
+
return {
|
|
31
|
+
value: modelValue,
|
|
32
|
+
resolvedModel,
|
|
33
|
+
displayName,
|
|
34
|
+
description,
|
|
35
|
+
...typeof record.supportsEffort === "boolean" ? { supportsEffort: record.supportsEffort } : {},
|
|
36
|
+
...supportedEffortLevels && supportedEffortLevels.length > 0 ? { supportedEffortLevels } : {},
|
|
37
|
+
...typeof record.supportsAdaptiveThinking === "boolean" ? { supportsAdaptiveThinking: record.supportsAdaptiveThinking } : {},
|
|
38
|
+
...typeof record.supportsFastMode === "boolean" ? { supportsFastMode: record.supportsFastMode } : {},
|
|
39
|
+
...typeof record.supportsAutoMode === "boolean" ? { supportsAutoMode: record.supportsAutoMode } : {}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
var mapClaudeTools = (tools) => {
|
|
43
|
+
const mapped = [];
|
|
44
|
+
for (const tool of tools) {
|
|
45
|
+
const claudeTool = Object.hasOwn(CLAUDE_TOOL_NAMES, tool) ? CLAUDE_TOOL_NAMES[tool] : void 0;
|
|
46
|
+
if (!claudeTool) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
`Claude runner does not support Fabric tool ${JSON.stringify(tool)}. Supported tools: ${Object.keys(
|
|
49
|
+
CLAUDE_TOOL_NAMES
|
|
50
|
+
).join(", ")}`
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
if (!mapped.includes(claudeTool)) mapped.push(claudeTool);
|
|
54
|
+
}
|
|
55
|
+
return mapped;
|
|
56
|
+
};
|
|
57
|
+
var normalizeClaudeModel = (model) => {
|
|
58
|
+
const trimmed = model.trim();
|
|
59
|
+
const normalized = trimmed.startsWith("claude/") ? trimmed.slice("claude/".length) : trimmed.startsWith("anthropic/") ? trimmed.slice("anthropic/".length) : trimmed;
|
|
60
|
+
if (!normalized) throw new Error("Claude model must include a runtime model value");
|
|
61
|
+
return normalized;
|
|
62
|
+
};
|
|
63
|
+
var claudeEffort = (thinking) => thinking === "off" || thinking === "minimal" ? "low" : thinking;
|
|
64
|
+
var buildClaudeArguments = (options) => {
|
|
65
|
+
const tools = mapClaudeTools(options.tools);
|
|
66
|
+
const args = [
|
|
67
|
+
"-p",
|
|
68
|
+
"--input-format",
|
|
69
|
+
"stream-json",
|
|
70
|
+
"--output-format",
|
|
71
|
+
"stream-json",
|
|
72
|
+
"--verbose",
|
|
73
|
+
"--include-partial-messages",
|
|
74
|
+
"--permission-mode",
|
|
75
|
+
"dontAsk",
|
|
76
|
+
"--tools",
|
|
77
|
+
tools.join(",")
|
|
78
|
+
];
|
|
79
|
+
if (tools.length > 0) args.push("--allowedTools", tools.join(","));
|
|
80
|
+
if (!options.extensions) args.push("--safe-mode");
|
|
81
|
+
if (!options.persistentSession) args.push("--no-session-persistence");
|
|
82
|
+
if (options.runnerSessionId) args.push("--resume", options.runnerSessionId);
|
|
83
|
+
if (options.model) args.push("--model", normalizeClaudeModel(options.model));
|
|
84
|
+
if (options.thinking) args.push("--effort", claudeEffort(options.thinking));
|
|
85
|
+
if (options.systemPrompt) args.push("--append-system-prompt", options.systemPrompt);
|
|
86
|
+
if (options.schema) args.push("--json-schema", options.schema);
|
|
87
|
+
if (options.name) args.push("--name", options.name);
|
|
88
|
+
return args;
|
|
89
|
+
};
|
|
90
|
+
var claudeUserMessage = (message, images = []) => ({
|
|
91
|
+
type: "user",
|
|
92
|
+
message: {
|
|
93
|
+
role: "user",
|
|
94
|
+
content: images.length === 0 ? message : [
|
|
95
|
+
{ type: "text", text: message },
|
|
96
|
+
...images.map((image) => ({
|
|
97
|
+
type: "image",
|
|
98
|
+
source: {
|
|
99
|
+
type: "base64",
|
|
100
|
+
media_type: image.mimeType,
|
|
101
|
+
data: image.data
|
|
102
|
+
}
|
|
103
|
+
}))
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
parent_tool_use_id: null,
|
|
107
|
+
session_id: "",
|
|
108
|
+
uuid: randomUUID()
|
|
109
|
+
});
|
|
110
|
+
var discoverClaudeModels = async (binary, cwd, timeoutMs = MODEL_DISCOVERY_TIMEOUT_MS) => new Promise((resolve, reject) => {
|
|
111
|
+
const requestId = `fabric-models-${randomUUID()}`;
|
|
112
|
+
const child = spawnCli(
|
|
113
|
+
binary,
|
|
114
|
+
[
|
|
115
|
+
"-p",
|
|
116
|
+
"--safe-mode",
|
|
117
|
+
"--no-session-persistence",
|
|
118
|
+
"--input-format",
|
|
119
|
+
"stream-json",
|
|
120
|
+
"--output-format",
|
|
121
|
+
"stream-json",
|
|
122
|
+
"--verbose",
|
|
123
|
+
"--permission-mode",
|
|
124
|
+
"dontAsk",
|
|
125
|
+
"--tools",
|
|
126
|
+
""
|
|
127
|
+
],
|
|
128
|
+
{ cwd, stdio: ["pipe", "pipe", "pipe"] }
|
|
129
|
+
);
|
|
130
|
+
let stdout = "";
|
|
131
|
+
let stderr = "";
|
|
132
|
+
let settled = false;
|
|
133
|
+
let timeout;
|
|
134
|
+
let forceKill;
|
|
135
|
+
const finish = (error, models) => {
|
|
136
|
+
if (settled) return;
|
|
137
|
+
settled = true;
|
|
138
|
+
if (timeout) clearTimeout(timeout);
|
|
139
|
+
child.kill("SIGTERM");
|
|
140
|
+
forceKill = setTimeout(() => child.kill("SIGKILL"), 1e3);
|
|
141
|
+
forceKill.unref();
|
|
142
|
+
if (error) reject(error);
|
|
143
|
+
else resolve(models ?? []);
|
|
144
|
+
};
|
|
145
|
+
const inspectLines = () => {
|
|
146
|
+
const lines = stdout.split("\n");
|
|
147
|
+
stdout = lines.pop() ?? "";
|
|
148
|
+
for (const line of lines) {
|
|
149
|
+
if (!line.trim()) continue;
|
|
150
|
+
let parsed;
|
|
151
|
+
try {
|
|
152
|
+
parsed = JSON.parse(line);
|
|
153
|
+
} catch {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) continue;
|
|
157
|
+
const event = parsed;
|
|
158
|
+
if (event.type !== "control_response") continue;
|
|
159
|
+
const response = event.response;
|
|
160
|
+
if (typeof response !== "object" || response === null || Array.isArray(response)) continue;
|
|
161
|
+
const envelope = response;
|
|
162
|
+
if (envelope.request_id !== requestId) continue;
|
|
163
|
+
if (envelope.subtype !== "success") {
|
|
164
|
+
finish(new Error(nonEmptyString(envelope.error) ?? "Claude model discovery failed"));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const payload = envelope.response;
|
|
168
|
+
if (typeof payload !== "object" || payload === null || Array.isArray(payload)) {
|
|
169
|
+
finish(new Error("Claude model discovery returned an invalid response"));
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
const rawModels = payload.models;
|
|
173
|
+
const models = Array.isArray(rawModels) ? rawModels.map(asClaudeModel).filter((model) => Boolean(model)) : [];
|
|
174
|
+
finish(void 0, models);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
child.stdout?.on("data", (chunk) => {
|
|
179
|
+
stdout += chunk.toString("utf8");
|
|
180
|
+
if (stdout.length > MODEL_DISCOVERY_MAX_CHARS) {
|
|
181
|
+
finish(new Error("Claude model discovery output exceeded its safety limit"));
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
inspectLines();
|
|
185
|
+
});
|
|
186
|
+
child.stderr?.on("data", (chunk) => {
|
|
187
|
+
stderr = (stderr + chunk.toString("utf8")).slice(-2e4);
|
|
188
|
+
});
|
|
189
|
+
child.once("error", (error) => finish(error));
|
|
190
|
+
child.once("close", (code) => {
|
|
191
|
+
if (forceKill) clearTimeout(forceKill);
|
|
192
|
+
if (settled) return;
|
|
193
|
+
inspectLines();
|
|
194
|
+
const detail = stderr.trim();
|
|
195
|
+
finish(
|
|
196
|
+
new Error(
|
|
197
|
+
detail || `Claude model discovery exited with code ${code ?? "unknown"} before initialization`
|
|
198
|
+
)
|
|
199
|
+
);
|
|
200
|
+
});
|
|
201
|
+
child.stdin?.on("error", () => {
|
|
202
|
+
});
|
|
203
|
+
child.stdin?.end(
|
|
204
|
+
`${JSON.stringify({
|
|
205
|
+
type: "control_request",
|
|
206
|
+
request_id: requestId,
|
|
207
|
+
request: { subtype: "initialize" }
|
|
208
|
+
})}
|
|
209
|
+
`
|
|
210
|
+
);
|
|
211
|
+
timeout = setTimeout(() => {
|
|
212
|
+
finish(new Error(`Claude model discovery timed out after ${timeoutMs}ms`));
|
|
213
|
+
}, timeoutMs);
|
|
214
|
+
timeout.unref();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
export {
|
|
218
|
+
mapClaudeTools,
|
|
219
|
+
normalizeClaudeModel,
|
|
220
|
+
claudeEffort,
|
|
221
|
+
buildClaudeArguments,
|
|
222
|
+
claudeUserMessage,
|
|
223
|
+
discoverClaudeModels
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=chunk-CT2AJ2UI.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/agents/claude-cli.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ImageContent } from \"@oh-my-pi/pi-ai\";\nimport type { ChildProcess, SpawnOptions } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport path from \"node:path\";\nimport crossSpawn from \"cross-spawn\";\nimport type { FabricThinking } from \"../thinking.js\";\n\nconst NODE_SCRIPT_EXTENSIONS = new Set([\".js\", \".cjs\", \".mjs\", \".ts\", \".cts\", \".mts\"]);\n\nconst spawnCli = (\n command: string,\n args: readonly string[],\n options: SpawnOptions,\n): ChildProcess => NODE_SCRIPT_EXTENSIONS.has(path.extname(command).toLowerCase())\n ? crossSpawn(process.execPath, [command, ...args], options)\n : crossSpawn(command, [...args], options);\n\nconst MODEL_DISCOVERY_TIMEOUT_MS = 10_000;\nconst MODEL_DISCOVERY_MAX_CHARS = 2_000_000;\n\nconst CLAUDE_TOOL_NAMES: Readonly<Record<string, string>> = {\n read: \"Read\",\n grep: \"Grep\",\n find: \"Glob\",\n ls: \"Glob\",\n bash: \"Bash\",\n edit: \"Edit\",\n write: \"Write\",\n};\n\nexport interface ClaudeModelInfo {\n value: string;\n resolvedModel: string;\n displayName: string;\n description: string;\n supportsEffort?: boolean;\n supportedEffortLevels?: string[];\n supportsAdaptiveThinking?: boolean;\n supportsFastMode?: boolean;\n supportsAutoMode?: boolean;\n}\n\ninterface ClaudeRunArguments {\n model?: string;\n thinking?: FabricThinking;\n tools: string[];\n extensions: boolean;\n systemPrompt?: string;\n schema?: string;\n runnerSessionId?: string;\n persistentSession: boolean;\n name?: string;\n}\n\nconst nonEmptyString = (value: unknown): string | undefined =>\n typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n\nconst asClaudeModel = (value: unknown): ClaudeModelInfo | undefined => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return undefined;\n const record = value as Record<string, unknown>;\n const modelValue = nonEmptyString(record.value);\n if (!modelValue) return undefined;\n const resolvedModel = nonEmptyString(record.resolvedModel) ?? modelValue;\n const displayName = nonEmptyString(record.displayName) ?? modelValue;\n const description = nonEmptyString(record.description) ?? resolvedModel;\n const supportedEffortLevels = Array.isArray(record.supportedEffortLevels)\n ? record.supportedEffortLevels.filter(\n (level): level is string => typeof level === \"string\" && Boolean(level.trim()),\n )\n : undefined;\n return {\n value: modelValue,\n resolvedModel,\n displayName,\n description,\n ...(typeof record.supportsEffort === \"boolean\"\n ? { supportsEffort: record.supportsEffort }\n : {}),\n ...(supportedEffortLevels && supportedEffortLevels.length > 0\n ? { supportedEffortLevels }\n : {}),\n ...(typeof record.supportsAdaptiveThinking === \"boolean\"\n ? { supportsAdaptiveThinking: record.supportsAdaptiveThinking }\n : {}),\n ...(typeof record.supportsFastMode === \"boolean\"\n ? { supportsFastMode: record.supportsFastMode }\n : {}),\n ...(typeof record.supportsAutoMode === \"boolean\"\n ? { supportsAutoMode: record.supportsAutoMode }\n : {}),\n };\n};\n\nexport const mapClaudeTools = (tools: readonly string[]): string[] => {\n const mapped: string[] = [];\n for (const tool of tools) {\n const claudeTool = Object.hasOwn(CLAUDE_TOOL_NAMES, tool)\n ? CLAUDE_TOOL_NAMES[tool]\n : undefined;\n if (!claudeTool) {\n throw new Error(\n `Claude runner does not support Fabric tool ${JSON.stringify(tool)}. Supported tools: ${Object.keys(\n CLAUDE_TOOL_NAMES,\n ).join(\", \")}`,\n );\n }\n if (!mapped.includes(claudeTool)) mapped.push(claudeTool);\n }\n return mapped;\n};\n\nexport const normalizeClaudeModel = (model: string): string => {\n const trimmed = model.trim();\n const normalized = trimmed.startsWith(\"claude/\")\n ? trimmed.slice(\"claude/\".length)\n : trimmed.startsWith(\"anthropic/\")\n ? trimmed.slice(\"anthropic/\".length)\n : trimmed;\n if (!normalized) throw new Error(\"Claude model must include a runtime model value\");\n return normalized;\n};\n\nexport const claudeEffort = (thinking: FabricThinking): string =>\n thinking === \"off\" || thinking === \"minimal\" ? \"low\" : thinking;\n\nexport const buildClaudeArguments = (options: ClaudeRunArguments): string[] => {\n const tools = mapClaudeTools(options.tools);\n const args = [\n \"-p\",\n \"--input-format\",\n \"stream-json\",\n \"--output-format\",\n \"stream-json\",\n \"--verbose\",\n \"--include-partial-messages\",\n \"--permission-mode\",\n \"dontAsk\",\n \"--tools\",\n tools.join(\",\"),\n ];\n if (tools.length > 0) args.push(\"--allowedTools\", tools.join(\",\"));\n if (!options.extensions) args.push(\"--safe-mode\");\n if (!options.persistentSession) args.push(\"--no-session-persistence\");\n if (options.runnerSessionId) args.push(\"--resume\", options.runnerSessionId);\n if (options.model) args.push(\"--model\", normalizeClaudeModel(options.model));\n if (options.thinking) args.push(\"--effort\", claudeEffort(options.thinking));\n if (options.systemPrompt) args.push(\"--append-system-prompt\", options.systemPrompt);\n if (options.schema) args.push(\"--json-schema\", options.schema);\n if (options.name) args.push(\"--name\", options.name);\n return args;\n};\n\nexport const claudeUserMessage = (\n message: string,\n images: readonly ImageContent[] = [],\n): Record<string, unknown> => ({\n type: \"user\",\n message: {\n role: \"user\",\n content: images.length === 0\n ? message\n : [\n { type: \"text\", text: message },\n ...images.map((image) => ({\n type: \"image\",\n source: {\n type: \"base64\",\n media_type: image.mimeType,\n data: image.data,\n },\n })),\n ],\n },\n parent_tool_use_id: null,\n session_id: \"\",\n uuid: randomUUID(),\n});\n\nexport const discoverClaudeModels = async (\n binary: string,\n cwd: string,\n timeoutMs = MODEL_DISCOVERY_TIMEOUT_MS,\n): Promise<ClaudeModelInfo[]> =>\n new Promise<ClaudeModelInfo[]>((resolve, reject) => {\n const requestId = `fabric-models-${randomUUID()}`;\n const child = spawnCli(\n binary,\n [\n \"-p\",\n \"--safe-mode\",\n \"--no-session-persistence\",\n \"--input-format\",\n \"stream-json\",\n \"--output-format\",\n \"stream-json\",\n \"--verbose\",\n \"--permission-mode\",\n \"dontAsk\",\n \"--tools\",\n \"\",\n ],\n { cwd, stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n let stdout = \"\";\n let stderr = \"\";\n let settled = false;\n let timeout: NodeJS.Timeout | undefined;\n let forceKill: NodeJS.Timeout | undefined;\n const finish = (error: Error | undefined, models?: ClaudeModelInfo[]): void => {\n if (settled) return;\n settled = true;\n if (timeout) clearTimeout(timeout);\n child.kill(\"SIGTERM\");\n forceKill = setTimeout(() => child.kill(\"SIGKILL\"), 1_000);\n forceKill.unref();\n if (error) reject(error);\n else resolve(models ?? []);\n };\n const inspectLines = (): void => {\n const lines = stdout.split(\"\\n\");\n stdout = lines.pop() ?? \"\";\n for (const line of lines) {\n if (!line.trim()) continue;\n let parsed: unknown;\n try {\n parsed = JSON.parse(line) as unknown;\n } catch {\n continue;\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) continue;\n const event = parsed as Record<string, unknown>;\n if (event.type !== \"control_response\") continue;\n const response = event.response;\n if (typeof response !== \"object\" || response === null || Array.isArray(response)) continue;\n const envelope = response as Record<string, unknown>;\n if (envelope.request_id !== requestId) continue;\n if (envelope.subtype !== \"success\") {\n finish(new Error(nonEmptyString(envelope.error) ?? \"Claude model discovery failed\"));\n return;\n }\n const payload = envelope.response;\n if (typeof payload !== \"object\" || payload === null || Array.isArray(payload)) {\n finish(new Error(\"Claude model discovery returned an invalid response\"));\n return;\n }\n const rawModels = (payload as Record<string, unknown>).models;\n const models = Array.isArray(rawModels)\n ? rawModels.map(asClaudeModel).filter((model): model is ClaudeModelInfo => Boolean(model))\n : [];\n finish(undefined, models);\n return;\n }\n };\n child.stdout?.on(\"data\", (chunk: Buffer) => {\n stdout += chunk.toString(\"utf8\");\n if (stdout.length > MODEL_DISCOVERY_MAX_CHARS) {\n finish(new Error(\"Claude model discovery output exceeded its safety limit\"));\n return;\n }\n inspectLines();\n });\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n stderr = (stderr + chunk.toString(\"utf8\")).slice(-20_000);\n });\n child.once(\"error\", (error) => finish(error));\n child.once(\"close\", (code) => {\n if (forceKill) clearTimeout(forceKill);\n if (settled) return;\n inspectLines();\n const detail = stderr.trim();\n finish(\n new Error(\n detail ||\n `Claude model discovery exited with code ${code ?? \"unknown\"} before initialization`,\n ),\n );\n });\n child.stdin?.on(\"error\", () => {});\n child.stdin?.end(\n `${JSON.stringify({\n type: \"control_request\",\n request_id: requestId,\n request: { subtype: \"initialize\" },\n })}\\n`,\n );\n timeout = setTimeout(() => {\n finish(new Error(`Claude model discovery timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeout.unref();\n });\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|