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,1225 +0,0 @@
|
|
|
1
|
-
# OpenTeams Visual Team Editor — Design Specification
|
|
2
|
-
|
|
3
|
-
## 1. Overview
|
|
4
|
-
|
|
5
|
-
A standalone browser-based visual editor for designing, visualizing, and exporting OpenTeams team configurations. Users compose team topologies, communication patterns, role definitions, and signal flows on an interactive graph canvas, then export valid `team.yaml` + `roles/*.yaml` files.
|
|
6
|
-
|
|
7
|
-
**Reference implementation**: The [self-driving-repo editor](https://github.com/alexngai/self-driving-repo/tree/main/editor) — a React Flow-based visual editor for DAG agent configs. Our editor adapts its architecture to handle OpenTeams' richer multi-layer relationship model (topology, communication, spawn rules, role inheritance).
|
|
8
|
-
|
|
9
|
-
### Goals
|
|
10
|
-
|
|
11
|
-
- Visualize complex inter-role relationships that are hard to reason about in raw YAML
|
|
12
|
-
- Provide a bidirectional editor: import existing templates, modify visually, export valid YAML
|
|
13
|
-
- Real-time validation with actionable error/warning feedback
|
|
14
|
-
- Support all existing templates (gsd, bmad-method) as proof of generalization
|
|
15
|
-
- Inline markdown editing for role prompts
|
|
16
|
-
|
|
17
|
-
### Non-Goals (v1)
|
|
18
|
-
|
|
19
|
-
- Runtime monitoring (live signal events, agent status) — this is a config editor, not a dashboard
|
|
20
|
-
- Direct filesystem write-back — export produces YAML for copy/download
|
|
21
|
-
- MCP server configuration UI — file path references only for v1
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 2. Architecture
|
|
26
|
-
|
|
27
|
-
### Tech Stack
|
|
28
|
-
|
|
29
|
-
| Dependency | Version | Purpose |
|
|
30
|
-
|---|---|---|
|
|
31
|
-
| React | 19.x | UI framework |
|
|
32
|
-
| @xyflow/react | 12.x | Graph canvas (React Flow) |
|
|
33
|
-
| Zustand | 5.x | State management (5 stores) |
|
|
34
|
-
| @dagrejs/dagre | 1.x | Hierarchical auto-layout |
|
|
35
|
-
| js-yaml | 4.x | YAML serialization |
|
|
36
|
-
| ajv | 8.x | JSON Schema validation (reuse existing schemas) |
|
|
37
|
-
| Vite | 6.x | Build tooling |
|
|
38
|
-
| Tailwind CSS | 4.x | Styling |
|
|
39
|
-
| TypeScript | 5.x | Type safety (strict mode) |
|
|
40
|
-
|
|
41
|
-
### Project Structure
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
editor/
|
|
45
|
-
├── src/
|
|
46
|
-
│ ├── App.tsx # Root layout + ReactFlowProvider
|
|
47
|
-
│ ├── main.tsx # Vite entry point
|
|
48
|
-
│ ├── index.css # Tailwind imports + CSS variables
|
|
49
|
-
│ │
|
|
50
|
-
│ ├── types/
|
|
51
|
-
│ │ └── editor.ts # Canvas-specific types (nodes, edges, data)
|
|
52
|
-
│ │
|
|
53
|
-
│ ├── components/
|
|
54
|
-
│ │ ├── canvas/
|
|
55
|
-
│ │ │ ├── Canvas.tsx # ReactFlow container, drag-drop, edge creation
|
|
56
|
-
│ │ │ └── QuickAddMenu.tsx # Double-click context menu
|
|
57
|
-
│ │ │
|
|
58
|
-
│ │ ├── nodes/
|
|
59
|
-
│ │ │ ├── RoleNode.tsx # Role node with capabilities, model, signal summary
|
|
60
|
-
│ │ │ ├── ChannelNode.tsx # Channel node with signal list
|
|
61
|
-
│ │ │ └── node-styles.ts # Color constants, topology-based styling
|
|
62
|
-
│ │ │
|
|
63
|
-
│ │ ├── edges/
|
|
64
|
-
│ │ │ ├── PeerRouteEdge.tsx # Bold direct route with signal labels
|
|
65
|
-
│ │ │ ├── SignalFlowEdge.tsx # Emission/subscription through channels
|
|
66
|
-
│ │ │ └── SpawnEdge.tsx # Dashed "can spawn" relationship
|
|
67
|
-
│ │ │
|
|
68
|
-
│ │ ├── inspector/
|
|
69
|
-
│ │ │ ├── Inspector.tsx # Dispatcher (role/channel/edge/team)
|
|
70
|
-
│ │ │ ├── RoleInspector.tsx # Tabs: Identity, Communication, Capabilities
|
|
71
|
-
│ │ │ ├── ChannelInspector.tsx # Signal list editor, emitter/subscriber summary
|
|
72
|
-
│ │ │ ├── EdgeInspector.tsx # Signal/route details (read-only for derived)
|
|
73
|
-
│ │ │ ├── TeamInspector.tsx # Name, enforcement, extension metadata
|
|
74
|
-
│ │ │ └── PromptEditor.tsx # Inline markdown editor for role prompts
|
|
75
|
-
│ │ │
|
|
76
|
-
│ │ ├── sidebar/
|
|
77
|
-
│ │ │ ├── Sidebar.tsx # Block palette + config tree
|
|
78
|
-
│ │ │ ├── ConfigTree.tsx # Hierarchical template view
|
|
79
|
-
│ │ │ └── TemplateGallery.tsx # Load from bundled example templates
|
|
80
|
-
│ │ │
|
|
81
|
-
│ │ ├── toolbar/
|
|
82
|
-
│ │ │ ├── Toolbar.tsx # Top action bar
|
|
83
|
-
│ │ │ ├── LayerToggle.tsx # Toggle visibility of edge types
|
|
84
|
-
│ │ │ ├── ValidationBar.tsx # Real-time validation status
|
|
85
|
-
│ │ │ ├── ImportModal.tsx # YAML import dialog (paste or upload)
|
|
86
|
-
│ │ │ └── ExportModal.tsx # Multi-file YAML preview + copy/download
|
|
87
|
-
│ │ │
|
|
88
|
-
│ │ └── shared/
|
|
89
|
-
│ │ ├── CapabilityInput.tsx # Tag-style capability editor
|
|
90
|
-
│ │ ├── SignalPicker.tsx # Autocomplete for signal names
|
|
91
|
-
│ │ ├── ArrayInput.tsx # Generic multi-value input
|
|
92
|
-
│ │ └── ThemeToggle.tsx # Dark/light mode switch
|
|
93
|
-
│ │
|
|
94
|
-
│ ├── stores/
|
|
95
|
-
│ │ ├── canvas-store.ts # Nodes, edges, selection state
|
|
96
|
-
│ │ ├── config-store.ts # Roles, channels, team metadata, prompts
|
|
97
|
-
│ │ ├── history-store.ts # Undo/redo state snapshots
|
|
98
|
-
│ │ ├── validation-store.ts # Errors/warnings per node
|
|
99
|
-
│ │ └── ui-store.ts # Panel visibility, active layers
|
|
100
|
-
│ │
|
|
101
|
-
│ ├── lib/
|
|
102
|
-
│ │ ├── serializer.ts # Config <-> Canvas bidirectional conversion
|
|
103
|
-
│ │ ├── auto-layout.ts # Dagre hierarchical layout
|
|
104
|
-
│ │ ├── validator.ts # Schema + semantic validation (browser-safe)
|
|
105
|
-
│ │ ├── compiler.ts # Canvas -> multi-file YAML output
|
|
106
|
-
│ │ └── signal-catalog.ts # Known signal name suggestions
|
|
107
|
-
│ │
|
|
108
|
-
│ └── hooks/
|
|
109
|
-
│ ├── use-validation.ts # Debounced validation on state change
|
|
110
|
-
│ ├── use-keyboard.ts # Ctrl+Z/Y, Delete, Ctrl+I shortcuts
|
|
111
|
-
│ └── use-autosave.ts # localStorage persistence
|
|
112
|
-
│
|
|
113
|
-
├── tests/
|
|
114
|
-
│ ├── serializer.test.ts # Round-trip conversion tests
|
|
115
|
-
│ ├── validator.test.ts # Validation rule tests
|
|
116
|
-
│ └── compiler.test.ts # YAML output tests
|
|
117
|
-
│
|
|
118
|
-
├── index.html
|
|
119
|
-
├── package.json
|
|
120
|
-
├── vite.config.ts
|
|
121
|
-
├── tsconfig.json
|
|
122
|
-
└── tailwind.config.ts
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### Relationship to Main Package
|
|
126
|
-
|
|
127
|
-
The editor is a **standalone Vite app** in the `editor/` directory. It imports OpenTeams types via a path alias:
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
// vite.config.ts
|
|
131
|
-
resolve: {
|
|
132
|
-
alias: {
|
|
133
|
-
'@openteams': path.resolve(__dirname, '../src'),
|
|
134
|
-
},
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
This gives the editor access to `TeamManifest`, `CommunicationConfig`, `RoleDefinition`, etc. from `src/template/types.ts` without duplicating type definitions. The editor does not import any Node.js-specific code (database, services, spawner).
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
## 3. Data Model
|
|
143
|
-
|
|
144
|
-
### 3.1 Editor Types
|
|
145
|
-
|
|
146
|
-
```typescript
|
|
147
|
-
// types/editor.ts
|
|
148
|
-
|
|
149
|
-
// ── Node Data ──────────────────────────────────────────
|
|
150
|
-
|
|
151
|
-
interface RoleNodeData {
|
|
152
|
-
kind: 'role';
|
|
153
|
-
roleName: string; // Key in roles list
|
|
154
|
-
displayName: string; // From role definition
|
|
155
|
-
description: string;
|
|
156
|
-
topologyPosition: 'root' | 'companion' | 'spawned';
|
|
157
|
-
model?: string; // From topology node config
|
|
158
|
-
capabilities: string[];
|
|
159
|
-
extends?: string; // Parent role name
|
|
160
|
-
emits: string[]; // Signal names this role emits
|
|
161
|
-
subscribesTo: SubscriptionSummary[]; // Channel+signal subscriptions
|
|
162
|
-
peerRoutesOut: number; // Count of outgoing peer routes
|
|
163
|
-
peerRoutesIn: number; // Count of incoming peer routes
|
|
164
|
-
canSpawn: string[]; // Roles this role can spawn
|
|
165
|
-
errors: string[]; // Validation errors
|
|
166
|
-
warnings: string[]; // Validation warnings
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
interface SubscriptionSummary {
|
|
170
|
-
channel: string;
|
|
171
|
-
signals: string[] | 'all'; // 'all' when no filter
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
interface ChannelNodeData {
|
|
175
|
-
kind: 'channel';
|
|
176
|
-
channelName: string;
|
|
177
|
-
description: string;
|
|
178
|
-
signals: string[];
|
|
179
|
-
emitterCount: number; // Derived: how many roles emit to this
|
|
180
|
-
subscriberCount: number; // Derived: how many roles subscribe
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
// ── Edge Data ──────────────────────────────────────────
|
|
184
|
-
|
|
185
|
-
interface PeerRouteEdgeData {
|
|
186
|
-
kind: 'peer-route';
|
|
187
|
-
signals: string[]; // Signals carried on this route
|
|
188
|
-
via: 'direct' | 'topic' | 'scope';
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
interface SignalFlowEdgeData {
|
|
192
|
-
kind: 'signal-flow';
|
|
193
|
-
direction: 'emission' | 'subscription';
|
|
194
|
-
channel: string;
|
|
195
|
-
signals: string[]; // Specific signals, or all if empty
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
interface SpawnEdgeData {
|
|
199
|
-
kind: 'spawn';
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// ── Unions ─────────────────────────────────────────────
|
|
203
|
-
|
|
204
|
-
type EditorNode = Node<RoleNodeData, 'role'> | Node<ChannelNodeData, 'channel'>;
|
|
205
|
-
type EditorEdge =
|
|
206
|
-
| Edge<PeerRouteEdgeData>
|
|
207
|
-
| Edge<SignalFlowEdgeData>
|
|
208
|
-
| Edge<SpawnEdgeData>;
|
|
209
|
-
|
|
210
|
-
// ── Canvas State ───────────────────────────────────────
|
|
211
|
-
|
|
212
|
-
interface CanvasState {
|
|
213
|
-
nodes: EditorNode[];
|
|
214
|
-
edges: EditorEdge[];
|
|
215
|
-
viewport: { x: number; y: number; zoom: number };
|
|
216
|
-
}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### 3.2 Config Store Types
|
|
220
|
-
|
|
221
|
-
```typescript
|
|
222
|
-
// Stored separately from canvas (not embedded in node data)
|
|
223
|
-
|
|
224
|
-
interface EditorRoleConfig {
|
|
225
|
-
name: string;
|
|
226
|
-
displayName: string;
|
|
227
|
-
description: string;
|
|
228
|
-
extends?: string;
|
|
229
|
-
capabilities: string[];
|
|
230
|
-
promptContent?: string; // Inline markdown (primary prompt)
|
|
231
|
-
additionalPrompts?: { name: string; content: string }[];
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
interface EditorTeamConfig {
|
|
235
|
-
name: string;
|
|
236
|
-
description: string;
|
|
237
|
-
version: 1;
|
|
238
|
-
enforcement: 'strict' | 'permissive' | 'audit';
|
|
239
|
-
extensions: Record<string, unknown>; // gsd:, bmad:, etc.
|
|
240
|
-
}
|
|
241
|
-
```
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
|
-
## 4. Visual Design
|
|
246
|
-
|
|
247
|
-
### 4.1 Layout
|
|
248
|
-
|
|
249
|
-
```
|
|
250
|
-
┌──────────────────────────────────────────────────────────────────┐
|
|
251
|
-
│ Toolbar │
|
|
252
|
-
│ [=] New Import Export | Auto Layout | Undo Redo | [?] │
|
|
253
|
-
│ Layer: [Peer Routes ✓] [Channels ✓] [Spawn Rules] [Inheritance] │
|
|
254
|
-
├────────────┬─────────────────────────────────┬───────────────────┤
|
|
255
|
-
│ │ │ │
|
|
256
|
-
│ Sidebar │ Canvas │ Inspector │
|
|
257
|
-
│ (240px) │ (React Flow) │ (340px) │
|
|
258
|
-
│ │ │ │
|
|
259
|
-
│ Blocks │ ┌──────────┐ ┌──────────┐ │ [Role Inspector] │
|
|
260
|
-
│ ──────── │ │ research │───│ roadmap │ │ │
|
|
261
|
-
│ ● Role │ │ -synth. │ │ -per │ │ Identity │
|
|
262
|
-
│ ◆ Channel │ └──────────┘ └──────────┘ │ Communication │
|
|
263
|
-
│ │ │ │ │ Capabilities │
|
|
264
|
-
│ Config │ ┌────┴────┐ ┌────┴────┐ │ Prompts │
|
|
265
|
-
│ ──────── │ │ planner │◄──│ plan- │ │ │
|
|
266
|
-
│ Tree view │ │ │──►│ checker │ │ │
|
|
267
|
-
│ │ └─────────┘ └─────────┘ │ │
|
|
268
|
-
│ │ │ │
|
|
269
|
-
│ Gallery │ Background grid + minimap │ │
|
|
270
|
-
│ ──────── │ Controls (zoom/fit) │ │
|
|
271
|
-
│ Templates │ │ │
|
|
272
|
-
│ │ │ │
|
|
273
|
-
├────────────┴─────────────────────────────────┴───────────────────┤
|
|
274
|
-
│ Validation Bar: ✓ 12 roles, 4 channels, 0 errors, 2 warnings │
|
|
275
|
-
└──────────────────────────────────────────────────────────────────┘
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### 4.2 Node Types
|
|
279
|
-
|
|
280
|
-
#### RoleNode
|
|
281
|
-
|
|
282
|
-
```
|
|
283
|
-
┌─────────────────────────────────────┐
|
|
284
|
-
│ ★ orchestrator opus │ ← topology badge + model
|
|
285
|
-
│ GSD Orchestrator │ ← display_name (muted)
|
|
286
|
-
├─────────────────────────────────────┤
|
|
287
|
-
│ command-routing · wave-orch. · +3 │ ← capabilities (truncated)
|
|
288
|
-
├─────────────────────────────────────┤
|
|
289
|
-
│ ▲ emits 3 ▼ subs 4 → routes 2│ ← signal summary
|
|
290
|
-
└─────────────────────────────────────┘
|
|
291
|
-
● ● ← handles (left=target, right=source)
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
**Topology-based styling:**
|
|
295
|
-
|
|
296
|
-
| Position | Border | Badge | Default Color |
|
|
297
|
-
|---|---|---|---|
|
|
298
|
-
| root | 2px solid | ★ | Blue (#3b82f6) |
|
|
299
|
-
| companion | 2px solid | ◆ | Teal (#14b8a6) |
|
|
300
|
-
| spawned | 1px dashed | (none) | Gray (#6b7280) |
|
|
301
|
-
|
|
302
|
-
**State-based border overrides:**
|
|
303
|
-
- Validation errors: red border
|
|
304
|
-
- Validation warnings: yellow border
|
|
305
|
-
- Selected: amber/orange border
|
|
306
|
-
|
|
307
|
-
#### ChannelNode
|
|
308
|
-
|
|
309
|
-
```
|
|
310
|
-
┌───────────────────────────────┐
|
|
311
|
-
│ ◆ planning_events │
|
|
312
|
-
│ "Planning and research..." │
|
|
313
|
-
├───────────────────────────────┤
|
|
314
|
-
│ RESEARCH_COMPLETE │
|
|
315
|
-
│ ROADMAP_READY │
|
|
316
|
-
│ PLAN_READY │
|
|
317
|
-
│ PLAN_VALIDATED │
|
|
318
|
-
│ PLAN_REJECTED │
|
|
319
|
-
├───────────────────────────────┤
|
|
320
|
-
│ 3 emitters · 4 subscribers │
|
|
321
|
-
└───────────────────────────────┘
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
**Styling:** Purple (#8b5cf6) border, smaller than role nodes. Rounded corners.
|
|
325
|
-
|
|
326
|
-
### 4.3 Edge Types
|
|
327
|
-
|
|
328
|
-
| Edge | Style | When Visible | Label |
|
|
329
|
-
|---|---|---|---|
|
|
330
|
-
| **PeerRouteEdge** | Bold (2.5px), colored (#f59e0b amber) | Layer: Peer Routes | Signal names |
|
|
331
|
-
| **SignalFlowEdge** | Medium (1.5px), muted (#6b7280) | Layer: Channels | Channel name |
|
|
332
|
-
| **SpawnEdge** | Thin dashed (1px), light gray | Layer: Spawn Rules | "can spawn" |
|
|
333
|
-
|
|
334
|
-
All edges use Bezier curves with invisible wider hit areas (16px) for hover/selection.
|
|
335
|
-
|
|
336
|
-
**PeerRouteEdge** is the highest-priority visual element — these represent the actual handoff patterns that drive workflow (e.g., `planner ↔ plan-checker` loop, `research-synthesizer → roadmapper` handoff).
|
|
337
|
-
|
|
338
|
-
**SignalFlowEdge** connects roles to/from channel nodes. These are medium priority — they show the pub/sub topology.
|
|
339
|
-
|
|
340
|
-
**SpawnEdge** is lowest priority and off by default — spawn rules are important for config but less relevant for understanding communication flow.
|
|
341
|
-
|
|
342
|
-
### 4.4 Layer System
|
|
343
|
-
|
|
344
|
-
The toolbar contains toggle buttons that control edge visibility:
|
|
345
|
-
|
|
346
|
-
| Layer | Default | Controls |
|
|
347
|
-
|---|---|---|
|
|
348
|
-
| Peer Routes | **ON** | PeerRouteEdge visibility |
|
|
349
|
-
| Channels | **ON** | ChannelNode + SignalFlowEdge visibility |
|
|
350
|
-
| Spawn Rules | OFF | SpawnEdge visibility |
|
|
351
|
-
| Inheritance | OFF | Dashed edge for `extends` relationships |
|
|
352
|
-
|
|
353
|
-
When **Channels** layer is OFF, channel nodes are hidden. Signal flow information is still available in the role inspector.
|
|
354
|
-
|
|
355
|
-
Layer state is stored in `ui-store` and persisted via autosave.
|
|
356
|
-
|
|
357
|
-
---
|
|
358
|
-
|
|
359
|
-
## 5. Stores
|
|
360
|
-
|
|
361
|
-
### 5.1 Canvas Store (`canvas-store.ts`)
|
|
362
|
-
|
|
363
|
-
```typescript
|
|
364
|
-
interface CanvasStore {
|
|
365
|
-
// State
|
|
366
|
-
nodes: EditorNode[];
|
|
367
|
-
edges: EditorEdge[];
|
|
368
|
-
selectedNodeId: string | null;
|
|
369
|
-
selectedEdgeId: string | null;
|
|
370
|
-
|
|
371
|
-
// ReactFlow callbacks
|
|
372
|
-
onNodesChange: OnNodesChange<EditorNode>;
|
|
373
|
-
onEdgesChange: OnEdgesChange<EditorEdge>;
|
|
374
|
-
|
|
375
|
-
// Actions
|
|
376
|
-
setSelection(nodeId: string | null, edgeId: string | null): void;
|
|
377
|
-
addNode(node: EditorNode): void;
|
|
378
|
-
removeNode(nodeId: string): void;
|
|
379
|
-
addEdge(edge: EditorEdge): void;
|
|
380
|
-
removeEdge(edgeId: string): void;
|
|
381
|
-
updateNodeData(nodeId: string, data: Partial<RoleNodeData | ChannelNodeData>): void;
|
|
382
|
-
|
|
383
|
-
// Serialization
|
|
384
|
-
loadFromConfig(manifest: TeamManifest, roles: Map<string, RoleDefinition>): void;
|
|
385
|
-
applyAutoLayout(): void;
|
|
386
|
-
}
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
### 5.2 Config Store (`config-store.ts`)
|
|
390
|
-
|
|
391
|
-
```typescript
|
|
392
|
-
interface ConfigStore {
|
|
393
|
-
// State
|
|
394
|
-
team: EditorTeamConfig;
|
|
395
|
-
roles: Map<string, EditorRoleConfig>;
|
|
396
|
-
channels: Record<string, ChannelDefinition>;
|
|
397
|
-
subscriptions: Record<string, SubscriptionEntry[]>;
|
|
398
|
-
emissions: Record<string, string[]>;
|
|
399
|
-
peerRoutes: PeerRoute[];
|
|
400
|
-
spawnRules: Record<string, string[]>;
|
|
401
|
-
topologyRoot: string; // Role name of root
|
|
402
|
-
topologyCompanions: string[]; // Role names of companions
|
|
403
|
-
|
|
404
|
-
// Actions
|
|
405
|
-
setTeam(team: Partial<EditorTeamConfig>): void;
|
|
406
|
-
setRole(name: string, role: EditorRoleConfig): void;
|
|
407
|
-
removeRole(name: string): void;
|
|
408
|
-
renameRole(oldName: string, newName: string): void;
|
|
409
|
-
setChannel(name: string, channel: ChannelDefinition): void;
|
|
410
|
-
removeChannel(name: string): void;
|
|
411
|
-
setSubscriptions(role: string, subs: SubscriptionEntry[]): void;
|
|
412
|
-
setEmissions(role: string, signals: string[]): void;
|
|
413
|
-
addPeerRoute(route: PeerRoute): void;
|
|
414
|
-
removePeerRoute(index: number): void;
|
|
415
|
-
setSpawnRules(role: string, canSpawn: string[]): void;
|
|
416
|
-
setTopologyRoot(role: string): void;
|
|
417
|
-
setTopologyCompanions(roles: string[]): void;
|
|
418
|
-
|
|
419
|
-
// Serialization
|
|
420
|
-
loadFromConfig(manifest: TeamManifest, roles: Map<string, RoleDefinition>): void;
|
|
421
|
-
toManifest(): TeamManifest;
|
|
422
|
-
toRoleDefinitions(): Map<string, RoleDefinition>;
|
|
423
|
-
}
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
### 5.3 History Store (`history-store.ts`)
|
|
427
|
-
|
|
428
|
-
```typescript
|
|
429
|
-
interface HistoryStore {
|
|
430
|
-
undoStack: Snapshot[]; // Max 50
|
|
431
|
-
redoStack: Snapshot[];
|
|
432
|
-
pushSnapshot(): void; // Deep-clone canvas + config stores
|
|
433
|
-
undo(): void;
|
|
434
|
-
redo(): void;
|
|
435
|
-
canUndo(): boolean;
|
|
436
|
-
canRedo(): boolean;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
interface Snapshot {
|
|
440
|
-
canvas: { nodes: EditorNode[]; edges: EditorEdge[] };
|
|
441
|
-
config: { /* all config-store fields */ };
|
|
442
|
-
}
|
|
443
|
-
```
|
|
444
|
-
|
|
445
|
-
### 5.4 Validation Store (`validation-store.ts`)
|
|
446
|
-
|
|
447
|
-
```typescript
|
|
448
|
-
interface ValidationStore {
|
|
449
|
-
errors: ValidationIssue[];
|
|
450
|
-
warnings: ValidationIssue[];
|
|
451
|
-
isValidating: boolean;
|
|
452
|
-
setResults(errors: ValidationIssue[], warnings: ValidationIssue[]): void;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
interface ValidationIssue {
|
|
456
|
-
path: string; // e.g. "communication.emissions.planner"
|
|
457
|
-
message: string;
|
|
458
|
-
severity: 'error' | 'warning';
|
|
459
|
-
nodeId?: string; // For highlighting on canvas
|
|
460
|
-
}
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### 5.5 UI Store (`ui-store.ts`)
|
|
464
|
-
|
|
465
|
-
```typescript
|
|
466
|
-
interface UIStore {
|
|
467
|
-
sidebarOpen: boolean;
|
|
468
|
-
inspectorOpen: boolean;
|
|
469
|
-
importModalOpen: boolean;
|
|
470
|
-
exportModalOpen: boolean;
|
|
471
|
-
layers: {
|
|
472
|
-
peerRoutes: boolean; // default: true
|
|
473
|
-
channels: boolean; // default: true
|
|
474
|
-
spawnRules: boolean; // default: false
|
|
475
|
-
inheritance: boolean; // default: false
|
|
476
|
-
};
|
|
477
|
-
toggleSidebar(): void;
|
|
478
|
-
toggleInspector(): void;
|
|
479
|
-
toggleLayer(layer: keyof UIStore['layers']): void;
|
|
480
|
-
}
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
---
|
|
484
|
-
|
|
485
|
-
## 6. Serialization
|
|
486
|
-
|
|
487
|
-
### 6.1 Import: YAML -> Canvas
|
|
488
|
-
|
|
489
|
-
`serializer.ts: configToCanvas(manifest, roleDefinitions)`
|
|
490
|
-
|
|
491
|
-
**Input:** `TeamManifest` (parsed team.yaml) + `Map<string, RoleDefinition>` (parsed roles/*.yaml)
|
|
492
|
-
|
|
493
|
-
**Algorithm:**
|
|
494
|
-
|
|
495
|
-
```
|
|
496
|
-
1. Create RoleNodes
|
|
497
|
-
For each role in manifest.roles:
|
|
498
|
-
a. Look up RoleDefinition (if exists)
|
|
499
|
-
b. Determine topology position:
|
|
500
|
-
- manifest.topology.root.role → 'root'
|
|
501
|
-
- manifest.topology.companions[].role → 'companion'
|
|
502
|
-
- else → 'spawned'
|
|
503
|
-
c. Extract model from topology node config (if exists)
|
|
504
|
-
d. Look up emissions for this role
|
|
505
|
-
e. Look up subscriptions for this role
|
|
506
|
-
f. Count peer routes from/to this role
|
|
507
|
-
g. Look up spawn rules for this role
|
|
508
|
-
h. Create EditorNode with RoleNodeData
|
|
509
|
-
|
|
510
|
-
2. Create ChannelNodes
|
|
511
|
-
For each channel in manifest.communication.channels:
|
|
512
|
-
a. Count emitters (roles that emit any of this channel's signals)
|
|
513
|
-
b. Count subscribers (roles with subscriptions to this channel)
|
|
514
|
-
c. Create EditorNode with ChannelNodeData
|
|
515
|
-
|
|
516
|
-
3. Create PeerRouteEdges
|
|
517
|
-
For each route in manifest.communication.routing.peers:
|
|
518
|
-
a. Create edge: source=role-{from}, target=role-{to}
|
|
519
|
-
b. Data: signals, via
|
|
520
|
-
|
|
521
|
-
4. Create SignalFlowEdges
|
|
522
|
-
For each role in emissions:
|
|
523
|
-
For each signal the role emits:
|
|
524
|
-
a. Find which channel contains this signal
|
|
525
|
-
b. Create edge: source=role-{role}, target=channel-{channel}
|
|
526
|
-
c. Data: direction='emission', channel, signals
|
|
527
|
-
For each role in subscriptions:
|
|
528
|
-
For each subscription entry:
|
|
529
|
-
a. Create edge: source=channel-{channel}, target=role-{role}
|
|
530
|
-
b. Data: direction='subscription', channel, signals (or all)
|
|
531
|
-
|
|
532
|
-
5. Create SpawnEdges
|
|
533
|
-
For each role in spawn_rules:
|
|
534
|
-
For each target in spawn_rules[role]:
|
|
535
|
-
a. Create edge: source=role-{role}, target=role-{target}
|
|
536
|
-
b. Data: kind='spawn'
|
|
537
|
-
|
|
538
|
-
6. Apply dagre auto-layout
|
|
539
|
-
Return CanvasState { nodes, edges, viewport }
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
### 6.2 Export: Canvas -> YAML
|
|
543
|
-
|
|
544
|
-
`compiler.ts: canvasToYaml(canvasStore, configStore)`
|
|
545
|
-
|
|
546
|
-
**Output:** `Map<string, string>` — filepath → YAML content
|
|
547
|
-
|
|
548
|
-
**Algorithm:**
|
|
549
|
-
|
|
550
|
-
```
|
|
551
|
-
1. Build team.yaml
|
|
552
|
-
a. team name, description, version from config store
|
|
553
|
-
b. roles: all role names from config store
|
|
554
|
-
c. topology:
|
|
555
|
-
root: { role: topologyRoot, config: { model } }
|
|
556
|
-
companions: topologyCompanions.map(role => ({ role, config: { model } }))
|
|
557
|
-
spawn_rules: from config store
|
|
558
|
-
d. communication:
|
|
559
|
-
enforcement: from config store
|
|
560
|
-
channels: from config store
|
|
561
|
-
subscriptions: from config store
|
|
562
|
-
emissions: from config store
|
|
563
|
-
routing.peers: from config store
|
|
564
|
-
e. Extension fields: from config store (pass-through)
|
|
565
|
-
f. Serialize with js-yaml
|
|
566
|
-
|
|
567
|
-
2. Build roles/<name>.yaml for each role
|
|
568
|
-
a. name, display_name, description, capabilities
|
|
569
|
-
b. extends (if set)
|
|
570
|
-
c. Serialize with js-yaml
|
|
571
|
-
|
|
572
|
-
3. Build prompts (as content map, not files)
|
|
573
|
-
For each role with promptContent:
|
|
574
|
-
a. prompts/<role>/ROLE.md → promptContent
|
|
575
|
-
b. Additional prompts → prompts/<role>/<name>.md
|
|
576
|
-
|
|
577
|
-
4. Return Map<filepath, content>
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
### 6.3 YAML Serialization Options
|
|
581
|
-
|
|
582
|
-
```typescript
|
|
583
|
-
yaml.dump(config, {
|
|
584
|
-
lineWidth: -1, // No auto-wrapping
|
|
585
|
-
noRefs: true, // No YAML anchors/aliases
|
|
586
|
-
quotingType: '"', // Double quotes when needed
|
|
587
|
-
forceQuotes: false, // Smart quoting
|
|
588
|
-
sortKeys: false, // Preserve insertion order
|
|
589
|
-
});
|
|
590
|
-
```
|
|
591
|
-
|
|
592
|
-
---
|
|
593
|
-
|
|
594
|
-
## 7. Validation
|
|
595
|
-
|
|
596
|
-
### 7.1 Validation Pipeline
|
|
597
|
-
|
|
598
|
-
Triggered on every state change (debounced 300ms via `use-validation` hook).
|
|
599
|
-
|
|
600
|
-
**Layer 1: JSON Schema** (AJV)
|
|
601
|
-
- Validate assembled config against `team.schema.json` and `role.schema.json`
|
|
602
|
-
- These schemas are already defined in `schema/` — reuse directly
|
|
603
|
-
|
|
604
|
-
**Layer 2: Topology Integrity**
|
|
605
|
-
- Exactly one root role
|
|
606
|
-
- Root and all companion roles exist in the roles list
|
|
607
|
-
- All roles referenced in spawn_rules exist in the roles list
|
|
608
|
-
- No role appears as both root and companion
|
|
609
|
-
|
|
610
|
-
**Layer 3: Communication Integrity**
|
|
611
|
-
- Every signal in emissions exists in at least one channel's signal list
|
|
612
|
-
- Every signal in subscription filters exists in its channel's signal list
|
|
613
|
-
- Every channel referenced in subscriptions exists in channels
|
|
614
|
-
- Every role in subscriptions/emissions exists in the roles list
|
|
615
|
-
- Peer route from/to roles exist in the roles list
|
|
616
|
-
|
|
617
|
-
**Layer 4: Inheritance Integrity**
|
|
618
|
-
- No circular `extends` chains
|
|
619
|
-
- Referenced parent roles exist
|
|
620
|
-
- Capability composition is valid (removed capabilities exist on parent)
|
|
621
|
-
|
|
622
|
-
**Layer 5: Semantic Warnings** (non-blocking)
|
|
623
|
-
- Roles with no subscriptions and not reachable via spawn rules from root
|
|
624
|
-
- Signals defined in a channel but never emitted by any role
|
|
625
|
-
- Signals defined in a channel but never subscribed to by any role
|
|
626
|
-
- Roles that emit signals but have no emission entry (permissive mode)
|
|
627
|
-
- Peer routes carrying signals not defined in any channel
|
|
628
|
-
|
|
629
|
-
### 7.2 Error Display
|
|
630
|
-
|
|
631
|
-
- **Per-node**: Error/warning badge count on node corners
|
|
632
|
-
- **Validation bar**: Summary in bottom toolbar ("12 roles, 4 channels, 0 errors, 2 warnings")
|
|
633
|
-
- **Inspector**: Detailed error list when node selected
|
|
634
|
-
- **Node highlighting**: Red/yellow border for nodes with errors/warnings
|
|
635
|
-
|
|
636
|
-
---
|
|
637
|
-
|
|
638
|
-
## 8. Inspector Panels
|
|
639
|
-
|
|
640
|
-
### 8.1 RoleInspector (4 tabs)
|
|
641
|
-
|
|
642
|
-
**Tab 1: Identity**
|
|
643
|
-
```
|
|
644
|
-
Name: [orchestrator ]
|
|
645
|
-
Display Name: [GSD Orchestrator ]
|
|
646
|
-
Description: [Command-level... ]
|
|
647
|
-
[ ]
|
|
648
|
-
Model: [sonnet ▼]
|
|
649
|
-
Position: [root ▼] (root / companion / spawned)
|
|
650
|
-
Extends: [— none — ▼] (dropdown of other roles)
|
|
651
|
-
```
|
|
652
|
-
|
|
653
|
-
**Tab 2: Communication**
|
|
654
|
-
```
|
|
655
|
-
Emits:
|
|
656
|
-
[PROJECT_INITIALIZED] [PHASE_STARTED] [WAVE_STARTED] [+]
|
|
657
|
-
|
|
658
|
-
Subscribes:
|
|
659
|
-
┌─────────────────────────────────────────┐
|
|
660
|
-
│ project_lifecycle (all signals) [×]│
|
|
661
|
-
│ planning_events (all signals) [×]│
|
|
662
|
-
│ execution_events (all signals) [×]│
|
|
663
|
-
│ verification_events (all signals) [×]│
|
|
664
|
-
└─────────────────────────────────────────┘
|
|
665
|
-
[+ Add Subscription]
|
|
666
|
-
|
|
667
|
-
Peer Routes (outgoing):
|
|
668
|
-
→ roadmapper via direct [RESEARCH_COMPLETE]
|
|
669
|
-
[+ Add Route]
|
|
670
|
-
|
|
671
|
-
Peer Routes (incoming):
|
|
672
|
-
← verifier via direct [GAPS_FOUND]
|
|
673
|
-
```
|
|
674
|
-
|
|
675
|
-
**Tab 3: Capabilities**
|
|
676
|
-
```
|
|
677
|
-
Capabilities:
|
|
678
|
-
[command-routing ×]
|
|
679
|
-
[wave-orchestration ×]
|
|
680
|
-
[state-management ×]
|
|
681
|
-
[checkpoint-handling×]
|
|
682
|
-
[context-budgeting ×]
|
|
683
|
-
[+ Add capability ]
|
|
684
|
-
|
|
685
|
-
Spawn Rules (can spawn):
|
|
686
|
-
[✓] roadmapper
|
|
687
|
-
[✓] planner
|
|
688
|
-
[✓] plan-checker
|
|
689
|
-
[✓] executor
|
|
690
|
-
[✓] verifier
|
|
691
|
-
[ ] debugger
|
|
692
|
-
...
|
|
693
|
-
```
|
|
694
|
-
|
|
695
|
-
**Tab 4: Prompts**
|
|
696
|
-
```
|
|
697
|
-
Primary Prompt (ROLE.md):
|
|
698
|
-
┌─────────────────────────────────────────┐
|
|
699
|
-
│ # GSD Orchestrator │
|
|
700
|
-
│ │
|
|
701
|
-
│ You are the command-level orchestrator │
|
|
702
|
-
│ for the GSD multi-agent system... │
|
|
703
|
-
│ │
|
|
704
|
-
│ ## Responsibilities │
|
|
705
|
-
│ - Route user commands to agent chains │
|
|
706
|
-
│ - Manage project state transitions │
|
|
707
|
-
│ ... │
|
|
708
|
-
└─────────────────────────────────────────┘
|
|
709
|
-
|
|
710
|
-
Additional Prompts:
|
|
711
|
-
┌─ SOUL.md ──────────────────────────────┐
|
|
712
|
-
│ # Personality & Values │
|
|
713
|
-
│ ... │
|
|
714
|
-
└─────────────────────────────────────────┘
|
|
715
|
-
[+ Add Prompt Section]
|
|
716
|
-
```
|
|
717
|
-
|
|
718
|
-
The markdown editor is a plain `<textarea>` with monospace font and basic syntax highlighting (headers, bold, lists). Not a full WYSIWYG editor — keeps it simple and predictable for prompt authoring.
|
|
719
|
-
|
|
720
|
-
### 8.2 ChannelInspector
|
|
721
|
-
|
|
722
|
-
```
|
|
723
|
-
Name: [planning_events ]
|
|
724
|
-
Description: [Planning and research workflow signals]
|
|
725
|
-
|
|
726
|
-
Signals:
|
|
727
|
-
[RESEARCH_COMPLETE ] [×]
|
|
728
|
-
[ROADMAP_READY ] [×]
|
|
729
|
-
[PLAN_READY ] [×]
|
|
730
|
-
[PLAN_VALIDATED ] [×]
|
|
731
|
-
[PLAN_REJECTED ] [×]
|
|
732
|
-
[+ Add Signal ]
|
|
733
|
-
|
|
734
|
-
Emitters (derived, read-only):
|
|
735
|
-
project-researcher → RESEARCH_COMPLETE
|
|
736
|
-
roadmapper → ROADMAP_READY
|
|
737
|
-
planner → PLAN_READY
|
|
738
|
-
plan-checker → PLAN_VALIDATED, PLAN_REJECTED
|
|
739
|
-
|
|
740
|
-
Subscribers (derived, read-only):
|
|
741
|
-
orchestrator ← all signals
|
|
742
|
-
roadmapper ← RESEARCH_COMPLETE
|
|
743
|
-
planner ← ROADMAP_READY, PLAN_REJECTED
|
|
744
|
-
plan-checker ← PLAN_READY
|
|
745
|
-
```
|
|
746
|
-
|
|
747
|
-
### 8.3 TeamInspector (nothing selected)
|
|
748
|
-
|
|
749
|
-
```
|
|
750
|
-
Team Name: [gsd ]
|
|
751
|
-
Description: [GSD — prompt-native multi-agent...]
|
|
752
|
-
[ ]
|
|
753
|
-
Version: 1 (read-only)
|
|
754
|
-
Enforcement: [permissive ▼]
|
|
755
|
-
|
|
756
|
-
Extension Metadata:
|
|
757
|
-
┌─ gsd: ─────────────────────────────────┐
|
|
758
|
-
│ context_management: │
|
|
759
|
-
│ description: "Each spawned agent..." │
|
|
760
|
-
│ plan_budget: "50%" │
|
|
761
|
-
│ execution_model: │
|
|
762
|
-
│ type: "wave-based-parallel" │
|
|
763
|
-
│ ... │
|
|
764
|
-
└─────────────────────────────────────────┘
|
|
765
|
-
(raw YAML editor, monospace textarea)
|
|
766
|
-
```
|
|
767
|
-
|
|
768
|
-
### 8.4 EdgeInspector
|
|
769
|
-
|
|
770
|
-
**For PeerRouteEdge:**
|
|
771
|
-
```
|
|
772
|
-
Type: Peer Route
|
|
773
|
-
From: [planner] → To: [plan-checker]
|
|
774
|
-
Via: [direct ▼]
|
|
775
|
-
Signals:
|
|
776
|
-
[PLAN_READY] [×]
|
|
777
|
-
[+ Add Signal]
|
|
778
|
-
[Delete Route]
|
|
779
|
-
```
|
|
780
|
-
|
|
781
|
-
**For SignalFlowEdge (read-only):**
|
|
782
|
-
```
|
|
783
|
-
Type: Signal Flow (emission)
|
|
784
|
-
Role: planner
|
|
785
|
-
Channel: planning_events
|
|
786
|
-
Signal: PLAN_READY
|
|
787
|
-
(Modify in Role Inspector → Communication tab)
|
|
788
|
-
```
|
|
789
|
-
|
|
790
|
-
---
|
|
791
|
-
|
|
792
|
-
## 9. Interactions
|
|
793
|
-
|
|
794
|
-
### 9.1 Creating Nodes
|
|
795
|
-
|
|
796
|
-
**Drag from sidebar:**
|
|
797
|
-
1. Sidebar palette has draggable blocks: "Role" and "Channel"
|
|
798
|
-
2. User drags block onto canvas
|
|
799
|
-
3. `onDrop` handler parses MIME data, creates node at drop position
|
|
800
|
-
4. For Role: creates a default `EditorRoleConfig` in config store + `RoleNode` on canvas
|
|
801
|
-
5. For Channel: prompts for name, creates `ChannelDefinition` in config store + `ChannelNode` on canvas
|
|
802
|
-
6. Pushes history snapshot
|
|
803
|
-
|
|
804
|
-
**Double-click on canvas:**
|
|
805
|
-
1. Opens QuickAddMenu at mouse position
|
|
806
|
-
2. Options: "New Role", "New Channel"
|
|
807
|
-
3. Same creation flow as drag-and-drop
|
|
808
|
-
|
|
809
|
-
### 9.2 Creating Edges
|
|
810
|
-
|
|
811
|
-
**Peer route (drag handle to handle):**
|
|
812
|
-
1. User drags from a role's right handle to another role's left handle
|
|
813
|
-
2. `onConnect` callback fires, stores pending connection
|
|
814
|
-
3. SignalPicker dialog opens — user selects signals for this route
|
|
815
|
-
4. On confirm: creates PeerRouteEdge + updates config store (adds to peerRoutes)
|
|
816
|
-
5. Pushes history snapshot
|
|
817
|
-
|
|
818
|
-
**Signal flow edges are derived, not manually created.** They are computed from the config store's emissions and subscriptions. When a user adds an emission or subscription in the inspector, the corresponding edges appear automatically.
|
|
819
|
-
|
|
820
|
-
**Spawn edges are derived from spawn rules.** Updated via the role inspector's spawn rules checkboxes.
|
|
821
|
-
|
|
822
|
-
### 9.3 Selection
|
|
823
|
-
|
|
824
|
-
- Click node → select node, deselect edge
|
|
825
|
-
- Click edge → select edge, deselect node
|
|
826
|
-
- Click canvas background → deselect all → show TeamInspector
|
|
827
|
-
- Selection state in canvas store drives Inspector panel content
|
|
828
|
-
|
|
829
|
-
### 9.4 Deletion
|
|
830
|
-
|
|
831
|
-
- Select node/edge → press Delete/Backspace
|
|
832
|
-
- For RoleNode deletion:
|
|
833
|
-
- Remove from config store (role, emissions, subscriptions, spawn rules, peer routes)
|
|
834
|
-
- Remove all connected edges
|
|
835
|
-
- Push history snapshot
|
|
836
|
-
- For ChannelNode deletion:
|
|
837
|
-
- Remove channel definition
|
|
838
|
-
- Remove all subscriptions referencing it
|
|
839
|
-
- Remove all connected SignalFlowEdges
|
|
840
|
-
- Push history snapshot
|
|
841
|
-
- For PeerRouteEdge deletion:
|
|
842
|
-
- Remove from config store peerRoutes
|
|
843
|
-
- Push history snapshot
|
|
844
|
-
|
|
845
|
-
### 9.5 Import
|
|
846
|
-
|
|
847
|
-
1. User clicks "Import" in toolbar → ImportModal opens
|
|
848
|
-
2. Two input methods:
|
|
849
|
-
- **Paste YAML**: textarea for team.yaml content + separate textareas for role YAMLs
|
|
850
|
-
- **Load Template**: dropdown of bundled example templates (gsd, bmad-method)
|
|
851
|
-
3. On confirm:
|
|
852
|
-
- Parse YAML with js-yaml
|
|
853
|
-
- Call `configToCanvas()` to build nodes + edges
|
|
854
|
-
- Load into canvas store + config store
|
|
855
|
-
- Apply auto-layout
|
|
856
|
-
- Clear history, push initial snapshot
|
|
857
|
-
|
|
858
|
-
### 9.6 Export
|
|
859
|
-
|
|
860
|
-
1. User clicks "Export" in toolbar → ExportModal opens
|
|
861
|
-
2. Modal shows tabbed file preview:
|
|
862
|
-
- Tab per output file: `team.yaml`, `roles/orchestrator.yaml`, `roles/planner.yaml`, ...
|
|
863
|
-
- Each tab shows syntax-highlighted YAML
|
|
864
|
-
- Prompt files shown as additional tabs: `prompts/orchestrator/ROLE.md`, etc.
|
|
865
|
-
3. Actions:
|
|
866
|
-
- **Copy** (per file): copies individual file content to clipboard
|
|
867
|
-
- **Copy All**: copies all files concatenated with `--- filename ---` separators
|
|
868
|
-
- **Download ZIP**: bundles all files into a downloadable zip
|
|
869
|
-
|
|
870
|
-
---
|
|
871
|
-
|
|
872
|
-
## 10. Auto-Layout
|
|
873
|
-
|
|
874
|
-
### Algorithm
|
|
875
|
-
|
|
876
|
-
Uses `@dagrejs/dagre` with left-to-right hierarchical layout.
|
|
877
|
-
|
|
878
|
-
```typescript
|
|
879
|
-
// auto-layout.ts
|
|
880
|
-
|
|
881
|
-
const ROLE_NODE_WIDTH = 280;
|
|
882
|
-
const ROLE_NODE_HEIGHT = 120;
|
|
883
|
-
const CHANNEL_NODE_WIDTH = 220;
|
|
884
|
-
const CHANNEL_NODE_HEIGHT = 100;
|
|
885
|
-
|
|
886
|
-
function computeLayout(nodes: EditorNode[], edges: EditorEdge[]): EditorNode[] {
|
|
887
|
-
const g = new dagre.graphlib.Graph();
|
|
888
|
-
g.setGraph({
|
|
889
|
-
rankdir: 'LR', // Left-to-right
|
|
890
|
-
ranksep: 140, // Horizontal spacing between ranks
|
|
891
|
-
nodesep: 60, // Vertical spacing between nodes in same rank
|
|
892
|
-
marginx: 40,
|
|
893
|
-
marginy: 40,
|
|
894
|
-
});
|
|
895
|
-
g.setDefaultEdgeLabel(() => ({}));
|
|
896
|
-
|
|
897
|
-
for (const node of nodes) {
|
|
898
|
-
const isChannel = node.data.kind === 'channel';
|
|
899
|
-
g.setNode(node.id, {
|
|
900
|
-
width: isChannel ? CHANNEL_NODE_WIDTH : ROLE_NODE_WIDTH,
|
|
901
|
-
height: isChannel ? CHANNEL_NODE_HEIGHT : ROLE_NODE_HEIGHT,
|
|
902
|
-
});
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
for (const edge of edges) {
|
|
906
|
-
// Only layout based on visible edges (peer routes + signal flow)
|
|
907
|
-
// Skip spawn edges to avoid pulling layout
|
|
908
|
-
if (edge.data?.kind !== 'spawn') {
|
|
909
|
-
g.setEdge(edge.source, edge.target);
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
dagre.layout(g);
|
|
914
|
-
|
|
915
|
-
return nodes.map(node => {
|
|
916
|
-
const pos = g.node(node.id);
|
|
917
|
-
const isChannel = node.data.kind === 'channel';
|
|
918
|
-
const w = isChannel ? CHANNEL_NODE_WIDTH : ROLE_NODE_WIDTH;
|
|
919
|
-
const h = isChannel ? CHANNEL_NODE_HEIGHT : ROLE_NODE_HEIGHT;
|
|
920
|
-
return {
|
|
921
|
-
...node,
|
|
922
|
-
position: { x: pos.x - w / 2, y: pos.y - h / 2 },
|
|
923
|
-
};
|
|
924
|
-
});
|
|
925
|
-
}
|
|
926
|
-
```
|
|
927
|
-
|
|
928
|
-
The layout uses only peer routes and signal flow edges for positioning — spawn edges are excluded to prevent distorting the communication-centric layout.
|
|
929
|
-
|
|
930
|
-
---
|
|
931
|
-
|
|
932
|
-
## 11. Template Gallery
|
|
933
|
-
|
|
934
|
-
The editor bundles the existing example templates for quick loading:
|
|
935
|
-
|
|
936
|
-
```typescript
|
|
937
|
-
// Bundled as static JSON (compiled from YAML at build time)
|
|
938
|
-
const BUNDLED_TEMPLATES = {
|
|
939
|
-
'gsd': { manifest: {...}, roles: {...} },
|
|
940
|
-
'bmad-method': { manifest: {...}, roles: {...} },
|
|
941
|
-
};
|
|
942
|
-
```
|
|
943
|
-
|
|
944
|
-
The TemplateGallery component in the sidebar shows these as cards:
|
|
945
|
-
|
|
946
|
-
```
|
|
947
|
-
┌────────────────────────────────┐
|
|
948
|
-
│ gsd │
|
|
949
|
-
│ 12 roles · 4 channels │
|
|
950
|
-
│ Wave-based parallel execution │
|
|
951
|
-
│ [Load] │
|
|
952
|
-
├────────────────────────────────┤
|
|
953
|
-
│ bmad-method │
|
|
954
|
-
│ 10 roles · 4 channels │
|
|
955
|
-
│ Full agile development team │
|
|
956
|
-
│ [Load] │
|
|
957
|
-
└────────────────────────────────┘
|
|
958
|
-
```
|
|
959
|
-
|
|
960
|
-
---
|
|
961
|
-
|
|
962
|
-
## 12. Keyboard Shortcuts
|
|
963
|
-
|
|
964
|
-
| Shortcut | Action |
|
|
965
|
-
|---|---|
|
|
966
|
-
| `Ctrl+Z` / `Cmd+Z` | Undo |
|
|
967
|
-
| `Ctrl+Y` / `Cmd+Shift+Z` | Redo |
|
|
968
|
-
| `Delete` / `Backspace` | Delete selected node or edge |
|
|
969
|
-
| `Ctrl+I` / `Cmd+I` | Toggle inspector panel |
|
|
970
|
-
| `Ctrl+E` / `Cmd+E` | Open export modal |
|
|
971
|
-
| `Ctrl+Shift+L` | Apply auto-layout |
|
|
972
|
-
| `Escape` | Deselect / close modal |
|
|
973
|
-
|
|
974
|
-
---
|
|
975
|
-
|
|
976
|
-
## 13. Theme System
|
|
977
|
-
|
|
978
|
-
CSS custom properties for dark/light mode, following the SDR editor pattern:
|
|
979
|
-
|
|
980
|
-
```css
|
|
981
|
-
:root {
|
|
982
|
-
--ot-bg: #ffffff;
|
|
983
|
-
--ot-surface: #f9fafb;
|
|
984
|
-
--ot-text: #111827;
|
|
985
|
-
--ot-text-muted: #6b7280;
|
|
986
|
-
--ot-border: #e5e7eb;
|
|
987
|
-
--ot-accent: #f59e0b; /* Amber for selection */
|
|
988
|
-
--ot-role-root: #3b82f6; /* Blue */
|
|
989
|
-
--ot-role-companion: #14b8a6; /* Teal */
|
|
990
|
-
--ot-role-spawned: #6b7280; /* Gray */
|
|
991
|
-
--ot-channel: #8b5cf6; /* Purple */
|
|
992
|
-
--ot-peer-route: #f59e0b; /* Amber */
|
|
993
|
-
--ot-signal-flow: #6b7280; /* Gray */
|
|
994
|
-
--ot-spawn-edge: #d1d5db; /* Light gray */
|
|
995
|
-
--ot-error: #ef4444;
|
|
996
|
-
--ot-warning: #eab308;
|
|
997
|
-
--ot-success: #22c55e;
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
.dark {
|
|
1001
|
-
--ot-bg: #0f172a;
|
|
1002
|
-
--ot-surface: #1e293b;
|
|
1003
|
-
--ot-text: #f1f5f9;
|
|
1004
|
-
--ot-text-muted: #94a3b8;
|
|
1005
|
-
--ot-border: #334155;
|
|
1006
|
-
/* ... accent and semantic colors stay the same */
|
|
1007
|
-
}
|
|
1008
|
-
```
|
|
1009
|
-
|
|
1010
|
-
---
|
|
1011
|
-
|
|
1012
|
-
## 14. Phased Implementation Plan
|
|
1013
|
-
|
|
1014
|
-
### Phase 1: Foundation (scaffold, types, canvas, basic nodes)
|
|
1015
|
-
|
|
1016
|
-
**Goal:** Standalone Vite app with React Flow canvas that renders role and channel nodes from hardcoded data.
|
|
1017
|
-
|
|
1018
|
-
**Tasks:**
|
|
1019
|
-
1. Scaffold `editor/` directory with Vite + React + TypeScript + Tailwind
|
|
1020
|
-
2. Configure `vite.config.ts` with `@openteams` path alias to `../src`
|
|
1021
|
-
3. Create `package.json` with all dependencies
|
|
1022
|
-
4. Define editor types in `types/editor.ts` (RoleNodeData, ChannelNodeData, edge data types)
|
|
1023
|
-
5. Implement `RoleNode.tsx` — memoized custom node with topology styling, capability summary, signal counts
|
|
1024
|
-
6. Implement `ChannelNode.tsx` — memoized custom node with signal list, emitter/subscriber counts
|
|
1025
|
-
7. Implement `Canvas.tsx` — ReactFlow container with node type registration, background grid, controls, minimap
|
|
1026
|
-
8. Implement `App.tsx` — root layout shell (sidebar placeholder, canvas, inspector placeholder)
|
|
1027
|
-
9. Create `node-styles.ts` — color constants, topology-based style functions
|
|
1028
|
-
10. Create CSS variables for theming (`index.css`)
|
|
1029
|
-
|
|
1030
|
-
**Verification:** `npm run dev` renders a canvas with sample hardcoded role + channel nodes.
|
|
1031
|
-
|
|
1032
|
-
### Phase 2: State Management (stores, serializer, auto-layout)
|
|
1033
|
-
|
|
1034
|
-
**Goal:** Import a team.yaml + roles and render it on the canvas with auto-layout.
|
|
1035
|
-
|
|
1036
|
-
**Tasks:**
|
|
1037
|
-
1. Implement `canvas-store.ts` — nodes, edges, selection, ReactFlow callbacks
|
|
1038
|
-
2. Implement `config-store.ts` — roles, channels, subscriptions, emissions, peer routes, spawn rules, topology
|
|
1039
|
-
3. Implement `history-store.ts` — undo/redo with snapshot deep-clone
|
|
1040
|
-
4. Implement `ui-store.ts` — sidebar, inspector, layers, modals
|
|
1041
|
-
5. Implement `validation-store.ts` — errors, warnings, isValidating
|
|
1042
|
-
6. Implement `serializer.ts: configToCanvas()` — full import pipeline (roles → nodes, communication → edges)
|
|
1043
|
-
7. Implement `auto-layout.ts: computeLayout()` — dagre LR layout with role/channel sizing
|
|
1044
|
-
8. Wire up canvas store to use serializer + layout for `loadFromConfig()`
|
|
1045
|
-
9. Bundle example templates (gsd, bmad-method) as static JSON
|
|
1046
|
-
10. Load gsd on startup as default, verify all nodes + edges render correctly
|
|
1047
|
-
11. Write round-trip tests for serializer: `configToCanvas` → `canvasToConfig` → assert structural equality
|
|
1048
|
-
|
|
1049
|
-
**Verification:** Both gsd (12 roles, 4 channels) and bmad-method (10 roles, 4 channels) render correctly with auto-layout. All node types, edge types, and topology positions display properly.
|
|
1050
|
-
|
|
1051
|
-
### Phase 3: Edge Types + Layer System
|
|
1052
|
-
|
|
1053
|
-
**Goal:** Three distinct edge types with layer toggles to manage visual complexity.
|
|
1054
|
-
|
|
1055
|
-
**Tasks:**
|
|
1056
|
-
1. Implement `PeerRouteEdge.tsx` — bold amber Bezier with signal labels, hover animation
|
|
1057
|
-
2. Implement `SignalFlowEdge.tsx` — medium gray Bezier with channel label, emission/subscription direction indicator
|
|
1058
|
-
3. Implement `SpawnEdge.tsx` — thin dashed gray with "can spawn" tooltip
|
|
1059
|
-
4. Implement `LayerToggle.tsx` — toolbar toggle buttons for 4 layers
|
|
1060
|
-
5. Wire layer visibility to edge filtering in Canvas (filter edges by `data.kind` + layer state)
|
|
1061
|
-
6. Wire channel node visibility to the Channels layer toggle
|
|
1062
|
-
7. Ensure selection works across all edge types
|
|
1063
|
-
8. Implement `EdgeInspector.tsx` — display edge details, editable for peer routes
|
|
1064
|
-
|
|
1065
|
-
**Verification:** Toggling layers hides/shows the correct edges. GSD template's 5 peer routes are visually distinct from signal flow edges. Spawn rules can be toggled on to see the orchestrator's spawn tree.
|
|
1066
|
-
|
|
1067
|
-
### Phase 4: Inspector + Editing
|
|
1068
|
-
|
|
1069
|
-
**Goal:** Full property editing via inspector panels. Changes flow back to stores and canvas.
|
|
1070
|
-
|
|
1071
|
-
**Tasks:**
|
|
1072
|
-
1. Implement `Inspector.tsx` — dispatcher based on selection state
|
|
1073
|
-
2. Implement `RoleInspector.tsx` — 4 tabs (Identity, Communication, Capabilities, Prompts)
|
|
1074
|
-
3. Implement `ChannelInspector.tsx` — signal list editor, derived emitter/subscriber lists
|
|
1075
|
-
4. Implement `TeamInspector.tsx` — team metadata + raw YAML extension editor
|
|
1076
|
-
5. Implement `PromptEditor.tsx` — monospace textarea for markdown prompt content
|
|
1077
|
-
6. Implement shared inputs: `CapabilityInput.tsx`, `SignalPicker.tsx`, `ArrayInput.tsx`
|
|
1078
|
-
7. Wire inspector edits back to config store → trigger derived edge recomputation
|
|
1079
|
-
8. Implement derived edge recomputation: when emissions/subscriptions change, rebuild SignalFlowEdges
|
|
1080
|
-
9. Connect history store: push snapshots before each inspector edit
|
|
1081
|
-
|
|
1082
|
-
**Verification:** Select a role, edit its emissions in the inspector → signal flow edges update on canvas. Edit capabilities → node display updates. Write prompt content → stored in config store.
|
|
1083
|
-
|
|
1084
|
-
### Phase 5: Canvas Interactions (create, connect, delete)
|
|
1085
|
-
|
|
1086
|
-
**Goal:** Full interactive editing on the canvas itself.
|
|
1087
|
-
|
|
1088
|
-
**Tasks:**
|
|
1089
|
-
1. Implement drag-and-drop from sidebar palette (Role + Channel blocks)
|
|
1090
|
-
2. Implement `QuickAddMenu.tsx` — double-click to add nodes
|
|
1091
|
-
3. Implement edge creation: drag handle → handle → SignalPicker dialog → create PeerRouteEdge
|
|
1092
|
-
4. Implement node/edge deletion via Delete key
|
|
1093
|
-
5. Implement `Sidebar.tsx` with block palette and `ConfigTree.tsx` for hierarchical view
|
|
1094
|
-
6. Implement `TemplateGallery.tsx` — load bundled templates
|
|
1095
|
-
7. Wire all interactions to history store for undo/redo
|
|
1096
|
-
8. Implement `use-keyboard.ts` — keyboard shortcuts
|
|
1097
|
-
|
|
1098
|
-
**Verification:** Create a new team from scratch by dragging roles and channels, connecting peer routes, and editing properties. Undo/redo works across all operations.
|
|
1099
|
-
|
|
1100
|
-
### Phase 6: Validation
|
|
1101
|
-
|
|
1102
|
-
**Goal:** Real-time validation with per-node error/warning display.
|
|
1103
|
-
|
|
1104
|
-
**Tasks:**
|
|
1105
|
-
1. Implement `validator.ts` — 5-layer validation pipeline (browser-safe, no fs)
|
|
1106
|
-
2. Import existing JSON schemas (`team.schema.json`, `role.schema.json`) for AJV validation
|
|
1107
|
-
3. Implement `use-validation.ts` hook — debounced 300ms, triggers on store changes
|
|
1108
|
-
4. Wire validation results to node data (update error/warning counts on nodes)
|
|
1109
|
-
5. Implement `ValidationBar.tsx` — bottom status bar with summary counts
|
|
1110
|
-
6. Add error/warning border styling to RoleNode and ChannelNode
|
|
1111
|
-
7. Write validation tests covering all 5 layers
|
|
1112
|
-
|
|
1113
|
-
**Verification:** Delete a channel that has subscribers → error appears on subscribing roles. Add a signal to emissions that doesn't exist in any channel → warning. Circular inheritance → error.
|
|
1114
|
-
|
|
1115
|
-
### Phase 7: Import/Export
|
|
1116
|
-
|
|
1117
|
-
**Goal:** Full YAML import and multi-file export.
|
|
1118
|
-
|
|
1119
|
-
**Tasks:**
|
|
1120
|
-
1. Implement `compiler.ts: canvasToYaml()` — convert stores to multi-file YAML output
|
|
1121
|
-
2. Implement `ImportModal.tsx` — paste YAML or load template
|
|
1122
|
-
3. Implement `ExportModal.tsx` — tabbed file preview with copy + download
|
|
1123
|
-
4. Implement multi-file YAML parsing for import (team.yaml + individual role YAMLs)
|
|
1124
|
-
5. Add "New" button that resets all stores
|
|
1125
|
-
6. Implement `signal-catalog.ts` — collect all known signal names for autocomplete
|
|
1126
|
-
7. Implement `use-autosave.ts` — localStorage persistence
|
|
1127
|
-
8. Implement `ThemeToggle.tsx` — dark/light mode
|
|
1128
|
-
9. Write compiler tests: build config → compile → parse output → assert matches input
|
|
1129
|
-
|
|
1130
|
-
**Verification:** Import gsd template → edit roles → export → resulting YAML is valid and matches expected structure. Auto-save persists across browser refresh.
|
|
1131
|
-
|
|
1132
|
-
### Phase 8: Polish + Testing
|
|
1133
|
-
|
|
1134
|
-
**Goal:** Production-quality UX, comprehensive tests, and documentation.
|
|
1135
|
-
|
|
1136
|
-
**Tasks:**
|
|
1137
|
-
1. Refine auto-layout for both template topologies (verify GSD and BMAD render cleanly)
|
|
1138
|
-
2. Add hover states, transitions, and animations to edges
|
|
1139
|
-
3. Responsive sidebar/inspector (collapsible on narrow viewports)
|
|
1140
|
-
4. Add validation for real-time feedback as user types (debounced input validation)
|
|
1141
|
-
5. Add "Fit View" button and initial viewport positioning
|
|
1142
|
-
6. Cross-browser testing (Chrome, Firefox, Safari)
|
|
1143
|
-
7. Write integration tests: full round-trip (import → edit → export → reimport → verify)
|
|
1144
|
-
8. Add `npm run dev` and `npm run build` scripts + verify production build
|
|
1145
|
-
9. Update project README and CLAUDE.md with editor documentation
|
|
1146
|
-
10. Add `openteams editor` CLI command that launches `vite dev` for the editor
|
|
1147
|
-
|
|
1148
|
-
---
|
|
1149
|
-
|
|
1150
|
-
## Appendix A: Example Visualizations
|
|
1151
|
-
|
|
1152
|
-
### A.1 gsd (Peer Routes + Channels ON)
|
|
1153
|
-
|
|
1154
|
-
```
|
|
1155
|
-
┌──────────────────┐
|
|
1156
|
-
┌───→│ [planning_events]│───→ orchestrator
|
|
1157
|
-
┌────────────────┐ ┌──────────────┐ │ │ RESEARCH_COMPLETE│───→ roadmapper
|
|
1158
|
-
│ project- │──→│ research- │──┘ │ ROADMAP_READY │───→ planner
|
|
1159
|
-
│ researcher │ │ synthesizer │═══════│ PLAN_READY │───→ plan-checker
|
|
1160
|
-
├────────────────┤ └──────────────┘ │ PLAN_VALIDATED │
|
|
1161
|
-
│ phase- │ │ PLAN_REJECTED │───→ planner
|
|
1162
|
-
│ researcher │──→ (also emits └──────────────────┘
|
|
1163
|
-
├────────────────┤ RESEARCH_COMPLETE)
|
|
1164
|
-
│ codebase- │ ┌─────────────────────────┐
|
|
1165
|
-
│ mapper │──→ ... │ planner ◄══PLAN_REJECTED══ plan-checker
|
|
1166
|
-
└────────────────┘ │ planner ══PLAN_READY══► plan-checker
|
|
1167
|
-
│ verifier ══GAPS_FOUND══► planner
|
|
1168
|
-
┌──────────────┐ └─────────────────────────┘
|
|
1169
|
-
│ ★ orchestrator│ (peer route loop)
|
|
1170
|
-
│ (root) │──emit──→ [project_lifecycle] ──sub──→ verifier
|
|
1171
|
-
└──────────────┘ [execution_events] ──sub──→ executor
|
|
1172
|
-
integration-checker
|
|
1173
|
-
```
|
|
1174
|
-
|
|
1175
|
-
### A.2 bmad-method (Peer Routes + Channels ON)
|
|
1176
|
-
|
|
1177
|
-
```
|
|
1178
|
-
┌──────────┐ ┌────────┐ ┌─────────────┐ ┌──────────────┐
|
|
1179
|
-
│ ★ master │ │ analyst│═══►│ pm │═══►│ architect │
|
|
1180
|
-
│ (root) │ │ │ │ │ │ │
|
|
1181
|
-
└──────────┘ └────────┘ └──────┬──────┘ └──────┬───────┘
|
|
1182
|
-
│ │ │
|
|
1183
|
-
│ ┌────┴─────┐ ┌─────┴──────┐
|
|
1184
|
-
│ │ux-designer│ │ scrum-master│
|
|
1185
|
-
│ └──────────┘ └──────┬──────┘
|
|
1186
|
-
│ │
|
|
1187
|
-
│ ┌─────┴──────┐
|
|
1188
|
-
│ │ developer │◄═══►
|
|
1189
|
-
│ └─────┬──────┘
|
|
1190
|
-
│ │
|
|
1191
|
-
│ ┌────────────┐ ┌─────┴──┐
|
|
1192
|
-
│ │ tech-writer│ │ qa │
|
|
1193
|
-
│ └────────────┘ └────────┘
|
|
1194
|
-
│
|
|
1195
|
-
┌────┴──────────┐
|
|
1196
|
-
│ quick-flow-dev│ (standalone)
|
|
1197
|
-
└───────────────┘
|
|
1198
|
-
```
|
|
1199
|
-
|
|
1200
|
-
### A.3 Node ID Conventions
|
|
1201
|
-
|
|
1202
|
-
```
|
|
1203
|
-
Nodes: role-{roleName} e.g. role-orchestrator, role-planner
|
|
1204
|
-
channel-{channelName} e.g. channel-planning_events
|
|
1205
|
-
|
|
1206
|
-
Edges: peer-{from}-{to}-{index} e.g. peer-planner-plan-checker-0
|
|
1207
|
-
emit-{role}-{channel} e.g. emit-planner-planning_events
|
|
1208
|
-
sub-{channel}-{role} e.g. sub-planning_events-planner
|
|
1209
|
-
spawn-{from}-{to} e.g. spawn-orchestrator-planner
|
|
1210
|
-
```
|
|
1211
|
-
|
|
1212
|
-
---
|
|
1213
|
-
|
|
1214
|
-
## Appendix B: Decisions Log
|
|
1215
|
-
|
|
1216
|
-
| Decision | Choice | Rationale |
|
|
1217
|
-
|---|---|---|
|
|
1218
|
-
| Channel nodes default visibility | ON (hidden = default OFF was considered) | Showing channels makes the pub/sub topology explicit; users can toggle off if noisy |
|
|
1219
|
-
| Extension metadata editor | Raw YAML textarea | Structured editors for gsd:/bmad: are low ROI for v1; schemas vary per system |
|
|
1220
|
-
| Prompt editing | Inline markdown textarea | Full WYSIWYG is overkill for prompt authoring; monospace textarea is closer to the file format |
|
|
1221
|
-
| Signal flow edges | Derived from config, not manually drawn | Manual edge creation for subscriptions/emissions would duplicate the inspector workflow and create sync issues |
|
|
1222
|
-
| Spawn edges | Hidden by default | Spawn rules add visual noise; less relevant for understanding communication flow |
|
|
1223
|
-
| Layout algorithm | Dagre LR, spawn edges excluded | LR matches the natural left-to-right flow; excluding spawn edges prevents layout distortion |
|
|
1224
|
-
| State management | Zustand (5 stores) | Matches SDR pattern, lightweight, no boilerplate |
|
|
1225
|
-
| Multi-file export | Tabbed preview + zip download | OpenTeams configs are multi-file (team.yaml + roles/*.yaml + prompts/); single-file export wouldn't be useful |
|