@planu/cli 1.1.1 → 1.2.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/dist/config/license-plans.json +110 -9
- package/dist/config/spec-cookbook.json +341 -0
- package/dist/engine/asana-sync.d.ts +12 -0
- package/dist/engine/asana-sync.d.ts.map +1 -0
- package/dist/engine/asana-sync.js +72 -0
- package/dist/engine/asana-sync.js.map +1 -0
- package/dist/engine/code-impact-analyzer.d.ts +6 -0
- package/dist/engine/code-impact-analyzer.d.ts.map +1 -0
- package/dist/engine/code-impact-analyzer.js +152 -0
- package/dist/engine/code-impact-analyzer.js.map +1 -0
- package/dist/engine/compliance-reporter.d.ts +11 -0
- package/dist/engine/compliance-reporter.d.ts.map +1 -0
- package/dist/engine/compliance-reporter.js +245 -0
- package/dist/engine/compliance-reporter.js.map +1 -0
- package/dist/engine/context-manager.d.ts +7 -0
- package/dist/engine/context-manager.d.ts.map +1 -0
- package/dist/engine/context-manager.js +76 -0
- package/dist/engine/context-manager.js.map +1 -0
- package/dist/engine/cost-budget-manager.d.ts +10 -0
- package/dist/engine/cost-budget-manager.d.ts.map +1 -0
- package/dist/engine/cost-budget-manager.js +165 -0
- package/dist/engine/cost-budget-manager.js.map +1 -0
- package/dist/engine/dependency-impact-analyzer.d.ts +14 -0
- package/dist/engine/dependency-impact-analyzer.d.ts.map +1 -0
- package/dist/engine/dependency-impact-analyzer.js +133 -0
- package/dist/engine/dependency-impact-analyzer.js.map +1 -0
- package/dist/engine/diff-spec-generator.d.ts +6 -0
- package/dist/engine/diff-spec-generator.d.ts.map +1 -0
- package/dist/engine/diff-spec-generator.js +181 -0
- package/dist/engine/diff-spec-generator.js.map +1 -0
- package/dist/engine/drift-monitor.d.ts +5 -0
- package/dist/engine/drift-monitor.d.ts.map +1 -0
- package/dist/engine/drift-monitor.js +92 -0
- package/dist/engine/drift-monitor.js.map +1 -0
- package/dist/engine/global-rules-manager.d.ts +10 -0
- package/dist/engine/global-rules-manager.d.ts.map +1 -0
- package/dist/engine/global-rules-manager.js +214 -0
- package/dist/engine/global-rules-manager.js.map +1 -0
- package/dist/engine/knowledge-base.d.ts +12 -0
- package/dist/engine/knowledge-base.d.ts.map +1 -0
- package/dist/engine/knowledge-base.js +250 -0
- package/dist/engine/knowledge-base.js.map +1 -0
- package/dist/engine/monday-sync.d.ts +10 -0
- package/dist/engine/monday-sync.d.ts.map +1 -0
- package/dist/engine/monday-sync.js +56 -0
- package/dist/engine/monday-sync.js.map +1 -0
- package/dist/engine/notion-sync.d.ts +13 -0
- package/dist/engine/notion-sync.d.ts.map +1 -0
- package/dist/engine/notion-sync.js +87 -0
- package/dist/engine/notion-sync.js.map +1 -0
- package/dist/engine/onboarding-engine.d.ts +11 -0
- package/dist/engine/onboarding-engine.d.ts.map +1 -0
- package/dist/engine/onboarding-engine.js +575 -0
- package/dist/engine/onboarding-engine.js.map +1 -0
- package/dist/engine/parallel-safety-engine.d.ts +8 -0
- package/dist/engine/parallel-safety-engine.d.ts.map +1 -0
- package/dist/engine/parallel-safety-engine.js +106 -0
- package/dist/engine/parallel-safety-engine.js.map +1 -0
- package/dist/engine/schema-generator.d.ts +6 -0
- package/dist/engine/schema-generator.d.ts.map +1 -0
- package/dist/engine/schema-generator.js +321 -0
- package/dist/engine/schema-generator.js.map +1 -0
- package/dist/engine/spec-cookbook.d.ts +12 -0
- package/dist/engine/spec-cookbook.d.ts.map +1 -0
- package/dist/engine/spec-cookbook.js +176 -0
- package/dist/engine/spec-cookbook.js.map +1 -0
- package/dist/engine/spec-diff-engine.d.ts +8 -0
- package/dist/engine/spec-diff-engine.d.ts.map +1 -0
- package/dist/engine/spec-diff-engine.js +321 -0
- package/dist/engine/spec-diff-engine.js.map +1 -0
- package/dist/engine/spec-hooks-engine.d.ts +12 -0
- package/dist/engine/spec-hooks-engine.d.ts.map +1 -0
- package/dist/engine/spec-hooks-engine.js +79 -0
- package/dist/engine/spec-hooks-engine.js.map +1 -0
- package/dist/engine/spec-lint-engine.d.ts +6 -0
- package/dist/engine/spec-lint-engine.d.ts.map +1 -0
- package/dist/engine/spec-lint-engine.js +164 -0
- package/dist/engine/spec-lint-engine.js.map +1 -0
- package/dist/engine/spec-scheduler.d.ts +13 -0
- package/dist/engine/spec-scheduler.d.ts.map +1 -0
- package/dist/engine/spec-scheduler.js +154 -0
- package/dist/engine/spec-scheduler.js.map +1 -0
- package/dist/engine/spec-source-sync.d.ts +14 -0
- package/dist/engine/spec-source-sync.d.ts.map +1 -0
- package/dist/engine/spec-source-sync.js +148 -0
- package/dist/engine/spec-source-sync.js.map +1 -0
- package/dist/engine/tech-debt-manager.d.ts +12 -0
- package/dist/engine/tech-debt-manager.d.ts.map +1 -0
- package/dist/engine/tech-debt-manager.js +152 -0
- package/dist/engine/tech-debt-manager.js.map +1 -0
- package/dist/engine/validation-loop.d.ts +4 -0
- package/dist/engine/validation-loop.d.ts.map +1 -0
- package/dist/engine/validation-loop.js +133 -0
- package/dist/engine/validation-loop.js.map +1 -0
- package/dist/engine/webhook-server.d.ts +19 -0
- package/dist/engine/webhook-server.d.ts.map +1 -0
- package/dist/engine/webhook-server.js +169 -0
- package/dist/engine/webhook-server.js.map +1 -0
- package/dist/engine/workspace-manager.d.ts +8 -0
- package/dist/engine/workspace-manager.d.ts.map +1 -0
- package/dist/engine/workspace-manager.js +255 -0
- package/dist/engine/workspace-manager.js.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/api-surfaces-store.d.ts +8 -0
- package/dist/storage/api-surfaces-store.d.ts.map +1 -0
- package/dist/storage/api-surfaces-store.js +31 -0
- package/dist/storage/api-surfaces-store.js.map +1 -0
- package/dist/storage/asana-config-store.d.ts +9 -0
- package/dist/storage/asana-config-store.d.ts.map +1 -0
- package/dist/storage/asana-config-store.js +51 -0
- package/dist/storage/asana-config-store.js.map +1 -0
- package/dist/storage/context-config-store.d.ts +4 -0
- package/dist/storage/context-config-store.d.ts.map +1 -0
- package/dist/storage/context-config-store.js +20 -0
- package/dist/storage/context-config-store.js.map +1 -0
- package/dist/storage/cost-budget-store.d.ts +6 -0
- package/dist/storage/cost-budget-store.d.ts.map +1 -0
- package/dist/storage/cost-budget-store.js +42 -0
- package/dist/storage/cost-budget-store.js.map +1 -0
- package/dist/storage/drift-monitor-store.d.ts +9 -0
- package/dist/storage/drift-monitor-store.d.ts.map +1 -0
- package/dist/storage/drift-monitor-store.js +45 -0
- package/dist/storage/drift-monitor-store.js.map +1 -0
- package/dist/storage/monday-config-store.d.ts +9 -0
- package/dist/storage/monday-config-store.d.ts.map +1 -0
- package/dist/storage/monday-config-store.js +51 -0
- package/dist/storage/monday-config-store.js.map +1 -0
- package/dist/storage/notion-config-store.d.ts +9 -0
- package/dist/storage/notion-config-store.d.ts.map +1 -0
- package/dist/storage/notion-config-store.js +51 -0
- package/dist/storage/notion-config-store.js.map +1 -0
- package/dist/storage/onboarding-store.d.ts +4 -0
- package/dist/storage/onboarding-store.d.ts.map +1 -0
- package/dist/storage/onboarding-store.js +14 -0
- package/dist/storage/onboarding-store.js.map +1 -0
- package/dist/storage/retention-policy-store.d.ts +4 -0
- package/dist/storage/retention-policy-store.d.ts.map +1 -0
- package/dist/storage/retention-policy-store.js +20 -0
- package/dist/storage/retention-policy-store.js.map +1 -0
- package/dist/storage/spec-bindings-store.d.ts +8 -0
- package/dist/storage/spec-bindings-store.d.ts.map +1 -0
- package/dist/storage/spec-bindings-store.js +44 -0
- package/dist/storage/spec-bindings-store.js.map +1 -0
- package/dist/storage/spec-hooks-store.d.ts +8 -0
- package/dist/storage/spec-hooks-store.d.ts.map +1 -0
- package/dist/storage/spec-hooks-store.js +56 -0
- package/dist/storage/spec-hooks-store.js.map +1 -0
- package/dist/storage/spec-lint-rules-store.d.ts +5 -0
- package/dist/storage/spec-lint-rules-store.d.ts.map +1 -0
- package/dist/storage/spec-lint-rules-store.js +40 -0
- package/dist/storage/spec-lint-rules-store.js.map +1 -0
- package/dist/storage/tech-debt-store.d.ts +12 -0
- package/dist/storage/tech-debt-store.d.ts.map +1 -0
- package/dist/storage/tech-debt-store.js +51 -0
- package/dist/storage/tech-debt-store.js.map +1 -0
- package/dist/storage/webhook-server-store.d.ts +5 -0
- package/dist/storage/webhook-server-store.d.ts.map +1 -0
- package/dist/storage/webhook-server-store.js +14 -0
- package/dist/storage/webhook-server-store.js.map +1 -0
- package/dist/tools/asana-handler.d.ts +6 -0
- package/dist/tools/asana-handler.d.ts.map +1 -0
- package/dist/tools/asana-handler.js +199 -0
- package/dist/tools/asana-handler.js.map +1 -0
- package/dist/tools/code-impact-handler.d.ts +6 -0
- package/dist/tools/code-impact-handler.d.ts.map +1 -0
- package/dist/tools/code-impact-handler.js +158 -0
- package/dist/tools/code-impact-handler.js.map +1 -0
- package/dist/tools/compliance-audit-handler.d.ts +6 -0
- package/dist/tools/compliance-audit-handler.d.ts.map +1 -0
- package/dist/tools/compliance-audit-handler.js +87 -0
- package/dist/tools/compliance-audit-handler.js.map +1 -0
- package/dist/tools/context-manager-handler.d.ts +8 -0
- package/dist/tools/context-manager-handler.d.ts.map +1 -0
- package/dist/tools/context-manager-handler.js +180 -0
- package/dist/tools/context-manager-handler.js.map +1 -0
- package/dist/tools/cost-budget-handler.d.ts +7 -0
- package/dist/tools/cost-budget-handler.d.ts.map +1 -0
- package/dist/tools/cost-budget-handler.js +242 -0
- package/dist/tools/cost-budget-handler.js.map +1 -0
- package/dist/tools/dependency-impact-handler.d.ts +6 -0
- package/dist/tools/dependency-impact-handler.d.ts.map +1 -0
- package/dist/tools/dependency-impact-handler.js +100 -0
- package/dist/tools/dependency-impact-handler.js.map +1 -0
- package/dist/tools/diff-spec-generator-handler.d.ts +22 -0
- package/dist/tools/diff-spec-generator-handler.d.ts.map +1 -0
- package/dist/tools/diff-spec-generator-handler.js +87 -0
- package/dist/tools/diff-spec-generator-handler.js.map +1 -0
- package/dist/tools/drift-monitor-handler.d.ts +25 -0
- package/dist/tools/drift-monitor-handler.d.ts.map +1 -0
- package/dist/tools/drift-monitor-handler.js +95 -0
- package/dist/tools/drift-monitor-handler.js.map +1 -0
- package/dist/tools/global-rules-handler.d.ts +17 -0
- package/dist/tools/global-rules-handler.d.ts.map +1 -0
- package/dist/tools/global-rules-handler.js +178 -0
- package/dist/tools/global-rules-handler.js.map +1 -0
- package/dist/tools/incoming-webhook-handler.d.ts +6 -0
- package/dist/tools/incoming-webhook-handler.d.ts.map +1 -0
- package/dist/tools/incoming-webhook-handler.js +247 -0
- package/dist/tools/incoming-webhook-handler.js.map +1 -0
- package/dist/tools/knowledge-base-handler.d.ts +7 -0
- package/dist/tools/knowledge-base-handler.d.ts.map +1 -0
- package/dist/tools/knowledge-base-handler.js +137 -0
- package/dist/tools/knowledge-base-handler.js.map +1 -0
- package/dist/tools/monday-handler.d.ts +6 -0
- package/dist/tools/monday-handler.d.ts.map +1 -0
- package/dist/tools/monday-handler.js +190 -0
- package/dist/tools/monday-handler.js.map +1 -0
- package/dist/tools/notion-handler.d.ts +6 -0
- package/dist/tools/notion-handler.d.ts.map +1 -0
- package/dist/tools/notion-handler.js +197 -0
- package/dist/tools/notion-handler.js.map +1 -0
- package/dist/tools/onboarding-handler.d.ts +7 -0
- package/dist/tools/onboarding-handler.d.ts.map +1 -0
- package/dist/tools/onboarding-handler.js +59 -0
- package/dist/tools/onboarding-handler.js.map +1 -0
- package/dist/tools/parallel-safety-handler.d.ts +7 -0
- package/dist/tools/parallel-safety-handler.d.ts.map +1 -0
- package/dist/tools/parallel-safety-handler.js +29 -0
- package/dist/tools/parallel-safety-handler.js.map +1 -0
- package/dist/tools/register-asana-tools.d.ts +3 -0
- package/dist/tools/register-asana-tools.d.ts.map +1 -0
- package/dist/tools/register-asana-tools.js +74 -0
- package/dist/tools/register-asana-tools.js.map +1 -0
- package/dist/tools/register-code-impact-tools.d.ts +3 -0
- package/dist/tools/register-code-impact-tools.d.ts.map +1 -0
- package/dist/tools/register-code-impact-tools.js +58 -0
- package/dist/tools/register-code-impact-tools.js.map +1 -0
- package/dist/tools/register-compliance-audit-tools.d.ts +3 -0
- package/dist/tools/register-compliance-audit-tools.d.ts.map +1 -0
- package/dist/tools/register-compliance-audit-tools.js +106 -0
- package/dist/tools/register-compliance-audit-tools.js.map +1 -0
- package/dist/tools/register-context-manager-tools.d.ts +3 -0
- package/dist/tools/register-context-manager-tools.d.ts.map +1 -0
- package/dist/tools/register-context-manager-tools.js +138 -0
- package/dist/tools/register-context-manager-tools.js.map +1 -0
- package/dist/tools/register-cost-budget-tools.d.ts +3 -0
- package/dist/tools/register-cost-budget-tools.d.ts.map +1 -0
- package/dist/tools/register-cost-budget-tools.js +98 -0
- package/dist/tools/register-cost-budget-tools.js.map +1 -0
- package/dist/tools/register-dependency-impact-tools.d.ts +3 -0
- package/dist/tools/register-dependency-impact-tools.d.ts.map +1 -0
- package/dist/tools/register-dependency-impact-tools.js +63 -0
- package/dist/tools/register-dependency-impact-tools.js.map +1 -0
- package/dist/tools/register-diff-spec-tools.d.ts +3 -0
- package/dist/tools/register-diff-spec-tools.d.ts.map +1 -0
- package/dist/tools/register-diff-spec-tools.js +55 -0
- package/dist/tools/register-diff-spec-tools.js.map +1 -0
- package/dist/tools/register-drift-monitor-tools.d.ts +3 -0
- package/dist/tools/register-drift-monitor-tools.d.ts.map +1 -0
- package/dist/tools/register-drift-monitor-tools.js +64 -0
- package/dist/tools/register-drift-monitor-tools.js.map +1 -0
- package/dist/tools/register-global-rules-tools.d.ts +3 -0
- package/dist/tools/register-global-rules-tools.d.ts.map +1 -0
- package/dist/tools/register-global-rules-tools.js +44 -0
- package/dist/tools/register-global-rules-tools.js.map +1 -0
- package/dist/tools/register-incoming-webhook-tools.d.ts +3 -0
- package/dist/tools/register-incoming-webhook-tools.d.ts.map +1 -0
- package/dist/tools/register-incoming-webhook-tools.js +50 -0
- package/dist/tools/register-incoming-webhook-tools.js.map +1 -0
- package/dist/tools/register-knowledge-base-tools.d.ts +3 -0
- package/dist/tools/register-knowledge-base-tools.d.ts.map +1 -0
- package/dist/tools/register-knowledge-base-tools.js +66 -0
- package/dist/tools/register-knowledge-base-tools.js.map +1 -0
- package/dist/tools/register-monday-tools.d.ts +3 -0
- package/dist/tools/register-monday-tools.d.ts.map +1 -0
- package/dist/tools/register-monday-tools.js +69 -0
- package/dist/tools/register-monday-tools.js.map +1 -0
- package/dist/tools/register-notion-tools.d.ts +3 -0
- package/dist/tools/register-notion-tools.d.ts.map +1 -0
- package/dist/tools/register-notion-tools.js +76 -0
- package/dist/tools/register-notion-tools.js.map +1 -0
- package/dist/tools/register-onboarding-tools.d.ts +3 -0
- package/dist/tools/register-onboarding-tools.d.ts.map +1 -0
- package/dist/tools/register-onboarding-tools.js +70 -0
- package/dist/tools/register-onboarding-tools.js.map +1 -0
- package/dist/tools/register-parallel-safety-tools.d.ts +3 -0
- package/dist/tools/register-parallel-safety-tools.d.ts.map +1 -0
- package/dist/tools/register-parallel-safety-tools.js +18 -0
- package/dist/tools/register-parallel-safety-tools.js.map +1 -0
- package/dist/tools/register-schema-generator-tools.d.ts +3 -0
- package/dist/tools/register-schema-generator-tools.d.ts.map +1 -0
- package/dist/tools/register-schema-generator-tools.js +46 -0
- package/dist/tools/register-schema-generator-tools.js.map +1 -0
- package/dist/tools/register-spec-cookbook-tools.d.ts +3 -0
- package/dist/tools/register-spec-cookbook-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-cookbook-tools.js +90 -0
- package/dist/tools/register-spec-cookbook-tools.js.map +1 -0
- package/dist/tools/register-spec-diff-tools.d.ts +3 -0
- package/dist/tools/register-spec-diff-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-diff-tools.js +67 -0
- package/dist/tools/register-spec-diff-tools.js.map +1 -0
- package/dist/tools/register-spec-hooks-tools.d.ts +3 -0
- package/dist/tools/register-spec-hooks-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-hooks-tools.js +124 -0
- package/dist/tools/register-spec-hooks-tools.js.map +1 -0
- package/dist/tools/register-spec-lint-tools.d.ts +3 -0
- package/dist/tools/register-spec-lint-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-lint-tools.js +79 -0
- package/dist/tools/register-spec-lint-tools.js.map +1 -0
- package/dist/tools/register-spec-scheduler-tools.d.ts +3 -0
- package/dist/tools/register-spec-scheduler-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-scheduler-tools.js +73 -0
- package/dist/tools/register-spec-scheduler-tools.js.map +1 -0
- package/dist/tools/register-spec-source-tools.d.ts +3 -0
- package/dist/tools/register-spec-source-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-source-tools.js +48 -0
- package/dist/tools/register-spec-source-tools.js.map +1 -0
- package/dist/tools/register-tech-debt-tools.d.ts +3 -0
- package/dist/tools/register-tech-debt-tools.d.ts.map +1 -0
- package/dist/tools/register-tech-debt-tools.js +95 -0
- package/dist/tools/register-tech-debt-tools.js.map +1 -0
- package/dist/tools/register-validation-loop-tools.d.ts +3 -0
- package/dist/tools/register-validation-loop-tools.d.ts.map +1 -0
- package/dist/tools/register-validation-loop-tools.js +77 -0
- package/dist/tools/register-validation-loop-tools.js.map +1 -0
- package/dist/tools/register-workspace-dashboard-tools.d.ts +3 -0
- package/dist/tools/register-workspace-dashboard-tools.d.ts.map +1 -0
- package/dist/tools/register-workspace-dashboard-tools.js +98 -0
- package/dist/tools/register-workspace-dashboard-tools.js.map +1 -0
- package/dist/tools/schema-generator-handler.d.ts +4 -0
- package/dist/tools/schema-generator-handler.d.ts.map +1 -0
- package/dist/tools/schema-generator-handler.js +129 -0
- package/dist/tools/schema-generator-handler.js.map +1 -0
- package/dist/tools/spec-cookbook-handler.d.ts +7 -0
- package/dist/tools/spec-cookbook-handler.d.ts.map +1 -0
- package/dist/tools/spec-cookbook-handler.js +83 -0
- package/dist/tools/spec-cookbook-handler.js.map +1 -0
- package/dist/tools/spec-hooks-handler.d.ts +7 -0
- package/dist/tools/spec-hooks-handler.d.ts.map +1 -0
- package/dist/tools/spec-hooks-handler.js +112 -0
- package/dist/tools/spec-hooks-handler.js.map +1 -0
- package/dist/tools/spec-lint-handler.d.ts +6 -0
- package/dist/tools/spec-lint-handler.d.ts.map +1 -0
- package/dist/tools/spec-lint-handler.js +165 -0
- package/dist/tools/spec-lint-handler.js.map +1 -0
- package/dist/tools/spec-scheduler-handler.d.ts +6 -0
- package/dist/tools/spec-scheduler-handler.d.ts.map +1 -0
- package/dist/tools/spec-scheduler-handler.js +108 -0
- package/dist/tools/spec-scheduler-handler.js.map +1 -0
- package/dist/tools/spec-source-handler.d.ts +21 -0
- package/dist/tools/spec-source-handler.d.ts.map +1 -0
- package/dist/tools/spec-source-handler.js +75 -0
- package/dist/tools/spec-source-handler.js.map +1 -0
- package/dist/tools/spec-visual-diff-handler.d.ts +7 -0
- package/dist/tools/spec-visual-diff-handler.d.ts.map +1 -0
- package/dist/tools/spec-visual-diff-handler.js +130 -0
- package/dist/tools/spec-visual-diff-handler.js.map +1 -0
- package/dist/tools/tech-debt-handler.d.ts +8 -0
- package/dist/tools/tech-debt-handler.d.ts.map +1 -0
- package/dist/tools/tech-debt-handler.js +150 -0
- package/dist/tools/tech-debt-handler.js.map +1 -0
- package/dist/tools/validation-loop-handler.d.ts +5 -0
- package/dist/tools/validation-loop-handler.d.ts.map +1 -0
- package/dist/tools/validation-loop-handler.js +59 -0
- package/dist/tools/validation-loop-handler.js.map +1 -0
- package/dist/tools/workspace-dashboard-handler.d.ts +8 -0
- package/dist/tools/workspace-dashboard-handler.d.ts.map +1 -0
- package/dist/tools/workspace-dashboard-handler.js +108 -0
- package/dist/tools/workspace-dashboard-handler.js.map +1 -0
- package/dist/types/code-impact.d.ts +57 -0
- package/dist/types/code-impact.d.ts.map +1 -0
- package/dist/types/code-impact.js +3 -0
- package/dist/types/code-impact.js.map +1 -0
- package/dist/types/compliance-audit.d.ts +55 -0
- package/dist/types/compliance-audit.d.ts.map +1 -0
- package/dist/types/compliance-audit.js +3 -0
- package/dist/types/compliance-audit.js.map +1 -0
- package/dist/types/context-manager.d.ts +57 -0
- package/dist/types/context-manager.d.ts.map +1 -0
- package/dist/types/context-manager.js +3 -0
- package/dist/types/context-manager.js.map +1 -0
- package/dist/types/cost-budget.d.ts +84 -0
- package/dist/types/cost-budget.d.ts.map +1 -0
- package/dist/types/cost-budget.js +3 -0
- package/dist/types/cost-budget.js.map +1 -0
- package/dist/types/dependency-impact.d.ts +45 -0
- package/dist/types/dependency-impact.d.ts.map +1 -0
- package/dist/types/dependency-impact.js +3 -0
- package/dist/types/dependency-impact.js.map +1 -0
- package/dist/types/diff-spec-types.d.ts +39 -0
- package/dist/types/diff-spec-types.d.ts.map +1 -0
- package/dist/types/diff-spec-types.js +3 -0
- package/dist/types/diff-spec-types.js.map +1 -0
- package/dist/types/drift-monitor-types.d.ts +47 -0
- package/dist/types/drift-monitor-types.d.ts.map +1 -0
- package/dist/types/drift-monitor-types.js +3 -0
- package/dist/types/drift-monitor-types.js.map +1 -0
- package/dist/types/global-rules-types.d.ts +31 -0
- package/dist/types/global-rules-types.d.ts.map +1 -0
- package/dist/types/global-rules-types.js +3 -0
- package/dist/types/global-rules-types.js.map +1 -0
- package/dist/types/incoming-webhook.d.ts +40 -0
- package/dist/types/incoming-webhook.d.ts.map +1 -0
- package/dist/types/incoming-webhook.js +3 -0
- package/dist/types/incoming-webhook.js.map +1 -0
- package/dist/types/index.d.ts +23 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/knowledge-base.d.ts +57 -0
- package/dist/types/knowledge-base.d.ts.map +1 -0
- package/dist/types/knowledge-base.js +3 -0
- package/dist/types/knowledge-base.js.map +1 -0
- package/dist/types/notion-asana-monday.d.ts +196 -0
- package/dist/types/notion-asana-monday.d.ts.map +1 -0
- package/dist/types/notion-asana-monday.js +3 -0
- package/dist/types/notion-asana-monday.js.map +1 -0
- package/dist/types/onboarding-types.d.ts +69 -0
- package/dist/types/onboarding-types.d.ts.map +1 -0
- package/dist/types/onboarding-types.js +3 -0
- package/dist/types/onboarding-types.js.map +1 -0
- package/dist/types/parallel-safety-types.d.ts +14 -0
- package/dist/types/parallel-safety-types.d.ts.map +1 -0
- package/dist/types/parallel-safety-types.js +3 -0
- package/dist/types/parallel-safety-types.js.map +1 -0
- package/dist/types/schema-generator.d.ts +61 -0
- package/dist/types/schema-generator.d.ts.map +1 -0
- package/dist/types/schema-generator.js +3 -0
- package/dist/types/schema-generator.js.map +1 -0
- package/dist/types/spec-cookbook-types.d.ts +45 -0
- package/dist/types/spec-cookbook-types.d.ts.map +1 -0
- package/dist/types/spec-cookbook-types.js +3 -0
- package/dist/types/spec-cookbook-types.js.map +1 -0
- package/dist/types/spec-diff-visual-types.d.ts +75 -0
- package/dist/types/spec-diff-visual-types.d.ts.map +1 -0
- package/dist/types/spec-diff-visual-types.js +3 -0
- package/dist/types/spec-diff-visual-types.js.map +1 -0
- package/dist/types/spec-hooks.d.ts +62 -0
- package/dist/types/spec-hooks.d.ts.map +1 -0
- package/dist/types/spec-hooks.js +3 -0
- package/dist/types/spec-hooks.js.map +1 -0
- package/dist/types/spec-lint.d.ts +79 -0
- package/dist/types/spec-lint.d.ts.map +1 -0
- package/dist/types/spec-lint.js +3 -0
- package/dist/types/spec-lint.js.map +1 -0
- package/dist/types/spec-scheduler.d.ts +58 -0
- package/dist/types/spec-scheduler.d.ts.map +1 -0
- package/dist/types/spec-scheduler.js +3 -0
- package/dist/types/spec-scheduler.js.map +1 -0
- package/dist/types/spec-source-types.d.ts +37 -0
- package/dist/types/spec-source-types.d.ts.map +1 -0
- package/dist/types/spec-source-types.js +3 -0
- package/dist/types/spec-source-types.js.map +1 -0
- package/dist/types/tech-debt.d.ts +66 -0
- package/dist/types/tech-debt.d.ts.map +1 -0
- package/dist/types/tech-debt.js +3 -0
- package/dist/types/tech-debt.js.map +1 -0
- package/dist/types/validation-loop.d.ts +39 -0
- package/dist/types/validation-loop.d.ts.map +1 -0
- package/dist/types/validation-loop.js +3 -0
- package/dist/types/validation-loop.js.map +1 -0
- package/dist/types/workspace-dashboard-types.d.ts +74 -0
- package/dist/types/workspace-dashboard-types.d.ts.map +1 -0
- package/dist/types/workspace-dashboard-types.js +3 -0
- package/dist/types/workspace-dashboard-types.js.map +1 -0
- package/package.json +2 -1
- package/src/config/license-plans.json +110 -9
- package/src/config/spec-cookbook.json +341 -0
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"approval_status",
|
|
25
25
|
"capture_idea",
|
|
26
26
|
"check_config_health",
|
|
27
|
+
"check_parallel_safety",
|
|
27
28
|
"check_spec_lock",
|
|
28
29
|
"check_versions",
|
|
29
30
|
"clarify_requirements",
|
|
@@ -97,10 +98,13 @@
|
|
|
97
98
|
"a2a_register",
|
|
98
99
|
"activate_group",
|
|
99
100
|
"agent_swarm_status",
|
|
101
|
+
"analyze_breaking_changes",
|
|
100
102
|
"analyze_spec_dependencies",
|
|
103
|
+
"apply_domain_bundle",
|
|
101
104
|
"apply_spec_template",
|
|
102
105
|
"apply_template",
|
|
103
106
|
"approve_spec",
|
|
107
|
+
"assess_merge_risk",
|
|
104
108
|
"assign_role",
|
|
105
109
|
"audit",
|
|
106
110
|
"audit_claude_config",
|
|
@@ -112,6 +116,7 @@
|
|
|
112
116
|
"calibrate_estimates",
|
|
113
117
|
"capture_learning",
|
|
114
118
|
"challenge_spec",
|
|
119
|
+
"check_api_compatibility",
|
|
115
120
|
"check_compliance",
|
|
116
121
|
"check_readiness",
|
|
117
122
|
"check_spec_accuracy",
|
|
@@ -136,9 +141,12 @@
|
|
|
136
141
|
"coverage_gap_analyzer",
|
|
137
142
|
"create_pr_from_spec",
|
|
138
143
|
"create_release",
|
|
144
|
+
"critical_path_analyzer",
|
|
139
145
|
"data_governance",
|
|
146
|
+
"debt_forecast",
|
|
140
147
|
"decompose_spec",
|
|
141
148
|
"define_ui_contract",
|
|
149
|
+
"dependency_impact_report",
|
|
142
150
|
"design_schema",
|
|
143
151
|
"detect_agent",
|
|
144
152
|
"detect_contradictions",
|
|
@@ -158,6 +166,8 @@
|
|
|
158
166
|
"export_session",
|
|
159
167
|
"export_spec",
|
|
160
168
|
"export_specs_csv",
|
|
169
|
+
"expose_spec_as_prompt",
|
|
170
|
+
"extract_lessons_from_text",
|
|
161
171
|
"federate_specs",
|
|
162
172
|
"federation_status",
|
|
163
173
|
"generate_adr",
|
|
@@ -187,10 +197,16 @@
|
|
|
187
197
|
"inject_criteria",
|
|
188
198
|
"integrate_pm",
|
|
189
199
|
"jira_status",
|
|
200
|
+
"knowledge_gap_detector",
|
|
201
|
+
"knowledge_summary",
|
|
190
202
|
"legal_compliance_report",
|
|
191
203
|
"linear_status",
|
|
204
|
+
"list_domain_bundles",
|
|
192
205
|
"list_groups",
|
|
193
206
|
"list_sessions",
|
|
207
|
+
"list_spec_prompts",
|
|
208
|
+
"list_tech_debt",
|
|
209
|
+
"living_reconcile_spec",
|
|
194
210
|
"living_spec_coverage",
|
|
195
211
|
"living_spec_status",
|
|
196
212
|
"living_spec_watch",
|
|
@@ -202,12 +218,14 @@
|
|
|
202
218
|
"manage_scope",
|
|
203
219
|
"merge_spec_branch",
|
|
204
220
|
"migrate_tech",
|
|
221
|
+
"optimize_spec_scheduling",
|
|
205
222
|
"orchestrate",
|
|
206
223
|
"orchestrate_agents",
|
|
207
224
|
"orchestrate_runtime",
|
|
208
225
|
"outbound_webhook_status",
|
|
209
226
|
"package_handoff",
|
|
210
227
|
"paradigm_report",
|
|
228
|
+
"parallel_efficiency_score",
|
|
211
229
|
"plan_team_distribution",
|
|
212
230
|
"plan_upgrade",
|
|
213
231
|
"product_insights",
|
|
@@ -219,8 +237,8 @@
|
|
|
219
237
|
"reconcile_rules",
|
|
220
238
|
"reconcile_skills",
|
|
221
239
|
"reconcile_spec",
|
|
222
|
-
"living_reconcile_spec",
|
|
223
240
|
"red_team",
|
|
241
|
+
"register_api_surface",
|
|
224
242
|
"registry_login",
|
|
225
243
|
"registry_logout",
|
|
226
244
|
"registry_publish",
|
|
@@ -236,6 +254,7 @@
|
|
|
236
254
|
"resolve_comment",
|
|
237
255
|
"resolve_feedback",
|
|
238
256
|
"resolve_sync_conflict",
|
|
257
|
+
"resolve_tech_debt",
|
|
239
258
|
"restore_session",
|
|
240
259
|
"reverse_engineer",
|
|
241
260
|
"reverse_engineer_tests",
|
|
@@ -243,13 +262,16 @@
|
|
|
243
262
|
"run_mutation_hints",
|
|
244
263
|
"scaffold_plugin",
|
|
245
264
|
"scan_project",
|
|
246
|
-
"sync_spec_state",
|
|
247
265
|
"search_all_projects",
|
|
248
266
|
"search_spec_templates",
|
|
249
267
|
"security_check",
|
|
250
268
|
"security_report",
|
|
269
|
+
"security_scan_pro",
|
|
270
|
+
"semantic_decision_search",
|
|
251
271
|
"semantic_search",
|
|
252
272
|
"send_digest",
|
|
273
|
+
"similar_problems_finder",
|
|
274
|
+
"simulate_parallel_execution",
|
|
253
275
|
"slack_notify",
|
|
254
276
|
"snapshot_spec_hashes",
|
|
255
277
|
"spec_coverage",
|
|
@@ -267,13 +289,18 @@
|
|
|
267
289
|
"sync_ai_configs",
|
|
268
290
|
"sync_code_to_spec",
|
|
269
291
|
"sync_google_workspace",
|
|
292
|
+
"sync_spec_state",
|
|
270
293
|
"sync_spec_to_code",
|
|
271
294
|
"sync_to_confluence",
|
|
272
295
|
"sync_to_jira",
|
|
273
296
|
"sync_to_linear",
|
|
274
297
|
"team_analytics",
|
|
298
|
+
"tech_debt_budget",
|
|
299
|
+
"tech_debt_report",
|
|
300
|
+
"telemetry_health",
|
|
275
301
|
"token_intelligence",
|
|
276
302
|
"token_savings_report",
|
|
303
|
+
"track_tech_debt",
|
|
277
304
|
"transform_code",
|
|
278
305
|
"triage_feedback",
|
|
279
306
|
"update_registry",
|
|
@@ -286,13 +313,87 @@
|
|
|
286
313
|
"velocity_trend",
|
|
287
314
|
"version_spec",
|
|
288
315
|
"workload_distribution",
|
|
289
|
-
"
|
|
290
|
-
"
|
|
291
|
-
"
|
|
292
|
-
"
|
|
293
|
-
"
|
|
294
|
-
"
|
|
295
|
-
"
|
|
316
|
+
"configure_drift_monitoring",
|
|
317
|
+
"drift_alert_rules",
|
|
318
|
+
"drift_summary_report",
|
|
319
|
+
"sync_spec_from_code",
|
|
320
|
+
"mark_as_spec_source",
|
|
321
|
+
"list_spec_bindings",
|
|
322
|
+
"generate_spec_from_diff",
|
|
323
|
+
"generate_spec_from_pr",
|
|
324
|
+
"generate_spec_from_commit_range",
|
|
325
|
+
"manage_global_rules",
|
|
326
|
+
"global_rules_status",
|
|
327
|
+
"configure_notion",
|
|
328
|
+
"sync_to_notion",
|
|
329
|
+
"notion_status",
|
|
330
|
+
"remove_notion",
|
|
331
|
+
"configure_asana",
|
|
332
|
+
"sync_to_asana",
|
|
333
|
+
"asana_status",
|
|
334
|
+
"remove_asana",
|
|
335
|
+
"configure_monday",
|
|
336
|
+
"sync_to_monday",
|
|
337
|
+
"monday_status",
|
|
338
|
+
"remove_monday",
|
|
339
|
+
"configure_incoming_webhooks",
|
|
340
|
+
"incoming_webhook_status",
|
|
341
|
+
"generate_webhook_docs",
|
|
342
|
+
"stop_incoming_webhooks",
|
|
343
|
+
"define_spec_lint_rule",
|
|
344
|
+
"list_spec_lint_rules",
|
|
345
|
+
"run_spec_lint",
|
|
346
|
+
"delete_spec_lint_rule",
|
|
347
|
+
"generate_validation_schema",
|
|
348
|
+
"generate_api_client",
|
|
349
|
+
"analyze_code_impact",
|
|
350
|
+
"code_change_compliance",
|
|
351
|
+
"suggest_spec_update",
|
|
352
|
+
"git_diff_to_spec_impact",
|
|
353
|
+
"configure_cost_budget",
|
|
354
|
+
"cost_alert_rules",
|
|
355
|
+
"cost_forecast",
|
|
356
|
+
"cost_budget_status",
|
|
357
|
+
"budget_history",
|
|
358
|
+
"configure_spec_hooks",
|
|
359
|
+
"enable_spec_hook",
|
|
360
|
+
"disable_spec_hook",
|
|
361
|
+
"list_spec_hooks",
|
|
362
|
+
"test_spec_hook",
|
|
363
|
+
"run_validation_loop",
|
|
364
|
+
"spec_health_check",
|
|
365
|
+
"health_check_all",
|
|
366
|
+
"context_window_status",
|
|
367
|
+
"context_budget_config",
|
|
368
|
+
"optimize_context",
|
|
369
|
+
"archive_spec_context",
|
|
370
|
+
"restore_archived_context",
|
|
371
|
+
"compress_spec_history",
|
|
372
|
+
"generate_compliance_report",
|
|
373
|
+
"compliance_gap_analysis",
|
|
374
|
+
"audit_log_export",
|
|
375
|
+
"data_retention_policy",
|
|
376
|
+
"start_onboarding",
|
|
377
|
+
"guided_tour",
|
|
378
|
+
"onboarding_checklist",
|
|
379
|
+
"quick_start",
|
|
380
|
+
"onboarding_progress",
|
|
381
|
+
"cookbook_list",
|
|
382
|
+
"cookbook_get",
|
|
383
|
+
"cookbook_apply",
|
|
384
|
+
"cookbook_contribute",
|
|
385
|
+
"cookbook_search",
|
|
386
|
+
"visual_spec_diff",
|
|
387
|
+
"three_way_merge",
|
|
388
|
+
"smart_merge_conflict_resolver",
|
|
389
|
+
"merge_preview",
|
|
390
|
+
"apply_merge",
|
|
391
|
+
"workspace_overview",
|
|
392
|
+
"workspace_health",
|
|
393
|
+
"bulk_project_operations",
|
|
394
|
+
"workspace_report",
|
|
395
|
+
"workspace_search",
|
|
396
|
+
"workspace_alerts"
|
|
296
397
|
],
|
|
297
398
|
"alwaysAllowed": [
|
|
298
399
|
"activate_license",
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0.0",
|
|
3
|
+
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"id": "ecommerce-user-auth",
|
|
6
|
+
"domain": "ecommerce",
|
|
7
|
+
"featureType": "auth",
|
|
8
|
+
"title": "User Authentication & Registration",
|
|
9
|
+
"description": "Implement user registration, login, and password reset flow with JWT tokens.",
|
|
10
|
+
"acceptanceCriteria": [
|
|
11
|
+
"User can register with email and password",
|
|
12
|
+
"User can login and receive JWT token",
|
|
13
|
+
"User can reset password via email",
|
|
14
|
+
"Invalid credentials return 401 with descriptive error",
|
|
15
|
+
"JWT tokens expire after 24 hours"
|
|
16
|
+
],
|
|
17
|
+
"tags": ["auth", "users", "jwt"],
|
|
18
|
+
"estimatedEffort": "3-5 days"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "ecommerce-payments",
|
|
22
|
+
"domain": "ecommerce",
|
|
23
|
+
"featureType": "payments",
|
|
24
|
+
"title": "Payment Processing with Stripe",
|
|
25
|
+
"description": "Integrate Stripe for one-time payments and subscription management.",
|
|
26
|
+
"acceptanceCriteria": [
|
|
27
|
+
"User can complete checkout with credit card via Stripe",
|
|
28
|
+
"Payment confirmation email sent on success",
|
|
29
|
+
"Failed payments return actionable error messages",
|
|
30
|
+
"Webhook handler processes Stripe events reliably",
|
|
31
|
+
"Refund flow supported for order cancellations"
|
|
32
|
+
],
|
|
33
|
+
"tags": ["payments", "stripe", "billing"],
|
|
34
|
+
"estimatedEffort": "5-8 days"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "ecommerce-cart",
|
|
38
|
+
"domain": "ecommerce",
|
|
39
|
+
"featureType": "cart",
|
|
40
|
+
"title": "Shopping Cart Management",
|
|
41
|
+
"description": "Persistent shopping cart with add, remove, and quantity update operations.",
|
|
42
|
+
"acceptanceCriteria": [
|
|
43
|
+
"User can add items to cart",
|
|
44
|
+
"User can update item quantities",
|
|
45
|
+
"User can remove items from cart",
|
|
46
|
+
"Cart persists across sessions for authenticated users",
|
|
47
|
+
"Cart shows real-time subtotal and item count"
|
|
48
|
+
],
|
|
49
|
+
"tags": ["cart", "shopping", "persistence"],
|
|
50
|
+
"estimatedEffort": "3-4 days"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "ecommerce-search",
|
|
54
|
+
"domain": "ecommerce",
|
|
55
|
+
"featureType": "search",
|
|
56
|
+
"title": "Product Search & Filtering",
|
|
57
|
+
"description": "Full-text search with filters for category, price range, and availability.",
|
|
58
|
+
"acceptanceCriteria": [
|
|
59
|
+
"User can search products by keyword",
|
|
60
|
+
"Results can be filtered by category, price range, and availability",
|
|
61
|
+
"Search returns results in under 500ms",
|
|
62
|
+
"Empty state shown with suggestions when no results found",
|
|
63
|
+
"Pagination supported for large result sets"
|
|
64
|
+
],
|
|
65
|
+
"tags": ["search", "filtering", "products"],
|
|
66
|
+
"estimatedEffort": "4-6 days"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "ecommerce-inventory",
|
|
70
|
+
"domain": "ecommerce",
|
|
71
|
+
"featureType": "inventory",
|
|
72
|
+
"title": "Inventory Management",
|
|
73
|
+
"description": "Track product stock levels with low-stock alerts and automatic out-of-stock handling.",
|
|
74
|
+
"acceptanceCriteria": [
|
|
75
|
+
"Stock quantity decremented on successful order",
|
|
76
|
+
"Out-of-stock products cannot be added to cart",
|
|
77
|
+
"Low-stock alerts triggered below configurable threshold",
|
|
78
|
+
"Admin can manually adjust stock levels",
|
|
79
|
+
"Stock history log maintained for auditing"
|
|
80
|
+
],
|
|
81
|
+
"tags": ["inventory", "stock", "admin"],
|
|
82
|
+
"estimatedEffort": "3-5 days"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "saas-billing",
|
|
86
|
+
"domain": "saas",
|
|
87
|
+
"featureType": "billing",
|
|
88
|
+
"title": "SaaS Subscription Billing",
|
|
89
|
+
"description": "Tiered subscription billing with plan upgrades, downgrades, and cancellations.",
|
|
90
|
+
"acceptanceCriteria": [
|
|
91
|
+
"User can subscribe to a plan",
|
|
92
|
+
"User can upgrade or downgrade plan with proration",
|
|
93
|
+
"User can cancel subscription (immediate or end-of-period)",
|
|
94
|
+
"Invoice history accessible from account settings",
|
|
95
|
+
"Failed payments trigger retry logic and user notification"
|
|
96
|
+
],
|
|
97
|
+
"tags": ["billing", "subscriptions", "saas"],
|
|
98
|
+
"estimatedEffort": "5-7 days"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "saas-onboarding",
|
|
102
|
+
"domain": "saas",
|
|
103
|
+
"featureType": "onboarding",
|
|
104
|
+
"title": "User Onboarding Flow",
|
|
105
|
+
"description": "Guided onboarding wizard with progress tracking and contextual tooltips.",
|
|
106
|
+
"acceptanceCriteria": [
|
|
107
|
+
"New users guided through 3-5 step onboarding wizard",
|
|
108
|
+
"Progress persisted so users can resume onboarding",
|
|
109
|
+
"Each step includes contextual help text",
|
|
110
|
+
"Onboarding can be skipped and revisited later",
|
|
111
|
+
"Completion triggers welcome email and first-use analytics event"
|
|
112
|
+
],
|
|
113
|
+
"tags": ["onboarding", "ux", "retention"],
|
|
114
|
+
"estimatedEffort": "3-4 days"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "saas-team-management",
|
|
118
|
+
"domain": "saas",
|
|
119
|
+
"featureType": "team-mgmt",
|
|
120
|
+
"title": "Team & Workspace Management",
|
|
121
|
+
"description": "Invite team members, assign roles, and manage workspace access.",
|
|
122
|
+
"acceptanceCriteria": [
|
|
123
|
+
"Workspace owner can invite members by email",
|
|
124
|
+
"Invited members receive email with accept link",
|
|
125
|
+
"Roles: owner, admin, member with defined permissions",
|
|
126
|
+
"Owner can remove members from workspace",
|
|
127
|
+
"Billing seats updated automatically on member changes"
|
|
128
|
+
],
|
|
129
|
+
"tags": ["teams", "rbac", "workspaces"],
|
|
130
|
+
"estimatedEffort": "5-7 days"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "saas-analytics",
|
|
134
|
+
"domain": "saas",
|
|
135
|
+
"featureType": "analytics",
|
|
136
|
+
"title": "Usage Analytics Dashboard",
|
|
137
|
+
"description": "Display key product usage metrics with time series charts and export.",
|
|
138
|
+
"acceptanceCriteria": [
|
|
139
|
+
"Dashboard shows DAU, MAU, and feature usage metrics",
|
|
140
|
+
"Time range selector (7d, 30d, 90d, custom)",
|
|
141
|
+
"Data refreshes on page load with loading states",
|
|
142
|
+
"Admin can export analytics as CSV",
|
|
143
|
+
"Metrics broken down by plan tier"
|
|
144
|
+
],
|
|
145
|
+
"tags": ["analytics", "dashboard", "metrics"],
|
|
146
|
+
"estimatedEffort": "4-6 days"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"id": "saas-notifications",
|
|
150
|
+
"domain": "saas",
|
|
151
|
+
"featureType": "notifications",
|
|
152
|
+
"title": "In-App Notification System",
|
|
153
|
+
"description": "Real-time in-app notifications with read/unread state and notification preferences.",
|
|
154
|
+
"acceptanceCriteria": [
|
|
155
|
+
"Users receive in-app notifications for key events",
|
|
156
|
+
"Notifications marked as read on click",
|
|
157
|
+
"Unread count badge visible in navigation",
|
|
158
|
+
"Users can configure notification preferences",
|
|
159
|
+
"Notifications older than 30 days auto-archived"
|
|
160
|
+
],
|
|
161
|
+
"tags": ["notifications", "real-time", "ux"],
|
|
162
|
+
"estimatedEffort": "3-5 days"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "mobile-push-notifications",
|
|
166
|
+
"domain": "mobile",
|
|
167
|
+
"featureType": "push-notif",
|
|
168
|
+
"title": "Push Notification Integration",
|
|
169
|
+
"description": "Cross-platform push notifications via FCM/APNs with opt-in flow.",
|
|
170
|
+
"acceptanceCriteria": [
|
|
171
|
+
"User prompted to allow push notifications on first launch",
|
|
172
|
+
"Device token registered with backend on permission grant",
|
|
173
|
+
"Notifications delivered on iOS and Android",
|
|
174
|
+
"Users can opt out from settings",
|
|
175
|
+
"Deep-link routing from notification tap"
|
|
176
|
+
],
|
|
177
|
+
"tags": ["push", "fcm", "apns", "mobile"],
|
|
178
|
+
"estimatedEffort": "4-6 days"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"id": "mobile-offline-mode",
|
|
182
|
+
"domain": "mobile",
|
|
183
|
+
"featureType": "offline-mode",
|
|
184
|
+
"title": "Offline Mode & Data Sync",
|
|
185
|
+
"description": "Local data caching with background sync when connectivity is restored.",
|
|
186
|
+
"acceptanceCriteria": [
|
|
187
|
+
"Core features accessible without internet connection",
|
|
188
|
+
"Data changes queued locally when offline",
|
|
189
|
+
"Sync triggered automatically on reconnect",
|
|
190
|
+
"Conflict resolution strategy defined and implemented",
|
|
191
|
+
"Sync status indicator visible in UI"
|
|
192
|
+
],
|
|
193
|
+
"tags": ["offline", "sync", "caching"],
|
|
194
|
+
"estimatedEffort": "7-10 days"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "mobile-biometric-auth",
|
|
198
|
+
"domain": "mobile",
|
|
199
|
+
"featureType": "auth",
|
|
200
|
+
"title": "Biometric Authentication",
|
|
201
|
+
"description": "TouchID/FaceID authentication as an alternative to password login.",
|
|
202
|
+
"acceptanceCriteria": [
|
|
203
|
+
"User can enable biometric auth from settings",
|
|
204
|
+
"Biometric prompt shown on app launch when enabled",
|
|
205
|
+
"Falls back to PIN/password on biometric failure",
|
|
206
|
+
"Biometric auth disabled automatically after 3 failures",
|
|
207
|
+
"Settings clearly explain data stored locally"
|
|
208
|
+
],
|
|
209
|
+
"tags": ["biometrics", "touchid", "faceid", "auth"],
|
|
210
|
+
"estimatedEffort": "2-3 days"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "api-rate-limiting",
|
|
214
|
+
"domain": "api",
|
|
215
|
+
"featureType": "rate-limiting",
|
|
216
|
+
"title": "API Rate Limiting",
|
|
217
|
+
"description": "Token bucket rate limiting per API key with headers and 429 responses.",
|
|
218
|
+
"acceptanceCriteria": [
|
|
219
|
+
"Rate limits enforced per API key",
|
|
220
|
+
"X-RateLimit-Limit and X-RateLimit-Remaining headers returned",
|
|
221
|
+
"429 response with Retry-After header when limit exceeded",
|
|
222
|
+
"Limits configurable per plan tier",
|
|
223
|
+
"Rate limit state persisted in Redis or equivalent"
|
|
224
|
+
],
|
|
225
|
+
"tags": ["rate-limiting", "api", "security"],
|
|
226
|
+
"estimatedEffort": "2-3 days"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"id": "api-auth",
|
|
230
|
+
"domain": "api",
|
|
231
|
+
"featureType": "auth",
|
|
232
|
+
"title": "API Key Authentication",
|
|
233
|
+
"description": "Secure API key generation, rotation, and scoped permissions.",
|
|
234
|
+
"acceptanceCriteria": [
|
|
235
|
+
"Users can generate API keys from dashboard",
|
|
236
|
+
"API keys support scoped permissions (read/write)",
|
|
237
|
+
"Keys can be revoked immediately",
|
|
238
|
+
"Last-used timestamp tracked per key",
|
|
239
|
+
"Keys shown only once at creation; hashed at rest"
|
|
240
|
+
],
|
|
241
|
+
"tags": ["api-keys", "auth", "security"],
|
|
242
|
+
"estimatedEffort": "2-4 days"
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"id": "api-pagination",
|
|
246
|
+
"domain": "api",
|
|
247
|
+
"featureType": "pagination",
|
|
248
|
+
"title": "Cursor-based Pagination",
|
|
249
|
+
"description": "Efficient cursor-based pagination for large dataset endpoints.",
|
|
250
|
+
"acceptanceCriteria": [
|
|
251
|
+
"All list endpoints support cursor-based pagination",
|
|
252
|
+
"Response includes next_cursor and has_more fields",
|
|
253
|
+
"Page size configurable via limit parameter (max 100)",
|
|
254
|
+
"Stable sort order guaranteed across pages",
|
|
255
|
+
"Deprecated offset pagination removed or hidden behind flag"
|
|
256
|
+
],
|
|
257
|
+
"tags": ["pagination", "api", "performance"],
|
|
258
|
+
"estimatedEffort": "1-2 days"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"id": "api-webhooks",
|
|
262
|
+
"domain": "api",
|
|
263
|
+
"featureType": "webhooks",
|
|
264
|
+
"title": "Outbound Webhook Delivery",
|
|
265
|
+
"description": "Reliable webhook delivery with retries, signing, and delivery log.",
|
|
266
|
+
"acceptanceCriteria": [
|
|
267
|
+
"Events trigger webhook delivery to configured URLs",
|
|
268
|
+
"HMAC-SHA256 signature included in X-Signature header",
|
|
269
|
+
"Failed deliveries retried up to 5 times with exponential backoff",
|
|
270
|
+
"Delivery log shows status, response code, and duration",
|
|
271
|
+
"Users can test webhooks from the dashboard"
|
|
272
|
+
],
|
|
273
|
+
"tags": ["webhooks", "events", "reliability"],
|
|
274
|
+
"estimatedEffort": "3-5 days"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"id": "fintech-kyc",
|
|
278
|
+
"domain": "fintech",
|
|
279
|
+
"featureType": "kyc",
|
|
280
|
+
"title": "KYC Identity Verification",
|
|
281
|
+
"description": "Know Your Customer flow with document upload and third-party verification.",
|
|
282
|
+
"acceptanceCriteria": [
|
|
283
|
+
"User can upload government ID and selfie",
|
|
284
|
+
"Third-party KYC provider called for verification",
|
|
285
|
+
"User notified of verification result within 24 hours",
|
|
286
|
+
"Unverified users restricted from financial operations",
|
|
287
|
+
"KYC status stored and auditable"
|
|
288
|
+
],
|
|
289
|
+
"tags": ["kyc", "compliance", "identity"],
|
|
290
|
+
"estimatedEffort": "5-8 days"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"id": "fintech-transactions",
|
|
294
|
+
"domain": "fintech",
|
|
295
|
+
"featureType": "transactions",
|
|
296
|
+
"title": "Transaction Ledger",
|
|
297
|
+
"description": "Append-only transaction ledger with balance calculation and history export.",
|
|
298
|
+
"acceptanceCriteria": [
|
|
299
|
+
"All financial operations create immutable ledger entries",
|
|
300
|
+
"Account balance computed from ledger in real time",
|
|
301
|
+
"Transaction history filterable by date and type",
|
|
302
|
+
"Export to CSV and PDF supported",
|
|
303
|
+
"Transactions signed and tamper-evident"
|
|
304
|
+
],
|
|
305
|
+
"tags": ["ledger", "transactions", "audit"],
|
|
306
|
+
"estimatedEffort": "5-7 days"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"id": "fintech-compliance",
|
|
310
|
+
"domain": "fintech",
|
|
311
|
+
"featureType": "compliance",
|
|
312
|
+
"title": "Regulatory Compliance Reporting",
|
|
313
|
+
"description": "Automated compliance reports (AML, SAR) with configurable thresholds.",
|
|
314
|
+
"acceptanceCriteria": [
|
|
315
|
+
"Transactions above threshold flagged for review",
|
|
316
|
+
"AML report generated on demand and on schedule",
|
|
317
|
+
"Suspicious activity report (SAR) workflow supported",
|
|
318
|
+
"Reports stored with audit trail",
|
|
319
|
+
"Configurable thresholds per jurisdiction"
|
|
320
|
+
],
|
|
321
|
+
"tags": ["compliance", "aml", "reporting"],
|
|
322
|
+
"estimatedEffort": "7-10 days"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"id": "fintech-fraud-detection",
|
|
326
|
+
"domain": "fintech",
|
|
327
|
+
"featureType": "fraud",
|
|
328
|
+
"title": "Fraud Detection & Scoring",
|
|
329
|
+
"description": "Real-time fraud scoring for transactions with rule-based and ML signals.",
|
|
330
|
+
"acceptanceCriteria": [
|
|
331
|
+
"Each transaction assigned a fraud risk score (0-100)",
|
|
332
|
+
"High-risk transactions flagged for manual review",
|
|
333
|
+
"Rule engine configurable via admin interface",
|
|
334
|
+
"Score rationale logged for explainability",
|
|
335
|
+
"False-positive rate tracked and reported weekly"
|
|
336
|
+
],
|
|
337
|
+
"tags": ["fraud", "risk", "ml"],
|
|
338
|
+
"estimatedEffort": "8-12 days"
|
|
339
|
+
}
|
|
340
|
+
]
|
|
341
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AsanaConfig, PmSyncItemRef, AsanaSpec } from '../types/index.js';
|
|
2
|
+
export declare const ASANA_STATUS_SECTION_MAP: Record<string, string>;
|
|
3
|
+
export declare function createAsanaTask(config: AsanaConfig, spec: AsanaSpec): Promise<PmSyncItemRef>;
|
|
4
|
+
export declare function updateAsanaTask(config: AsanaConfig, taskGid: string, spec: AsanaSpec): Promise<void>;
|
|
5
|
+
export declare function mapSpecStatusToAsanaSection(status: string, customMapping?: Record<string, string>): string;
|
|
6
|
+
export declare function specToAsanaSpec(spec: {
|
|
7
|
+
id: string;
|
|
8
|
+
title: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
status?: string;
|
|
11
|
+
}): AsanaSpec;
|
|
12
|
+
//# sourceMappingURL=asana-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asana-sync.d.ts","sourceRoot":"","sources":["../../src/engine/asana-sync.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,SAAS,EAGV,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAC;AAUF,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,aAAa,CAAC,CA4BxB;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,MAAM,CAGR;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,SAAS,CAOZ"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const ASANA_API_BASE = 'https://app.asana.com/api/1.0';
|
|
2
|
+
// Status mapping: Planu spec status → Asana section name
|
|
3
|
+
export const ASANA_STATUS_SECTION_MAP = {
|
|
4
|
+
draft: 'Backlog',
|
|
5
|
+
review: 'In Review',
|
|
6
|
+
approved: 'Ready',
|
|
7
|
+
'in-progress': 'In Progress',
|
|
8
|
+
done: 'Completed',
|
|
9
|
+
};
|
|
10
|
+
function buildHeaders(token) {
|
|
11
|
+
return {
|
|
12
|
+
Authorization: `Bearer ${token}`,
|
|
13
|
+
'Content-Type': 'application/json',
|
|
14
|
+
Accept: 'application/json',
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export async function createAsanaTask(config, spec) {
|
|
18
|
+
const body = {
|
|
19
|
+
data: {
|
|
20
|
+
name: `${spec.id}: ${spec.title}`,
|
|
21
|
+
notes: spec.description ?? '',
|
|
22
|
+
projects: [config.projectGid],
|
|
23
|
+
workspace: config.workspaceGid,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
const response = await fetch(`${ASANA_API_BASE}/tasks`, {
|
|
27
|
+
method: 'POST',
|
|
28
|
+
headers: buildHeaders(config.token),
|
|
29
|
+
body: JSON.stringify(body),
|
|
30
|
+
});
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const text = await response.text();
|
|
33
|
+
throw new Error(`Asana API error ${response.status}: ${text}`);
|
|
34
|
+
}
|
|
35
|
+
const data = (await response.json());
|
|
36
|
+
return {
|
|
37
|
+
specId: spec.id,
|
|
38
|
+
externalId: data.data.gid,
|
|
39
|
+
externalUrl: data.data.permalink_url,
|
|
40
|
+
title: data.data.name,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export async function updateAsanaTask(config, taskGid, spec) {
|
|
44
|
+
const body = {
|
|
45
|
+
data: {
|
|
46
|
+
name: `${spec.id}: ${spec.title}`,
|
|
47
|
+
notes: spec.description ?? '',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
const response = await fetch(`${ASANA_API_BASE}/tasks/${taskGid}`, {
|
|
51
|
+
method: 'PUT',
|
|
52
|
+
headers: buildHeaders(config.token),
|
|
53
|
+
body: JSON.stringify(body),
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
const text = await response.text();
|
|
57
|
+
throw new Error(`Asana API error ${response.status}: ${text}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function mapSpecStatusToAsanaSection(status, customMapping) {
|
|
61
|
+
const merged = { ...ASANA_STATUS_SECTION_MAP, ...(customMapping ?? {}) };
|
|
62
|
+
return merged[status] ?? 'Backlog';
|
|
63
|
+
}
|
|
64
|
+
export function specToAsanaSpec(spec) {
|
|
65
|
+
return {
|
|
66
|
+
id: spec.id,
|
|
67
|
+
title: spec.title,
|
|
68
|
+
description: spec.description,
|
|
69
|
+
status: spec.status,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=asana-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asana-sync.js","sourceRoot":"","sources":["../../src/engine/asana-sync.ts"],"names":[],"mappings":"AASA,MAAM,cAAc,GAAG,+BAA+B,CAAC;AAEvD,yDAAyD;AACzD,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC9D,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,OAAO;IACjB,aAAa,EAAE,aAAa;IAC5B,IAAI,EAAE,WAAW;CAClB,CAAC;AAEF,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO;QACL,aAAa,EAAE,UAAU,KAAK,EAAE;QAChC,cAAc,EAAE,kBAAkB;QAClC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAmB,EACnB,IAAe;IAEf,MAAM,IAAI,GAAwB;QAChC,IAAI,EAAE;YACJ,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;YAC7B,QAAQ,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;YAC7B,SAAS,EAAE,MAAM,CAAC,YAAY;SAC/B;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,QAAQ,EAAE;QACtD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA4B,CAAC;IAChE,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG;QACzB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;QACpC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAmB,EACnB,OAAe,EACf,IAAe;IAEf,MAAM,IAAI,GAAG;QACX,IAAI,EAAE;YACJ,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;SAC9B;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,UAAU,OAAO,EAAE,EAAE;QACjE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAc,EACd,aAAsC;IAEtC,MAAM,MAAM,GAAG,EAAE,GAAG,wBAAwB,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;IACzE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAK/B;IACC,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Spec, CodeImpactResult, ComplianceCheckResult, SpecUpdateSuggestions } from '../types/index.js';
|
|
2
|
+
export declare function analyzeCodeImpact(specs: Spec[], filePath?: string, diffText?: string): CodeImpactResult;
|
|
3
|
+
export declare function checkCodeChangeCompliance(specs: Spec[], filePath?: string, commitDiff?: string): ComplianceCheckResult;
|
|
4
|
+
export declare function suggestSpecUpdates(specs: Spec[], filePath: string): SpecUpdateSuggestions;
|
|
5
|
+
export declare function runGitDiffImpact(specs: Spec[], projectPath: string): CodeImpactResult;
|
|
6
|
+
//# sourceMappingURL=code-impact-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-impact-analyzer.d.ts","sourceRoot":"","sources":["../../src/engine/code-impact-analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,IAAI,EAEJ,gBAAgB,EAChB,qBAAqB,EAErB,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAmE3B,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAqClB;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,qBAAqB,CAkCvB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAwBzF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAYrF"}
|