timsquad 3.6.0 → 3.7.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 +103 -111
- package/README.md +100 -108
- package/dist/commands/init.js +4 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/{upgrade.d.ts → update.d.ts} +3 -3
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/{upgrade.js → update.js} +12 -17
- package/dist/commands/update.js.map +1 -0
- package/dist/daemon/event-queue.d.ts +3 -11
- package/dist/daemon/event-queue.d.ts.map +1 -1
- package/dist/daemon/event-queue.js +62 -203
- package/dist/daemon/event-queue.js.map +1 -1
- package/dist/daemon/index.d.ts +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +15 -14
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.js +3 -43
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-generator.d.ts.map +1 -1
- package/dist/lib/agent-generator.js +10 -10
- package/dist/lib/agent-generator.js.map +1 -1
- package/dist/lib/compile-rules.d.ts.map +1 -1
- package/dist/lib/compile-rules.js +37 -4
- package/dist/lib/compile-rules.js.map +1 -1
- package/dist/lib/compiler.d.ts +1 -0
- package/dist/lib/compiler.d.ts.map +1 -1
- package/dist/lib/compiler.js +67 -11
- package/dist/lib/compiler.js.map +1 -1
- package/dist/{commands/log.d.ts → lib/log-utils.d.ts} +7 -15
- package/dist/lib/log-utils.d.ts.map +1 -0
- package/dist/lib/log-utils.js +347 -0
- package/dist/lib/log-utils.js.map +1 -0
- package/dist/lib/skill-generator.d.ts.map +1 -1
- package/dist/lib/skill-generator.js +4 -44
- package/dist/lib/skill-generator.js.map +1 -1
- package/dist/lib/ssot-map.d.ts.map +1 -1
- package/dist/lib/ssot-map.js +3 -0
- package/dist/lib/ssot-map.js.map +1 -1
- package/dist/lib/template.d.ts +10 -3
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +136 -22
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/upgrade-backup.js +1 -1
- package/dist/lib/upgrade-backup.js.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +34 -34
- package/dist/types/config.js.map +1 -1
- package/dist/types/feedback.d.ts +1 -54
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/feedback.js +1 -22
- package/dist/types/feedback.js.map +1 -1
- package/dist/types/project.d.ts +5 -0
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +15 -0
- package/dist/types/project.js.map +1 -1
- package/dist/types/ssot-map.d.ts +2 -0
- package/dist/types/ssot-map.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/base/agents/base/tsq-architect.md +1 -1
- package/templates/base/agents/base/tsq-dba.md +3 -1
- package/templates/base/agents/base/tsq-designer.md +3 -1
- package/templates/base/agents/base/tsq-developer.md +3 -1
- package/templates/base/agents/base/tsq-librarian.md +1 -1
- package/templates/base/agents/base/tsq-qa.md +3 -1
- package/templates/base/agents/base/tsq-security.md +3 -1
- package/templates/base/agents/overlays/platform/claude-code.md +2 -2
- package/templates/base/config.template.yaml +17 -28
- package/templates/base/knowledge/templates/task-result.md +5 -10
- package/templates/base/skills/_template/SKILL.md +1 -3
- package/templates/base/skills/{architecture → tsq-architecture}/SKILL.md +2 -2
- package/templates/base/skills/tsq-audit/SKILL.md +74 -0
- package/templates/base/skills/{methodology/bdd → tsq-bdd}/SKILL.md +14 -9
- package/templates/base/skills/{coding → tsq-coding}/SKILL.md +2 -4
- package/templates/base/skills/tsq-controller/SKILL.md +81 -0
- package/templates/base/skills/{mobile/dart → tsq-dart}/SKILL.md +5 -3
- package/templates/base/skills/{database → tsq-database}/SKILL.md +5 -2
- package/templates/base/skills/{methodology/ddd → tsq-ddd}/SKILL.md +15 -10
- package/templates/base/skills/{methodology/debugging → tsq-debugging}/SKILL.md +2 -2
- package/templates/base/skills/tsq-decompose/SKILL.md +117 -0
- package/templates/base/skills/tsq-delete/SKILL.md +72 -0
- package/templates/base/skills/{mobile/flutter → tsq-flutter}/SKILL.md +6 -3
- package/templates/base/skills/tsq-grill/SKILL.md +86 -0
- package/templates/base/skills/{backend/node → tsq-hono}/SKILL.md +6 -4
- package/templates/base/skills/tsq-librarian/SKILL.md +78 -0
- package/templates/base/skills/tsq-log/SKILL.md +30 -0
- package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/SKILL.md +14 -9
- package/templates/base/skills/{planning → tsq-planning}/SKILL.md +2 -2
- package/templates/base/skills/{database/prisma → tsq-prisma}/SKILL.md +15 -9
- package/templates/base/skills/{product-audit → tsq-product-audit}/SKILL.md +2 -4
- package/templates/base/skills/{prompt-engineering → tsq-prompt}/SKILL.md +6 -4
- package/templates/base/skills/tsq-protocol/SKILL.md +85 -33
- package/templates/base/skills/{frontend/react → tsq-react}/SKILL.md +6 -3
- package/templates/base/skills/tsq-retro/SKILL.md +86 -0
- package/templates/base/skills/tsq-retro/references/feedback-guide.md +58 -0
- package/templates/base/skills/tsq-retro/references/improve-protocol.md +87 -0
- package/templates/base/skills/{security → tsq-security}/SKILL.md +2 -4
- package/templates/base/skills/{spec → tsq-spec}/SKILL.md +4 -6
- package/templates/base/skills/{stability-verification → tsq-stability}/SKILL.md +3 -3
- package/templates/base/skills/tsq-start/SKILL.md +90 -0
- package/templates/base/skills/tsq-start/references/onboarding-questions.md +177 -0
- package/templates/base/skills/tsq-status/SKILL.md +32 -0
- package/templates/base/skills/{methodology/tdd → tsq-tdd}/SKILL.md +6 -3
- package/templates/base/skills/{testing → tsq-testing}/SKILL.md +5 -7
- package/templates/base/skills/{typescript → tsq-typescript}/SKILL.md +2 -2
- package/templates/base/skills/{ui-design → tsq-ui}/SKILL.md +2 -2
- package/templates/base/skills/tsq-update/SKILL.md +48 -0
- package/templates/base/timsquad/constraints/competency-framework.xml +2 -2
- package/templates/base/timsquad/constraints/ssot-schema.xml +2 -2
- package/templates/base/timsquad/process/phase-checklist.yaml +1 -1
- package/templates/base/timsquad/process/state-machine.xml +2 -2
- package/templates/base/timsquad/process/validation-rules.xml +8 -8
- package/templates/base/timsquad/process/workflow-base.xml +8 -8
- package/templates/base/timsquad/retrospective/cycle-report.template.md +2 -2
- package/templates/base/timsquad/retrospective/patterns/failure-patterns.md +1 -1
- package/templates/base/timsquad/retrospective/patterns/success-patterns.md +2 -2
- package/templates/base/timsquad/retrospective/retrospective-state.xml +2 -2
- package/templates/base/timsquad/ssot/audit-trail-spec.template.md +155 -0
- package/templates/base/timsquad/ssot/compliance-matrix.template.md +105 -0
- package/templates/base/timsquad/ssot/component-map.template.md +181 -0
- package/templates/base/timsquad/ssot/data-design.template.md +4 -4
- package/templates/base/timsquad/ssot/deployment-spec.template.md +29 -22
- package/templates/base/timsquad/ssot/env-config.template.md +4 -2
- package/templates/base/timsquad/ssot/error-codes.template.md +3 -3
- package/templates/base/timsquad/ssot/functional-spec.template.md +40 -3
- package/templates/base/timsquad/ssot/glossary.template.md +2 -2
- package/templates/base/timsquad/ssot/infra-topology.template.md +191 -0
- package/templates/base/timsquad/ssot/integration-spec.template.md +2 -2
- package/templates/base/timsquad/ssot/monitoring-spec.template.md +185 -0
- package/templates/base/timsquad/ssot/navigation-map.template.md +154 -0
- package/templates/base/timsquad/ssot/performance-budget.template.md +132 -0
- package/templates/base/timsquad/ssot/planning.template.md +3 -3
- package/templates/base/timsquad/ssot/prd/_template.md +73 -0
- package/templates/base/timsquad/ssot/prd.template.md +10 -21
- package/templates/base/timsquad/ssot/requirements.template.md +3 -3
- package/templates/base/timsquad/ssot/sdk-spec.template.md +223 -0
- package/templates/base/timsquad/ssot/service-spec.template.md +3 -3
- package/templates/base/timsquad/ssot/state-machine.template.md +127 -0
- package/templates/base/timsquad/ssot/ui-ux-spec.template.md +43 -3
- package/templates/base/timsquad/ssot-map.template.yaml +28 -0
- package/templates/base/timsquad/state/workspace.xml +11 -11
- package/templates/platforms/claude-code/rules/adr-rules.md +1 -1
- package/templates/platforms/claude-code/rules/build-gate.md +1 -1
- package/templates/platforms/claude-code/rules/completion-verification.md +0 -2
- package/templates/platforms/claude-code/rules/context-monitor.md +1 -1
- package/templates/platforms/claude-code/rules/feedback-routing.md +2 -2
- package/templates/platforms/claude-code/rules/phase-management.md +2 -2
- package/templates/platforms/claude-code/rules/plan-review.md +2 -2
- package/templates/platforms/claude-code/rules/quality-guards.md +0 -2
- package/templates/platforms/claude-code/rules/sequence-management.md +15 -15
- package/templates/platforms/claude-code/rules/session-notes.md +1 -1
- package/templates/platforms/claude-code/rules/workspace-sync.md +1 -1
- package/templates/platforms/claude-code/scripts/build-gate.sh +6 -1
- package/templates/platforms/claude-code/scripts/change-scope-guard.sh +1 -4
- package/templates/platforms/claude-code/scripts/check-capability.sh +68 -0
- package/templates/platforms/claude-code/scripts/completion-guard.sh +62 -4
- package/templates/platforms/claude-code/scripts/context-restore.sh +33 -6
- package/templates/platforms/claude-code/scripts/phase-guard.sh +2 -5
- package/templates/platforms/claude-code/scripts/pre-compact.sh +3 -3
- package/templates/platforms/claude-code/scripts/safe-guard.sh +2 -5
- package/templates/platforms/claude-code/scripts/subagent-start.sh +11 -0
- package/templates/platforms/claude-code/scripts/subagent-stop.sh +11 -0
- package/templates/platforms/claude-code/settings.json +20 -74
- package/templates/project-types/api-backend/config.yaml +9 -5
- package/templates/project-types/api-backend/process/workflow.xml +2 -2
- package/templates/project-types/fintech/config.yaml +13 -19
- package/templates/project-types/fintech/ssot/audit-trail-spec.template.md +207 -0
- package/templates/project-types/fintech/ssot/compliance-matrix.template.md +187 -0
- package/templates/project-types/infra/config.yaml +7 -4
- package/templates/project-types/infra/process/workflow.xml +3 -3
- package/templates/project-types/mobile-app/config.yaml +8 -14
- package/templates/project-types/mobile-app/process/workflow.xml +4 -4
- package/templates/project-types/platform/config.yaml +8 -5
- package/templates/project-types/platform/process/workflow.xml +3 -3
- package/templates/project-types/web-app/config.yaml +9 -15
- package/templates/project-types/web-app/process/workflow.xml +6 -6
- package/templates/project-types/web-service/config.yaml +10 -19
- package/templates/project-types/web-service/process/workflow.xml +6 -6
- package/dist/commands/audit.d.ts +0 -22
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -233
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/compile.d.ts +0 -3
- package/dist/commands/compile.d.ts.map +0 -1
- package/dist/commands/compile.js +0 -251
- package/dist/commands/compile.js.map +0 -1
- package/dist/commands/feedback.d.ts +0 -12
- package/dist/commands/feedback.d.ts.map +0 -1
- package/dist/commands/feedback.js +0 -382
- package/dist/commands/feedback.js.map +0 -1
- package/dist/commands/full.d.ts +0 -3
- package/dist/commands/full.d.ts.map +0 -1
- package/dist/commands/full.js +0 -88
- package/dist/commands/full.js.map +0 -1
- package/dist/commands/git/commit.d.ts +0 -3
- package/dist/commands/git/commit.d.ts.map +0 -1
- package/dist/commands/git/commit.js +0 -85
- package/dist/commands/git/commit.js.map +0 -1
- package/dist/commands/git/index.d.ts +0 -5
- package/dist/commands/git/index.d.ts.map +0 -1
- package/dist/commands/git/index.js +0 -5
- package/dist/commands/git/index.js.map +0 -1
- package/dist/commands/git/pr.d.ts +0 -3
- package/dist/commands/git/pr.d.ts.map +0 -1
- package/dist/commands/git/pr.js +0 -139
- package/dist/commands/git/pr.js.map +0 -1
- package/dist/commands/git/release.d.ts +0 -3
- package/dist/commands/git/release.d.ts.map +0 -1
- package/dist/commands/git/release.js +0 -153
- package/dist/commands/git/release.js.map +0 -1
- package/dist/commands/git/sync.d.ts +0 -3
- package/dist/commands/git/sync.d.ts.map +0 -1
- package/dist/commands/git/sync.js +0 -132
- package/dist/commands/git/sync.js.map +0 -1
- package/dist/commands/improve.d.ts +0 -3
- package/dist/commands/improve.d.ts.map +0 -1
- package/dist/commands/improve.js +0 -286
- package/dist/commands/improve.js.map +0 -1
- package/dist/commands/knowledge.d.ts +0 -3
- package/dist/commands/knowledge.d.ts.map +0 -1
- package/dist/commands/knowledge.js +0 -316
- package/dist/commands/knowledge.js.map +0 -1
- package/dist/commands/log.d.ts.map +0 -1
- package/dist/commands/log.js +0 -1468
- package/dist/commands/log.js.map +0 -1
- package/dist/commands/meta-index.d.ts +0 -3
- package/dist/commands/meta-index.d.ts.map +0 -1
- package/dist/commands/meta-index.js +0 -431
- package/dist/commands/meta-index.js.map +0 -1
- package/dist/commands/metrics.d.ts +0 -3
- package/dist/commands/metrics.d.ts.map +0 -1
- package/dist/commands/metrics.js +0 -843
- package/dist/commands/metrics.js.map +0 -1
- package/dist/commands/quick.d.ts +0 -3
- package/dist/commands/quick.d.ts.map +0 -1
- package/dist/commands/quick.js +0 -136
- package/dist/commands/quick.js.map +0 -1
- package/dist/commands/retro.d.ts +0 -3
- package/dist/commands/retro.d.ts.map +0 -1
- package/dist/commands/retro.js +0 -885
- package/dist/commands/retro.js.map +0 -1
- package/dist/commands/session.d.ts +0 -3
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -346
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -12
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -228
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts +0 -3
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -127
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -3
- package/dist/commands/watch.d.ts.map +0 -1
- package/dist/commands/watch.js +0 -213
- package/dist/commands/watch.js.map +0 -1
- package/dist/commands/workflow.d.ts +0 -5
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/workflow.js +0 -781
- package/dist/commands/workflow.js.map +0 -1
- package/templates/base/skills/audit/SKILL.md +0 -66
- package/templates/base/skills/controller/SKILL.md +0 -77
- package/templates/base/skills/controller/delegation/developer.md +0 -25
- package/templates/base/skills/controller/delegation/librarian.md +0 -33
- package/templates/base/skills/controller/delegation/reviewer.md +0 -19
- package/templates/base/skills/controller/triggers/phase-complete.md +0 -25
- package/templates/base/skills/controller/triggers/sequence-complete.md +0 -15
- package/templates/base/skills/controller/triggers/ssot-changed.md +0 -14
- package/templates/base/skills/controller/triggers/task-complete.md +0 -14
- package/templates/base/skills/librarian/SKILL.md +0 -53
- package/templates/base/skills/main-session-constraints/SKILL.md +0 -62
- package/templates/base/skills/retrospective/SKILL.md +0 -77
- package/templates/base/skills/review/SKILL.md +0 -72
- package/templates/base/skills/tsq-cli/SKILL.md +0 -73
- package/templates/base/skills/tsq-cli/references/cli-reference.md +0 -92
- package/templates/base/timsquad/feedback/feedback-router.sh +0 -341
- package/templates/base/timsquad/feedback/routing-rules.yaml +0 -352
- package/templates/platforms/claude-code/CLAUDE.md.template +0 -89
- package/templates/platforms/claude-code/rules/skill-suggest.md +0 -27
- package/templates/platforms/claude-code/scripts/skill-inject.sh +0 -216
- package/templates/platforms/claude-code/scripts/skill-rules.json +0 -95
- package/templates/platforms/claude-code/scripts/skill-suggest.sh +0 -105
- package/templates/platforms/claude-code/scripts/subagent-inject.sh +0 -53
- /package/templates/base/skills/{architecture → tsq-architecture}/references/adr-template.md +0 -0
- /package/templates/base/skills/{architecture → tsq-architecture}/references/api-design.md +0 -0
- /package/templates/base/skills/{methodology/bdd → tsq-bdd}/rules/gherkin-patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/code-organization.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/error-handling.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/type-safety.md +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/memory/.gitkeep +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/references/README.md +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/rules/README.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/code-style.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/null-safety.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/type-system.md +0 -0
- /package/templates/base/skills/{database → tsq-database}/rules/query-optimization.md +0 -0
- /package/templates/base/skills/{database → tsq-database}/rules/supabase-patterns.md +0 -0
- /package/templates/base/skills/{methodology/ddd → tsq-ddd}/rules/strategic-patterns.md +0 -0
- /package/templates/base/skills/{methodology/debugging → tsq-debugging}/references/root-cause-tracing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/references/ci-cd-pipeline.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/code-signing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/codemagic-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/fastlane-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/github-actions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/store-deployment.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/versioning.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/references/i18n-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/arb-files.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/locale-switching.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/localization-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/plural-gender.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/text-direction.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/references/monitoring-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/analytics.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/crashlytics-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/logging.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/performance-monitoring.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/sentry-integration.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/references/api-client-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/caching.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/connectivity.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/dio-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/error-handling.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/interceptors.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/retrofit-patterns.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/notification-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/platform-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/background-processing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/deep-linking.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/fcm-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/local-notifications.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-handling.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-permissions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/rich-notifications.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/freezed-patterns.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/project-structure.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/animations.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/navigation-routing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/performance.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/platform-adaptive.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/state-management.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/testing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/widget-conventions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/references/mobile-security-checklist.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/api-key-protection.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/authentication.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/data-protection.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/obfuscation.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/secure-storage.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/ssl-pinning.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/deployment.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/env-config.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/error-handling.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/hono-app-setup.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/jwt-auth.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/middleware.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/testing.md +0 -0
- /package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/rules/app-router.md +0 -0
- /package/templates/base/skills/{planning → tsq-planning}/references/prd-guide.md +0 -0
- /package/templates/base/skills/{planning → tsq-planning}/references/requirements-guide.md +0 -0
- /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/queries.md +0 -0
- /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/schema-design.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/01-security.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/02-performance.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/03-seo.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/04-accessibility.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/05-ui-ux.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/06-architecture.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/07-functional-requirements.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/audit-protocol.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/false-positive-guard.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/scoring-criteria.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/templates/improvement-plan-template.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/templates/report-template.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/_sections.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/anti-patterns.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-api-routes.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-defer-await.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-dependencies.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-parallel.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-suspense-boundaries.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-barrel-imports.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-defer-third-party.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-dynamic-imports.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/component-conventions.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-combine-iterations.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-early-exit.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-index-maps.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-set-map-lookups.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-conditional-render.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-content-visibility.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-hoist-jsx.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-defer-reads.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-derived-state.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-memo.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-transitions.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-after-nonblocking.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-cache-react.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-parallel-fetching.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/state-location.md +0 -0
- /package/templates/base/skills/{retrospective → tsq-retro}/references/improvement-template.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/auth-patterns.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/dependency-security.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/input-validation.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/owasp-examples.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/secrets-management.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/scripts/check-secrets.sh +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/references/release-checklist.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/references/security-fix-patterns.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-layers.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-workflow.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/scripts/verify.sh +0 -0
- /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/real-world-example.md +0 -0
- /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/techniques.md +0 -0
- /package/templates/base/skills/{testing → tsq-testing}/references/e2e-stability.md +0 -0
- /package/templates/base/skills/{testing → tsq-testing}/references/testing-patterns.md +0 -0
- /package/templates/base/skills/{typescript → tsq-typescript}/rules/type-patterns.md +0 -0
- /package/templates/base/skills/{typescript → tsq-typescript}/rules/utility-types.md +0 -0
|
@@ -1,30 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Log utility functions extracted from commands/log.ts and commands/workflow.ts
|
|
3
|
+
* for use by the daemon event-queue (which cannot depend on CLI commands).
|
|
4
|
+
*/
|
|
5
|
+
import type { TaskLogEntry, SequenceLogEntry, AxisResult, PhaseLogEntry, PhaseGateResult } from '../types/task-log.js';
|
|
4
6
|
export declare function getTasksDir(projectRoot: string): string;
|
|
5
7
|
export declare function getSequencesDir(projectRoot: string): string;
|
|
6
8
|
export declare function getPhasesDir(projectRoot: string): string;
|
|
7
|
-
export declare function loadAllTaskLogs(projectRoot: string, agent?: string): Promise<Array<{
|
|
8
|
-
file: string;
|
|
9
|
-
data: TaskLogEntry;
|
|
10
|
-
}>>;
|
|
11
|
-
export declare function hasSemantic(sem: TaskSemantic | undefined): boolean;
|
|
12
9
|
export declare function loadSequenceTaskLogs(projectRoot: string, seqId: string): Promise<Array<{
|
|
13
10
|
file: string;
|
|
14
11
|
data: TaskLogEntry;
|
|
15
12
|
}>>;
|
|
16
13
|
export declare function makeAxisPlaceholder(): AxisResult;
|
|
17
|
-
/**
|
|
18
|
-
* Core: build SequenceLogEntry data (no I/O side effects except reading task logs)
|
|
19
|
-
*/
|
|
20
14
|
export declare function buildSequenceLogData(projectRoot: string, seqId: string, options: {
|
|
21
15
|
phase: string;
|
|
22
16
|
report: string;
|
|
23
17
|
verdict: string;
|
|
24
18
|
conditions?: string;
|
|
25
19
|
}): Promise<SequenceLogEntry>;
|
|
26
|
-
/**
|
|
27
|
-
* Core: build PhaseGateResult (no I/O side effects except reading sequence logs)
|
|
28
|
-
*/
|
|
29
20
|
export declare function buildPhaseGateData(projectRoot: string, phaseId: string): Promise<PhaseGateResult>;
|
|
30
|
-
|
|
21
|
+
export declare function buildPhaseLogData(projectRoot: string, phaseId: string, seqIds: string[]): Promise<PhaseLogEntry>;
|
|
22
|
+
//# sourceMappingURL=log-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-utils.d.ts","sourceRoot":"","sources":["../../src/lib/log-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EACV,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAC3E,MAAM,sBAAsB,CAAC;AAO9B,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAID,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,CAAC,CAgCtD;AAID,wBAAgB,mBAAmB,IAAI,UAAU,CAEhD;AA0CD,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/E,OAAO,CAAC,gBAAgB,CAAC,CAoE3B;AAID,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,CAAC,CAuG1B;AAID,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,aAAa,CAAC,CAuFxB"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log utility functions extracted from commands/log.ts and commands/workflow.ts
|
|
3
|
+
* for use by the daemon event-queue (which cannot depend on CLI commands).
|
|
4
|
+
*/
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import fs from 'fs-extra';
|
|
7
|
+
import { exists, listFiles } from '../utils/fs.js';
|
|
8
|
+
import { getTimestamp } from '../utils/date.js';
|
|
9
|
+
import { loadWorkflowState } from './workflow-state.js';
|
|
10
|
+
const LOG_SCHEMA_VERSION = '1.0.0';
|
|
11
|
+
// ── Directory helpers ──
|
|
12
|
+
export function getTasksDir(projectRoot) {
|
|
13
|
+
return path.join(projectRoot, '.timsquad', 'logs', 'tasks');
|
|
14
|
+
}
|
|
15
|
+
export function getSequencesDir(projectRoot) {
|
|
16
|
+
return path.join(projectRoot, '.timsquad', 'logs', 'sequences');
|
|
17
|
+
}
|
|
18
|
+
export function getPhasesDir(projectRoot) {
|
|
19
|
+
return path.join(projectRoot, '.timsquad', 'logs', 'phases');
|
|
20
|
+
}
|
|
21
|
+
// ── Task log loading ──
|
|
22
|
+
export async function loadSequenceTaskLogs(projectRoot, seqId) {
|
|
23
|
+
const tasksDir = getTasksDir(projectRoot);
|
|
24
|
+
if (!await exists(tasksDir))
|
|
25
|
+
return [];
|
|
26
|
+
const results = [];
|
|
27
|
+
// 1. Check nested directory: tasks/{SEQ-ID}/*.json
|
|
28
|
+
const seqDir = path.join(tasksDir, seqId);
|
|
29
|
+
if (await exists(seqDir)) {
|
|
30
|
+
const files = await listFiles('*.json', seqDir);
|
|
31
|
+
for (const file of files) {
|
|
32
|
+
try {
|
|
33
|
+
const data = await fs.readJson(path.join(seqDir, file));
|
|
34
|
+
results.push({ file: path.join(seqId, file), data });
|
|
35
|
+
}
|
|
36
|
+
catch { /* skip */ }
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// 2. Check flat files with trace.sequence_id matching
|
|
40
|
+
const flatFiles = await listFiles('*.json', tasksDir);
|
|
41
|
+
for (const file of flatFiles) {
|
|
42
|
+
try {
|
|
43
|
+
const data = await fs.readJson(path.join(tasksDir, file));
|
|
44
|
+
if (data.trace?.sequence_id === seqId) {
|
|
45
|
+
if (!results.some(r => r.file === file)) {
|
|
46
|
+
results.push({ file, data });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch { /* skip */ }
|
|
51
|
+
}
|
|
52
|
+
return results.sort((a, b) => a.file.localeCompare(b.file));
|
|
53
|
+
}
|
|
54
|
+
// ── Axis placeholder ──
|
|
55
|
+
export function makeAxisPlaceholder() {
|
|
56
|
+
return { verdict: 'n/a', details: 'See architect report', issues: [] };
|
|
57
|
+
}
|
|
58
|
+
// ── Sequence stats aggregation ──
|
|
59
|
+
function aggregateSequenceStats(taskLogs) {
|
|
60
|
+
let success = 0, failure = 0, error = 0, rework = 0;
|
|
61
|
+
const durations = [];
|
|
62
|
+
for (const { file, data } of taskLogs) {
|
|
63
|
+
const s = data.status;
|
|
64
|
+
if (s === 'completed' || s === 'success')
|
|
65
|
+
success++;
|
|
66
|
+
else if (s === 'failure')
|
|
67
|
+
failure++;
|
|
68
|
+
else if (s === 'error')
|
|
69
|
+
error++;
|
|
70
|
+
if (data.duration_ms)
|
|
71
|
+
durations.push(data.duration_ms);
|
|
72
|
+
const changedFiles = new Set(data.mechanical?.files?.map(f => f.path) || []);
|
|
73
|
+
for (const other of taskLogs) {
|
|
74
|
+
if (other.file === file)
|
|
75
|
+
continue;
|
|
76
|
+
if (other.data.agent === data.agent && other.file < file) {
|
|
77
|
+
const otherFiles = other.data.mechanical?.files?.map(f => f.path) || [];
|
|
78
|
+
if (otherFiles.some(f => changedFiles.has(f))) {
|
|
79
|
+
rework++;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const total = taskLogs.length;
|
|
86
|
+
return {
|
|
87
|
+
total, success, failure, error, rework,
|
|
88
|
+
first_pass_success_rate: total > 0 ? Math.round(((success) / total) * 100) / 100 : 0,
|
|
89
|
+
final_success_rate: total > 0 ? Math.round(((success) / total) * 100) / 100 : 0,
|
|
90
|
+
durations,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// ── Build L2 Sequence Log ──
|
|
94
|
+
export async function buildSequenceLogData(projectRoot, seqId, options) {
|
|
95
|
+
const taskLogs = await loadSequenceTaskLogs(projectRoot, seqId);
|
|
96
|
+
if (taskLogs.length === 0) {
|
|
97
|
+
const tasksDir = getTasksDir(projectRoot);
|
|
98
|
+
if (await exists(tasksDir)) {
|
|
99
|
+
const allFiles = await listFiles('*.json', tasksDir);
|
|
100
|
+
for (const file of allFiles) {
|
|
101
|
+
if (file.toLowerCase().includes(seqId.toLowerCase())) {
|
|
102
|
+
try {
|
|
103
|
+
const data = await fs.readJson(path.join(tasksDir, file));
|
|
104
|
+
taskLogs.push({ file, data });
|
|
105
|
+
}
|
|
106
|
+
catch { /* skip */ }
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const stats = aggregateSequenceStats(taskLogs);
|
|
112
|
+
const now = getTimestamp();
|
|
113
|
+
const timestamps = taskLogs
|
|
114
|
+
.map(t => t.data.completed_at ? new Date(t.data.completed_at).getTime() : 0)
|
|
115
|
+
.filter(t => t > 0);
|
|
116
|
+
const startedAt = taskLogs[0]?.data.started_at || taskLogs[0]?.data.completed_at || now;
|
|
117
|
+
const duration = timestamps.length >= 2
|
|
118
|
+
? Math.max(...timestamps) - Math.min(...timestamps)
|
|
119
|
+
: 0;
|
|
120
|
+
const meanDuration = stats.durations.length > 0
|
|
121
|
+
? stats.durations.reduce((a, b) => a + b, 0) / stats.durations.length
|
|
122
|
+
: 0;
|
|
123
|
+
return {
|
|
124
|
+
schema_version: LOG_SCHEMA_VERSION,
|
|
125
|
+
trace: { phase_id: options.phase, sequence_id: seqId },
|
|
126
|
+
execution: {
|
|
127
|
+
status: stats.failure > 0 ? 'partial' : 'completed',
|
|
128
|
+
started_at: startedAt,
|
|
129
|
+
completed_at: now,
|
|
130
|
+
duration_ms: duration,
|
|
131
|
+
},
|
|
132
|
+
tasks: {
|
|
133
|
+
total: stats.total,
|
|
134
|
+
success: stats.success,
|
|
135
|
+
failure: stats.failure,
|
|
136
|
+
error: stats.error,
|
|
137
|
+
rework: stats.rework,
|
|
138
|
+
first_pass_success_rate: stats.first_pass_success_rate,
|
|
139
|
+
final_success_rate: stats.final_success_rate,
|
|
140
|
+
},
|
|
141
|
+
analysis: {
|
|
142
|
+
axis_1_consistency: makeAxisPlaceholder(),
|
|
143
|
+
axis_2_ssot_conformance: makeAxisPlaceholder(),
|
|
144
|
+
axis_3_cross_sequence: { ...makeAxisPlaceholder(), prev_sequence: null },
|
|
145
|
+
},
|
|
146
|
+
dora_derived: {
|
|
147
|
+
change_failure_rate: stats.total > 0 ? stats.failure / stats.total : 0,
|
|
148
|
+
rework_rate: stats.total > 0 ? stats.rework / stats.total : 0,
|
|
149
|
+
mean_task_duration_ms: meanDuration,
|
|
150
|
+
recovery_time_ms: null,
|
|
151
|
+
},
|
|
152
|
+
verdict: {
|
|
153
|
+
proceed: options.verdict !== 'hold',
|
|
154
|
+
conditions: options.conditions ? options.conditions.split(',').map(c => c.trim()) : [],
|
|
155
|
+
report_path: options.report,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
// ── Build Phase Gate ──
|
|
160
|
+
export async function buildPhaseGateData(projectRoot, phaseId) {
|
|
161
|
+
const seqDir = getSequencesDir(projectRoot);
|
|
162
|
+
const result = {
|
|
163
|
+
phase_id: phaseId,
|
|
164
|
+
can_transition: true,
|
|
165
|
+
missing_sequences: [],
|
|
166
|
+
missing_reports: [],
|
|
167
|
+
blocking_conditions: [],
|
|
168
|
+
};
|
|
169
|
+
if (!await exists(seqDir)) {
|
|
170
|
+
result.can_transition = false;
|
|
171
|
+
result.blocking_conditions.push('No sequence logs directory');
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
const files = await listFiles('*.json', seqDir);
|
|
175
|
+
const phaseSeqs = [];
|
|
176
|
+
for (const file of files) {
|
|
177
|
+
try {
|
|
178
|
+
const data = await fs.readJson(path.join(seqDir, file));
|
|
179
|
+
if (data.trace.phase_id === phaseId) {
|
|
180
|
+
phaseSeqs.push(data);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch { /* skip */ }
|
|
184
|
+
}
|
|
185
|
+
if (phaseSeqs.length === 0) {
|
|
186
|
+
result.can_transition = false;
|
|
187
|
+
result.blocking_conditions.push('No sequence logs found for this phase');
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
for (const seq of phaseSeqs) {
|
|
191
|
+
if (!seq.verdict.proceed) {
|
|
192
|
+
result.can_transition = false;
|
|
193
|
+
result.blocking_conditions.push(`${seq.trace.sequence_id}: verdict is HOLD`);
|
|
194
|
+
}
|
|
195
|
+
if (seq.verdict.report_path) {
|
|
196
|
+
const reportPath = path.resolve(projectRoot, seq.verdict.report_path);
|
|
197
|
+
if (!await exists(reportPath)) {
|
|
198
|
+
result.can_transition = false;
|
|
199
|
+
result.missing_reports.push(seq.verdict.report_path);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (seq.verdict.conditions.length > 0) {
|
|
203
|
+
for (const c of seq.verdict.conditions) {
|
|
204
|
+
result.blocking_conditions.push(`${seq.trace.sequence_id}: condition "${c}"`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// Check E2E test gate
|
|
209
|
+
try {
|
|
210
|
+
const pkgPath = path.join(projectRoot, 'package.json');
|
|
211
|
+
if (await exists(pkgPath)) {
|
|
212
|
+
const pkg = await fs.readJson(pkgPath);
|
|
213
|
+
if (pkg.scripts?.['test:e2e']) {
|
|
214
|
+
const e2eMarker = path.join(projectRoot, '.e2e-passed');
|
|
215
|
+
if (await exists(e2eMarker)) {
|
|
216
|
+
const markerContent = await fs.readFile(e2eMarker, 'utf-8');
|
|
217
|
+
try {
|
|
218
|
+
const marker = JSON.parse(markerContent);
|
|
219
|
+
if (marker.exit_code != null && marker.exit_code !== 0) {
|
|
220
|
+
result.can_transition = false;
|
|
221
|
+
result.blocking_conditions.push(`E2E tests failed (exit_code=${marker.exit_code})`);
|
|
222
|
+
}
|
|
223
|
+
else if (marker.expires_at && new Date(marker.expires_at) < new Date()) {
|
|
224
|
+
result.can_transition = false;
|
|
225
|
+
result.blocking_conditions.push('E2E marker expired — re-run E2E tests');
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
// bare touch fallback
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
result.can_transition = false;
|
|
234
|
+
result.blocking_conditions.push('E2E tests not passed (missing .e2e-passed marker)');
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch { /* skip E2E gate */ }
|
|
240
|
+
// Check unresolved L2/L3 feedback
|
|
241
|
+
try {
|
|
242
|
+
const state = await loadWorkflowState(projectRoot);
|
|
243
|
+
if (state.pending_feedback?.length > 0) {
|
|
244
|
+
const feedbackDir = path.join(projectRoot, '.timsquad', 'feedback');
|
|
245
|
+
for (const fbId of state.pending_feedback) {
|
|
246
|
+
const fbPath = path.join(feedbackDir, `${fbId}.json`);
|
|
247
|
+
if (await exists(fbPath)) {
|
|
248
|
+
const fb = await fs.readJson(fbPath);
|
|
249
|
+
if (!fb.status || fb.status === 'open' || fb.status === 'in_review') {
|
|
250
|
+
result.can_transition = false;
|
|
251
|
+
result.blocking_conditions.push(`Unresolved L${fb.level} feedback: ${fbId} (${fb.trigger})`);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
catch { /* skip feedback check */ }
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
// ── Build L3 Phase Log ──
|
|
261
|
+
export async function buildPhaseLogData(projectRoot, phaseId, seqIds) {
|
|
262
|
+
const seqDir = getSequencesDir(projectRoot);
|
|
263
|
+
const now = getTimestamp();
|
|
264
|
+
const seqLogs = [];
|
|
265
|
+
let completed = 0, blocked = 0;
|
|
266
|
+
for (const id of seqIds) {
|
|
267
|
+
const seqPath = path.join(seqDir, `${id}.json`);
|
|
268
|
+
if (await fs.pathExists(seqPath)) {
|
|
269
|
+
const data = await fs.readJson(seqPath);
|
|
270
|
+
seqLogs.push(data);
|
|
271
|
+
if (data.execution.status === 'completed')
|
|
272
|
+
completed++;
|
|
273
|
+
else
|
|
274
|
+
blocked++;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
blocked++;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
let totalTasks = 0, totalSuccess = 0, totalRework = 0, totalFiles = 0;
|
|
281
|
+
let totalIssues1 = 0, totalIssues2 = 0, totalIssues3 = 0;
|
|
282
|
+
const durations = [];
|
|
283
|
+
for (const seq of seqLogs) {
|
|
284
|
+
totalTasks += seq.tasks.total;
|
|
285
|
+
totalSuccess += seq.tasks.success;
|
|
286
|
+
totalRework += seq.tasks.rework;
|
|
287
|
+
durations.push(seq.execution.duration_ms);
|
|
288
|
+
for (const axis of Object.values(seq.analysis)) {
|
|
289
|
+
const r = axis;
|
|
290
|
+
for (const issue of r.issues || []) {
|
|
291
|
+
if (issue.level === 1)
|
|
292
|
+
totalIssues1++;
|
|
293
|
+
else if (issue.level === 2)
|
|
294
|
+
totalIssues2++;
|
|
295
|
+
else
|
|
296
|
+
totalIssues3++;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
for (const seqId of seqIds) {
|
|
301
|
+
const taskLogs = await loadSequenceTaskLogs(projectRoot, seqId);
|
|
302
|
+
for (const { data } of taskLogs) {
|
|
303
|
+
totalFiles += data.mechanical?.files?.length || 0;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
const timestamps = seqLogs
|
|
307
|
+
.map(s => [new Date(s.execution.started_at).getTime(), new Date(s.execution.completed_at).getTime()])
|
|
308
|
+
.flat()
|
|
309
|
+
.filter(t => t > 0);
|
|
310
|
+
const leadTime = timestamps.length >= 2 ? Math.max(...timestamps) - Math.min(...timestamps) : 0;
|
|
311
|
+
return {
|
|
312
|
+
schema_version: LOG_SCHEMA_VERSION,
|
|
313
|
+
trace: { phase_id: phaseId },
|
|
314
|
+
execution: {
|
|
315
|
+
status: blocked > 0 ? 'aborted' : 'completed',
|
|
316
|
+
started_at: seqLogs[0]?.execution.started_at || now,
|
|
317
|
+
completed_at: now,
|
|
318
|
+
duration_ms: leadTime,
|
|
319
|
+
sessions_count: seqLogs.length,
|
|
320
|
+
},
|
|
321
|
+
sequences: { total: seqIds.length, completed, blocked, ids: seqIds },
|
|
322
|
+
aggregate_metrics: {
|
|
323
|
+
total_tasks: totalTasks,
|
|
324
|
+
task_success_rate: totalTasks > 0 ? totalSuccess / totalTasks : 0,
|
|
325
|
+
task_rework_rate: totalTasks > 0 ? totalRework / totalTasks : 0,
|
|
326
|
+
total_files_changed: totalFiles,
|
|
327
|
+
total_issues: { level_1: totalIssues1, level_2: totalIssues2, level_3: totalIssues3 },
|
|
328
|
+
ssot_conformance_rate: 0,
|
|
329
|
+
mean_sequence_duration_ms: durations.length > 0 ? durations.reduce((a, b) => a + b, 0) / durations.length : 0,
|
|
330
|
+
},
|
|
331
|
+
dora_derived: {
|
|
332
|
+
lead_time_ms: leadTime,
|
|
333
|
+
change_failure_rate: totalTasks > 0 ? (totalTasks - totalSuccess) / totalTasks : 0,
|
|
334
|
+
mean_recovery_time_ms: null,
|
|
335
|
+
},
|
|
336
|
+
planning: {
|
|
337
|
+
original_sequences: seqIds,
|
|
338
|
+
added_sequences: [],
|
|
339
|
+
removed_sequences: [],
|
|
340
|
+
scope_changes: [],
|
|
341
|
+
plan_adherence_rate: 1,
|
|
342
|
+
},
|
|
343
|
+
retrospective: { keep: [], problem: [], try: [] },
|
|
344
|
+
knowledge_extracted: [],
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=log-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-utils.js","sourceRoot":"","sources":["../../src/lib/log-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAqBvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAUhE;AA4BD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAsCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE;
|
|
1
|
+
{"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAqBvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAUhE;AA4BD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAsCD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE;AA0BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAOnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -21,7 +21,7 @@ function getMethodologySkills(config) {
|
|
|
21
21
|
const dev = config.methodology?.development;
|
|
22
22
|
if (!dev || dev === 'none')
|
|
23
23
|
return [];
|
|
24
|
-
return [`
|
|
24
|
+
return [`tsq-${dev}`];
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
27
|
* Get skills to deploy for a project.
|
|
@@ -131,61 +131,21 @@ export function validateSkillStructure(skillDir) {
|
|
|
131
131
|
}
|
|
132
132
|
/**
|
|
133
133
|
* Remove skill directories that are not in the active list.
|
|
134
|
-
*
|
|
134
|
+
* All skills are flat (tsq-* prefix), no nested structure.
|
|
135
135
|
*/
|
|
136
136
|
async function removeInactiveSkills(destSkillsDir, activeSkills) {
|
|
137
137
|
if (!await fs.pathExists(destSkillsDir))
|
|
138
138
|
return;
|
|
139
|
-
|
|
140
|
-
const keepSet = new Set();
|
|
141
|
-
keepSet.add('_template');
|
|
142
|
-
for (const skill of activeSkills) {
|
|
143
|
-
// For nested skills like 'frontend/react', keep the top-level 'frontend'
|
|
144
|
-
const topLevel = skill.split('/')[0];
|
|
145
|
-
keepSet.add(topLevel);
|
|
146
|
-
}
|
|
139
|
+
const keepSet = new Set(['_template', '_shared', ...activeSkills]);
|
|
147
140
|
const entries = await fs.readdir(destSkillsDir, { withFileTypes: true });
|
|
148
141
|
for (const entry of entries) {
|
|
149
142
|
if (!entry.isDirectory())
|
|
150
143
|
continue;
|
|
151
|
-
if (keepSet.has(entry.name))
|
|
152
|
-
// For parent dirs like 'frontend/', check subdirectories
|
|
153
|
-
await removeInactiveSubSkills(path.join(destSkillsDir, entry.name), activeSkills, entry.name);
|
|
144
|
+
if (keepSet.has(entry.name))
|
|
154
145
|
continue;
|
|
155
|
-
}
|
|
156
|
-
// Completely inactive top-level skill
|
|
157
146
|
await fs.remove(path.join(destSkillsDir, entry.name));
|
|
158
147
|
}
|
|
159
148
|
}
|
|
160
|
-
/**
|
|
161
|
-
* For parent skill directories (e.g. frontend/, methodology/),
|
|
162
|
-
* remove inactive sub-skills while keeping active ones.
|
|
163
|
-
*/
|
|
164
|
-
async function removeInactiveSubSkills(parentDir, activeSkills, parentName) {
|
|
165
|
-
const entries = await fs.readdir(parentDir, { withFileTypes: true });
|
|
166
|
-
// Check if this directory itself is a skill (has SKILL.md)
|
|
167
|
-
const hasSelfSkill = entries.some(e => e.name === 'SKILL.md');
|
|
168
|
-
const isParentActive = activeSkills.includes(parentName);
|
|
169
|
-
// If parent itself is an active skill, keep it
|
|
170
|
-
if (hasSelfSkill && !isParentActive) {
|
|
171
|
-
// Remove only SKILL.md and rules/ from parent, keep subdirs
|
|
172
|
-
}
|
|
173
|
-
for (const entry of entries) {
|
|
174
|
-
if (!entry.isDirectory())
|
|
175
|
-
continue;
|
|
176
|
-
if (['rules', 'references', 'scripts', 'triggers', 'delegation', 'memory'].includes(entry.name))
|
|
177
|
-
continue; // belongs to parent skill
|
|
178
|
-
const subSkillPath = `${parentName}/${entry.name}`;
|
|
179
|
-
if (!activeSkills.includes(subSkillPath)) {
|
|
180
|
-
await fs.remove(path.join(parentDir, entry.name));
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
// If parent directory is now empty (no SKILL.md, no subdirs), remove it
|
|
184
|
-
const remaining = await fs.readdir(parentDir);
|
|
185
|
-
if (remaining.length === 0) {
|
|
186
|
-
await fs.remove(parentDir);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
149
|
// ─────────────────────────────────────────────────
|
|
190
150
|
// Knowledge
|
|
191
151
|
// ─────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EACL,WAAW,EAAE,aAAa,EAC1B,cAAc,EAAE,iBAAiB,EACjC,gBAAgB,EAAE,oBAAoB,EAAE,eAAe,GACxD,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,oDAAoD;AACpD,SAAS;AACT,oDAAoD;AAEpD;;;GAGG;AACH;;;GAGG;AACH,SAAS,oBAAoB,CAAC,MAAsB;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC;IAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/lib/skill-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssot-map.d.ts","sourceRoot":"","sources":["../../src/lib/ssot-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIjF;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ,GACb,iBAAiB,EAAE,CAErB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAGhE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GACnC,iBAAiB,EAAE,CAmBrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ssot-map.d.ts","sourceRoot":"","sources":["../../src/lib/ssot-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAIjF;;GAEG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,QAAQ,GACb,iBAAiB,EAAE,CAErB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAGhE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GACnC,iBAAiB,EAAE,CAmBrB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkBhD"}
|
package/dist/lib/ssot-map.js
CHANGED
|
@@ -65,6 +65,9 @@ export async function validateSSOTMap(projectRoot, ssotMap) {
|
|
|
65
65
|
// split 패턴 ({section} 등)은 검증 스킵
|
|
66
66
|
if (doc.source.includes('{'))
|
|
67
67
|
continue;
|
|
68
|
+
// optional 문서는 미존재 허용 (타입별 선택 배포)
|
|
69
|
+
if (doc.optional)
|
|
70
|
+
continue;
|
|
68
71
|
const sourcePath = path.join(projectRoot, '.timsquad', 'ssot', doc.source);
|
|
69
72
|
if (!await exists(sourcePath)) {
|
|
70
73
|
missing.push(doc.source);
|
package/dist/lib/ssot-map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssot-map.js","sourceRoot":"","sources":["../../src/lib/ssot-map.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAU,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,IAAc;IAEd,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,OAAO,mBAAmB,CAAC,OAAO,EAAE,eAAe,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,KAAoC;IAEpC,MAAM,IAAI,GAAwB,EAAE,CAAC;IAErC,qCAAqC;IACrC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,6BAA6B;IAC7B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,OAAgB;IAEhB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAe,CAAC,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAE9F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YACrD,gCAAgC;YAChC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"ssot-map.js","sourceRoot":"","sources":["../../src/lib/ssot-map.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/template.d.ts
CHANGED
|
@@ -13,8 +13,6 @@ export interface TemplateVariables {
|
|
|
13
13
|
DATE: string;
|
|
14
14
|
TIMESTAMP: string;
|
|
15
15
|
INIT_DATE: string;
|
|
16
|
-
ACTIVE_AGENTS: string;
|
|
17
|
-
DELEGATION_RULES: string;
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
18
|
* Get templates directory path
|
|
@@ -35,7 +33,9 @@ export declare function copyAndProcessFile(src: string, dest: string, variables:
|
|
|
35
33
|
/**
|
|
36
34
|
* Copy directory recursively with variable substitution
|
|
37
35
|
*/
|
|
38
|
-
export declare function copyDirectoryWithSubstitution(srcDir: string, destDir: string, variables: TemplateVariables
|
|
36
|
+
export declare function copyDirectoryWithSubstitution(srcDir: string, destDir: string, variables: TemplateVariables, options?: {
|
|
37
|
+
exclude?: string[];
|
|
38
|
+
}): Promise<void>;
|
|
39
39
|
/**
|
|
40
40
|
* Get required SSOT documents for project
|
|
41
41
|
*/
|
|
@@ -44,4 +44,11 @@ export declare function getRequiredDocuments(type: ProjectType, level: ProjectLe
|
|
|
44
44
|
* Initialize project from templates
|
|
45
45
|
*/
|
|
46
46
|
export declare function initializeProject(projectRoot: string, name: string, type: ProjectType, level: ProjectLevel, config?: TimsquadConfig, automationEnabled?: boolean): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Inject or update TimSquad block in CLAUDE.md
|
|
49
|
+
* - If file exists with markers: replace between markers
|
|
50
|
+
* - If file exists without markers: prepend block
|
|
51
|
+
* - If file doesn't exist: create with block only
|
|
52
|
+
*/
|
|
53
|
+
export declare function injectTimsquadBlock(claudeMdPath: string): Promise<void>;
|
|
47
54
|
//# sourceMappingURL=template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AASzD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAmBD;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,cAAc,GACtB,iBAAiB,CAcnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,GAAG,MAAM,CASzF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,EAAE,CAUrF;AAiGD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,YAAY,EACnB,MAAM,CAAC,EAAE,cAAc,EACvB,iBAAiB,UAAO,GACvB,OAAO,CAAC,IAAI,CAAC,CAkHf;AAgFD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB7E"}
|