@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
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { loadTechDebt, saveTechDebtEntry, updateTechDebtEntry, loadTechDebtConfig, saveTechDebtConfig, } from '../storage/tech-debt-store.js';
|
|
2
|
+
import { generateDebtId, computeTechDebtMetrics, forecastTechDebt, generateTechDebtReport, filterDebtItems, } from '../engine/tech-debt-manager.js';
|
|
3
|
+
import { formatSuccess, formatError, toolResult } from './response-helpers.js';
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// track_tech_debt
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
export async function handleTrackTechDebt(args) {
|
|
8
|
+
if (!args.projectPath.trim()) {
|
|
9
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
10
|
+
}
|
|
11
|
+
const item = {
|
|
12
|
+
id: generateDebtId(),
|
|
13
|
+
specId: args.specId,
|
|
14
|
+
description: args.description,
|
|
15
|
+
estimatedHours: args.estimatedHours,
|
|
16
|
+
severity: args.severity,
|
|
17
|
+
category: args.category,
|
|
18
|
+
status: 'open',
|
|
19
|
+
createdAt: new Date().toISOString(),
|
|
20
|
+
};
|
|
21
|
+
await saveTechDebtEntry(args.projectPath, item);
|
|
22
|
+
const body = [
|
|
23
|
+
`ID: ${item.id}`,
|
|
24
|
+
`Description: ${item.description}`,
|
|
25
|
+
`Severity: ${item.severity} | Category: ${item.category}`,
|
|
26
|
+
`Estimated hours: ${String(item.estimatedHours)}h`,
|
|
27
|
+
item.specId ? `Linked spec: ${item.specId}` : '',
|
|
28
|
+
]
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join('\n');
|
|
31
|
+
return toolResult(formatSuccess('Tech Debt Tracked', body), item);
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// tech_debt_budget
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
export async function handleTechDebtBudget(args) {
|
|
37
|
+
if (!args.projectPath.trim()) {
|
|
38
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
39
|
+
}
|
|
40
|
+
const config = {
|
|
41
|
+
maxHours: args.maxHours,
|
|
42
|
+
maxPercentOfBacklog: args.maxPercentOfBacklog,
|
|
43
|
+
alertThreshold: args.alertThreshold,
|
|
44
|
+
};
|
|
45
|
+
await saveTechDebtConfig(args.projectPath, config);
|
|
46
|
+
const lines = ['Tech debt budget configured:'];
|
|
47
|
+
if (config.maxHours !== undefined) {
|
|
48
|
+
lines.push(` Max hours: ${String(config.maxHours)}h`);
|
|
49
|
+
}
|
|
50
|
+
if (config.maxPercentOfBacklog !== undefined) {
|
|
51
|
+
lines.push(` Max % of backlog: ${String(config.maxPercentOfBacklog)}%`);
|
|
52
|
+
}
|
|
53
|
+
if (config.alertThreshold !== undefined) {
|
|
54
|
+
lines.push(` Alert threshold: ${String(config.alertThreshold)}%`);
|
|
55
|
+
}
|
|
56
|
+
return toolResult(formatSuccess('Budget Configured', lines.join('\n')), config);
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// list_tech_debt
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
export async function handleListTechDebt(args) {
|
|
62
|
+
if (!args.projectPath.trim()) {
|
|
63
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
64
|
+
}
|
|
65
|
+
const all = await loadTechDebt(args.projectPath);
|
|
66
|
+
const statusFilter = args.status ?? 'open';
|
|
67
|
+
const items = filterDebtItems(all, statusFilter, args.severity, args.category);
|
|
68
|
+
const metrics = computeTechDebtMetrics(all);
|
|
69
|
+
const lines = [
|
|
70
|
+
`Tech Debt — ${args.projectPath}`,
|
|
71
|
+
`Open: ${String(metrics.openItems)} items (${String(metrics.totalOpenHours)}h) | Resolved: ${String(metrics.resolvedItems)}`,
|
|
72
|
+
'',
|
|
73
|
+
`Showing ${String(items.length)} item(s) (filter: ${statusFilter}):`,
|
|
74
|
+
];
|
|
75
|
+
for (const item of items) {
|
|
76
|
+
lines.push(` [${item.id}] ${item.severity.toUpperCase()} | ${item.category} | ${String(item.estimatedHours)}h | ${item.description}`);
|
|
77
|
+
}
|
|
78
|
+
if (items.length === 0) {
|
|
79
|
+
lines.push(' No items found.');
|
|
80
|
+
}
|
|
81
|
+
return toolResult(formatSuccess('Tech Debt List', lines.join('\n')), {
|
|
82
|
+
items,
|
|
83
|
+
metrics,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
// debt_forecast
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
export async function handleDebtForecast(args) {
|
|
90
|
+
if (!args.projectPath.trim()) {
|
|
91
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
92
|
+
}
|
|
93
|
+
const items = await loadTechDebt(args.projectPath);
|
|
94
|
+
const config = await loadTechDebtConfig(args.projectPath);
|
|
95
|
+
const forecast = forecastTechDebt(items, config);
|
|
96
|
+
const lines = [
|
|
97
|
+
`Current open hours: ${forecast.currentOpenHours.toFixed(1)}h`,
|
|
98
|
+
`Weekly accumulation rate: ${forecast.weeklyAccumulationRate.toFixed(2)} items/week`,
|
|
99
|
+
`Projected hours in 4 weeks: ${forecast.projectedHoursIn4Weeks.toFixed(1)}h`,
|
|
100
|
+
];
|
|
101
|
+
if (forecast.budgetMaxHours !== null) {
|
|
102
|
+
lines.push(`Budget max: ${String(forecast.budgetMaxHours)}h`);
|
|
103
|
+
}
|
|
104
|
+
if (forecast.weeksUntilBudgetExceeded !== null) {
|
|
105
|
+
if (forecast.weeksUntilBudgetExceeded === 0) {
|
|
106
|
+
lines.push('Budget already exceeded!');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
lines.push(`Budget exceeded in: ~${String(forecast.weeksUntilBudgetExceeded)} weeks`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
lines.push('No budget limit set.');
|
|
114
|
+
}
|
|
115
|
+
return toolResult(formatSuccess('Debt Forecast', lines.join('\n')), forecast);
|
|
116
|
+
}
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
// resolve_tech_debt
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
export async function handleResolveTechDebt(args) {
|
|
121
|
+
if (!args.projectPath.trim()) {
|
|
122
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
123
|
+
}
|
|
124
|
+
if (!args.id.trim()) {
|
|
125
|
+
return toolResult(formatError('id is required'), undefined, true);
|
|
126
|
+
}
|
|
127
|
+
const updated = await updateTechDebtEntry(args.projectPath, args.id, {
|
|
128
|
+
status: 'resolved',
|
|
129
|
+
resolvedAt: new Date().toISOString(),
|
|
130
|
+
resolvedNotes: args.resolvedNotes,
|
|
131
|
+
});
|
|
132
|
+
if (!updated) {
|
|
133
|
+
return toolResult(formatError(`Tech debt item "${args.id}" not found.`), undefined, true);
|
|
134
|
+
}
|
|
135
|
+
return toolResult(formatSuccess('Tech Debt Resolved', `Item ${args.id} marked as resolved.`), updated);
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// tech_debt_report
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
export async function handleTechDebtReport(args) {
|
|
141
|
+
if (!args.projectPath.trim()) {
|
|
142
|
+
return toolResult(formatError('projectPath is required'), undefined, true);
|
|
143
|
+
}
|
|
144
|
+
const items = await loadTechDebt(args.projectPath);
|
|
145
|
+
const config = await loadTechDebtConfig(args.projectPath);
|
|
146
|
+
const html = generateTechDebtReport(items, config);
|
|
147
|
+
const metrics = computeTechDebtMetrics(items);
|
|
148
|
+
return toolResult(formatSuccess('Tech Debt Report', `HTML report generated. Open: ${String(metrics.openItems)} items, ${String(metrics.totalOpenHours)}h total.\n\n${html.slice(0, 200)}...`), { html, metrics });
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=tech-debt-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tech-debt-handler.js","sourceRoot":"","sources":["../../src/tools/tech-debt-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolResult, SpecHealthCheckInput, HealthCheckAllInput, RunValidationLoopInput } from '../types/index.js';
|
|
2
|
+
export declare function handleSpecHealthCheck(input: SpecHealthCheckInput): Promise<ToolResult>;
|
|
3
|
+
export declare function handleHealthCheckAll(input: HealthCheckAllInput): Promise<ToolResult>;
|
|
4
|
+
export declare function handleRunValidationLoop(input: RunValidationLoopInput): ToolResult;
|
|
5
|
+
//# sourceMappingURL=validation-loop-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-loop-handler.d.ts","sourceRoot":"","sources":["../../src/tools/validation-loop-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAK3B,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB5F;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwB1F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,UAAU,CAmBjF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// tools/validation-loop-handler.ts — SPEC-369: Test Automation Loop
|
|
2
|
+
import { computeSpecHealth, buildValidationPlan } from '../engine/validation-loop.js';
|
|
3
|
+
import { specStore } from '../storage/index.js';
|
|
4
|
+
import { hashProjectPath } from '../storage/base-store.js';
|
|
5
|
+
export async function handleSpecHealthCheck(input) {
|
|
6
|
+
const projectId = hashProjectPath(input.projectPath);
|
|
7
|
+
const spec = await specStore.getSpec(projectId, input.specId);
|
|
8
|
+
const score = await computeSpecHealth(input.projectPath, spec ?? undefined);
|
|
9
|
+
const breakdownLines = Object.entries(score.breakdown).map(([key, pts]) => {
|
|
10
|
+
const detail = score.details[key] ?? '';
|
|
11
|
+
return ` ${key}: ${pts}/20 — ${detail}`;
|
|
12
|
+
});
|
|
13
|
+
const lines = [
|
|
14
|
+
`Health check for ${score.specId}: ${score.total}/100`,
|
|
15
|
+
``,
|
|
16
|
+
`Breakdown:`,
|
|
17
|
+
...breakdownLines,
|
|
18
|
+
];
|
|
19
|
+
return {
|
|
20
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function handleHealthCheckAll(input) {
|
|
24
|
+
const projectId = hashProjectPath(input.projectPath);
|
|
25
|
+
const specs = await specStore.listSpecs(projectId);
|
|
26
|
+
if (specs.length === 0) {
|
|
27
|
+
return {
|
|
28
|
+
content: [{ type: 'text', text: 'No specs found in this project.' }],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const scores = await Promise.all(specs.map((s) => computeSpecHealth(input.projectPath, s)));
|
|
32
|
+
// Sort worst to best
|
|
33
|
+
scores.sort((a, b) => a.total - b.total);
|
|
34
|
+
const lines = [
|
|
35
|
+
`Health check for all ${scores.length} specs (sorted worst to best):`,
|
|
36
|
+
``,
|
|
37
|
+
...scores.map((s) => ` ${s.specId}: ${s.total}/100`),
|
|
38
|
+
];
|
|
39
|
+
return {
|
|
40
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export function handleRunValidationLoop(input) {
|
|
44
|
+
const maxIterations = input.maxIterations ?? 3;
|
|
45
|
+
const testCommand = input.testCommand ?? 'pnpm test';
|
|
46
|
+
const autoFix = input.autoFix ?? false;
|
|
47
|
+
const result = buildValidationPlan(input.specIds, maxIterations, testCommand, autoFix);
|
|
48
|
+
const planLines = result.plan.flatMap((p) => [
|
|
49
|
+
`Spec: ${p.specId}`,
|
|
50
|
+
...p.steps.map((s) => ` → ${s}`),
|
|
51
|
+
` Expected: ${p.expectedOutcome}`,
|
|
52
|
+
``,
|
|
53
|
+
]);
|
|
54
|
+
const lines = [result.summary, ``, `Execution plan:`, ``, ...planLines];
|
|
55
|
+
return {
|
|
56
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=validation-loop-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-loop-handler.js","sourceRoot":"","sources":["../../src/tools/validation-loop-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ToolResult, WorkspaceOverviewInput, WorkspaceHealthInput, BulkProjectOperationsInput, WorkspaceReportInput, WorkspaceSearchInput, WorkspaceAlertsInput } from '../types/index.js';
|
|
2
|
+
export declare function handleWorkspaceOverview(args: WorkspaceOverviewInput): Promise<ToolResult>;
|
|
3
|
+
export declare function handleWorkspaceHealth(args: WorkspaceHealthInput): Promise<ToolResult>;
|
|
4
|
+
export declare function handleBulkProjectOperations(args: BulkProjectOperationsInput): Promise<ToolResult>;
|
|
5
|
+
export declare function handleWorkspaceReport(args: WorkspaceReportInput): Promise<ToolResult>;
|
|
6
|
+
export declare function handleWorkspaceSearch(args: WorkspaceSearchInput): Promise<ToolResult>;
|
|
7
|
+
export declare function handleWorkspaceAlerts(args: WorkspaceAlertsInput): Promise<ToolResult>;
|
|
8
|
+
//# sourceMappingURL=workspace-dashboard-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-dashboard-handler.d.ts","sourceRoot":"","sources":["../../src/tools/workspace-dashboard-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAU3B,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+B/F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAK3F;AAED,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAI3F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6B3F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CA+B3F"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
// tools/workspace-dashboard-handler.ts — SPEC-363: Multi-tenant Workspace Dashboard
|
|
2
|
+
import { buildWorkspaceOverview, buildWorkspaceHealth, runBulkOperation, generateWorkspaceReport, searchWorkspace, getWorkspaceAlerts, } from '../engine/workspace-manager.js';
|
|
3
|
+
export async function handleWorkspaceOverview(args) {
|
|
4
|
+
const result = await buildWorkspaceOverview(args.healthThreshold);
|
|
5
|
+
if (result.projectCount === 0) {
|
|
6
|
+
return {
|
|
7
|
+
content: [
|
|
8
|
+
{
|
|
9
|
+
type: 'text',
|
|
10
|
+
text: 'No projects registered. Use `register_project_path` to add projects to the workspace.',
|
|
11
|
+
},
|
|
12
|
+
],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const lines = [
|
|
16
|
+
`# Workspace Overview`,
|
|
17
|
+
``,
|
|
18
|
+
`**${String(result.projectCount)} project(s) registered** — generated ${result.generatedAt}`,
|
|
19
|
+
``,
|
|
20
|
+
`| Project | Specs | Done | Implementing | In Review | Health |`,
|
|
21
|
+
`|---|---|---|---|---|---|`,
|
|
22
|
+
];
|
|
23
|
+
for (const p of result.projects) {
|
|
24
|
+
const shortPath = p.path.split('/').slice(-2).join('/');
|
|
25
|
+
lines.push(`| ${shortPath} | ${String(p.specCount)} | ${String(p.doneCount)} | ${String(p.implementingCount)} | ${String(p.reviewCount)} | ${String(p.healthScore)}% |`);
|
|
26
|
+
}
|
|
27
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
28
|
+
}
|
|
29
|
+
export async function handleWorkspaceHealth(args) {
|
|
30
|
+
const metrics = await buildWorkspaceHealth(args.healthThreshold);
|
|
31
|
+
const text = JSON.stringify(metrics, null, 2);
|
|
32
|
+
return { content: [{ type: 'text', text }] };
|
|
33
|
+
}
|
|
34
|
+
export async function handleBulkProjectOperations(args) {
|
|
35
|
+
const result = await runBulkOperation(args.operation, args.projectPaths, args.dryRun ?? false);
|
|
36
|
+
const lines = [
|
|
37
|
+
`# Bulk Operation: ${args.operation}`,
|
|
38
|
+
``,
|
|
39
|
+
`**Dry run:** ${String(result.dryRun)} | **Projects affected:** ${String(result.projectsAffected)}`,
|
|
40
|
+
``,
|
|
41
|
+
`## Results`,
|
|
42
|
+
``,
|
|
43
|
+
];
|
|
44
|
+
for (const r of result.results) {
|
|
45
|
+
const icon = r.status === 'ok' ? '✅' : r.status === 'skipped' ? '⏭️' : '❌';
|
|
46
|
+
const msg = r.message !== undefined ? ` — ${r.message}` : '';
|
|
47
|
+
lines.push(`${icon} \`${r.path}\`${msg}`);
|
|
48
|
+
}
|
|
49
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
50
|
+
}
|
|
51
|
+
export async function handleWorkspaceReport(args) {
|
|
52
|
+
void args;
|
|
53
|
+
const html = await generateWorkspaceReport();
|
|
54
|
+
return { content: [{ type: 'text', text: html }] };
|
|
55
|
+
}
|
|
56
|
+
export async function handleWorkspaceSearch(args) {
|
|
57
|
+
const results = await searchWorkspace(args.query, args.maxResults);
|
|
58
|
+
if (results.length === 0) {
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: `No specs found matching "${args.query}" across registered projects.`,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const lines = [
|
|
69
|
+
`# Search Results: "${args.query}"`,
|
|
70
|
+
``,
|
|
71
|
+
`Found ${String(results.length)} spec(s)`,
|
|
72
|
+
``,
|
|
73
|
+
`| Project | Spec ID | Title | Status | Matched In |`,
|
|
74
|
+
`|---|---|---|---|---|`,
|
|
75
|
+
];
|
|
76
|
+
for (const r of results) {
|
|
77
|
+
const shortPath = r.projectPath.split('/').slice(-2).join('/');
|
|
78
|
+
lines.push(`| ${shortPath} | ${r.specId} | ${r.title} | ${r.status} | ${r.matchedIn} |`);
|
|
79
|
+
}
|
|
80
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
81
|
+
}
|
|
82
|
+
export async function handleWorkspaceAlerts(args) {
|
|
83
|
+
const alerts = await getWorkspaceAlerts(args.staleDaysThreshold);
|
|
84
|
+
if (alerts.length === 0) {
|
|
85
|
+
return {
|
|
86
|
+
content: [
|
|
87
|
+
{
|
|
88
|
+
type: 'text',
|
|
89
|
+
text: `No stale specs found (threshold: ${String(args.staleDaysThreshold ?? 14)} days). All projects are up to date.`,
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
const lines = [
|
|
95
|
+
`# Workspace Alerts`,
|
|
96
|
+
``,
|
|
97
|
+
`${String(alerts.length)} spec(s) stale for >${String(args.staleDaysThreshold ?? 14)} days:`,
|
|
98
|
+
``,
|
|
99
|
+
`| Days Stale | Project | Spec ID | Title | Status |`,
|
|
100
|
+
`|---|---|---|---|---|`,
|
|
101
|
+
];
|
|
102
|
+
for (const a of alerts) {
|
|
103
|
+
const shortPath = a.projectPath.split('/').slice(-2).join('/');
|
|
104
|
+
lines.push(`| ${String(a.daysSinceUpdate)}d | ${shortPath} | ${a.specId} | ${a.title} | ${a.status} |`);
|
|
105
|
+
}
|
|
106
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=workspace-dashboard-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-dashboard-handler.js","sourceRoot":"","sources":["../../src/tools/workspace-dashboard-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** Relation type between a code change and a spec. */
|
|
2
|
+
export type ImpactRelation = 'direct-binding' | 'filename-match' | 'semantic-match';
|
|
3
|
+
/** A spec affected by a code change. */
|
|
4
|
+
export interface CodeAffectedSpec {
|
|
5
|
+
specId: string;
|
|
6
|
+
title: string;
|
|
7
|
+
relation: ImpactRelation;
|
|
8
|
+
status: string;
|
|
9
|
+
}
|
|
10
|
+
/** Result of analyze_code_impact. */
|
|
11
|
+
export interface CodeImpactResult {
|
|
12
|
+
filePath?: string;
|
|
13
|
+
affectedSpecs: CodeAffectedSpec[];
|
|
14
|
+
totalSpecs: number;
|
|
15
|
+
}
|
|
16
|
+
/** A change that is not covered by any approved spec. */
|
|
17
|
+
export interface UnjustifiedChange {
|
|
18
|
+
filePath: string;
|
|
19
|
+
reason: string;
|
|
20
|
+
}
|
|
21
|
+
/** Result of code_change_compliance. */
|
|
22
|
+
export interface ComplianceCheckResult {
|
|
23
|
+
complianceScore: number;
|
|
24
|
+
justifyingSpecs: CodeAffectedSpec[];
|
|
25
|
+
unjustifiedChanges: UnjustifiedChange[];
|
|
26
|
+
summary: string;
|
|
27
|
+
}
|
|
28
|
+
/** A suggestion to update or create a spec. */
|
|
29
|
+
export interface SpecUpdateSuggestion {
|
|
30
|
+
type: 'update' | 'create';
|
|
31
|
+
specId?: string;
|
|
32
|
+
title?: string;
|
|
33
|
+
reason: string;
|
|
34
|
+
}
|
|
35
|
+
/** Result of suggest_spec_update. */
|
|
36
|
+
export interface SpecUpdateSuggestions {
|
|
37
|
+
filePath: string;
|
|
38
|
+
suggestions: SpecUpdateSuggestion[];
|
|
39
|
+
}
|
|
40
|
+
export interface AnalyzeCodeImpactInput {
|
|
41
|
+
projectPath: string;
|
|
42
|
+
filePath?: string;
|
|
43
|
+
diffText?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CodeChangeComplianceInput {
|
|
46
|
+
projectPath: string;
|
|
47
|
+
filePath?: string;
|
|
48
|
+
commitHash?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface SuggestSpecUpdateInput {
|
|
51
|
+
projectPath: string;
|
|
52
|
+
filePath: string;
|
|
53
|
+
}
|
|
54
|
+
export interface GitDiffToSpecImpactInput {
|
|
55
|
+
projectPath: string;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=code-impact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-impact.d.ts","sourceRoot":"","sources":["../../src/types/code-impact.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEpF,wCAAwC;AACxC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wCAAwC;AACxC,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+CAA+C;AAC/C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qCAAqC;AACrC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAID,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-impact.js","sourceRoot":"","sources":["../../src/types/code-impact.ts"],"names":[],"mappings":"AAAA,iFAAiF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export type ComplianceStandard = 'soc2-type2' | 'iso27001' | 'gdpr' | 'hipaa' | 'custom';
|
|
2
|
+
export type ComplianceReportFormat = 'html' | 'json';
|
|
3
|
+
export type AuditExportFormat = 'csv' | 'json' | 'json-ld';
|
|
4
|
+
export interface GenerateComplianceReportInput {
|
|
5
|
+
projectPath: string;
|
|
6
|
+
standard: ComplianceStandard;
|
|
7
|
+
outputFormat?: ComplianceReportFormat;
|
|
8
|
+
}
|
|
9
|
+
export interface AuditLogExportInput {
|
|
10
|
+
projectPath: string;
|
|
11
|
+
format?: AuditExportFormat;
|
|
12
|
+
dateRange?: {
|
|
13
|
+
from?: string;
|
|
14
|
+
to?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface DataRetentionPolicyInput {
|
|
18
|
+
projectPath: string;
|
|
19
|
+
retentionDays: number;
|
|
20
|
+
autoDelete?: boolean;
|
|
21
|
+
notifyBeforeDeleteDays?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface AuditRetentionPolicy {
|
|
24
|
+
retentionDays: number;
|
|
25
|
+
autoDelete: boolean;
|
|
26
|
+
notifyBeforeDeleteDays: number;
|
|
27
|
+
updatedAt: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ComplianceGapAnalysisInput {
|
|
30
|
+
projectPath: string;
|
|
31
|
+
standard: ComplianceStandard;
|
|
32
|
+
}
|
|
33
|
+
export interface ComplianceControl {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
status: 'satisfied' | 'partial' | 'gap';
|
|
38
|
+
evidence?: string;
|
|
39
|
+
recommendation?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ComplianceReport {
|
|
42
|
+
standard: ComplianceStandard;
|
|
43
|
+
generatedAt: string;
|
|
44
|
+
controls: ComplianceControl[];
|
|
45
|
+
overallStatus: 'compliant' | 'partial' | 'non-compliant';
|
|
46
|
+
summary: string;
|
|
47
|
+
}
|
|
48
|
+
export interface AuditComplianceGap {
|
|
49
|
+
controlId: string;
|
|
50
|
+
controlName: string;
|
|
51
|
+
gap: string;
|
|
52
|
+
recommendation: string;
|
|
53
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=compliance-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-audit.d.ts","sourceRoot":"","sources":["../../src/types/compliance-audit.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AACzF,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,6BAA6B;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,YAAY,CAAC,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,KAAK,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CAClD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-audit.js","sourceRoot":"","sources":["../../src/types/compliance-audit.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type ContextArchiveStrategy = 'archive-oldest' | 'archive-done' | 'compress-history' | 'manual';
|
|
2
|
+
export interface ContextWindowBudget {
|
|
3
|
+
maxTokens: number;
|
|
4
|
+
strategy: ContextArchiveStrategy;
|
|
5
|
+
warnAt: number;
|
|
6
|
+
archiveAfterDays: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ContextTokenBreakdown {
|
|
9
|
+
specs: number;
|
|
10
|
+
decisions: number;
|
|
11
|
+
lessons: number;
|
|
12
|
+
total: number;
|
|
13
|
+
specCount: number;
|
|
14
|
+
decisionCount: number;
|
|
15
|
+
lessonCount: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ContextWindowStatusInput {
|
|
18
|
+
projectPath: string;
|
|
19
|
+
}
|
|
20
|
+
export interface OptimizeContextInput {
|
|
21
|
+
projectPath: string;
|
|
22
|
+
action?: 'suggest' | 'apply';
|
|
23
|
+
}
|
|
24
|
+
export interface ContextBudgetConfigInput {
|
|
25
|
+
projectPath: string;
|
|
26
|
+
maxTokens?: number;
|
|
27
|
+
strategy?: ContextArchiveStrategy;
|
|
28
|
+
warnAt?: number;
|
|
29
|
+
archiveAfterDays?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface ArchiveSpecContextInput {
|
|
32
|
+
projectPath: string;
|
|
33
|
+
specId: string;
|
|
34
|
+
}
|
|
35
|
+
export interface CompressSpecHistoryInput {
|
|
36
|
+
projectPath: string;
|
|
37
|
+
specId: string;
|
|
38
|
+
keepVersions?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface RestoreArchivedContextInput {
|
|
41
|
+
projectPath: string;
|
|
42
|
+
specId: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ArchivableSpec {
|
|
45
|
+
specId: string;
|
|
46
|
+
title: string;
|
|
47
|
+
status: string;
|
|
48
|
+
estimatedTokens: number;
|
|
49
|
+
daysSinceDone: number;
|
|
50
|
+
relevanceScore: number;
|
|
51
|
+
}
|
|
52
|
+
export interface ContextOptimizeSuggestion {
|
|
53
|
+
specs: ArchivableSpec[];
|
|
54
|
+
potentialSavings: number;
|
|
55
|
+
recommendation: string;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=context-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-manager.d.ts","sourceRoot":"","sources":["../../src/types/context-manager.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAEvG,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-manager.js","sourceRoot":"","sources":["../../src/types/context-manager.ts"],"names":[],"mappings":"AAAA,iEAAiE"}
|