opentasks 0.0.4 → 0.0.6
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 +40 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +183 -21
- package/dist/cli.js.map +1 -1
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +14 -1
- package/dist/client/client.js.map +1 -1
- package/dist/config/schema.d.ts +139 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +118 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/core/discover.d.ts.map +1 -1
- package/dist/core/discover.js +55 -39
- package/dist/core/discover.js.map +1 -1
- package/dist/core/init.js +1 -1
- package/dist/core/init.js.map +1 -1
- package/dist/core/merge-driver.d.ts +6 -2
- package/dist/core/merge-driver.d.ts.map +1 -1
- package/dist/core/merge-driver.js +11 -7
- package/dist/core/merge-driver.js.map +1 -1
- package/dist/core/worktree.js +1 -1
- package/dist/core/worktree.js.map +1 -1
- package/dist/daemon/entire-linker.d.ts.map +1 -1
- package/dist/daemon/entire-linker.js +48 -42
- package/dist/daemon/entire-linker.js.map +1 -1
- package/dist/daemon/entire-watcher.d.ts +12 -1
- package/dist/daemon/entire-watcher.d.ts.map +1 -1
- package/dist/daemon/entire-watcher.js +34 -3
- package/dist/daemon/entire-watcher.js.map +1 -1
- package/dist/daemon/ipc.d.ts +9 -1
- package/dist/daemon/ipc.d.ts.map +1 -1
- package/dist/daemon/ipc.js +45 -2
- package/dist/daemon/ipc.js.map +1 -1
- package/dist/daemon/lifecycle.d.ts.map +1 -1
- package/dist/daemon/lifecycle.js +77 -3
- package/dist/daemon/lifecycle.js.map +1 -1
- package/dist/daemon/location-state.d.ts +3 -0
- package/dist/daemon/location-state.d.ts.map +1 -1
- package/dist/daemon/location-state.js +49 -2
- package/dist/daemon/location-state.js.map +1 -1
- package/dist/daemon/methods/watch.d.ts +23 -0
- package/dist/daemon/methods/watch.d.ts.map +1 -0
- package/dist/daemon/methods/watch.js +172 -0
- package/dist/daemon/methods/watch.js.map +1 -0
- package/dist/daemon/registry.d.ts.map +1 -1
- package/dist/daemon/registry.js +2 -1
- package/dist/daemon/registry.js.map +1 -1
- package/dist/entire/index.d.ts +1 -0
- package/dist/entire/index.d.ts.map +1 -1
- package/dist/entire/index.js.map +1 -1
- package/dist/entire/store/native-store.d.ts +1 -1
- package/dist/entire/store/native-store.d.ts.map +1 -1
- package/dist/entire/store/provider-types.d.ts +78 -0
- package/dist/entire/store/provider-types.d.ts.map +1 -0
- package/dist/entire/store/provider-types.js +12 -0
- package/dist/entire/store/provider-types.js.map +1 -0
- package/dist/graph/expansion.d.ts +3 -1
- package/dist/graph/expansion.d.ts.map +1 -1
- package/dist/graph/expansion.js +32 -2
- package/dist/graph/expansion.js.map +1 -1
- package/dist/graph/git-graph-syncer.d.ts +72 -0
- package/dist/graph/git-graph-syncer.d.ts.map +1 -0
- package/dist/graph/git-graph-syncer.js +205 -0
- package/dist/graph/git-graph-syncer.js.map +1 -0
- package/dist/graph/store.d.ts +4 -0
- package/dist/graph/store.d.ts.map +1 -1
- package/dist/graph/store.js +97 -2
- package/dist/graph/store.js.map +1 -1
- package/dist/providers/entire.d.ts +34 -69
- package/dist/providers/entire.d.ts.map +1 -1
- package/dist/providers/entire.js +63 -9
- package/dist/providers/entire.js.map +1 -1
- package/dist/providers/from-config.d.ts +3 -0
- package/dist/providers/from-config.d.ts.map +1 -1
- package/dist/providers/from-config.js +45 -20
- package/dist/providers/from-config.js.map +1 -1
- package/dist/providers/global.d.ts +2 -1
- package/dist/providers/global.d.ts.map +1 -1
- package/dist/providers/global.js +52 -1
- package/dist/providers/global.js.map +1 -1
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/map-client-factory.d.ts +55 -0
- package/dist/providers/map-client-factory.d.ts.map +1 -0
- package/dist/providers/map-client-factory.js +123 -0
- package/dist/providers/map-client-factory.js.map +1 -0
- package/dist/providers/map-event-bridge.d.ts +146 -0
- package/dist/providers/map-event-bridge.d.ts.map +1 -0
- package/dist/providers/map-event-bridge.js +208 -0
- package/dist/providers/map-event-bridge.js.map +1 -0
- package/dist/providers/map.d.ts +115 -0
- package/dist/providers/map.d.ts.map +1 -0
- package/dist/providers/map.js +376 -0
- package/dist/providers/map.js.map +1 -0
- package/dist/tracking/index.d.ts +0 -4
- package/dist/tracking/index.d.ts.map +1 -1
- package/dist/tracking/index.js +0 -2
- package/dist/tracking/index.js.map +1 -1
- package/dist/tracking/transcript-extractor.d.ts +0 -6
- package/dist/tracking/transcript-extractor.d.ts.map +1 -1
- package/dist/tracking/transcript-extractor.js +3 -12
- package/dist/tracking/transcript-extractor.js.map +1 -1
- package/package.json +3 -1
- package/dist/__tests__/cli-tools.test.d.ts +0 -8
- package/dist/__tests__/cli-tools.test.d.ts.map +0 -1
- package/dist/__tests__/cli-tools.test.js +0 -546
- package/dist/__tests__/cli-tools.test.js.map +0 -1
- package/dist/__tests__/cli.test.d.ts +0 -5
- package/dist/__tests__/cli.test.d.ts.map +0 -1
- package/dist/__tests__/cli.test.js +0 -77
- package/dist/__tests__/cli.test.js.map +0 -1
- package/dist/__tests__/p1-p3-gaps.test.d.ts +0 -2
- package/dist/__tests__/p1-p3-gaps.test.d.ts.map +0 -1
- package/dist/__tests__/p1-p3-gaps.test.js +0 -463
- package/dist/__tests__/p1-p3-gaps.test.js.map +0 -1
- package/dist/client/__tests__/client-crud.test.d.ts +0 -7
- package/dist/client/__tests__/client-crud.test.d.ts.map +0 -1
- package/dist/client/__tests__/client-crud.test.js +0 -404
- package/dist/client/__tests__/client-crud.test.js.map +0 -1
- package/dist/client/__tests__/client.test.d.ts +0 -5
- package/dist/client/__tests__/client.test.d.ts.map +0 -1
- package/dist/client/__tests__/client.test.js +0 -518
- package/dist/client/__tests__/client.test.js.map +0 -1
- package/dist/config/__tests__/defaults.test.d.ts +0 -2
- package/dist/config/__tests__/defaults.test.d.ts.map +0 -1
- package/dist/config/__tests__/defaults.test.js +0 -57
- package/dist/config/__tests__/defaults.test.js.map +0 -1
- package/dist/config/__tests__/env.test.d.ts +0 -2
- package/dist/config/__tests__/env.test.d.ts.map +0 -1
- package/dist/config/__tests__/env.test.js +0 -136
- package/dist/config/__tests__/env.test.js.map +0 -1
- package/dist/config/__tests__/index.test.d.ts +0 -2
- package/dist/config/__tests__/index.test.d.ts.map +0 -1
- package/dist/config/__tests__/index.test.js +0 -113
- package/dist/config/__tests__/index.test.js.map +0 -1
- package/dist/config/__tests__/loader.test.d.ts +0 -2
- package/dist/config/__tests__/loader.test.d.ts.map +0 -1
- package/dist/config/__tests__/loader.test.js +0 -128
- package/dist/config/__tests__/loader.test.js.map +0 -1
- package/dist/config/__tests__/merge.test.d.ts +0 -2
- package/dist/config/__tests__/merge.test.d.ts.map +0 -1
- package/dist/config/__tests__/merge.test.js +0 -79
- package/dist/config/__tests__/merge.test.js.map +0 -1
- package/dist/config/__tests__/schema.test.d.ts +0 -2
- package/dist/config/__tests__/schema.test.d.ts.map +0 -1
- package/dist/config/__tests__/schema.test.js +0 -300
- package/dist/config/__tests__/schema.test.js.map +0 -1
- package/dist/core/__tests__/conditional-redirects.test.d.ts +0 -2
- package/dist/core/__tests__/conditional-redirects.test.d.ts.map +0 -1
- package/dist/core/__tests__/conditional-redirects.test.js +0 -83
- package/dist/core/__tests__/conditional-redirects.test.js.map +0 -1
- package/dist/core/__tests__/connections.test.d.ts +0 -2
- package/dist/core/__tests__/connections.test.d.ts.map +0 -1
- package/dist/core/__tests__/connections.test.js +0 -158
- package/dist/core/__tests__/connections.test.js.map +0 -1
- package/dist/core/__tests__/hash.test.d.ts +0 -2
- package/dist/core/__tests__/hash.test.d.ts.map +0 -1
- package/dist/core/__tests__/hash.test.js +0 -139
- package/dist/core/__tests__/hash.test.js.map +0 -1
- package/dist/core/__tests__/id.test.d.ts +0 -2
- package/dist/core/__tests__/id.test.d.ts.map +0 -1
- package/dist/core/__tests__/id.test.js +0 -142
- package/dist/core/__tests__/id.test.js.map +0 -1
- package/dist/core/__tests__/location.test.d.ts +0 -2
- package/dist/core/__tests__/location.test.d.ts.map +0 -1
- package/dist/core/__tests__/location.test.js +0 -77
- package/dist/core/__tests__/location.test.js.map +0 -1
- package/dist/core/__tests__/merge-driver.test.d.ts +0 -2
- package/dist/core/__tests__/merge-driver.test.d.ts.map +0 -1
- package/dist/core/__tests__/merge-driver.test.js +0 -218
- package/dist/core/__tests__/merge-driver.test.js.map +0 -1
- package/dist/core/__tests__/redirects.test.d.ts +0 -2
- package/dist/core/__tests__/redirects.test.d.ts.map +0 -1
- package/dist/core/__tests__/redirects.test.js +0 -123
- package/dist/core/__tests__/redirects.test.js.map +0 -1
- package/dist/core/__tests__/resolve-location-target.test.d.ts +0 -8
- package/dist/core/__tests__/resolve-location-target.test.d.ts.map +0 -1
- package/dist/core/__tests__/resolve-location-target.test.js +0 -303
- package/dist/core/__tests__/resolve-location-target.test.js.map +0 -1
- package/dist/core/__tests__/uri.test.d.ts +0 -2
- package/dist/core/__tests__/uri.test.d.ts.map +0 -1
- package/dist/core/__tests__/uri.test.js +0 -159
- package/dist/core/__tests__/uri.test.js.map +0 -1
- package/dist/core/__tests__/worktree.test.d.ts +0 -2
- package/dist/core/__tests__/worktree.test.d.ts.map +0 -1
- package/dist/core/__tests__/worktree.test.js +0 -120
- package/dist/core/__tests__/worktree.test.js.map +0 -1
- package/dist/daemon/__tests__/flush.test.d.ts +0 -5
- package/dist/daemon/__tests__/flush.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/flush.test.js +0 -213
- package/dist/daemon/__tests__/flush.test.js.map +0 -1
- package/dist/daemon/__tests__/integration.test.d.ts +0 -7
- package/dist/daemon/__tests__/integration.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/integration.test.js +0 -276
- package/dist/daemon/__tests__/integration.test.js.map +0 -1
- package/dist/daemon/__tests__/ipc.test.d.ts +0 -5
- package/dist/daemon/__tests__/ipc.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/ipc.test.js +0 -314
- package/dist/daemon/__tests__/ipc.test.js.map +0 -1
- package/dist/daemon/__tests__/lifecycle.test.d.ts +0 -5
- package/dist/daemon/__tests__/lifecycle.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/lifecycle.test.js +0 -301
- package/dist/daemon/__tests__/lifecycle.test.js.map +0 -1
- package/dist/daemon/__tests__/lock.test.d.ts +0 -5
- package/dist/daemon/__tests__/lock.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/lock.test.js +0 -192
- package/dist/daemon/__tests__/lock.test.js.map +0 -1
- package/dist/daemon/__tests__/methods/graph.test.d.ts +0 -5
- package/dist/daemon/__tests__/methods/graph.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/methods/graph.test.js +0 -309
- package/dist/daemon/__tests__/methods/graph.test.js.map +0 -1
- package/dist/daemon/__tests__/methods/provider.test.d.ts +0 -7
- package/dist/daemon/__tests__/methods/provider.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/methods/provider.test.js +0 -181
- package/dist/daemon/__tests__/methods/provider.test.js.map +0 -1
- package/dist/daemon/__tests__/methods/tools.test.d.ts +0 -5
- package/dist/daemon/__tests__/methods/tools.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/methods/tools.test.js +0 -587
- package/dist/daemon/__tests__/methods/tools.test.js.map +0 -1
- package/dist/daemon/__tests__/multi-location.test.d.ts +0 -8
- package/dist/daemon/__tests__/multi-location.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/multi-location.test.js +0 -669
- package/dist/daemon/__tests__/multi-location.test.js.map +0 -1
- package/dist/daemon/__tests__/registry.test.d.ts +0 -5
- package/dist/daemon/__tests__/registry.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/registry.test.js +0 -208
- package/dist/daemon/__tests__/registry.test.js.map +0 -1
- package/dist/daemon/__tests__/watcher.test.d.ts +0 -5
- package/dist/daemon/__tests__/watcher.test.d.ts.map +0 -1
- package/dist/daemon/__tests__/watcher.test.js +0 -234
- package/dist/daemon/__tests__/watcher.test.js.map +0 -1
- package/dist/daemon/methods/__tests__/graph.test.d.ts +0 -5
- package/dist/daemon/methods/__tests__/graph.test.d.ts.map +0 -1
- package/dist/daemon/methods/__tests__/graph.test.js +0 -274
- package/dist/daemon/methods/__tests__/graph.test.js.map +0 -1
- package/dist/daemon/methods/__tests__/provider.test.d.ts +0 -5
- package/dist/daemon/methods/__tests__/provider.test.d.ts.map +0 -1
- package/dist/daemon/methods/__tests__/provider.test.js +0 -184
- package/dist/daemon/methods/__tests__/provider.test.js.map +0 -1
- package/dist/daemon/methods/__tests__/tools.test.d.ts +0 -5
- package/dist/daemon/methods/__tests__/tools.test.d.ts.map +0 -1
- package/dist/daemon/methods/__tests__/tools.test.js +0 -295
- package/dist/daemon/methods/__tests__/tools.test.js.map +0 -1
- package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts +0 -2
- package/dist/graph/__tests__/EdgeTypeRegistry.test.d.ts.map +0 -1
- package/dist/graph/__tests__/EdgeTypeRegistry.test.js +0 -212
- package/dist/graph/__tests__/EdgeTypeRegistry.test.js.map +0 -1
- package/dist/graph/__tests__/FederatedGraph.test.d.ts +0 -2
- package/dist/graph/__tests__/FederatedGraph.test.d.ts.map +0 -1
- package/dist/graph/__tests__/FederatedGraph.test.js +0 -661
- package/dist/graph/__tests__/FederatedGraph.test.js.map +0 -1
- package/dist/graph/__tests__/GraphologyAdapter.test.d.ts +0 -2
- package/dist/graph/__tests__/GraphologyAdapter.test.d.ts.map +0 -1
- package/dist/graph/__tests__/GraphologyAdapter.test.js +0 -326
- package/dist/graph/__tests__/GraphologyAdapter.test.js.map +0 -1
- package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts +0 -2
- package/dist/graph/__tests__/HydratingFederatedGraph.test.d.ts.map +0 -1
- package/dist/graph/__tests__/HydratingFederatedGraph.test.js +0 -587
- package/dist/graph/__tests__/HydratingFederatedGraph.test.js.map +0 -1
- package/dist/graph/__tests__/debounce.test.d.ts +0 -5
- package/dist/graph/__tests__/debounce.test.d.ts.map +0 -1
- package/dist/graph/__tests__/debounce.test.js +0 -195
- package/dist/graph/__tests__/debounce.test.js.map +0 -1
- package/dist/graph/__tests__/edge-cases.test.d.ts +0 -8
- package/dist/graph/__tests__/edge-cases.test.d.ts.map +0 -1
- package/dist/graph/__tests__/edge-cases.test.js +0 -472
- package/dist/graph/__tests__/edge-cases.test.js.map +0 -1
- package/dist/graph/__tests__/expansion.test.d.ts +0 -2
- package/dist/graph/__tests__/expansion.test.d.ts.map +0 -1
- package/dist/graph/__tests__/expansion.test.js +0 -105
- package/dist/graph/__tests__/expansion.test.js.map +0 -1
- package/dist/graph/__tests__/provider-store.test.d.ts +0 -5
- package/dist/graph/__tests__/provider-store.test.d.ts.map +0 -1
- package/dist/graph/__tests__/provider-store.test.js +0 -791
- package/dist/graph/__tests__/provider-store.test.js.map +0 -1
- package/dist/graph/__tests__/query.test.d.ts +0 -5
- package/dist/graph/__tests__/query.test.d.ts.map +0 -1
- package/dist/graph/__tests__/query.test.js +0 -774
- package/dist/graph/__tests__/query.test.js.map +0 -1
- package/dist/graph/__tests__/store.test.d.ts +0 -5
- package/dist/graph/__tests__/store.test.d.ts.map +0 -1
- package/dist/graph/__tests__/store.test.js +0 -489
- package/dist/graph/__tests__/store.test.js.map +0 -1
- package/dist/graph/__tests__/sync.test.d.ts +0 -5
- package/dist/graph/__tests__/sync.test.d.ts.map +0 -1
- package/dist/graph/__tests__/sync.test.js +0 -129
- package/dist/graph/__tests__/sync.test.js.map +0 -1
- package/dist/graph/__tests__/validation.test.d.ts +0 -2
- package/dist/graph/__tests__/validation.test.d.ts.map +0 -1
- package/dist/graph/__tests__/validation.test.js +0 -521
- package/dist/graph/__tests__/validation.test.js.map +0 -1
- package/dist/providers/__tests__/beads.test.d.ts +0 -5
- package/dist/providers/__tests__/beads.test.d.ts.map +0 -1
- package/dist/providers/__tests__/beads.test.js +0 -591
- package/dist/providers/__tests__/beads.test.js.map +0 -1
- package/dist/providers/__tests__/claude-tasks.test.d.ts +0 -5
- package/dist/providers/__tests__/claude-tasks.test.d.ts.map +0 -1
- package/dist/providers/__tests__/claude-tasks.test.js +0 -392
- package/dist/providers/__tests__/claude-tasks.test.js.map +0 -1
- package/dist/providers/__tests__/from-config.test.d.ts +0 -5
- package/dist/providers/__tests__/from-config.test.d.ts.map +0 -1
- package/dist/providers/__tests__/from-config.test.js +0 -152
- package/dist/providers/__tests__/from-config.test.js.map +0 -1
- package/dist/providers/__tests__/materialization.test.d.ts +0 -5
- package/dist/providers/__tests__/materialization.test.d.ts.map +0 -1
- package/dist/providers/__tests__/materialization.test.js +0 -407
- package/dist/providers/__tests__/materialization.test.js.map +0 -1
- package/dist/providers/__tests__/native.test.d.ts +0 -5
- package/dist/providers/__tests__/native.test.d.ts.map +0 -1
- package/dist/providers/__tests__/native.test.js +0 -566
- package/dist/providers/__tests__/native.test.js.map +0 -1
- package/dist/providers/__tests__/registry.test.d.ts +0 -5
- package/dist/providers/__tests__/registry.test.d.ts.map +0 -1
- package/dist/providers/__tests__/registry.test.js +0 -183
- package/dist/providers/__tests__/registry.test.js.map +0 -1
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts +0 -2
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.d.ts.map +0 -1
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.js +0 -169
- package/dist/providers/traits/__tests__/RelationshipQueryable.test.js.map +0 -1
- package/dist/providers/traits/__tests__/TaskManageable.test.d.ts +0 -2
- package/dist/providers/traits/__tests__/TaskManageable.test.d.ts.map +0 -1
- package/dist/providers/traits/__tests__/TaskManageable.test.js +0 -172
- package/dist/providers/traits/__tests__/TaskManageable.test.js.map +0 -1
- package/dist/schema/__tests__/validation.test.d.ts +0 -2
- package/dist/schema/__tests__/validation.test.d.ts.map +0 -1
- package/dist/schema/__tests__/validation.test.js +0 -241
- package/dist/schema/__tests__/validation.test.js.map +0 -1
- package/dist/storage/__tests__/atomic-write.test.d.ts +0 -5
- package/dist/storage/__tests__/atomic-write.test.d.ts.map +0 -1
- package/dist/storage/__tests__/atomic-write.test.js +0 -170
- package/dist/storage/__tests__/atomic-write.test.js.map +0 -1
- package/dist/storage/__tests__/file-lock.test.d.ts +0 -2
- package/dist/storage/__tests__/file-lock.test.d.ts.map +0 -1
- package/dist/storage/__tests__/file-lock.test.js +0 -89
- package/dist/storage/__tests__/file-lock.test.js.map +0 -1
- package/dist/storage/__tests__/jsonl.test.d.ts +0 -2
- package/dist/storage/__tests__/jsonl.test.d.ts.map +0 -1
- package/dist/storage/__tests__/jsonl.test.js +0 -228
- package/dist/storage/__tests__/jsonl.test.js.map +0 -1
- package/dist/storage/__tests__/locked-writer.test.d.ts +0 -2
- package/dist/storage/__tests__/locked-writer.test.d.ts.map +0 -1
- package/dist/storage/__tests__/locked-writer.test.js +0 -109
- package/dist/storage/__tests__/locked-writer.test.js.map +0 -1
- package/dist/storage/__tests__/sqlite.test.d.ts +0 -2
- package/dist/storage/__tests__/sqlite.test.d.ts.map +0 -1
- package/dist/storage/__tests__/sqlite.test.js +0 -470
- package/dist/storage/__tests__/sqlite.test.js.map +0 -1
- package/dist/tools/__tests__/annotate.test.d.ts +0 -5
- package/dist/tools/__tests__/annotate.test.d.ts.map +0 -1
- package/dist/tools/__tests__/annotate.test.js +0 -314
- package/dist/tools/__tests__/annotate.test.js.map +0 -1
- package/dist/tools/__tests__/link.test.d.ts +0 -5
- package/dist/tools/__tests__/link.test.d.ts.map +0 -1
- package/dist/tools/__tests__/link.test.js +0 -245
- package/dist/tools/__tests__/link.test.js.map +0 -1
- package/dist/tools/__tests__/query.test.d.ts +0 -5
- package/dist/tools/__tests__/query.test.d.ts.map +0 -1
- package/dist/tools/__tests__/query.test.js +0 -288
- package/dist/tools/__tests__/query.test.js.map +0 -1
- package/dist/tools/__tests__/task.test.d.ts +0 -5
- package/dist/tools/__tests__/task.test.d.ts.map +0 -1
- package/dist/tools/__tests__/task.test.js +0 -178
- package/dist/tools/__tests__/task.test.js.map +0 -1
- package/dist/tracking/claude-task-reconstructor.d.ts +0 -41
- package/dist/tracking/claude-task-reconstructor.d.ts.map +0 -1
- package/dist/tracking/claude-task-reconstructor.js +0 -91
- package/dist/tracking/claude-task-reconstructor.js.map +0 -1
- package/dist/tracking/plan-mode-tracker.d.ts +0 -20
- package/dist/tracking/plan-mode-tracker.d.ts.map +0 -1
- package/dist/tracking/plan-mode-tracker.js +0 -35
- package/dist/tracking/plan-mode-tracker.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MAP Client Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a MAPTaskClient from a MAP server connection.
|
|
5
|
+
* Used by the daemon to wire the MAP provider and event bridge.
|
|
6
|
+
*
|
|
7
|
+
* The factory dynamically imports @multi-agent-protocol/sdk so that
|
|
8
|
+
* the dependency is optional — if the SDK is not installed, the factory
|
|
9
|
+
* returns null and the MAP provider is gracefully skipped.
|
|
10
|
+
*/
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Factory
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Create a MAP client by connecting to a MAP server.
|
|
16
|
+
*
|
|
17
|
+
* Dynamically imports the MAP SDK. Returns null if:
|
|
18
|
+
* - The SDK is not installed
|
|
19
|
+
* - The connection fails
|
|
20
|
+
*
|
|
21
|
+
* The returned client satisfies the MAPTaskClient interface and can be
|
|
22
|
+
* passed directly to createMAPProvider(). The send function can be passed
|
|
23
|
+
* to createMAPEventBridge().
|
|
24
|
+
*
|
|
25
|
+
* @param options - Connection options
|
|
26
|
+
* @returns MAPClientResult or null on failure
|
|
27
|
+
*/
|
|
28
|
+
export async function createMAPClient(options) {
|
|
29
|
+
const { server, agentName = 'opentasks-daemon', scope = '', systemId = 'default', timeout = 30000, } = options;
|
|
30
|
+
try {
|
|
31
|
+
// Dynamic import — SDK is optional
|
|
32
|
+
const sdk = await import('@multi-agent-protocol/sdk');
|
|
33
|
+
const { AgentConnection } = sdk;
|
|
34
|
+
const connection = await AgentConnection.connect(server, {
|
|
35
|
+
name: agentName,
|
|
36
|
+
role: 'daemon',
|
|
37
|
+
scopes: scope ? [scope] : [],
|
|
38
|
+
capabilities: {
|
|
39
|
+
tasks: {
|
|
40
|
+
canCreate: true,
|
|
41
|
+
canAssign: true,
|
|
42
|
+
canUpdate: true,
|
|
43
|
+
canList: true,
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
metadata: {
|
|
47
|
+
systemId,
|
|
48
|
+
type: 'opentasks-daemon',
|
|
49
|
+
},
|
|
50
|
+
reconnection: {
|
|
51
|
+
enabled: true,
|
|
52
|
+
maxRetries: 10,
|
|
53
|
+
baseDelayMs: 1000,
|
|
54
|
+
maxDelayMs: 30000,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// Task event listeners for the Watchable trait
|
|
58
|
+
const eventCallbacks = [];
|
|
59
|
+
// Listen for incoming messages that contain task events
|
|
60
|
+
connection.onMessage((message) => {
|
|
61
|
+
const payload = (message.payload ?? {});
|
|
62
|
+
if (payload.type?.startsWith('task.')) {
|
|
63
|
+
const event = {
|
|
64
|
+
type: payload.type,
|
|
65
|
+
data: payload,
|
|
66
|
+
};
|
|
67
|
+
for (const cb of eventCallbacks) {
|
|
68
|
+
try {
|
|
69
|
+
cb(event);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Don't let callback errors break the loop
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const client = {
|
|
78
|
+
async createTask(params) {
|
|
79
|
+
return connection.createTask(params);
|
|
80
|
+
},
|
|
81
|
+
async assignTask(taskId, agentId) {
|
|
82
|
+
return connection.assignTask(taskId, agentId);
|
|
83
|
+
},
|
|
84
|
+
async updateTask(params) {
|
|
85
|
+
return connection.updateTask(params);
|
|
86
|
+
},
|
|
87
|
+
async listTasks(params) {
|
|
88
|
+
return connection.listTasks(params ?? {});
|
|
89
|
+
},
|
|
90
|
+
onTaskEvent(callback) {
|
|
91
|
+
eventCallbacks.push(callback);
|
|
92
|
+
return () => {
|
|
93
|
+
const idx = eventCallbacks.indexOf(callback);
|
|
94
|
+
if (idx >= 0)
|
|
95
|
+
eventCallbacks.splice(idx, 1);
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
const send = (eventType, data) => {
|
|
100
|
+
// Send as a message to the scope (observers see message_sent events)
|
|
101
|
+
// The data includes the event type for receivers to dispatch on
|
|
102
|
+
if (!scope)
|
|
103
|
+
return; // Cannot send without a target scope
|
|
104
|
+
connection.send({ scope }, { type: eventType, ...data }).catch(() => {
|
|
105
|
+
// Best effort — don't block on send failures
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
const disconnect = async () => {
|
|
109
|
+
try {
|
|
110
|
+
await connection.disconnect();
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Ignore disconnect errors
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
return { client, send, disconnect };
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// SDK not installed or connection failed — graceful degradation
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=map-client-factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-client-factory.js","sourceRoot":"","sources":["../../src/providers/map-client-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MAP Event Bridge
|
|
3
|
+
*
|
|
4
|
+
* Translates OpenTasks graph changes into MAP task events for observability.
|
|
5
|
+
* Standalone utility — can be used by the daemon (attached to graph store changes)
|
|
6
|
+
* or by individual agent processes (emit-your-own-actions pattern).
|
|
7
|
+
*
|
|
8
|
+
* The bridge is independent of the MAP provider. The provider handles inbound
|
|
9
|
+
* (MAP → OpenTasks); the bridge handles outbound (OpenTasks → MAP).
|
|
10
|
+
*
|
|
11
|
+
* Accepts either a send function or a MAP connection object (compatible with
|
|
12
|
+
* agent-inbox's MapConnection interface), so multiple systems can share one
|
|
13
|
+
* connection — e.g., agent-inbox handles messaging while this bridge handles
|
|
14
|
+
* task events, both over the same MAP connection.
|
|
15
|
+
*
|
|
16
|
+
* Usage patterns:
|
|
17
|
+
*
|
|
18
|
+
* 1. With a send function:
|
|
19
|
+
* ```
|
|
20
|
+
* const bridge = createMAPEventBridge({ send, agentId: 'agent-alice' });
|
|
21
|
+
* bridge.emitTaskCreated({ id: 'task-1', title: 'Do thing', status: 'open' });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* 2. With a shared MAP connection (e.g., from agent-inbox or MAP SDK):
|
|
25
|
+
* ```
|
|
26
|
+
* const bridge = createMAPEventBridge({
|
|
27
|
+
* connection: mapConnection,
|
|
28
|
+
* scope: 'swarm:my-team',
|
|
29
|
+
* agentId: 'agent-alice',
|
|
30
|
+
* });
|
|
31
|
+
* bridge.emitTaskStatus('task-1', 'open', 'in_progress');
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* 3. Attached to daemon watch events via IPC:
|
|
35
|
+
* ```
|
|
36
|
+
* const bridge = createMAPEventBridge({ send, agentId: 'agent-bob' });
|
|
37
|
+
* daemonClient.on('watch.event', (event) => bridge.handleProviderChange('native', event));
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
import type { ProviderChangeEvent } from './traits/Watchable.js';
|
|
41
|
+
/**
|
|
42
|
+
* Function that sends a MAP event over a connection.
|
|
43
|
+
*
|
|
44
|
+
* This is the only dependency on the MAP transport layer.
|
|
45
|
+
* A ClientConnection's sendEvent, a BaseConnection's sendNotification,
|
|
46
|
+
* or any custom function that puts events on the wire.
|
|
47
|
+
*/
|
|
48
|
+
export type MAPEventSender = (eventType: string, data: Record<string, unknown>) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Minimal MAP connection interface for sharing a connection with other systems.
|
|
51
|
+
*
|
|
52
|
+
* Compatible with:
|
|
53
|
+
* - agent-inbox's MapConnection
|
|
54
|
+
* - MAP SDK's AgentConnection / ClientConnection
|
|
55
|
+
* - Any object with a send(to, payload, meta?) method
|
|
56
|
+
*
|
|
57
|
+
* The bridge borrows the connection — it does NOT own its lifecycle
|
|
58
|
+
* and will not disconnect it on stop().
|
|
59
|
+
*/
|
|
60
|
+
export interface MAPConnection {
|
|
61
|
+
send(to: {
|
|
62
|
+
scope?: string;
|
|
63
|
+
agentId?: string;
|
|
64
|
+
} | string, payload: unknown, meta?: Record<string, unknown>): Promise<void>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Minimal task info needed to emit MAP events.
|
|
68
|
+
* Matches the shape agents already have when they perform task operations.
|
|
69
|
+
*/
|
|
70
|
+
export interface TaskInfo {
|
|
71
|
+
id: string;
|
|
72
|
+
title?: string;
|
|
73
|
+
status?: string;
|
|
74
|
+
description?: string;
|
|
75
|
+
assignee?: string | null;
|
|
76
|
+
meta?: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Configuration for creating a MAP event bridge.
|
|
80
|
+
*
|
|
81
|
+
* Provide either `send` (a raw function) or `connection` + `scope`
|
|
82
|
+
* (a shared MAP connection object). If both are provided, `send` takes precedence.
|
|
83
|
+
*/
|
|
84
|
+
export interface MAPEventBridgeConfig {
|
|
85
|
+
/**
|
|
86
|
+
* Function to send MAP events over the wire.
|
|
87
|
+
* If provided, this is used directly. Mutually exclusive with `connection`.
|
|
88
|
+
*/
|
|
89
|
+
send?: MAPEventSender;
|
|
90
|
+
/**
|
|
91
|
+
* A shared MAP connection object (e.g., from agent-inbox or MAP SDK).
|
|
92
|
+
* The bridge adapts connection.send() into the event sender.
|
|
93
|
+
* The bridge does NOT own the connection lifecycle.
|
|
94
|
+
*/
|
|
95
|
+
connection?: MAPConnection;
|
|
96
|
+
/**
|
|
97
|
+
* MAP scope to send events to. Required when using `connection`.
|
|
98
|
+
* Ignored when using `send` directly.
|
|
99
|
+
*/
|
|
100
|
+
scope?: string;
|
|
101
|
+
/**
|
|
102
|
+
* Origin identifier stamped on all emitted events.
|
|
103
|
+
* Used to prevent echo loops — receivers can filter events
|
|
104
|
+
* that originated from their own system.
|
|
105
|
+
*/
|
|
106
|
+
agentId?: string;
|
|
107
|
+
/**
|
|
108
|
+
* Optional filter — return false to suppress an event.
|
|
109
|
+
* Called before sending. Useful for filtering by provider,
|
|
110
|
+
* node type, or any other criteria.
|
|
111
|
+
*/
|
|
112
|
+
filter?: (eventType: string, data: Record<string, unknown>) => boolean;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* MAP Event Bridge instance
|
|
116
|
+
*/
|
|
117
|
+
export interface MAPEventBridge {
|
|
118
|
+
/** Emit a task.created event */
|
|
119
|
+
emitTaskCreated(task: TaskInfo): void;
|
|
120
|
+
/** Emit a task.status event */
|
|
121
|
+
emitTaskStatus(taskId: string, previous: string, current: string): void;
|
|
122
|
+
/** Emit a task.assigned event */
|
|
123
|
+
emitTaskAssigned(taskId: string, assignee: string): void;
|
|
124
|
+
/** Emit a task.completed event */
|
|
125
|
+
emitTaskCompleted(taskId: string, result?: unknown): void;
|
|
126
|
+
/**
|
|
127
|
+
* Handle a ProviderChangeEvent from the graph store.
|
|
128
|
+
* Translates it to the appropriate MAP event(s) and sends.
|
|
129
|
+
*
|
|
130
|
+
* @param providerName - Name of the provider that produced the change
|
|
131
|
+
* @param event - The provider change event
|
|
132
|
+
*/
|
|
133
|
+
handleProviderChange(providerName: string, event: ProviderChangeEvent): void;
|
|
134
|
+
/** Stop the bridge and prevent further events from being sent */
|
|
135
|
+
stop(): void;
|
|
136
|
+
/** Whether the bridge is active */
|
|
137
|
+
readonly active: boolean;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create a MAP event bridge
|
|
141
|
+
*
|
|
142
|
+
* @param config - Bridge configuration (provide `send` or `connection` + `scope`)
|
|
143
|
+
* @returns A MAPEventBridge instance
|
|
144
|
+
*/
|
|
145
|
+
export declare function createMAPEventBridge(config: MAPEventBridgeConfig): MAPEventBridge;
|
|
146
|
+
//# sourceMappingURL=map-event-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-event-bridge.d.ts","sourceRoot":"","sources":["../../src/providers/map-event-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAA2B,MAAM,uBAAuB,CAAC;AAM1F;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAExF;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CACF,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,EACjD,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAC;IAEtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAG7B,gCAAgC;IAChC,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAEtC,+BAA+B;IAC/B,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAExE,iCAAiC;IACjC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzD,kCAAkC;IAClC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAI1D;;;;;;OAMG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAE7E,iEAAiE;IACjE,IAAI,IAAI,IAAI,CAAC;IAEb,mCAAmC;IACnC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAyBD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAoKjF"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MAP Event Bridge
|
|
3
|
+
*
|
|
4
|
+
* Translates OpenTasks graph changes into MAP task events for observability.
|
|
5
|
+
* Standalone utility — can be used by the daemon (attached to graph store changes)
|
|
6
|
+
* or by individual agent processes (emit-your-own-actions pattern).
|
|
7
|
+
*
|
|
8
|
+
* The bridge is independent of the MAP provider. The provider handles inbound
|
|
9
|
+
* (MAP → OpenTasks); the bridge handles outbound (OpenTasks → MAP).
|
|
10
|
+
*
|
|
11
|
+
* Accepts either a send function or a MAP connection object (compatible with
|
|
12
|
+
* agent-inbox's MapConnection interface), so multiple systems can share one
|
|
13
|
+
* connection — e.g., agent-inbox handles messaging while this bridge handles
|
|
14
|
+
* task events, both over the same MAP connection.
|
|
15
|
+
*
|
|
16
|
+
* Usage patterns:
|
|
17
|
+
*
|
|
18
|
+
* 1. With a send function:
|
|
19
|
+
* ```
|
|
20
|
+
* const bridge = createMAPEventBridge({ send, agentId: 'agent-alice' });
|
|
21
|
+
* bridge.emitTaskCreated({ id: 'task-1', title: 'Do thing', status: 'open' });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* 2. With a shared MAP connection (e.g., from agent-inbox or MAP SDK):
|
|
25
|
+
* ```
|
|
26
|
+
* const bridge = createMAPEventBridge({
|
|
27
|
+
* connection: mapConnection,
|
|
28
|
+
* scope: 'swarm:my-team',
|
|
29
|
+
* agentId: 'agent-alice',
|
|
30
|
+
* });
|
|
31
|
+
* bridge.emitTaskStatus('task-1', 'open', 'in_progress');
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* 3. Attached to daemon watch events via IPC:
|
|
35
|
+
* ```
|
|
36
|
+
* const bridge = createMAPEventBridge({ send, agentId: 'agent-bob' });
|
|
37
|
+
* daemonClient.on('watch.event', (event) => bridge.handleProviderChange('native', event));
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// Status Mapping
|
|
42
|
+
// ============================================================================
|
|
43
|
+
/**
|
|
44
|
+
* Map OpenTasks status to MAP task status for outbound events
|
|
45
|
+
*/
|
|
46
|
+
function toMAPStatus(status) {
|
|
47
|
+
switch (status?.toLowerCase()) {
|
|
48
|
+
case 'open': return 'open';
|
|
49
|
+
case 'in_progress': return 'in_progress';
|
|
50
|
+
case 'blocked': return 'blocked';
|
|
51
|
+
case 'closed': return 'completed';
|
|
52
|
+
case 'completed': return 'completed';
|
|
53
|
+
case 'failed': return 'failed';
|
|
54
|
+
default: return 'open';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// Factory
|
|
59
|
+
// ============================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Create a MAP event bridge
|
|
62
|
+
*
|
|
63
|
+
* @param config - Bridge configuration (provide `send` or `connection` + `scope`)
|
|
64
|
+
* @returns A MAPEventBridge instance
|
|
65
|
+
*/
|
|
66
|
+
export function createMAPEventBridge(config) {
|
|
67
|
+
const { agentId, filter } = config;
|
|
68
|
+
// Resolve the send function from either direct `send` or `connection` + `scope`
|
|
69
|
+
let send;
|
|
70
|
+
if (config.send) {
|
|
71
|
+
send = config.send;
|
|
72
|
+
}
|
|
73
|
+
else if (config.connection) {
|
|
74
|
+
const connection = config.connection;
|
|
75
|
+
const scope = config.scope || '';
|
|
76
|
+
const target = scope ? { scope } : {};
|
|
77
|
+
send = (eventType, data) => {
|
|
78
|
+
connection.send(target, { type: eventType, ...data }).catch(() => {
|
|
79
|
+
// Best effort — don't block on send failures
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
throw new Error('MAPEventBridgeConfig requires either `send` or `connection`');
|
|
85
|
+
}
|
|
86
|
+
let active = true;
|
|
87
|
+
function emit(eventType, data) {
|
|
88
|
+
if (!active)
|
|
89
|
+
return;
|
|
90
|
+
// Stamp origin metadata
|
|
91
|
+
if (agentId) {
|
|
92
|
+
data._origin = agentId;
|
|
93
|
+
}
|
|
94
|
+
// Apply filter
|
|
95
|
+
if (filter && !filter(eventType, data))
|
|
96
|
+
return;
|
|
97
|
+
send(eventType, data);
|
|
98
|
+
}
|
|
99
|
+
const bridge = {
|
|
100
|
+
// ==================================================================
|
|
101
|
+
// Direct Emit Methods
|
|
102
|
+
// ==================================================================
|
|
103
|
+
emitTaskCreated(task) {
|
|
104
|
+
emit('task.created', {
|
|
105
|
+
task: {
|
|
106
|
+
id: task.id,
|
|
107
|
+
...(task.title !== undefined && { title: task.title }),
|
|
108
|
+
...(task.status !== undefined && { status: toMAPStatus(task.status) }),
|
|
109
|
+
...(task.description !== undefined && { description: task.description }),
|
|
110
|
+
...(task.assignee !== undefined && { assignee: task.assignee }),
|
|
111
|
+
...(task.meta !== undefined && { meta: task.meta }),
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
},
|
|
115
|
+
emitTaskStatus(taskId, previous, current) {
|
|
116
|
+
emit('task.status', {
|
|
117
|
+
taskId,
|
|
118
|
+
previous: toMAPStatus(previous),
|
|
119
|
+
current: toMAPStatus(current),
|
|
120
|
+
});
|
|
121
|
+
// Also emit task.completed if the new status is a terminal state
|
|
122
|
+
if (current === 'completed' || current === 'closed') {
|
|
123
|
+
emit('task.completed', { taskId });
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
emitTaskAssigned(taskId, assignee) {
|
|
127
|
+
emit('task.assigned', {
|
|
128
|
+
taskId,
|
|
129
|
+
agentId: assignee,
|
|
130
|
+
});
|
|
131
|
+
},
|
|
132
|
+
emitTaskCompleted(taskId, result) {
|
|
133
|
+
emit('task.completed', {
|
|
134
|
+
taskId,
|
|
135
|
+
...(result !== undefined && { result }),
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
// ==================================================================
|
|
139
|
+
// Provider Change Handler
|
|
140
|
+
// ==================================================================
|
|
141
|
+
handleProviderChange(providerName, event) {
|
|
142
|
+
if (!active)
|
|
143
|
+
return;
|
|
144
|
+
// Only handle node events (not edge events)
|
|
145
|
+
if (event.kind !== 'node')
|
|
146
|
+
return;
|
|
147
|
+
// Skip changes from the MAP provider to prevent echo loops
|
|
148
|
+
if (providerName === 'map')
|
|
149
|
+
return;
|
|
150
|
+
const nodeEvent = event.event;
|
|
151
|
+
// Only bridge task-type nodes
|
|
152
|
+
const nodeType = nodeEvent.node?.type;
|
|
153
|
+
if (nodeType && nodeType !== 'task')
|
|
154
|
+
return;
|
|
155
|
+
switch (nodeEvent.type) {
|
|
156
|
+
case 'created': {
|
|
157
|
+
if (nodeEvent.node) {
|
|
158
|
+
bridge.emitTaskCreated({
|
|
159
|
+
id: nodeEvent.nodeId,
|
|
160
|
+
title: nodeEvent.node.title,
|
|
161
|
+
status: nodeEvent.node.status,
|
|
162
|
+
description: nodeEvent.node.content,
|
|
163
|
+
assignee: nodeEvent.node.rawData?.assignee,
|
|
164
|
+
meta: nodeEvent.node.rawData,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case 'updated': {
|
|
170
|
+
const changedFields = nodeEvent.changedFields;
|
|
171
|
+
const previousValues = nodeEvent.previousValues;
|
|
172
|
+
// Status change
|
|
173
|
+
if (changedFields?.includes('status') && previousValues?.status) {
|
|
174
|
+
const previous = String(previousValues.status);
|
|
175
|
+
const current = nodeEvent.node?.status ?? 'open';
|
|
176
|
+
bridge.emitTaskStatus(nodeEvent.nodeId, previous, current);
|
|
177
|
+
}
|
|
178
|
+
// Assignment change
|
|
179
|
+
if (changedFields?.includes('assignee') && nodeEvent.node?.rawData?.assignee) {
|
|
180
|
+
bridge.emitTaskAssigned(nodeEvent.nodeId, String(nodeEvent.node.rawData.assignee));
|
|
181
|
+
}
|
|
182
|
+
// If no specific fields reported, emit a generic status event
|
|
183
|
+
// based on current node state (best effort)
|
|
184
|
+
if (!changedFields && nodeEvent.node?.status) {
|
|
185
|
+
const previous = previousValues?.status
|
|
186
|
+
? String(previousValues.status)
|
|
187
|
+
: 'open';
|
|
188
|
+
bridge.emitTaskStatus(nodeEvent.nodeId, previous, nodeEvent.node.status);
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
case 'deleted': {
|
|
193
|
+
// MAP has no delete — emit as status change to 'failed'
|
|
194
|
+
bridge.emitTaskStatus(nodeEvent.nodeId, 'open', 'failed');
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
stop() {
|
|
200
|
+
active = false;
|
|
201
|
+
},
|
|
202
|
+
get active() {
|
|
203
|
+
return active;
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
return bridge;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=map-event-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map-event-bridge.js","sourceRoot":"","sources":["../../src/providers/map-event-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MAP (Multi-Agent Protocol) Provider
|
|
3
|
+
*
|
|
4
|
+
* Provider that bridges MAP task operations with OpenTasks.
|
|
5
|
+
* Handles map:// URI scheme for tasks managed via MAP.
|
|
6
|
+
*
|
|
7
|
+
* Supports three scenarios:
|
|
8
|
+
* 1. Same OpenTasks repo — MAP used for real-time coordination, native provider resolves tasks
|
|
9
|
+
* 2. Cross-system — tasks on a remote system accessed via MAP task methods
|
|
10
|
+
* 3. Mixed — local tasks with MAP-based assignment to external agents
|
|
11
|
+
*
|
|
12
|
+
* The provider depends on a MAPTaskClient interface, which can be satisfied by:
|
|
13
|
+
* - A MAP SDK ClientConnection (hub topology)
|
|
14
|
+
* - A MAP SDK BaseConnection wrapper (peer topology)
|
|
15
|
+
* - A local adapter (same-repo coordination, no network)
|
|
16
|
+
*/
|
|
17
|
+
import type { Provider } from './types.js';
|
|
18
|
+
import type { TaskManageable } from './traits/TaskManageable.js';
|
|
19
|
+
import type { Watchable } from './traits/Watchable.js';
|
|
20
|
+
/**
|
|
21
|
+
* MAP task status values (matches MAP SDK MAPTaskStatus)
|
|
22
|
+
*/
|
|
23
|
+
export type MAPTaskStatus = 'open' | 'in_progress' | 'blocked' | 'completed' | 'failed';
|
|
24
|
+
/**
|
|
25
|
+
* MAP task structure (matches MAP SDK MAPTask)
|
|
26
|
+
*/
|
|
27
|
+
export interface MAPTask {
|
|
28
|
+
id: string;
|
|
29
|
+
assignee?: string | null;
|
|
30
|
+
title?: string;
|
|
31
|
+
status?: MAPTaskStatus;
|
|
32
|
+
description?: string;
|
|
33
|
+
meta?: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* MAP task event (for Watchable support)
|
|
37
|
+
*/
|
|
38
|
+
export interface MAPTaskEvent {
|
|
39
|
+
type: 'task.created' | 'task.assigned' | 'task.status' | 'task.completed';
|
|
40
|
+
data: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Interface for anything that can perform MAP task operations.
|
|
44
|
+
*
|
|
45
|
+
* This is the abstraction boundary between OpenTasks and MAP.
|
|
46
|
+
* Implementations include:
|
|
47
|
+
* - MAP SDK ClientConnection (satisfies this naturally)
|
|
48
|
+
* - A future PeerConnection
|
|
49
|
+
* - A local GraphStore adapter (for same-repo scenario)
|
|
50
|
+
*
|
|
51
|
+
* The interface uses the same parameter/response shapes as the MAP SDK
|
|
52
|
+
* so that ClientConnection can be passed directly without an adapter.
|
|
53
|
+
*/
|
|
54
|
+
export interface MAPTaskClient {
|
|
55
|
+
createTask(params: {
|
|
56
|
+
task: Omit<MAPTask, 'id'> & {
|
|
57
|
+
id?: string;
|
|
58
|
+
};
|
|
59
|
+
}): Promise<{
|
|
60
|
+
task: MAPTask;
|
|
61
|
+
}>;
|
|
62
|
+
assignTask(taskId: string, agentId: string): Promise<{
|
|
63
|
+
task: MAPTask;
|
|
64
|
+
}>;
|
|
65
|
+
updateTask(params: {
|
|
66
|
+
taskId: string;
|
|
67
|
+
status?: MAPTaskStatus;
|
|
68
|
+
title?: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
assignee?: string | null;
|
|
71
|
+
meta?: Record<string, unknown>;
|
|
72
|
+
}): Promise<{
|
|
73
|
+
task: MAPTask;
|
|
74
|
+
}>;
|
|
75
|
+
listTasks(params?: {
|
|
76
|
+
filter?: {
|
|
77
|
+
assignee?: string;
|
|
78
|
+
status?: MAPTaskStatus | MAPTaskStatus[];
|
|
79
|
+
};
|
|
80
|
+
limit?: number;
|
|
81
|
+
cursor?: string;
|
|
82
|
+
}): Promise<{
|
|
83
|
+
tasks: MAPTask[];
|
|
84
|
+
hasMore: boolean;
|
|
85
|
+
nextCursor?: string;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Subscribe to task events. Optional — enables the Watchable trait.
|
|
89
|
+
* Returns an unsubscribe function.
|
|
90
|
+
*/
|
|
91
|
+
onTaskEvent?(callback: (event: MAPTaskEvent) => void): () => void;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Configuration for MAP provider
|
|
95
|
+
*/
|
|
96
|
+
export interface MAPProviderConfig {
|
|
97
|
+
/** The MAP task client to use for operations */
|
|
98
|
+
client: MAPTaskClient;
|
|
99
|
+
/**
|
|
100
|
+
* System identifier for this MAP connection.
|
|
101
|
+
* Used in URIs: map://{systemId}/{taskId}
|
|
102
|
+
* Defaults to 'default'.
|
|
103
|
+
*/
|
|
104
|
+
systemId?: string;
|
|
105
|
+
/** Request timeout in ms */
|
|
106
|
+
timeout?: number;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a MAP provider
|
|
110
|
+
*
|
|
111
|
+
* @param config - Provider configuration including the MAPTaskClient
|
|
112
|
+
* @returns A Provider that implements TaskManageable and optionally Watchable
|
|
113
|
+
*/
|
|
114
|
+
export declare function createMAPProvider(config: MAPProviderConfig): Provider & TaskManageable & Partial<Watchable>;
|
|
115
|
+
//# sourceMappingURL=map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/providers/map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,QAAQ,EAST,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,cAAc,EAAkD,MAAM,4BAA4B,CAAC;AACjH,OAAO,KAAK,EAAE,SAAS,EAAyC,MAAM,uBAAuB,CAAC;AAM9F;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,gBAAgB,CAAC;IAC1E,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG;YAAE,EAAE,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7C,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE/B,UAAU,CACR,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE9B,UAAU,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE/B,SAAS,CAAC,MAAM,CAAC,EAAE;QACjB,MAAM,CAAC,EAAE;YACP,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;SAC1C,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,OAAO,EAAE,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IAEH;;;OAGG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACnE;AAMD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,MAAM,EAAE,aAAa,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoFD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,QAAQ,GAAG,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAsXhD"}
|