@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,297 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { parse as parseYaml, parseAllDocuments, stringify as stringifyYaml } from 'yaml';
|
|
4
|
+
import { log } from './config.js';
|
|
5
|
+
import { getWritePath, readFilesFromBothPaths } from './decibelPaths.js';
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Constants
|
|
8
|
+
// ============================================================================
|
|
9
|
+
const ISSUES_SUBPATH = 'sentinel/issues';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Helpers
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Slugify a title for use in filename
|
|
15
|
+
*/
|
|
16
|
+
function slugify(text) {
|
|
17
|
+
return text
|
|
18
|
+
.toLowerCase()
|
|
19
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
20
|
+
.replace(/^-|-$/g, '')
|
|
21
|
+
.substring(0, 50);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Extract numeric suffix from issue ID (e.g., "ISS-0007" -> 7)
|
|
25
|
+
*/
|
|
26
|
+
function extractIssueNumber(id) {
|
|
27
|
+
const match = id.match(/^ISS-(\d+)$/i);
|
|
28
|
+
return match ? parseInt(match[1], 10) : 0;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Format issue ID with zero-padding
|
|
32
|
+
*/
|
|
33
|
+
function formatIssueId(num) {
|
|
34
|
+
return `ISS-${num.toString().padStart(4, '0')}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Ensure directory exists
|
|
38
|
+
*/
|
|
39
|
+
async function ensureDir(dirPath) {
|
|
40
|
+
try {
|
|
41
|
+
await fs.mkdir(dirPath, { recursive: true });
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Directory already exists or other error
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Safely parse YAML content that might contain multiple documents (frontmatter format).
|
|
49
|
+
* Returns the first document's contents, or throws if no valid document found.
|
|
50
|
+
*/
|
|
51
|
+
function safeParseYaml(content) {
|
|
52
|
+
// First, try simple parse (most common case)
|
|
53
|
+
try {
|
|
54
|
+
return parseYaml(content);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
// Check if error is about multiple documents
|
|
58
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
59
|
+
if (!message.includes('multiple documents')) {
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Handle multi-document YAML (frontmatter format with --- delimiters)
|
|
64
|
+
const docs = parseAllDocuments(content);
|
|
65
|
+
if (docs.length === 0) {
|
|
66
|
+
throw new Error('No YAML documents found');
|
|
67
|
+
}
|
|
68
|
+
// Return the first document (usually the frontmatter)
|
|
69
|
+
const firstDoc = docs[0].toJSON();
|
|
70
|
+
if (typeof firstDoc !== 'object' || firstDoc === null) {
|
|
71
|
+
throw new Error('First YAML document is not an object');
|
|
72
|
+
}
|
|
73
|
+
return firstDoc;
|
|
74
|
+
}
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Public API
|
|
77
|
+
// ============================================================================
|
|
78
|
+
/**
|
|
79
|
+
* List all issues for a project
|
|
80
|
+
* Reads from both .decibel/ and decibel/ paths, deduping by filename
|
|
81
|
+
*/
|
|
82
|
+
export async function listIssuesForProject(projectId) {
|
|
83
|
+
const issues = [];
|
|
84
|
+
const seenIds = new Set();
|
|
85
|
+
// Read from both .decibel/ and decibel/ paths
|
|
86
|
+
const files = await readFilesFromBothPaths(projectId, ISSUES_SUBPATH);
|
|
87
|
+
if (files.length === 0) {
|
|
88
|
+
log(`sentinelIssues: No issues found for project: ${projectId}`);
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
for (const { filePath, source } of files) {
|
|
92
|
+
try {
|
|
93
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
94
|
+
const parsed = safeParseYaml(content);
|
|
95
|
+
// Validate required fields
|
|
96
|
+
const id = parsed.id;
|
|
97
|
+
const title = parsed.title;
|
|
98
|
+
if (!id || !title) {
|
|
99
|
+
log(`sentinelIssues: Skipping ${filePath} - missing id or title`);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
// Skip duplicates (primary takes precedence)
|
|
103
|
+
if (seenIds.has(id)) {
|
|
104
|
+
log(`sentinelIssues: Skipping duplicate ${id} from ${source} path`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
seenIds.add(id);
|
|
108
|
+
const issue = {
|
|
109
|
+
id,
|
|
110
|
+
title,
|
|
111
|
+
project: parsed.project || projectId,
|
|
112
|
+
status: parsed.status || 'open',
|
|
113
|
+
priority: parsed.priority,
|
|
114
|
+
epicId: parsed.epic_id || parsed.epicId,
|
|
115
|
+
tags: parsed.tags,
|
|
116
|
+
created_at: parsed.created_at,
|
|
117
|
+
updated_at: parsed.updated_at,
|
|
118
|
+
description: parsed.description,
|
|
119
|
+
};
|
|
120
|
+
// Copy any extra fields
|
|
121
|
+
for (const key of Object.keys(parsed)) {
|
|
122
|
+
if (!(key in issue)) {
|
|
123
|
+
issue[key] = parsed[key];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
issues.push(issue);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
130
|
+
log(`sentinelIssues: Failed to parse ${filePath}: ${message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Sort by ID (newest first)
|
|
134
|
+
issues.sort((a, b) => extractIssueNumber(b.id) - extractIssueNumber(a.id));
|
|
135
|
+
return issues;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Create a new issue for a project
|
|
139
|
+
*/
|
|
140
|
+
export async function createIssue(input) {
|
|
141
|
+
const { projectId, title, description, epicId, priority, tags } = input;
|
|
142
|
+
// Always write to .decibel/ (primary path)
|
|
143
|
+
const issuesDir = await getWritePath(projectId, ISSUES_SUBPATH);
|
|
144
|
+
await ensureDir(issuesDir);
|
|
145
|
+
// Find next issue number
|
|
146
|
+
const existingIssues = await listIssuesForProject(projectId);
|
|
147
|
+
const maxNum = existingIssues.reduce((max, issue) => Math.max(max, extractIssueNumber(issue.id)), 0);
|
|
148
|
+
const newNum = maxNum + 1;
|
|
149
|
+
const newId = formatIssueId(newNum);
|
|
150
|
+
// Build filename
|
|
151
|
+
const slug = slugify(title);
|
|
152
|
+
const filename = `${newId}-${slug}.yml`;
|
|
153
|
+
const filePath = path.join(issuesDir, filename);
|
|
154
|
+
// Build issue object
|
|
155
|
+
const now = new Date().toISOString();
|
|
156
|
+
const issue = {
|
|
157
|
+
id: newId,
|
|
158
|
+
title,
|
|
159
|
+
project: projectId,
|
|
160
|
+
status: 'open',
|
|
161
|
+
priority: priority || 'medium',
|
|
162
|
+
tags: tags || [],
|
|
163
|
+
created_at: now,
|
|
164
|
+
updated_at: now,
|
|
165
|
+
};
|
|
166
|
+
if (epicId) {
|
|
167
|
+
issue.epicId = epicId;
|
|
168
|
+
}
|
|
169
|
+
if (description) {
|
|
170
|
+
issue.description = description;
|
|
171
|
+
}
|
|
172
|
+
// Build YAML content
|
|
173
|
+
// Use a specific field order for cleaner output
|
|
174
|
+
const yamlObj = {
|
|
175
|
+
id: issue.id,
|
|
176
|
+
title: issue.title,
|
|
177
|
+
project: issue.project,
|
|
178
|
+
status: issue.status,
|
|
179
|
+
priority: issue.priority,
|
|
180
|
+
};
|
|
181
|
+
if (epicId) {
|
|
182
|
+
yamlObj.epic_id = epicId;
|
|
183
|
+
}
|
|
184
|
+
yamlObj.tags = issue.tags;
|
|
185
|
+
yamlObj.created_at = issue.created_at;
|
|
186
|
+
yamlObj.updated_at = issue.updated_at;
|
|
187
|
+
if (description) {
|
|
188
|
+
yamlObj.description = description;
|
|
189
|
+
}
|
|
190
|
+
const yamlContent = stringifyYaml(yamlObj, {
|
|
191
|
+
lineWidth: 0, // Don't wrap lines
|
|
192
|
+
});
|
|
193
|
+
// Write file
|
|
194
|
+
await fs.writeFile(filePath, yamlContent, 'utf-8');
|
|
195
|
+
log(`sentinelIssues: Created issue at ${filePath}`);
|
|
196
|
+
return {
|
|
197
|
+
...issue,
|
|
198
|
+
filePath,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Get a single issue by ID (e.g., "ISS-0005") with full content
|
|
203
|
+
*/
|
|
204
|
+
export async function getIssueById(projectId, issueId) {
|
|
205
|
+
const issues = await listIssuesForProject(projectId);
|
|
206
|
+
const normalizedId = issueId.toUpperCase();
|
|
207
|
+
return issues.find((i) => i.id.toUpperCase() === normalizedId) ?? null;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Update an existing issue — status, priority, tags, and/or append a note.
|
|
211
|
+
* Reads the YAML file, applies changes, writes back.
|
|
212
|
+
*/
|
|
213
|
+
export async function updateIssue(input) {
|
|
214
|
+
const { projectId, issueId, status, priority, tags, note } = input;
|
|
215
|
+
// Find the issue file
|
|
216
|
+
const files = await readFilesFromBothPaths(projectId, ISSUES_SUBPATH);
|
|
217
|
+
const normalizedId = issueId.toUpperCase();
|
|
218
|
+
let matchedFile;
|
|
219
|
+
for (const f of files) {
|
|
220
|
+
const basename = path.basename(f.filePath).toUpperCase();
|
|
221
|
+
if (basename.startsWith(normalizedId)) {
|
|
222
|
+
matchedFile = f;
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (!matchedFile) {
|
|
227
|
+
throw new Error(`Issue ${issueId} not found in project ${projectId}`);
|
|
228
|
+
}
|
|
229
|
+
// Read and parse
|
|
230
|
+
const content = await fs.readFile(matchedFile.filePath, 'utf-8');
|
|
231
|
+
const parsed = safeParseYaml(content);
|
|
232
|
+
const changes = [];
|
|
233
|
+
// Apply changes
|
|
234
|
+
if (status && status !== parsed.status) {
|
|
235
|
+
changes.push(`status: ${parsed.status} → ${status}`);
|
|
236
|
+
parsed.status = status;
|
|
237
|
+
}
|
|
238
|
+
if (priority && priority !== parsed.priority) {
|
|
239
|
+
changes.push(`priority: ${parsed.priority ?? 'unset'} → ${priority}`);
|
|
240
|
+
parsed.priority = priority;
|
|
241
|
+
}
|
|
242
|
+
if (tags) {
|
|
243
|
+
const oldTags = parsed.tags || [];
|
|
244
|
+
const merged = [...new Set([...oldTags, ...tags])];
|
|
245
|
+
if (merged.length !== oldTags.length) {
|
|
246
|
+
changes.push(`tags: added ${tags.filter(t => !oldTags.includes(t)).join(', ')}`);
|
|
247
|
+
parsed.tags = merged;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
if (note) {
|
|
251
|
+
const existing = parsed.description || '';
|
|
252
|
+
const timestamp = new Date().toISOString().slice(0, 10);
|
|
253
|
+
const appendedNote = `\n\n[${timestamp}] ${note}`;
|
|
254
|
+
parsed.description = existing + appendedNote;
|
|
255
|
+
changes.push(`note appended`);
|
|
256
|
+
}
|
|
257
|
+
if (changes.length === 0) {
|
|
258
|
+
throw new Error(`No changes to apply to ${issueId}`);
|
|
259
|
+
}
|
|
260
|
+
// Update timestamp
|
|
261
|
+
parsed.updated_at = new Date().toISOString();
|
|
262
|
+
// Write back
|
|
263
|
+
const yamlContent = stringifyYaml(parsed, { lineWidth: 0 });
|
|
264
|
+
// Write to the primary (.decibel) path
|
|
265
|
+
const writeDir = await getWritePath(projectId, ISSUES_SUBPATH);
|
|
266
|
+
await ensureDir(writeDir);
|
|
267
|
+
const writePath = path.join(writeDir, path.basename(matchedFile.filePath));
|
|
268
|
+
await fs.writeFile(writePath, yamlContent, 'utf-8');
|
|
269
|
+
log(`sentinelIssues: Updated issue ${issueId} at ${writePath} — ${changes.join(', ')}`);
|
|
270
|
+
// Build return object
|
|
271
|
+
const issue = {
|
|
272
|
+
id: parsed.id,
|
|
273
|
+
title: parsed.title,
|
|
274
|
+
project: parsed.project || projectId,
|
|
275
|
+
status: parsed.status,
|
|
276
|
+
priority: parsed.priority,
|
|
277
|
+
epicId: parsed.epic_id || parsed.epicId,
|
|
278
|
+
tags: parsed.tags,
|
|
279
|
+
created_at: parsed.created_at,
|
|
280
|
+
updated_at: parsed.updated_at,
|
|
281
|
+
description: parsed.description,
|
|
282
|
+
};
|
|
283
|
+
return { ...issue, filePath: writePath, changes };
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Filter issues by status
|
|
287
|
+
*/
|
|
288
|
+
export function filterByStatus(issues, status) {
|
|
289
|
+
return issues.filter((issue) => issue.status === status);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Filter issues by epic ID
|
|
293
|
+
*/
|
|
294
|
+
export function filterByEpicId(issues, epicId) {
|
|
295
|
+
return issues.filter((issue) => issue.epicId === epicId);
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=sentinelIssues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentinelIssues.js","sourceRoot":"","sources":["../src/sentinelIssues.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":""}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Decibel MCP Server — Entry Point
|
|
4
|
+
// ============================================================================
|
|
5
|
+
// Modes:
|
|
6
|
+
// node dist/server.js → stdio (Claude Code, Cursor)
|
|
7
|
+
// node dist/server.js --bridge → stdio with daemon proxy (auto-detect)
|
|
8
|
+
// node dist/server.js --bridge http://... → stdio with explicit daemon
|
|
9
|
+
// node dist/server.js --http → HTTP only (ChatGPT, Mother)
|
|
10
|
+
// node dist/server.js --daemon → daemon mode (HTTP + PID + graceful shutdown)
|
|
11
|
+
// node dist/server.js --daemon --stdio → daemon + stdio from one process
|
|
12
|
+
// node dist/server.js --daemon install → install macOS launchd plist
|
|
13
|
+
// node dist/server.js --daemon uninstall
|
|
14
|
+
// node dist/server.js --daemon status
|
|
15
|
+
// ============================================================================
|
|
16
|
+
import fs from 'fs';
|
|
17
|
+
import path from 'path';
|
|
18
|
+
import { getConfig, log } from './config.js';
|
|
19
|
+
import { createKernel } from './kernel.js';
|
|
20
|
+
import { StdioAdapter, HttpAdapter, BridgeAdapter } from './transports/index.js';
|
|
21
|
+
import { parseHttpArgs } from './httpServer.js';
|
|
22
|
+
import { checkRunning, writePid, removePid, installShutdownHandlers, handleDaemonSubcommand, getLogPath, rotateLog, checkCrashLoop, scheduleHealthReset, resetCrashes, } from './daemon.js';
|
|
23
|
+
import { loadConfig } from './daemonConfig.js';
|
|
24
|
+
import { getLicenseValidator } from './license.js';
|
|
25
|
+
const config = getConfig();
|
|
26
|
+
log(`Starting Decibel MCP Server`);
|
|
27
|
+
log(`Environment: ${config.env}`);
|
|
28
|
+
log(`Organization: ${config.org}`);
|
|
29
|
+
log(`Root Directory: ${config.rootDir}`);
|
|
30
|
+
if (process.env.DECIBEL_PRO === '1')
|
|
31
|
+
log('Pro features: ENABLED');
|
|
32
|
+
if (process.env.DECIBEL_APPS === '1')
|
|
33
|
+
log('Apps: ENABLED');
|
|
34
|
+
async function main() {
|
|
35
|
+
const args = process.argv;
|
|
36
|
+
const daemonMode = args.includes('--daemon');
|
|
37
|
+
// Handle daemon subcommands (install, uninstall, status) — exits process
|
|
38
|
+
if (daemonMode && handleDaemonSubcommand(args))
|
|
39
|
+
return;
|
|
40
|
+
// Handle --reset-crashes flag
|
|
41
|
+
if (args.includes('--reset-crashes')) {
|
|
42
|
+
resetCrashes();
|
|
43
|
+
process.exit(0);
|
|
44
|
+
}
|
|
45
|
+
// Parse transport config
|
|
46
|
+
const { httpMode, port, authToken, host, sseKeepaliveMs, timeoutMs, retryIntervalMs } = parseHttpArgs(args);
|
|
47
|
+
// Load daemon config file (CLI flags override config)
|
|
48
|
+
const daemonConfig = loadConfig();
|
|
49
|
+
const transportConfig = {
|
|
50
|
+
port: daemonMode ? (port || daemonConfig.daemon.port || 4888) : port,
|
|
51
|
+
host: host || (daemonMode ? daemonConfig.daemon.host : undefined),
|
|
52
|
+
authToken: authToken || daemonConfig.daemon.auth_token,
|
|
53
|
+
sseKeepaliveMs,
|
|
54
|
+
timeoutMs,
|
|
55
|
+
retryIntervalMs,
|
|
56
|
+
isDaemon: daemonMode,
|
|
57
|
+
rateLimitRpm: daemonConfig.daemon.rate_limit_rpm,
|
|
58
|
+
configLicenseKey: daemonConfig.license?.key,
|
|
59
|
+
};
|
|
60
|
+
// Daemon lifecycle: check lock, crash loop, write PID, setup shutdown
|
|
61
|
+
if (daemonMode) {
|
|
62
|
+
// Crash loop protection: exit cleanly if restarting too fast
|
|
63
|
+
if (!checkCrashLoop()) {
|
|
64
|
+
process.exit(0); // Exit 0 tells launchd to stop retrying
|
|
65
|
+
}
|
|
66
|
+
const existingPid = checkRunning();
|
|
67
|
+
if (existingPid) {
|
|
68
|
+
console.error(`Daemon already running (PID ${existingPid}).`);
|
|
69
|
+
console.error(`Kill it with: kill ${existingPid}`);
|
|
70
|
+
console.error(`Or remove stale PID: rm ~/.decibel/daemon.pid`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
writePid();
|
|
74
|
+
scheduleHealthReset(); // Reset crash counter after 5 minutes of healthy running
|
|
75
|
+
log(`Daemon: mode active, PID ${process.pid}, port ${transportConfig.port}`);
|
|
76
|
+
log(`Daemon: log file at ${getLogPath()}`);
|
|
77
|
+
// Pre-validate license key from config (fire and forget)
|
|
78
|
+
if (daemonConfig.license?.key) {
|
|
79
|
+
getLicenseValidator().prevalidate(daemonConfig.license.key);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Create kernel
|
|
83
|
+
const kernel = await createKernel();
|
|
84
|
+
const adapters = [];
|
|
85
|
+
// In daemon mode, log all dispatches to dispatch.jsonl (async buffered writes + rotation)
|
|
86
|
+
if (daemonMode) {
|
|
87
|
+
const logsDir = path.join(process.env.HOME || '~', '.decibel', 'logs');
|
|
88
|
+
fs.mkdirSync(logsDir, { recursive: true });
|
|
89
|
+
const dispatchLogPath = path.join(logsDir, 'dispatch.jsonl');
|
|
90
|
+
const daemonLogPath = path.join(logsDir, 'daemon.log');
|
|
91
|
+
// Parse log rotation CLI flags
|
|
92
|
+
const maxSizeIdx = args.indexOf('--log-max-size');
|
|
93
|
+
const maxFilesIdx = args.indexOf('--log-max-files');
|
|
94
|
+
const logMaxSizeBytes = maxSizeIdx !== -1
|
|
95
|
+
? parseInt(args[maxSizeIdx + 1], 10) * 1024 * 1024
|
|
96
|
+
: 10 * 1024 * 1024; // 10MB default
|
|
97
|
+
const logMaxFiles = maxFilesIdx !== -1
|
|
98
|
+
? parseInt(args[maxFilesIdx + 1], 10)
|
|
99
|
+
: 3;
|
|
100
|
+
let writesSinceRotationCheck = 0;
|
|
101
|
+
// Buffered async writer — batches writes to reduce I/O
|
|
102
|
+
let writeBuffer = [];
|
|
103
|
+
let writeTimer = null;
|
|
104
|
+
const flushBuffer = async () => {
|
|
105
|
+
if (writeBuffer.length === 0)
|
|
106
|
+
return;
|
|
107
|
+
const batch = writeBuffer.join('');
|
|
108
|
+
writeBuffer = [];
|
|
109
|
+
try {
|
|
110
|
+
// Check rotation every 100 writes
|
|
111
|
+
writesSinceRotationCheck += batch.split('\n').length;
|
|
112
|
+
if (writesSinceRotationCheck >= 100) {
|
|
113
|
+
writesSinceRotationCheck = 0;
|
|
114
|
+
rotateLog(dispatchLogPath, logMaxSizeBytes, logMaxFiles);
|
|
115
|
+
}
|
|
116
|
+
await fs.promises.appendFile(dispatchLogPath, batch);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
log(`Daemon: dispatch log write error: ${err}`);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
const writeEvent = (evt) => {
|
|
123
|
+
writeBuffer.push(JSON.stringify(evt) + '\n');
|
|
124
|
+
// Flush every 500ms or when buffer reaches 50 entries
|
|
125
|
+
if (writeBuffer.length >= 50) {
|
|
126
|
+
if (writeTimer)
|
|
127
|
+
clearTimeout(writeTimer);
|
|
128
|
+
writeTimer = null;
|
|
129
|
+
flushBuffer();
|
|
130
|
+
}
|
|
131
|
+
else if (!writeTimer) {
|
|
132
|
+
writeTimer = setTimeout(() => {
|
|
133
|
+
writeTimer = null;
|
|
134
|
+
flushBuffer();
|
|
135
|
+
}, 500);
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
kernel.on('dispatch', writeEvent);
|
|
139
|
+
kernel.on('result', writeEvent);
|
|
140
|
+
kernel.on('error', writeEvent);
|
|
141
|
+
// SIGHUP: rotate daemon.log (launchd sends this for log rotation)
|
|
142
|
+
process.on('SIGHUP', () => {
|
|
143
|
+
log('Daemon: SIGHUP received, rotating logs');
|
|
144
|
+
rotateLog(dispatchLogPath, logMaxSizeBytes, logMaxFiles);
|
|
145
|
+
rotateLog(daemonLogPath, logMaxSizeBytes, logMaxFiles);
|
|
146
|
+
});
|
|
147
|
+
log(`Daemon: dispatch log at ${dispatchLogPath}`);
|
|
148
|
+
log(`Daemon: log rotation: max ${logMaxSizeBytes / 1024 / 1024}MB, keep ${logMaxFiles} files`);
|
|
149
|
+
}
|
|
150
|
+
// Start transport(s)
|
|
151
|
+
if (daemonMode) {
|
|
152
|
+
// Daemon always starts HTTP
|
|
153
|
+
const http = new HttpAdapter();
|
|
154
|
+
await http.start(kernel, transportConfig);
|
|
155
|
+
adapters.push(http);
|
|
156
|
+
// Optionally also start stdio (for dual-mode)
|
|
157
|
+
if (args.includes('--stdio')) {
|
|
158
|
+
const stdio = new StdioAdapter();
|
|
159
|
+
await stdio.start(kernel, transportConfig);
|
|
160
|
+
adapters.push(stdio);
|
|
161
|
+
}
|
|
162
|
+
// Install graceful shutdown handlers
|
|
163
|
+
installShutdownHandlers(async () => {
|
|
164
|
+
log('Daemon: stopping all transports...');
|
|
165
|
+
await Promise.all(adapters.map(a => a.stop()));
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else if (httpMode) {
|
|
169
|
+
const http = new HttpAdapter();
|
|
170
|
+
await http.start(kernel, transportConfig);
|
|
171
|
+
adapters.push(http);
|
|
172
|
+
}
|
|
173
|
+
else if (args.includes('--bridge')) {
|
|
174
|
+
// Bridge mode: stdio with daemon proxy
|
|
175
|
+
const bridgeIdx = args.indexOf('--bridge');
|
|
176
|
+
const nextArg = args[bridgeIdx + 1];
|
|
177
|
+
// If next arg looks like a URL, use it; otherwise auto-detect
|
|
178
|
+
const explicitUrl = nextArg && nextArg.startsWith('http') ? nextArg : null;
|
|
179
|
+
const daemonUrl = explicitUrl || `http://127.0.0.1:${transportConfig.port || 4888}`;
|
|
180
|
+
const bridge = new BridgeAdapter(daemonUrl);
|
|
181
|
+
await bridge.start(kernel, transportConfig);
|
|
182
|
+
adapters.push(bridge);
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
const stdio = new StdioAdapter();
|
|
186
|
+
await stdio.start(kernel, transportConfig);
|
|
187
|
+
adapters.push(stdio);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
main().catch((error) => {
|
|
191
|
+
console.error('Fatal error:', error);
|
|
192
|
+
removePid(); // Clean up PID on crash
|
|
193
|
+
process.exit(1);
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
|
package/dist/test.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Test script to verify all Decibel tools work correctly.
|
|
4
|
+
* Run with: npm test
|
|
5
|
+
*/
|
|
6
|
+
import { recordDesignDecision } from './tools/designer.js';
|
|
7
|
+
import { recordArchDecision } from './tools/architect.js';
|
|
8
|
+
import { createIssue } from './tools/sentinel.js';
|
|
9
|
+
import { nextActions } from './tools/oracle.js';
|
|
10
|
+
const PROJECT_ID = 'test-project';
|
|
11
|
+
async function testDesigner() {
|
|
12
|
+
console.log('\n=== Testing Designer ===');
|
|
13
|
+
const result = await recordDesignDecision({
|
|
14
|
+
projectId: PROJECT_ID,
|
|
15
|
+
area: 'API',
|
|
16
|
+
summary: 'Use REST for public API endpoints',
|
|
17
|
+
details: 'We decided to use REST instead of GraphQL for the public API because:\n1. Simpler learning curve for API consumers\n2. Better caching support\n3. More predictable rate limiting',
|
|
18
|
+
});
|
|
19
|
+
console.log('Designer result:', JSON.stringify(result, null, 2));
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
async function testArchitect() {
|
|
23
|
+
console.log('\n=== Testing Architect ===');
|
|
24
|
+
const result = await recordArchDecision({
|
|
25
|
+
projectId: PROJECT_ID,
|
|
26
|
+
change: 'Migrate from monolith to microservices',
|
|
27
|
+
rationale: 'The current monolithic architecture is becoming hard to scale and deploy independently. Microservices will allow teams to deploy features independently and scale specific services based on demand.',
|
|
28
|
+
impact: 'This will require significant refactoring over the next few sprints. Team will need to set up container orchestration (K8s) and service mesh (Istio).',
|
|
29
|
+
});
|
|
30
|
+
console.log('Architect result:', JSON.stringify(result, null, 2));
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
async function testSentinel() {
|
|
34
|
+
console.log('\n=== Testing Sentinel ===');
|
|
35
|
+
const result = await createIssue({
|
|
36
|
+
projectId: PROJECT_ID,
|
|
37
|
+
severity: 'high',
|
|
38
|
+
title: 'Memory leak in auth service',
|
|
39
|
+
details: 'The auth service shows increasing memory usage over time. After ~24 hours of uptime, memory usage grows from 256MB to 2GB. Suspected cause is unclosed database connections in the session handler.',
|
|
40
|
+
});
|
|
41
|
+
console.log('Sentinel result:', JSON.stringify(result, null, 2));
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
async function testOracle() {
|
|
45
|
+
console.log('\n=== Testing Oracle ===');
|
|
46
|
+
// First without focus
|
|
47
|
+
const result1 = await nextActions({
|
|
48
|
+
projectId: PROJECT_ID,
|
|
49
|
+
});
|
|
50
|
+
console.log('Oracle result (no focus):', JSON.stringify(result1, null, 2));
|
|
51
|
+
// Then with focus
|
|
52
|
+
const result2 = await nextActions({
|
|
53
|
+
projectId: PROJECT_ID,
|
|
54
|
+
focus: 'sentinel',
|
|
55
|
+
});
|
|
56
|
+
console.log('Oracle result (focus: sentinel):', JSON.stringify(result2, null, 2));
|
|
57
|
+
return result1;
|
|
58
|
+
}
|
|
59
|
+
async function runAllTests() {
|
|
60
|
+
console.log('Starting Decibel Tools tests...');
|
|
61
|
+
console.log('================================');
|
|
62
|
+
try {
|
|
63
|
+
await testDesigner();
|
|
64
|
+
await testArchitect();
|
|
65
|
+
await testSentinel();
|
|
66
|
+
await testOracle();
|
|
67
|
+
console.log('\n================================');
|
|
68
|
+
console.log('All tests completed successfully!');
|
|
69
|
+
console.log('================================\n');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error('\nTest failed:', error);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
runAllTests();
|
|
77
|
+
//# sourceMappingURL=test.js.map
|
package/dist/test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ToolSpec } from '../types.js';
|
|
2
|
+
export declare const agenticCompilePackTool: ToolSpec;
|
|
3
|
+
export declare const agenticRenderTool: ToolSpec;
|
|
4
|
+
export declare const agenticLintTool: ToolSpec;
|
|
5
|
+
export declare const agenticGoldenEvalTool: ToolSpec;
|
|
6
|
+
export declare const agenticTools: ToolSpec[];
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/agentic/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiBvC,eAAO,MAAM,sBAAsB,EAAE,QAiCpC,CAAC;AAMF,eAAO,MAAM,iBAAiB,EAAE,QA+C/B,CAAC;AAMF,eAAO,MAAM,eAAe,EAAE,QA8C7B,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,QAwCnC,CAAC;AAMF,eAAO,MAAM,YAAY,EAAE,QAAQ,EAKlC,CAAC"}
|