claude-code-swarm 0.3.2 → 0.3.4
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CLAUDE.md +4 -0
- package/README.md +65 -0
- package/package.json +4 -4
- package/src/__tests__/config.test.mjs +128 -0
- package/src/__tests__/index.test.mjs +2 -0
- package/src/__tests__/paths.test.mjs +13 -0
- package/src/config.mjs +46 -16
- package/src/index.mjs +3 -1
- package/src/map-connection.mjs +3 -3
- package/src/paths.mjs +5 -0
- package/src/sidecar-client.mjs +2 -2
- package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -120
- package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -15
- package/references/multi-agent-protocol/LICENSE +0 -21
- package/references/multi-agent-protocol/README.md +0 -113
- package/references/multi-agent-protocol/docs/00-design-specification.md +0 -496
- package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
- package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
- package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
- package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
- package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
- package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
- package/references/multi-agent-protocol/docs/07-federation.md +0 -335
- package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
- package/references/multi-agent-protocol/docs/09-authentication.md +0 -748
- package/references/multi-agent-protocol/docs/10-environment-awareness.md +0 -242
- package/references/multi-agent-protocol/docs/10-mail-protocol.md +0 -553
- package/references/multi-agent-protocol/docs/11-anp-inspired-improvements.md +0 -1079
- package/references/multi-agent-protocol/docs/11-trajectory-protocol.md +0 -292
- package/references/multi-agent-protocol/docs/12-anp-implementation-plan.md +0 -641
- package/references/multi-agent-protocol/docs/agent-iam-integration.md +0 -877
- package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +0 -459
- package/references/multi-agent-protocol/docs/git-transport-draft.md +0 -251
- package/references/multi-agent-protocol/docs-site/Gemfile +0 -22
- package/references/multi-agent-protocol/docs-site/README.md +0 -82
- package/references/multi-agent-protocol/docs-site/_config.yml +0 -91
- package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +0 -20
- package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +0 -42
- package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +0 -34
- package/references/multi-agent-protocol/docs-site/examples/full-integration.md +0 -510
- package/references/multi-agent-protocol/docs-site/examples/index.md +0 -138
- package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +0 -282
- package/references/multi-agent-protocol/docs-site/examples/task-queue.md +0 -399
- package/references/multi-agent-protocol/docs-site/getting-started/index.md +0 -98
- package/references/multi-agent-protocol/docs-site/getting-started/installation.md +0 -219
- package/references/multi-agent-protocol/docs-site/getting-started/overview.md +0 -172
- package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +0 -237
- package/references/multi-agent-protocol/docs-site/index.md +0 -136
- package/references/multi-agent-protocol/docs-site/protocol/authentication.md +0 -391
- package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +0 -376
- package/references/multi-agent-protocol/docs-site/protocol/design.md +0 -284
- package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +0 -312
- package/references/multi-agent-protocol/docs-site/protocol/federation.md +0 -449
- package/references/multi-agent-protocol/docs-site/protocol/index.md +0 -129
- package/references/multi-agent-protocol/docs-site/protocol/permissions.md +0 -398
- package/references/multi-agent-protocol/docs-site/protocol/streaming.md +0 -353
- package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +0 -369
- package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +0 -357
- package/references/multi-agent-protocol/docs-site/sdk/api/client.md +0 -380
- package/references/multi-agent-protocol/docs-site/sdk/api/index.md +0 -62
- package/references/multi-agent-protocol/docs-site/sdk/api/server.md +0 -453
- package/references/multi-agent-protocol/docs-site/sdk/api/types.md +0 -468
- package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +0 -375
- package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +0 -405
- package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +0 -352
- package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +0 -89
- package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +0 -360
- package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +0 -446
- package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +0 -363
- package/references/multi-agent-protocol/docs-site/sdk/index.md +0 -206
- package/references/multi-agent-protocol/package-lock.json +0 -4230
- package/references/multi-agent-protocol/package.json +0 -56
- package/references/multi-agent-protocol/schema/meta.json +0 -584
- package/references/multi-agent-protocol/schema/schema.json +0 -3067
- package/references/openhive/.claude/settings.json +0 -6
- package/references/openhive/.dockerignore +0 -54
- package/references/openhive/.github/workflows/docker.yml +0 -52
- package/references/openhive/.sudocode/issues.jsonl +0 -24
- package/references/openhive/.sudocode/specs.jsonl +0 -4
- package/references/openhive/CLAUDE.md +0 -88
- package/references/openhive/Dockerfile +0 -105
- package/references/openhive/README.md +0 -745
- package/references/openhive/bin/openhive.js +0 -6
- package/references/openhive/cloudbuild.yaml +0 -80
- package/references/openhive/deploy/cloud-run.sh +0 -106
- package/references/openhive/deploy/openhive.env.example +0 -80
- package/references/openhive/deploy/openhive.service +0 -91
- package/references/openhive/docker-compose.yml +0 -67
- package/references/openhive/docker-entrypoint.sh +0 -117
- package/references/openhive/docs/API_MIGRATION.md +0 -176
- package/references/openhive/docs/DEPLOYMENT.md +0 -847
- package/references/openhive/docs/DESIGN_v1.md +0 -489
- package/references/openhive/docs/DESIGN_v2.md +0 -564
- package/references/openhive/docs/HEADSCALE_HOSTING_SPEC.md +0 -513
- package/references/openhive/docs/HIVE_SYNC_DESIGN.md +0 -2362
- package/references/openhive/docs/HIVE_SYNC_IMPLEMENTATION_PLAN.md +0 -1169
- package/references/openhive/docs/HOSTING.md +0 -601
- package/references/openhive/docs/IMPLEMENTATION_PLAN.md +0 -428
- package/references/openhive/docs/LOCAL_SETUP.md +0 -506
- package/references/openhive/docs/MACRO_AGENT_ATLAS_EXTENSION.md +0 -351
- package/references/openhive/docs/MEMORY_BANK_SYNC_SPEC.md +0 -909
- package/references/openhive/docs/PLAN_v1.md +0 -471
- package/references/openhive/docs/PLAN_v2.md +0 -623
- package/references/openhive/docs/WEBSOCKET.md +0 -267
- package/references/openhive/docs/openswarm-bootstrap-token-spec.md +0 -240
- package/references/openhive/ecosystem.config.cjs +0 -76
- package/references/openhive/fly.toml +0 -63
- package/references/openhive/package-lock.json +0 -17640
- package/references/openhive/package.json +0 -128
- package/references/openhive/packages/openhive-types/package-lock.json +0 -1473
- package/references/openhive/packages/openhive-types/package.json +0 -42
- package/references/openhive/packages/openhive-types/src/index.ts +0 -36
- package/references/openhive/packages/openhive-types/src/map-coordination.ts +0 -92
- package/references/openhive/packages/openhive-types/src/map-session-sync.ts +0 -50
- package/references/openhive/packages/openhive-types/src/map-sync.ts +0 -68
- package/references/openhive/packages/openhive-types/tsconfig.json +0 -15
- package/references/openhive/packages/openhive-types/tsconfig.tsbuildinfo +0 -1
- package/references/openhive/packages/openhive-types/tsup.config.ts +0 -12
- package/references/openhive/railway.json +0 -13
- package/references/openhive/railway.toml +0 -24
- package/references/openhive/render.yaml +0 -51
- package/references/openhive/src/__tests__/auth.test.ts +0 -148
- package/references/openhive/src/__tests__/bridge/credentials.test.ts +0 -65
- package/references/openhive/src/__tests__/bridge/dal.test.ts +0 -279
- package/references/openhive/src/__tests__/bridge/inbound.test.ts +0 -349
- package/references/openhive/src/__tests__/bridge/manager.test.ts +0 -419
- package/references/openhive/src/__tests__/bridge/mentions.test.ts +0 -83
- package/references/openhive/src/__tests__/bridge/outbound.test.ts +0 -209
- package/references/openhive/src/__tests__/bridge/slack-adapter.test.ts +0 -276
- package/references/openhive/src/__tests__/cli.test.ts +0 -342
- package/references/openhive/src/__tests__/config.test.ts +0 -205
- package/references/openhive/src/__tests__/coordination/coordination.test.ts +0 -1072
- package/references/openhive/src/__tests__/coordination/cross-instance.test.ts +0 -540
- package/references/openhive/src/__tests__/coordination/e2e.test.ts +0 -780
- package/references/openhive/src/__tests__/data-dir.test.ts +0 -332
- package/references/openhive/src/__tests__/db.test.ts +0 -258
- package/references/openhive/src/__tests__/discovery.test.ts +0 -288
- package/references/openhive/src/__tests__/events/dal.test.ts +0 -371
- package/references/openhive/src/__tests__/events/dispatch.test.ts +0 -202
- package/references/openhive/src/__tests__/events/e2e.test.ts +0 -528
- package/references/openhive/src/__tests__/events/normalizers.test.ts +0 -263
- package/references/openhive/src/__tests__/events/router.test.ts +0 -314
- package/references/openhive/src/__tests__/events/routes.test.ts +0 -407
- package/references/openhive/src/__tests__/follows.test.ts +0 -328
- package/references/openhive/src/__tests__/helpers/test-dirs.ts +0 -44
- package/references/openhive/src/__tests__/ingest-keys.test.ts +0 -925
- package/references/openhive/src/__tests__/map/sync-client-content.test.ts +0 -288
- package/references/openhive/src/__tests__/map/sync-client.test.ts +0 -500
- package/references/openhive/src/__tests__/map/sync-listener.test.ts +0 -504
- package/references/openhive/src/__tests__/middleware/hostname-guard.test.ts +0 -73
- package/references/openhive/src/__tests__/migrations.test.ts +0 -260
- package/references/openhive/src/__tests__/opentasks/client.test.ts +0 -497
- package/references/openhive/src/__tests__/opentasks/discovery.test.ts +0 -283
- package/references/openhive/src/__tests__/opentasks/e2e.test.ts +0 -767
- package/references/openhive/src/__tests__/routes/agents.test.ts +0 -417
- package/references/openhive/src/__tests__/routes/opentasks-content.test.ts +0 -493
- package/references/openhive/src/__tests__/routes/resource-content.test.ts +0 -1741
- package/references/openhive/src/__tests__/sessions/adapters.test.ts +0 -524
- package/references/openhive/src/__tests__/sessions/routes.test.ts +0 -1053
- package/references/openhive/src/__tests__/sessions/storage.test.ts +0 -545
- package/references/openhive/src/__tests__/sessions/trajectory-checkpoints.test.ts +0 -349
- package/references/openhive/src/__tests__/sessions/trajectory-routes.test.ts +0 -290
- package/references/openhive/src/__tests__/swarm/config.test.ts +0 -125
- package/references/openhive/src/__tests__/swarm/credentials.test.ts +0 -254
- package/references/openhive/src/__tests__/swarm/dal.test.ts +0 -290
- package/references/openhive/src/__tests__/swarm/e2e.test.ts +0 -827
- package/references/openhive/src/__tests__/swarm/fixtures/exit-immediately.js +0 -3
- package/references/openhive/src/__tests__/swarm/fixtures/map-server.js +0 -147
- package/references/openhive/src/__tests__/swarm/fixtures/sleep-server.js +0 -52
- package/references/openhive/src/__tests__/swarm/local-provider.test.ts +0 -279
- package/references/openhive/src/__tests__/swarm/manager.test.ts +0 -305
- package/references/openhive/src/__tests__/swarm/routes.test.ts +0 -396
- package/references/openhive/src/__tests__/swarm/workspace.test.ts +0 -257
- package/references/openhive/src/__tests__/swarmhub/client.test.ts +0 -324
- package/references/openhive/src/__tests__/swarmhub/config.test.ts +0 -213
- package/references/openhive/src/__tests__/swarmhub/connector.test.ts +0 -581
- package/references/openhive/src/__tests__/swarmhub/routes.test.ts +0 -639
- package/references/openhive/src/__tests__/swarmhub/slack-client.test.ts +0 -164
- package/references/openhive/src/__tests__/swarmhub/slack-connector.test.ts +0 -164
- package/references/openhive/src/__tests__/swarmhub/slack-routes.test.ts +0 -373
- package/references/openhive/src/__tests__/swarmhub/webhook-handler.test.ts +0 -295
- package/references/openhive/src/__tests__/sync/resource-sync.test.ts +0 -1418
- package/references/openhive/src/__tests__/sync/sync.test.ts +0 -800
- package/references/openhive/src/api/index.ts +0 -65
- package/references/openhive/src/api/middleware/auth.ts +0 -227
- package/references/openhive/src/api/middleware/hostname-guard.ts +0 -38
- package/references/openhive/src/api/routes/admin.ts +0 -366
- package/references/openhive/src/api/routes/agents.ts +0 -223
- package/references/openhive/src/api/routes/auth.ts +0 -164
- package/references/openhive/src/api/routes/bridges.ts +0 -384
- package/references/openhive/src/api/routes/comments.ts +0 -294
- package/references/openhive/src/api/routes/coordination.ts +0 -312
- package/references/openhive/src/api/routes/events.ts +0 -158
- package/references/openhive/src/api/routes/federation.ts +0 -367
- package/references/openhive/src/api/routes/feed.ts +0 -212
- package/references/openhive/src/api/routes/hives.ts +0 -264
- package/references/openhive/src/api/routes/map.ts +0 -674
- package/references/openhive/src/api/routes/memory-banks.ts +0 -971
- package/references/openhive/src/api/routes/posts.ts +0 -342
- package/references/openhive/src/api/routes/resource-content.ts +0 -727
- package/references/openhive/src/api/routes/resources.ts +0 -1013
- package/references/openhive/src/api/routes/search.ts +0 -45
- package/references/openhive/src/api/routes/sessions.ts +0 -1187
- package/references/openhive/src/api/routes/swarm-hosting.ts +0 -313
- package/references/openhive/src/api/routes/sync-protocol.ts +0 -168
- package/references/openhive/src/api/routes/sync.ts +0 -279
- package/references/openhive/src/api/routes/uploads.ts +0 -174
- package/references/openhive/src/api/routes/webhooks.ts +0 -603
- package/references/openhive/src/api/schemas/agents.ts +0 -26
- package/references/openhive/src/api/schemas/comments.ts +0 -22
- package/references/openhive/src/api/schemas/hives.ts +0 -33
- package/references/openhive/src/api/schemas/posts.ts +0 -37
- package/references/openhive/src/api/schemas/sync.ts +0 -56
- package/references/openhive/src/auth/index.ts +0 -2
- package/references/openhive/src/auth/jwks.ts +0 -58
- package/references/openhive/src/bridge/adapters/slack.ts +0 -306
- package/references/openhive/src/bridge/credentials.ts +0 -72
- package/references/openhive/src/bridge/inbound.ts +0 -288
- package/references/openhive/src/bridge/index.ts +0 -42
- package/references/openhive/src/bridge/manager.ts +0 -425
- package/references/openhive/src/bridge/mentions.ts +0 -42
- package/references/openhive/src/bridge/outbound.ts +0 -103
- package/references/openhive/src/bridge/schema.ts +0 -82
- package/references/openhive/src/bridge/types.ts +0 -238
- package/references/openhive/src/cli/network.ts +0 -480
- package/references/openhive/src/cli.ts +0 -620
- package/references/openhive/src/config.ts +0 -611
- package/references/openhive/src/coordination/index.ts +0 -43
- package/references/openhive/src/coordination/listener.ts +0 -92
- package/references/openhive/src/coordination/schema.ts +0 -79
- package/references/openhive/src/coordination/service.ts +0 -233
- package/references/openhive/src/coordination/types.ts +0 -177
- package/references/openhive/src/data-dir.ts +0 -105
- package/references/openhive/src/db/adapters/index.ts +0 -21
- package/references/openhive/src/db/adapters/postgres.ts +0 -310
- package/references/openhive/src/db/adapters/sqlite.ts +0 -56
- package/references/openhive/src/db/adapters/types.ts +0 -65
- package/references/openhive/src/db/dal/agents.ts +0 -430
- package/references/openhive/src/db/dal/bridge.ts +0 -336
- package/references/openhive/src/db/dal/comments.ts +0 -213
- package/references/openhive/src/db/dal/coordination.ts +0 -361
- package/references/openhive/src/db/dal/events.ts +0 -381
- package/references/openhive/src/db/dal/follows.ts +0 -96
- package/references/openhive/src/db/dal/hives.ts +0 -198
- package/references/openhive/src/db/dal/ingest-keys.ts +0 -176
- package/references/openhive/src/db/dal/instances.ts +0 -196
- package/references/openhive/src/db/dal/invites.ts +0 -123
- package/references/openhive/src/db/dal/map.ts +0 -750
- package/references/openhive/src/db/dal/posts.ts +0 -274
- package/references/openhive/src/db/dal/remote-agents.ts +0 -56
- package/references/openhive/src/db/dal/search.ts +0 -238
- package/references/openhive/src/db/dal/sync-events.ts +0 -160
- package/references/openhive/src/db/dal/sync-groups.ts +0 -100
- package/references/openhive/src/db/dal/sync-peer-configs.ts +0 -216
- package/references/openhive/src/db/dal/sync-peers.ts +0 -145
- package/references/openhive/src/db/dal/syncable-resources.ts +0 -888
- package/references/openhive/src/db/dal/trajectory-checkpoints.ts +0 -291
- package/references/openhive/src/db/dal/uploads.ts +0 -124
- package/references/openhive/src/db/dal/votes.ts +0 -124
- package/references/openhive/src/db/index.ts +0 -293
- package/references/openhive/src/db/providers/index.ts +0 -75
- package/references/openhive/src/db/providers/postgres.ts +0 -529
- package/references/openhive/src/db/providers/sqlite.ts +0 -1383
- package/references/openhive/src/db/providers/turso.ts +0 -1360
- package/references/openhive/src/db/providers/types.ts +0 -516
- package/references/openhive/src/db/schema.ts +0 -641
- package/references/openhive/src/discovery/index.ts +0 -403
- package/references/openhive/src/events/dispatch.ts +0 -106
- package/references/openhive/src/events/index.ts +0 -17
- package/references/openhive/src/events/normalizers/github.ts +0 -133
- package/references/openhive/src/events/normalizers/index.ts +0 -62
- package/references/openhive/src/events/normalizers/slack.ts +0 -50
- package/references/openhive/src/events/router.ts +0 -156
- package/references/openhive/src/events/schema.ts +0 -66
- package/references/openhive/src/events/types.ts +0 -130
- package/references/openhive/src/federation/index.ts +0 -1
- package/references/openhive/src/federation/service.ts +0 -776
- package/references/openhive/src/headscale/client.ts +0 -256
- package/references/openhive/src/headscale/config.ts +0 -212
- package/references/openhive/src/headscale/index.ts +0 -23
- package/references/openhive/src/headscale/manager.ts +0 -249
- package/references/openhive/src/headscale/sync.ts +0 -272
- package/references/openhive/src/headscale/types.ts +0 -231
- package/references/openhive/src/index.ts +0 -225
- package/references/openhive/src/map/client-entry.ts +0 -26
- package/references/openhive/src/map/index.ts +0 -76
- package/references/openhive/src/map/schema.ts +0 -119
- package/references/openhive/src/map/service.ts +0 -323
- package/references/openhive/src/map/sync-client.ts +0 -696
- package/references/openhive/src/map/sync-listener.ts +0 -409
- package/references/openhive/src/map/types.ts +0 -290
- package/references/openhive/src/network/factory.ts +0 -118
- package/references/openhive/src/network/headscale-provider.ts +0 -437
- package/references/openhive/src/network/index.ts +0 -43
- package/references/openhive/src/network/tailscale-client.ts +0 -289
- package/references/openhive/src/network/tailscale-provider.ts +0 -287
- package/references/openhive/src/network/types.ts +0 -178
- package/references/openhive/src/opentasks-client/client.ts +0 -374
- package/references/openhive/src/opentasks-client/index.ts +0 -7
- package/references/openhive/src/realtime/index.ts +0 -282
- package/references/openhive/src/server.ts +0 -1069
- package/references/openhive/src/services/email.ts +0 -177
- package/references/openhive/src/services/sitemap.ts +0 -135
- package/references/openhive/src/sessions/adapters/claude.ts +0 -466
- package/references/openhive/src/sessions/adapters/codex.ts +0 -265
- package/references/openhive/src/sessions/adapters/index.ts +0 -263
- package/references/openhive/src/sessions/adapters/raw.ts +0 -144
- package/references/openhive/src/sessions/adapters/types.ts +0 -83
- package/references/openhive/src/sessions/index.ts +0 -50
- package/references/openhive/src/sessions/storage/adapters/gcs.ts +0 -277
- package/references/openhive/src/sessions/storage/adapters/local.ts +0 -240
- package/references/openhive/src/sessions/storage/adapters/s3.ts +0 -321
- package/references/openhive/src/sessions/storage/index.ts +0 -231
- package/references/openhive/src/sessions/storage/types.ts +0 -189
- package/references/openhive/src/sessions/types.ts +0 -415
- package/references/openhive/src/shared/types/index.ts +0 -45
- package/references/openhive/src/shared/types/map-coordination.ts +0 -92
- package/references/openhive/src/shared/types/map-session-sync.ts +0 -170
- package/references/openhive/src/shared/types/map-sync.ts +0 -68
- package/references/openhive/src/skill.ts +0 -203
- package/references/openhive/src/storage/adapters/local.ts +0 -169
- package/references/openhive/src/storage/adapters/s3.ts +0 -195
- package/references/openhive/src/storage/index.ts +0 -64
- package/references/openhive/src/storage/types.ts +0 -69
- package/references/openhive/src/swarm/credentials.ts +0 -98
- package/references/openhive/src/swarm/dal.ts +0 -206
- package/references/openhive/src/swarm/index.ts +0 -28
- package/references/openhive/src/swarm/manager.ts +0 -917
- package/references/openhive/src/swarm/providers/local.ts +0 -338
- package/references/openhive/src/swarm/providers/sandboxed-local.ts +0 -478
- package/references/openhive/src/swarm/providers/workspace.ts +0 -52
- package/references/openhive/src/swarm/schema.ts +0 -43
- package/references/openhive/src/swarm/types.ts +0 -333
- package/references/openhive/src/swarmhub/client.ts +0 -279
- package/references/openhive/src/swarmhub/connector.ts +0 -463
- package/references/openhive/src/swarmhub/index.ts +0 -43
- package/references/openhive/src/swarmhub/routes.ts +0 -296
- package/references/openhive/src/swarmhub/types.ts +0 -213
- package/references/openhive/src/swarmhub/webhook-handler.ts +0 -126
- package/references/openhive/src/sync/compaction.ts +0 -193
- package/references/openhive/src/sync/coordination-hooks.ts +0 -154
- package/references/openhive/src/sync/crypto.ts +0 -79
- package/references/openhive/src/sync/gossip.ts +0 -136
- package/references/openhive/src/sync/hooks.ts +0 -202
- package/references/openhive/src/sync/materializer-repo.ts +0 -256
- package/references/openhive/src/sync/materializer.ts +0 -682
- package/references/openhive/src/sync/middleware.ts +0 -140
- package/references/openhive/src/sync/peer-resolver.ts +0 -157
- package/references/openhive/src/sync/resource-hooks.ts +0 -161
- package/references/openhive/src/sync/schema.ts +0 -158
- package/references/openhive/src/sync/service.ts +0 -990
- package/references/openhive/src/sync/types.ts +0 -369
- package/references/openhive/src/terminal/index.ts +0 -4
- package/references/openhive/src/terminal/pty-manager.ts +0 -337
- package/references/openhive/src/terminal/resolve-tui.ts +0 -44
- package/references/openhive/src/terminal/terminal-ws.ts +0 -251
- package/references/openhive/src/types.ts +0 -442
- package/references/openhive/src/utils/git-remote.ts +0 -329
- package/references/openhive/src/web/App.tsx +0 -77
- package/references/openhive/src/web/__tests__/components/dashboard/RecentActivity.test.tsx +0 -77
- package/references/openhive/src/web/__tests__/components/dashboard/StatsOverview.test.tsx +0 -62
- package/references/openhive/src/web/__tests__/components/dashboard/SwarmStatusSummary.test.tsx +0 -122
- package/references/openhive/src/web/__tests__/components/dashboard/SyncResourcesStatus.test.tsx +0 -104
- package/references/openhive/src/web/__tests__/components/layout/Sidebar.test.tsx +0 -110
- package/references/openhive/src/web/__tests__/components/swarm/StatusBadges.test.tsx +0 -65
- package/references/openhive/src/web/__tests__/components/terminal/query-responses.test.ts +0 -143
- package/references/openhive/src/web/__tests__/components/terminal/terminal-mouse.test.ts +0 -509
- package/references/openhive/src/web/__tests__/hooks/useEventsApi.test.ts +0 -378
- package/references/openhive/src/web/__tests__/pages/Dashboard.test.tsx +0 -57
- package/references/openhive/src/web/__tests__/pages/Events.test.tsx +0 -886
- package/references/openhive/src/web/__tests__/pages/Explore.test.tsx +0 -63
- package/references/openhive/src/web/__tests__/routing.test.tsx +0 -79
- package/references/openhive/src/web/__tests__/setup.ts +0 -37
- package/references/openhive/src/web/__tests__/stores/dashboard.test.ts +0 -49
- package/references/openhive/src/web/components/common/AgentBadge.tsx +0 -58
- package/references/openhive/src/web/components/common/Avatar.tsx +0 -78
- package/references/openhive/src/web/components/common/ErrorBoundary.tsx +0 -76
- package/references/openhive/src/web/components/common/Highlight.tsx +0 -79
- package/references/openhive/src/web/components/common/ImageUpload.tsx +0 -209
- package/references/openhive/src/web/components/common/LoadingSpinner.tsx +0 -37
- package/references/openhive/src/web/components/common/Logo.tsx +0 -21
- package/references/openhive/src/web/components/common/Markdown.tsx +0 -53
- package/references/openhive/src/web/components/common/ProtectedRoute.tsx +0 -18
- package/references/openhive/src/web/components/common/ThemeToggle.tsx +0 -38
- package/references/openhive/src/web/components/common/TimeAgo.tsx +0 -17
- package/references/openhive/src/web/components/common/Toast.tsx +0 -70
- package/references/openhive/src/web/components/common/VoteButtons.tsx +0 -100
- package/references/openhive/src/web/components/dashboard/RecentActivity.tsx +0 -100
- package/references/openhive/src/web/components/dashboard/StatsOverview.tsx +0 -40
- package/references/openhive/src/web/components/dashboard/SwarmStatusSummary.tsx +0 -89
- package/references/openhive/src/web/components/dashboard/SyncResourcesStatus.tsx +0 -81
- package/references/openhive/src/web/components/feed/FeedControls.tsx +0 -38
- package/references/openhive/src/web/components/feed/NewPostsIndicator.tsx +0 -75
- package/references/openhive/src/web/components/feed/PostCard.tsx +0 -129
- package/references/openhive/src/web/components/feed/PostList.tsx +0 -83
- package/references/openhive/src/web/components/layout/Footer.tsx +0 -5
- package/references/openhive/src/web/components/layout/Layout.tsx +0 -29
- package/references/openhive/src/web/components/layout/Sidebar.tsx +0 -348
- package/references/openhive/src/web/components/post/CommentForm.tsx +0 -59
- package/references/openhive/src/web/components/post/CommentTree.tsx +0 -145
- package/references/openhive/src/web/components/resources/MemoryBrowser.tsx +0 -208
- package/references/openhive/src/web/components/resources/OpenTasksSummary.tsx +0 -138
- package/references/openhive/src/web/components/resources/SkillBrowser.tsx +0 -284
- package/references/openhive/src/web/components/swarm/StatusBadges.tsx +0 -56
- package/references/openhive/src/web/components/terminal/TerminalPanel.tsx +0 -485
- package/references/openhive/src/web/components/terminal/index.ts +0 -2
- package/references/openhive/src/web/components/terminal/query-responses.ts +0 -70
- package/references/openhive/src/web/components/terminal/terminal-mouse.ts +0 -222
- package/references/openhive/src/web/hooks/useApi.ts +0 -740
- package/references/openhive/src/web/hooks/useDocumentTitle.ts +0 -49
- package/references/openhive/src/web/hooks/useInfiniteScroll.ts +0 -58
- package/references/openhive/src/web/hooks/useRealtimeUpdates.ts +0 -154
- package/references/openhive/src/web/hooks/useWebSocket.ts +0 -225
- package/references/openhive/src/web/index.html +0 -73
- package/references/openhive/src/web/lib/api.ts +0 -518
- package/references/openhive/src/web/main.tsx +0 -32
- package/references/openhive/src/web/pages/About.tsx +0 -131
- package/references/openhive/src/web/pages/Agent.tsx +0 -130
- package/references/openhive/src/web/pages/Agents.tsx +0 -69
- package/references/openhive/src/web/pages/AuthCallback.tsx +0 -75
- package/references/openhive/src/web/pages/Dashboard.tsx +0 -41
- package/references/openhive/src/web/pages/Events.tsx +0 -1025
- package/references/openhive/src/web/pages/Explore.tsx +0 -43
- package/references/openhive/src/web/pages/Hive.tsx +0 -134
- package/references/openhive/src/web/pages/Hives.tsx +0 -64
- package/references/openhive/src/web/pages/Home.tsx +0 -43
- package/references/openhive/src/web/pages/Login.tsx +0 -122
- package/references/openhive/src/web/pages/Post.tsx +0 -216
- package/references/openhive/src/web/pages/ResourceDetail.tsx +0 -426
- package/references/openhive/src/web/pages/Resources.tsx +0 -276
- package/references/openhive/src/web/pages/Search.tsx +0 -234
- package/references/openhive/src/web/pages/SessionDetail.tsx +0 -703
- package/references/openhive/src/web/pages/Sessions.tsx +0 -129
- package/references/openhive/src/web/pages/Settings.tsx +0 -826
- package/references/openhive/src/web/pages/SwarmCraft.tsx +0 -16
- package/references/openhive/src/web/pages/Swarms.tsx +0 -981
- package/references/openhive/src/web/pages/Terminal.tsx +0 -69
- package/references/openhive/src/web/postcss.config.js +0 -5
- package/references/openhive/src/web/public/favicon.svg +0 -11
- package/references/openhive/src/web/public/manifest.json +0 -21
- package/references/openhive/src/web/stores/auth.ts +0 -207
- package/references/openhive/src/web/stores/dashboard.ts +0 -23
- package/references/openhive/src/web/stores/realtime.ts +0 -90
- package/references/openhive/src/web/stores/theme.ts +0 -70
- package/references/openhive/src/web/stores/toast.ts +0 -63
- package/references/openhive/src/web/styles/globals.css +0 -503
- package/references/openhive/src/web/sw.ts +0 -228
- package/references/openhive/src/web/utils/serviceWorker.ts +0 -86
- package/references/openhive/src/web/vite.config.ts +0 -81
- package/references/openhive/tsconfig.json +0 -32
- package/references/openhive/tsup.config.ts +0 -17
- package/references/openhive/vitest.config.ts +0 -30
- package/references/openhive/vitest.web.config.ts +0 -20
- package/references/opentasks/.claude/settings.json +0 -6
- package/references/opentasks/.claude-plugin/plugin.json +0 -20
- package/references/opentasks/.lintstagedrc.json +0 -4
- package/references/opentasks/.prettierignore +0 -4
- package/references/opentasks/.prettierrc.json +0 -11
- package/references/opentasks/.sudocode/issues.jsonl +0 -89
- package/references/opentasks/.sudocode/specs.jsonl +0 -24
- package/references/opentasks/README.md +0 -401
- package/references/opentasks/docs/ARCHITECTURE.md +0 -841
- package/references/opentasks/docs/DESIGN.md +0 -689
- package/references/opentasks/docs/INTERFACE.md +0 -670
- package/references/opentasks/docs/PERSISTENCE.md +0 -1638
- package/references/opentasks/docs/PROVIDERS.md +0 -1412
- package/references/opentasks/docs/SCHEMA.md +0 -815
- package/references/opentasks/docs/TESTING.md +0 -1081
- package/references/opentasks/eslint.config.js +0 -58
- package/references/opentasks/package-lock.json +0 -4348
- package/references/opentasks/package.json +0 -81
- package/references/opentasks/skills/opentasks/SKILL.md +0 -139
- package/references/opentasks/skills/opentasks/dependency-management.md +0 -119
- package/references/opentasks/skills/opentasks/feedback-and-review.md +0 -100
- package/references/opentasks/skills/opentasks/linking-external-data.md +0 -103
- package/references/opentasks/skills/opentasks/spec-to-implementation.md +0 -98
- package/references/opentasks/src/__tests__/cli-tools.test.ts +0 -800
- package/references/opentasks/src/__tests__/cli.test.ts +0 -97
- package/references/opentasks/src/__tests__/p1-p3-gaps.test.ts +0 -635
- package/references/opentasks/src/cli.ts +0 -929
- package/references/opentasks/src/client/__tests__/client-crud.test.ts +0 -546
- package/references/opentasks/src/client/__tests__/client.test.ts +0 -658
- package/references/opentasks/src/client/__tests__/socket-discovery.test.ts +0 -122
- package/references/opentasks/src/client/client.ts +0 -560
- package/references/opentasks/src/client/index.ts +0 -32
- package/references/opentasks/src/config/__tests__/defaults.test.ts +0 -66
- package/references/opentasks/src/config/__tests__/env.test.ts +0 -155
- package/references/opentasks/src/config/__tests__/index.test.ts +0 -148
- package/references/opentasks/src/config/__tests__/loader.test.ts +0 -173
- package/references/opentasks/src/config/__tests__/merge.test.ts +0 -121
- package/references/opentasks/src/config/__tests__/schema.test.ts +0 -446
- package/references/opentasks/src/config/defaults.ts +0 -18
- package/references/opentasks/src/config/env.ts +0 -170
- package/references/opentasks/src/config/errors.ts +0 -33
- package/references/opentasks/src/config/index.ts +0 -63
- package/references/opentasks/src/config/loader.ts +0 -90
- package/references/opentasks/src/config/merge.ts +0 -64
- package/references/opentasks/src/config/schema.ts +0 -767
- package/references/opentasks/src/core/__tests__/conditional-redirects.test.ts +0 -116
- package/references/opentasks/src/core/__tests__/connections.test.ts +0 -194
- package/references/opentasks/src/core/__tests__/hash.test.ts +0 -161
- package/references/opentasks/src/core/__tests__/id.test.ts +0 -175
- package/references/opentasks/src/core/__tests__/init.test.ts +0 -115
- package/references/opentasks/src/core/__tests__/location.test.ts +0 -94
- package/references/opentasks/src/core/__tests__/merge-driver.test.ts +0 -300
- package/references/opentasks/src/core/__tests__/redirects.test.ts +0 -169
- package/references/opentasks/src/core/__tests__/resolve-location-target.test.ts +0 -468
- package/references/opentasks/src/core/__tests__/uri.test.ts +0 -228
- package/references/opentasks/src/core/__tests__/worktree.test.ts +0 -160
- package/references/opentasks/src/core/conditional-redirects.ts +0 -100
- package/references/opentasks/src/core/connections.ts +0 -217
- package/references/opentasks/src/core/discover.ts +0 -195
- package/references/opentasks/src/core/hash.ts +0 -74
- package/references/opentasks/src/core/id.ts +0 -174
- package/references/opentasks/src/core/index.ts +0 -108
- package/references/opentasks/src/core/init.ts +0 -66
- package/references/opentasks/src/core/location.ts +0 -139
- package/references/opentasks/src/core/merge-driver.ts +0 -280
- package/references/opentasks/src/core/redirects.ts +0 -182
- package/references/opentasks/src/core/uri.ts +0 -270
- package/references/opentasks/src/core/worktree.ts +0 -504
- package/references/opentasks/src/daemon/__tests__/e2e-live-agent.test.ts +0 -344
- package/references/opentasks/src/daemon/__tests__/e2e-session-pipeline.test.ts +0 -447
- package/references/opentasks/src/daemon/__tests__/e2e-watch.test.ts +0 -279
- package/references/opentasks/src/daemon/__tests__/entire-linker.test.ts +0 -1074
- package/references/opentasks/src/daemon/__tests__/entire-watcher.test.ts +0 -659
- package/references/opentasks/src/daemon/__tests__/flush.test.ts +0 -306
- package/references/opentasks/src/daemon/__tests__/integration.test.ts +0 -338
- package/references/opentasks/src/daemon/__tests__/ipc.test.ts +0 -406
- package/references/opentasks/src/daemon/__tests__/lifecycle.test.ts +0 -378
- package/references/opentasks/src/daemon/__tests__/lock.test.ts +0 -240
- package/references/opentasks/src/daemon/__tests__/methods/graph.test.ts +0 -372
- package/references/opentasks/src/daemon/__tests__/methods/provider.test.ts +0 -238
- package/references/opentasks/src/daemon/__tests__/methods/tools.test.ts +0 -690
- package/references/opentasks/src/daemon/__tests__/multi-location.test.ts +0 -945
- package/references/opentasks/src/daemon/__tests__/registry.test.ts +0 -268
- package/references/opentasks/src/daemon/__tests__/watcher.test.ts +0 -329
- package/references/opentasks/src/daemon/entire-linker.ts +0 -615
- package/references/opentasks/src/daemon/entire-watcher.ts +0 -415
- package/references/opentasks/src/daemon/factory.ts +0 -133
- package/references/opentasks/src/daemon/flush.ts +0 -168
- package/references/opentasks/src/daemon/index.ts +0 -120
- package/references/opentasks/src/daemon/ipc.ts +0 -491
- package/references/opentasks/src/daemon/lifecycle.ts +0 -1106
- package/references/opentasks/src/daemon/location-state.ts +0 -481
- package/references/opentasks/src/daemon/lock.ts +0 -168
- package/references/opentasks/src/daemon/methods/__tests__/graph.test.ts +0 -359
- package/references/opentasks/src/daemon/methods/__tests__/provider.test.ts +0 -227
- package/references/opentasks/src/daemon/methods/__tests__/tools.test.ts +0 -360
- package/references/opentasks/src/daemon/methods/__tests__/watch.test.ts +0 -656
- package/references/opentasks/src/daemon/methods/archive.ts +0 -193
- package/references/opentasks/src/daemon/methods/graph.ts +0 -274
- package/references/opentasks/src/daemon/methods/lifecycle.ts +0 -112
- package/references/opentasks/src/daemon/methods/location.ts +0 -118
- package/references/opentasks/src/daemon/methods/provider.ts +0 -159
- package/references/opentasks/src/daemon/methods/tools.ts +0 -221
- package/references/opentasks/src/daemon/methods/watch.ts +0 -206
- package/references/opentasks/src/daemon/registry.ts +0 -244
- package/references/opentasks/src/daemon/types.ts +0 -163
- package/references/opentasks/src/daemon/watcher.ts +0 -248
- package/references/opentasks/src/entire/__tests__/agent-registry.test.ts +0 -127
- package/references/opentasks/src/entire/__tests__/claude-generator.test.ts +0 -49
- package/references/opentasks/src/entire/__tests__/commit-msg.test.ts +0 -89
- package/references/opentasks/src/entire/__tests__/cursor-agent.test.ts +0 -224
- package/references/opentasks/src/entire/__tests__/flush-sentinel.test.ts +0 -93
- package/references/opentasks/src/entire/__tests__/gemini-agent.test.ts +0 -375
- package/references/opentasks/src/entire/__tests__/git-hooks.test.ts +0 -85
- package/references/opentasks/src/entire/__tests__/hook-managers.test.ts +0 -128
- package/references/opentasks/src/entire/__tests__/opencode-agent.test.ts +0 -329
- package/references/opentasks/src/entire/__tests__/redaction.test.ts +0 -143
- package/references/opentasks/src/entire/__tests__/session-store.test.ts +0 -83
- package/references/opentasks/src/entire/__tests__/summarize.test.ts +0 -346
- package/references/opentasks/src/entire/__tests__/transcript-timestamp.test.ts +0 -127
- package/references/opentasks/src/entire/__tests__/types.test.ts +0 -112
- package/references/opentasks/src/entire/__tests__/utils.test.ts +0 -296
- package/references/opentasks/src/entire/__tests__/validation.test.ts +0 -103
- package/references/opentasks/src/entire/__tests__/worktree.test.ts +0 -66
- package/references/opentasks/src/entire/agent/registry.ts +0 -143
- package/references/opentasks/src/entire/agent/session-types.ts +0 -117
- package/references/opentasks/src/entire/agent/types.ts +0 -217
- package/references/opentasks/src/entire/commands/clean.ts +0 -134
- package/references/opentasks/src/entire/commands/disable.ts +0 -85
- package/references/opentasks/src/entire/commands/doctor.ts +0 -152
- package/references/opentasks/src/entire/commands/enable.ts +0 -149
- package/references/opentasks/src/entire/commands/explain.ts +0 -271
- package/references/opentasks/src/entire/commands/reset.ts +0 -105
- package/references/opentasks/src/entire/commands/resume.ts +0 -194
- package/references/opentasks/src/entire/commands/rewind.ts +0 -204
- package/references/opentasks/src/entire/commands/status.ts +0 -150
- package/references/opentasks/src/entire/config.ts +0 -153
- package/references/opentasks/src/entire/git-operations.ts +0 -485
- package/references/opentasks/src/entire/hooks/git-hooks.ts +0 -171
- package/references/opentasks/src/entire/hooks/lifecycle.ts +0 -224
- package/references/opentasks/src/entire/index.ts +0 -644
- package/references/opentasks/src/entire/security/redaction.ts +0 -263
- package/references/opentasks/src/entire/session/state-machine.ts +0 -463
- package/references/opentasks/src/entire/store/checkpoint-store.ts +0 -489
- package/references/opentasks/src/entire/store/native-store.ts +0 -178
- package/references/opentasks/src/entire/store/provider-types.ts +0 -99
- package/references/opentasks/src/entire/store/session-store.ts +0 -233
- package/references/opentasks/src/entire/strategy/attribution.ts +0 -300
- package/references/opentasks/src/entire/strategy/common.ts +0 -222
- package/references/opentasks/src/entire/strategy/content-overlap.ts +0 -242
- package/references/opentasks/src/entire/strategy/manual-commit.ts +0 -1008
- package/references/opentasks/src/entire/strategy/types.ts +0 -285
- package/references/opentasks/src/entire/summarize/claude-generator.ts +0 -119
- package/references/opentasks/src/entire/summarize/summarize.ts +0 -432
- package/references/opentasks/src/entire/types.ts +0 -408
- package/references/opentasks/src/entire/utils/chunk-files.ts +0 -49
- package/references/opentasks/src/entire/utils/commit-message.ts +0 -65
- package/references/opentasks/src/entire/utils/detect-agent.ts +0 -36
- package/references/opentasks/src/entire/utils/hook-managers.ts +0 -118
- package/references/opentasks/src/entire/utils/ide-tags.ts +0 -32
- package/references/opentasks/src/entire/utils/paths.ts +0 -59
- package/references/opentasks/src/entire/utils/preview-rewind.ts +0 -86
- package/references/opentasks/src/entire/utils/rewind-conflict.ts +0 -121
- package/references/opentasks/src/entire/utils/shadow-branch.ts +0 -113
- package/references/opentasks/src/entire/utils/string-utils.ts +0 -46
- package/references/opentasks/src/entire/utils/todo-extract.ts +0 -193
- package/references/opentasks/src/entire/utils/trailers.ts +0 -190
- package/references/opentasks/src/entire/utils/transcript-parse.ts +0 -177
- package/references/opentasks/src/entire/utils/transcript-timestamp.ts +0 -61
- package/references/opentasks/src/entire/utils/tree-ops.ts +0 -227
- package/references/opentasks/src/entire/utils/tty.ts +0 -72
- package/references/opentasks/src/entire/utils/validation.ts +0 -67
- package/references/opentasks/src/entire/utils/worktree.ts +0 -58
- package/references/opentasks/src/graph/EdgeTypeRegistry.ts +0 -330
- package/references/opentasks/src/graph/FederatedGraph.ts +0 -796
- package/references/opentasks/src/graph/GraphologyAdapter.ts +0 -374
- package/references/opentasks/src/graph/HydratingFederatedGraph.ts +0 -533
- package/references/opentasks/src/graph/__tests__/EdgeTypeRegistry.test.ts +0 -263
- package/references/opentasks/src/graph/__tests__/FederatedGraph.test.ts +0 -821
- package/references/opentasks/src/graph/__tests__/GraphologyAdapter.test.ts +0 -408
- package/references/opentasks/src/graph/__tests__/HydratingFederatedGraph.test.ts +0 -735
- package/references/opentasks/src/graph/__tests__/debounce.test.ts +0 -276
- package/references/opentasks/src/graph/__tests__/e2e-store-roundtrip.test.ts +0 -349
- package/references/opentasks/src/graph/__tests__/edge-cases.test.ts +0 -595
- package/references/opentasks/src/graph/__tests__/expansion.test.ts +0 -304
- package/references/opentasks/src/graph/__tests__/git-graph-syncer.test.ts +0 -572
- package/references/opentasks/src/graph/__tests__/provider-store.test.ts +0 -1091
- package/references/opentasks/src/graph/__tests__/query.test.ts +0 -991
- package/references/opentasks/src/graph/__tests__/store.test.ts +0 -998
- package/references/opentasks/src/graph/__tests__/sync.test.ts +0 -178
- package/references/opentasks/src/graph/__tests__/validation.test.ts +0 -657
- package/references/opentasks/src/graph/coordination.ts +0 -454
- package/references/opentasks/src/graph/debounce.ts +0 -154
- package/references/opentasks/src/graph/expansion.ts +0 -364
- package/references/opentasks/src/graph/git-graph-syncer.ts +0 -321
- package/references/opentasks/src/graph/history.ts +0 -438
- package/references/opentasks/src/graph/index.ts +0 -145
- package/references/opentasks/src/graph/provider-store.ts +0 -1077
- package/references/opentasks/src/graph/query.ts +0 -651
- package/references/opentasks/src/graph/store.ts +0 -861
- package/references/opentasks/src/graph/sync.ts +0 -116
- package/references/opentasks/src/graph/types.ts +0 -420
- package/references/opentasks/src/graph/validation.ts +0 -520
- package/references/opentasks/src/index.ts +0 -270
- package/references/opentasks/src/materialization/CLAUDE.md +0 -88
- package/references/opentasks/src/materialization/README.md +0 -187
- package/references/opentasks/src/materialization/__tests__/archive-methods.test.ts +0 -194
- package/references/opentasks/src/materialization/__tests__/archiver.test.ts +0 -528
- package/references/opentasks/src/materialization/__tests__/config.test.ts +0 -123
- package/references/opentasks/src/materialization/__tests__/git-remote-store.test.ts +0 -533
- package/references/opentasks/src/materialization/__tests__/graph-id.test.ts +0 -82
- package/references/opentasks/src/materialization/__tests__/http-remote-store.test.ts +0 -263
- package/references/opentasks/src/materialization/__tests__/materialize-before-archive.test.ts +0 -246
- package/references/opentasks/src/materialization/__tests__/remote-store-factory.test.ts +0 -152
- package/references/opentasks/src/materialization/__tests__/snapshot.test.ts +0 -209
- package/references/opentasks/src/materialization/archiver.ts +0 -318
- package/references/opentasks/src/materialization/git-archive-store.ts +0 -568
- package/references/opentasks/src/materialization/git-remote-store.ts +0 -551
- package/references/opentasks/src/materialization/graph-id.ts +0 -173
- package/references/opentasks/src/materialization/http-remote-store.ts +0 -190
- package/references/opentasks/src/materialization/index.ts +0 -62
- package/references/opentasks/src/materialization/remote-store-factory.ts +0 -55
- package/references/opentasks/src/materialization/snapshot.ts +0 -230
- package/references/opentasks/src/materialization/types.ts +0 -410
- package/references/opentasks/src/providers/__tests__/beads.test.ts +0 -752
- package/references/opentasks/src/providers/__tests__/claude-tasks.test.ts +0 -485
- package/references/opentasks/src/providers/__tests__/entire-e2e.test.ts +0 -692
- package/references/opentasks/src/providers/__tests__/entire-sessionlog-e2e.test.ts +0 -1113
- package/references/opentasks/src/providers/__tests__/entire.test.ts +0 -1016
- package/references/opentasks/src/providers/__tests__/from-config.test.ts +0 -183
- package/references/opentasks/src/providers/__tests__/global.test.ts +0 -515
- package/references/opentasks/src/providers/__tests__/materialization.test.ts +0 -567
- package/references/opentasks/src/providers/__tests__/native.test.ts +0 -693
- package/references/opentasks/src/providers/__tests__/registry.test.ts +0 -232
- package/references/opentasks/src/providers/beads.ts +0 -1155
- package/references/opentasks/src/providers/claude-tasks.ts +0 -402
- package/references/opentasks/src/providers/entire.ts +0 -608
- package/references/opentasks/src/providers/from-config.ts +0 -210
- package/references/opentasks/src/providers/global.ts +0 -460
- package/references/opentasks/src/providers/index.ts +0 -147
- package/references/opentasks/src/providers/location.ts +0 -237
- package/references/opentasks/src/providers/materialization.ts +0 -346
- package/references/opentasks/src/providers/native.ts +0 -725
- package/references/opentasks/src/providers/registry.ts +0 -114
- package/references/opentasks/src/providers/sudocode.ts +0 -1292
- package/references/opentasks/src/providers/sync.ts +0 -485
- package/references/opentasks/src/providers/traits/RelationshipQueryable.ts +0 -169
- package/references/opentasks/src/providers/traits/TaskManageable.ts +0 -211
- package/references/opentasks/src/providers/traits/Watchable.ts +0 -260
- package/references/opentasks/src/providers/traits/__tests__/RelationshipQueryable.test.ts +0 -217
- package/references/opentasks/src/providers/traits/__tests__/TaskManageable.test.ts +0 -241
- package/references/opentasks/src/providers/traits/index.ts +0 -42
- package/references/opentasks/src/providers/types.ts +0 -439
- package/references/opentasks/src/schema/__tests__/validation.test.ts +0 -283
- package/references/opentasks/src/schema/base.ts +0 -88
- package/references/opentasks/src/schema/edges.ts +0 -78
- package/references/opentasks/src/schema/index.ts +0 -37
- package/references/opentasks/src/schema/nodes.ts +0 -119
- package/references/opentasks/src/schema/storage.ts +0 -130
- package/references/opentasks/src/schema/validation.ts +0 -209
- package/references/opentasks/src/storage/__tests__/atomic-write.test.ts +0 -227
- package/references/opentasks/src/storage/__tests__/file-lock.test.ts +0 -120
- package/references/opentasks/src/storage/__tests__/jsonl.test.ts +0 -267
- package/references/opentasks/src/storage/__tests__/locked-writer.test.ts +0 -134
- package/references/opentasks/src/storage/__tests__/sqlite.test.ts +0 -572
- package/references/opentasks/src/storage/atomic-write.ts +0 -86
- package/references/opentasks/src/storage/file-lock.ts +0 -215
- package/references/opentasks/src/storage/index.ts +0 -24
- package/references/opentasks/src/storage/interface.ts +0 -289
- package/references/opentasks/src/storage/jsonl.ts +0 -264
- package/references/opentasks/src/storage/locked-writer.ts +0 -140
- package/references/opentasks/src/storage/sqlite-schema.ts +0 -177
- package/references/opentasks/src/storage/sqlite.ts +0 -791
- package/references/opentasks/src/tools/__tests__/annotate.test.ts +0 -381
- package/references/opentasks/src/tools/__tests__/link.test.ts +0 -299
- package/references/opentasks/src/tools/__tests__/query.test.ts +0 -350
- package/references/opentasks/src/tools/__tests__/task.test.ts +0 -218
- package/references/opentasks/src/tools/annotate.ts +0 -277
- package/references/opentasks/src/tools/index.ts +0 -57
- package/references/opentasks/src/tools/link.ts +0 -163
- package/references/opentasks/src/tools/query.ts +0 -468
- package/references/opentasks/src/tools/task.ts +0 -213
- package/references/opentasks/src/tools/types.ts +0 -451
- package/references/opentasks/src/tracking/__tests__/claude-tool-categorizer.test.ts +0 -223
- package/references/opentasks/src/tracking/__tests__/transcript-extractor.test.ts +0 -262
- package/references/opentasks/src/tracking/claude-tool-categorizer.ts +0 -155
- package/references/opentasks/src/tracking/index.ts +0 -32
- package/references/opentasks/src/tracking/skill-tracker.ts +0 -322
- package/references/opentasks/src/tracking/transcript-extractor.ts +0 -225
- package/references/opentasks/tests/e2e/helpers/assertions.ts +0 -211
- package/references/opentasks/tests/e2e/helpers/beads-helpers.ts +0 -487
- package/references/opentasks/tests/e2e/helpers/fixtures.ts +0 -236
- package/references/opentasks/tests/e2e/helpers/index.ts +0 -122
- package/references/opentasks/tests/e2e/helpers/sudocode-helpers.ts +0 -341
- package/references/opentasks/tests/e2e/helpers/system-setup.ts +0 -504
- package/references/opentasks/tests/e2e/helpers/test-agent.ts +0 -504
- package/references/opentasks/tests/e2e/infrastructure.e2e.test.ts +0 -521
- package/references/opentasks/tests/e2e/skill-tracking.e2e.test.ts +0 -625
- package/references/opentasks/tests/e2e/workflows/feedback-loop.e2e.test.ts +0 -279
- package/references/opentasks/tests/e2e/workflows/multi-agent.e2e.test.ts +0 -304
- package/references/opentasks/tests/e2e/workflows/provider-sync/background-sync.e2e.test.ts +0 -292
- package/references/opentasks/tests/e2e/workflows/provider-sync/beads-provider-compat.e2e.test.ts +0 -249
- package/references/opentasks/tests/e2e/workflows/provider-sync/cross-provider-edges.e2e.test.ts +0 -407
- package/references/opentasks/tests/e2e/workflows/provider-sync/federated-ready.e2e.test.ts +0 -504
- package/references/opentasks/tests/e2e/workflows/provider-sync/hydration.e2e.test.ts +0 -340
- package/references/opentasks/tests/e2e/workflows/provider-sync/materialization.e2e.test.ts +0 -370
- package/references/opentasks/tests/e2e/workflows/provider-sync/sudocode-provider-compat.e2e.test.ts +0 -683
- package/references/opentasks/tests/e2e/workflows/provider-sync/watchable-beads.e2e.test.ts +0 -573
- package/references/opentasks/tests/e2e/workflows/spec-driven.e2e.test.ts +0 -244
- package/references/opentasks/tests/e2e/worktree-location.e2e.test.ts +0 -699
- package/references/opentasks/tests/integration/daemon/helpers.ts +0 -147
- package/references/opentasks/tests/integration/daemon/ipc.integration.test.ts +0 -343
- package/references/opentasks/tests/integration/daemon/lifecycle.integration.test.ts +0 -407
- package/references/opentasks/tests/integration/graph/federated-graph.integration.test.ts +0 -660
- package/references/opentasks/tests/integration/helpers/flags.ts +0 -28
- package/references/opentasks/tests/integration/helpers/index.ts +0 -47
- package/references/opentasks/tests/integration/helpers/process.ts +0 -133
- package/references/opentasks/tests/integration/helpers/temp.ts +0 -105
- package/references/opentasks/tests/integration/helpers/wait.ts +0 -133
- package/references/opentasks/tests/integration/helpers.test.ts +0 -120
- package/references/opentasks/tests/integration/providers/beads-task-manageable.integration.test.ts +0 -450
- package/references/opentasks/tests/integration/providers/beads.integration.test.ts +0 -388
- package/references/opentasks/tests/integration/providers/native-task-manageable.integration.test.ts +0 -667
- package/references/opentasks/tests/integration/providers/sudocode-task-manageable.integration.test.ts +0 -406
- package/references/opentasks/tests/integration/providers/sudocode.integration.test.ts +0 -342
- package/references/opentasks/tests/integration/storage/jsonl-durability.integration.test.ts +0 -390
- package/references/opentasks/tests/integration/storage/sqlite-durability.integration.test.ts +0 -527
- package/references/opentasks/tests/integration/worktree/redirect-location-resolution.integration.test.ts +0 -578
- package/references/opentasks/tests/integration/worktree/worktree-flow.integration.test.ts +0 -656
- package/references/opentasks/tsconfig.json +0 -18
- package/references/opentasks/vitest.config.ts +0 -27
- package/references/opentasks/vitest.e2e.config.ts +0 -35
- package/references/opentasks/vitest.integration.config.ts +0 -19
- package/references/openteams/.claude/settings.json +0 -6
- package/references/openteams/CLAUDE.md +0 -98
- package/references/openteams/README.md +0 -508
- package/references/openteams/SKILL.md +0 -198
- package/references/openteams/design.md +0 -250
- package/references/openteams/docs/visual-editor-design.md +0 -1225
- package/references/openteams/editor/index.html +0 -15
- package/references/openteams/editor/package.json +0 -39
- package/references/openteams/editor/src/App.tsx +0 -48
- package/references/openteams/editor/src/components/canvas/Canvas.tsx +0 -131
- package/references/openteams/editor/src/components/canvas/QuickAddMenu.tsx +0 -134
- package/references/openteams/editor/src/components/edges/PeerRouteEdge.tsx +0 -82
- package/references/openteams/editor/src/components/edges/SignalFlowEdge.tsx +0 -77
- package/references/openteams/editor/src/components/edges/SpawnEdge.tsx +0 -54
- package/references/openteams/editor/src/components/inspector/ChannelInspector.tsx +0 -158
- package/references/openteams/editor/src/components/inspector/EdgeInspector.tsx +0 -168
- package/references/openteams/editor/src/components/inspector/Inspector.tsx +0 -46
- package/references/openteams/editor/src/components/inspector/RoleInspector.tsx +0 -508
- package/references/openteams/editor/src/components/inspector/TeamInspector.tsx +0 -126
- package/references/openteams/editor/src/components/nodes/ChannelNode.tsx +0 -103
- package/references/openteams/editor/src/components/nodes/RoleNode.tsx +0 -157
- package/references/openteams/editor/src/components/nodes/node-styles.ts +0 -101
- package/references/openteams/editor/src/components/sidebar/Sidebar.tsx +0 -227
- package/references/openteams/editor/src/components/toolbar/ExportModal.tsx +0 -110
- package/references/openteams/editor/src/components/toolbar/ImportModal.tsx +0 -139
- package/references/openteams/editor/src/components/toolbar/Toolbar.tsx +0 -190
- package/references/openteams/editor/src/hooks/use-autosave.ts +0 -126
- package/references/openteams/editor/src/hooks/use-keyboard.ts +0 -106
- package/references/openteams/editor/src/hooks/use-validation.ts +0 -45
- package/references/openteams/editor/src/index.css +0 -245
- package/references/openteams/editor/src/lib/auto-layout.ts +0 -51
- package/references/openteams/editor/src/lib/bundled-templates.ts +0 -42
- package/references/openteams/editor/src/lib/compiler.ts +0 -75
- package/references/openteams/editor/src/lib/load-template.ts +0 -103
- package/references/openteams/editor/src/lib/rebuild-edges.ts +0 -104
- package/references/openteams/editor/src/lib/serializer.ts +0 -408
- package/references/openteams/editor/src/lib/signal-catalog.ts +0 -50
- package/references/openteams/editor/src/lib/validator.ts +0 -172
- package/references/openteams/editor/src/main.tsx +0 -10
- package/references/openteams/editor/src/stores/canvas-store.ts +0 -80
- package/references/openteams/editor/src/stores/config-store.ts +0 -243
- package/references/openteams/editor/src/stores/history-store.ts +0 -143
- package/references/openteams/editor/src/stores/theme-store.ts +0 -66
- package/references/openteams/editor/src/stores/ui-store.ts +0 -46
- package/references/openteams/editor/src/stores/validation-store.ts +0 -27
- package/references/openteams/editor/src/types/editor.ts +0 -74
- package/references/openteams/editor/src/vite-env.d.ts +0 -1
- package/references/openteams/editor/tests/compiler.test.ts +0 -151
- package/references/openteams/editor/tests/e2e-add-remove.test.ts +0 -386
- package/references/openteams/editor/tests/e2e-components.test.tsx +0 -424
- package/references/openteams/editor/tests/e2e-export-roundtrip.test.ts +0 -299
- package/references/openteams/editor/tests/e2e-template-load.test.ts +0 -204
- package/references/openteams/editor/tests/e2e-ui-store.test.ts +0 -126
- package/references/openteams/editor/tests/e2e-undo-redo.test.ts +0 -203
- package/references/openteams/editor/tests/e2e-validation.test.ts +0 -307
- package/references/openteams/editor/tests/serializer.test.ts +0 -142
- package/references/openteams/editor/tests/setup.ts +0 -52
- package/references/openteams/editor/tests/validator.test.ts +0 -92
- package/references/openteams/editor/tsconfig.json +0 -21
- package/references/openteams/editor/tsconfig.tsbuildinfo +0 -1
- package/references/openteams/editor/vite.config.ts +0 -28
- package/references/openteams/examples/bmad-method/prompts/analyst/ROLE.md +0 -16
- package/references/openteams/examples/bmad-method/prompts/analyst/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/architect/ROLE.md +0 -24
- package/references/openteams/examples/bmad-method/prompts/architect/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/developer/ROLE.md +0 -25
- package/references/openteams/examples/bmad-method/prompts/developer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/master/ROLE.md +0 -21
- package/references/openteams/examples/bmad-method/prompts/master/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/pm/ROLE.md +0 -20
- package/references/openteams/examples/bmad-method/prompts/pm/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/qa/ROLE.md +0 -17
- package/references/openteams/examples/bmad-method/prompts/qa/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/ROLE.md +0 -23
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/scrum-master/ROLE.md +0 -27
- package/references/openteams/examples/bmad-method/prompts/scrum-master/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/tech-writer/ROLE.md +0 -21
- package/references/openteams/examples/bmad-method/prompts/tech-writer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/ux-designer/ROLE.md +0 -16
- package/references/openteams/examples/bmad-method/prompts/ux-designer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/roles/analyst.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/architect.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/developer.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/master.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/pm.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/qa.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/quick-flow-dev.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/scrum-master.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/tech-writer.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/ux-designer.yaml +0 -8
- package/references/openteams/examples/bmad-method/team.yaml +0 -161
- package/references/openteams/examples/bug-fix-pipeline/roles/fixer.yaml +0 -9
- package/references/openteams/examples/bug-fix-pipeline/roles/investigator.yaml +0 -8
- package/references/openteams/examples/bug-fix-pipeline/roles/pr-creator.yaml +0 -6
- package/references/openteams/examples/bug-fix-pipeline/roles/triager.yaml +0 -7
- package/references/openteams/examples/bug-fix-pipeline/roles/verifier.yaml +0 -8
- package/references/openteams/examples/bug-fix-pipeline/team.yaml +0 -88
- package/references/openteams/examples/codebase-migration/roles/assessor.yaml +0 -7
- package/references/openteams/examples/codebase-migration/roles/migrator.yaml +0 -9
- package/references/openteams/examples/codebase-migration/roles/planner.yaml +0 -5
- package/references/openteams/examples/codebase-migration/roles/test-extractor.yaml +0 -9
- package/references/openteams/examples/codebase-migration/roles/validator.yaml +0 -7
- package/references/openteams/examples/codebase-migration/team.yaml +0 -81
- package/references/openteams/examples/docs-sync/roles/adr-writer.yaml +0 -7
- package/references/openteams/examples/docs-sync/roles/api-doc-writer.yaml +0 -7
- package/references/openteams/examples/docs-sync/roles/change-detector.yaml +0 -7
- package/references/openteams/examples/docs-sync/roles/doc-reviewer.yaml +0 -7
- package/references/openteams/examples/docs-sync/roles/guide-writer.yaml +0 -7
- package/references/openteams/examples/docs-sync/team.yaml +0 -84
- package/references/openteams/examples/gsd/prompts/codebase-mapper/ROLE.md +0 -17
- package/references/openteams/examples/gsd/prompts/codebase-mapper/SOUL.md +0 -5
- package/references/openteams/examples/gsd/prompts/debugger/ROLE.md +0 -25
- package/references/openteams/examples/gsd/prompts/debugger/SOUL.md +0 -5
- package/references/openteams/examples/gsd/prompts/executor/ROLE.md +0 -34
- package/references/openteams/examples/gsd/prompts/executor/SOUL.md +0 -5
- package/references/openteams/examples/gsd/prompts/integration-checker/ROLE.md +0 -18
- package/references/openteams/examples/gsd/prompts/integration-checker/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/orchestrator/ROLE.md +0 -42
- package/references/openteams/examples/gsd/prompts/orchestrator/SOUL.md +0 -5
- package/references/openteams/examples/gsd/prompts/phase-researcher/ROLE.md +0 -15
- package/references/openteams/examples/gsd/prompts/phase-researcher/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/plan-checker/ROLE.md +0 -17
- package/references/openteams/examples/gsd/prompts/plan-checker/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/planner/ROLE.md +0 -28
- package/references/openteams/examples/gsd/prompts/planner/SOUL.md +0 -5
- package/references/openteams/examples/gsd/prompts/project-researcher/ROLE.md +0 -16
- package/references/openteams/examples/gsd/prompts/project-researcher/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/research-synthesizer/ROLE.md +0 -13
- package/references/openteams/examples/gsd/prompts/research-synthesizer/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/roadmapper/ROLE.md +0 -14
- package/references/openteams/examples/gsd/prompts/roadmapper/SOUL.md +0 -3
- package/references/openteams/examples/gsd/prompts/verifier/ROLE.md +0 -19
- package/references/openteams/examples/gsd/prompts/verifier/SOUL.md +0 -5
- package/references/openteams/examples/gsd/roles/codebase-mapper.yaml +0 -8
- package/references/openteams/examples/gsd/roles/debugger.yaml +0 -8
- package/references/openteams/examples/gsd/roles/executor.yaml +0 -8
- package/references/openteams/examples/gsd/roles/integration-checker.yaml +0 -8
- package/references/openteams/examples/gsd/roles/orchestrator.yaml +0 -9
- package/references/openteams/examples/gsd/roles/phase-researcher.yaml +0 -7
- package/references/openteams/examples/gsd/roles/plan-checker.yaml +0 -8
- package/references/openteams/examples/gsd/roles/planner.yaml +0 -8
- package/references/openteams/examples/gsd/roles/project-researcher.yaml +0 -8
- package/references/openteams/examples/gsd/roles/research-synthesizer.yaml +0 -7
- package/references/openteams/examples/gsd/roles/roadmapper.yaml +0 -7
- package/references/openteams/examples/gsd/roles/verifier.yaml +0 -8
- package/references/openteams/examples/gsd/team.yaml +0 -154
- package/references/openteams/examples/incident-response/roles/communicator.yaml +0 -5
- package/references/openteams/examples/incident-response/roles/fix-proposer.yaml +0 -7
- package/references/openteams/examples/incident-response/roles/incident-triager.yaml +0 -8
- package/references/openteams/examples/incident-response/roles/investigator.yaml +0 -8
- package/references/openteams/examples/incident-response/team.yaml +0 -68
- package/references/openteams/examples/pr-review-checks/roles/code-reviewer.yaml +0 -7
- package/references/openteams/examples/pr-review-checks/roles/security-scanner.yaml +0 -6
- package/references/openteams/examples/pr-review-checks/roles/summarizer.yaml +0 -6
- package/references/openteams/examples/pr-review-checks/roles/test-checker.yaml +0 -8
- package/references/openteams/examples/pr-review-checks/team.yaml +0 -64
- package/references/openteams/examples/security-audit/roles/code-analyzer.yaml +0 -6
- package/references/openteams/examples/security-audit/roles/dep-scanner.yaml +0 -7
- package/references/openteams/examples/security-audit/roles/fixer.yaml +0 -9
- package/references/openteams/examples/security-audit/roles/pr-creator.yaml +0 -6
- package/references/openteams/examples/security-audit/roles/prioritizer.yaml +0 -6
- package/references/openteams/examples/security-audit/roles/secrets-scanner.yaml +0 -6
- package/references/openteams/examples/security-audit/roles/verifier.yaml +0 -8
- package/references/openteams/examples/security-audit/team.yaml +0 -102
- package/references/openteams/media/banner.png +0 -0
- package/references/openteams/media/editor.png +0 -0
- package/references/openteams/package-lock.json +0 -4804
- package/references/openteams/package.json +0 -58
- package/references/openteams/schema/role.schema.json +0 -147
- package/references/openteams/schema/team.schema.json +0 -311
- package/references/openteams/src/cli/editor.ts +0 -170
- package/references/openteams/src/cli/generate.test.ts +0 -191
- package/references/openteams/src/cli/generate.ts +0 -220
- package/references/openteams/src/cli/prompt-utils.ts +0 -42
- package/references/openteams/src/cli/template.test.ts +0 -365
- package/references/openteams/src/cli/template.ts +0 -205
- package/references/openteams/src/cli.ts +0 -22
- package/references/openteams/src/generators/agent-prompt-generator.test.ts +0 -332
- package/references/openteams/src/generators/agent-prompt-generator.ts +0 -527
- package/references/openteams/src/generators/package-generator.test.ts +0 -129
- package/references/openteams/src/generators/package-generator.ts +0 -102
- package/references/openteams/src/generators/skill-generator.test.ts +0 -246
- package/references/openteams/src/generators/skill-generator.ts +0 -388
- package/references/openteams/src/index.ts +0 -84
- package/references/openteams/src/template/builtins.test.ts +0 -74
- package/references/openteams/src/template/builtins.ts +0 -108
- package/references/openteams/src/template/install-service.test.ts +0 -452
- package/references/openteams/src/template/install-service.ts +0 -332
- package/references/openteams/src/template/loader.test.ts +0 -1696
- package/references/openteams/src/template/loader.ts +0 -804
- package/references/openteams/src/template/resolver.test.ts +0 -304
- package/references/openteams/src/template/resolver.ts +0 -251
- package/references/openteams/src/template/types.ts +0 -229
- package/references/openteams/tsconfig.cjs.json +0 -7
- package/references/openteams/tsconfig.esm.json +0 -8
- package/references/openteams/tsconfig.json +0 -16
- package/references/openteams/vitest.config.ts +0 -9
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/swarmkit/LICENSE +0 -21
- package/references/swarmkit/README.md +0 -130
- package/references/swarmkit/docs/design.md +0 -453
- package/references/swarmkit/docs/package-setup-reference.md +0 -519
- package/references/swarmkit/package-lock.json +0 -1938
- package/references/swarmkit/package.json +0 -43
- package/references/swarmkit/src/cli.ts +0 -41
- package/references/swarmkit/src/commands/add.ts +0 -126
- package/references/swarmkit/src/commands/doctor.ts +0 -117
- package/references/swarmkit/src/commands/hive.ts +0 -279
- package/references/swarmkit/src/commands/init/phases/configure.ts +0 -96
- package/references/swarmkit/src/commands/init/phases/global-setup.ts +0 -102
- package/references/swarmkit/src/commands/init/phases/packages.ts +0 -44
- package/references/swarmkit/src/commands/init/phases/project.ts +0 -81
- package/references/swarmkit/src/commands/init/phases/use-case.ts +0 -47
- package/references/swarmkit/src/commands/init/state.test.ts +0 -23
- package/references/swarmkit/src/commands/init/state.ts +0 -22
- package/references/swarmkit/src/commands/init/wizard.ts +0 -160
- package/references/swarmkit/src/commands/init.ts +0 -17
- package/references/swarmkit/src/commands/login.ts +0 -106
- package/references/swarmkit/src/commands/logout.ts +0 -22
- package/references/swarmkit/src/commands/remove.ts +0 -72
- package/references/swarmkit/src/commands/status.ts +0 -101
- package/references/swarmkit/src/commands/update.ts +0 -62
- package/references/swarmkit/src/commands/whoami.ts +0 -41
- package/references/swarmkit/src/config/global.test.ts +0 -258
- package/references/swarmkit/src/config/global.ts +0 -141
- package/references/swarmkit/src/config/keys.test.ts +0 -109
- package/references/swarmkit/src/config/keys.ts +0 -49
- package/references/swarmkit/src/doctor/checks.test.ts +0 -366
- package/references/swarmkit/src/doctor/checks.ts +0 -292
- package/references/swarmkit/src/doctor/types.ts +0 -33
- package/references/swarmkit/src/hub/auth-flow.test.ts +0 -127
- package/references/swarmkit/src/hub/auth-flow.ts +0 -144
- package/references/swarmkit/src/hub/client.test.ts +0 -224
- package/references/swarmkit/src/hub/client.ts +0 -185
- package/references/swarmkit/src/hub/credentials.test.ts +0 -132
- package/references/swarmkit/src/hub/credentials.ts +0 -51
- package/references/swarmkit/src/index.ts +0 -116
- package/references/swarmkit/src/packages/installer.test.ts +0 -365
- package/references/swarmkit/src/packages/installer.ts +0 -206
- package/references/swarmkit/src/packages/plugin.test.ts +0 -141
- package/references/swarmkit/src/packages/plugin.ts +0 -46
- package/references/swarmkit/src/packages/registry.test.ts +0 -235
- package/references/swarmkit/src/packages/registry.ts +0 -209
- package/references/swarmkit/src/packages/setup.test.ts +0 -1349
- package/references/swarmkit/src/packages/setup.ts +0 -635
- package/references/swarmkit/src/utils/ui.test.ts +0 -115
- package/references/swarmkit/src/utils/ui.ts +0 -62
- package/references/swarmkit/tsconfig.json +0 -17
- package/references/swarmkit/vitest.config.ts +0 -9
|
@@ -1,1077 +0,0 @@
|
|
|
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
|
-
|
|
9
|
-
import type { Node, ExternalNode } from '../schema/index.js';
|
|
10
|
-
import type {
|
|
11
|
-
Provider,
|
|
12
|
-
ProviderNode,
|
|
13
|
-
ProviderCreateInput,
|
|
14
|
-
ProviderUpdateInput,
|
|
15
|
-
ProviderRegistry,
|
|
16
|
-
MaterializationConfig,
|
|
17
|
-
ProviderOperationContext,
|
|
18
|
-
} from '../providers/types.js';
|
|
19
|
-
import { ProviderError } from '../providers/types.js';
|
|
20
|
-
import type { MaterializationManager } from '../providers/materialization.js';
|
|
21
|
-
import { createProviderRegistry } from '../providers/registry.js';
|
|
22
|
-
import { createNativeProvider } from '../providers/native.js';
|
|
23
|
-
import { createMaterializationManager } from '../providers/materialization.js';
|
|
24
|
-
import {
|
|
25
|
-
isWatchable,
|
|
26
|
-
type ProviderChangeEvent,
|
|
27
|
-
type ProviderNodeChangeEvent,
|
|
28
|
-
} from '../providers/traits/Watchable.js';
|
|
29
|
-
import {
|
|
30
|
-
isTaskManageable,
|
|
31
|
-
type TaskAction,
|
|
32
|
-
type ReadyTaskOptions,
|
|
33
|
-
} from '../providers/traits/TaskManageable.js';
|
|
34
|
-
import type { GraphStore } from './store.js';
|
|
35
|
-
import type { CreateNodeInput, UpdateNodeInput, DeleteOptions } from './types.js';
|
|
36
|
-
|
|
37
|
-
// ============================================================================
|
|
38
|
-
// Types
|
|
39
|
-
// ============================================================================
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Options for resolving a node
|
|
43
|
-
*/
|
|
44
|
-
export interface ResolveOptions {
|
|
45
|
-
/** Force fresh fetch (ignore cache) */
|
|
46
|
-
refresh?: boolean;
|
|
47
|
-
|
|
48
|
-
/** Explicitly request materialization */
|
|
49
|
-
materialize?: boolean;
|
|
50
|
-
|
|
51
|
-
/** Include raw provider data in response */
|
|
52
|
-
includeRawData?: boolean;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Options for provider-routed create
|
|
57
|
-
*/
|
|
58
|
-
export interface ProviderCreateOptions {
|
|
59
|
-
/** Target provider scheme (overrides defaultProvider) */
|
|
60
|
-
scheme?: string;
|
|
61
|
-
|
|
62
|
-
/** Operational context forwarded to the provider */
|
|
63
|
-
context?: ProviderOperationContext;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Options for provider-routed get
|
|
68
|
-
*/
|
|
69
|
-
export interface ProviderGetOptions {
|
|
70
|
-
/** Operational context forwarded to the provider */
|
|
71
|
-
context?: ProviderOperationContext;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Options for provider-routed update
|
|
76
|
-
*/
|
|
77
|
-
export interface ProviderUpdateOptions {
|
|
78
|
-
/** Operational context forwarded to the provider */
|
|
79
|
-
context?: ProviderOperationContext;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Options for task transition operations
|
|
84
|
-
*/
|
|
85
|
-
export interface TaskTransitionOptions {
|
|
86
|
-
/** Operational context forwarded to the provider */
|
|
87
|
-
context?: ProviderOperationContext;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Options for querying ready tasks across providers
|
|
92
|
-
*/
|
|
93
|
-
export interface FederatedReadyTaskOptions extends ReadyTaskOptions {
|
|
94
|
-
/** Only query these providers (by name). If omitted, queries all task-capable providers. */
|
|
95
|
-
providers?: string[];
|
|
96
|
-
|
|
97
|
-
/** Operational context forwarded to providers */
|
|
98
|
-
context?: ProviderOperationContext;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Result from a task transition
|
|
103
|
-
*/
|
|
104
|
-
export interface TaskTransitionResult {
|
|
105
|
-
/** The updated node (materialized if external) */
|
|
106
|
-
node: Node;
|
|
107
|
-
/** The provider that handled the transition */
|
|
108
|
-
provider: string;
|
|
109
|
-
/** The action that was applied */
|
|
110
|
-
action: TaskAction;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Result from a provider-routed create
|
|
115
|
-
*/
|
|
116
|
-
export interface ProviderCreateResult {
|
|
117
|
-
/** The created/materialized node */
|
|
118
|
-
node: Node;
|
|
119
|
-
/** The provider URI (if created via external provider) */
|
|
120
|
-
uri?: string;
|
|
121
|
-
/** Which provider handled the create */
|
|
122
|
-
provider: string;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Configuration for provider-aware store
|
|
127
|
-
*/
|
|
128
|
-
export interface ProviderStoreConfig {
|
|
129
|
-
/** Pre-configured provider registry (optional) */
|
|
130
|
-
registry?: ProviderRegistry;
|
|
131
|
-
|
|
132
|
-
/** Materialization configuration */
|
|
133
|
-
materialization?: Partial<MaterializationConfig>;
|
|
134
|
-
|
|
135
|
-
/** Whether to auto-register native provider (default: true) */
|
|
136
|
-
autoRegisterNative?: boolean;
|
|
137
|
-
|
|
138
|
-
/** Default provider for CRUD operations ('native' = local GraphStore) */
|
|
139
|
-
defaultProvider?: string;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Callback for provider change events received by the store.
|
|
144
|
-
* Allows external consumers to react to provider-driven changes.
|
|
145
|
-
*/
|
|
146
|
-
export type ProviderChangeHandler = (providerName: string, event: ProviderChangeEvent) => void;
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Provider-aware graph store interface
|
|
150
|
-
*/
|
|
151
|
-
export interface ProviderAwareStore extends GraphStore {
|
|
152
|
-
/** Provider registry */
|
|
153
|
-
readonly providers: ProviderRegistry;
|
|
154
|
-
|
|
155
|
-
/** Materialization manager */
|
|
156
|
-
readonly materialization: MaterializationManager;
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Resolve any node by ID or URI
|
|
160
|
-
* - Local IDs (s-, i-, f-, e-, x-) → getNode()
|
|
161
|
-
* - External URIs → provider.get() + optional materialize
|
|
162
|
-
*/
|
|
163
|
-
resolveNode(idOrUri: string, options?: ResolveOptions): Promise<Node | ProviderNode | null>;
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Materialize an external node from provider data
|
|
167
|
-
*/
|
|
168
|
-
materializeNode(uri: string): Promise<ExternalNode>;
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Refresh a materialized external node
|
|
172
|
-
*/
|
|
173
|
-
refreshNode(id: string): Promise<ExternalNode | null>;
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Start background sync for external nodes
|
|
177
|
-
*/
|
|
178
|
-
startBackgroundSync(): void;
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Stop background sync
|
|
182
|
-
*/
|
|
183
|
-
stopBackgroundSync(): void;
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Check if background sync is running
|
|
187
|
-
*/
|
|
188
|
-
isBackgroundSyncRunning(): boolean;
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Start watching all watchable providers for changes.
|
|
192
|
-
*
|
|
193
|
-
* For each provider that implements the Watchable trait, subscribes
|
|
194
|
-
* to change events and auto-refreshes materialized nodes.
|
|
195
|
-
* Non-watchable providers are skipped (use startBackgroundSync for those).
|
|
196
|
-
*/
|
|
197
|
-
startProviderWatching(): void;
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Stop watching all providers for changes.
|
|
201
|
-
*/
|
|
202
|
-
stopProviderWatching(): void;
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Register an external handler for provider change events.
|
|
206
|
-
* Called after the store has processed each event internally.
|
|
207
|
-
*
|
|
208
|
-
* @returns Unsubscribe function
|
|
209
|
-
*/
|
|
210
|
-
onProviderChange(handler: ProviderChangeHandler): () => void;
|
|
211
|
-
|
|
212
|
-
// ===========================================================================
|
|
213
|
-
// Provider-Routed CRUD (Unified Interface)
|
|
214
|
-
// ===========================================================================
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Create a node via provider dispatch.
|
|
218
|
-
* Routes to defaultProvider or explicit scheme. Always materializes.
|
|
219
|
-
*/
|
|
220
|
-
providerCreate(
|
|
221
|
-
input: CreateNodeInput,
|
|
222
|
-
options?: ProviderCreateOptions,
|
|
223
|
-
): Promise<ProviderCreateResult>;
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Get a node by local ID or provider URI.
|
|
227
|
-
* For external nodes, refreshes if stale.
|
|
228
|
-
*/
|
|
229
|
-
providerGet(idOrUri: string, options?: ProviderGetOptions): Promise<Node | null>;
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Update a node by local ID or provider URI.
|
|
233
|
-
* For external/materialized nodes, routes update to the owning provider
|
|
234
|
-
* and refreshes the local materialized copy.
|
|
235
|
-
*/
|
|
236
|
-
providerUpdate(
|
|
237
|
-
idOrUri: string,
|
|
238
|
-
updates: UpdateNodeInput,
|
|
239
|
-
options?: ProviderUpdateOptions,
|
|
240
|
-
): Promise<Node>;
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Delete a node by local ID or provider URI.
|
|
244
|
-
* For external/materialized nodes, deletes in the provider
|
|
245
|
-
* and removes the local materialized copy.
|
|
246
|
-
*/
|
|
247
|
-
providerDelete(
|
|
248
|
-
idOrUri: string,
|
|
249
|
-
options?: DeleteOptions & { context?: ProviderOperationContext },
|
|
250
|
-
): Promise<void>;
|
|
251
|
-
|
|
252
|
-
/** The configured default provider name */
|
|
253
|
-
readonly defaultProvider: string;
|
|
254
|
-
|
|
255
|
-
// ===========================================================================
|
|
256
|
-
// Task Lifecycle (TaskManageable Trait — Federated)
|
|
257
|
-
// ===========================================================================
|
|
258
|
-
|
|
259
|
-
/**
|
|
260
|
-
* Transition a task's status using a semantic action.
|
|
261
|
-
* Resolves the owning provider, checks that it supports TaskManageable,
|
|
262
|
-
* and delegates the transition.
|
|
263
|
-
*/
|
|
264
|
-
taskTransition(
|
|
265
|
-
idOrUri: string,
|
|
266
|
-
action: TaskAction,
|
|
267
|
-
options?: TaskTransitionOptions,
|
|
268
|
-
): Promise<TaskTransitionResult>;
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Get tasks that are ready to work on, aggregated across all
|
|
272
|
-
* task-capable providers (Option B: federated aggregation).
|
|
273
|
-
*/
|
|
274
|
-
taskReady(options?: FederatedReadyTaskOptions): Promise<Node[]>;
|
|
275
|
-
|
|
276
|
-
/**
|
|
277
|
-
* Assign a task to an owner.
|
|
278
|
-
* Resolves the owning provider, checks TaskManageable + supportsAssignment.
|
|
279
|
-
*/
|
|
280
|
-
taskAssign(idOrUri: string, assignee: string, options?: TaskTransitionOptions): Promise<Node>;
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* Get valid next actions for a task in its current state.
|
|
284
|
-
* Falls back to the provider's full `taskCapabilities.actions` if the
|
|
285
|
-
* provider doesn't implement `validActions`.
|
|
286
|
-
*/
|
|
287
|
-
taskValidActions(idOrUri: string): Promise<TaskAction[]>;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// ============================================================================
|
|
291
|
-
// Constants
|
|
292
|
-
// ============================================================================
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Pattern for local node IDs (s-, i-, f-, e-, x-)
|
|
296
|
-
*/
|
|
297
|
-
const LOCAL_ID_PATTERN = /^[ctfex]-[a-z0-9]+$/;
|
|
298
|
-
|
|
299
|
-
// ============================================================================
|
|
300
|
-
// Helper Functions
|
|
301
|
-
// ============================================================================
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Check if a string is a local node ID
|
|
305
|
-
*/
|
|
306
|
-
function isLocalId(idOrUri: string): boolean {
|
|
307
|
-
return LOCAL_ID_PATTERN.test(idOrUri);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/**
|
|
311
|
-
* Convert CreateNodeInput to ProviderCreateInput.
|
|
312
|
-
* Passes through tags and parent_id via metadata so providers can use them.
|
|
313
|
-
*/
|
|
314
|
-
function toProviderCreateInput(input: CreateNodeInput): ProviderCreateInput {
|
|
315
|
-
// Merge tags and parent_id into metadata for providers that support them
|
|
316
|
-
const metadata: Record<string, unknown> = { ...input.metadata };
|
|
317
|
-
if (input.tags && input.tags.length > 0) {
|
|
318
|
-
metadata.tags = input.tags;
|
|
319
|
-
}
|
|
320
|
-
if (input.parent_id) {
|
|
321
|
-
metadata.parent_id = input.parent_id;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
return {
|
|
325
|
-
type: input.type === 'task' ? 'issue' : input.type === 'context' ? 'spec' : 'issue',
|
|
326
|
-
title: input.title,
|
|
327
|
-
content: input.content,
|
|
328
|
-
status: input.status,
|
|
329
|
-
priority: input.priority,
|
|
330
|
-
metadata: Object.keys(metadata).length > 0 ? metadata : input.metadata,
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
/**
|
|
335
|
-
* Convert UpdateNodeInput to ProviderUpdateInput
|
|
336
|
-
*/
|
|
337
|
-
function toProviderUpdateInput(updates: UpdateNodeInput): ProviderUpdateInput {
|
|
338
|
-
return {
|
|
339
|
-
title: updates.title,
|
|
340
|
-
content: updates.content,
|
|
341
|
-
status: updates.status,
|
|
342
|
-
priority: updates.priority,
|
|
343
|
-
metadata: updates.metadata,
|
|
344
|
-
};
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
/**
|
|
348
|
-
* Find external node by URI in the store
|
|
349
|
-
*/
|
|
350
|
-
async function findExternalNodeByUri(uri: string, store: GraphStore): Promise<ExternalNode | null> {
|
|
351
|
-
const nodes = await store.query.nodes({
|
|
352
|
-
type: 'external',
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
for (const node of nodes) {
|
|
356
|
-
if (node.type === 'external' && (node as ExternalNode).uri === uri) {
|
|
357
|
-
return node as ExternalNode;
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
return null;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
// ============================================================================
|
|
365
|
-
// Factory Function
|
|
366
|
-
// ============================================================================
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Create a provider-aware store by wrapping an existing GraphStore
|
|
370
|
-
*/
|
|
371
|
-
export function createProviderAwareStore(
|
|
372
|
-
baseStore: GraphStore,
|
|
373
|
-
config: ProviderStoreConfig = {},
|
|
374
|
-
): ProviderAwareStore {
|
|
375
|
-
// Set up provider registry
|
|
376
|
-
const registry = config.registry ?? createProviderRegistry();
|
|
377
|
-
|
|
378
|
-
// Set up materialization manager
|
|
379
|
-
const materialization = createMaterializationManager(config.materialization);
|
|
380
|
-
|
|
381
|
-
// Default provider configuration
|
|
382
|
-
const defaultProviderName = config.defaultProvider ?? 'native';
|
|
383
|
-
|
|
384
|
-
// Auto-register native provider if not disabled
|
|
385
|
-
if (config.autoRegisterNative !== false) {
|
|
386
|
-
const nativeProvider = createNativeProvider(baseStore);
|
|
387
|
-
registry.register(nativeProvider);
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
// =========================================================================
|
|
391
|
-
// Provider Watch State
|
|
392
|
-
// =========================================================================
|
|
393
|
-
|
|
394
|
-
/** External handlers for provider change events */
|
|
395
|
-
const changeHandlers: ProviderChangeHandler[] = [];
|
|
396
|
-
|
|
397
|
-
/** Track which providers are currently being watched */
|
|
398
|
-
const watchedProviders = new Set<string>();
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Handle an inbound provider change event.
|
|
402
|
-
* Auto-refreshes materialized nodes, then notifies external handlers.
|
|
403
|
-
*/
|
|
404
|
-
async function handleProviderChange(
|
|
405
|
-
providerName: string,
|
|
406
|
-
event: ProviderChangeEvent,
|
|
407
|
-
): Promise<void> {
|
|
408
|
-
if (event.kind === 'node') {
|
|
409
|
-
await handleNodeChange(providerName, event.event);
|
|
410
|
-
}
|
|
411
|
-
// Edge events: no auto-action needed for now — consumers can
|
|
412
|
-
// react via onProviderChange handlers. In the future, the
|
|
413
|
-
// federated graph could invalidate cached edge data here.
|
|
414
|
-
|
|
415
|
-
// Notify external handlers
|
|
416
|
-
for (const handler of changeHandlers) {
|
|
417
|
-
try {
|
|
418
|
-
handler(providerName, event);
|
|
419
|
-
} catch {
|
|
420
|
-
// Don't let handler errors break the watch loop
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* Handle a node change from a provider.
|
|
427
|
-
* If the node is already materialized locally, refresh it.
|
|
428
|
-
*/
|
|
429
|
-
async function handleNodeChange(
|
|
430
|
-
_providerName: string,
|
|
431
|
-
event: ProviderNodeChangeEvent,
|
|
432
|
-
): Promise<void> {
|
|
433
|
-
// Check if we have a materialized copy of this node
|
|
434
|
-
const existing = await findExternalNodeByUri(event.uri, baseStore);
|
|
435
|
-
|
|
436
|
-
if (!existing) {
|
|
437
|
-
// Node not materialized locally — nothing to refresh.
|
|
438
|
-
// The event is still forwarded to external handlers above.
|
|
439
|
-
return;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
|
-
if (event.type === 'deleted') {
|
|
443
|
-
// Mark the local materialized node as stale
|
|
444
|
-
await baseStore.updateNode(existing.id, {
|
|
445
|
-
metadata: {
|
|
446
|
-
...existing.metadata,
|
|
447
|
-
stale: true,
|
|
448
|
-
last_refresh_at: new Date().toISOString(),
|
|
449
|
-
last_refresh_error: 'Node deleted in provider',
|
|
450
|
-
},
|
|
451
|
-
});
|
|
452
|
-
return;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
// For 'created' (re-appeared) or 'updated': refresh materialized copy
|
|
456
|
-
if (event.node) {
|
|
457
|
-
// Provider included the full node data — materialize directly
|
|
458
|
-
await materialization.materialize(event.uri, event.node, baseStore);
|
|
459
|
-
} else {
|
|
460
|
-
// No node data in event — fetch fresh from provider
|
|
461
|
-
const provider = registry.resolveProvider(event.uri);
|
|
462
|
-
if (provider) {
|
|
463
|
-
await materialization.refresh(existing, provider, baseStore);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
// Create the provider-aware store by extending the base store
|
|
469
|
-
const providerStore: ProviderAwareStore = {
|
|
470
|
-
// Spread all base store properties and methods
|
|
471
|
-
...baseStore,
|
|
472
|
-
|
|
473
|
-
// Add provider-specific properties
|
|
474
|
-
providers: registry,
|
|
475
|
-
materialization,
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Resolve a node by ID or URI
|
|
479
|
-
*/
|
|
480
|
-
async resolveNode(
|
|
481
|
-
idOrUri: string,
|
|
482
|
-
options?: ResolveOptions,
|
|
483
|
-
): Promise<Node | ProviderNode | null> {
|
|
484
|
-
return resolveNodeInternal(idOrUri, options);
|
|
485
|
-
},
|
|
486
|
-
|
|
487
|
-
/**
|
|
488
|
-
* Explicitly materialize an external node
|
|
489
|
-
*/
|
|
490
|
-
async materializeNode(uri: string): Promise<ExternalNode> {
|
|
491
|
-
// Find provider for this URI
|
|
492
|
-
const provider = registry.resolveProvider(uri);
|
|
493
|
-
if (!provider) {
|
|
494
|
-
throw new Error(`No provider found for URI: ${uri}`);
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
// Parse and fetch
|
|
498
|
-
const parsed = provider.parseUri(uri);
|
|
499
|
-
if (!parsed) {
|
|
500
|
-
throw new Error(`Invalid URI for provider: ${uri}`);
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
const providerNode = await provider.get(parsed.id);
|
|
504
|
-
if (!providerNode) {
|
|
505
|
-
throw new Error(`Node not found: ${uri}`);
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
// Materialize
|
|
509
|
-
return materialization.materialize(uri, providerNode, baseStore);
|
|
510
|
-
},
|
|
511
|
-
|
|
512
|
-
/**
|
|
513
|
-
* Refresh a materialized external node
|
|
514
|
-
*/
|
|
515
|
-
async refreshNode(id: string): Promise<ExternalNode | null> {
|
|
516
|
-
// Get the existing node
|
|
517
|
-
const node = await baseStore.getNode(id);
|
|
518
|
-
if (!node || node.type !== 'external') {
|
|
519
|
-
throw new Error(`Node not found or not external: ${id}`);
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
const externalNode = node as ExternalNode;
|
|
523
|
-
|
|
524
|
-
// Find provider
|
|
525
|
-
const provider = registry.resolveProvider(externalNode.uri);
|
|
526
|
-
if (!provider) {
|
|
527
|
-
throw new Error(`No provider found for URI: ${externalNode.uri}`);
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
// Refresh using materialization manager
|
|
531
|
-
return materialization.refresh(externalNode, provider, baseStore);
|
|
532
|
-
},
|
|
533
|
-
|
|
534
|
-
/**
|
|
535
|
-
* Start background sync
|
|
536
|
-
*/
|
|
537
|
-
startBackgroundSync(): void {
|
|
538
|
-
materialization.startBackgroundSync(baseStore, registry);
|
|
539
|
-
},
|
|
540
|
-
|
|
541
|
-
/**
|
|
542
|
-
* Stop background sync
|
|
543
|
-
*/
|
|
544
|
-
stopBackgroundSync(): void {
|
|
545
|
-
materialization.stopBackgroundSync();
|
|
546
|
-
},
|
|
547
|
-
|
|
548
|
-
/**
|
|
549
|
-
* Check if background sync is running
|
|
550
|
-
*/
|
|
551
|
-
isBackgroundSyncRunning(): boolean {
|
|
552
|
-
return materialization.isBackgroundSyncRunning();
|
|
553
|
-
},
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
* Start watching all watchable providers for changes.
|
|
557
|
-
*/
|
|
558
|
-
startProviderWatching(): void {
|
|
559
|
-
for (const provider of registry.list()) {
|
|
560
|
-
if (isWatchable(provider) && !watchedProviders.has(provider.name)) {
|
|
561
|
-
provider.startWatching((event) => {
|
|
562
|
-
void handleProviderChange(provider.name, event);
|
|
563
|
-
});
|
|
564
|
-
watchedProviders.add(provider.name);
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
},
|
|
568
|
-
|
|
569
|
-
/**
|
|
570
|
-
* Stop watching all providers for changes.
|
|
571
|
-
*/
|
|
572
|
-
stopProviderWatching(): void {
|
|
573
|
-
for (const provider of registry.list()) {
|
|
574
|
-
if (isWatchable(provider) && watchedProviders.has(provider.name)) {
|
|
575
|
-
provider.stopWatching();
|
|
576
|
-
watchedProviders.delete(provider.name);
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
},
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* Register an external handler for provider change events.
|
|
583
|
-
*/
|
|
584
|
-
onProviderChange(handler: ProviderChangeHandler): () => void {
|
|
585
|
-
changeHandlers.push(handler);
|
|
586
|
-
return () => {
|
|
587
|
-
const idx = changeHandlers.indexOf(handler);
|
|
588
|
-
if (idx >= 0) changeHandlers.splice(idx, 1);
|
|
589
|
-
};
|
|
590
|
-
},
|
|
591
|
-
|
|
592
|
-
// =========================================================================
|
|
593
|
-
// Provider-Routed CRUD (Unified Interface)
|
|
594
|
-
// =========================================================================
|
|
595
|
-
|
|
596
|
-
defaultProvider: defaultProviderName,
|
|
597
|
-
|
|
598
|
-
async providerCreate(
|
|
599
|
-
input: CreateNodeInput,
|
|
600
|
-
options?: ProviderCreateOptions,
|
|
601
|
-
): Promise<ProviderCreateResult> {
|
|
602
|
-
const targetScheme = options?.scheme ?? defaultProviderName;
|
|
603
|
-
|
|
604
|
-
// Native/local path — no provider routing needed
|
|
605
|
-
if (targetScheme === 'native' || targetScheme === 'opentasks') {
|
|
606
|
-
const node = await baseStore.createNode(input);
|
|
607
|
-
return { node, provider: 'native' };
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
// Find the target provider by name or scheme
|
|
611
|
-
const provider = registry.get(targetScheme) ?? registry.resolveProvider(`${targetScheme}://`);
|
|
612
|
-
if (!provider) {
|
|
613
|
-
throw new ProviderError('NOT_FOUND', `Unknown provider: ${targetScheme}`, targetScheme);
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
if (!provider.capabilities.write) {
|
|
617
|
-
throw new ProviderError(
|
|
618
|
-
'NOT_SUPPORTED',
|
|
619
|
-
`Provider ${provider.name} is read-only`,
|
|
620
|
-
provider.name,
|
|
621
|
-
);
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
if (!provider.capabilities.mount) {
|
|
625
|
-
throw new ProviderError(
|
|
626
|
-
'NOT_SUPPORTED',
|
|
627
|
-
`Provider ${provider.name} does not support mounting`,
|
|
628
|
-
provider.name,
|
|
629
|
-
);
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
// Create via provider, forwarding operational context
|
|
633
|
-
const providerNode = await provider.create(toProviderCreateInput(input), options?.context);
|
|
634
|
-
|
|
635
|
-
// Build canonical URI and always materialize on create
|
|
636
|
-
const uri = provider.buildUri(providerNode.id);
|
|
637
|
-
const materializedNode = await materialization.materialize(uri, providerNode, baseStore);
|
|
638
|
-
|
|
639
|
-
return {
|
|
640
|
-
node: materializedNode,
|
|
641
|
-
uri,
|
|
642
|
-
provider: provider.name,
|
|
643
|
-
};
|
|
644
|
-
},
|
|
645
|
-
|
|
646
|
-
async providerGet(idOrUri: string, options?: ProviderGetOptions): Promise<Node | null> {
|
|
647
|
-
// 1. Local ID — direct store access
|
|
648
|
-
if (isLocalId(idOrUri)) {
|
|
649
|
-
const node = await baseStore.getNode(idOrUri);
|
|
650
|
-
|
|
651
|
-
// If it's a materialized external node, check staleness
|
|
652
|
-
if (node?.type === 'external') {
|
|
653
|
-
const extNode = node as ExternalNode;
|
|
654
|
-
if (materialization.isStale(extNode)) {
|
|
655
|
-
const provider = registry.resolveProvider(extNode.uri);
|
|
656
|
-
if (provider) {
|
|
657
|
-
const refreshed = await materialization.refresh(
|
|
658
|
-
extNode,
|
|
659
|
-
provider,
|
|
660
|
-
baseStore,
|
|
661
|
-
options?.context,
|
|
662
|
-
);
|
|
663
|
-
return refreshed ?? node;
|
|
664
|
-
}
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
return node;
|
|
669
|
-
}
|
|
670
|
-
|
|
671
|
-
// 2. Provider URI — resolve through provider, always materialize
|
|
672
|
-
const result = await resolveNodeInternal(idOrUri, { materialize: true }, options?.context);
|
|
673
|
-
return result as Node | null;
|
|
674
|
-
},
|
|
675
|
-
|
|
676
|
-
async providerUpdate(
|
|
677
|
-
idOrUri: string,
|
|
678
|
-
updates: UpdateNodeInput,
|
|
679
|
-
options?: ProviderUpdateOptions,
|
|
680
|
-
): Promise<Node> {
|
|
681
|
-
// Resolve the target node and provider
|
|
682
|
-
const { node, provider: owningProvider, isExternal } = await resolveForWrite(idOrUri);
|
|
683
|
-
|
|
684
|
-
if (!isExternal || owningProvider?.name === 'native') {
|
|
685
|
-
// Local node — update directly
|
|
686
|
-
return baseStore.updateNode(node.id, updates);
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
// External node but provider not registered — error rather than silent local-only update
|
|
690
|
-
if (!owningProvider) {
|
|
691
|
-
const extNode = node as ExternalNode;
|
|
692
|
-
throw new ProviderError(
|
|
693
|
-
'NOT_FOUND',
|
|
694
|
-
`Provider not registered for external node URI: ${extNode.uri}. Cannot route update.`,
|
|
695
|
-
);
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
if (!owningProvider.capabilities.write) {
|
|
699
|
-
throw new ProviderError(
|
|
700
|
-
'NOT_SUPPORTED',
|
|
701
|
-
`Provider ${owningProvider.name} is read-only`,
|
|
702
|
-
owningProvider.name,
|
|
703
|
-
);
|
|
704
|
-
}
|
|
705
|
-
|
|
706
|
-
// Route update to external provider
|
|
707
|
-
const extNode = node as ExternalNode;
|
|
708
|
-
const parsed = owningProvider.parseUri(extNode.uri);
|
|
709
|
-
if (!parsed) {
|
|
710
|
-
throw new ProviderError(
|
|
711
|
-
'INVALID_URI',
|
|
712
|
-
`Cannot parse URI: ${extNode.uri}`,
|
|
713
|
-
owningProvider.name,
|
|
714
|
-
);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
const updatedProviderNode = await owningProvider.update(
|
|
718
|
-
parsed.id,
|
|
719
|
-
toProviderUpdateInput(updates),
|
|
720
|
-
options?.context,
|
|
721
|
-
);
|
|
722
|
-
|
|
723
|
-
// Refresh local materialized copy with provider's response
|
|
724
|
-
return materialization.materialize(
|
|
725
|
-
extNode.uri,
|
|
726
|
-
updatedProviderNode,
|
|
727
|
-
baseStore,
|
|
728
|
-
) as Promise<Node>;
|
|
729
|
-
},
|
|
730
|
-
|
|
731
|
-
async providerDelete(
|
|
732
|
-
idOrUri: string,
|
|
733
|
-
options?: DeleteOptions & { context?: ProviderOperationContext },
|
|
734
|
-
): Promise<void> {
|
|
735
|
-
// Resolve the target node and provider
|
|
736
|
-
const { node, provider: owningProvider, isExternal } = await resolveForWrite(idOrUri);
|
|
737
|
-
|
|
738
|
-
if (!isExternal || owningProvider?.name === 'native') {
|
|
739
|
-
// Local node — delete directly
|
|
740
|
-
await baseStore.deleteNode(node.id, options);
|
|
741
|
-
return;
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
// External node but provider not registered — error rather than silent local-only delete
|
|
745
|
-
if (!owningProvider) {
|
|
746
|
-
const extNode = node as ExternalNode;
|
|
747
|
-
throw new ProviderError(
|
|
748
|
-
'NOT_FOUND',
|
|
749
|
-
`Provider not registered for external node URI: ${extNode.uri}. Cannot route delete.`,
|
|
750
|
-
);
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
if (!owningProvider.capabilities.write) {
|
|
754
|
-
throw new ProviderError(
|
|
755
|
-
'NOT_SUPPORTED',
|
|
756
|
-
`Provider ${owningProvider.name} is read-only`,
|
|
757
|
-
owningProvider.name,
|
|
758
|
-
);
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
// Delete in external provider
|
|
762
|
-
const extNode = node as ExternalNode;
|
|
763
|
-
const parsed = owningProvider.parseUri(extNode.uri);
|
|
764
|
-
if (!parsed) {
|
|
765
|
-
throw new ProviderError(
|
|
766
|
-
'INVALID_URI',
|
|
767
|
-
`Cannot parse URI: ${extNode.uri}`,
|
|
768
|
-
owningProvider.name,
|
|
769
|
-
);
|
|
770
|
-
}
|
|
771
|
-
|
|
772
|
-
await owningProvider.delete(parsed.id, options?.context);
|
|
773
|
-
|
|
774
|
-
// Remove local materialized copy
|
|
775
|
-
await baseStore.deleteNode(node.id, { hard: true });
|
|
776
|
-
},
|
|
777
|
-
|
|
778
|
-
// =========================================================================
|
|
779
|
-
// Task Lifecycle (TaskManageable Trait — Federated)
|
|
780
|
-
// =========================================================================
|
|
781
|
-
|
|
782
|
-
async taskTransition(
|
|
783
|
-
idOrUri: string,
|
|
784
|
-
action: TaskAction,
|
|
785
|
-
options?: TaskTransitionOptions,
|
|
786
|
-
): Promise<TaskTransitionResult> {
|
|
787
|
-
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
788
|
-
|
|
789
|
-
const updatedNode = await provider.transitionTask(providerId, action, options?.context);
|
|
790
|
-
|
|
791
|
-
// Native provider nodes already exist in the graph store — no materialization needed
|
|
792
|
-
if (provider.name === 'native') {
|
|
793
|
-
const node = await baseStore.getNode(updatedNode.id);
|
|
794
|
-
if (!node) {
|
|
795
|
-
throw new ProviderError('NOT_FOUND', `Node not found after transition: ${updatedNode.id}`);
|
|
796
|
-
}
|
|
797
|
-
return { node, provider: provider.name, action };
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
// Materialize the result for external providers
|
|
801
|
-
const uri = provider.buildUri(updatedNode.id);
|
|
802
|
-
const materialized = await materialization.materialize(uri, updatedNode, baseStore);
|
|
803
|
-
|
|
804
|
-
return {
|
|
805
|
-
node: materialized,
|
|
806
|
-
provider: provider.name,
|
|
807
|
-
action,
|
|
808
|
-
};
|
|
809
|
-
},
|
|
810
|
-
|
|
811
|
-
async taskReady(options?: FederatedReadyTaskOptions): Promise<Node[]> {
|
|
812
|
-
const results: Node[] = [];
|
|
813
|
-
|
|
814
|
-
for (const provider of registry.list()) {
|
|
815
|
-
if (!isTaskManageable(provider)) continue;
|
|
816
|
-
if (options?.providers && !options.providers.includes(provider.name)) continue;
|
|
817
|
-
|
|
818
|
-
const readyNodes = await provider.readyTasks(
|
|
819
|
-
{
|
|
820
|
-
limit: options?.limit,
|
|
821
|
-
tags: options?.tags,
|
|
822
|
-
priority: options?.priority,
|
|
823
|
-
assignee: options?.assignee,
|
|
824
|
-
},
|
|
825
|
-
options?.context,
|
|
826
|
-
);
|
|
827
|
-
|
|
828
|
-
// Native provider nodes already exist in the graph store — retrieve directly
|
|
829
|
-
if (provider.name === 'native') {
|
|
830
|
-
for (const pNode of readyNodes) {
|
|
831
|
-
const node = await baseStore.getNode(pNode.id);
|
|
832
|
-
if (node) {
|
|
833
|
-
results.push(node);
|
|
834
|
-
}
|
|
835
|
-
}
|
|
836
|
-
continue;
|
|
837
|
-
}
|
|
838
|
-
|
|
839
|
-
// Materialize each ready task from external providers so callers get Node objects
|
|
840
|
-
for (const pNode of readyNodes) {
|
|
841
|
-
const uri = provider.buildUri(pNode.id);
|
|
842
|
-
const existing = await findExternalNodeByUri(uri, baseStore);
|
|
843
|
-
if (existing) {
|
|
844
|
-
results.push(existing);
|
|
845
|
-
} else {
|
|
846
|
-
const materialized = await materialization.materialize(uri, pNode, baseStore);
|
|
847
|
-
results.push(materialized);
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
// Apply global limit after aggregating across providers
|
|
853
|
-
if (options?.limit && results.length > options.limit) {
|
|
854
|
-
return results.slice(0, options.limit);
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
return results;
|
|
858
|
-
},
|
|
859
|
-
|
|
860
|
-
async taskAssign(
|
|
861
|
-
idOrUri: string,
|
|
862
|
-
assignee: string,
|
|
863
|
-
options?: TaskTransitionOptions,
|
|
864
|
-
): Promise<Node> {
|
|
865
|
-
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
866
|
-
|
|
867
|
-
if (!provider.taskCapabilities.supportsAssignment || !provider.assignTask) {
|
|
868
|
-
throw new ProviderError(
|
|
869
|
-
'NOT_SUPPORTED',
|
|
870
|
-
`Provider ${provider.name} does not support task assignment`,
|
|
871
|
-
provider.name,
|
|
872
|
-
);
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
const updatedNode = await provider.assignTask(providerId, assignee, options?.context);
|
|
876
|
-
|
|
877
|
-
// Native provider nodes already exist in the graph store — no materialization needed
|
|
878
|
-
if (provider.name === 'native') {
|
|
879
|
-
const node = await baseStore.getNode(updatedNode.id);
|
|
880
|
-
if (!node) {
|
|
881
|
-
throw new ProviderError('NOT_FOUND', `Node not found after assign: ${updatedNode.id}`);
|
|
882
|
-
}
|
|
883
|
-
return node;
|
|
884
|
-
}
|
|
885
|
-
|
|
886
|
-
const uri = provider.buildUri(updatedNode.id);
|
|
887
|
-
return materialization.materialize(uri, updatedNode, baseStore) as Promise<Node>;
|
|
888
|
-
},
|
|
889
|
-
|
|
890
|
-
async taskValidActions(idOrUri: string): Promise<TaskAction[]> {
|
|
891
|
-
const { provider, providerId } = await resolveTaskProvider(idOrUri);
|
|
892
|
-
|
|
893
|
-
if (provider.validActions) {
|
|
894
|
-
return provider.validActions(providerId);
|
|
895
|
-
}
|
|
896
|
-
|
|
897
|
-
// Fall back to the provider's declared capabilities
|
|
898
|
-
return provider.taskCapabilities.actions;
|
|
899
|
-
},
|
|
900
|
-
};
|
|
901
|
-
|
|
902
|
-
// ===========================================================================
|
|
903
|
-
// Internal Helper: Resolve a task-capable provider for a given ID or URI
|
|
904
|
-
// ===========================================================================
|
|
905
|
-
|
|
906
|
-
async function resolveTaskProvider(idOrUri: string): Promise<{
|
|
907
|
-
provider: Provider & import('../providers/traits/TaskManageable.js').TaskManageable;
|
|
908
|
-
providerId: string;
|
|
909
|
-
}> {
|
|
910
|
-
// If it's a local ID, check if it's an external node with a provider URI
|
|
911
|
-
if (isLocalId(idOrUri)) {
|
|
912
|
-
const node = await baseStore.getNode(idOrUri);
|
|
913
|
-
if (!node) {
|
|
914
|
-
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`);
|
|
915
|
-
}
|
|
916
|
-
if (node.type === 'external') {
|
|
917
|
-
const extNode = node as ExternalNode;
|
|
918
|
-
const provider = registry.resolveProvider(extNode.uri);
|
|
919
|
-
if (!provider) {
|
|
920
|
-
throw new ProviderError('NOT_FOUND', `No provider found for URI: ${extNode.uri}`);
|
|
921
|
-
}
|
|
922
|
-
if (!isTaskManageable(provider)) {
|
|
923
|
-
throw new ProviderError(
|
|
924
|
-
'NOT_SUPPORTED',
|
|
925
|
-
`Provider ${provider.name} does not support task operations`,
|
|
926
|
-
provider.name,
|
|
927
|
-
);
|
|
928
|
-
}
|
|
929
|
-
const parsed = provider.parseUri(extNode.uri);
|
|
930
|
-
if (!parsed) {
|
|
931
|
-
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${extNode.uri}`, provider.name);
|
|
932
|
-
}
|
|
933
|
-
return { provider, providerId: parsed.id };
|
|
934
|
-
}
|
|
935
|
-
// Local non-external node — check native provider
|
|
936
|
-
const nativeProvider = registry.get('native');
|
|
937
|
-
if (!nativeProvider || !isTaskManageable(nativeProvider)) {
|
|
938
|
-
throw new ProviderError(
|
|
939
|
-
'NOT_SUPPORTED',
|
|
940
|
-
'Native provider does not support task operations',
|
|
941
|
-
);
|
|
942
|
-
}
|
|
943
|
-
return {
|
|
944
|
-
provider: nativeProvider as Provider &
|
|
945
|
-
import('../providers/traits/TaskManageable.js').TaskManageable,
|
|
946
|
-
providerId: idOrUri,
|
|
947
|
-
};
|
|
948
|
-
}
|
|
949
|
-
|
|
950
|
-
// Provider URI
|
|
951
|
-
const provider = registry.resolveProvider(idOrUri);
|
|
952
|
-
if (!provider) {
|
|
953
|
-
throw new ProviderError('NOT_FOUND', `No provider found for: ${idOrUri}`);
|
|
954
|
-
}
|
|
955
|
-
if (!isTaskManageable(provider)) {
|
|
956
|
-
throw new ProviderError(
|
|
957
|
-
'NOT_SUPPORTED',
|
|
958
|
-
`Provider ${provider.name} does not support task operations`,
|
|
959
|
-
provider.name,
|
|
960
|
-
);
|
|
961
|
-
}
|
|
962
|
-
const parsed = provider.parseUri(idOrUri);
|
|
963
|
-
if (!parsed) {
|
|
964
|
-
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${idOrUri}`, provider.name);
|
|
965
|
-
}
|
|
966
|
-
return { provider, providerId: parsed.id };
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
// ===========================================================================
|
|
970
|
-
// Internal Helper: Resolve any node by ID or URI (used by resolveNode and providerGet)
|
|
971
|
-
// ===========================================================================
|
|
972
|
-
|
|
973
|
-
async function resolveNodeInternal(
|
|
974
|
-
idOrUri: string,
|
|
975
|
-
options?: ResolveOptions,
|
|
976
|
-
context?: ProviderOperationContext,
|
|
977
|
-
): Promise<Node | ProviderNode | null> {
|
|
978
|
-
// 1. Check if local ID - use existing getNode
|
|
979
|
-
if (isLocalId(idOrUri)) {
|
|
980
|
-
return baseStore.getNode(idOrUri);
|
|
981
|
-
}
|
|
982
|
-
|
|
983
|
-
// 2. Check for cached materialized node (unless refresh requested)
|
|
984
|
-
if (!options?.refresh) {
|
|
985
|
-
const existing = await findExternalNodeByUri(idOrUri, baseStore);
|
|
986
|
-
if (existing && !materialization.isStale(existing)) {
|
|
987
|
-
return existing;
|
|
988
|
-
}
|
|
989
|
-
}
|
|
990
|
-
|
|
991
|
-
// 3. Find provider for this URI
|
|
992
|
-
const provider = registry.resolveProvider(idOrUri);
|
|
993
|
-
if (!provider) {
|
|
994
|
-
return null;
|
|
995
|
-
}
|
|
996
|
-
|
|
997
|
-
// 4. Parse URI and fetch from provider
|
|
998
|
-
const parsed = provider.parseUri(idOrUri);
|
|
999
|
-
if (!parsed) {
|
|
1000
|
-
return null;
|
|
1001
|
-
}
|
|
1002
|
-
|
|
1003
|
-
const providerNode = await provider.get(parsed.id, context);
|
|
1004
|
-
if (!providerNode) {
|
|
1005
|
-
return null;
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
// 5. Materialize if requested or per strategy
|
|
1009
|
-
const shouldMaterialize = materialization.shouldMaterialize(idOrUri, {
|
|
1010
|
-
accessType: 'resolve',
|
|
1011
|
-
explicit: options?.materialize,
|
|
1012
|
-
});
|
|
1013
|
-
|
|
1014
|
-
if (shouldMaterialize) {
|
|
1015
|
-
return materialization.materialize(idOrUri, providerNode, baseStore);
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
// Return provider node directly
|
|
1019
|
-
return providerNode as unknown as Node;
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
// ===========================================================================
|
|
1023
|
-
// Internal Helper: Resolve a node + its owning provider for write operations
|
|
1024
|
-
// ===========================================================================
|
|
1025
|
-
|
|
1026
|
-
async function resolveForWrite(idOrUri: string): Promise<{
|
|
1027
|
-
node: Node;
|
|
1028
|
-
provider: Provider | null;
|
|
1029
|
-
isExternal: boolean;
|
|
1030
|
-
}> {
|
|
1031
|
-
// Case 1: Provider URI (e.g., sudocode://proj/i-456)
|
|
1032
|
-
if (!isLocalId(idOrUri)) {
|
|
1033
|
-
const provider = registry.resolveProvider(idOrUri);
|
|
1034
|
-
if (!provider) {
|
|
1035
|
-
throw new ProviderError('NOT_FOUND', `No provider found for: ${idOrUri}`);
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
// Check if we have a materialized copy
|
|
1039
|
-
const existing = await findExternalNodeByUri(idOrUri, baseStore);
|
|
1040
|
-
if (existing) {
|
|
1041
|
-
return { node: existing, provider, isExternal: true };
|
|
1042
|
-
}
|
|
1043
|
-
|
|
1044
|
-
// No local copy — materialize first so we have a node to return
|
|
1045
|
-
const parsed = provider.parseUri(idOrUri);
|
|
1046
|
-
if (!parsed) {
|
|
1047
|
-
throw new ProviderError('INVALID_URI', `Cannot parse URI: ${idOrUri}`, provider.name);
|
|
1048
|
-
}
|
|
1049
|
-
|
|
1050
|
-
const providerNode = await provider.get(parsed.id);
|
|
1051
|
-
if (!providerNode) {
|
|
1052
|
-
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`, provider.name);
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
const materialized = await materialization.materialize(idOrUri, providerNode, baseStore);
|
|
1056
|
-
return { node: materialized, provider, isExternal: true };
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
// Case 2: Local ID (s-abc1, i-def2, x-ghi3)
|
|
1060
|
-
const node = await baseStore.getNode(idOrUri);
|
|
1061
|
-
if (!node) {
|
|
1062
|
-
throw new ProviderError('NOT_FOUND', `Node not found: ${idOrUri}`);
|
|
1063
|
-
}
|
|
1064
|
-
|
|
1065
|
-
// Check if it's a materialized external node
|
|
1066
|
-
if (node.type === 'external') {
|
|
1067
|
-
const extNode = node as ExternalNode;
|
|
1068
|
-
const provider = registry.resolveProvider(extNode.uri);
|
|
1069
|
-
return { node, provider, isExternal: true };
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
// Pure local node
|
|
1073
|
-
return { node, provider: null, isExternal: false };
|
|
1074
|
-
}
|
|
1075
|
-
|
|
1076
|
-
return providerStore;
|
|
1077
|
-
}
|