@decibelsystems/tools 2.0.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/LICENSE +21 -0
- package/README.md +342 -0
- package/dist/agentic/compiler.d.ts +21 -0
- package/dist/agentic/compiler.d.ts.map +1 -0
- package/dist/agentic/compiler.js +267 -0
- package/dist/agentic/compiler.js.map +1 -0
- package/dist/agentic/golden.d.ts +25 -0
- package/dist/agentic/golden.d.ts.map +1 -0
- package/dist/agentic/golden.js +255 -0
- package/dist/agentic/golden.js.map +1 -0
- package/dist/agentic/index.d.ts +17 -0
- package/dist/agentic/index.d.ts.map +1 -0
- package/dist/agentic/index.js +153 -0
- package/dist/agentic/index.js.map +1 -0
- package/dist/agentic/linter.d.ts +20 -0
- package/dist/agentic/linter.d.ts.map +1 -0
- package/dist/agentic/linter.js +340 -0
- package/dist/agentic/linter.js.map +1 -0
- package/dist/agentic/renderer.d.ts +17 -0
- package/dist/agentic/renderer.d.ts.map +1 -0
- package/dist/agentic/renderer.js +277 -0
- package/dist/agentic/renderer.js.map +1 -0
- package/dist/agentic/types.d.ts +199 -0
- package/dist/agentic/types.d.ts.map +1 -0
- package/dist/agentic/types.js +8 -0
- package/dist/agentic/types.js.map +1 -0
- package/dist/architectAdrs.d.ts +32 -0
- package/dist/architectAdrs.d.ts.map +1 -0
- package/dist/architectAdrs.js +162 -0
- package/dist/architectAdrs.js.map +1 -0
- package/dist/client/facade-client.d.ts +41 -0
- package/dist/client/facade-client.d.ts.map +1 -0
- package/dist/client/facade-client.js +243 -0
- package/dist/client/facade-client.js.map +1 -0
- package/dist/client/index.d.ts +4 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +18 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/transports.d.ts +78 -0
- package/dist/client/transports.d.ts.map +1 -0
- package/dist/client/transports.js +258 -0
- package/dist/client/transports.js.map +1 -0
- package/dist/client/types.d.ts +49 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +8 -0
- package/dist/client/types.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon.d.ts +77 -0
- package/dist/daemon.d.ts.map +1 -0
- package/dist/daemon.js +374 -0
- package/dist/daemon.js.map +1 -0
- package/dist/daemonConfig.d.ts +43 -0
- package/dist/daemonConfig.d.ts.map +1 -0
- package/dist/daemonConfig.js +113 -0
- package/dist/daemonConfig.js.map +1 -0
- package/dist/dataRoot.d.ts +5 -0
- package/dist/dataRoot.d.ts.map +1 -0
- package/dist/dataRoot.js +23 -0
- package/dist/dataRoot.js.map +1 -0
- package/dist/decibelPaths.d.ts +42 -0
- package/dist/decibelPaths.d.ts.map +1 -0
- package/dist/decibelPaths.js +150 -0
- package/dist/decibelPaths.js.map +1 -0
- package/dist/facades/definitions.d.ts +6 -0
- package/dist/facades/definitions.d.ts.map +1 -0
- package/dist/facades/definitions.js +450 -0
- package/dist/facades/definitions.js.map +1 -0
- package/dist/facades/index.d.ts +27 -0
- package/dist/facades/index.d.ts.map +1 -0
- package/dist/facades/index.js +124 -0
- package/dist/facades/index.js.map +1 -0
- package/dist/facades/types.d.ts +38 -0
- package/dist/facades/types.d.ts.map +1 -0
- package/dist/facades/types.js +8 -0
- package/dist/facades/types.js.map +1 -0
- package/dist/httpServer.d.ts +66 -0
- package/dist/httpServer.d.ts.map +1 -0
- package/dist/httpServer.js +1723 -0
- package/dist/httpServer.js.map +1 -0
- package/dist/kernel.d.ts +87 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +256 -0
- package/dist/kernel.js.map +1 -0
- package/dist/lib/agent-services/assumptions.d.ts +16 -0
- package/dist/lib/agent-services/assumptions.d.ts.map +1 -0
- package/dist/lib/agent-services/assumptions.js +284 -0
- package/dist/lib/agent-services/assumptions.js.map +1 -0
- package/dist/lib/agent-services/context-pack.d.ts +6 -0
- package/dist/lib/agent-services/context-pack.d.ts.map +1 -0
- package/dist/lib/agent-services/context-pack.js +354 -0
- package/dist/lib/agent-services/context-pack.js.map +1 -0
- package/dist/lib/agent-services/drift-guard.d.ts +14 -0
- package/dist/lib/agent-services/drift-guard.d.ts.map +1 -0
- package/dist/lib/agent-services/drift-guard.js +355 -0
- package/dist/lib/agent-services/drift-guard.js.map +1 -0
- package/dist/lib/agent-services/index.d.ts +5 -0
- package/dist/lib/agent-services/index.d.ts.map +1 -0
- package/dist/lib/agent-services/index.js +10 -0
- package/dist/lib/agent-services/index.js.map +1 -0
- package/dist/lib/benchmark.d.ts +110 -0
- package/dist/lib/benchmark.d.ts.map +1 -0
- package/dist/lib/benchmark.js +338 -0
- package/dist/lib/benchmark.js.map +1 -0
- package/dist/lib/supabase.d.ts +123 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/supabase.js +91 -0
- package/dist/lib/supabase.js.map +1 -0
- package/dist/license.d.ts +30 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +131 -0
- package/dist/license.js.map +1 -0
- package/dist/projectPaths.d.ts +27 -0
- package/dist/projectPaths.d.ts.map +1 -0
- package/dist/projectPaths.js +86 -0
- package/dist/projectPaths.js.map +1 -0
- package/dist/projectRegistry.d.ts +97 -0
- package/dist/projectRegistry.d.ts.map +1 -0
- package/dist/projectRegistry.js +374 -0
- package/dist/projectRegistry.js.map +1 -0
- package/dist/sentinelIssues.d.ts +65 -0
- package/dist/sentinelIssues.d.ts.map +1 -0
- package/dist/sentinelIssues.js +297 -0
- package/dist/sentinelIssues.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +195 -0
- package/dist/server.js.map +1 -0
- package/dist/test.d.ts +7 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +77 -0
- package/dist/test.js.map +1 -0
- package/dist/tools/agentic/index.d.ts +7 -0
- package/dist/tools/agentic/index.d.ts.map +1 -0
- package/dist/tools/agentic/index.js +203 -0
- package/dist/tools/agentic/index.js.map +1 -0
- package/dist/tools/architect/index.d.ts +11 -0
- package/dist/tools/architect/index.d.ts.map +1 -0
- package/dist/tools/architect/index.js +506 -0
- package/dist/tools/architect/index.js.map +1 -0
- package/dist/tools/architect.d.ts +19 -0
- package/dist/tools/architect.d.ts.map +1 -0
- package/dist/tools/architect.js +88 -0
- package/dist/tools/architect.js.map +1 -0
- package/dist/tools/auditor/index.d.ts +10 -0
- package/dist/tools/auditor/index.d.ts.map +1 -0
- package/dist/tools/auditor/index.js +310 -0
- package/dist/tools/auditor/index.js.map +1 -0
- package/dist/tools/auditor.d.ts +149 -0
- package/dist/tools/auditor.d.ts.map +1 -0
- package/dist/tools/auditor.js +775 -0
- package/dist/tools/auditor.js.map +1 -0
- package/dist/tools/bench/index.d.ts +3 -0
- package/dist/tools/bench/index.d.ts.map +1 -0
- package/dist/tools/bench/index.js +220 -0
- package/dist/tools/bench/index.js.map +1 -0
- package/dist/tools/bench.d.ts +89 -0
- package/dist/tools/bench.d.ts.map +1 -0
- package/dist/tools/bench.js +826 -0
- package/dist/tools/bench.js.map +1 -0
- package/dist/tools/context/index.d.ts +11 -0
- package/dist/tools/context/index.d.ts.map +1 -0
- package/dist/tools/context/index.js +482 -0
- package/dist/tools/context/index.js.map +1 -0
- package/dist/tools/context.d.ts +146 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +481 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/coordinator/coordinator.d.ts +168 -0
- package/dist/tools/coordinator/coordinator.d.ts.map +1 -0
- package/dist/tools/coordinator/coordinator.js +535 -0
- package/dist/tools/coordinator/coordinator.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts +12 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -0
- package/dist/tools/coordinator/index.js +381 -0
- package/dist/tools/coordinator/index.js.map +1 -0
- package/dist/tools/corpus/index.d.ts +5 -0
- package/dist/tools/corpus/index.d.ts.map +1 -0
- package/dist/tools/corpus/index.js +105 -0
- package/dist/tools/corpus/index.js.map +1 -0
- package/dist/tools/corpus.d.ts +33 -0
- package/dist/tools/corpus.d.ts.map +1 -0
- package/dist/tools/corpus.js +180 -0
- package/dist/tools/corpus.js.map +1 -0
- package/dist/tools/crit.d.ts +63 -0
- package/dist/tools/crit.d.ts.map +1 -0
- package/dist/tools/crit.js +159 -0
- package/dist/tools/crit.js.map +1 -0
- package/dist/tools/data-inspector.d.ts +189 -0
- package/dist/tools/data-inspector.d.ts.map +1 -0
- package/dist/tools/data-inspector.js +669 -0
- package/dist/tools/data-inspector.js.map +1 -0
- package/dist/tools/deck.d.ts +11 -0
- package/dist/tools/deck.d.ts.map +1 -0
- package/dist/tools/deck.js +188 -0
- package/dist/tools/deck.js.map +1 -0
- package/dist/tools/designer/index.d.ts +11 -0
- package/dist/tools/designer/index.d.ts.map +1 -0
- package/dist/tools/designer/index.js +442 -0
- package/dist/tools/designer/index.js.map +1 -0
- package/dist/tools/designer/lateral-tools.d.ts +6 -0
- package/dist/tools/designer/lateral-tools.d.ts.map +1 -0
- package/dist/tools/designer/lateral-tools.js +190 -0
- package/dist/tools/designer/lateral-tools.js.map +1 -0
- package/dist/tools/designer.d.ts +122 -0
- package/dist/tools/designer.d.ts.map +1 -0
- package/dist/tools/designer.js +495 -0
- package/dist/tools/designer.js.map +1 -0
- package/dist/tools/dojo/index.d.ts +13 -0
- package/dist/tools/dojo/index.d.ts.map +1 -0
- package/dist/tools/dojo/index.js +613 -0
- package/dist/tools/dojo/index.js.map +1 -0
- package/dist/tools/dojo.d.ts +254 -0
- package/dist/tools/dojo.d.ts.map +1 -0
- package/dist/tools/dojo.js +933 -0
- package/dist/tools/dojo.js.map +1 -0
- package/dist/tools/dojoBench.d.ts +49 -0
- package/dist/tools/dojoBench.d.ts.map +1 -0
- package/dist/tools/dojoBench.js +205 -0
- package/dist/tools/dojoBench.js.map +1 -0
- package/dist/tools/dojoGraduated.d.ts +50 -0
- package/dist/tools/dojoGraduated.d.ts.map +1 -0
- package/dist/tools/dojoGraduated.js +174 -0
- package/dist/tools/dojoGraduated.js.map +1 -0
- package/dist/tools/dojoPolicy.d.ts +65 -0
- package/dist/tools/dojoPolicy.d.ts.map +1 -0
- package/dist/tools/dojoPolicy.js +263 -0
- package/dist/tools/dojoPolicy.js.map +1 -0
- package/dist/tools/feedback/index.d.ts +5 -0
- package/dist/tools/feedback/index.d.ts.map +1 -0
- package/dist/tools/feedback/index.js +153 -0
- package/dist/tools/feedback/index.js.map +1 -0
- package/dist/tools/feedback.d.ts +61 -0
- package/dist/tools/feedback.d.ts.map +1 -0
- package/dist/tools/feedback.js +209 -0
- package/dist/tools/feedback.js.map +1 -0
- package/dist/tools/forecast/index.d.ts +8 -0
- package/dist/tools/forecast/index.d.ts.map +1 -0
- package/dist/tools/forecast/index.js +283 -0
- package/dist/tools/forecast/index.js.map +1 -0
- package/dist/tools/forecast.d.ts +147 -0
- package/dist/tools/forecast.d.ts.map +1 -0
- package/dist/tools/forecast.js +417 -0
- package/dist/tools/forecast.js.map +1 -0
- package/dist/tools/friction/index.d.ts +7 -0
- package/dist/tools/friction/index.d.ts.map +1 -0
- package/dist/tools/friction/index.js +265 -0
- package/dist/tools/friction/index.js.map +1 -0
- package/dist/tools/friction.d.ts +82 -0
- package/dist/tools/friction.d.ts.map +1 -0
- package/dist/tools/friction.js +331 -0
- package/dist/tools/friction.js.map +1 -0
- package/dist/tools/git/index.d.ts +9 -0
- package/dist/tools/git/index.d.ts.map +1 -0
- package/dist/tools/git/index.js +237 -0
- package/dist/tools/git/index.js.map +1 -0
- package/dist/tools/git-sentinel/index.d.ts +7 -0
- package/dist/tools/git-sentinel/index.d.ts.map +1 -0
- package/dist/tools/git-sentinel/index.js +178 -0
- package/dist/tools/git-sentinel/index.js.map +1 -0
- package/dist/tools/git-sentinel.d.ts +78 -0
- package/dist/tools/git-sentinel.d.ts.map +1 -0
- package/dist/tools/git-sentinel.js +391 -0
- package/dist/tools/git-sentinel.js.map +1 -0
- package/dist/tools/git.d.ts +134 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +374 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/guardian/index.d.ts +8 -0
- package/dist/tools/guardian/index.d.ts.map +1 -0
- package/dist/tools/guardian/index.js +171 -0
- package/dist/tools/guardian/index.js.map +1 -0
- package/dist/tools/guardian.d.ts +62 -0
- package/dist/tools/guardian.d.ts.map +1 -0
- package/dist/tools/guardian.js +332 -0
- package/dist/tools/guardian.js.map +1 -0
- package/dist/tools/hygiene/codebase-scanner.d.ts +38 -0
- package/dist/tools/hygiene/codebase-scanner.d.ts.map +1 -0
- package/dist/tools/hygiene/codebase-scanner.js +411 -0
- package/dist/tools/hygiene/codebase-scanner.js.map +1 -0
- package/dist/tools/hygiene/config-scanner.d.ts +33 -0
- package/dist/tools/hygiene/config-scanner.d.ts.map +1 -0
- package/dist/tools/hygiene/config-scanner.js +482 -0
- package/dist/tools/hygiene/config-scanner.js.map +1 -0
- package/dist/tools/hygiene/coverage-scanner.d.ts +41 -0
- package/dist/tools/hygiene/coverage-scanner.d.ts.map +1 -0
- package/dist/tools/hygiene/coverage-scanner.js +331 -0
- package/dist/tools/hygiene/coverage-scanner.js.map +1 -0
- package/dist/tools/hygiene/index.d.ts +7 -0
- package/dist/tools/hygiene/index.d.ts.map +1 -0
- package/dist/tools/hygiene/index.js +291 -0
- package/dist/tools/hygiene/index.js.map +1 -0
- package/dist/tools/hygiene/oracle-hygiene.d.ts +68 -0
- package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -0
- package/dist/tools/hygiene/oracle-hygiene.js +324 -0
- package/dist/tools/hygiene/oracle-hygiene.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +130 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/lateral.d.ts +114 -0
- package/dist/tools/lateral.d.ts.map +1 -0
- package/dist/tools/lateral.js +536 -0
- package/dist/tools/lateral.js.map +1 -0
- package/dist/tools/learnings/index.d.ts +5 -0
- package/dist/tools/learnings/index.d.ts.map +1 -0
- package/dist/tools/learnings/index.js +138 -0
- package/dist/tools/learnings/index.js.map +1 -0
- package/dist/tools/learnings.d.ts +41 -0
- package/dist/tools/learnings.d.ts.map +1 -0
- package/dist/tools/learnings.js +149 -0
- package/dist/tools/learnings.js.map +1 -0
- package/dist/tools/oracle/index.d.ts +6 -0
- package/dist/tools/oracle/index.d.ts.map +1 -0
- package/dist/tools/oracle/index.js +217 -0
- package/dist/tools/oracle/index.js.map +1 -0
- package/dist/tools/oracle.d.ts +90 -0
- package/dist/tools/oracle.d.ts.map +1 -0
- package/dist/tools/oracle.js +529 -0
- package/dist/tools/oracle.js.map +1 -0
- package/dist/tools/policy.d.ts +119 -0
- package/dist/tools/policy.d.ts.map +1 -0
- package/dist/tools/policy.js +406 -0
- package/dist/tools/policy.js.map +1 -0
- package/dist/tools/provenance/index.d.ts +4 -0
- package/dist/tools/provenance/index.d.ts.map +1 -0
- package/dist/tools/provenance/index.js +63 -0
- package/dist/tools/provenance/index.js.map +1 -0
- package/dist/tools/provenance.d.ts +75 -0
- package/dist/tools/provenance.d.ts.map +1 -0
- package/dist/tools/provenance.js +224 -0
- package/dist/tools/provenance.js.map +1 -0
- package/dist/tools/rateLimiter.d.ts +45 -0
- package/dist/tools/rateLimiter.d.ts.map +1 -0
- package/dist/tools/rateLimiter.js +91 -0
- package/dist/tools/rateLimiter.js.map +1 -0
- package/dist/tools/registry/index.d.ts +10 -0
- package/dist/tools/registry/index.d.ts.map +1 -0
- package/dist/tools/registry/index.js +506 -0
- package/dist/tools/registry/index.js.map +1 -0
- package/dist/tools/registry.d.ts +3 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +189 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/roadmap/index.d.ts +11 -0
- package/dist/tools/roadmap/index.d.ts.map +1 -0
- package/dist/tools/roadmap/index.js +364 -0
- package/dist/tools/roadmap/index.js.map +1 -0
- package/dist/tools/roadmap.d.ts +103 -0
- package/dist/tools/roadmap.d.ts.map +1 -0
- package/dist/tools/roadmap.js +407 -0
- package/dist/tools/roadmap.js.map +1 -0
- package/dist/tools/senken.d.ts +11 -0
- package/dist/tools/senken.d.ts.map +1 -0
- package/dist/tools/senken.js +482 -0
- package/dist/tools/senken.js.map +1 -0
- package/dist/tools/sentinel/index.d.ts +21 -0
- package/dist/tools/sentinel/index.d.ts.map +1 -0
- package/dist/tools/sentinel/index.js +1067 -0
- package/dist/tools/sentinel/index.js.map +1 -0
- package/dist/tools/sentinel-scan-data.d.ts +90 -0
- package/dist/tools/sentinel-scan-data.d.ts.map +1 -0
- package/dist/tools/sentinel-scan-data.js +122 -0
- package/dist/tools/sentinel-scan-data.js.map +1 -0
- package/dist/tools/sentinel.d.ts +156 -0
- package/dist/tools/sentinel.d.ts.map +1 -0
- package/dist/tools/sentinel.js +603 -0
- package/dist/tools/sentinel.js.map +1 -0
- package/dist/tools/shared/index.d.ts +5 -0
- package/dist/tools/shared/index.d.ts.map +1 -0
- package/dist/tools/shared/index.js +8 -0
- package/dist/tools/shared/index.js.map +1 -0
- package/dist/tools/shared/project.d.ts +17 -0
- package/dist/tools/shared/project.d.ts.map +1 -0
- package/dist/tools/shared/project.js +36 -0
- package/dist/tools/shared/project.js.map +1 -0
- package/dist/tools/shared/response.d.ts +15 -0
- package/dist/tools/shared/response.d.ts.map +1 -0
- package/dist/tools/shared/response.js +77 -0
- package/dist/tools/shared/response.js.map +1 -0
- package/dist/tools/shared/runTracker.d.ts +87 -0
- package/dist/tools/shared/runTracker.d.ts.map +1 -0
- package/dist/tools/shared/runTracker.js +225 -0
- package/dist/tools/shared/runTracker.js.map +1 -0
- package/dist/tools/shared/validation.d.ts +10 -0
- package/dist/tools/shared/validation.d.ts.map +1 -0
- package/dist/tools/shared/validation.js +26 -0
- package/dist/tools/shared/validation.js.map +1 -0
- package/dist/tools/studio/cloud-spine.d.ts +27 -0
- package/dist/tools/studio/cloud-spine.d.ts.map +1 -0
- package/dist/tools/studio/cloud-spine.js +845 -0
- package/dist/tools/studio/cloud-spine.js.map +1 -0
- package/dist/tools/studio/index.d.ts +154 -0
- package/dist/tools/studio/index.d.ts.map +1 -0
- package/dist/tools/studio/index.js +541 -0
- package/dist/tools/studio/index.js.map +1 -0
- package/dist/tools/testSpec.d.ts +122 -0
- package/dist/tools/testSpec.d.ts.map +1 -0
- package/dist/tools/testSpec.js +525 -0
- package/dist/tools/testSpec.js.map +1 -0
- package/dist/tools/toolsIndex.d.ts +5 -0
- package/dist/tools/toolsIndex.d.ts.map +1 -0
- package/dist/tools/toolsIndex.js +37 -0
- package/dist/tools/toolsIndex.js.map +1 -0
- package/dist/tools/types.d.ts +47 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +7 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/vector/index.d.ts +13 -0
- package/dist/tools/vector/index.d.ts.map +1 -0
- package/dist/tools/vector/index.js +592 -0
- package/dist/tools/vector/index.js.map +1 -0
- package/dist/tools/vector.d.ts +189 -0
- package/dist/tools/vector.d.ts.map +1 -0
- package/dist/tools/vector.js +570 -0
- package/dist/tools/vector.js.map +1 -0
- package/dist/tools/velocity/index.d.ts +9 -0
- package/dist/tools/velocity/index.d.ts.map +1 -0
- package/dist/tools/velocity/index.js +306 -0
- package/dist/tools/velocity/index.js.map +1 -0
- package/dist/tools/velocity.d.ts +143 -0
- package/dist/tools/velocity.d.ts.map +1 -0
- package/dist/tools/velocity.js +628 -0
- package/dist/tools/velocity.js.map +1 -0
- package/dist/tools/voice/index.d.ts +8 -0
- package/dist/tools/voice/index.d.ts.map +1 -0
- package/dist/tools/voice/index.js +203 -0
- package/dist/tools/voice/index.js.map +1 -0
- package/dist/tools/voice.d.ts +291 -0
- package/dist/tools/voice.d.ts.map +1 -0
- package/dist/tools/voice.js +734 -0
- package/dist/tools/voice.js.map +1 -0
- package/dist/tools/workflow/index.d.ts +8 -0
- package/dist/tools/workflow/index.d.ts.map +1 -0
- package/dist/tools/workflow/index.js +199 -0
- package/dist/tools/workflow/index.js.map +1 -0
- package/dist/tools/workflow.d.ts +123 -0
- package/dist/tools/workflow.d.ts.map +1 -0
- package/dist/tools/workflow.js +647 -0
- package/dist/tools/workflow.js.map +1 -0
- package/dist/transports/bridge.d.ts +22 -0
- package/dist/transports/bridge.d.ts.map +1 -0
- package/dist/transports/bridge.js +177 -0
- package/dist/transports/bridge.js.map +1 -0
- package/dist/transports/http.d.ts +9 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +35 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +6 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +8 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/mcp.d.ts +9 -0
- package/dist/transports/mcp.d.ts.map +1 -0
- package/dist/transports/mcp.js +51 -0
- package/dist/transports/mcp.js.map +1 -0
- package/dist/transports/stdio.d.ts +9 -0
- package/dist/transports/stdio.d.ts.map +1 -0
- package/dist/transports/stdio.js +26 -0
- package/dist/transports/stdio.js.map +1 -0
- package/dist/transports/types.d.ts +27 -0
- package/dist/transports/types.d.ts.map +1 -0
- package/dist/transports/types.js +8 -0
- package/dist/transports/types.js.map +1 -0
- package/dist/types/agent-services.d.ts +193 -0
- package/dist/types/agent-services.d.ts.map +1 -0
- package/dist/types/agent-services.js +8 -0
- package/dist/types/agent-services.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +72 -0
- package/templates/AGENT.md +87 -0
- package/templates/com.decibel.daemon.plist +47 -0
- package/templates/sentinel/ISSUE_TEMPLATE.md +20 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Project Registry
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Maps project IDs/aliases to their filesystem paths.
|
|
5
|
+
// Supports multiple resolution strategies:
|
|
6
|
+
// 1. Registry file (~/.decibel/projects.json or DECIBEL_REGISTRY_PATH)
|
|
7
|
+
// 2. Environment variable (DECIBEL_PROJECT_ROOT for single project)
|
|
8
|
+
// 3. Dynamic discovery (walking up from cwd)
|
|
9
|
+
// ============================================================================
|
|
10
|
+
import fs from 'fs';
|
|
11
|
+
import path from 'path';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
import { dirname } from 'path';
|
|
14
|
+
import { log } from './config.js';
|
|
15
|
+
// ES module equivalent of __dirname
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Registry Loading
|
|
20
|
+
// ============================================================================
|
|
21
|
+
/**
|
|
22
|
+
* Get the path to the registry file.
|
|
23
|
+
* Default: projects.json in the same directory as this MCP tool.
|
|
24
|
+
*/
|
|
25
|
+
function getRegistryPath() {
|
|
26
|
+
if (process.env.DECIBEL_REGISTRY_PATH) {
|
|
27
|
+
return process.env.DECIBEL_REGISTRY_PATH;
|
|
28
|
+
}
|
|
29
|
+
// Default: projects.json in the MCP repo root (sibling to src/)
|
|
30
|
+
// __dirname at runtime is dist/, so go up one level
|
|
31
|
+
const mcpRoot = path.resolve(__dirname, '..');
|
|
32
|
+
return path.join(mcpRoot, 'projects.json');
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load the project registry from disk
|
|
36
|
+
*/
|
|
37
|
+
function loadRegistry() {
|
|
38
|
+
const registryPath = getRegistryPath();
|
|
39
|
+
if (!fs.existsSync(registryPath)) {
|
|
40
|
+
log(`ProjectRegistry: No registry file at ${registryPath}`);
|
|
41
|
+
return { version: 1, projects: [] };
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const content = fs.readFileSync(registryPath, 'utf-8');
|
|
45
|
+
const data = JSON.parse(content);
|
|
46
|
+
log(`ProjectRegistry: Loaded ${data.projects.length} projects from ${registryPath}`);
|
|
47
|
+
return data;
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
log(`ProjectRegistry: Failed to load registry: ${err}`);
|
|
51
|
+
return { version: 1, projects: [] };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Save the project registry to disk
|
|
56
|
+
*/
|
|
57
|
+
function saveRegistry(registry) {
|
|
58
|
+
const registryPath = getRegistryPath();
|
|
59
|
+
const dir = path.dirname(registryPath);
|
|
60
|
+
if (!fs.existsSync(dir)) {
|
|
61
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
fs.writeFileSync(registryPath, JSON.stringify(registry, null, 2));
|
|
64
|
+
log(`ProjectRegistry: Saved ${registry.projects.length} projects to ${registryPath}`);
|
|
65
|
+
}
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Discovery Helpers
|
|
68
|
+
// ============================================================================
|
|
69
|
+
/**
|
|
70
|
+
* Walk up directory tree looking for a .decibel folder
|
|
71
|
+
*/
|
|
72
|
+
function findDecibelDir(start) {
|
|
73
|
+
let current = path.resolve(start);
|
|
74
|
+
while (true) {
|
|
75
|
+
const candidate = path.join(current, '.decibel');
|
|
76
|
+
if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
|
|
77
|
+
return current; // Return the project root, not the .decibel folder
|
|
78
|
+
}
|
|
79
|
+
const parent = path.dirname(current);
|
|
80
|
+
if (parent === current)
|
|
81
|
+
break;
|
|
82
|
+
current = parent;
|
|
83
|
+
}
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validate that a path contains a .decibel folder
|
|
88
|
+
*/
|
|
89
|
+
function hasDecibelFolder(projectPath) {
|
|
90
|
+
const decibelPath = path.join(projectPath, '.decibel');
|
|
91
|
+
return fs.existsSync(decibelPath) && fs.statSync(decibelPath).isDirectory();
|
|
92
|
+
}
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// Public API
|
|
95
|
+
// ============================================================================
|
|
96
|
+
/**
|
|
97
|
+
* Resolve a project ID or alias to its filesystem path.
|
|
98
|
+
*
|
|
99
|
+
* Resolution order:
|
|
100
|
+
* 1. Check registry for exact ID match
|
|
101
|
+
* 2. Check registry for alias match
|
|
102
|
+
* 3. Check DECIBEL_PROJECT_ROOT env var (if ID matches basename)
|
|
103
|
+
* 4. Check if ID is an absolute path with .decibel
|
|
104
|
+
* 5. Walk up from cwd looking for .decibel (if ID matches discovered project)
|
|
105
|
+
*
|
|
106
|
+
* @param projectId - Project ID, alias, or path
|
|
107
|
+
* @returns Absolute path to the project root
|
|
108
|
+
* @throws Error if project cannot be resolved
|
|
109
|
+
*/
|
|
110
|
+
export function resolveProject(projectId) {
|
|
111
|
+
const registry = loadRegistry();
|
|
112
|
+
// Strategy 1: Exact ID match in registry
|
|
113
|
+
const exactMatch = registry.projects.find((p) => p.id === projectId);
|
|
114
|
+
if (exactMatch) {
|
|
115
|
+
if (!hasDecibelFolder(exactMatch.path)) {
|
|
116
|
+
throw new Error(`Project "${projectId}" registered at ${exactMatch.path} but .decibel folder not found. ` +
|
|
117
|
+
`Update the registry or run 'decibel init' in that directory.`);
|
|
118
|
+
}
|
|
119
|
+
log(`ProjectRegistry: Resolved "${projectId}" via exact ID match`);
|
|
120
|
+
return exactMatch;
|
|
121
|
+
}
|
|
122
|
+
// Strategy 2: Alias match in registry
|
|
123
|
+
const aliasMatch = registry.projects.find((p) => p.aliases?.includes(projectId));
|
|
124
|
+
if (aliasMatch) {
|
|
125
|
+
if (!hasDecibelFolder(aliasMatch.path)) {
|
|
126
|
+
throw new Error(`Project "${projectId}" (alias for "${aliasMatch.id}") registered at ${aliasMatch.path} ` +
|
|
127
|
+
`but .decibel folder not found.`);
|
|
128
|
+
}
|
|
129
|
+
log(`ProjectRegistry: Resolved "${projectId}" via alias -> "${aliasMatch.id}"`);
|
|
130
|
+
return aliasMatch;
|
|
131
|
+
}
|
|
132
|
+
// Strategy 3: DECIBEL_PROJECT_ROOT env var
|
|
133
|
+
const envRoot = process.env.DECIBEL_PROJECT_ROOT;
|
|
134
|
+
if (envRoot && path.basename(envRoot) === projectId) {
|
|
135
|
+
if (hasDecibelFolder(envRoot)) {
|
|
136
|
+
log(`ProjectRegistry: Resolved "${projectId}" via DECIBEL_PROJECT_ROOT`);
|
|
137
|
+
return { id: projectId, path: envRoot };
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Strategy 4: Absolute path with .decibel
|
|
141
|
+
if (path.isAbsolute(projectId) && hasDecibelFolder(projectId)) {
|
|
142
|
+
log(`ProjectRegistry: Resolved "${projectId}" as absolute path`);
|
|
143
|
+
return { id: path.basename(projectId), path: projectId };
|
|
144
|
+
}
|
|
145
|
+
// Strategy 5: Discover from cwd (exact basename match)
|
|
146
|
+
const discoveredRoot = findDecibelDir(process.cwd());
|
|
147
|
+
if (discoveredRoot && path.basename(discoveredRoot) === projectId) {
|
|
148
|
+
log(`ProjectRegistry: Resolved "${projectId}" via cwd discovery`);
|
|
149
|
+
return { id: projectId, path: discoveredRoot };
|
|
150
|
+
}
|
|
151
|
+
// Strategy 6: If DECIBEL_PROJECT_ROOT is set and has .decibel, use it as fallback
|
|
152
|
+
// This allows tests and scripts to set a project root and use any projectId as a label
|
|
153
|
+
if (envRoot && hasDecibelFolder(envRoot)) {
|
|
154
|
+
log(`ProjectRegistry: Resolved "${projectId}" via DECIBEL_PROJECT_ROOT fallback (treating as label)`);
|
|
155
|
+
return { id: projectId, path: envRoot };
|
|
156
|
+
}
|
|
157
|
+
// Strategy 7: If we discovered a project from cwd but ID didn't match, use it anyway
|
|
158
|
+
// This prevents hard failures when Claude sends a slightly wrong project ID
|
|
159
|
+
if (discoveredRoot) {
|
|
160
|
+
const discoveredId = path.basename(discoveredRoot);
|
|
161
|
+
log(`ProjectRegistry: Resolved "${projectId}" via cwd fallback (actual project: "${discoveredId}")`);
|
|
162
|
+
return { id: discoveredId, path: discoveredRoot };
|
|
163
|
+
}
|
|
164
|
+
// Build helpful error message
|
|
165
|
+
const registeredIds = registry.projects.map((p) => p.id);
|
|
166
|
+
const allAliases = registry.projects.flatMap((p) => p.aliases || []);
|
|
167
|
+
const suggestions = [...registeredIds, ...allAliases].filter(Boolean);
|
|
168
|
+
let errorMsg = `PROJECT_NOT_FOUND: "${projectId}".`;
|
|
169
|
+
if (suggestions.length > 0) {
|
|
170
|
+
errorMsg += ` Registered projects: ${suggestions.join(', ')}.`;
|
|
171
|
+
}
|
|
172
|
+
errorMsg += ` To fix: use the project_init tool with the absolute path to your project, or registry_add if .decibel/ already exists.`;
|
|
173
|
+
throw new Error(errorMsg);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* List all registered projects
|
|
177
|
+
*/
|
|
178
|
+
export function listProjects() {
|
|
179
|
+
const registry = loadRegistry();
|
|
180
|
+
return registry.projects;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Register a new project or update an existing one
|
|
184
|
+
*/
|
|
185
|
+
export function registerProject(entry) {
|
|
186
|
+
const registry = loadRegistry();
|
|
187
|
+
// Validate path exists and has .decibel
|
|
188
|
+
if (!fs.existsSync(entry.path)) {
|
|
189
|
+
throw new Error(`Path does not exist: ${entry.path}`);
|
|
190
|
+
}
|
|
191
|
+
if (!hasDecibelFolder(entry.path)) {
|
|
192
|
+
throw new Error(`No .decibel folder found at ${entry.path}. ` +
|
|
193
|
+
`Initialize with 'decibel init' first.`);
|
|
194
|
+
}
|
|
195
|
+
// Normalize path
|
|
196
|
+
entry.path = path.resolve(entry.path);
|
|
197
|
+
// Check for duplicate ID
|
|
198
|
+
const existingIdx = registry.projects.findIndex((p) => p.id === entry.id);
|
|
199
|
+
if (existingIdx >= 0) {
|
|
200
|
+
// Update existing
|
|
201
|
+
registry.projects[existingIdx] = entry;
|
|
202
|
+
log(`ProjectRegistry: Updated project "${entry.id}"`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
// Add new
|
|
206
|
+
registry.projects.push(entry);
|
|
207
|
+
log(`ProjectRegistry: Added project "${entry.id}"`);
|
|
208
|
+
}
|
|
209
|
+
saveRegistry(registry);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Remove a project from the registry
|
|
213
|
+
*/
|
|
214
|
+
export function unregisterProject(projectId) {
|
|
215
|
+
const registry = loadRegistry();
|
|
216
|
+
const beforeCount = registry.projects.length;
|
|
217
|
+
registry.projects = registry.projects.filter((p) => p.id !== projectId);
|
|
218
|
+
if (registry.projects.length < beforeCount) {
|
|
219
|
+
saveRegistry(registry);
|
|
220
|
+
log(`ProjectRegistry: Removed project "${projectId}"`);
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Add an alias to an existing project
|
|
227
|
+
*/
|
|
228
|
+
export function addProjectAlias(projectId, alias) {
|
|
229
|
+
const registry = loadRegistry();
|
|
230
|
+
const project = registry.projects.find((p) => p.id === projectId);
|
|
231
|
+
if (!project) {
|
|
232
|
+
throw new Error(`Project not found: ${projectId}`);
|
|
233
|
+
}
|
|
234
|
+
project.aliases = project.aliases || [];
|
|
235
|
+
if (!project.aliases.includes(alias)) {
|
|
236
|
+
project.aliases.push(alias);
|
|
237
|
+
saveRegistry(registry);
|
|
238
|
+
log(`ProjectRegistry: Added alias "${alias}" to project "${projectId}"`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Get the registry file path (for display/debugging)
|
|
243
|
+
*/
|
|
244
|
+
export function getRegistryFilePath() {
|
|
245
|
+
return getRegistryPath();
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Get the default project.
|
|
249
|
+
* Resolution order:
|
|
250
|
+
* 1. Project explicitly marked as default
|
|
251
|
+
* 2. DECIBEL_DEFAULT_PROJECT env var
|
|
252
|
+
* 3. If only one project registered, use it
|
|
253
|
+
* 4. Discover from cwd
|
|
254
|
+
*
|
|
255
|
+
* @returns The default project entry or undefined if none can be determined
|
|
256
|
+
*/
|
|
257
|
+
export function getDefaultProject() {
|
|
258
|
+
const registry = loadRegistry();
|
|
259
|
+
// Strategy 1: Explicitly marked default
|
|
260
|
+
const explicitDefault = registry.projects.find((p) => p.default === true);
|
|
261
|
+
if (explicitDefault && hasDecibelFolder(explicitDefault.path)) {
|
|
262
|
+
log(`ProjectRegistry: Using explicit default project "${explicitDefault.id}"`);
|
|
263
|
+
return explicitDefault;
|
|
264
|
+
}
|
|
265
|
+
// Strategy 2: DECIBEL_DEFAULT_PROJECT env var
|
|
266
|
+
const envDefault = process.env.DECIBEL_DEFAULT_PROJECT;
|
|
267
|
+
if (envDefault) {
|
|
268
|
+
const envMatch = registry.projects.find((p) => p.id === envDefault || p.aliases?.includes(envDefault));
|
|
269
|
+
if (envMatch && hasDecibelFolder(envMatch.path)) {
|
|
270
|
+
log(`ProjectRegistry: Using DECIBEL_DEFAULT_PROJECT "${envMatch.id}"`);
|
|
271
|
+
return envMatch;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Strategy 3: If only one project, use it
|
|
275
|
+
const validProjects = registry.projects.filter((p) => hasDecibelFolder(p.path));
|
|
276
|
+
if (validProjects.length === 1) {
|
|
277
|
+
log(`ProjectRegistry: Using only registered project "${validProjects[0].id}" as default`);
|
|
278
|
+
return validProjects[0];
|
|
279
|
+
}
|
|
280
|
+
// Strategy 4: Discover from cwd
|
|
281
|
+
const discoveredRoot = findDecibelDir(process.cwd());
|
|
282
|
+
if (discoveredRoot) {
|
|
283
|
+
const discoveredId = path.basename(discoveredRoot);
|
|
284
|
+
// Check if it matches a registered project
|
|
285
|
+
const registeredMatch = registry.projects.find((p) => p.id === discoveredId);
|
|
286
|
+
if (registeredMatch) {
|
|
287
|
+
log(`ProjectRegistry: Using cwd-discovered project "${registeredMatch.id}" as default`);
|
|
288
|
+
return registeredMatch;
|
|
289
|
+
}
|
|
290
|
+
// Return an ad-hoc entry for the discovered project
|
|
291
|
+
log(`ProjectRegistry: Using cwd-discovered unregistered project "${discoveredId}" as default`);
|
|
292
|
+
return { id: discoveredId, path: discoveredRoot };
|
|
293
|
+
}
|
|
294
|
+
log(`ProjectRegistry: No default project could be determined`);
|
|
295
|
+
return undefined;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Set a project as the default
|
|
299
|
+
*/
|
|
300
|
+
export function setDefaultProject(projectId) {
|
|
301
|
+
const registry = loadRegistry();
|
|
302
|
+
const project = registry.projects.find((p) => p.id === projectId);
|
|
303
|
+
if (!project) {
|
|
304
|
+
throw new Error(`Project not found: ${projectId}`);
|
|
305
|
+
}
|
|
306
|
+
// Clear existing defaults
|
|
307
|
+
for (const p of registry.projects) {
|
|
308
|
+
p.default = false;
|
|
309
|
+
}
|
|
310
|
+
// Set new default
|
|
311
|
+
project.default = true;
|
|
312
|
+
saveRegistry(registry);
|
|
313
|
+
log(`ProjectRegistry: Set "${projectId}" as default project`);
|
|
314
|
+
}
|
|
315
|
+
// ============================================================================
|
|
316
|
+
// Input Normalization Helpers
|
|
317
|
+
// ============================================================================
|
|
318
|
+
/**
|
|
319
|
+
* Normalize projectId from various input formats.
|
|
320
|
+
* Handles both camelCase (projectId) and snake_case (project_id).
|
|
321
|
+
* This allows tools to accept inputs from Claude regardless of which format it uses.
|
|
322
|
+
*/
|
|
323
|
+
export function normalizeProjectId(input) {
|
|
324
|
+
return input.projectId || input.project_id;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Resolve project and return useful paths.
|
|
328
|
+
* This is the primary helper for tools to get project paths.
|
|
329
|
+
*
|
|
330
|
+
* @param projectId - Project ID, alias, or path (optional, uses default if not provided)
|
|
331
|
+
* @returns Resolved project paths
|
|
332
|
+
* @throws Error if project cannot be resolved
|
|
333
|
+
*/
|
|
334
|
+
export function resolveProjectPaths(projectId) {
|
|
335
|
+
let project;
|
|
336
|
+
if (projectId) {
|
|
337
|
+
project = resolveProject(projectId);
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
const defaultProject = getDefaultProject();
|
|
341
|
+
if (!defaultProject) {
|
|
342
|
+
const registry = loadRegistry();
|
|
343
|
+
const registered = registry.projects.map(p => p.id);
|
|
344
|
+
let msg = 'No project specified and no default project found.';
|
|
345
|
+
if (registered.length > 0) {
|
|
346
|
+
msg += ` Registered projects: ${registered.join(', ')}. Pass one as project_id.`;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
msg += ` No projects registered. Use the project_init tool to initialize a project, or registry_add to register an existing .decibel/ directory.`;
|
|
350
|
+
}
|
|
351
|
+
throw new Error(msg);
|
|
352
|
+
}
|
|
353
|
+
project = defaultProject;
|
|
354
|
+
}
|
|
355
|
+
const decibelPath = path.join(project.path, '.decibel');
|
|
356
|
+
return {
|
|
357
|
+
id: project.id,
|
|
358
|
+
projectPath: project.path,
|
|
359
|
+
decibelPath,
|
|
360
|
+
subPath: (...segments) => path.join(decibelPath, ...segments),
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Validate that a write path is within the project's .decibel folder.
|
|
365
|
+
* Call this before any file write to prevent escaping project boundaries.
|
|
366
|
+
*/
|
|
367
|
+
export function validateWritePath(targetPath, resolved) {
|
|
368
|
+
const normalized = path.normalize(targetPath);
|
|
369
|
+
if (!normalized.startsWith(resolved.decibelPath)) {
|
|
370
|
+
throw new Error(`SECURITY: Write path ${targetPath} is outside project .decibel folder. ` +
|
|
371
|
+
`Expected path under: ${resolved.decibelPath}`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
//# sourceMappingURL=projectRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectRegistry.js","sourceRoot":"","sources":["../src/projectRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export type IssueStatus = 'open' | 'in_progress' | 'done' | 'blocked';
|
|
2
|
+
export type IssuePriority = 'low' | 'medium' | 'high';
|
|
3
|
+
export interface SentinelIssue {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
project: string;
|
|
7
|
+
status: IssueStatus;
|
|
8
|
+
priority?: IssuePriority;
|
|
9
|
+
epicId?: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
created_at?: string;
|
|
12
|
+
updated_at?: string;
|
|
13
|
+
description?: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface CreateIssueInput {
|
|
17
|
+
projectId: string;
|
|
18
|
+
title: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
epicId?: string;
|
|
21
|
+
priority?: IssuePriority;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface CreateIssueOutput extends SentinelIssue {
|
|
25
|
+
filePath: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* List all issues for a project
|
|
29
|
+
* Reads from both .decibel/ and decibel/ paths, deduping by filename
|
|
30
|
+
*/
|
|
31
|
+
export declare function listIssuesForProject(projectId: string): Promise<SentinelIssue[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new issue for a project
|
|
34
|
+
*/
|
|
35
|
+
export declare function createIssue(input: CreateIssueInput): Promise<CreateIssueOutput>;
|
|
36
|
+
/**
|
|
37
|
+
* Get a single issue by ID (e.g., "ISS-0005") with full content
|
|
38
|
+
*/
|
|
39
|
+
export declare function getIssueById(projectId: string, issueId: string): Promise<SentinelIssue | null>;
|
|
40
|
+
export interface UpdateIssueInput {
|
|
41
|
+
projectId: string;
|
|
42
|
+
issueId: string;
|
|
43
|
+
status?: IssueStatus;
|
|
44
|
+
priority?: IssuePriority;
|
|
45
|
+
tags?: string[];
|
|
46
|
+
note?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface UpdateIssueOutput extends SentinelIssue {
|
|
49
|
+
filePath: string;
|
|
50
|
+
changes: string[];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Update an existing issue — status, priority, tags, and/or append a note.
|
|
54
|
+
* Reads the YAML file, applies changes, writes back.
|
|
55
|
+
*/
|
|
56
|
+
export declare function updateIssue(input: UpdateIssueInput): Promise<UpdateIssueOutput>;
|
|
57
|
+
/**
|
|
58
|
+
* Filter issues by status
|
|
59
|
+
*/
|
|
60
|
+
export declare function filterByStatus(issues: SentinelIssue[], status: IssueStatus): SentinelIssue[];
|
|
61
|
+
/**
|
|
62
|
+
* Filter issues by epic ID
|
|
63
|
+
*/
|
|
64
|
+
export declare function filterByEpicId(issues: SentinelIssue[], epicId: string): SentinelIssue[];
|
|
65
|
+
//# sourceMappingURL=sentinelIssues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentinelIssues.d.ts","sourceRoot":"","sources":["../src/sentinelIssues.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AACtE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoFD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAgE1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA4E5B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAI/B;AAMD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAqF5B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,WAAW,GAClB,aAAa,EAAE,CAEjB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EAAE,EACvB,MAAM,EAAE,MAAM,GACb,aAAa,EAAE,CAEjB"}
|