@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,181 @@
|
|
|
1
|
+
name: Squad Label Enforce
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [labeled]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
issues: write
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
enforce:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Enforce mutual exclusivity
|
|
18
|
+
uses: actions/github-script@v7
|
|
19
|
+
with:
|
|
20
|
+
script: |
|
|
21
|
+
const issue = context.payload.issue;
|
|
22
|
+
const appliedLabel = context.payload.label.name;
|
|
23
|
+
|
|
24
|
+
// Namespaces with mutual exclusivity rules
|
|
25
|
+
const EXCLUSIVE_PREFIXES = ['go:', 'release:', 'type:', 'priority:'];
|
|
26
|
+
|
|
27
|
+
// Skip if not a managed namespace label
|
|
28
|
+
if (!EXCLUSIVE_PREFIXES.some(p => appliedLabel.startsWith(p))) {
|
|
29
|
+
core.info(`Label ${appliedLabel} is not in a managed namespace — skipping`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const allLabels = issue.labels.map(l => l.name);
|
|
34
|
+
|
|
35
|
+
// Handle go: namespace (mutual exclusivity)
|
|
36
|
+
if (appliedLabel.startsWith('go:')) {
|
|
37
|
+
const otherGoLabels = allLabels.filter(l =>
|
|
38
|
+
l.startsWith('go:') && l !== appliedLabel
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
if (otherGoLabels.length > 0) {
|
|
42
|
+
// Remove conflicting go: labels
|
|
43
|
+
for (const label of otherGoLabels) {
|
|
44
|
+
await github.rest.issues.removeLabel({
|
|
45
|
+
owner: context.repo.owner,
|
|
46
|
+
repo: context.repo.repo,
|
|
47
|
+
issue_number: issue.number,
|
|
48
|
+
name: label
|
|
49
|
+
});
|
|
50
|
+
core.info(`Removed conflicting label: ${label}`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Post update comment
|
|
54
|
+
await github.rest.issues.createComment({
|
|
55
|
+
owner: context.repo.owner,
|
|
56
|
+
repo: context.repo.repo,
|
|
57
|
+
issue_number: issue.number,
|
|
58
|
+
body: `🏷️ Triage verdict updated → \`${appliedLabel}\``
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Auto-apply release:backlog if go:yes and no release target
|
|
63
|
+
if (appliedLabel === 'go:yes') {
|
|
64
|
+
const hasReleaseLabel = allLabels.some(l => l.startsWith('release:'));
|
|
65
|
+
if (!hasReleaseLabel) {
|
|
66
|
+
await github.rest.issues.addLabels({
|
|
67
|
+
owner: context.repo.owner,
|
|
68
|
+
repo: context.repo.repo,
|
|
69
|
+
issue_number: issue.number,
|
|
70
|
+
labels: ['release:backlog']
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
await github.rest.issues.createComment({
|
|
74
|
+
owner: context.repo.owner,
|
|
75
|
+
repo: context.repo.repo,
|
|
76
|
+
issue_number: issue.number,
|
|
77
|
+
body: `📋 Marked as \`release:backlog\` — assign a release target when ready.`
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
core.info('Applied release:backlog for go:yes issue');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Remove release: labels if go:no
|
|
85
|
+
if (appliedLabel === 'go:no') {
|
|
86
|
+
const releaseLabels = allLabels.filter(l => l.startsWith('release:'));
|
|
87
|
+
if (releaseLabels.length > 0) {
|
|
88
|
+
for (const label of releaseLabels) {
|
|
89
|
+
await github.rest.issues.removeLabel({
|
|
90
|
+
owner: context.repo.owner,
|
|
91
|
+
repo: context.repo.repo,
|
|
92
|
+
issue_number: issue.number,
|
|
93
|
+
name: label
|
|
94
|
+
});
|
|
95
|
+
core.info(`Removed release label from go:no issue: ${label}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Handle release: namespace (mutual exclusivity)
|
|
102
|
+
if (appliedLabel.startsWith('release:')) {
|
|
103
|
+
const otherReleaseLabels = allLabels.filter(l =>
|
|
104
|
+
l.startsWith('release:') && l !== appliedLabel
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
if (otherReleaseLabels.length > 0) {
|
|
108
|
+
// Remove conflicting release: labels
|
|
109
|
+
for (const label of otherReleaseLabels) {
|
|
110
|
+
await github.rest.issues.removeLabel({
|
|
111
|
+
owner: context.repo.owner,
|
|
112
|
+
repo: context.repo.repo,
|
|
113
|
+
issue_number: issue.number,
|
|
114
|
+
name: label
|
|
115
|
+
});
|
|
116
|
+
core.info(`Removed conflicting label: ${label}`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Post update comment
|
|
120
|
+
await github.rest.issues.createComment({
|
|
121
|
+
owner: context.repo.owner,
|
|
122
|
+
repo: context.repo.repo,
|
|
123
|
+
issue_number: issue.number,
|
|
124
|
+
body: `🏷️ Release target updated → \`${appliedLabel}\``
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Handle type: namespace (mutual exclusivity)
|
|
130
|
+
if (appliedLabel.startsWith('type:')) {
|
|
131
|
+
const otherTypeLabels = allLabels.filter(l =>
|
|
132
|
+
l.startsWith('type:') && l !== appliedLabel
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
if (otherTypeLabels.length > 0) {
|
|
136
|
+
for (const label of otherTypeLabels) {
|
|
137
|
+
await github.rest.issues.removeLabel({
|
|
138
|
+
owner: context.repo.owner,
|
|
139
|
+
repo: context.repo.repo,
|
|
140
|
+
issue_number: issue.number,
|
|
141
|
+
name: label
|
|
142
|
+
});
|
|
143
|
+
core.info(`Removed conflicting label: ${label}`);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
await github.rest.issues.createComment({
|
|
147
|
+
owner: context.repo.owner,
|
|
148
|
+
repo: context.repo.repo,
|
|
149
|
+
issue_number: issue.number,
|
|
150
|
+
body: `🏷️ Issue type updated → \`${appliedLabel}\``
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Handle priority: namespace (mutual exclusivity)
|
|
156
|
+
if (appliedLabel.startsWith('priority:')) {
|
|
157
|
+
const otherPriorityLabels = allLabels.filter(l =>
|
|
158
|
+
l.startsWith('priority:') && l !== appliedLabel
|
|
159
|
+
);
|
|
160
|
+
|
|
161
|
+
if (otherPriorityLabels.length > 0) {
|
|
162
|
+
for (const label of otherPriorityLabels) {
|
|
163
|
+
await github.rest.issues.removeLabel({
|
|
164
|
+
owner: context.repo.owner,
|
|
165
|
+
repo: context.repo.repo,
|
|
166
|
+
issue_number: issue.number,
|
|
167
|
+
name: label
|
|
168
|
+
});
|
|
169
|
+
core.info(`Removed conflicting label: ${label}`);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
await github.rest.issues.createComment({
|
|
173
|
+
owner: context.repo.owner,
|
|
174
|
+
repo: context.repo.repo,
|
|
175
|
+
issue_number: issue.number,
|
|
176
|
+
body: `🏷️ Priority updated → \`${appliedLabel}\``
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
core.info(`Label enforcement complete for ${appliedLabel}`);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: Squad Preview Validation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [preview]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
validate:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- uses: actions/setup-node@v4
|
|
17
|
+
with:
|
|
18
|
+
node-version: 22
|
|
19
|
+
|
|
20
|
+
- name: Validate version consistency
|
|
21
|
+
run: |
|
|
22
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
23
|
+
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
24
|
+
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
|
|
25
|
+
exit 1
|
|
26
|
+
fi
|
|
27
|
+
echo "✅ Version $VERSION validated in CHANGELOG.md"
|
|
28
|
+
|
|
29
|
+
- name: Run tests
|
|
30
|
+
run: node --test test/*.test.js
|
|
31
|
+
|
|
32
|
+
- name: Check no .ai-team/ or .squad/ files are tracked
|
|
33
|
+
run: |
|
|
34
|
+
FOUND_FORBIDDEN=0
|
|
35
|
+
if git ls-files --error-unmatch .ai-team/ 2>/dev/null; then
|
|
36
|
+
echo "::error::❌ .ai-team/ files are tracked on preview — this must not ship."
|
|
37
|
+
FOUND_FORBIDDEN=1
|
|
38
|
+
fi
|
|
39
|
+
if git ls-files --error-unmatch .squad/ 2>/dev/null; then
|
|
40
|
+
echo "::error::❌ .squad/ files are tracked on preview — this must not ship."
|
|
41
|
+
FOUND_FORBIDDEN=1
|
|
42
|
+
fi
|
|
43
|
+
if [ $FOUND_FORBIDDEN -eq 1 ]; then
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
echo "✅ No .ai-team/ or .squad/ files tracked — clean for release."
|
|
47
|
+
|
|
48
|
+
- name: Validate package.json version
|
|
49
|
+
run: |
|
|
50
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
51
|
+
if [ -z "$VERSION" ]; then
|
|
52
|
+
echo "::error::❌ No version field found in package.json."
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
echo "✅ package.json version: $VERSION"
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
name: Squad Promote
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
dry_run:
|
|
7
|
+
description: 'Dry run — show what would happen without pushing'
|
|
8
|
+
required: false
|
|
9
|
+
default: 'false'
|
|
10
|
+
type: choice
|
|
11
|
+
options: ['false', 'true']
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: write
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
dev-to-preview:
|
|
18
|
+
name: Promote dev → preview
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
with:
|
|
23
|
+
fetch-depth: 0
|
|
24
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- name: Configure git
|
|
27
|
+
run: |
|
|
28
|
+
git config user.name "github-actions[bot]"
|
|
29
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
30
|
+
|
|
31
|
+
- name: Fetch all branches
|
|
32
|
+
run: git fetch --all
|
|
33
|
+
|
|
34
|
+
- name: Show current state (dry run info)
|
|
35
|
+
run: |
|
|
36
|
+
echo "=== dev HEAD ===" && git log origin/dev -1 --oneline
|
|
37
|
+
echo "=== preview HEAD ===" && git log origin/preview -1 --oneline
|
|
38
|
+
echo "=== Files that would be stripped ==="
|
|
39
|
+
git diff origin/preview..origin/dev --name-only | grep -E "^(\.(ai-team|squad|ai-team-templates)|team-docs/|docs/proposals/)" || echo "(none)"
|
|
40
|
+
|
|
41
|
+
- name: Merge dev → preview (strip forbidden paths)
|
|
42
|
+
if: ${{ inputs.dry_run == 'false' }}
|
|
43
|
+
run: |
|
|
44
|
+
git checkout preview
|
|
45
|
+
git merge origin/dev --no-commit --no-ff -X theirs || true
|
|
46
|
+
|
|
47
|
+
# Strip forbidden paths from merge commit
|
|
48
|
+
git rm -rf --cached --ignore-unmatch \
|
|
49
|
+
.ai-team/ \
|
|
50
|
+
.squad/ \
|
|
51
|
+
.ai-team-templates/ \
|
|
52
|
+
team-docs/ \
|
|
53
|
+
"docs/proposals/" || true
|
|
54
|
+
|
|
55
|
+
# Commit if there are staged changes
|
|
56
|
+
if ! git diff --cached --quiet; then
|
|
57
|
+
git commit -m "chore: promote dev → preview (v$(node -e "console.log(require('./package.json').version)"))"
|
|
58
|
+
git push origin preview
|
|
59
|
+
echo "✅ Pushed preview branch"
|
|
60
|
+
else
|
|
61
|
+
echo "ℹ️ Nothing to commit — preview is already up to date"
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
- name: Dry run complete
|
|
65
|
+
if: ${{ inputs.dry_run == 'true' }}
|
|
66
|
+
run: echo "🔍 Dry run complete — no changes pushed."
|
|
67
|
+
|
|
68
|
+
preview-to-main:
|
|
69
|
+
name: Promote preview → main (release)
|
|
70
|
+
needs: dev-to-preview
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
with:
|
|
75
|
+
fetch-depth: 0
|
|
76
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
77
|
+
|
|
78
|
+
- name: Configure git
|
|
79
|
+
run: |
|
|
80
|
+
git config user.name "github-actions[bot]"
|
|
81
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
82
|
+
|
|
83
|
+
- name: Fetch all branches
|
|
84
|
+
run: git fetch --all
|
|
85
|
+
|
|
86
|
+
- name: Show current state
|
|
87
|
+
run: |
|
|
88
|
+
echo "=== preview HEAD ===" && git log origin/preview -1 --oneline
|
|
89
|
+
echo "=== main HEAD ===" && git log origin/main -1 --oneline
|
|
90
|
+
echo "=== Version ===" && node -e "console.log('v' + require('./package.json').version)"
|
|
91
|
+
|
|
92
|
+
- name: Validate preview is release-ready
|
|
93
|
+
run: |
|
|
94
|
+
git checkout preview
|
|
95
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
96
|
+
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
97
|
+
echo "::error::Version $VERSION not found in CHANGELOG.md — update before releasing"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
echo "✅ Version $VERSION has CHANGELOG entry"
|
|
101
|
+
|
|
102
|
+
# Verify no forbidden files on preview
|
|
103
|
+
FORBIDDEN=$(git ls-files | grep -E "^(\.(ai-team|squad|ai-team-templates)/|team-docs/|docs/proposals/)" || true)
|
|
104
|
+
if [ -n "$FORBIDDEN" ]; then
|
|
105
|
+
echo "::error::Forbidden files found on preview: $FORBIDDEN"
|
|
106
|
+
exit 1
|
|
107
|
+
fi
|
|
108
|
+
echo "✅ No forbidden files on preview"
|
|
109
|
+
|
|
110
|
+
- name: Merge preview → main
|
|
111
|
+
if: ${{ inputs.dry_run == 'false' }}
|
|
112
|
+
run: |
|
|
113
|
+
git checkout main
|
|
114
|
+
git merge origin/preview --no-ff -m "chore: promote preview → main (v$(node -e "console.log(require('./package.json').version)"))"
|
|
115
|
+
git push origin main
|
|
116
|
+
echo "✅ Pushed main — squad-release.yml will tag and publish the release"
|
|
117
|
+
|
|
118
|
+
- name: Dry run complete
|
|
119
|
+
if: ${{ inputs.dry_run == 'true' }}
|
|
120
|
+
run: echo "🔍 Dry run complete — no changes pushed."
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
name: Squad Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-node@v4
|
|
19
|
+
with:
|
|
20
|
+
node-version: 22
|
|
21
|
+
|
|
22
|
+
- name: Run tests
|
|
23
|
+
run: node --test test/*.test.js
|
|
24
|
+
|
|
25
|
+
- name: Validate version consistency
|
|
26
|
+
run: |
|
|
27
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
28
|
+
if ! grep -q "## \[$VERSION\]" CHANGELOG.md 2>/dev/null; then
|
|
29
|
+
echo "::error::Version $VERSION not found in CHANGELOG.md — update CHANGELOG.md before release"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
echo "✅ Version $VERSION validated in CHANGELOG.md"
|
|
33
|
+
|
|
34
|
+
- name: Read version from package.json
|
|
35
|
+
id: version
|
|
36
|
+
run: |
|
|
37
|
+
VERSION=$(node -e "console.log(require('./package.json').version)")
|
|
38
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
39
|
+
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
|
|
40
|
+
echo "📦 Version: $VERSION (tag: v$VERSION)"
|
|
41
|
+
|
|
42
|
+
- name: Check if tag already exists
|
|
43
|
+
id: check_tag
|
|
44
|
+
run: |
|
|
45
|
+
if git rev-parse "refs/tags/${{ steps.version.outputs.tag }}" >/dev/null 2>&1; then
|
|
46
|
+
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
47
|
+
echo "⏭️ Tag ${{ steps.version.outputs.tag }} already exists — skipping release."
|
|
48
|
+
else
|
|
49
|
+
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
50
|
+
echo "🆕 Tag ${{ steps.version.outputs.tag }} does not exist — creating release."
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
- name: Create git tag
|
|
54
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
55
|
+
run: |
|
|
56
|
+
git config user.name "github-actions[bot]"
|
|
57
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
58
|
+
git tag -a "${{ steps.version.outputs.tag }}" -m "Release ${{ steps.version.outputs.tag }}"
|
|
59
|
+
git push origin "${{ steps.version.outputs.tag }}"
|
|
60
|
+
|
|
61
|
+
- name: Create GitHub Release
|
|
62
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
63
|
+
env:
|
|
64
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
65
|
+
run: |
|
|
66
|
+
gh release create "${{ steps.version.outputs.tag }}" \
|
|
67
|
+
--title "${{ steps.version.outputs.tag }}" \
|
|
68
|
+
--generate-notes \
|
|
69
|
+
--latest
|
|
70
|
+
|
|
71
|
+
- name: Verify release
|
|
72
|
+
if: steps.check_tag.outputs.exists == 'false'
|
|
73
|
+
env:
|
|
74
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
75
|
+
run: |
|
|
76
|
+
gh release view "${{ steps.version.outputs.tag }}"
|
|
77
|
+
echo "✅ Release ${{ steps.version.outputs.tag }} created and verified."
|