@bradygaster/squad-sdk 0.7.0 → 0.8.2-1.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/README.md +3 -3
- package/dist/adapter/client.d.ts +246 -0
- package/dist/adapter/client.d.ts.map +1 -0
- package/dist/adapter/client.js +699 -0
- package/dist/adapter/client.js.map +1 -0
- package/dist/adapter/errors.d.ts +260 -0
- package/dist/adapter/errors.d.ts.map +1 -0
- package/dist/adapter/errors.js +362 -0
- package/dist/adapter/errors.js.map +1 -0
- package/dist/adapter/types.d.ts +817 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +11 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/agents/charter-compiler.d.ts +106 -0
- package/dist/agents/charter-compiler.d.ts.map +1 -0
- package/dist/agents/charter-compiler.js +165 -0
- package/dist/agents/charter-compiler.js.map +1 -0
- package/dist/agents/history-shadow.d.ts +80 -0
- package/dist/agents/history-shadow.d.ts.map +1 -0
- package/dist/agents/history-shadow.js +239 -0
- package/dist/agents/history-shadow.js.map +1 -0
- package/dist/agents/index.d.ts +71 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +183 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/lifecycle.d.ts +138 -0
- package/dist/agents/lifecycle.d.ts.map +1 -0
- package/dist/agents/lifecycle.js +284 -0
- package/dist/agents/lifecycle.js.map +1 -0
- package/dist/agents/model-selector.d.ts +80 -0
- package/dist/agents/model-selector.d.ts.map +1 -0
- package/dist/agents/model-selector.js +171 -0
- package/dist/agents/model-selector.js.map +1 -0
- package/dist/agents/onboarding.d.ts +65 -0
- package/dist/agents/onboarding.d.ts.map +1 -0
- package/dist/agents/onboarding.js +373 -0
- package/dist/agents/onboarding.js.map +1 -0
- package/dist/build/bundle.d.ts +32 -0
- package/dist/build/bundle.d.ts.map +1 -0
- package/dist/build/bundle.js +97 -0
- package/dist/build/bundle.js.map +1 -0
- package/dist/build/ci-pipeline.d.ts +51 -0
- package/dist/build/ci-pipeline.d.ts.map +1 -0
- package/dist/build/ci-pipeline.js +180 -0
- package/dist/build/ci-pipeline.js.map +1 -0
- package/dist/build/github-dist.d.ts +37 -0
- package/dist/build/github-dist.d.ts.map +1 -0
- package/dist/build/github-dist.js +117 -0
- package/dist/build/github-dist.js.map +1 -0
- package/dist/build/index.d.ts +11 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +11 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/install-migration.d.ts +28 -0
- package/dist/build/install-migration.d.ts.map +1 -0
- package/dist/build/install-migration.js +103 -0
- package/dist/build/install-migration.js.map +1 -0
- package/dist/build/npm-package.d.ts +54 -0
- package/dist/build/npm-package.d.ts.map +1 -0
- package/dist/build/npm-package.js +128 -0
- package/dist/build/npm-package.js.map +1 -0
- package/dist/build/release.d.ts +108 -0
- package/dist/build/release.d.ts.map +1 -0
- package/dist/build/release.js +295 -0
- package/dist/build/release.js.map +1 -0
- package/dist/build/versioning.d.ts +38 -0
- package/dist/build/versioning.d.ts.map +1 -0
- package/dist/build/versioning.js +113 -0
- package/dist/build/versioning.js.map +1 -0
- package/dist/builders/index.d.ts +156 -0
- package/dist/builders/index.d.ts.map +1 -0
- package/dist/builders/index.js +404 -0
- package/dist/builders/index.js.map +1 -0
- package/dist/builders/types.d.ts +187 -0
- package/dist/builders/types.d.ts.map +1 -0
- package/dist/builders/types.js +12 -0
- package/dist/builders/types.js.map +1 -0
- package/dist/casting/casting-engine.d.ts +60 -0
- package/dist/casting/casting-engine.d.ts.map +1 -0
- package/dist/casting/casting-engine.js +223 -0
- package/dist/casting/casting-engine.js.map +1 -0
- package/dist/casting/casting-history.d.ts +54 -0
- package/dist/casting/casting-history.d.ts.map +1 -0
- package/dist/casting/casting-history.js +63 -0
- package/dist/casting/casting-history.js.map +1 -0
- package/dist/casting/index.d.ts +46 -0
- package/dist/casting/index.d.ts.map +1 -0
- package/dist/casting/index.js +45 -0
- package/dist/casting/index.js.map +1 -0
- package/dist/client/event-bus.d.ts +29 -0
- package/dist/client/event-bus.d.ts.map +1 -0
- package/dist/client/event-bus.js +52 -0
- package/dist/client/event-bus.js.map +1 -0
- package/dist/client/index.d.ts +103 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +182 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/session-pool.d.ts +66 -0
- package/dist/client/session-pool.d.ts.map +1 -0
- package/dist/client/session-pool.js +145 -0
- package/dist/client/session-pool.js.map +1 -0
- package/dist/config/agent-doc.d.ts +43 -0
- package/dist/config/agent-doc.d.ts.map +1 -0
- package/dist/config/agent-doc.js +158 -0
- package/dist/config/agent-doc.js.map +1 -0
- package/dist/config/agent-source.d.ts +95 -0
- package/dist/config/agent-source.d.ts.map +1 -0
- package/dist/config/agent-source.js +274 -0
- package/dist/config/agent-source.js.map +1 -0
- package/dist/config/doc-sync.d.ts +66 -0
- package/dist/config/doc-sync.d.ts.map +1 -0
- package/dist/config/doc-sync.js +270 -0
- package/dist/config/doc-sync.js.map +1 -0
- package/dist/config/feature-audit.d.ts +49 -0
- package/dist/config/feature-audit.d.ts.map +1 -0
- package/dist/config/feature-audit.js +148 -0
- package/dist/config/feature-audit.js.map +1 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +15 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/init.d.ts +86 -0
- package/dist/config/init.d.ts.map +1 -0
- package/dist/config/init.js +807 -0
- package/dist/config/init.js.map +1 -0
- package/dist/config/legacy-fallback.d.ts +83 -0
- package/dist/config/legacy-fallback.d.ts.map +1 -0
- package/dist/config/legacy-fallback.js +212 -0
- package/dist/config/legacy-fallback.js.map +1 -0
- package/dist/config/markdown-migration.d.ts +157 -0
- package/dist/config/markdown-migration.d.ts.map +1 -0
- package/dist/config/markdown-migration.js +434 -0
- package/dist/config/markdown-migration.js.map +1 -0
- package/dist/config/migration.d.ts +123 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +273 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/migrations/index.d.ts +36 -0
- package/dist/config/migrations/index.d.ts.map +1 -0
- package/dist/config/migrations/index.js +216 -0
- package/dist/config/migrations/index.js.map +1 -0
- package/dist/config/models.d.ts +134 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +354 -0
- package/dist/config/models.js.map +1 -0
- package/dist/config/routing.d.ts +118 -0
- package/dist/config/routing.d.ts.map +1 -0
- package/dist/config/routing.js +247 -0
- package/dist/config/routing.js.map +1 -0
- package/dist/config/schema.d.ts +72 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +63 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/coordinator/coordinator.d.ts +82 -0
- package/dist/coordinator/coordinator.d.ts.map +1 -0
- package/dist/coordinator/coordinator.js +192 -0
- package/dist/coordinator/coordinator.js.map +1 -0
- package/dist/coordinator/direct-response.d.ts +83 -0
- package/dist/coordinator/direct-response.d.ts.map +1 -0
- package/dist/coordinator/direct-response.js +187 -0
- package/dist/coordinator/direct-response.js.map +1 -0
- package/dist/coordinator/fan-out.d.ts +83 -0
- package/dist/coordinator/fan-out.d.ts.map +1 -0
- package/dist/coordinator/fan-out.js +161 -0
- package/dist/coordinator/fan-out.js.map +1 -0
- package/dist/coordinator/index.d.ts +62 -0
- package/dist/coordinator/index.d.ts.map +1 -0
- package/dist/coordinator/index.js +177 -0
- package/dist/coordinator/index.js.map +1 -0
- package/dist/coordinator/response-tiers.d.ts +49 -0
- package/dist/coordinator/response-tiers.d.ts.map +1 -0
- package/dist/coordinator/response-tiers.js +149 -0
- package/dist/coordinator/response-tiers.js.map +1 -0
- package/dist/hooks/index.d.ts +103 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +279 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/index.d.ts +37 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -3
- package/dist/index.js.map +1 -1
- package/dist/marketplace/backend.d.ts +35 -0
- package/dist/marketplace/backend.d.ts.map +1 -0
- package/dist/marketplace/backend.js +99 -0
- package/dist/marketplace/backend.js.map +1 -0
- package/dist/marketplace/browser.d.ts +33 -0
- package/dist/marketplace/browser.d.ts.map +1 -0
- package/dist/marketplace/browser.js +97 -0
- package/dist/marketplace/browser.js.map +1 -0
- package/dist/marketplace/extension-adapter.d.ts +51 -0
- package/dist/marketplace/extension-adapter.d.ts.map +1 -0
- package/dist/marketplace/extension-adapter.js +81 -0
- package/dist/marketplace/extension-adapter.js.map +1 -0
- package/dist/marketplace/index.d.ts +51 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +108 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/packaging.d.ts +25 -0
- package/dist/marketplace/packaging.d.ts.map +1 -0
- package/dist/marketplace/packaging.js +117 -0
- package/dist/marketplace/packaging.js.map +1 -0
- package/dist/marketplace/schema.d.ts +50 -0
- package/dist/marketplace/schema.d.ts.map +1 -0
- package/dist/marketplace/schema.js +120 -0
- package/dist/marketplace/schema.js.map +1 -0
- package/dist/marketplace/security.d.ts +26 -0
- package/dist/marketplace/security.d.ts.map +1 -0
- package/dist/marketplace/security.js +199 -0
- package/dist/marketplace/security.js.map +1 -0
- package/dist/multi-squad.d.ts +89 -0
- package/dist/multi-squad.d.ts.map +1 -0
- package/dist/multi-squad.js +233 -0
- package/dist/multi-squad.js.map +1 -0
- package/dist/parsers.d.ts +15 -0
- package/dist/parsers.d.ts.map +1 -0
- package/dist/parsers.js +15 -0
- package/dist/parsers.js.map +1 -0
- package/dist/ralph/index.d.ts +58 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +128 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/ralph/triage.d.ts +48 -0
- package/dist/ralph/triage.d.ts.map +1 -0
- package/dist/ralph/triage.js +310 -0
- package/dist/ralph/triage.js.map +1 -0
- package/dist/remote/bridge.d.ts +79 -0
- package/dist/remote/bridge.d.ts.map +1 -0
- package/dist/remote/bridge.js +583 -0
- package/dist/remote/bridge.js.map +1 -0
- package/dist/remote/index.d.ts +7 -0
- package/dist/remote/index.d.ts.map +1 -0
- package/dist/remote/index.js +6 -0
- package/dist/remote/index.js.map +1 -0
- package/dist/remote/protocol.d.ts +130 -0
- package/dist/remote/protocol.d.ts.map +1 -0
- package/dist/remote/protocol.js +25 -0
- package/dist/remote/protocol.js.map +1 -0
- package/dist/remote/types.d.ts +34 -0
- package/dist/remote/types.d.ts.map +1 -0
- package/dist/remote/types.js +5 -0
- package/dist/remote/types.js.map +1 -0
- package/dist/resolution.d.ts +119 -0
- package/dist/resolution.d.ts.map +1 -0
- package/dist/resolution.js +259 -0
- package/dist/resolution.js.map +1 -0
- package/dist/runtime/benchmarks.d.ts +121 -0
- package/dist/runtime/benchmarks.d.ts.map +1 -0
- package/dist/runtime/benchmarks.js +251 -0
- package/dist/runtime/benchmarks.js.map +1 -0
- package/dist/runtime/config.d.ts +314 -0
- package/dist/runtime/config.d.ts.map +1 -0
- package/dist/runtime/config.js +467 -0
- package/dist/runtime/config.js.map +1 -0
- package/dist/runtime/constants.d.ts +37 -0
- package/dist/runtime/constants.d.ts.map +1 -0
- package/dist/runtime/constants.js +60 -0
- package/dist/runtime/constants.js.map +1 -0
- package/dist/runtime/cost-tracker.d.ts +73 -0
- package/dist/runtime/cost-tracker.d.ts.map +1 -0
- package/dist/runtime/cost-tracker.js +157 -0
- package/dist/runtime/cost-tracker.js.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts +35 -0
- package/dist/runtime/event-bus-ws-bridge.d.ts.map +1 -0
- package/dist/runtime/event-bus-ws-bridge.js +55 -0
- package/dist/runtime/event-bus-ws-bridge.js.map +1 -0
- package/dist/runtime/event-bus.d.ts +190 -0
- package/dist/runtime/event-bus.d.ts.map +1 -0
- package/dist/runtime/event-bus.js +218 -0
- package/dist/runtime/event-bus.js.map +1 -0
- package/dist/runtime/event-payloads.d.ts +108 -0
- package/dist/runtime/event-payloads.d.ts.map +1 -0
- package/dist/runtime/event-payloads.js +28 -0
- package/dist/runtime/event-payloads.js.map +1 -0
- package/dist/runtime/health.d.ts +66 -0
- package/dist/runtime/health.d.ts.map +1 -0
- package/dist/runtime/health.js +112 -0
- package/dist/runtime/health.js.map +1 -0
- package/dist/runtime/i18n.d.ts +54 -0
- package/dist/runtime/i18n.d.ts.map +1 -0
- package/dist/runtime/i18n.js +126 -0
- package/dist/runtime/i18n.js.map +1 -0
- package/dist/runtime/offline.d.ts +64 -0
- package/dist/runtime/offline.d.ts.map +1 -0
- package/dist/runtime/offline.js +108 -0
- package/dist/runtime/offline.js.map +1 -0
- package/dist/runtime/otel-api.d.ts +38 -0
- package/dist/runtime/otel-api.d.ts.map +1 -0
- package/dist/runtime/otel-api.js +94 -0
- package/dist/runtime/otel-api.js.map +1 -0
- package/dist/runtime/otel-bridge.d.ts +52 -0
- package/dist/runtime/otel-bridge.d.ts.map +1 -0
- package/dist/runtime/otel-bridge.js +132 -0
- package/dist/runtime/otel-bridge.js.map +1 -0
- package/dist/runtime/otel-init.d.ts +84 -0
- package/dist/runtime/otel-init.d.ts.map +1 -0
- package/dist/runtime/otel-init.js +86 -0
- package/dist/runtime/otel-init.js.map +1 -0
- package/dist/runtime/otel-metrics.d.ts +42 -0
- package/dist/runtime/otel-metrics.d.ts.map +1 -0
- package/dist/runtime/otel-metrics.js +196 -0
- package/dist/runtime/otel-metrics.js.map +1 -0
- package/dist/runtime/otel.d.ts +55 -0
- package/dist/runtime/otel.d.ts.map +1 -0
- package/dist/runtime/otel.js +165 -0
- package/dist/runtime/otel.js.map +1 -0
- package/dist/runtime/squad-observer.d.ts +75 -0
- package/dist/runtime/squad-observer.d.ts.map +1 -0
- package/dist/runtime/squad-observer.js +190 -0
- package/dist/runtime/squad-observer.js.map +1 -0
- package/dist/runtime/streaming.d.ts +106 -0
- package/dist/runtime/streaming.d.ts.map +1 -0
- package/dist/runtime/streaming.js +192 -0
- package/dist/runtime/streaming.js.map +1 -0
- package/dist/runtime/telemetry.d.ts +82 -0
- package/dist/runtime/telemetry.d.ts.map +1 -0
- package/dist/runtime/telemetry.js +120 -0
- package/dist/runtime/telemetry.js.map +1 -0
- package/dist/sharing/agent-repo.d.ts +33 -0
- package/dist/sharing/agent-repo.d.ts.map +1 -0
- package/dist/sharing/agent-repo.js +79 -0
- package/dist/sharing/agent-repo.js.map +1 -0
- package/dist/sharing/cache.d.ts +36 -0
- package/dist/sharing/cache.d.ts.map +1 -0
- package/dist/sharing/cache.js +85 -0
- package/dist/sharing/cache.js.map +1 -0
- package/dist/sharing/conflicts.d.ts +32 -0
- package/dist/sharing/conflicts.d.ts.map +1 -0
- package/dist/sharing/conflicts.js +123 -0
- package/dist/sharing/conflicts.js.map +1 -0
- package/dist/sharing/consult.d.ts +226 -0
- package/dist/sharing/consult.d.ts.map +1 -0
- package/dist/sharing/consult.js +818 -0
- package/dist/sharing/consult.js.map +1 -0
- package/dist/sharing/export.d.ts +50 -0
- package/dist/sharing/export.d.ts.map +1 -0
- package/dist/sharing/export.js +156 -0
- package/dist/sharing/export.js.map +1 -0
- package/dist/sharing/history-split.d.ts +34 -0
- package/dist/sharing/history-split.d.ts.map +1 -0
- package/dist/sharing/history-split.js +101 -0
- package/dist/sharing/history-split.js.map +1 -0
- package/dist/sharing/import.d.ts +37 -0
- package/dist/sharing/import.d.ts.map +1 -0
- package/dist/sharing/import.js +138 -0
- package/dist/sharing/import.js.map +1 -0
- package/dist/sharing/index.d.ts +12 -0
- package/dist/sharing/index.d.ts.map +1 -0
- package/dist/sharing/index.js +12 -0
- package/dist/sharing/index.js.map +1 -0
- package/dist/sharing/versioning.d.ts +32 -0
- package/dist/sharing/versioning.d.ts.map +1 -0
- package/dist/sharing/versioning.js +64 -0
- package/dist/sharing/versioning.js.map +1 -0
- package/dist/skills/index.d.ts +49 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +85 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/skill-loader.d.ts +56 -0
- package/dist/skills/skill-loader.d.ts.map +1 -0
- package/dist/skills/skill-loader.js +106 -0
- package/dist/skills/skill-loader.js.map +1 -0
- package/dist/skills/skill-source.d.ts +63 -0
- package/dist/skills/skill-source.d.ts.map +1 -0
- package/dist/skills/skill-source.js +199 -0
- package/dist/skills/skill-source.js.map +1 -0
- package/dist/streams/filter.d.ts +33 -0
- package/dist/streams/filter.d.ts.map +1 -0
- package/dist/streams/filter.js +29 -0
- package/dist/streams/filter.js.map +1 -0
- package/dist/streams/index.d.ts +9 -0
- package/dist/streams/index.d.ts.map +1 -0
- package/dist/streams/index.js +9 -0
- package/dist/streams/index.js.map +1 -0
- package/dist/streams/resolver.d.ts +40 -0
- package/dist/streams/resolver.d.ts.map +1 -0
- package/dist/streams/resolver.js +162 -0
- package/dist/streams/resolver.js.map +1 -0
- package/dist/streams/types.d.ts +44 -0
- package/dist/streams/types.d.ts.map +1 -0
- package/dist/streams/types.js +10 -0
- package/dist/streams/types.js.map +1 -0
- package/dist/tools/index.d.ts +95 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +475 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/upstream/index.d.ts +8 -0
- package/dist/upstream/index.d.ts.map +1 -0
- package/dist/upstream/index.js +7 -0
- package/dist/upstream/index.js.map +1 -0
- package/dist/upstream/resolver.d.ts +37 -0
- package/dist/upstream/resolver.d.ts.map +1 -0
- package/dist/upstream/resolver.js +234 -0
- package/dist/upstream/resolver.js.map +1 -0
- package/dist/upstream/types.d.ts +55 -0
- package/dist/upstream/types.d.ts.map +1 -0
- package/dist/upstream/types.js +11 -0
- package/dist/upstream/types.js.map +1 -0
- package/dist/utils/normalize-eol.d.ts +6 -0
- package/dist/utils/normalize-eol.d.ts.map +1 -0
- package/dist/utils/normalize-eol.js +8 -0
- package/dist/utils/normalize-eol.js.map +1 -0
- package/dist/utils/safe-timestamp.d.ts +6 -0
- package/dist/utils/safe-timestamp.d.ts.map +1 -0
- package/dist/utils/safe-timestamp.js +8 -0
- package/dist/utils/safe-timestamp.js.map +1 -0
- package/package.json +151 -6
- package/templates/casting-history.json +4 -0
- package/templates/casting-policy.json +35 -0
- package/templates/casting-registry.json +3 -0
- package/templates/ceremonies.md +41 -0
- package/templates/charter.md +53 -0
- package/templates/constraint-tracking.md +38 -0
- package/templates/copilot-instructions.md +46 -0
- package/templates/history.md +10 -0
- package/templates/identity/now.md +9 -0
- package/templates/identity/wisdom.md +15 -0
- package/templates/mcp-config.md +98 -0
- package/templates/multi-agent-format.md +28 -0
- package/templates/orchestration-log.md +27 -0
- package/templates/plugin-marketplace.md +49 -0
- package/templates/raw-agent-output.md +37 -0
- package/templates/roster.md +60 -0
- package/templates/routing.md +54 -0
- package/templates/run-output.md +50 -0
- package/templates/scribe-charter.md +119 -0
- package/templates/skill.md +24 -0
- package/templates/skills/project-conventions/SKILL.md +56 -0
- package/templates/squad.agent.md +1146 -0
- package/templates/workflows/squad-ci.yml +24 -0
- package/templates/workflows/squad-docs.yml +50 -0
- package/templates/workflows/squad-heartbeat.yml +316 -0
- package/templates/workflows/squad-insider-release.yml +61 -0
- package/templates/workflows/squad-issue-assign.yml +161 -0
- package/templates/workflows/squad-label-enforce.yml +181 -0
- package/templates/workflows/squad-preview.yml +55 -0
- package/templates/workflows/squad-promote.yml +120 -0
- package/templates/workflows/squad-release.yml +77 -0
- package/templates/workflows/squad-triage.yml +260 -0
- package/templates/workflows/sync-squad-labels.yml +169 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Source Interface & Implementations (M5-5, Issue #128)
|
|
3
|
+
*
|
|
4
|
+
* Pluggable skill discovery from local filesystem or GitHub repos.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import { parseFrontmatter } from './skill-loader.js';
|
|
9
|
+
// --- Local implementation ---
|
|
10
|
+
export class LocalSkillSource {
|
|
11
|
+
basePath;
|
|
12
|
+
name = 'local';
|
|
13
|
+
type = 'local';
|
|
14
|
+
priority;
|
|
15
|
+
constructor(basePath, priority = 0) {
|
|
16
|
+
this.basePath = basePath;
|
|
17
|
+
this.priority = priority;
|
|
18
|
+
}
|
|
19
|
+
get skillsDir() {
|
|
20
|
+
return path.join(this.basePath, '.squad', 'skills');
|
|
21
|
+
}
|
|
22
|
+
async listSkills() {
|
|
23
|
+
if (!fs.existsSync(this.skillsDir))
|
|
24
|
+
return [];
|
|
25
|
+
let entries;
|
|
26
|
+
try {
|
|
27
|
+
entries = fs.readdirSync(this.skillsDir, { withFileTypes: true });
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
const manifests = [];
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
if (!entry.isDirectory())
|
|
35
|
+
continue;
|
|
36
|
+
const skillFile = path.join(this.skillsDir, entry.name, 'SKILL.md');
|
|
37
|
+
if (!fs.existsSync(skillFile))
|
|
38
|
+
continue;
|
|
39
|
+
try {
|
|
40
|
+
const raw = fs.readFileSync(skillFile, 'utf-8');
|
|
41
|
+
const { meta } = parseFrontmatter(raw);
|
|
42
|
+
manifests.push({
|
|
43
|
+
id: entry.name,
|
|
44
|
+
name: typeof meta.name === 'string' ? meta.name : entry.name,
|
|
45
|
+
domain: typeof meta.domain === 'string' ? meta.domain : 'general',
|
|
46
|
+
source: 'local',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// skip malformed
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return manifests;
|
|
54
|
+
}
|
|
55
|
+
async getSkill(id) {
|
|
56
|
+
const skillFile = path.join(this.skillsDir, id, 'SKILL.md');
|
|
57
|
+
if (!fs.existsSync(skillFile))
|
|
58
|
+
return null;
|
|
59
|
+
try {
|
|
60
|
+
const raw = fs.readFileSync(skillFile, 'utf-8');
|
|
61
|
+
const { meta, body } = parseFrontmatter(raw);
|
|
62
|
+
if (!body)
|
|
63
|
+
return null;
|
|
64
|
+
return {
|
|
65
|
+
id,
|
|
66
|
+
name: typeof meta.name === 'string' ? meta.name : id,
|
|
67
|
+
domain: typeof meta.domain === 'string' ? meta.domain : 'general',
|
|
68
|
+
content: body,
|
|
69
|
+
triggers: Array.isArray(meta.triggers) ? meta.triggers : [],
|
|
70
|
+
agentRoles: Array.isArray(meta.roles) ? meta.roles : [],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async getContent(id) {
|
|
78
|
+
const skillFile = path.join(this.skillsDir, id, 'SKILL.md');
|
|
79
|
+
if (!fs.existsSync(skillFile))
|
|
80
|
+
return null;
|
|
81
|
+
try {
|
|
82
|
+
const raw = fs.readFileSync(skillFile, 'utf-8');
|
|
83
|
+
const { body } = parseFrontmatter(raw);
|
|
84
|
+
return body || null;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// --- GitHub implementation ---
|
|
92
|
+
export class GitHubSkillSource {
|
|
93
|
+
name = 'github';
|
|
94
|
+
type = 'github';
|
|
95
|
+
priority;
|
|
96
|
+
owner;
|
|
97
|
+
repoName;
|
|
98
|
+
branch;
|
|
99
|
+
pathPrefix;
|
|
100
|
+
fetcher;
|
|
101
|
+
constructor(repo, options) {
|
|
102
|
+
const parts = repo.split('/');
|
|
103
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
104
|
+
throw new Error(`Invalid repo format "${repo}": expected "owner/repo"`);
|
|
105
|
+
}
|
|
106
|
+
this.owner = parts[0];
|
|
107
|
+
this.repoName = parts[1];
|
|
108
|
+
this.branch = options?.ref;
|
|
109
|
+
this.pathPrefix = options?.pathPrefix ?? '.squad/skills';
|
|
110
|
+
this.fetcher = options?.fetcher ?? {
|
|
111
|
+
async listDirectory() { throw new Error('No GitHubFetcher configured'); },
|
|
112
|
+
async getFileContent() { throw new Error('No GitHubFetcher configured'); },
|
|
113
|
+
};
|
|
114
|
+
this.priority = options?.priority ?? 0;
|
|
115
|
+
}
|
|
116
|
+
async listSkills() {
|
|
117
|
+
const entries = await this.fetcher.listDirectory(this.owner, this.repoName, this.pathPrefix, this.branch);
|
|
118
|
+
const dirs = entries.filter(e => e.type === 'dir');
|
|
119
|
+
const manifests = [];
|
|
120
|
+
for (const dir of dirs) {
|
|
121
|
+
const skillPath = `${this.pathPrefix}/${dir.name}/SKILL.md`;
|
|
122
|
+
const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
|
|
123
|
+
if (!content)
|
|
124
|
+
continue;
|
|
125
|
+
const { meta } = parseFrontmatter(content);
|
|
126
|
+
manifests.push({
|
|
127
|
+
id: dir.name,
|
|
128
|
+
name: typeof meta.name === 'string' ? meta.name : dir.name,
|
|
129
|
+
domain: typeof meta.domain === 'string' ? meta.domain : 'general',
|
|
130
|
+
source: 'github',
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return manifests;
|
|
134
|
+
}
|
|
135
|
+
async getSkill(id) {
|
|
136
|
+
const skillPath = `${this.pathPrefix}/${id}/SKILL.md`;
|
|
137
|
+
const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
|
|
138
|
+
if (!content)
|
|
139
|
+
return null;
|
|
140
|
+
const { meta, body } = parseFrontmatter(content);
|
|
141
|
+
if (!body)
|
|
142
|
+
return null;
|
|
143
|
+
return {
|
|
144
|
+
id,
|
|
145
|
+
name: typeof meta.name === 'string' ? meta.name : id,
|
|
146
|
+
domain: typeof meta.domain === 'string' ? meta.domain : 'general',
|
|
147
|
+
content: body,
|
|
148
|
+
triggers: Array.isArray(meta.triggers) ? meta.triggers : [],
|
|
149
|
+
agentRoles: Array.isArray(meta.roles) ? meta.roles : [],
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
async getContent(id) {
|
|
153
|
+
const skillPath = `${this.pathPrefix}/${id}/SKILL.md`;
|
|
154
|
+
const content = await this.fetcher.getFileContent(this.owner, this.repoName, skillPath, this.branch);
|
|
155
|
+
if (!content)
|
|
156
|
+
return null;
|
|
157
|
+
const { body } = parseFrontmatter(content);
|
|
158
|
+
return body || null;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// --- Registry ---
|
|
162
|
+
export class SkillSourceRegistry {
|
|
163
|
+
sources = new Map();
|
|
164
|
+
register(source) {
|
|
165
|
+
this.sources.set(source.name, source);
|
|
166
|
+
}
|
|
167
|
+
unregister(name) {
|
|
168
|
+
return this.sources.delete(name);
|
|
169
|
+
}
|
|
170
|
+
getSource(name) {
|
|
171
|
+
return this.sources.get(name);
|
|
172
|
+
}
|
|
173
|
+
/** Sources sorted by priority descending (higher priority first). */
|
|
174
|
+
sortedSources() {
|
|
175
|
+
return Array.from(this.sources.values()).sort((a, b) => b.priority - a.priority);
|
|
176
|
+
}
|
|
177
|
+
async listAllSkills() {
|
|
178
|
+
const sorted = this.sortedSources();
|
|
179
|
+
const results = await Promise.all(sorted.map(s => s.listSkills()));
|
|
180
|
+
return results.flat();
|
|
181
|
+
}
|
|
182
|
+
async findSkill(id) {
|
|
183
|
+
for (const source of this.sortedSources()) {
|
|
184
|
+
const skill = await source.getSkill(id);
|
|
185
|
+
if (skill)
|
|
186
|
+
return skill;
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
async getContent(id) {
|
|
191
|
+
for (const source of this.sortedSources()) {
|
|
192
|
+
const content = await source.getContent(id);
|
|
193
|
+
if (content)
|
|
194
|
+
return content;
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=skill-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-source.js","sourceRoot":"","sources":["../../src/skills/skill-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream-Aware Issue Filtering
|
|
3
|
+
*
|
|
4
|
+
* Filters GitHub issues to only those matching a workstream's labelFilter.
|
|
5
|
+
* Intended to scope work to the active workstream during triage.
|
|
6
|
+
*
|
|
7
|
+
* @module streams/filter
|
|
8
|
+
*/
|
|
9
|
+
import type { ResolvedWorkstream } from './types.js';
|
|
10
|
+
/** Minimal issue shape for filtering. */
|
|
11
|
+
export interface WorkstreamIssue {
|
|
12
|
+
number: number;
|
|
13
|
+
title: string;
|
|
14
|
+
labels: Array<{
|
|
15
|
+
name: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use WorkstreamIssue instead */
|
|
19
|
+
export type StreamIssue = WorkstreamIssue;
|
|
20
|
+
/**
|
|
21
|
+
* Filter issues to only those matching the workstream's label filter.
|
|
22
|
+
*
|
|
23
|
+
* Matching is case-insensitive. If the workstream has no labelFilter,
|
|
24
|
+
* all issues are returned (passthrough).
|
|
25
|
+
*
|
|
26
|
+
* @param issues - Array of issues to filter
|
|
27
|
+
* @param workstream - The resolved workstream to filter by
|
|
28
|
+
* @returns Filtered array of issues matching the workstream's label
|
|
29
|
+
*/
|
|
30
|
+
export declare function filterIssuesByWorkstream(issues: WorkstreamIssue[], workstream: ResolvedWorkstream): WorkstreamIssue[];
|
|
31
|
+
/** @deprecated Use filterIssuesByWorkstream instead */
|
|
32
|
+
export declare const filterIssuesByStream: typeof filterIssuesByWorkstream;
|
|
33
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/streams/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,yCAAyC;AACzC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,8CAA8C;AAC9C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAE1C;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EAAE,EACzB,UAAU,EAAE,kBAAkB,GAC7B,eAAe,EAAE,CAUnB;AAED,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,iCAA2B,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream-Aware Issue Filtering
|
|
3
|
+
*
|
|
4
|
+
* Filters GitHub issues to only those matching a workstream's labelFilter.
|
|
5
|
+
* Intended to scope work to the active workstream during triage.
|
|
6
|
+
*
|
|
7
|
+
* @module streams/filter
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Filter issues to only those matching the workstream's label filter.
|
|
11
|
+
*
|
|
12
|
+
* Matching is case-insensitive. If the workstream has no labelFilter,
|
|
13
|
+
* all issues are returned (passthrough).
|
|
14
|
+
*
|
|
15
|
+
* @param issues - Array of issues to filter
|
|
16
|
+
* @param workstream - The resolved workstream to filter by
|
|
17
|
+
* @returns Filtered array of issues matching the workstream's label
|
|
18
|
+
*/
|
|
19
|
+
export function filterIssuesByWorkstream(issues, workstream) {
|
|
20
|
+
const filter = workstream.definition.labelFilter;
|
|
21
|
+
if (!filter) {
|
|
22
|
+
return issues;
|
|
23
|
+
}
|
|
24
|
+
const normalizedFilter = filter.toLowerCase();
|
|
25
|
+
return issues.filter(issue => issue.labels.some(label => label.name.toLowerCase() === normalizedFilter));
|
|
26
|
+
}
|
|
27
|
+
/** @deprecated Use filterIssuesByWorkstream instead */
|
|
28
|
+
export const filterIssuesByStream = filterIssuesByWorkstream;
|
|
29
|
+
//# sourceMappingURL=filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/streams/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH;;;;;;;;;GASG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAyB,EACzB,UAA8B;IAE9B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC3B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streams/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream Resolver — Resolves which workstream is active.
|
|
3
|
+
*
|
|
4
|
+
* Resolution order:
|
|
5
|
+
* 1. SQUAD_TEAM env var → look up in workstreams config
|
|
6
|
+
* 2. .squad-workstream file (gitignored) → contains workstream name
|
|
7
|
+
* 3. If exactly one workstream is defined in the config, auto-select that workstream
|
|
8
|
+
* 4. null (no active workstream — single-squad mode / no workstreams)
|
|
9
|
+
*
|
|
10
|
+
* @module streams/resolver
|
|
11
|
+
*/
|
|
12
|
+
import type { WorkstreamConfig, ResolvedWorkstream } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Load workstreams configuration from .squad/workstreams.json.
|
|
15
|
+
*
|
|
16
|
+
* @param squadRoot - Root directory of the project (where .squad/ lives)
|
|
17
|
+
* @returns Parsed WorkstreamConfig or null if not found / invalid
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadWorkstreamsConfig(squadRoot: string): WorkstreamConfig | null;
|
|
20
|
+
/** @deprecated Use loadWorkstreamsConfig instead */
|
|
21
|
+
export declare const loadStreamsConfig: typeof loadWorkstreamsConfig;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve which workstream is active for the current environment.
|
|
24
|
+
*
|
|
25
|
+
* @param squadRoot - Root directory of the project
|
|
26
|
+
* @returns ResolvedWorkstream or null if no workstream is active
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveWorkstream(squadRoot: string): ResolvedWorkstream | null;
|
|
29
|
+
/** @deprecated Use resolveWorkstream instead */
|
|
30
|
+
export declare const resolveStream: typeof resolveWorkstream;
|
|
31
|
+
/**
|
|
32
|
+
* Get the GitHub label filter string for a resolved workstream.
|
|
33
|
+
*
|
|
34
|
+
* @param workstream - The resolved workstream
|
|
35
|
+
* @returns Label filter string (e.g., "team:ui")
|
|
36
|
+
*/
|
|
37
|
+
export declare function getWorkstreamLabelFilter(workstream: ResolvedWorkstream): string;
|
|
38
|
+
/** @deprecated Use getWorkstreamLabelFilter instead */
|
|
39
|
+
export declare const getStreamLabelFilter: typeof getWorkstreamLabelFilter;
|
|
40
|
+
//# sourceMappingURL=resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../src/streams/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAwB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA8EhF;AAED,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,8BAAwB,CAAC;AASvD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA0D9E;AAED,gDAAgD;AAChD,eAAO,MAAM,aAAa,0BAAoB,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,CAE/E;AAED,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,iCAA2B,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream Resolver — Resolves which workstream is active.
|
|
3
|
+
*
|
|
4
|
+
* Resolution order:
|
|
5
|
+
* 1. SQUAD_TEAM env var → look up in workstreams config
|
|
6
|
+
* 2. .squad-workstream file (gitignored) → contains workstream name
|
|
7
|
+
* 3. If exactly one workstream is defined in the config, auto-select that workstream
|
|
8
|
+
* 4. null (no active workstream — single-squad mode / no workstreams)
|
|
9
|
+
*
|
|
10
|
+
* @module streams/resolver
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readFileSync } from 'fs';
|
|
13
|
+
import { join } from 'path';
|
|
14
|
+
/**
|
|
15
|
+
* Load workstreams configuration from .squad/workstreams.json.
|
|
16
|
+
*
|
|
17
|
+
* @param squadRoot - Root directory of the project (where .squad/ lives)
|
|
18
|
+
* @returns Parsed WorkstreamConfig or null if not found / invalid
|
|
19
|
+
*/
|
|
20
|
+
export function loadWorkstreamsConfig(squadRoot) {
|
|
21
|
+
const configPath = join(squadRoot, '.squad', 'workstreams.json');
|
|
22
|
+
if (!existsSync(configPath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
27
|
+
const rawConfig = JSON.parse(raw);
|
|
28
|
+
if (!rawConfig || typeof rawConfig !== 'object') {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const configLike = rawConfig;
|
|
32
|
+
// Derive a sane defaultWorkflow value
|
|
33
|
+
const validWorkflows = ['branch-per-issue', 'direct'];
|
|
34
|
+
const rawWorkflow = typeof configLike.defaultWorkflow === 'string' && configLike.defaultWorkflow.trim() !== ''
|
|
35
|
+
? configLike.defaultWorkflow
|
|
36
|
+
: 'branch-per-issue';
|
|
37
|
+
const defaultWorkflow = validWorkflows.includes(rawWorkflow)
|
|
38
|
+
? rawWorkflow
|
|
39
|
+
: 'branch-per-issue';
|
|
40
|
+
const workstreamsRaw = configLike.workstreams;
|
|
41
|
+
if (!Array.isArray(workstreamsRaw)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const workstreams = workstreamsRaw
|
|
45
|
+
.filter(entry => entry && typeof entry === 'object')
|
|
46
|
+
.map(entry => {
|
|
47
|
+
const e = entry;
|
|
48
|
+
if (typeof e.name !== 'string' || typeof e.labelFilter !== 'string') {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const normalized = {
|
|
52
|
+
name: e.name,
|
|
53
|
+
labelFilter: e.labelFilter,
|
|
54
|
+
};
|
|
55
|
+
if (Array.isArray(e.folderScope) && e.folderScope.every(item => typeof item === 'string')) {
|
|
56
|
+
normalized.folderScope = e.folderScope;
|
|
57
|
+
}
|
|
58
|
+
if (typeof e.workflow === 'string' && e.workflow.trim() !== '') {
|
|
59
|
+
normalized.workflow = e.workflow;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
normalized.workflow = defaultWorkflow;
|
|
63
|
+
}
|
|
64
|
+
if (typeof e.description === 'string') {
|
|
65
|
+
normalized.description = e.description;
|
|
66
|
+
}
|
|
67
|
+
return normalized;
|
|
68
|
+
})
|
|
69
|
+
.filter((s) => s !== null);
|
|
70
|
+
if (workstreams.length === 0) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return { defaultWorkflow, workstreams };
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** @deprecated Use loadWorkstreamsConfig instead */
|
|
80
|
+
export const loadStreamsConfig = loadWorkstreamsConfig;
|
|
81
|
+
/**
|
|
82
|
+
* Find a workstream definition by name in a config.
|
|
83
|
+
*/
|
|
84
|
+
function findWorkstream(config, name) {
|
|
85
|
+
return config.workstreams.find(s => s.name === name);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Resolve which workstream is active for the current environment.
|
|
89
|
+
*
|
|
90
|
+
* @param squadRoot - Root directory of the project
|
|
91
|
+
* @returns ResolvedWorkstream or null if no workstream is active
|
|
92
|
+
*/
|
|
93
|
+
export function resolveWorkstream(squadRoot) {
|
|
94
|
+
const config = loadWorkstreamsConfig(squadRoot);
|
|
95
|
+
// 1. SQUAD_TEAM env var
|
|
96
|
+
const envTeam = process.env.SQUAD_TEAM;
|
|
97
|
+
if (envTeam) {
|
|
98
|
+
if (config) {
|
|
99
|
+
const def = findWorkstream(config, envTeam);
|
|
100
|
+
if (def) {
|
|
101
|
+
return { name: envTeam, definition: def, source: 'env' };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Env var set but no matching workstream config — synthesize a minimal definition
|
|
105
|
+
return {
|
|
106
|
+
name: envTeam,
|
|
107
|
+
definition: {
|
|
108
|
+
name: envTeam,
|
|
109
|
+
labelFilter: `team:${envTeam}`,
|
|
110
|
+
},
|
|
111
|
+
source: 'env',
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// 2. .squad-workstream file
|
|
115
|
+
const workstreamFilePath = join(squadRoot, '.squad-workstream');
|
|
116
|
+
if (existsSync(workstreamFilePath)) {
|
|
117
|
+
try {
|
|
118
|
+
const workstreamName = readFileSync(workstreamFilePath, 'utf-8').trim();
|
|
119
|
+
if (workstreamName) {
|
|
120
|
+
if (config) {
|
|
121
|
+
const def = findWorkstream(config, workstreamName);
|
|
122
|
+
if (def) {
|
|
123
|
+
return { name: workstreamName, definition: def, source: 'file' };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// File exists but no config — synthesize
|
|
127
|
+
return {
|
|
128
|
+
name: workstreamName,
|
|
129
|
+
definition: {
|
|
130
|
+
name: workstreamName,
|
|
131
|
+
labelFilter: `team:${workstreamName}`,
|
|
132
|
+
},
|
|
133
|
+
source: 'file',
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Ignore read errors
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// 3. If exactly one workstream is defined, auto-select it
|
|
142
|
+
if (config && config.workstreams.length === 1) {
|
|
143
|
+
const def = config.workstreams[0];
|
|
144
|
+
return { name: def.name, definition: def, source: 'config' };
|
|
145
|
+
}
|
|
146
|
+
// 4. No workstream detected
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
/** @deprecated Use resolveWorkstream instead */
|
|
150
|
+
export const resolveStream = resolveWorkstream;
|
|
151
|
+
/**
|
|
152
|
+
* Get the GitHub label filter string for a resolved workstream.
|
|
153
|
+
*
|
|
154
|
+
* @param workstream - The resolved workstream
|
|
155
|
+
* @returns Label filter string (e.g., "team:ui")
|
|
156
|
+
*/
|
|
157
|
+
export function getWorkstreamLabelFilter(workstream) {
|
|
158
|
+
return workstream.definition.labelFilter;
|
|
159
|
+
}
|
|
160
|
+
/** @deprecated Use getWorkstreamLabelFilter instead */
|
|
161
|
+
export const getStreamLabelFilter = getWorkstreamLabelFilter;
|
|
162
|
+
//# sourceMappingURL=resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/streams/resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream Types — Type definitions for Squad Workstreams.
|
|
3
|
+
*
|
|
4
|
+
* Workstreams enable horizontal scaling by allowing multiple Squad instances
|
|
5
|
+
* (e.g., in different Codespaces) to each handle a scoped subset of work.
|
|
6
|
+
*
|
|
7
|
+
* @module streams/types
|
|
8
|
+
*/
|
|
9
|
+
/** Definition of a single workstream (team partition). */
|
|
10
|
+
export interface WorkstreamDefinition {
|
|
11
|
+
/** Workstream name, e.g., "ui-team", "backend-team" */
|
|
12
|
+
name: string;
|
|
13
|
+
/** GitHub label to filter issues by, e.g., "team:ui" */
|
|
14
|
+
labelFilter: string;
|
|
15
|
+
/** Optional folder restrictions, e.g., ["apps/web"] */
|
|
16
|
+
folderScope?: string[];
|
|
17
|
+
/** Workflow mode. Default: branch-per-issue */
|
|
18
|
+
workflow?: 'branch-per-issue' | 'direct';
|
|
19
|
+
/** Human-readable description of this workstream's purpose */
|
|
20
|
+
description?: string;
|
|
21
|
+
}
|
|
22
|
+
/** @deprecated Use WorkstreamDefinition instead */
|
|
23
|
+
export type StreamDefinition = WorkstreamDefinition;
|
|
24
|
+
/** Top-level workstreams configuration (stored in .squad/workstreams.json). */
|
|
25
|
+
export interface WorkstreamConfig {
|
|
26
|
+
/** All configured workstreams */
|
|
27
|
+
workstreams: WorkstreamDefinition[];
|
|
28
|
+
/** Default workflow for workstreams that don't specify one */
|
|
29
|
+
defaultWorkflow: 'branch-per-issue' | 'direct';
|
|
30
|
+
}
|
|
31
|
+
/** @deprecated Use WorkstreamConfig instead */
|
|
32
|
+
export type StreamConfig = WorkstreamConfig;
|
|
33
|
+
/** A resolved workstream with provenance information. */
|
|
34
|
+
export interface ResolvedWorkstream {
|
|
35
|
+
/** Workstream name */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Full workstream definition */
|
|
38
|
+
definition: WorkstreamDefinition;
|
|
39
|
+
/** How this workstream was resolved */
|
|
40
|
+
source: 'env' | 'file' | 'config';
|
|
41
|
+
}
|
|
42
|
+
/** @deprecated Use ResolvedWorkstream instead */
|
|
43
|
+
export type ResolvedStream = ResolvedWorkstream;
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/streams/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,kBAAkB,GAAG,QAAQ,CAAC;IACzC,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,mDAAmD;AACnD,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,+EAA+E;AAC/E,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,8DAA8D;IAC9D,eAAe,EAAE,kBAAkB,GAAG,QAAQ,CAAC;CAChD;AAED,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,yDAAyD;AACzD,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,UAAU,EAAE,oBAAoB,CAAC;IACjC,uCAAuC;IACvC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workstream Types — Type definitions for Squad Workstreams.
|
|
3
|
+
*
|
|
4
|
+
* Workstreams enable horizontal scaling by allowing multiple Squad instances
|
|
5
|
+
* (e.g., in different Codespaces) to each handle a scoped subset of work.
|
|
6
|
+
*
|
|
7
|
+
* @module streams/types
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/streams/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|