opentasks 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +344 -1
- package/dist/__tests__/cli-tools.test.d.ts +8 -0
- package/dist/__tests__/cli-tools.test.d.ts.map +1 -0
- package/dist/__tests__/cli-tools.test.js +546 -0
- package/dist/__tests__/cli-tools.test.js.map +1 -0
- package/dist/__tests__/cli.test.d.ts +5 -0
- package/dist/__tests__/cli.test.d.ts.map +1 -0
- package/dist/__tests__/cli.test.js +77 -0
- package/dist/__tests__/cli.test.js.map +1 -0
- package/dist/__tests__/p1-p3-gaps.test.d.ts +2 -0
- package/dist/__tests__/p1-p3-gaps.test.d.ts.map +1 -0
- package/dist/__tests__/p1-p3-gaps.test.js +463 -0
- package/dist/__tests__/p1-p3-gaps.test.js.map +1 -0
- package/dist/cli.d.ts +19 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +702 -23
- package/dist/cli.js.map +1 -1
- package/dist/client/__tests__/client-crud.test.d.ts +7 -0
- package/dist/client/__tests__/client-crud.test.d.ts.map +1 -0
- package/dist/client/__tests__/client-crud.test.js +404 -0
- package/dist/client/__tests__/client-crud.test.js.map +1 -0
- package/dist/client/__tests__/client.test.d.ts +5 -0
- package/dist/client/__tests__/client.test.d.ts.map +1 -0
- package/dist/client/__tests__/client.test.js +518 -0
- package/dist/client/__tests__/client.test.js.map +1 -0
- package/dist/client/client.d.ts +228 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +393 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +9 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/__tests__/defaults.test.d.ts +2 -0
- package/dist/config/__tests__/defaults.test.d.ts.map +1 -0
- package/dist/config/__tests__/defaults.test.js +57 -0
- package/dist/config/__tests__/defaults.test.js.map +1 -0
- package/dist/config/__tests__/env.test.d.ts +2 -0
- package/dist/config/__tests__/env.test.d.ts.map +1 -0
- package/dist/config/__tests__/env.test.js +136 -0
- package/dist/config/__tests__/env.test.js.map +1 -0
- package/dist/config/__tests__/index.test.d.ts +2 -0
- package/dist/config/__tests__/index.test.d.ts.map +1 -0
- package/dist/config/__tests__/index.test.js +113 -0
- package/dist/config/__tests__/index.test.js.map +1 -0
- package/dist/config/__tests__/loader.test.d.ts +2 -0
- package/dist/config/__tests__/loader.test.d.ts.map +1 -0
- package/dist/config/__tests__/loader.test.js +128 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/__tests__/merge.test.d.ts +2 -0
- package/dist/config/__tests__/merge.test.d.ts.map +1 -0
- package/dist/config/__tests__/merge.test.js +79 -0
- package/dist/config/__tests__/merge.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +2 -0
- package/dist/config/__tests__/schema.test.d.ts.map +1 -0
- package/dist/config/__tests__/schema.test.js +300 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/defaults.d.ts +13 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +15 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/env.d.ts +14 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +130 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/errors.d.ts +21 -0
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/errors.js +30 -0
- package/dist/config/errors.js.map +1 -0
- package/dist/config/index.d.ts +21 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +41 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +8 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +87 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/merge.d.ts +12 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +54 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/schema.d.ts +644 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +491 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/__tests__/conditional-redirects.test.d.ts +2 -0
- package/dist/core/__tests__/conditional-redirects.test.d.ts.map +1 -0
- package/dist/core/__tests__/conditional-redirects.test.js +83 -0
- package/dist/core/__tests__/conditional-redirects.test.js.map +1 -0
- package/dist/core/__tests__/connections.test.d.ts +2 -0
- package/dist/core/__tests__/connections.test.d.ts.map +1 -0
- package/dist/core/__tests__/connections.test.js +158 -0
- package/dist/core/__tests__/connections.test.js.map +1 -0
- package/dist/core/__tests__/hash.test.d.ts +2 -0
- package/dist/core/__tests__/hash.test.d.ts.map +1 -0
- package/dist/core/__tests__/hash.test.js +139 -0
- package/dist/core/__tests__/hash.test.js.map +1 -0
- package/dist/core/__tests__/id.test.d.ts +2 -0
- package/dist/core/__tests__/id.test.d.ts.map +1 -0
- package/dist/core/__tests__/id.test.js +142 -0
- package/dist/core/__tests__/id.test.js.map +1 -0
- package/dist/core/__tests__/location.test.d.ts +2 -0
- package/dist/core/__tests__/location.test.d.ts.map +1 -0
- package/dist/core/__tests__/location.test.js +77 -0
- package/dist/core/__tests__/location.test.js.map +1 -0
- package/dist/core/__tests__/merge-driver.test.d.ts +2 -0
- package/dist/core/__tests__/merge-driver.test.d.ts.map +1 -0
- package/dist/core/__tests__/merge-driver.test.js +218 -0
- package/dist/core/__tests__/merge-driver.test.js.map +1 -0
- package/dist/core/__tests__/redirects.test.d.ts +2 -0
- package/dist/core/__tests__/redirects.test.d.ts.map +1 -0
- package/dist/core/__tests__/redirects.test.js +123 -0
- package/dist/core/__tests__/redirects.test.js.map +1 -0
- package/dist/core/__tests__/resolve-location-target.test.d.ts +8 -0
- package/dist/core/__tests__/resolve-location-target.test.d.ts.map +1 -0
- package/dist/core/__tests__/resolve-location-target.test.js +303 -0
- package/dist/core/__tests__/resolve-location-target.test.js.map +1 -0
- package/dist/core/__tests__/uri.test.d.ts +2 -0
- package/dist/core/__tests__/uri.test.d.ts.map +1 -0
- package/dist/core/__tests__/uri.test.js +159 -0
- package/dist/core/__tests__/uri.test.js.map +1 -0
- package/dist/core/__tests__/worktree.test.d.ts +2 -0
- package/dist/core/__tests__/worktree.test.d.ts.map +1 -0
- package/dist/core/__tests__/worktree.test.js +120 -0
- package/dist/core/__tests__/worktree.test.js.map +1 -0
- package/dist/core/conditional-redirects.d.ts +42 -0
- package/dist/core/conditional-redirects.d.ts.map +1 -0
- package/dist/core/conditional-redirects.js +59 -0
- package/dist/core/conditional-redirects.js.map +1 -0
- package/dist/core/connections.d.ts +87 -0
- package/dist/core/connections.d.ts.map +1 -0
- package/dist/core/connections.js +160 -0
- package/dist/core/connections.js.map +1 -0
- package/dist/core/discover.d.ts +39 -0
- package/dist/core/discover.d.ts.map +1 -0
- package/dist/core/discover.js +136 -0
- package/dist/core/discover.js.map +1 -0
- package/dist/core/hash.d.ts +25 -0
- package/dist/core/hash.d.ts.map +1 -0
- package/dist/core/hash.js +62 -0
- package/dist/core/hash.js.map +1 -0
- package/dist/core/id.d.ts +79 -0
- package/dist/core/id.d.ts.map +1 -0
- package/dist/core/id.js +141 -0
- package/dist/core/id.js.map +1 -0
- package/dist/core/index.d.ts +15 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +24 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/location.d.ts +70 -0
- package/dist/core/location.d.ts.map +1 -0
- package/dist/core/location.js +121 -0
- package/dist/core/location.js.map +1 -0
- package/dist/core/merge-driver.d.ts +50 -0
- package/dist/core/merge-driver.d.ts.map +1 -0
- package/dist/core/merge-driver.js +258 -0
- package/dist/core/merge-driver.js.map +1 -0
- package/dist/core/redirects.d.ts +91 -0
- package/dist/core/redirects.d.ts.map +1 -0
- package/dist/core/redirects.js +113 -0
- package/dist/core/redirects.js.map +1 -0
- package/dist/core/uri.d.ts +105 -0
- package/dist/core/uri.d.ts.map +1 -0
- package/dist/core/uri.js +190 -0
- package/dist/core/uri.js.map +1 -0
- package/dist/core/worktree.d.ts +106 -0
- package/dist/core/worktree.d.ts.map +1 -0
- package/dist/core/worktree.js +394 -0
- package/dist/core/worktree.js.map +1 -0
- package/dist/daemon/__tests__/flush.test.d.ts +5 -0
- package/dist/daemon/__tests__/flush.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/flush.test.js +213 -0
- package/dist/daemon/__tests__/flush.test.js.map +1 -0
- package/dist/daemon/__tests__/integration.test.d.ts +7 -0
- package/dist/daemon/__tests__/integration.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/integration.test.js +276 -0
- package/dist/daemon/__tests__/integration.test.js.map +1 -0
- package/dist/daemon/__tests__/ipc.test.d.ts +5 -0
- package/dist/daemon/__tests__/ipc.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/ipc.test.js +314 -0
- package/dist/daemon/__tests__/ipc.test.js.map +1 -0
- package/dist/daemon/__tests__/lifecycle.test.d.ts +5 -0
- package/dist/daemon/__tests__/lifecycle.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/lifecycle.test.js +301 -0
- package/dist/daemon/__tests__/lifecycle.test.js.map +1 -0
- package/dist/daemon/__tests__/lock.test.d.ts +5 -0
- package/dist/daemon/__tests__/lock.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/lock.test.js +192 -0
- package/dist/daemon/__tests__/lock.test.js.map +1 -0
- package/dist/daemon/__tests__/methods/graph.test.d.ts +5 -0
- package/dist/daemon/__tests__/methods/graph.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/methods/graph.test.js +309 -0
- package/dist/daemon/__tests__/methods/graph.test.js.map +1 -0
- package/dist/daemon/__tests__/methods/provider.test.d.ts +7 -0
- package/dist/daemon/__tests__/methods/provider.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/methods/provider.test.js +181 -0
- package/dist/daemon/__tests__/methods/provider.test.js.map +1 -0
- package/dist/daemon/__tests__/methods/tools.test.d.ts +5 -0
- package/dist/daemon/__tests__/methods/tools.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/methods/tools.test.js +587 -0
- package/dist/daemon/__tests__/methods/tools.test.js.map +1 -0
- package/dist/daemon/__tests__/multi-location.test.d.ts +8 -0
- package/dist/daemon/__tests__/multi-location.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/multi-location.test.js +669 -0
- package/dist/daemon/__tests__/multi-location.test.js.map +1 -0
- package/dist/daemon/__tests__/registry.test.d.ts +5 -0
- package/dist/daemon/__tests__/registry.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/registry.test.js +208 -0
- package/dist/daemon/__tests__/registry.test.js.map +1 -0
- package/dist/daemon/__tests__/watcher.test.d.ts +5 -0
- package/dist/daemon/__tests__/watcher.test.d.ts.map +1 -0
- package/dist/daemon/__tests__/watcher.test.js +234 -0
- package/dist/daemon/__tests__/watcher.test.js.map +1 -0
- package/dist/daemon/entire-linker.d.ts +68 -0
- package/dist/daemon/entire-linker.d.ts.map +1 -0
- package/dist/daemon/entire-linker.js +439 -0
- package/dist/daemon/entire-linker.js.map +1 -0
- package/dist/daemon/entire-watcher.d.ts +66 -0
- package/dist/daemon/entire-watcher.d.ts.map +1 -0
- package/dist/daemon/entire-watcher.js +258 -0
- package/dist/daemon/entire-watcher.js.map +1 -0
- package/dist/daemon/factory.d.ts +59 -0
- package/dist/daemon/factory.d.ts.map +1 -0
- package/dist/daemon/factory.js +72 -0
- package/dist/daemon/factory.js.map +1 -0
- package/dist/daemon/flush.d.ts +51 -0
- package/dist/daemon/flush.d.ts.map +1 -0
- package/dist/daemon/flush.js +89 -0
- package/dist/daemon/flush.js.map +1 -0
- package/dist/daemon/index.d.ts +39 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +24 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/ipc.d.ts +97 -0
- package/dist/daemon/ipc.d.ts.map +1 -0
- package/dist/daemon/ipc.js +304 -0
- package/dist/daemon/ipc.js.map +1 -0
- package/dist/daemon/lifecycle.d.ts +85 -0
- package/dist/daemon/lifecycle.d.ts.map +1 -0
- package/dist/daemon/lifecycle.js +754 -0
- package/dist/daemon/lifecycle.js.map +1 -0
- package/dist/daemon/location-state.d.ts +85 -0
- package/dist/daemon/location-state.d.ts.map +1 -0
- package/dist/daemon/location-state.js +291 -0
- package/dist/daemon/location-state.js.map +1 -0
- package/dist/daemon/lock.d.ts +29 -0
- package/dist/daemon/lock.d.ts.map +1 -0
- package/dist/daemon/lock.js +131 -0
- package/dist/daemon/lock.js.map +1 -0
- package/dist/daemon/methods/__tests__/graph.test.d.ts +5 -0
- package/dist/daemon/methods/__tests__/graph.test.d.ts.map +1 -0
- package/dist/daemon/methods/__tests__/graph.test.js +274 -0
- package/dist/daemon/methods/__tests__/graph.test.js.map +1 -0
- package/dist/daemon/methods/__tests__/provider.test.d.ts +5 -0
- package/dist/daemon/methods/__tests__/provider.test.d.ts.map +1 -0
- package/dist/daemon/methods/__tests__/provider.test.js +184 -0
- package/dist/daemon/methods/__tests__/provider.test.js.map +1 -0
- package/dist/daemon/methods/__tests__/tools.test.d.ts +5 -0
- package/dist/daemon/methods/__tests__/tools.test.d.ts.map +1 -0
- package/dist/daemon/methods/__tests__/tools.test.js +295 -0
- package/dist/daemon/methods/__tests__/tools.test.js.map +1 -0
- package/dist/daemon/methods/archive.d.ts +22 -0
- package/dist/daemon/methods/archive.d.ts.map +1 -0
- package/dist/daemon/methods/archive.js +107 -0
- package/dist/daemon/methods/archive.js.map +1 -0
- package/dist/daemon/methods/graph.d.ts +26 -0
- package/dist/daemon/methods/graph.d.ts.map +1 -0
- package/dist/daemon/methods/graph.js +157 -0
- package/dist/daemon/methods/graph.js.map +1 -0
- package/dist/daemon/methods/lifecycle.d.ts +54 -0
- package/dist/daemon/methods/lifecycle.d.ts.map +1 -0
- package/dist/daemon/methods/lifecycle.js +46 -0
- package/dist/daemon/methods/lifecycle.js.map +1 -0
- package/dist/daemon/methods/location.d.ts +24 -0
- package/dist/daemon/methods/location.d.ts.map +1 -0
- package/dist/daemon/methods/location.js +72 -0
- package/dist/daemon/methods/location.js.map +1 -0
- package/dist/daemon/methods/provider.d.ts +22 -0
- package/dist/daemon/methods/provider.d.ts.map +1 -0
- package/dist/daemon/methods/provider.js +72 -0
- package/dist/daemon/methods/provider.js.map +1 -0
- package/dist/daemon/methods/tools.d.ts +23 -0
- package/dist/daemon/methods/tools.d.ts.map +1 -0
- package/dist/daemon/methods/tools.js +111 -0
- package/dist/daemon/methods/tools.js.map +1 -0
- package/dist/daemon/registry.d.ts +35 -0
- package/dist/daemon/registry.d.ts.map +1 -0
- package/dist/daemon/registry.js +189 -0
- package/dist/daemon/registry.js.map +1 -0
- package/dist/daemon/types.d.ts +101 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +19 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/daemon/watcher.d.ts +62 -0
- package/dist/daemon/watcher.d.ts.map +1 -0
- package/dist/daemon/watcher.js +142 -0
- package/dist/daemon/watcher.js.map +1 -0
- package/dist/graph/EdgeTypeRegistry.d.ts +134 -0
- package/dist/graph/EdgeTypeRegistry.d.ts.map +1 -0
- package/dist/graph/EdgeTypeRegistry.js +255 -0
- package/dist/graph/EdgeTypeRegistry.js.map +1 -0
- package/dist/graph/FederatedGraph.d.ts +296 -0
- package/dist/graph/FederatedGraph.d.ts.map +1 -0
- package/dist/graph/FederatedGraph.js +406 -0
- package/dist/graph/FederatedGraph.js.map +1 -0
- package/dist/graph/GraphologyAdapter.d.ts +151 -0
- package/dist/graph/GraphologyAdapter.d.ts.map +1 -0
- package/dist/graph/GraphologyAdapter.js +209 -0
- package/dist/graph/GraphologyAdapter.js.map +1 -0
- package/dist/graph/HydratingFederatedGraph.d.ts +151 -0
- package/dist/graph/HydratingFederatedGraph.d.ts.map +1 -0
- package/dist/graph/HydratingFederatedGraph.js +327 -0
- package/dist/graph/HydratingFederatedGraph.js.map +1 -0
- package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts +2 -0
- package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts.map +1 -0
- package/dist/graph/__tests__/EdgeTypeRegistry.test.js +212 -0
- package/dist/graph/__tests__/EdgeTypeRegistry.test.js.map +1 -0
- package/dist/graph/__tests__/FederatedGraph.test.d.ts +2 -0
- package/dist/graph/__tests__/FederatedGraph.test.d.ts.map +1 -0
- package/dist/graph/__tests__/FederatedGraph.test.js +661 -0
- package/dist/graph/__tests__/FederatedGraph.test.js.map +1 -0
- package/dist/graph/__tests__/GraphologyAdapter.test.d.ts +2 -0
- package/dist/graph/__tests__/GraphologyAdapter.test.d.ts.map +1 -0
- package/dist/graph/__tests__/GraphologyAdapter.test.js +326 -0
- package/dist/graph/__tests__/GraphologyAdapter.test.js.map +1 -0
- package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts +2 -0
- package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts.map +1 -0
- package/dist/graph/__tests__/HydratingFederatedGraph.test.js +587 -0
- package/dist/graph/__tests__/HydratingFederatedGraph.test.js.map +1 -0
- package/dist/graph/__tests__/debounce.test.d.ts +5 -0
- package/dist/graph/__tests__/debounce.test.d.ts.map +1 -0
- package/dist/graph/__tests__/debounce.test.js +195 -0
- package/dist/graph/__tests__/debounce.test.js.map +1 -0
- package/dist/graph/__tests__/edge-cases.test.d.ts +8 -0
- package/dist/graph/__tests__/edge-cases.test.d.ts.map +1 -0
- package/dist/graph/__tests__/edge-cases.test.js +472 -0
- package/dist/graph/__tests__/edge-cases.test.js.map +1 -0
- package/dist/graph/__tests__/expansion.test.d.ts +2 -0
- package/dist/graph/__tests__/expansion.test.d.ts.map +1 -0
- package/dist/graph/__tests__/expansion.test.js +105 -0
- package/dist/graph/__tests__/expansion.test.js.map +1 -0
- package/dist/graph/__tests__/provider-store.test.d.ts +5 -0
- package/dist/graph/__tests__/provider-store.test.d.ts.map +1 -0
- package/dist/graph/__tests__/provider-store.test.js +791 -0
- package/dist/graph/__tests__/provider-store.test.js.map +1 -0
- package/dist/graph/__tests__/query.test.d.ts +5 -0
- package/dist/graph/__tests__/query.test.d.ts.map +1 -0
- package/dist/graph/__tests__/query.test.js +774 -0
- package/dist/graph/__tests__/query.test.js.map +1 -0
- package/dist/graph/__tests__/store.test.d.ts +5 -0
- package/dist/graph/__tests__/store.test.d.ts.map +1 -0
- package/dist/graph/__tests__/store.test.js +489 -0
- package/dist/graph/__tests__/store.test.js.map +1 -0
- package/dist/graph/__tests__/sync.test.d.ts +5 -0
- package/dist/graph/__tests__/sync.test.d.ts.map +1 -0
- package/dist/graph/__tests__/sync.test.js +129 -0
- package/dist/graph/__tests__/sync.test.js.map +1 -0
- package/dist/graph/__tests__/validation.test.d.ts +2 -0
- package/dist/graph/__tests__/validation.test.d.ts.map +1 -0
- package/dist/graph/__tests__/validation.test.js +521 -0
- package/dist/graph/__tests__/validation.test.js.map +1 -0
- package/dist/graph/coordination.d.ts +190 -0
- package/dist/graph/coordination.d.ts.map +1 -0
- package/dist/graph/coordination.js +180 -0
- package/dist/graph/coordination.js.map +1 -0
- package/dist/graph/debounce.d.ts +47 -0
- package/dist/graph/debounce.d.ts.map +1 -0
- package/dist/graph/debounce.js +95 -0
- package/dist/graph/debounce.js.map +1 -0
- package/dist/graph/expansion.d.ts +64 -0
- package/dist/graph/expansion.d.ts.map +1 -0
- package/dist/graph/expansion.js +205 -0
- package/dist/graph/expansion.js.map +1 -0
- package/dist/graph/history.d.ts +186 -0
- package/dist/graph/history.d.ts.map +1 -0
- package/dist/graph/history.js +155 -0
- package/dist/graph/history.js.map +1 -0
- package/dist/graph/index.d.ts +35 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +22 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/provider-store.d.ts +211 -0
- package/dist/graph/provider-store.d.ts.map +1 -0
- package/dist/graph/provider-store.js +594 -0
- package/dist/graph/provider-store.js.map +1 -0
- package/dist/graph/query.d.ts +90 -0
- package/dist/graph/query.d.ts.map +1 -0
- package/dist/graph/query.js +463 -0
- package/dist/graph/query.js.map +1 -0
- package/dist/graph/store.d.ts +71 -0
- package/dist/graph/store.d.ts.map +1 -0
- package/dist/graph/store.js +531 -0
- package/dist/graph/store.js.map +1 -0
- package/dist/graph/sync.d.ts +48 -0
- package/dist/graph/sync.d.ts.map +1 -0
- package/dist/graph/sync.js +60 -0
- package/dist/graph/sync.js.map +1 -0
- package/dist/graph/types.d.ts +291 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +19 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/graph/validation.d.ts +26 -0
- package/dist/graph/validation.d.ts.map +1 -0
- package/dist/graph/validation.js +338 -0
- package/dist/graph/validation.js.map +1 -0
- package/dist/index.d.ts +25 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -25
- package/dist/index.js.map +1 -1
- package/dist/materialization/archiver.d.ts +12 -0
- package/dist/materialization/archiver.d.ts.map +1 -0
- package/dist/materialization/archiver.js +273 -0
- package/dist/materialization/archiver.js.map +1 -0
- package/dist/materialization/git-archive-store.d.ts +17 -0
- package/dist/materialization/git-archive-store.d.ts.map +1 -0
- package/dist/materialization/git-archive-store.js +509 -0
- package/dist/materialization/git-archive-store.js.map +1 -0
- package/dist/materialization/git-remote-store.d.ts +22 -0
- package/dist/materialization/git-remote-store.d.ts.map +1 -0
- package/dist/materialization/git-remote-store.js +448 -0
- package/dist/materialization/git-remote-store.js.map +1 -0
- package/dist/materialization/graph-id.d.ts +53 -0
- package/dist/materialization/graph-id.d.ts.map +1 -0
- package/dist/materialization/graph-id.js +163 -0
- package/dist/materialization/graph-id.js.map +1 -0
- package/dist/materialization/http-remote-store.d.ts +12 -0
- package/dist/materialization/http-remote-store.d.ts.map +1 -0
- package/dist/materialization/http-remote-store.js +143 -0
- package/dist/materialization/http-remote-store.js.map +1 -0
- package/dist/materialization/index.d.ts +15 -0
- package/dist/materialization/index.d.ts.map +1 -0
- package/dist/materialization/index.js +17 -0
- package/dist/materialization/index.js.map +1 -0
- package/dist/materialization/remote-store-factory.d.ts +17 -0
- package/dist/materialization/remote-store-factory.d.ts.map +1 -0
- package/dist/materialization/remote-store-factory.js +46 -0
- package/dist/materialization/remote-store-factory.js.map +1 -0
- package/dist/materialization/snapshot.d.ts +34 -0
- package/dist/materialization/snapshot.d.ts.map +1 -0
- package/dist/materialization/snapshot.js +177 -0
- package/dist/materialization/snapshot.js.map +1 -0
- package/dist/materialization/types.d.ts +300 -0
- package/dist/materialization/types.d.ts.map +1 -0
- package/dist/materialization/types.js +17 -0
- package/dist/materialization/types.js.map +1 -0
- package/dist/providers/__tests__/beads.test.d.ts +5 -0
- package/dist/providers/__tests__/beads.test.d.ts.map +1 -0
- package/dist/providers/__tests__/beads.test.js +591 -0
- package/dist/providers/__tests__/beads.test.js.map +1 -0
- package/dist/providers/__tests__/claude-tasks.test.d.ts +5 -0
- package/dist/providers/__tests__/claude-tasks.test.d.ts.map +1 -0
- package/dist/providers/__tests__/claude-tasks.test.js +392 -0
- package/dist/providers/__tests__/claude-tasks.test.js.map +1 -0
- package/dist/providers/__tests__/from-config.test.d.ts +5 -0
- package/dist/providers/__tests__/from-config.test.d.ts.map +1 -0
- package/dist/providers/__tests__/from-config.test.js +152 -0
- package/dist/providers/__tests__/from-config.test.js.map +1 -0
- package/dist/providers/__tests__/materialization.test.d.ts +5 -0
- package/dist/providers/__tests__/materialization.test.d.ts.map +1 -0
- package/dist/providers/__tests__/materialization.test.js +407 -0
- package/dist/providers/__tests__/materialization.test.js.map +1 -0
- package/dist/providers/__tests__/native.test.d.ts +5 -0
- package/dist/providers/__tests__/native.test.d.ts.map +1 -0
- package/dist/providers/__tests__/native.test.js +566 -0
- package/dist/providers/__tests__/native.test.js.map +1 -0
- package/dist/providers/__tests__/registry.test.d.ts +5 -0
- package/dist/providers/__tests__/registry.test.d.ts.map +1 -0
- package/dist/providers/__tests__/registry.test.js +183 -0
- package/dist/providers/__tests__/registry.test.js.map +1 -0
- package/dist/providers/beads.d.ts +46 -0
- package/dist/providers/beads.d.ts.map +1 -0
- package/dist/providers/beads.js +865 -0
- package/dist/providers/beads.js.map +1 -0
- package/dist/providers/claude-tasks.d.ts +56 -0
- package/dist/providers/claude-tasks.d.ts.map +1 -0
- package/dist/providers/claude-tasks.js +282 -0
- package/dist/providers/claude-tasks.js.map +1 -0
- package/dist/providers/entire.d.ts +88 -0
- package/dist/providers/entire.d.ts.map +1 -0
- package/dist/providers/entire.js +409 -0
- package/dist/providers/entire.js.map +1 -0
- package/dist/providers/from-config.d.ts +47 -0
- package/dist/providers/from-config.d.ts.map +1 -0
- package/dist/providers/from-config.js +150 -0
- package/dist/providers/from-config.js.map +1 -0
- package/dist/providers/index.d.ts +26 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +29 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/location.d.ts +44 -0
- package/dist/providers/location.d.ts.map +1 -0
- package/dist/providers/location.js +157 -0
- package/dist/providers/location.js.map +1 -0
- package/dist/providers/materialization.d.ts +46 -0
- package/dist/providers/materialization.d.ts.map +1 -0
- package/dist/providers/materialization.js +237 -0
- package/dist/providers/materialization.js.map +1 -0
- package/dist/providers/native.d.ts +32 -0
- package/dist/providers/native.d.ts.map +1 -0
- package/dist/providers/native.js +552 -0
- package/dist/providers/native.js.map +1 -0
- package/dist/providers/registry.d.ts +11 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +97 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/sudocode.d.ts +49 -0
- package/dist/providers/sudocode.d.ts.map +1 -0
- package/dist/providers/sudocode.js +945 -0
- package/dist/providers/sudocode.js.map +1 -0
- package/dist/providers/sync.d.ts +299 -0
- package/dist/providers/sync.d.ts.map +1 -0
- package/dist/providers/sync.js +93 -0
- package/dist/providers/sync.js.map +1 -0
- package/dist/providers/traits/RelationshipQueryable.d.ts +129 -0
- package/dist/providers/traits/RelationshipQueryable.d.ts.map +1 -0
- package/dist/providers/traits/RelationshipQueryable.js +68 -0
- package/dist/providers/traits/RelationshipQueryable.js.map +1 -0
- package/dist/providers/traits/TaskManageable.d.ts +157 -0
- package/dist/providers/traits/TaskManageable.d.ts.map +1 -0
- package/dist/providers/traits/TaskManageable.js +37 -0
- package/dist/providers/traits/TaskManageable.js.map +1 -0
- package/dist/providers/traits/Watchable.d.ts +216 -0
- package/dist/providers/traits/Watchable.d.ts.map +1 -0
- package/dist/providers/traits/Watchable.js +37 -0
- package/dist/providers/traits/Watchable.js.map +1 -0
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts +2 -0
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts.map +1 -0
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.js +169 -0
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.js.map +1 -0
- package/dist/providers/traits/__tests__/TaskManageable.test.d.ts +2 -0
- package/dist/providers/traits/__tests__/TaskManageable.test.d.ts.map +1 -0
- package/dist/providers/traits/__tests__/TaskManageable.test.js +172 -0
- package/dist/providers/traits/__tests__/TaskManageable.test.js.map +1 -0
- package/dist/providers/traits/index.d.ts +13 -0
- package/dist/providers/traits/index.d.ts.map +1 -0
- package/dist/providers/traits/index.js +10 -0
- package/dist/providers/traits/index.js.map +1 -0
- package/dist/providers/types.d.ts +284 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +30 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/schema/__tests__/validation.test.d.ts +2 -0
- package/dist/schema/__tests__/validation.test.d.ts.map +1 -0
- package/dist/schema/__tests__/validation.test.js +241 -0
- package/dist/schema/__tests__/validation.test.js.map +1 -0
- package/dist/schema/base.d.ts +68 -0
- package/dist/schema/base.d.ts.map +1 -0
- package/dist/schema/base.js +5 -0
- package/dist/schema/base.js.map +1 -0
- package/dist/schema/edges.d.ts +49 -0
- package/dist/schema/edges.d.ts.map +1 -0
- package/dist/schema/edges.js +9 -0
- package/dist/schema/edges.js.map +1 -0
- package/dist/schema/index.d.ts +11 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +8 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/nodes.d.ts +97 -0
- package/dist/schema/nodes.d.ts.map +1 -0
- package/dist/schema/nodes.js +5 -0
- package/dist/schema/nodes.js.map +1 -0
- package/dist/schema/storage.d.ts +107 -0
- package/dist/schema/storage.d.ts.map +1 -0
- package/dist/schema/storage.js +10 -0
- package/dist/schema/storage.js.map +1 -0
- package/dist/schema/validation.d.ts +61 -0
- package/dist/schema/validation.d.ts.map +1 -0
- package/dist/schema/validation.js +170 -0
- package/dist/schema/validation.js.map +1 -0
- package/dist/storage/__tests__/atomic-write.test.d.ts +5 -0
- package/dist/storage/__tests__/atomic-write.test.d.ts.map +1 -0
- package/dist/storage/__tests__/atomic-write.test.js +170 -0
- package/dist/storage/__tests__/atomic-write.test.js.map +1 -0
- package/dist/storage/__tests__/file-lock.test.d.ts +2 -0
- package/dist/storage/__tests__/file-lock.test.d.ts.map +1 -0
- package/dist/storage/__tests__/file-lock.test.js +89 -0
- package/dist/storage/__tests__/file-lock.test.js.map +1 -0
- package/dist/storage/__tests__/jsonl.test.d.ts +2 -0
- package/dist/storage/__tests__/jsonl.test.d.ts.map +1 -0
- package/dist/storage/__tests__/jsonl.test.js +228 -0
- package/dist/storage/__tests__/jsonl.test.js.map +1 -0
- package/dist/storage/__tests__/locked-writer.test.d.ts +2 -0
- package/dist/storage/__tests__/locked-writer.test.d.ts.map +1 -0
- package/dist/storage/__tests__/locked-writer.test.js +109 -0
- package/dist/storage/__tests__/locked-writer.test.js.map +1 -0
- package/dist/storage/__tests__/sqlite.test.d.ts +2 -0
- package/dist/storage/__tests__/sqlite.test.d.ts.map +1 -0
- package/dist/storage/__tests__/sqlite.test.js +470 -0
- package/dist/storage/__tests__/sqlite.test.js.map +1 -0
- package/dist/storage/atomic-write.d.ts +38 -0
- package/dist/storage/atomic-write.d.ts.map +1 -0
- package/dist/storage/atomic-write.js +83 -0
- package/dist/storage/atomic-write.js.map +1 -0
- package/dist/storage/file-lock.d.ts +66 -0
- package/dist/storage/file-lock.d.ts.map +1 -0
- package/dist/storage/file-lock.js +176 -0
- package/dist/storage/file-lock.js.map +1 -0
- package/dist/storage/index.d.ts +11 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +13 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/interface.d.ts +219 -0
- package/dist/storage/interface.d.ts.map +1 -0
- package/dist/storage/interface.js +22 -0
- package/dist/storage/interface.js.map +1 -0
- package/dist/storage/jsonl.d.ts +106 -0
- package/dist/storage/jsonl.d.ts.map +1 -0
- package/dist/storage/jsonl.js +218 -0
- package/dist/storage/jsonl.js.map +1 -0
- package/dist/storage/locked-writer.d.ts +67 -0
- package/dist/storage/locked-writer.d.ts.map +1 -0
- package/dist/storage/locked-writer.js +105 -0
- package/dist/storage/locked-writer.js.map +1 -0
- package/dist/storage/sqlite-schema.d.ts +48 -0
- package/dist/storage/sqlite-schema.d.ts.map +1 -0
- package/dist/storage/sqlite-schema.js +169 -0
- package/dist/storage/sqlite-schema.js.map +1 -0
- package/dist/storage/sqlite.d.ts +73 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +698 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/tools/__tests__/annotate.test.d.ts +5 -0
- package/dist/tools/__tests__/annotate.test.d.ts.map +1 -0
- package/dist/tools/__tests__/annotate.test.js +314 -0
- package/dist/tools/__tests__/annotate.test.js.map +1 -0
- package/dist/tools/__tests__/link.test.d.ts +5 -0
- package/dist/tools/__tests__/link.test.d.ts.map +1 -0
- package/dist/tools/__tests__/link.test.js +245 -0
- package/dist/tools/__tests__/link.test.js.map +1 -0
- package/dist/tools/__tests__/query.test.d.ts +5 -0
- package/dist/tools/__tests__/query.test.d.ts.map +1 -0
- package/dist/tools/__tests__/query.test.js +288 -0
- package/dist/tools/__tests__/query.test.js.map +1 -0
- package/dist/tools/__tests__/task.test.d.ts +5 -0
- package/dist/tools/__tests__/task.test.d.ts.map +1 -0
- package/dist/tools/__tests__/task.test.js +178 -0
- package/dist/tools/__tests__/task.test.js.map +1 -0
- package/dist/tools/annotate.d.ts +17 -0
- package/dist/tools/annotate.d.ts.map +1 -0
- package/dist/tools/annotate.js +218 -0
- package/dist/tools/annotate.js.map +1 -0
- package/dist/tools/index.d.ts +14 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +14 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/link.d.ts +17 -0
- package/dist/tools/link.d.ts.map +1 -0
- package/dist/tools/link.js +127 -0
- package/dist/tools/link.js.map +1 -0
- package/dist/tools/query.d.ts +17 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +342 -0
- package/dist/tools/query.js.map +1 -0
- package/dist/tools/task.d.ts +20 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +161 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/types.d.ts +334 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +19 -0
- package/dist/tools/types.js.map +1 -0
- package/package.json +40 -5
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTasks Client
|
|
3
|
+
*
|
|
4
|
+
* Client library for interacting with the OpenTasks daemon.
|
|
5
|
+
* Provides a typed wrapper around the 3-tool interface.
|
|
6
|
+
*/
|
|
7
|
+
import type { LinkParams, LinkResult, QueryParams, QueryResult, AnnotateParams, AnnotateResult, TaskParams, TaskResult, NodeSummary, FeedbackSummary, ReadyOptions, BlockerOptions, FeedbackOptions } from '../tools/types.js';
|
|
8
|
+
import type { CreateNodeInput, UpdateNodeInput, DeleteOptions } from '../graph/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Options for creating an OpenTasks client
|
|
11
|
+
*/
|
|
12
|
+
export interface ClientOptions {
|
|
13
|
+
/** Path to the daemon socket file */
|
|
14
|
+
socketPath?: string;
|
|
15
|
+
/** Auto-connect on first request (default: true) */
|
|
16
|
+
autoConnect?: boolean;
|
|
17
|
+
/** Request timeout in milliseconds (default: 30000) */
|
|
18
|
+
timeout?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error thrown when client operations fail
|
|
22
|
+
*/
|
|
23
|
+
export declare class ClientError extends Error {
|
|
24
|
+
readonly code: 'NOT_CONNECTED' | 'CONNECTION_FAILED' | 'REQUEST_FAILED' | 'SOCKET_NOT_FOUND';
|
|
25
|
+
constructor(message: string, code: 'NOT_CONNECTED' | 'CONNECTION_FAILED' | 'REQUEST_FAILED' | 'SOCKET_NOT_FOUND');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Client for interacting with the OpenTasks daemon
|
|
29
|
+
*
|
|
30
|
+
* Provides typed access to the 3-tool interface (link, query, annotate)
|
|
31
|
+
* plus convenience methods for common operations.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const client = new OpenTasksClient()
|
|
36
|
+
*
|
|
37
|
+
* // Find ready work
|
|
38
|
+
* const ready = await client.ready()
|
|
39
|
+
*
|
|
40
|
+
* // Create a relationship
|
|
41
|
+
* await client.link({
|
|
42
|
+
* from_id: 'i-abc1',
|
|
43
|
+
* to_id: 's-def2',
|
|
44
|
+
* type: 'implements'
|
|
45
|
+
* })
|
|
46
|
+
*
|
|
47
|
+
* // Add feedback
|
|
48
|
+
* await client.annotate({
|
|
49
|
+
* target_id: 's-def2',
|
|
50
|
+
* create: { content: 'Implementation complete' }
|
|
51
|
+
* })
|
|
52
|
+
*
|
|
53
|
+
* client.disconnect()
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare class OpenTasksClient {
|
|
57
|
+
private client;
|
|
58
|
+
private readonly options;
|
|
59
|
+
private socketPath;
|
|
60
|
+
constructor(options?: ClientOptions);
|
|
61
|
+
/**
|
|
62
|
+
* Connect to the daemon
|
|
63
|
+
*/
|
|
64
|
+
connect(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Disconnect from the daemon
|
|
67
|
+
*/
|
|
68
|
+
disconnect(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Check if connected to the daemon
|
|
71
|
+
*/
|
|
72
|
+
get connected(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Ensure connection before making a request
|
|
75
|
+
*/
|
|
76
|
+
private ensureConnected;
|
|
77
|
+
/**
|
|
78
|
+
* Create or remove an edge between nodes
|
|
79
|
+
*
|
|
80
|
+
* @param params - Link parameters
|
|
81
|
+
* @returns Link result with success status
|
|
82
|
+
*/
|
|
83
|
+
link(params: LinkParams): Promise<LinkResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Query the graph
|
|
86
|
+
*
|
|
87
|
+
* @param params - Query parameters
|
|
88
|
+
* @returns Query result with items and pagination info
|
|
89
|
+
*/
|
|
90
|
+
query(params: QueryParams): Promise<QueryResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Manage feedback lifecycle
|
|
93
|
+
*
|
|
94
|
+
* @param params - Annotate parameters
|
|
95
|
+
* @returns Annotate result with success status
|
|
96
|
+
*/
|
|
97
|
+
annotate(params: AnnotateParams): Promise<AnnotateResult>;
|
|
98
|
+
/**
|
|
99
|
+
* Task lifecycle operations
|
|
100
|
+
*
|
|
101
|
+
* @param params - Task parameters (transition, ready, assign, or validActions)
|
|
102
|
+
* @returns Task result with operation-specific data
|
|
103
|
+
*/
|
|
104
|
+
task(params: TaskParams): Promise<TaskResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Get issues ready to work on (no active blockers)
|
|
107
|
+
*
|
|
108
|
+
* @param options - Ready query options
|
|
109
|
+
* @returns Array of ready issue summaries
|
|
110
|
+
*/
|
|
111
|
+
ready(options?: ReadyOptions): Promise<NodeSummary[]>;
|
|
112
|
+
/**
|
|
113
|
+
* Get nodes blocking a specific node
|
|
114
|
+
*
|
|
115
|
+
* @param nodeId - Node to find blockers for
|
|
116
|
+
* @param options - Blocker query options
|
|
117
|
+
* @returns Array of blocking node summaries
|
|
118
|
+
*/
|
|
119
|
+
blockers(nodeId: string, options?: Omit<BlockerOptions, 'nodeId'>): Promise<NodeSummary[]>;
|
|
120
|
+
/**
|
|
121
|
+
* Get nodes blocked by a specific node
|
|
122
|
+
*
|
|
123
|
+
* @param nodeId - Node to find blocked nodes for
|
|
124
|
+
* @param options - Blocker query options
|
|
125
|
+
* @returns Array of blocked node summaries
|
|
126
|
+
*/
|
|
127
|
+
blocking(nodeId: string, options?: Omit<BlockerOptions, 'nodeId'>): Promise<NodeSummary[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Get feedback on a specific node
|
|
130
|
+
*
|
|
131
|
+
* @param nodeId - Node to get feedback for
|
|
132
|
+
* @param options - Feedback query options
|
|
133
|
+
* @returns Array of feedback summaries
|
|
134
|
+
*/
|
|
135
|
+
feedback(nodeId: string, options?: Omit<FeedbackOptions, 'nodeId'>): Promise<FeedbackSummary[]>;
|
|
136
|
+
/**
|
|
137
|
+
* Transition a task's status using a semantic action
|
|
138
|
+
*
|
|
139
|
+
* @param id - Task ID or provider URI
|
|
140
|
+
* @param action - Semantic action ('start', 'complete', 'block', 'reopen', 'close')
|
|
141
|
+
* @returns Task result with updated node
|
|
142
|
+
*/
|
|
143
|
+
taskTransition(id: string, action: 'start' | 'complete' | 'block' | 'reopen' | 'close'): Promise<TaskResult>;
|
|
144
|
+
/**
|
|
145
|
+
* Get tasks ready to work on across all task-capable providers
|
|
146
|
+
*
|
|
147
|
+
* @param options - Ready task query options
|
|
148
|
+
* @returns Task result with ready items
|
|
149
|
+
*/
|
|
150
|
+
taskReady(options?: {
|
|
151
|
+
providers?: string[];
|
|
152
|
+
limit?: number;
|
|
153
|
+
tags?: string[];
|
|
154
|
+
}): Promise<TaskResult>;
|
|
155
|
+
/**
|
|
156
|
+
* Assign a task to an owner
|
|
157
|
+
*
|
|
158
|
+
* @param id - Task ID or provider URI
|
|
159
|
+
* @param assignee - Assignee identifier
|
|
160
|
+
* @returns Task result with updated node
|
|
161
|
+
*/
|
|
162
|
+
taskAssign(id: string, assignee: string): Promise<TaskResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Get valid next actions for a task in its current state
|
|
165
|
+
*
|
|
166
|
+
* @param id - Task ID or provider URI
|
|
167
|
+
* @returns Task result with valid actions
|
|
168
|
+
*/
|
|
169
|
+
taskValidActions(id: string): Promise<TaskResult>;
|
|
170
|
+
/**
|
|
171
|
+
* Create a node.
|
|
172
|
+
* When `scheme` is provided, routes creation to that provider.
|
|
173
|
+
* Otherwise uses the configured defaultProvider.
|
|
174
|
+
*
|
|
175
|
+
* @param params - Node creation parameters
|
|
176
|
+
* @param options - Optional provider routing options
|
|
177
|
+
* @returns The created node (materialized locally if via external provider)
|
|
178
|
+
*/
|
|
179
|
+
createNode(params: CreateNodeInput, options?: {
|
|
180
|
+
scheme?: string;
|
|
181
|
+
}): Promise<unknown>;
|
|
182
|
+
/**
|
|
183
|
+
* Get a node by local ID or provider URI.
|
|
184
|
+
* For external/materialized nodes, refreshes if stale.
|
|
185
|
+
*
|
|
186
|
+
* @param idOrUri - Local node ID (e.g., 'i-abc1') or provider URI (e.g., 'sudocode://proj/i-456')
|
|
187
|
+
*/
|
|
188
|
+
getNode(idOrUri: string): Promise<unknown>;
|
|
189
|
+
/**
|
|
190
|
+
* Update a node by local ID or provider URI.
|
|
191
|
+
* For external/materialized nodes, routes update to the owning provider.
|
|
192
|
+
*
|
|
193
|
+
* @param idOrUri - Local node ID or provider URI
|
|
194
|
+
* @param updates - Fields to update
|
|
195
|
+
*/
|
|
196
|
+
updateNode(idOrUri: string, updates: UpdateNodeInput): Promise<unknown>;
|
|
197
|
+
/**
|
|
198
|
+
* Delete a node by local ID or provider URI.
|
|
199
|
+
* For external/materialized nodes, deletes in the owning provider
|
|
200
|
+
* and removes the local materialized copy.
|
|
201
|
+
*
|
|
202
|
+
* @param idOrUri - Local node ID or provider URI
|
|
203
|
+
* @param options - Delete options (hard vs soft)
|
|
204
|
+
*/
|
|
205
|
+
deleteNode(idOrUri: string, options?: DeleteOptions): Promise<void>;
|
|
206
|
+
/**
|
|
207
|
+
* List all registered providers and their capabilities
|
|
208
|
+
*/
|
|
209
|
+
listProviders(): Promise<unknown>;
|
|
210
|
+
/**
|
|
211
|
+
* Get info about a specific provider
|
|
212
|
+
*
|
|
213
|
+
* @param name - Provider name
|
|
214
|
+
*/
|
|
215
|
+
getProvider(name: string): Promise<unknown>;
|
|
216
|
+
/**
|
|
217
|
+
* Call any daemon method by name
|
|
218
|
+
*/
|
|
219
|
+
call<R = unknown>(method: string, params?: unknown): Promise<R>;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create a new OpenTasks client
|
|
223
|
+
*
|
|
224
|
+
* @param options - Client options
|
|
225
|
+
* @returns OpenTasks client instance
|
|
226
|
+
*/
|
|
227
|
+
export declare function createClient(options?: ClientOptions): OpenTasksClient;
|
|
228
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTasks Client
|
|
3
|
+
*
|
|
4
|
+
* Client library for interacting with the OpenTasks daemon.
|
|
5
|
+
* Provides a typed wrapper around the 3-tool interface.
|
|
6
|
+
*/
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import { createIPCClient } from '../daemon/ipc.js';
|
|
10
|
+
import { getGitCommonDir } from '../core/worktree.js';
|
|
11
|
+
/**
|
|
12
|
+
* Error thrown when client operations fail
|
|
13
|
+
*/
|
|
14
|
+
export class ClientError extends Error {
|
|
15
|
+
code;
|
|
16
|
+
constructor(message, code) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.name = 'ClientError';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Socket Path Discovery
|
|
24
|
+
// ============================================================================
|
|
25
|
+
/**
|
|
26
|
+
* Find the multi-location daemon socket at .git/opentasks/daemon.sock
|
|
27
|
+
*/
|
|
28
|
+
function findGitDaemonSocket(startDir = process.cwd()) {
|
|
29
|
+
const gitCommonDir = getGitCommonDir(startDir);
|
|
30
|
+
if (!gitCommonDir)
|
|
31
|
+
return null;
|
|
32
|
+
const socketPath = path.join(gitCommonDir, 'opentasks', 'daemon.sock');
|
|
33
|
+
if (fs.existsSync(socketPath)) {
|
|
34
|
+
return socketPath;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Find the .opentasks directory starting from cwd and walking up
|
|
40
|
+
*/
|
|
41
|
+
function findOpenTasksDir(startDir = process.cwd()) {
|
|
42
|
+
let currentDir = startDir;
|
|
43
|
+
while (true) {
|
|
44
|
+
const candidate = path.join(currentDir, '.opentasks');
|
|
45
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
|
|
46
|
+
return candidate;
|
|
47
|
+
}
|
|
48
|
+
const parentDir = path.dirname(currentDir);
|
|
49
|
+
if (parentDir === currentDir) {
|
|
50
|
+
// Reached root
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
currentDir = parentDir;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the default socket path.
|
|
58
|
+
* Prefers .git/opentasks/daemon.sock (multi-location) then falls back
|
|
59
|
+
* to walking up for .opentasks/daemon.sock (single-location).
|
|
60
|
+
*/
|
|
61
|
+
function getDefaultSocketPath() {
|
|
62
|
+
// 1. Check for multi-location daemon socket first
|
|
63
|
+
const gitSocket = findGitDaemonSocket();
|
|
64
|
+
if (gitSocket) {
|
|
65
|
+
return gitSocket;
|
|
66
|
+
}
|
|
67
|
+
// 2. Fallback to single-location .opentasks/daemon.sock
|
|
68
|
+
const openTasksDir = findOpenTasksDir();
|
|
69
|
+
if (!openTasksDir) {
|
|
70
|
+
throw new ClientError('Could not find daemon socket. Is the daemon running?', 'SOCKET_NOT_FOUND');
|
|
71
|
+
}
|
|
72
|
+
return path.join(openTasksDir, 'daemon.sock');
|
|
73
|
+
}
|
|
74
|
+
// ============================================================================
|
|
75
|
+
// Client Implementation
|
|
76
|
+
// ============================================================================
|
|
77
|
+
/**
|
|
78
|
+
* Client for interacting with the OpenTasks daemon
|
|
79
|
+
*
|
|
80
|
+
* Provides typed access to the 3-tool interface (link, query, annotate)
|
|
81
|
+
* plus convenience methods for common operations.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const client = new OpenTasksClient()
|
|
86
|
+
*
|
|
87
|
+
* // Find ready work
|
|
88
|
+
* const ready = await client.ready()
|
|
89
|
+
*
|
|
90
|
+
* // Create a relationship
|
|
91
|
+
* await client.link({
|
|
92
|
+
* from_id: 'i-abc1',
|
|
93
|
+
* to_id: 's-def2',
|
|
94
|
+
* type: 'implements'
|
|
95
|
+
* })
|
|
96
|
+
*
|
|
97
|
+
* // Add feedback
|
|
98
|
+
* await client.annotate({
|
|
99
|
+
* target_id: 's-def2',
|
|
100
|
+
* create: { content: 'Implementation complete' }
|
|
101
|
+
* })
|
|
102
|
+
*
|
|
103
|
+
* client.disconnect()
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export class OpenTasksClient {
|
|
107
|
+
client = null;
|
|
108
|
+
options;
|
|
109
|
+
socketPath = null;
|
|
110
|
+
constructor(options) {
|
|
111
|
+
this.options = {
|
|
112
|
+
socketPath: options?.socketPath ?? '',
|
|
113
|
+
autoConnect: options?.autoConnect ?? true,
|
|
114
|
+
timeout: options?.timeout ?? 30000,
|
|
115
|
+
};
|
|
116
|
+
// If socket path provided, resolve it immediately
|
|
117
|
+
if (options?.socketPath) {
|
|
118
|
+
this.socketPath = options.socketPath;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// ==========================================================================
|
|
122
|
+
// Connection Lifecycle
|
|
123
|
+
// ==========================================================================
|
|
124
|
+
/**
|
|
125
|
+
* Connect to the daemon
|
|
126
|
+
*/
|
|
127
|
+
async connect() {
|
|
128
|
+
if (this.client?.connected) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
// Resolve socket path if not already done
|
|
132
|
+
if (!this.socketPath) {
|
|
133
|
+
this.socketPath = getDefaultSocketPath();
|
|
134
|
+
}
|
|
135
|
+
this.client = createIPCClient(this.socketPath);
|
|
136
|
+
try {
|
|
137
|
+
await this.client.connect();
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
this.client = null;
|
|
141
|
+
throw new ClientError(`Failed to connect to daemon: ${error instanceof Error ? error.message : 'Unknown error'}`, 'CONNECTION_FAILED');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Disconnect from the daemon
|
|
146
|
+
*/
|
|
147
|
+
disconnect() {
|
|
148
|
+
if (this.client) {
|
|
149
|
+
this.client.disconnect();
|
|
150
|
+
this.client = null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if connected to the daemon
|
|
155
|
+
*/
|
|
156
|
+
get connected() {
|
|
157
|
+
return this.client?.connected ?? false;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Ensure connection before making a request
|
|
161
|
+
*/
|
|
162
|
+
async ensureConnected() {
|
|
163
|
+
if (this.connected) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (this.options.autoConnect) {
|
|
167
|
+
await this.connect();
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
throw new ClientError('Not connected to daemon. Call connect() first or enable autoConnect.', 'NOT_CONNECTED');
|
|
171
|
+
}
|
|
172
|
+
// ==========================================================================
|
|
173
|
+
// Core Tools
|
|
174
|
+
// ==========================================================================
|
|
175
|
+
/**
|
|
176
|
+
* Create or remove an edge between nodes
|
|
177
|
+
*
|
|
178
|
+
* @param params - Link parameters
|
|
179
|
+
* @returns Link result with success status
|
|
180
|
+
*/
|
|
181
|
+
async link(params) {
|
|
182
|
+
await this.ensureConnected();
|
|
183
|
+
return this.client.request('tools.link', params);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Query the graph
|
|
187
|
+
*
|
|
188
|
+
* @param params - Query parameters
|
|
189
|
+
* @returns Query result with items and pagination info
|
|
190
|
+
*/
|
|
191
|
+
async query(params) {
|
|
192
|
+
await this.ensureConnected();
|
|
193
|
+
return this.client.request('tools.query', params);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Manage feedback lifecycle
|
|
197
|
+
*
|
|
198
|
+
* @param params - Annotate parameters
|
|
199
|
+
* @returns Annotate result with success status
|
|
200
|
+
*/
|
|
201
|
+
async annotate(params) {
|
|
202
|
+
await this.ensureConnected();
|
|
203
|
+
return this.client.request('tools.annotate', params);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Task lifecycle operations
|
|
207
|
+
*
|
|
208
|
+
* @param params - Task parameters (transition, ready, assign, or validActions)
|
|
209
|
+
* @returns Task result with operation-specific data
|
|
210
|
+
*/
|
|
211
|
+
async task(params) {
|
|
212
|
+
await this.ensureConnected();
|
|
213
|
+
return this.client.request('tools.task', params);
|
|
214
|
+
}
|
|
215
|
+
// ==========================================================================
|
|
216
|
+
// Convenience Methods
|
|
217
|
+
// ==========================================================================
|
|
218
|
+
/**
|
|
219
|
+
* Get issues ready to work on (no active blockers)
|
|
220
|
+
*
|
|
221
|
+
* @param options - Ready query options
|
|
222
|
+
* @returns Array of ready issue summaries
|
|
223
|
+
*/
|
|
224
|
+
async ready(options) {
|
|
225
|
+
const result = await this.query({ ready: options || {} });
|
|
226
|
+
return result.items;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get nodes blocking a specific node
|
|
230
|
+
*
|
|
231
|
+
* @param nodeId - Node to find blockers for
|
|
232
|
+
* @param options - Blocker query options
|
|
233
|
+
* @returns Array of blocking node summaries
|
|
234
|
+
*/
|
|
235
|
+
async blockers(nodeId, options) {
|
|
236
|
+
const result = await this.query({
|
|
237
|
+
blockers: { nodeId, ...options },
|
|
238
|
+
});
|
|
239
|
+
return result.items;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get nodes blocked by a specific node
|
|
243
|
+
*
|
|
244
|
+
* @param nodeId - Node to find blocked nodes for
|
|
245
|
+
* @param options - Blocker query options
|
|
246
|
+
* @returns Array of blocked node summaries
|
|
247
|
+
*/
|
|
248
|
+
async blocking(nodeId, options) {
|
|
249
|
+
const result = await this.query({
|
|
250
|
+
blocking: { nodeId, ...options },
|
|
251
|
+
});
|
|
252
|
+
return result.items;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get feedback on a specific node
|
|
256
|
+
*
|
|
257
|
+
* @param nodeId - Node to get feedback for
|
|
258
|
+
* @param options - Feedback query options
|
|
259
|
+
* @returns Array of feedback summaries
|
|
260
|
+
*/
|
|
261
|
+
async feedback(nodeId, options) {
|
|
262
|
+
const result = await this.query({
|
|
263
|
+
feedback: { nodeId, ...options },
|
|
264
|
+
});
|
|
265
|
+
return result.items;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Transition a task's status using a semantic action
|
|
269
|
+
*
|
|
270
|
+
* @param id - Task ID or provider URI
|
|
271
|
+
* @param action - Semantic action ('start', 'complete', 'block', 'reopen', 'close')
|
|
272
|
+
* @returns Task result with updated node
|
|
273
|
+
*/
|
|
274
|
+
async taskTransition(id, action) {
|
|
275
|
+
return this.task({ transition: { id, action } });
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get tasks ready to work on across all task-capable providers
|
|
279
|
+
*
|
|
280
|
+
* @param options - Ready task query options
|
|
281
|
+
* @returns Task result with ready items
|
|
282
|
+
*/
|
|
283
|
+
async taskReady(options) {
|
|
284
|
+
return this.task({ ready: options || {} });
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Assign a task to an owner
|
|
288
|
+
*
|
|
289
|
+
* @param id - Task ID or provider URI
|
|
290
|
+
* @param assignee - Assignee identifier
|
|
291
|
+
* @returns Task result with updated node
|
|
292
|
+
*/
|
|
293
|
+
async taskAssign(id, assignee) {
|
|
294
|
+
return this.task({ assign: { id, assignee } });
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get valid next actions for a task in its current state
|
|
298
|
+
*
|
|
299
|
+
* @param id - Task ID or provider URI
|
|
300
|
+
* @returns Task result with valid actions
|
|
301
|
+
*/
|
|
302
|
+
async taskValidActions(id) {
|
|
303
|
+
return this.task({ validActions: { id } });
|
|
304
|
+
}
|
|
305
|
+
// ==========================================================================
|
|
306
|
+
// Graph CRUD (with unified provider dispatch)
|
|
307
|
+
// ==========================================================================
|
|
308
|
+
/**
|
|
309
|
+
* Create a node.
|
|
310
|
+
* When `scheme` is provided, routes creation to that provider.
|
|
311
|
+
* Otherwise uses the configured defaultProvider.
|
|
312
|
+
*
|
|
313
|
+
* @param params - Node creation parameters
|
|
314
|
+
* @param options - Optional provider routing options
|
|
315
|
+
* @returns The created node (materialized locally if via external provider)
|
|
316
|
+
*/
|
|
317
|
+
async createNode(params, options) {
|
|
318
|
+
await this.ensureConnected();
|
|
319
|
+
return this.client.request('graph.create', { ...params, scheme: options?.scheme });
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Get a node by local ID or provider URI.
|
|
323
|
+
* For external/materialized nodes, refreshes if stale.
|
|
324
|
+
*
|
|
325
|
+
* @param idOrUri - Local node ID (e.g., 'i-abc1') or provider URI (e.g., 'sudocode://proj/i-456')
|
|
326
|
+
*/
|
|
327
|
+
async getNode(idOrUri) {
|
|
328
|
+
await this.ensureConnected();
|
|
329
|
+
return this.client.request('graph.get', { id: idOrUri });
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Update a node by local ID or provider URI.
|
|
333
|
+
* For external/materialized nodes, routes update to the owning provider.
|
|
334
|
+
*
|
|
335
|
+
* @param idOrUri - Local node ID or provider URI
|
|
336
|
+
* @param updates - Fields to update
|
|
337
|
+
*/
|
|
338
|
+
async updateNode(idOrUri, updates) {
|
|
339
|
+
await this.ensureConnected();
|
|
340
|
+
return this.client.request('graph.update', { id: idOrUri, ...updates });
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Delete a node by local ID or provider URI.
|
|
344
|
+
* For external/materialized nodes, deletes in the owning provider
|
|
345
|
+
* and removes the local materialized copy.
|
|
346
|
+
*
|
|
347
|
+
* @param idOrUri - Local node ID or provider URI
|
|
348
|
+
* @param options - Delete options (hard vs soft)
|
|
349
|
+
*/
|
|
350
|
+
async deleteNode(idOrUri, options) {
|
|
351
|
+
await this.ensureConnected();
|
|
352
|
+
await this.client.request('graph.delete', { id: idOrUri, options });
|
|
353
|
+
}
|
|
354
|
+
// ==========================================================================
|
|
355
|
+
// Provider Introspection
|
|
356
|
+
// ==========================================================================
|
|
357
|
+
/**
|
|
358
|
+
* List all registered providers and their capabilities
|
|
359
|
+
*/
|
|
360
|
+
async listProviders() {
|
|
361
|
+
await this.ensureConnected();
|
|
362
|
+
return this.client.request('provider.list', {});
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Get info about a specific provider
|
|
366
|
+
*
|
|
367
|
+
* @param name - Provider name
|
|
368
|
+
*/
|
|
369
|
+
async getProvider(name) {
|
|
370
|
+
await this.ensureConnected();
|
|
371
|
+
return this.client.request('provider.info', { name });
|
|
372
|
+
}
|
|
373
|
+
// ==========================================================================
|
|
374
|
+
// Generic RPC
|
|
375
|
+
// ==========================================================================
|
|
376
|
+
/**
|
|
377
|
+
* Call any daemon method by name
|
|
378
|
+
*/
|
|
379
|
+
async call(method, params) {
|
|
380
|
+
await this.ensureConnected();
|
|
381
|
+
return this.client.request(method, params);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Create a new OpenTasks client
|
|
386
|
+
*
|
|
387
|
+
* @param options - Client options
|
|
388
|
+
* @returns OpenTasks client instance
|
|
389
|
+
*/
|
|
390
|
+
export function createClient(options) {
|
|
391
|
+
return new OpenTasksClient(options);
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTasks Client Module
|
|
3
|
+
*
|
|
4
|
+
* Client library for interacting with the OpenTasks daemon.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export type { ClientOptions } from './client.js';
|
|
9
|
+
export { OpenTasksClient, ClientError, createClient } from './client.js';
|
|
10
|
+
export type { LinkParams, LinkResult, QueryParams, QueryResult, AnnotateParams, AnnotateResult, NodeSummary, EdgeSummary, FeedbackSummary, BlockerQueryParams, FeedbackQueryParams, CreateFeedbackParams, FeedbackAnchor, FeedbackType, ReadyOptions, BlockerOptions, FeedbackOptions, } from '../tools/types.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGzE,YAAY,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.test.d.ts","sourceRoot":"","sources":["../../../src/config/__tests__/defaults.test.ts"],"names":[],"mappings":""}
|