timsquad 2.1.0 → 3.4.0
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.ko.md +288 -0
- package/README.md +170 -763
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +170 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/daemon.d.ts +7 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +229 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/feedback.d.ts +9 -0
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +235 -14
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/full.js +2 -2
- package/dist/commands/full.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge.d.ts +3 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +316 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/log.d.ts +27 -0
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +965 -0
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/meta-index.d.ts +3 -0
- package/dist/commands/meta-index.d.ts.map +1 -0
- package/dist/commands/meta-index.js +401 -0
- package/dist/commands/meta-index.js.map +1 -0
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +239 -4
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/retro.js +154 -6
- package/dist/commands/retro.js.map +1 -1
- package/dist/commands/skills.d.ts +12 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +231 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/upgrade.d.ts +8 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +292 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/workflow.d.ts +3 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +607 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/daemon/context-writer.d.ts +16 -0
- package/dist/daemon/context-writer.d.ts.map +1 -0
- package/dist/daemon/context-writer.js +35 -0
- package/dist/daemon/context-writer.js.map +1 -0
- package/dist/daemon/entry.d.ts +7 -0
- package/dist/daemon/entry.d.ts.map +1 -0
- package/dist/daemon/entry.js +17 -0
- package/dist/daemon/entry.js.map +1 -0
- package/dist/daemon/event-queue.d.ts +52 -0
- package/dist/daemon/event-queue.d.ts.map +1 -0
- package/dist/daemon/event-queue.js +255 -0
- package/dist/daemon/event-queue.js.map +1 -0
- package/dist/daemon/file-watcher.d.ts +19 -0
- package/dist/daemon/file-watcher.d.ts.map +1 -0
- package/dist/daemon/file-watcher.js +87 -0
- package/dist/daemon/file-watcher.js.map +1 -0
- package/dist/daemon/index.d.ts +29 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +296 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/jsonl-watcher.d.ts +49 -0
- package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
- package/dist/daemon/jsonl-watcher.js +258 -0
- package/dist/daemon/jsonl-watcher.js.map +1 -0
- package/dist/daemon/meta-cache.d.ts +63 -0
- package/dist/daemon/meta-cache.d.ts.map +1 -0
- package/dist/daemon/meta-cache.js +249 -0
- package/dist/daemon/meta-cache.js.map +1 -0
- package/dist/daemon/session-state.d.ts +19 -0
- package/dist/daemon/session-state.d.ts.map +1 -0
- package/dist/daemon/session-state.js +132 -0
- package/dist/daemon/session-state.js.map +1 -0
- package/dist/daemon/shutdown.d.ts +21 -0
- package/dist/daemon/shutdown.d.ts.map +1 -0
- package/dist/daemon/shutdown.js +164 -0
- package/dist/daemon/shutdown.js.map +1 -0
- package/dist/index.js +24 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-composer.d.ts +38 -0
- package/dist/lib/agent-composer.d.ts.map +1 -0
- package/dist/lib/agent-composer.js +128 -0
- package/dist/lib/agent-composer.js.map +1 -0
- package/dist/lib/agent-generator.d.ts +22 -0
- package/dist/lib/agent-generator.d.ts.map +1 -0
- package/dist/lib/agent-generator.js +150 -0
- package/dist/lib/agent-generator.js.map +1 -0
- package/dist/lib/ast-parser.d.ts +11 -0
- package/dist/lib/ast-parser.d.ts.map +1 -0
- package/dist/lib/ast-parser.js +282 -0
- package/dist/lib/ast-parser.js.map +1 -0
- package/dist/lib/compile-rules.d.ts +66 -0
- package/dist/lib/compile-rules.d.ts.map +1 -0
- package/dist/lib/compile-rules.js +114 -0
- package/dist/lib/compile-rules.js.map +1 -0
- package/dist/lib/compiler.d.ts +105 -0
- package/dist/lib/compiler.d.ts.map +1 -0
- package/dist/lib/compiler.js +368 -0
- package/dist/lib/compiler.js.map +1 -0
- package/dist/lib/config.d.ts +7 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +34 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/meta-index.d.ts +19 -0
- package/dist/lib/meta-index.d.ts.map +1 -0
- package/dist/lib/meta-index.js +573 -0
- package/dist/lib/meta-index.js.map +1 -0
- package/dist/lib/project.js +1 -1
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/skill-generator.d.ts +32 -0
- package/dist/lib/skill-generator.d.ts.map +1 -0
- package/dist/lib/skill-generator.js +187 -0
- package/dist/lib/skill-generator.js.map +1 -0
- package/dist/lib/template.d.ts +16 -2
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +115 -20
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/ui-index.d.ts +12 -0
- package/dist/lib/ui-index.d.ts.map +1 -0
- package/dist/lib/ui-index.js +239 -0
- package/dist/lib/ui-index.js.map +1 -0
- package/dist/lib/ui-parser.d.ts +12 -0
- package/dist/lib/ui-parser.d.ts.map +1 -0
- package/dist/lib/ui-parser.js +472 -0
- package/dist/lib/ui-parser.js.map +1 -0
- package/dist/lib/update-check.d.ts +6 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +121 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/upgrade-backup.d.ts +33 -0
- package/dist/lib/upgrade-backup.d.ts.map +1 -0
- package/dist/lib/upgrade-backup.js +101 -0
- package/dist/lib/upgrade-backup.js.map +1 -0
- package/dist/lib/version.d.ts +19 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +35 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-state.d.ts +48 -0
- package/dist/lib/workflow-state.d.ts.map +1 -0
- package/dist/lib/workflow-state.js +67 -0
- package/dist/lib/workflow-state.js.map +1 -0
- package/dist/types/config.d.ts +103 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +184 -9
- package/dist/types/config.js.map +1 -1
- package/dist/types/feedback.d.ts +7 -0
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/feedback.js +1 -1
- package/dist/types/feedback.js.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/meta-index.d.ts +146 -0
- package/dist/types/meta-index.d.ts.map +1 -0
- package/dist/types/meta-index.js +7 -0
- package/dist/types/meta-index.js.map +1 -0
- package/dist/types/project.d.ts +19 -3
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +23 -0
- package/dist/types/project.js.map +1 -1
- package/dist/types/task-log.d.ts +208 -0
- package/dist/types/task-log.d.ts.map +1 -0
- package/dist/types/task-log.js +6 -0
- package/dist/types/task-log.js.map +1 -0
- package/dist/types/ui-meta.d.ts +118 -0
- package/dist/types/ui-meta.d.ts.map +1 -0
- package/dist/types/ui-meta.js +7 -0
- package/dist/types/ui-meta.js.map +1 -0
- package/package.json +12 -4
- package/templates/base/agents/base/tsq-architect.md +68 -0
- package/templates/base/agents/base/tsq-dba.md +56 -0
- package/templates/base/agents/base/tsq-designer.md +72 -0
- package/templates/base/agents/base/tsq-developer.md +67 -0
- package/templates/base/agents/base/tsq-qa.md +55 -0
- package/templates/base/agents/base/tsq-security.md +65 -0
- package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
- package/templates/base/agents/overlays/domain/mobile/_common.md +13 -0
- package/templates/base/agents/overlays/platform/claude-code.md +12 -0
- package/templates/base/config.template.yaml +213 -0
- package/templates/base/knowledge/checklists/accessibility.md +37 -0
- package/templates/base/knowledge/checklists/architecture-review.md +28 -0
- package/templates/base/knowledge/checklists/database-standards.md +84 -0
- package/templates/base/knowledge/checklists/design-reference.md +97 -0
- package/templates/base/knowledge/checklists/security.md +50 -0
- package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
- package/templates/base/knowledge/domains/_template.md +16 -0
- package/templates/base/knowledge/platforms/_template.md +16 -0
- package/templates/base/knowledge/templates/sequence-report.md +44 -0
- package/templates/base/knowledge/templates/task-result.md +105 -0
- package/templates/base/skills/_template/SKILL.md +59 -0
- package/templates/base/skills/_template/references/_template.md +35 -0
- package/templates/base/skills/_template/rules/_sections.md +34 -0
- package/templates/base/skills/_template/rules/_template.md +32 -0
- package/templates/base/skills/_template/scripts/_template.sh +31 -0
- package/templates/base/skills/architecture/SKILL.md +54 -0
- package/templates/base/skills/architecture/references/adr-template.md +50 -0
- package/templates/base/skills/architecture/references/api-design.md +64 -0
- package/templates/base/skills/backend/node/SKILL.md +81 -0
- package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
- package/templates/base/skills/backend/node/rules/deployment.md +33 -0
- package/templates/base/skills/backend/node/rules/env-config.md +41 -0
- package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
- package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
- package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
- package/templates/base/skills/backend/node/rules/middleware.md +56 -0
- package/templates/base/skills/backend/node/rules/testing.md +82 -0
- package/templates/base/skills/coding/SKILL.md +47 -0
- package/templates/base/skills/coding/rules/patterns.md +81 -0
- package/templates/base/skills/controller/SKILL.md +111 -0
- package/templates/base/skills/controller/references/README.md +35 -0
- package/templates/base/skills/controller/rules/README.md +18 -0
- package/templates/base/skills/database/SKILL.md +98 -0
- package/templates/base/skills/database/prisma/SKILL.md +57 -0
- package/templates/base/skills/database/prisma/rules/queries.md +133 -0
- package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
- package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
- package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
- package/templates/base/skills/frontend/react/SKILL.md +86 -0
- package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
- package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
- package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
- package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
- package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
- package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
- package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
- package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
- package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
- package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
- package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
- package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
- package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
- package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
- package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
- package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
- package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
- package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
- package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
- package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
- package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
- package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
- package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
- package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
- package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
- package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
- package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
- package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
- package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
- package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
- package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
- package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
- package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
- package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
- package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
- package/templates/base/skills/mobile/dart/SKILL.md +69 -0
- package/templates/base/skills/mobile/dart/rules/async-patterns.md +112 -0
- package/templates/base/skills/mobile/dart/rules/code-style.md +96 -0
- package/templates/base/skills/mobile/dart/rules/null-safety.md +84 -0
- package/templates/base/skills/mobile/dart/rules/type-system.md +111 -0
- package/templates/base/skills/mobile/flutter/SKILL.md +89 -0
- package/templates/base/skills/mobile/flutter/ci-cd/SKILL.md +82 -0
- package/templates/base/skills/mobile/flutter/ci-cd/references/ci-cd-pipeline.md +314 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/code-signing.md +106 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/codemagic-setup.md +116 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/fastlane-setup.md +105 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/github-actions.md +112 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/store-deployment.md +106 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/versioning.md +107 -0
- package/templates/base/skills/mobile/flutter/i18n/SKILL.md +78 -0
- package/templates/base/skills/mobile/flutter/i18n/references/i18n-architecture.md +225 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/arb-files.md +182 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/locale-switching.md +226 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/localization-setup.md +137 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/plural-gender.md +159 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/text-direction.md +199 -0
- package/templates/base/skills/mobile/flutter/monitoring/SKILL.md +81 -0
- package/templates/base/skills/mobile/flutter/monitoring/references/monitoring-architecture.md +269 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/analytics.md +227 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/crashlytics-setup.md +195 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/logging.md +258 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/performance-monitoring.md +248 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/sentry-integration.md +249 -0
- package/templates/base/skills/mobile/flutter/networking/SKILL.md +88 -0
- package/templates/base/skills/mobile/flutter/networking/references/api-client-architecture.md +305 -0
- package/templates/base/skills/mobile/flutter/networking/rules/caching.md +212 -0
- package/templates/base/skills/mobile/flutter/networking/rules/connectivity.md +213 -0
- package/templates/base/skills/mobile/flutter/networking/rules/dio-setup.md +159 -0
- package/templates/base/skills/mobile/flutter/networking/rules/error-handling.md +209 -0
- package/templates/base/skills/mobile/flutter/networking/rules/interceptors.md +205 -0
- package/templates/base/skills/mobile/flutter/networking/rules/retrofit-patterns.md +194 -0
- package/templates/base/skills/mobile/flutter/push-notifications/SKILL.md +87 -0
- package/templates/base/skills/mobile/flutter/push-notifications/references/notification-architecture.md +340 -0
- package/templates/base/skills/mobile/flutter/push-notifications/references/platform-setup.md +286 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/background-processing.md +308 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/deep-linking.md +217 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/fcm-setup.md +164 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/local-notifications.md +262 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-handling.md +210 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-permissions.md +246 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/rich-notifications.md +320 -0
- package/templates/base/skills/mobile/flutter/references/freezed-patterns.md +162 -0
- package/templates/base/skills/mobile/flutter/references/project-structure.md +170 -0
- package/templates/base/skills/mobile/flutter/rules/animations.md +112 -0
- package/templates/base/skills/mobile/flutter/rules/architecture.md +121 -0
- package/templates/base/skills/mobile/flutter/rules/navigation-routing.md +117 -0
- package/templates/base/skills/mobile/flutter/rules/performance.md +112 -0
- package/templates/base/skills/mobile/flutter/rules/platform-adaptive.md +126 -0
- package/templates/base/skills/mobile/flutter/rules/state-management.md +110 -0
- package/templates/base/skills/mobile/flutter/rules/testing.md +131 -0
- package/templates/base/skills/mobile/flutter/rules/widget-conventions.md +122 -0
- package/templates/base/skills/mobile/flutter/security/SKILL.md +86 -0
- package/templates/base/skills/mobile/flutter/security/references/mobile-security-checklist.md +168 -0
- package/templates/base/skills/mobile/flutter/security/rules/api-key-protection.md +206 -0
- package/templates/base/skills/mobile/flutter/security/rules/authentication.md +248 -0
- package/templates/base/skills/mobile/flutter/security/rules/data-protection.md +271 -0
- package/templates/base/skills/mobile/flutter/security/rules/obfuscation.md +213 -0
- package/templates/base/skills/mobile/flutter/security/rules/secure-storage.md +171 -0
- package/templates/base/skills/mobile/flutter/security/rules/ssl-pinning.md +197 -0
- package/templates/base/skills/planning/SKILL.md +58 -0
- package/templates/base/skills/planning/references/prd-guide.md +47 -0
- package/templates/base/skills/planning/references/requirements-guide.md +46 -0
- package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
- package/templates/base/skills/retrospective/SKILL.md +102 -0
- package/templates/base/skills/security/SKILL.md +55 -0
- package/templates/base/skills/security/rules/owasp-examples.md +119 -0
- package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
- package/templates/base/skills/testing/SKILL.md +63 -0
- package/templates/base/skills/testing/references/testing-patterns.md +103 -0
- package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
- package/templates/base/skills/typescript/SKILL.md +67 -0
- package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
- package/templates/base/skills/typescript/rules/utility-types.md +76 -0
- package/templates/base/skills/ui-design/SKILL.md +70 -0
- package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
- package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
- package/templates/platforms/claude-code/CLAUDE.md.template +89 -0
- package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
- package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
- package/templates/platforms/claude-code/rules/phase-management.md +23 -0
- package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
- package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
- package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
- package/templates/platforms/claude-code/scripts/completion-guard.sh +57 -0
- package/templates/platforms/claude-code/scripts/phase-guard.sh +79 -0
- package/templates/platforms/claude-code/settings.json +98 -0
- package/templates/project-types/api-backend/config.yaml +227 -0
- package/templates/project-types/api-backend/process/workflow.xml +214 -0
- package/templates/project-types/fintech/config.yaml +151 -0
- package/templates/project-types/fintech/process/workflow.xml +316 -0
- package/templates/project-types/infra/config.yaml +327 -0
- package/templates/project-types/infra/process/workflow.xml +296 -0
- package/templates/project-types/mobile-app/config.yaml +123 -0
- package/templates/project-types/mobile-app/process/workflow.xml +191 -0
- package/templates/project-types/platform/config.yaml +254 -0
- package/templates/project-types/platform/process/workflow.xml +254 -0
- package/templates/project-types/web-app/config.yaml +198 -0
- package/templates/project-types/web-app/process/workflow.xml +210 -0
- package/templates/project-types/web-service/config.yaml +136 -0
- package/templates/project-types/web-service/process/workflow.xml +184 -0
- package/templates/common/CLAUDE.md.template +0 -254
- package/templates/common/claude/agents/tsq-dba.md +0 -311
- package/templates/common/claude/agents/tsq-designer.md +0 -323
- package/templates/common/claude/agents/tsq-developer.md +0 -177
- package/templates/common/claude/agents/tsq-planner.md +0 -190
- package/templates/common/claude/agents/tsq-prompter.md +0 -356
- package/templates/common/claude/agents/tsq-qa.md +0 -168
- package/templates/common/claude/agents/tsq-retro.md +0 -193
- package/templates/common/claude/agents/tsq-security.md +0 -221
- package/templates/common/claude/hooks/auto-metrics.sh +0 -165
- package/templates/common/claude/hooks/auto-worklog.sh +0 -245
- package/templates/common/claude/hooks/event-logger.sh +0 -208
- package/templates/common/claude/settings.json +0 -86
- package/templates/common/claude/skills/architecture/SKILL.md +0 -123
- package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
- package/templates/common/claude/skills/coding/SKILL.md +0 -171
- package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
- package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
- package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
- package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
- package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
- package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
- package/templates/common/claude/skills/planning/SKILL.md +0 -90
- package/templates/common/claude/skills/security/SKILL.md +0 -234
- package/templates/common/claude/skills/testing/SKILL.md +0 -146
- package/templates/common/claude/skills/typescript/SKILL.md +0 -435
- package/templates/common/config.template.yaml +0 -132
- /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
- /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
- /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
- /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
- /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
- /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
- /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
- /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
- /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
- /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
- /package/templates/{common → base}/timsquad/process/phase-checklist.yaml +0 -0
- /package/templates/{common → base}/timsquad/process/state-machine.xml +0 -0
- /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
- /package/templates/{common → base}/timsquad/process/workflow-base.xml +0 -0
- /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
- /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
- /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-backup.d.ts","sourceRoot":"","sources":["../../src/lib/upgrade-backup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,UAAU,cAAc;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAYD;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwB5E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGrE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAS3F;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upgrade backup/restore module.
|
|
3
|
+
* Creates a single backup directory before each upgrade, enabling rollback to the previous version.
|
|
4
|
+
*/
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import fs from 'fs-extra';
|
|
7
|
+
const BACKUP_DIR = '.timsquad/.upgrade-backup';
|
|
8
|
+
const MANIFEST_FILE = 'backup-manifest.json';
|
|
9
|
+
/** Assets to back up before upgrade (relative to project root) */
|
|
10
|
+
const BACKUP_TARGETS = [
|
|
11
|
+
{ path: '.claude/agents', type: 'dir' },
|
|
12
|
+
{ path: '.claude/skills', type: 'dir' },
|
|
13
|
+
{ path: '.claude/knowledge', type: 'dir' },
|
|
14
|
+
{ path: '.claude/rules', type: 'dir' },
|
|
15
|
+
{ path: '.claude/settings.json', type: 'file' },
|
|
16
|
+
{ path: 'CLAUDE.md', type: 'file' },
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Create backup of all upgradeable assets before upgrade.
|
|
20
|
+
* Overwrites any existing backup (single backup only).
|
|
21
|
+
*/
|
|
22
|
+
export async function createUpgradeBackup(projectRoot, currentVersion) {
|
|
23
|
+
const backupRoot = path.join(projectRoot, BACKUP_DIR);
|
|
24
|
+
// Remove previous backup
|
|
25
|
+
await fs.remove(backupRoot);
|
|
26
|
+
await fs.ensureDir(backupRoot);
|
|
27
|
+
const entries = [];
|
|
28
|
+
for (const target of BACKUP_TARGETS) {
|
|
29
|
+
const srcPath = path.join(projectRoot, target.path);
|
|
30
|
+
const destPath = path.join(backupRoot, target.path);
|
|
31
|
+
if (!await fs.pathExists(srcPath))
|
|
32
|
+
continue;
|
|
33
|
+
if (target.type === 'dir') {
|
|
34
|
+
await fs.copy(srcPath, destPath);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
await fs.ensureDir(path.dirname(destPath));
|
|
38
|
+
await fs.copy(srcPath, destPath);
|
|
39
|
+
}
|
|
40
|
+
entries.push(target.path);
|
|
41
|
+
}
|
|
42
|
+
// Write manifest
|
|
43
|
+
const manifest = {
|
|
44
|
+
framework_version: currentVersion,
|
|
45
|
+
created: new Date().toISOString(),
|
|
46
|
+
entries,
|
|
47
|
+
};
|
|
48
|
+
await fs.writeJson(path.join(backupRoot, MANIFEST_FILE), manifest, { spaces: 2 });
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Restore from backup directory.
|
|
52
|
+
* Returns the framework_version that was backed up.
|
|
53
|
+
*/
|
|
54
|
+
export async function restoreFromBackup(projectRoot) {
|
|
55
|
+
const backupRoot = path.join(projectRoot, BACKUP_DIR);
|
|
56
|
+
const manifest = await getBackupManifest(projectRoot);
|
|
57
|
+
if (!manifest) {
|
|
58
|
+
throw new Error('No upgrade backup found. Run "tsq upgrade" first to create a backup.');
|
|
59
|
+
}
|
|
60
|
+
for (const entry of manifest.entries) {
|
|
61
|
+
const srcPath = path.join(backupRoot, entry);
|
|
62
|
+
const destPath = path.join(projectRoot, entry);
|
|
63
|
+
if (!await fs.pathExists(srcPath))
|
|
64
|
+
continue;
|
|
65
|
+
// For directories, remove target first to avoid merge conflicts
|
|
66
|
+
const stat = await fs.stat(srcPath);
|
|
67
|
+
if (stat.isDirectory()) {
|
|
68
|
+
await fs.remove(destPath);
|
|
69
|
+
}
|
|
70
|
+
await fs.copy(srcPath, destPath, { overwrite: true });
|
|
71
|
+
}
|
|
72
|
+
return manifest.framework_version;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if a backup exists
|
|
76
|
+
*/
|
|
77
|
+
export async function hasBackup(projectRoot) {
|
|
78
|
+
const manifestPath = path.join(projectRoot, BACKUP_DIR, MANIFEST_FILE);
|
|
79
|
+
return fs.pathExists(manifestPath);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get backup manifest (null if no backup)
|
|
83
|
+
*/
|
|
84
|
+
export async function getBackupManifest(projectRoot) {
|
|
85
|
+
const manifestPath = path.join(projectRoot, BACKUP_DIR, MANIFEST_FILE);
|
|
86
|
+
if (!await fs.pathExists(manifestPath))
|
|
87
|
+
return null;
|
|
88
|
+
try {
|
|
89
|
+
return await fs.readJson(manifestPath);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Remove backup directory after successful rollback
|
|
97
|
+
*/
|
|
98
|
+
export async function removeBackup(projectRoot) {
|
|
99
|
+
await fs.remove(path.join(projectRoot, BACKUP_DIR));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=upgrade-backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upgrade-backup.js","sourceRoot":"","sources":["../../src/lib/upgrade-backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared version utilities.
|
|
3
|
+
* Used by update-check, upgrade command, and CLI entrypoint.
|
|
4
|
+
*/
|
|
5
|
+
/** Default version for projects created before framework_version was introduced */
|
|
6
|
+
export declare const LEGACY_VERSION = "3.0.0";
|
|
7
|
+
/**
|
|
8
|
+
* Read installed package version from package.json
|
|
9
|
+
*/
|
|
10
|
+
export declare function getInstalledVersion(): string;
|
|
11
|
+
/**
|
|
12
|
+
* Parse semver string to [major, minor, patch]
|
|
13
|
+
*/
|
|
14
|
+
export declare function parseSemver(v: string): [number, number, number];
|
|
15
|
+
/**
|
|
16
|
+
* Returns true if version `a` is newer than version `b`
|
|
17
|
+
*/
|
|
18
|
+
export declare function isNewer(a: string, b: string): boolean;
|
|
19
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,mFAAmF;AACnF,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG/D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAMrD"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared version utilities.
|
|
3
|
+
* Used by update-check, upgrade command, and CLI entrypoint.
|
|
4
|
+
*/
|
|
5
|
+
import { createRequire } from 'module';
|
|
6
|
+
/** Default version for projects created before framework_version was introduced */
|
|
7
|
+
export const LEGACY_VERSION = '3.0.0';
|
|
8
|
+
/**
|
|
9
|
+
* Read installed package version from package.json
|
|
10
|
+
*/
|
|
11
|
+
export function getInstalledVersion() {
|
|
12
|
+
const require = createRequire(import.meta.url);
|
|
13
|
+
const pkg = require('../../package.json');
|
|
14
|
+
return pkg.version;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse semver string to [major, minor, patch]
|
|
18
|
+
*/
|
|
19
|
+
export function parseSemver(v) {
|
|
20
|
+
const parts = v.split('.').map(Number);
|
|
21
|
+
return [parts[0] || 0, parts[1] || 0, parts[2] || 0];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Returns true if version `a` is newer than version `b`
|
|
25
|
+
*/
|
|
26
|
+
export function isNewer(a, b) {
|
|
27
|
+
const [aMaj, aMin, aPat] = parseSemver(a);
|
|
28
|
+
const [bMaj, bMin, bPat] = parseSemver(b);
|
|
29
|
+
if (aMaj !== bMaj)
|
|
30
|
+
return aMaj > bMaj;
|
|
31
|
+
if (aMin !== bMin)
|
|
32
|
+
return aMin > bMin;
|
|
33
|
+
return aPat > bPat;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,mFAAmF;AACnF,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1C,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAS;IAC1C,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AutomationConfig } from '../types/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tracked task in a sequence
|
|
4
|
+
*/
|
|
5
|
+
export interface TrackedTask {
|
|
6
|
+
agent: string;
|
|
7
|
+
task_log: string;
|
|
8
|
+
completed_at: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Sequence state within workflow
|
|
12
|
+
*/
|
|
13
|
+
export interface SequenceWorkflowState {
|
|
14
|
+
status: 'pending' | 'in_progress' | 'completed';
|
|
15
|
+
phase: string;
|
|
16
|
+
expected_agents: string[];
|
|
17
|
+
completed_tasks: TrackedTask[];
|
|
18
|
+
report_path: string | null;
|
|
19
|
+
l2_created: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Full workflow state
|
|
23
|
+
*/
|
|
24
|
+
export interface WorkflowState {
|
|
25
|
+
schema_version: string;
|
|
26
|
+
automation: AutomationConfig;
|
|
27
|
+
current_phase: {
|
|
28
|
+
id: string;
|
|
29
|
+
started_at: string;
|
|
30
|
+
sequences: string[];
|
|
31
|
+
} | null;
|
|
32
|
+
sequences: Record<string, SequenceWorkflowState>;
|
|
33
|
+
completed_phases: string[];
|
|
34
|
+
pending_feedback: string[];
|
|
35
|
+
}
|
|
36
|
+
export declare function getWorkflowStatePath(projectRoot: string): string;
|
|
37
|
+
export declare function loadWorkflowState(projectRoot: string): Promise<WorkflowState>;
|
|
38
|
+
export declare function saveWorkflowState(projectRoot: string, state: WorkflowState): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a sequence is complete (all expected agents have tasks)
|
|
41
|
+
*/
|
|
42
|
+
export declare function isSequenceComplete(seq: SequenceWorkflowState): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Find matching active sequence for an agent
|
|
45
|
+
* Returns null if 0 or multiple matches (ambiguous)
|
|
46
|
+
*/
|
|
47
|
+
export declare function findSequenceForAgent(state: WorkflowState, agent: string): string | null;
|
|
48
|
+
//# sourceMappingURL=workflow-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../../src/lib/workflow-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,WAAW,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,aAAa,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,GAAG,IAAI,CAAC;IACT,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACjD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAoBD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAWnF;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAItE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAaf"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
const DEFAULT_AUTOMATION = {
|
|
4
|
+
sequence_log: true,
|
|
5
|
+
phase_log: true,
|
|
6
|
+
phase_gate: true,
|
|
7
|
+
metrics: true,
|
|
8
|
+
retro: true,
|
|
9
|
+
feedback: true,
|
|
10
|
+
};
|
|
11
|
+
const DEFAULT_STATE = {
|
|
12
|
+
schema_version: '1.0.0',
|
|
13
|
+
automation: DEFAULT_AUTOMATION,
|
|
14
|
+
current_phase: null,
|
|
15
|
+
sequences: {},
|
|
16
|
+
completed_phases: [],
|
|
17
|
+
pending_feedback: [],
|
|
18
|
+
};
|
|
19
|
+
export function getWorkflowStatePath(projectRoot) {
|
|
20
|
+
return path.join(projectRoot, '.timsquad', 'state', 'workflow.json');
|
|
21
|
+
}
|
|
22
|
+
export async function loadWorkflowState(projectRoot) {
|
|
23
|
+
const statePath = getWorkflowStatePath(projectRoot);
|
|
24
|
+
if (await fs.pathExists(statePath)) {
|
|
25
|
+
const data = await fs.readJson(statePath);
|
|
26
|
+
return {
|
|
27
|
+
...DEFAULT_STATE,
|
|
28
|
+
...data,
|
|
29
|
+
automation: { ...DEFAULT_AUTOMATION, ...(data.automation || {}) },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return { ...DEFAULT_STATE };
|
|
33
|
+
}
|
|
34
|
+
export async function saveWorkflowState(projectRoot, state) {
|
|
35
|
+
const statePath = getWorkflowStatePath(projectRoot);
|
|
36
|
+
await fs.ensureDir(path.dirname(statePath));
|
|
37
|
+
await fs.writeJson(statePath, state, { spaces: 2 });
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if a sequence is complete (all expected agents have tasks)
|
|
41
|
+
*/
|
|
42
|
+
export function isSequenceComplete(seq) {
|
|
43
|
+
if (seq.expected_agents.length === 0)
|
|
44
|
+
return false;
|
|
45
|
+
const completedAgents = new Set(seq.completed_tasks.map(t => t.agent));
|
|
46
|
+
return seq.expected_agents.every(a => completedAgents.has(a));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Find matching active sequence for an agent
|
|
50
|
+
* Returns null if 0 or multiple matches (ambiguous)
|
|
51
|
+
*/
|
|
52
|
+
export function findSequenceForAgent(state, agent) {
|
|
53
|
+
const matches = [];
|
|
54
|
+
for (const [seqId, seq] of Object.entries(state.sequences)) {
|
|
55
|
+
if (seq.status === 'completed')
|
|
56
|
+
continue;
|
|
57
|
+
if (!seq.expected_agents.includes(agent))
|
|
58
|
+
continue;
|
|
59
|
+
// Agent hasn't completed a task in this sequence yet
|
|
60
|
+
const alreadyDone = seq.completed_tasks.some(t => t.agent === agent);
|
|
61
|
+
if (alreadyDone)
|
|
62
|
+
continue;
|
|
63
|
+
matches.push(seqId);
|
|
64
|
+
}
|
|
65
|
+
return matches.length === 1 ? matches[0] : null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=workflow-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-state.js","sourceRoot":"","sources":["../../src/lib/workflow-state.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectType, ProjectLevel, AgentType } from './project.js';
|
|
1
|
+
import type { ProjectType, ProjectLevel, AgentType, Platform, Domain } from './project.js';
|
|
2
2
|
/**
|
|
3
3
|
* Methodology settings
|
|
4
4
|
*/
|
|
@@ -44,6 +44,59 @@ export interface ConsensusConfig {
|
|
|
44
44
|
enabled: boolean;
|
|
45
45
|
required_for?: string[];
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Knowledge configuration
|
|
49
|
+
*/
|
|
50
|
+
export interface KnowledgeConfig {
|
|
51
|
+
platforms: string[];
|
|
52
|
+
domains: string[];
|
|
53
|
+
checklists: string[];
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Naming convention configuration
|
|
57
|
+
* PM이 Phase/Sequence/Task ID를 자동 생성할 때 사용하는 패턴
|
|
58
|
+
*/
|
|
59
|
+
export interface NamingConfig {
|
|
60
|
+
phase: {
|
|
61
|
+
/** Phase ID 패턴 (기본: "P{N}") */
|
|
62
|
+
pattern: string;
|
|
63
|
+
/** Phase 순서 (SSOT 프로세스 순서) */
|
|
64
|
+
order: string[];
|
|
65
|
+
};
|
|
66
|
+
sequence: {
|
|
67
|
+
/** Sequence ID 패턴 (기본: "P{N}-S{NNN}") */
|
|
68
|
+
pattern: string;
|
|
69
|
+
/** 시퀀스 번호 zero-padding 자릿수 */
|
|
70
|
+
counter_pad: number;
|
|
71
|
+
};
|
|
72
|
+
task: {
|
|
73
|
+
/** Task ID 패턴 (기본: "P{N}-S{NNN}-T{NNN}") */
|
|
74
|
+
pattern: string;
|
|
75
|
+
/** 태스크 번호 zero-padding 자릿수 */
|
|
76
|
+
counter_pad: number;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Default naming configuration
|
|
81
|
+
*/
|
|
82
|
+
export declare const DEFAULT_NAMING: NamingConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Workflow automation configuration
|
|
85
|
+
*/
|
|
86
|
+
export interface AutomationConfig {
|
|
87
|
+
/** Auto-create L2 sequence log when all expected agents complete tasks */
|
|
88
|
+
sequence_log: boolean;
|
|
89
|
+
/** Auto-create L3 phase log when all sequences complete */
|
|
90
|
+
phase_log: boolean;
|
|
91
|
+
/** Auto-run phase gate check after L3 creation */
|
|
92
|
+
phase_gate: boolean;
|
|
93
|
+
/** Auto-collect metrics on session end */
|
|
94
|
+
metrics: boolean;
|
|
95
|
+
/** Auto-generate retrospective on phase end */
|
|
96
|
+
retro: boolean;
|
|
97
|
+
/** Auto-execute L2/L3 feedback actions (workflow state, phase gate blocking) */
|
|
98
|
+
feedback: boolean;
|
|
99
|
+
}
|
|
47
100
|
/**
|
|
48
101
|
* Full TimSquad configuration
|
|
49
102
|
*/
|
|
@@ -53,17 +106,65 @@ export interface TimsquadConfig {
|
|
|
53
106
|
type: ProjectType;
|
|
54
107
|
level: ProjectLevel;
|
|
55
108
|
created: string;
|
|
109
|
+
framework_version?: string;
|
|
110
|
+
domain?: Domain;
|
|
111
|
+
platform?: Platform;
|
|
112
|
+
stack?: string[];
|
|
113
|
+
workspaces?: string[];
|
|
56
114
|
};
|
|
57
115
|
methodology: MethodologyConfig;
|
|
58
116
|
stack: StackConfig;
|
|
59
|
-
agents: Record<AgentType, AgentConfig
|
|
117
|
+
agents: Partial<Record<AgentType, AgentConfig>>;
|
|
118
|
+
knowledge: KnowledgeConfig;
|
|
60
119
|
quality: QualityConfig;
|
|
120
|
+
naming?: NamingConfig;
|
|
61
121
|
consensus?: ConsensusConfig;
|
|
62
122
|
ssot?: {
|
|
63
123
|
required: string[];
|
|
64
124
|
optional: string[];
|
|
65
125
|
};
|
|
66
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Default configuration
|
|
129
|
+
*/
|
|
130
|
+
/**
|
|
131
|
+
* Agent presets by project type
|
|
132
|
+
*/
|
|
133
|
+
export declare const AGENT_PRESETS: Record<ProjectType, AgentType[]>;
|
|
134
|
+
/**
|
|
135
|
+
* Skill presets by project type.
|
|
136
|
+
* BASE_SKILLS are always included; these are the type-specific additions.
|
|
137
|
+
*/
|
|
138
|
+
export declare const SKILL_PRESETS: Record<ProjectType, string[]>;
|
|
139
|
+
/** Skills always deployed regardless of project type */
|
|
140
|
+
export declare const BASE_SKILLS: string[];
|
|
141
|
+
/**
|
|
142
|
+
* Knowledge presets by project type.
|
|
143
|
+
* BASE_KNOWLEDGE is always included; these are the type-specific additions.
|
|
144
|
+
*/
|
|
145
|
+
export declare const KNOWLEDGE_PRESETS: Record<ProjectType, string[]>;
|
|
146
|
+
/** Knowledge always deployed */
|
|
147
|
+
export declare const BASE_KNOWLEDGE: string[];
|
|
148
|
+
/**
|
|
149
|
+
* Domain-specific skill additions (v4.0 Composition Layer)
|
|
150
|
+
* Merged with SKILL_PRESETS[type] during init
|
|
151
|
+
*/
|
|
152
|
+
export declare const DOMAIN_SKILL_MAP: Partial<Record<Domain, string[]>>;
|
|
153
|
+
/**
|
|
154
|
+
* Domain-specific knowledge additions (v4.0 Composition Layer)
|
|
155
|
+
* Merged with KNOWLEDGE_PRESETS[type] during init.
|
|
156
|
+
* Only add domain-unique knowledge not already in KNOWLEDGE_PRESETS.
|
|
157
|
+
*/
|
|
158
|
+
export declare const DOMAIN_KNOWLEDGE_MAP: Partial<Record<Domain, string[]>>;
|
|
159
|
+
/**
|
|
160
|
+
* Stack-to-skill mapping (v4.0 Composition Layer)
|
|
161
|
+
* Auto-selects skills based on detected/configured stack
|
|
162
|
+
*/
|
|
163
|
+
export declare const STACK_SKILL_MAP: Record<string, string[]>;
|
|
164
|
+
/**
|
|
165
|
+
* Build agents config from preset
|
|
166
|
+
*/
|
|
167
|
+
export declare function buildAgentsConfig(projectType: ProjectType): Partial<Record<AgentType, AgentConfig>>;
|
|
67
168
|
/**
|
|
68
169
|
* Default configuration
|
|
69
170
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.js
CHANGED
|
@@ -1,3 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default naming configuration
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_NAMING = {
|
|
5
|
+
phase: {
|
|
6
|
+
pattern: 'P{N}',
|
|
7
|
+
order: ['planning', 'design', 'implementation', 'review', 'security', 'deployment'],
|
|
8
|
+
},
|
|
9
|
+
sequence: {
|
|
10
|
+
pattern: 'P{N}-S{NNN}',
|
|
11
|
+
counter_pad: 3,
|
|
12
|
+
},
|
|
13
|
+
task: {
|
|
14
|
+
pattern: 'P{N}-S{NNN}-T{NNN}',
|
|
15
|
+
counter_pad: 3,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Default configuration
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Agent presets by project type
|
|
23
|
+
*/
|
|
24
|
+
export const AGENT_PRESETS = {
|
|
25
|
+
'web-service': ['architect', 'developer', 'designer', 'qa'],
|
|
26
|
+
'api-backend': ['architect', 'developer', 'dba', 'qa'],
|
|
27
|
+
'fintech': ['architect', 'developer', 'dba', 'security', 'qa'],
|
|
28
|
+
'web-app': ['architect', 'developer', 'designer', 'qa'],
|
|
29
|
+
'platform': ['architect', 'developer', 'qa'],
|
|
30
|
+
'infra': ['architect', 'developer', 'security'],
|
|
31
|
+
'mobile-app': ['architect', 'developer', 'designer', 'qa'],
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Skill presets by project type.
|
|
35
|
+
* BASE_SKILLS are always included; these are the type-specific additions.
|
|
36
|
+
*/
|
|
37
|
+
export const SKILL_PRESETS = {
|
|
38
|
+
'web-service': [
|
|
39
|
+
'frontend/react', 'frontend/nextjs', 'backend/node',
|
|
40
|
+
'database', 'database/prisma', 'ui-design',
|
|
41
|
+
'security', 'methodology/tdd',
|
|
42
|
+
],
|
|
43
|
+
'web-app': [
|
|
44
|
+
'frontend/react', 'frontend/nextjs',
|
|
45
|
+
'ui-design', 'security', 'methodology/tdd',
|
|
46
|
+
],
|
|
47
|
+
'api-backend': [
|
|
48
|
+
'backend/node', 'database', 'database/prisma',
|
|
49
|
+
'security', 'methodology/tdd',
|
|
50
|
+
],
|
|
51
|
+
'platform': [
|
|
52
|
+
'backend/node', 'methodology/tdd',
|
|
53
|
+
'methodology/ddd', 'security',
|
|
54
|
+
],
|
|
55
|
+
'fintech': [
|
|
56
|
+
'backend/node', 'database', 'database/prisma',
|
|
57
|
+
'security', 'methodology/tdd', 'methodology/ddd',
|
|
58
|
+
],
|
|
59
|
+
'infra': [
|
|
60
|
+
'security',
|
|
61
|
+
],
|
|
62
|
+
'mobile-app': [
|
|
63
|
+
'mobile/flutter', 'mobile/dart',
|
|
64
|
+
'security', 'methodology/tdd',
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
/** Skills always deployed regardless of project type */
|
|
68
|
+
export const BASE_SKILLS = [
|
|
69
|
+
'tsq-protocol',
|
|
70
|
+
'controller',
|
|
71
|
+
'coding', 'testing', 'typescript',
|
|
72
|
+
'planning', 'architecture',
|
|
73
|
+
'retrospective', 'prompt-engineering',
|
|
74
|
+
];
|
|
75
|
+
/**
|
|
76
|
+
* Knowledge presets by project type.
|
|
77
|
+
* BASE_KNOWLEDGE is always included; these are the type-specific additions.
|
|
78
|
+
*/
|
|
79
|
+
export const KNOWLEDGE_PRESETS = {
|
|
80
|
+
'web-service': [
|
|
81
|
+
'checklists/security', 'checklists/accessibility',
|
|
82
|
+
'checklists/design-reference', 'checklists/architecture-review',
|
|
83
|
+
'checklists/database-standards',
|
|
84
|
+
],
|
|
85
|
+
'web-app': [
|
|
86
|
+
'checklists/security', 'checklists/accessibility',
|
|
87
|
+
'checklists/design-reference', 'checklists/architecture-review',
|
|
88
|
+
],
|
|
89
|
+
'api-backend': [
|
|
90
|
+
'checklists/security', 'checklists/architecture-review',
|
|
91
|
+
'checklists/database-standards',
|
|
92
|
+
],
|
|
93
|
+
'platform': [
|
|
94
|
+
'checklists/security', 'checklists/architecture-review',
|
|
95
|
+
],
|
|
96
|
+
'fintech': [
|
|
97
|
+
'checklists/security', 'checklists/accessibility',
|
|
98
|
+
'checklists/architecture-review', 'checklists/database-standards',
|
|
99
|
+
],
|
|
100
|
+
'infra': [
|
|
101
|
+
'checklists/security', 'checklists/architecture-review',
|
|
102
|
+
],
|
|
103
|
+
'mobile-app': [
|
|
104
|
+
'checklists/security', 'checklists/architecture-review',
|
|
105
|
+
],
|
|
106
|
+
};
|
|
107
|
+
/** Knowledge always deployed */
|
|
108
|
+
export const BASE_KNOWLEDGE = [
|
|
109
|
+
'checklists/ssot-validation',
|
|
110
|
+
'templates/task-result',
|
|
111
|
+
'templates/sequence-report',
|
|
112
|
+
'platforms/_template',
|
|
113
|
+
'domains/_template',
|
|
114
|
+
];
|
|
115
|
+
/**
|
|
116
|
+
* Domain-specific skill additions (v4.0 Composition Layer)
|
|
117
|
+
* Merged with SKILL_PRESETS[type] during init
|
|
118
|
+
*/
|
|
119
|
+
export const DOMAIN_SKILL_MAP = {
|
|
120
|
+
'general-web': [], // web 스킬은 SKILL_PRESETS[type]에서 이미 커버
|
|
121
|
+
'ml-engineering': ['methodology/tdd'],
|
|
122
|
+
'fintech': ['methodology/ddd'], // DDD는 도메인 고유 (security는 type에서 커버)
|
|
123
|
+
'mobile': ['mobile/flutter', 'mobile/dart'],
|
|
124
|
+
'gamedev': [],
|
|
125
|
+
'systems': [], // security는 type에서 커버
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Domain-specific knowledge additions (v4.0 Composition Layer)
|
|
129
|
+
* Merged with KNOWLEDGE_PRESETS[type] during init.
|
|
130
|
+
* Only add domain-unique knowledge not already in KNOWLEDGE_PRESETS.
|
|
131
|
+
*/
|
|
132
|
+
export const DOMAIN_KNOWLEDGE_MAP = {
|
|
133
|
+
'general-web': [], // web knowledge는 KNOWLEDGE_PRESETS[type]에서 커버
|
|
134
|
+
'fintech': [], // security/db는 KNOWLEDGE_PRESETS[fintech]에서 커버
|
|
135
|
+
'ml-engineering': [],
|
|
136
|
+
'mobile': [],
|
|
137
|
+
'systems': [],
|
|
138
|
+
};
|
|
139
|
+
/**
|
|
140
|
+
* Stack-to-skill mapping (v4.0 Composition Layer)
|
|
141
|
+
* Auto-selects skills based on detected/configured stack
|
|
142
|
+
*/
|
|
143
|
+
export const STACK_SKILL_MAP = {
|
|
144
|
+
'react': ['frontend/react'],
|
|
145
|
+
'nextjs': ['frontend/nextjs'],
|
|
146
|
+
'node': ['backend/node'],
|
|
147
|
+
'prisma': ['database/prisma'],
|
|
148
|
+
'typescript': ['typescript'],
|
|
149
|
+
'postgresql': ['database'],
|
|
150
|
+
'mysql': ['database'],
|
|
151
|
+
'flutter': ['mobile/flutter'],
|
|
152
|
+
'dart': ['mobile/dart'],
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Default agent model by type
|
|
156
|
+
*/
|
|
157
|
+
const AGENT_MODELS = {
|
|
158
|
+
architect: 'opus',
|
|
159
|
+
developer: 'sonnet',
|
|
160
|
+
qa: 'sonnet',
|
|
161
|
+
security: 'sonnet',
|
|
162
|
+
dba: 'sonnet',
|
|
163
|
+
designer: 'sonnet',
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Build agents config from preset
|
|
167
|
+
*/
|
|
168
|
+
export function buildAgentsConfig(projectType) {
|
|
169
|
+
const activeAgents = AGENT_PRESETS[projectType];
|
|
170
|
+
const allAgents = ['architect', 'developer', 'qa', 'security', 'dba', 'designer'];
|
|
171
|
+
const agents = {};
|
|
172
|
+
for (const agent of allAgents) {
|
|
173
|
+
agents[agent] = {
|
|
174
|
+
model: AGENT_MODELS[agent],
|
|
175
|
+
enabled: activeAgents.includes(agent),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return agents;
|
|
179
|
+
}
|
|
1
180
|
/**
|
|
2
181
|
* Default configuration
|
|
3
182
|
*/
|
|
@@ -15,15 +194,11 @@ export const DEFAULT_CONFIG = {
|
|
|
15
194
|
database: 'postgresql',
|
|
16
195
|
orm: 'prisma',
|
|
17
196
|
},
|
|
18
|
-
agents:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
dba: { model: 'sonnet', enabled: true },
|
|
24
|
-
designer: { model: 'sonnet', enabled: true },
|
|
25
|
-
prompter: { model: 'sonnet', enabled: true },
|
|
26
|
-
retro: { model: 'haiku', enabled: true },
|
|
197
|
+
agents: buildAgentsConfig('web-service'),
|
|
198
|
+
knowledge: {
|
|
199
|
+
platforms: [],
|
|
200
|
+
domains: [],
|
|
201
|
+
checklists: ['security'],
|
|
27
202
|
},
|
|
28
203
|
quality: {
|
|
29
204
|
test_coverage: {
|