opentasks 0.0.1 → 0.0.2
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 +568 -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 +530 -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 +289 -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,568 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider-Aware Graph Store
|
|
3
|
+
*
|
|
4
|
+
* Extends GraphStore with provider resolution and materialization capabilities.
|
|
5
|
+
* This wrapper adds the ability to resolve external URIs and materialize
|
|
6
|
+
* external nodes while keeping the base GraphStore implementation intact.
|
|
7
|
+
*/
|
|
8
|
+
import { ProviderError } from '../providers/types.js';
|
|
9
|
+
import { createProviderRegistry } from '../providers/registry.js';
|
|
10
|
+
import { createNativeProvider } from '../providers/native.js';
|
|
11
|
+
import { createMaterializationManager } from '../providers/materialization.js';
|
|
12
|
+
import { isWatchable, } from '../providers/traits/Watchable.js';
|
|
13
|
+
import { isTaskManageable, } from '../providers/traits/TaskManageable.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Constants
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Pattern for local node IDs (s-, i-, f-, e-, x-)
|
|
19
|
+
*/
|
|
20
|
+
const LOCAL_ID_PATTERN = /^[ctfex]-[a-z0-9]+$/;
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Helper Functions
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Check if a string is a local node ID
|
|
26
|
+
*/
|
|
27
|
+
function isLocalId(idOrUri) {
|
|
28
|
+
return LOCAL_ID_PATTERN.test(idOrUri);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Convert CreateNodeInput to ProviderCreateInput.
|
|
32
|
+
* Passes through tags and parent_id via metadata so providers can use them.
|
|
33
|
+
*/
|
|
34
|
+
function toProviderCreateInput(input) {
|
|
35
|
+
// Merge tags and parent_id into metadata for providers that support them
|
|
36
|
+
const metadata = { ...input.metadata };
|
|
37
|
+
if (input.tags && input.tags.length > 0) {
|
|
38
|
+
metadata.tags = input.tags;
|
|
39
|
+
}
|
|
40
|
+
if (input.parent_id) {
|
|
41
|
+
metadata.parent_id = input.parent_id;
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
type: input.type === 'task' ? 'issue' : input.type === 'context' ? 'spec' : 'issue',
|
|
45
|
+
title: input.title,
|
|
46
|
+
content: input.content,
|
|
47
|
+
status: input.status,
|
|
48
|
+
priority: input.priority,
|
|
49
|
+
metadata: Object.keys(metadata).length > 0 ? metadata : input.metadata,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert UpdateNodeInput to ProviderUpdateInput
|
|
54
|
+
*/
|
|
55
|
+
function toProviderUpdateInput(updates) {
|
|
56
|
+
return {
|
|
57
|
+
title: updates.title,
|
|
58
|
+
content: updates.content,
|
|
59
|
+
status: updates.status,
|
|
60
|
+
priority: updates.priority,
|
|
61
|
+
metadata: updates.metadata,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Find external node by URI in the store
|
|
66
|
+
*/
|
|
67
|
+
async function findExternalNodeByUri(uri, store) {
|
|
68
|
+
const nodes = await store.query.nodes({
|
|
69
|
+
type: 'external',
|
|
70
|
+
});
|
|
71
|
+
for (const node of nodes) {
|
|
72
|
+
if (node.type === 'external' && node.uri === uri) {
|
|
73
|
+
return node;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// Factory Function
|
|
80
|
+
// ============================================================================
|
|
81
|
+
/**
|
|
82
|
+
* Create a provider-aware store by wrapping an existing GraphStore
|
|
83
|
+
*/
|
|
84
|
+
export function createProviderAwareStore(baseStore, config = {}) {
|
|
85
|
+
// Set up provider registry
|
|
86
|
+
const registry = config.registry ?? createProviderRegistry();
|
|
87
|
+
// Set up materialization manager
|
|
88
|
+
const materialization = createMaterializationManager(config.materialization);
|
|
89
|
+
// Default provider configuration
|
|
90
|
+
const defaultProviderName = config.defaultProvider ?? 'native';
|
|
91
|
+
// Auto-register native provider if not disabled
|
|
92
|
+
if (config.autoRegisterNative !== false) {
|
|
93
|
+
const nativeProvider = createNativeProvider(baseStore);
|
|
94
|
+
registry.register(nativeProvider);
|
|
95
|
+
}
|
|
96
|
+
// =========================================================================
|
|
97
|
+
// Provider Watch State
|
|
98
|
+
// =========================================================================
|
|
99
|
+
/** External handlers for provider change events */
|
|
100
|
+
const changeHandlers = [];
|
|
101
|
+
/** Track which providers are currently being watched */
|
|
102
|
+
const watchedProviders = new Set();
|
|
103
|
+
/**
|
|
104
|
+
* Handle an inbound provider change event.
|
|
105
|
+
* Auto-refreshes materialized nodes, then notifies external handlers.
|
|
106
|
+
*/
|
|
107
|
+
async function handleProviderChange(providerName, event) {
|
|
108
|
+
if (event.kind === 'node') {
|
|
109
|
+
await handleNodeChange(providerName, event.event);
|
|
110
|
+
}
|
|
111
|
+
// Edge events: no auto-action needed for now — consumers can
|
|
112
|
+
// react via onProviderChange handlers. In the future, the
|
|
113
|
+
// federated graph could invalidate cached edge data here.
|
|
114
|
+
// Notify external handlers
|
|
115
|
+
for (const handler of changeHandlers) {
|
|
116
|
+
try {
|
|
117
|
+
handler(providerName, event);
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Don't let handler errors break the watch loop
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Handle a node change from a provider.
|
|
126
|
+
* If the node is already materialized locally, refresh it.
|
|
127
|
+
*/
|
|
128
|
+
async function handleNodeChange(_providerName, event) {
|
|
129
|
+
// Check if we have a materialized copy of this node
|
|
130
|
+
const existing = await findExternalNodeByUri(event.uri, baseStore);
|
|
131
|
+
if (!existing) {
|
|
132
|
+
// Node not materialized locally — nothing to refresh.
|
|
133
|
+
// The event is still forwarded to external handlers above.
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (event.type === 'deleted') {
|
|
137
|
+
// Mark the local materialized node as stale
|
|
138
|
+
await baseStore.updateNode(existing.id, {
|
|
139
|
+
metadata: {
|
|
140
|
+
...existing.metadata,
|
|
141
|
+
stale: true,
|
|
142
|
+
last_refresh_at: new Date().toISOString(),
|
|
143
|
+
last_refresh_error: 'Node deleted in provider',
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
// For 'created' (re-appeared) or 'updated': refresh materialized copy
|
|
149
|
+
if (event.node) {
|
|
150
|
+
// Provider included the full node data — materialize directly
|
|
151
|
+
await materialization.materialize(event.uri, event.node, baseStore);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
// No node data in event — fetch fresh from provider
|
|
155
|
+
const provider = registry.resolveProvider(event.uri);
|
|
156
|
+
if (provider) {
|
|
157
|
+
await materialization.refresh(existing, provider, baseStore);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Create the provider-aware store by extending the base store
|
|
162
|
+
const providerStore = {
|
|
163
|
+
// Spread all base store properties and methods
|
|
164
|
+
...baseStore,
|
|
165
|
+
// Add provider-specific properties
|
|
166
|
+
providers: registry,
|
|
167
|
+
materialization,
|
|
168
|
+
/**
|
|
169
|
+
* Resolve a node by ID or URI
|
|
170
|
+
*/
|
|
171
|
+
async resolveNode(idOrUri, options) {
|
|
172
|
+
return resolveNodeInternal(idOrUri, options);
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* Explicitly materialize an external node
|
|
176
|
+
*/
|
|
177
|
+
async materializeNode(uri) {
|
|
178
|
+
// Find provider for this URI
|
|
179
|
+
const provider = registry.resolveProvider(uri);
|
|
180
|
+
if (!provider) {
|
|
181
|
+
throw new Error(`No provider found for URI: ${uri}`);
|
|
182
|
+
}
|
|
183
|
+
// Parse and fetch
|
|
184
|
+
const parsed = provider.parseUri(uri);
|
|
185
|
+
if (!parsed) {
|
|
186
|
+
throw new Error(`Invalid URI for provider: ${uri}`);
|
|
187
|
+
}
|
|
188
|
+
const providerNode = await provider.get(parsed.id);
|
|
189
|
+
if (!providerNode) {
|
|
190
|
+
throw new Error(`Node not found: ${uri}`);
|
|
191
|
+
}
|
|
192
|
+
// Materialize
|
|
193
|
+
return materialization.materialize(uri, providerNode, baseStore);
|
|
194
|
+
},
|
|
195
|
+
/**
|
|
196
|
+
* Refresh a materialized external node
|
|
197
|
+
*/
|
|
198
|
+
async refreshNode(id) {
|
|
199
|
+
// Get the existing node
|
|
200
|
+
const node = await baseStore.getNode(id);
|
|
201
|
+
if (!node || node.type !== 'external') {
|
|
202
|
+
throw new Error(`Node not found or not external: ${id}`);
|
|
203
|
+
}
|
|
204
|
+
const externalNode = node;
|
|
205
|
+
// Find provider
|
|
206
|
+
const provider = registry.resolveProvider(externalNode.uri);
|
|
207
|
+
if (!provider) {
|
|
208
|
+
throw new Error(`No provider found for URI: ${externalNode.uri}`);
|
|
209
|
+
}
|
|
210
|
+
// Refresh using materialization manager
|
|
211
|
+
return materialization.refresh(externalNode, provider, baseStore);
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* Start background sync
|
|
215
|
+
*/
|
|
216
|
+
startBackgroundSync() {
|
|
217
|
+
materialization.startBackgroundSync(baseStore, registry);
|
|
218
|
+
},
|
|
219
|
+
/**
|
|
220
|
+
* Stop background sync
|
|
221
|
+
*/
|
|
222
|
+
stopBackgroundSync() {
|
|
223
|
+
materialization.stopBackgroundSync();
|
|
224
|
+
},
|
|
225
|
+
/**
|
|
226
|
+
* Check if background sync is running
|
|
227
|
+
*/
|
|
228
|
+
isBackgroundSyncRunning() {
|
|
229
|
+
return materialization.isBackgroundSyncRunning();
|
|
230
|
+
},
|
|
231
|
+
/**
|
|
232
|
+
* Start watching all watchable providers for changes.
|
|
233
|
+
*/
|
|
234
|
+
startProviderWatching() {
|
|
235
|
+
for (const provider of registry.list()) {
|
|
236
|
+
if (isWatchable(provider) && !watchedProviders.has(provider.name)) {
|
|
237
|
+
provider.startWatching((event) => {
|
|
238
|
+
void handleProviderChange(provider.name, event);
|
|
239
|
+
});
|
|
240
|
+
watchedProviders.add(provider.name);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
/**
|
|
245
|
+
* Stop watching all providers for changes.
|
|
246
|
+
*/
|
|
247
|
+
stopProviderWatching() {
|
|
248
|
+
for (const provider of registry.list()) {
|
|
249
|
+
if (isWatchable(provider) && watchedProviders.has(provider.name)) {
|
|
250
|
+
provider.stopWatching();
|
|
251
|
+
watchedProviders.delete(provider.name);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
/**
|
|
256
|
+
* Register an external handler for provider change events.
|
|
257
|
+
*/
|
|
258
|
+
onProviderChange(handler) {
|
|
259
|
+
changeHandlers.push(handler);
|
|
260
|
+
return () => {
|
|
261
|
+
const idx = changeHandlers.indexOf(handler);
|
|
262
|
+
if (idx >= 0)
|
|
263
|
+
changeHandlers.splice(idx, 1);
|
|
264
|
+
};
|
|
265
|
+
},
|
|
266
|
+
// =========================================================================
|
|
267
|
+
// Provider-Routed CRUD (Unified Interface)
|
|
268
|
+
// =========================================================================
|
|
269
|
+
defaultProvider: defaultProviderName,
|
|
270
|
+
async providerCreate(input, options) {
|
|
271
|
+
const targetScheme = options?.scheme ?? defaultProviderName;
|
|
272
|
+
// Native/local path — no provider routing needed
|
|
273
|
+
if (targetScheme === 'native' || targetScheme === 'opentasks') {
|
|
274
|
+
const node = await baseStore.createNode(input);
|
|
275
|
+
return { node, provider: 'native' };
|
|
276
|
+
}
|
|
277
|
+
// Find the target provider by name or scheme
|
|
278
|
+
const provider = registry.get(targetScheme) ?? registry.resolveProvider(`${targetScheme}://`);
|
|
279
|
+
if (!provider) {
|
|
280
|
+
throw new ProviderError('NOT_FOUND', `Unknown provider: ${targetScheme}`, targetScheme);
|
|
281
|
+
}
|
|
282
|
+
if (!provider.capabilities.write) {
|
|
283
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${provider.name} is read-only`, provider.name);
|
|
284
|
+
}
|
|
285
|
+
if (!provider.capabilities.mount) {
|
|
286
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${provider.name} does not support mounting`, provider.name);
|
|
287
|
+
}
|
|
288
|
+
// Create via provider, forwarding operational context
|
|
289
|
+
const providerNode = await provider.create(toProviderCreateInput(input), options?.context);
|
|
290
|
+
// Build canonical URI and always materialize on create
|
|
291
|
+
const uri = provider.buildUri(providerNode.id);
|
|
292
|
+
const materializedNode = await materialization.materialize(uri, providerNode, baseStore);
|
|
293
|
+
return {
|
|
294
|
+
node: materializedNode,
|
|
295
|
+
uri,
|
|
296
|
+
provider: provider.name,
|
|
297
|
+
};
|
|
298
|
+
},
|
|
299
|
+
async providerGet(idOrUri, options) {
|
|
300
|
+
// 1. Local ID — direct store access
|
|
301
|
+
if (isLocalId(idOrUri)) {
|
|
302
|
+
const node = await baseStore.getNode(idOrUri);
|
|
303
|
+
// If it's a materialized external node, check staleness
|
|
304
|
+
if (node?.type === 'external') {
|
|
305
|
+
const extNode = node;
|
|
306
|
+
if (materialization.isStale(extNode)) {
|
|
307
|
+
const provider = registry.resolveProvider(extNode.uri);
|
|
308
|
+
if (provider) {
|
|
309
|
+
const refreshed = await materialization.refresh(extNode, provider, baseStore, options?.context);
|
|
310
|
+
return refreshed ?? node;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return node;
|
|
315
|
+
}
|
|
316
|
+
// 2. Provider URI — resolve through provider, always materialize
|
|
317
|
+
const result = await resolveNodeInternal(idOrUri, { materialize: true }, options?.context);
|
|
318
|
+
return result;
|
|
319
|
+
},
|
|
320
|
+
async providerUpdate(idOrUri, updates, options) {
|
|
321
|
+
// Resolve the target node and provider
|
|
322
|
+
const { node, provider: owningProvider, isExternal } = await resolveForWrite(idOrUri);
|
|
323
|
+
if (!isExternal || owningProvider?.name === 'native') {
|
|
324
|
+
// Local node — update directly
|
|
325
|
+
return baseStore.updateNode(node.id, updates);
|
|
326
|
+
}
|
|
327
|
+
// External node but provider not registered — error rather than silent local-only update
|
|
328
|
+
if (!owningProvider) {
|
|
329
|
+
const extNode = node;
|
|
330
|
+
throw new ProviderError('NOT_FOUND', `Provider not registered for external node URI: ${extNode.uri}. Cannot route update.`);
|
|
331
|
+
}
|
|
332
|
+
if (!owningProvider.capabilities.write) {
|
|
333
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${owningProvider.name} is read-only`, owningProvider.name);
|
|
334
|
+
}
|
|
335
|
+
// Route update to external provider
|
|
336
|
+
const extNode = node;
|
|
337
|
+
const parsed = owningProvider.parseUri(extNode.uri);
|
|
338
|
+
if (!parsed) {
|
|
339
|
+
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${extNode.uri}`, owningProvider.name);
|
|
340
|
+
}
|
|
341
|
+
const updatedProviderNode = await owningProvider.update(parsed.id, toProviderUpdateInput(updates), options?.context);
|
|
342
|
+
// Refresh local materialized copy with provider's response
|
|
343
|
+
return materialization.materialize(extNode.uri, updatedProviderNode, baseStore);
|
|
344
|
+
},
|
|
345
|
+
async providerDelete(idOrUri, options) {
|
|
346
|
+
// Resolve the target node and provider
|
|
347
|
+
const { node, provider: owningProvider, isExternal } = await resolveForWrite(idOrUri);
|
|
348
|
+
if (!isExternal || owningProvider?.name === 'native') {
|
|
349
|
+
// Local node — delete directly
|
|
350
|
+
await baseStore.deleteNode(node.id, options);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
// External node but provider not registered — error rather than silent local-only delete
|
|
354
|
+
if (!owningProvider) {
|
|
355
|
+
const extNode = node;
|
|
356
|
+
throw new ProviderError('NOT_FOUND', `Provider not registered for external node URI: ${extNode.uri}. Cannot route delete.`);
|
|
357
|
+
}
|
|
358
|
+
if (!owningProvider.capabilities.write) {
|
|
359
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${owningProvider.name} is read-only`, owningProvider.name);
|
|
360
|
+
}
|
|
361
|
+
// Delete in external provider
|
|
362
|
+
const extNode = node;
|
|
363
|
+
const parsed = owningProvider.parseUri(extNode.uri);
|
|
364
|
+
if (!parsed) {
|
|
365
|
+
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${extNode.uri}`, owningProvider.name);
|
|
366
|
+
}
|
|
367
|
+
await owningProvider.delete(parsed.id, options?.context);
|
|
368
|
+
// Remove local materialized copy
|
|
369
|
+
await baseStore.deleteNode(node.id, { hard: true });
|
|
370
|
+
},
|
|
371
|
+
// =========================================================================
|
|
372
|
+
// Task Lifecycle (TaskManageable Trait — Federated)
|
|
373
|
+
// =========================================================================
|
|
374
|
+
async taskTransition(idOrUri, action, options) {
|
|
375
|
+
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
376
|
+
const updatedNode = await provider.transitionTask(providerId, action, options?.context);
|
|
377
|
+
// Materialize the result if external
|
|
378
|
+
const uri = provider.buildUri(updatedNode.id);
|
|
379
|
+
const materialized = await materialization.materialize(uri, updatedNode, baseStore);
|
|
380
|
+
return {
|
|
381
|
+
node: materialized,
|
|
382
|
+
provider: provider.name,
|
|
383
|
+
action,
|
|
384
|
+
};
|
|
385
|
+
},
|
|
386
|
+
async taskReady(options) {
|
|
387
|
+
const results = [];
|
|
388
|
+
for (const provider of registry.list()) {
|
|
389
|
+
if (!isTaskManageable(provider))
|
|
390
|
+
continue;
|
|
391
|
+
if (options?.providers && !options.providers.includes(provider.name))
|
|
392
|
+
continue;
|
|
393
|
+
const readyNodes = await provider.readyTasks({
|
|
394
|
+
limit: options?.limit,
|
|
395
|
+
tags: options?.tags,
|
|
396
|
+
priority: options?.priority,
|
|
397
|
+
assignee: options?.assignee,
|
|
398
|
+
}, options?.context);
|
|
399
|
+
// Materialize each ready task so callers get Node objects
|
|
400
|
+
for (const pNode of readyNodes) {
|
|
401
|
+
const uri = provider.buildUri(pNode.id);
|
|
402
|
+
const existing = await findExternalNodeByUri(uri, baseStore);
|
|
403
|
+
if (existing) {
|
|
404
|
+
results.push(existing);
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
const materialized = await materialization.materialize(uri, pNode, baseStore);
|
|
408
|
+
results.push(materialized);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Apply global limit after aggregating across providers
|
|
413
|
+
if (options?.limit && results.length > options.limit) {
|
|
414
|
+
return results.slice(0, options.limit);
|
|
415
|
+
}
|
|
416
|
+
return results;
|
|
417
|
+
},
|
|
418
|
+
async taskAssign(idOrUri, assignee, options) {
|
|
419
|
+
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
420
|
+
if (!provider.taskCapabilities.supportsAssignment || !provider.assignTask) {
|
|
421
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${provider.name} does not support task assignment`, provider.name);
|
|
422
|
+
}
|
|
423
|
+
const updatedNode = await provider.assignTask(providerId, assignee, options?.context);
|
|
424
|
+
const uri = provider.buildUri(updatedNode.id);
|
|
425
|
+
return materialization.materialize(uri, updatedNode, baseStore);
|
|
426
|
+
},
|
|
427
|
+
async taskValidActions(idOrUri) {
|
|
428
|
+
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
429
|
+
if (provider.validActions) {
|
|
430
|
+
return provider.validActions(providerId);
|
|
431
|
+
}
|
|
432
|
+
// Fall back to the provider's declared capabilities
|
|
433
|
+
return provider.taskCapabilities.actions;
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
// ===========================================================================
|
|
437
|
+
// Internal Helper: Resolve a task-capable provider for a given ID or URI
|
|
438
|
+
// ===========================================================================
|
|
439
|
+
async function resolveTaskProvider(idOrUri) {
|
|
440
|
+
// If it's a local ID, check if it's an external node with a provider URI
|
|
441
|
+
if (isLocalId(idOrUri)) {
|
|
442
|
+
const node = await baseStore.getNode(idOrUri);
|
|
443
|
+
if (!node) {
|
|
444
|
+
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`);
|
|
445
|
+
}
|
|
446
|
+
if (node.type === 'external') {
|
|
447
|
+
const extNode = node;
|
|
448
|
+
const provider = registry.resolveProvider(extNode.uri);
|
|
449
|
+
if (!provider) {
|
|
450
|
+
throw new ProviderError('NOT_FOUND', `No provider found for URI: ${extNode.uri}`);
|
|
451
|
+
}
|
|
452
|
+
if (!isTaskManageable(provider)) {
|
|
453
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${provider.name} does not support task operations`, provider.name);
|
|
454
|
+
}
|
|
455
|
+
const parsed = provider.parseUri(extNode.uri);
|
|
456
|
+
if (!parsed) {
|
|
457
|
+
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${extNode.uri}`, provider.name);
|
|
458
|
+
}
|
|
459
|
+
return { provider, providerId: parsed.id };
|
|
460
|
+
}
|
|
461
|
+
// Local non-external node — check native provider
|
|
462
|
+
const nativeProvider = registry.get('native');
|
|
463
|
+
if (!nativeProvider || !isTaskManageable(nativeProvider)) {
|
|
464
|
+
throw new ProviderError('NOT_SUPPORTED', 'Native provider does not support task operations');
|
|
465
|
+
}
|
|
466
|
+
return {
|
|
467
|
+
provider: nativeProvider,
|
|
468
|
+
providerId: idOrUri,
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
// Provider URI
|
|
472
|
+
const provider = registry.resolveProvider(idOrUri);
|
|
473
|
+
if (!provider) {
|
|
474
|
+
throw new ProviderError('NOT_FOUND', `No provider found for: ${idOrUri}`);
|
|
475
|
+
}
|
|
476
|
+
if (!isTaskManageable(provider)) {
|
|
477
|
+
throw new ProviderError('NOT_SUPPORTED', `Provider ${provider.name} does not support task operations`, provider.name);
|
|
478
|
+
}
|
|
479
|
+
const parsed = provider.parseUri(idOrUri);
|
|
480
|
+
if (!parsed) {
|
|
481
|
+
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${idOrUri}`, provider.name);
|
|
482
|
+
}
|
|
483
|
+
return { provider, providerId: parsed.id };
|
|
484
|
+
}
|
|
485
|
+
// ===========================================================================
|
|
486
|
+
// Internal Helper: Resolve any node by ID or URI (used by resolveNode and providerGet)
|
|
487
|
+
// ===========================================================================
|
|
488
|
+
async function resolveNodeInternal(idOrUri, options, context) {
|
|
489
|
+
// 1. Check if local ID - use existing getNode
|
|
490
|
+
if (isLocalId(idOrUri)) {
|
|
491
|
+
return baseStore.getNode(idOrUri);
|
|
492
|
+
}
|
|
493
|
+
// 2. Check for cached materialized node (unless refresh requested)
|
|
494
|
+
if (!options?.refresh) {
|
|
495
|
+
const existing = await findExternalNodeByUri(idOrUri, baseStore);
|
|
496
|
+
if (existing && !materialization.isStale(existing)) {
|
|
497
|
+
return existing;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
// 3. Find provider for this URI
|
|
501
|
+
const provider = registry.resolveProvider(idOrUri);
|
|
502
|
+
if (!provider) {
|
|
503
|
+
return null;
|
|
504
|
+
}
|
|
505
|
+
// 4. Parse URI and fetch from provider
|
|
506
|
+
const parsed = provider.parseUri(idOrUri);
|
|
507
|
+
if (!parsed) {
|
|
508
|
+
return null;
|
|
509
|
+
}
|
|
510
|
+
const providerNode = await provider.get(parsed.id, context);
|
|
511
|
+
if (!providerNode) {
|
|
512
|
+
return null;
|
|
513
|
+
}
|
|
514
|
+
// 5. Materialize if requested or per strategy
|
|
515
|
+
const shouldMaterialize = materialization.shouldMaterialize(idOrUri, {
|
|
516
|
+
accessType: 'resolve',
|
|
517
|
+
explicit: options?.materialize,
|
|
518
|
+
});
|
|
519
|
+
if (shouldMaterialize) {
|
|
520
|
+
return materialization.materialize(idOrUri, providerNode, baseStore);
|
|
521
|
+
}
|
|
522
|
+
// Return provider node directly
|
|
523
|
+
return providerNode;
|
|
524
|
+
}
|
|
525
|
+
// ===========================================================================
|
|
526
|
+
// Internal Helper: Resolve a node + its owning provider for write operations
|
|
527
|
+
// ===========================================================================
|
|
528
|
+
async function resolveForWrite(idOrUri) {
|
|
529
|
+
// Case 1: Provider URI (e.g., sudocode://proj/i-456)
|
|
530
|
+
if (!isLocalId(idOrUri)) {
|
|
531
|
+
const provider = registry.resolveProvider(idOrUri);
|
|
532
|
+
if (!provider) {
|
|
533
|
+
throw new ProviderError('NOT_FOUND', `No provider found for: ${idOrUri}`);
|
|
534
|
+
}
|
|
535
|
+
// Check if we have a materialized copy
|
|
536
|
+
const existing = await findExternalNodeByUri(idOrUri, baseStore);
|
|
537
|
+
if (existing) {
|
|
538
|
+
return { node: existing, provider, isExternal: true };
|
|
539
|
+
}
|
|
540
|
+
// No local copy — materialize first so we have a node to return
|
|
541
|
+
const parsed = provider.parseUri(idOrUri);
|
|
542
|
+
if (!parsed) {
|
|
543
|
+
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${idOrUri}`, provider.name);
|
|
544
|
+
}
|
|
545
|
+
const providerNode = await provider.get(parsed.id);
|
|
546
|
+
if (!providerNode) {
|
|
547
|
+
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`, provider.name);
|
|
548
|
+
}
|
|
549
|
+
const materialized = await materialization.materialize(idOrUri, providerNode, baseStore);
|
|
550
|
+
return { node: materialized, provider, isExternal: true };
|
|
551
|
+
}
|
|
552
|
+
// Case 2: Local ID (s-abc1, i-def2, x-ghi3)
|
|
553
|
+
const node = await baseStore.getNode(idOrUri);
|
|
554
|
+
if (!node) {
|
|
555
|
+
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`);
|
|
556
|
+
}
|
|
557
|
+
// Check if it's a materialized external node
|
|
558
|
+
if (node.type === 'external') {
|
|
559
|
+
const extNode = node;
|
|
560
|
+
const provider = registry.resolveProvider(extNode.uri);
|
|
561
|
+
return { node, provider, isExternal: true };
|
|
562
|
+
}
|
|
563
|
+
// Pure local node
|
|
564
|
+
return { node, provider: null, isExternal: false };
|
|
565
|
+
}
|
|
566
|
+
return providerStore;
|
|
567
|
+
}
|
|
568
|
+
//# sourceMappingURL=provider-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-store.js","sourceRoot":"","sources":["../../src/graph/provider-store.ts"],"names":[],"mappings":"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"}
|