@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,17 @@
|
|
|
1
|
+
import { ResolvedProjectPaths } from '../../projectRegistry.js';
|
|
2
|
+
import { ToolResult } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Wrap a tool handler with automatic project resolution.
|
|
5
|
+
* Handles PROJECT_NOT_FOUND errors with helpful hints.
|
|
6
|
+
*/
|
|
7
|
+
export declare function withProject<T>(args: {
|
|
8
|
+
projectId?: string;
|
|
9
|
+
}, fn: (resolved: ResolvedProjectPaths) => Promise<T>): Promise<T>;
|
|
10
|
+
/**
|
|
11
|
+
* Wrap a tool handler that requires a project, returning ToolResult on error.
|
|
12
|
+
* Use this for top-level tool handlers.
|
|
13
|
+
*/
|
|
14
|
+
export declare function withProjectResult(args: {
|
|
15
|
+
projectId?: string;
|
|
16
|
+
}, fn: (resolved: ResolvedProjectPaths) => Promise<ToolResult>): Promise<ToolResult>;
|
|
17
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/project.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,EAAE,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,CAAC,CAAC,GACjD,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,EAAE,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,UAAU,CAAC,GAC1D,OAAO,CAAC,UAAU,CAAC,CAQrB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Project Resolution Helper
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Wraps tool handlers with automatic project resolution.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
import { resolveProjectPaths, } from '../../projectRegistry.js';
|
|
7
|
+
import { toolError } from './response.js';
|
|
8
|
+
/**
|
|
9
|
+
* Wrap a tool handler with automatic project resolution.
|
|
10
|
+
* Handles PROJECT_NOT_FOUND errors with helpful hints.
|
|
11
|
+
*/
|
|
12
|
+
export async function withProject(args, fn) {
|
|
13
|
+
try {
|
|
14
|
+
const resolved = resolveProjectPaths(args.projectId);
|
|
15
|
+
return await fn(resolved);
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
// Re-throw with the error message (which now includes helpful hints)
|
|
19
|
+
throw err;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Wrap a tool handler that requires a project, returning ToolResult on error.
|
|
24
|
+
* Use this for top-level tool handlers.
|
|
25
|
+
*/
|
|
26
|
+
export async function withProjectResult(args, fn) {
|
|
27
|
+
try {
|
|
28
|
+
const resolved = resolveProjectPaths(args.projectId);
|
|
29
|
+
return await fn(resolved);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
33
|
+
return toolError(message);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/tools/shared/project.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAE/E,OAAO,EACL,mBAAmB,GAEpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAA4B,EAC5B,EAAkD;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,qEAAqE;QACrE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAA4B,EAC5B,EAA2D;IAE3D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ToolResult } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Track the last tool name for feedback prompts.
|
|
4
|
+
* Call this at the start of each tool handler.
|
|
5
|
+
*/
|
|
6
|
+
export declare function trackToolUse(toolName: string): void;
|
|
7
|
+
/**
|
|
8
|
+
* Create a successful tool response
|
|
9
|
+
*/
|
|
10
|
+
export declare function toolSuccess(data: unknown): ToolResult;
|
|
11
|
+
/**
|
|
12
|
+
* Create an error tool response
|
|
13
|
+
*/
|
|
14
|
+
export declare function toolError(error: string, hint?: string): ToolResult;
|
|
15
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/response.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkCzC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEnD;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAcrD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAelE"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Response Helpers
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Standardized response formatting for tool handlers.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Feedback Prompt Tracking
|
|
8
|
+
// ============================================================================
|
|
9
|
+
let toolCallCount = 0;
|
|
10
|
+
let lastFeedbackPromptTime = Date.now();
|
|
11
|
+
let lastToolName = '';
|
|
12
|
+
const FEEDBACK_PROMPT_INTERVAL_CALLS = 15; // Every N tool calls
|
|
13
|
+
const FEEDBACK_PROMPT_INTERVAL_MS = 30 * 60 * 1000; // Or every 30 minutes
|
|
14
|
+
function shouldShowFeedbackPrompt() {
|
|
15
|
+
toolCallCount++;
|
|
16
|
+
const now = Date.now();
|
|
17
|
+
const timeSinceLastPrompt = now - lastFeedbackPromptTime;
|
|
18
|
+
if (toolCallCount >= FEEDBACK_PROMPT_INTERVAL_CALLS ||
|
|
19
|
+
timeSinceLastPrompt >= FEEDBACK_PROMPT_INTERVAL_MS) {
|
|
20
|
+
toolCallCount = 0;
|
|
21
|
+
lastFeedbackPromptTime = now;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
function getFeedbackPrompt() {
|
|
27
|
+
if (lastToolName) {
|
|
28
|
+
return `Was this helpful? /feedback + ${lastToolName} or /feedback - ${lastToolName}`;
|
|
29
|
+
}
|
|
30
|
+
return 'Quick feedback? /feedback + or /feedback -';
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Track the last tool name for feedback prompts.
|
|
34
|
+
* Call this at the start of each tool handler.
|
|
35
|
+
*/
|
|
36
|
+
export function trackToolUse(toolName) {
|
|
37
|
+
lastToolName = toolName;
|
|
38
|
+
}
|
|
39
|
+
// ============================================================================
|
|
40
|
+
// Response Functions
|
|
41
|
+
// ============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* Create a successful tool response
|
|
44
|
+
*/
|
|
45
|
+
export function toolSuccess(data) {
|
|
46
|
+
let text = JSON.stringify(data, null, 2);
|
|
47
|
+
// Periodically append feedback prompt
|
|
48
|
+
if (shouldShowFeedbackPrompt()) {
|
|
49
|
+
text += '\n\n---\n' + getFeedbackPrompt();
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
content: [{
|
|
53
|
+
type: 'text',
|
|
54
|
+
text,
|
|
55
|
+
}],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create an error tool response
|
|
60
|
+
*/
|
|
61
|
+
export function toolError(error, hint) {
|
|
62
|
+
const payload = {
|
|
63
|
+
success: false,
|
|
64
|
+
error,
|
|
65
|
+
};
|
|
66
|
+
if (hint) {
|
|
67
|
+
payload.hint = hint;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
content: [{
|
|
71
|
+
type: 'text',
|
|
72
|
+
text: JSON.stringify(payload, null, 2),
|
|
73
|
+
}],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/tools/shared/response.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E;AAI/E,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,IAAI,sBAAsB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACxC,IAAI,YAAY,GAAG,EAAE,CAAC;AAEtB,MAAM,8BAA8B,GAAG,EAAE,CAAC,CAAE,qBAAqB;AACjE,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAE,sBAAsB;AAE3E,SAAS,wBAAwB;IAC/B,aAAa,EAAE,CAAC;IAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,mBAAmB,GAAG,GAAG,GAAG,sBAAsB,CAAC;IAEzD,IAAI,aAAa,IAAI,8BAA8B;QAC/C,mBAAmB,IAAI,2BAA2B,EAAE,CAAC;QACvD,aAAa,GAAG,CAAC,CAAC;QAClB,sBAAsB,GAAG,GAAG,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,iCAAiC,YAAY,mBAAmB,YAAY,EAAE,CAAC;IACxF,CAAC;IACD,OAAO,4CAA4C,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,YAAY,GAAG,QAAQ,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEzC,sCAAsC;IACtC,IAAI,wBAAwB,EAAE,EAAE,CAAC;QAC/B,IAAI,IAAI,WAAW,GAAG,iBAAiB,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI;aACL,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,IAAa;IACpD,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC,CAAC;QACF,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get or create an active run for a project.
|
|
3
|
+
* Returns the run ID for use in event logging.
|
|
4
|
+
*
|
|
5
|
+
* @param projectId - The project identifier
|
|
6
|
+
* @returns The active run ID, or null if creation failed
|
|
7
|
+
*/
|
|
8
|
+
export declare function getOrCreateActiveRun(projectId: string): Promise<string | null>;
|
|
9
|
+
/**
|
|
10
|
+
* Log a tool event to the active run for a project.
|
|
11
|
+
* Fails silently if no active run or if logging fails.
|
|
12
|
+
*
|
|
13
|
+
* @param projectId - The project identifier
|
|
14
|
+
* @param toolName - Name of the tool that was called
|
|
15
|
+
* @param result - 'success' or 'error'
|
|
16
|
+
* @param summary - Brief summary of what happened
|
|
17
|
+
*/
|
|
18
|
+
export declare function logToolEvent(projectId: string, toolName: string, result: 'success' | 'error', summary: string): Promise<void>;
|
|
19
|
+
/** Configuration for a tracked tool */
|
|
20
|
+
export interface TrackedToolConfig {
|
|
21
|
+
/** Tool name for logging */
|
|
22
|
+
toolName: string;
|
|
23
|
+
/** Function to extract projectId from args (default: args.projectId || args.project_id) */
|
|
24
|
+
getProjectId?: (args: Record<string, unknown>) => string | undefined;
|
|
25
|
+
/** Function to generate summary from result (default: JSON.stringify) */
|
|
26
|
+
getSummary?: (args: Record<string, unknown>, result: unknown) => string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Wrap a tool handler to automatically log successful calls.
|
|
30
|
+
* Tracking failures are silently ignored to avoid blocking tool execution.
|
|
31
|
+
*
|
|
32
|
+
* @param handler - The original tool handler
|
|
33
|
+
* @param config - Configuration for tracking
|
|
34
|
+
* @returns Wrapped handler that logs events after successful execution
|
|
35
|
+
*/
|
|
36
|
+
export declare function withRunTracking<T extends Record<string, unknown>>(handler: (args: T) => Promise<{
|
|
37
|
+
content: Array<{
|
|
38
|
+
type: 'text';
|
|
39
|
+
text: string;
|
|
40
|
+
}>;
|
|
41
|
+
isError?: boolean;
|
|
42
|
+
}>, config: TrackedToolConfig): (args: T) => Promise<{
|
|
43
|
+
content: Array<{
|
|
44
|
+
type: 'text';
|
|
45
|
+
text: string;
|
|
46
|
+
}>;
|
|
47
|
+
isError?: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
/** Common summary generators for different tool types */
|
|
50
|
+
export declare const summaryGenerators: {
|
|
51
|
+
/** Summary for issue creation */
|
|
52
|
+
issue: (args: Record<string, unknown>, result: unknown) => string;
|
|
53
|
+
/** Summary for epic creation */
|
|
54
|
+
epic: (args: Record<string, unknown>, result: unknown) => string;
|
|
55
|
+
/** Summary for issue closure */
|
|
56
|
+
closeIssue: (args: Record<string, unknown>, result: unknown) => string;
|
|
57
|
+
/** Summary for proposal creation */
|
|
58
|
+
proposal: (args: Record<string, unknown>, result: unknown) => string;
|
|
59
|
+
/** Summary for wish creation */
|
|
60
|
+
wish: (args: Record<string, unknown>, result: unknown) => string;
|
|
61
|
+
/** Summary for experiment scaffold */
|
|
62
|
+
scaffold: (args: Record<string, unknown>, result: unknown) => string;
|
|
63
|
+
/** Summary for learning append */
|
|
64
|
+
learning: (args: Record<string, unknown>) => string;
|
|
65
|
+
/** Summary for friction log */
|
|
66
|
+
friction: (args: Record<string, unknown>, result: unknown) => string;
|
|
67
|
+
/** Summary for ADR creation */
|
|
68
|
+
adr: (args: Record<string, unknown>, result: unknown) => string;
|
|
69
|
+
/** Summary for design decision */
|
|
70
|
+
designDecision: (args: Record<string, unknown>) => string;
|
|
71
|
+
/** Summary for lateral thinking session */
|
|
72
|
+
lateralSession: (args: Record<string, unknown>, result: unknown) => string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Get the current active run for a project (if any).
|
|
76
|
+
* Useful for debugging or external inspection.
|
|
77
|
+
*/
|
|
78
|
+
export declare function getActiveRunId(projectId: string): string | null;
|
|
79
|
+
/**
|
|
80
|
+
* Clear all active runs (useful for testing).
|
|
81
|
+
*/
|
|
82
|
+
export declare function clearActiveRuns(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Get count of active runs (useful for debugging).
|
|
85
|
+
*/
|
|
86
|
+
export declare function getActiveRunCount(): number;
|
|
87
|
+
//# sourceMappingURL=runTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runTracker.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/runTracker.ts"],"names":[],"mappings":"AAuCA;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCpF;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,GAAG,OAAO,EAC3B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAwBf;AAMD,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACrE,yEAAyE;IACzE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;CACzE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EACpG,MAAM,EAAE,iBAAiB,GACxB,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAiC7F;AAMD,yDAAyD;AACzD,eAAO,MAAM,iBAAiB;IAC5B,iCAAiC;kBACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAK/D,gCAAgC;iBACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAK9D,gCAAgC;uBACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAKpE,oCAAoC;qBACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAKlE,gCAAgC;iBACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAK9D,sCAAsC;qBACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAKlE,kCAAkC;qBACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM;IAIjD,+BAA+B;qBACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAKlE,+BAA+B;gBACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;IAK7D,kCAAkC;2BACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM;IAIvD,2CAA2C;2BACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,OAAO,KAAG,MAAM;CAIzE,CAAC;AAMF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAY/D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Run Tracker
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Automatic Vector run tracking for significant tool calls.
|
|
5
|
+
// Tracks tool invocations as events within agent sessions.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { log } from '../../config.js';
|
|
8
|
+
import { createRun, logEvent } from '../vector.js';
|
|
9
|
+
// ============================================================================
|
|
10
|
+
// Constants
|
|
11
|
+
// ============================================================================
|
|
12
|
+
/** Active run timeout in milliseconds (30 minutes) */
|
|
13
|
+
const ACTIVE_RUN_TIMEOUT_MS = 30 * 60 * 1000;
|
|
14
|
+
/** Default agent info for auto-tracked runs */
|
|
15
|
+
const DEFAULT_AGENT = {
|
|
16
|
+
type: 'claude-code',
|
|
17
|
+
version: 'auto-tracked',
|
|
18
|
+
};
|
|
19
|
+
/** Map of projectId -> active run state */
|
|
20
|
+
const activeRuns = new Map();
|
|
21
|
+
// ============================================================================
|
|
22
|
+
// Core Functions
|
|
23
|
+
// ============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Get or create an active run for a project.
|
|
26
|
+
* Returns the run ID for use in event logging.
|
|
27
|
+
*
|
|
28
|
+
* @param projectId - The project identifier
|
|
29
|
+
* @returns The active run ID, or null if creation failed
|
|
30
|
+
*/
|
|
31
|
+
export async function getOrCreateActiveRun(projectId) {
|
|
32
|
+
const now = Date.now();
|
|
33
|
+
const existing = activeRuns.get(projectId);
|
|
34
|
+
// Check if we have an active run within timeout
|
|
35
|
+
if (existing && (now - existing.timestamp) < ACTIVE_RUN_TIMEOUT_MS) {
|
|
36
|
+
// Update timestamp to extend the session
|
|
37
|
+
existing.timestamp = now;
|
|
38
|
+
return existing.runId;
|
|
39
|
+
}
|
|
40
|
+
// Create a new run
|
|
41
|
+
try {
|
|
42
|
+
const result = await createRun({
|
|
43
|
+
projectId,
|
|
44
|
+
agent: DEFAULT_AGENT,
|
|
45
|
+
raw_prompt: '[Auto-tracked session via MCP tool calls]',
|
|
46
|
+
intent: {
|
|
47
|
+
goal: 'Tool usage session tracked automatically',
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
activeRuns.set(projectId, {
|
|
51
|
+
runId: result.run_id,
|
|
52
|
+
timestamp: now,
|
|
53
|
+
});
|
|
54
|
+
log(`RunTracker: Created new run ${result.run_id} for project ${projectId}`);
|
|
55
|
+
return result.run_id;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
log(`RunTracker: Failed to create run for project ${projectId}: ${err}`);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Log a tool event to the active run for a project.
|
|
64
|
+
* Fails silently if no active run or if logging fails.
|
|
65
|
+
*
|
|
66
|
+
* @param projectId - The project identifier
|
|
67
|
+
* @param toolName - Name of the tool that was called
|
|
68
|
+
* @param result - 'success' or 'error'
|
|
69
|
+
* @param summary - Brief summary of what happened
|
|
70
|
+
*/
|
|
71
|
+
export async function logToolEvent(projectId, toolName, result, summary) {
|
|
72
|
+
try {
|
|
73
|
+
const runId = await getOrCreateActiveRun(projectId);
|
|
74
|
+
if (!runId) {
|
|
75
|
+
log(`RunTracker: No active run for project ${projectId}, skipping event`);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
await logEvent({
|
|
79
|
+
projectId,
|
|
80
|
+
run_id: runId,
|
|
81
|
+
type: 'command_ran',
|
|
82
|
+
payload: {
|
|
83
|
+
tool: toolName,
|
|
84
|
+
result,
|
|
85
|
+
summary,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
log(`RunTracker: Logged ${toolName} event (${result}) to run ${runId}`);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
// Fail silently - don't block tool execution
|
|
92
|
+
log(`RunTracker: Failed to log event for ${toolName}: ${err}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Wrap a tool handler to automatically log successful calls.
|
|
97
|
+
* Tracking failures are silently ignored to avoid blocking tool execution.
|
|
98
|
+
*
|
|
99
|
+
* @param handler - The original tool handler
|
|
100
|
+
* @param config - Configuration for tracking
|
|
101
|
+
* @returns Wrapped handler that logs events after successful execution
|
|
102
|
+
*/
|
|
103
|
+
export function withRunTracking(handler, config) {
|
|
104
|
+
return async (args) => {
|
|
105
|
+
const result = await handler(args);
|
|
106
|
+
// Only track successful calls
|
|
107
|
+
if (!result.isError) {
|
|
108
|
+
const projectId = config.getProjectId
|
|
109
|
+
? config.getProjectId(args)
|
|
110
|
+
: args.projectId || args.project_id;
|
|
111
|
+
if (projectId) {
|
|
112
|
+
// Parse the result to generate summary
|
|
113
|
+
let summary;
|
|
114
|
+
try {
|
|
115
|
+
if (config.getSummary) {
|
|
116
|
+
const parsedResult = JSON.parse(result.content[0]?.text || '{}');
|
|
117
|
+
summary = config.getSummary(args, parsedResult);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
summary = `${config.toolName} completed`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
summary = `${config.toolName} completed`;
|
|
125
|
+
}
|
|
126
|
+
// Fire and forget - don't await to avoid blocking
|
|
127
|
+
logToolEvent(projectId, config.toolName, 'success', summary).catch(() => {
|
|
128
|
+
// Silently ignore tracking errors
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return result;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Summary Generators
|
|
137
|
+
// ============================================================================
|
|
138
|
+
/** Common summary generators for different tool types */
|
|
139
|
+
export const summaryGenerators = {
|
|
140
|
+
/** Summary for issue creation */
|
|
141
|
+
issue: (args, result) => {
|
|
142
|
+
const r = result;
|
|
143
|
+
return `Created issue ${r.id || ''}: ${args.title || 'untitled'}`;
|
|
144
|
+
},
|
|
145
|
+
/** Summary for epic creation */
|
|
146
|
+
epic: (args, result) => {
|
|
147
|
+
const r = result;
|
|
148
|
+
return `Created epic ${r.epic_id || ''}: ${args.title || 'untitled'}`;
|
|
149
|
+
},
|
|
150
|
+
/** Summary for issue closure */
|
|
151
|
+
closeIssue: (args, result) => {
|
|
152
|
+
const r = result;
|
|
153
|
+
return `Closed issue ${r.id || args.issue_id}: ${r.status || 'closed'}`;
|
|
154
|
+
},
|
|
155
|
+
/** Summary for proposal creation */
|
|
156
|
+
proposal: (args, result) => {
|
|
157
|
+
const r = result;
|
|
158
|
+
return `Created proposal ${r.proposal_id || ''}: ${args.title || 'untitled'}`;
|
|
159
|
+
},
|
|
160
|
+
/** Summary for wish creation */
|
|
161
|
+
wish: (args, result) => {
|
|
162
|
+
const r = result;
|
|
163
|
+
return `Added wish ${r.wish_id || ''}: ${args.capability || 'unnamed'}`;
|
|
164
|
+
},
|
|
165
|
+
/** Summary for experiment scaffold */
|
|
166
|
+
scaffold: (args, result) => {
|
|
167
|
+
const r = result;
|
|
168
|
+
return `Scaffolded experiment ${r.experiment_id || ''} from ${args.proposal_id || 'unknown'}`;
|
|
169
|
+
},
|
|
170
|
+
/** Summary for learning append */
|
|
171
|
+
learning: (args) => {
|
|
172
|
+
return `Appended learning: ${args.title || 'untitled'}`;
|
|
173
|
+
},
|
|
174
|
+
/** Summary for friction log */
|
|
175
|
+
friction: (args, result) => {
|
|
176
|
+
const r = result;
|
|
177
|
+
return `Logged friction ${r.id || ''}: ${args.context || 'unknown context'}`;
|
|
178
|
+
},
|
|
179
|
+
/** Summary for ADR creation */
|
|
180
|
+
adr: (args, result) => {
|
|
181
|
+
const r = result;
|
|
182
|
+
return `Created ADR ${r.adr_id || ''}: ${args.title || args.change || 'untitled'}`;
|
|
183
|
+
},
|
|
184
|
+
/** Summary for design decision */
|
|
185
|
+
designDecision: (args) => {
|
|
186
|
+
return `Recorded design decision (${args.area || 'general'}): ${args.summary || 'untitled'}`;
|
|
187
|
+
},
|
|
188
|
+
/** Summary for lateral thinking session */
|
|
189
|
+
lateralSession: (args, result) => {
|
|
190
|
+
const r = result;
|
|
191
|
+
return `Lateral session ${r.session_id || args.session_id || ''}: ${r.problem || args.problem || 'session action'}`;
|
|
192
|
+
},
|
|
193
|
+
};
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// Utility Functions
|
|
196
|
+
// ============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Get the current active run for a project (if any).
|
|
199
|
+
* Useful for debugging or external inspection.
|
|
200
|
+
*/
|
|
201
|
+
export function getActiveRunId(projectId) {
|
|
202
|
+
const state = activeRuns.get(projectId);
|
|
203
|
+
if (!state)
|
|
204
|
+
return null;
|
|
205
|
+
const now = Date.now();
|
|
206
|
+
if ((now - state.timestamp) >= ACTIVE_RUN_TIMEOUT_MS) {
|
|
207
|
+
// Run has expired
|
|
208
|
+
activeRuns.delete(projectId);
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
return state.runId;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Clear all active runs (useful for testing).
|
|
215
|
+
*/
|
|
216
|
+
export function clearActiveRuns() {
|
|
217
|
+
activeRuns.clear();
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get count of active runs (useful for debugging).
|
|
221
|
+
*/
|
|
222
|
+
export function getActiveRunCount() {
|
|
223
|
+
return activeRuns.size;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=runTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runTracker.js","sourceRoot":"","sources":["../../../src/tools/shared/runTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validate that required fields are present in args.
|
|
3
|
+
* Throws an error listing any missing fields.
|
|
4
|
+
*/
|
|
5
|
+
export declare function requireFields(args: any, ...fields: string[]): void;
|
|
6
|
+
/**
|
|
7
|
+
* Validate that a field matches one of the allowed values.
|
|
8
|
+
*/
|
|
9
|
+
export declare function requireOneOf<T>(value: T, fieldName: string, allowed: T[]): void;
|
|
10
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/tools/shared/validation.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,aAAa,CAE3B,IAAI,EAAE,GAAG,EACT,GAAG,MAAM,EAAE,MAAM,EAAE,GAClB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,EAAE,GACX,IAAI,CAIN"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Validation Helpers
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Common validation utilities for tool handlers.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
/**
|
|
7
|
+
* Validate that required fields are present in args.
|
|
8
|
+
* Throws an error listing any missing fields.
|
|
9
|
+
*/
|
|
10
|
+
export function requireFields(
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
args, ...fields) {
|
|
13
|
+
const missing = fields.filter(f => args[f] === undefined || args[f] === null);
|
|
14
|
+
if (missing.length > 0) {
|
|
15
|
+
throw new Error(`Missing required field${missing.length > 1 ? 's' : ''}: ${missing.join(', ')}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Validate that a field matches one of the allowed values.
|
|
20
|
+
*/
|
|
21
|
+
export function requireOneOf(value, fieldName, allowed) {
|
|
22
|
+
if (!allowed.includes(value)) {
|
|
23
|
+
throw new Error(`Invalid ${fieldName}: "${value}". Must be one of: ${allowed.join(', ')}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/tools/shared/validation.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAC/E,iDAAiD;AACjD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,UAAU,aAAa;AAC3B,8DAA8D;AAC9D,IAAS,EACT,GAAG,MAAgB;IAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC9E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAQ,EACR,SAAiB,EACjB,OAAY;IAEZ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,MAAM,KAAK,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Studio Cloud Spine Tools
|
|
3
|
+
*
|
|
4
|
+
* Supabase-backed tools for Decibel Studio cloud sync.
|
|
5
|
+
* Integrates with senken.pro Supabase for:
|
|
6
|
+
* - Project management
|
|
7
|
+
* - Artifact sync
|
|
8
|
+
* - Event streaming
|
|
9
|
+
* - Device registration
|
|
10
|
+
*
|
|
11
|
+
* EPIC-0002: Cloud Spine (Supabase Backend)
|
|
12
|
+
*/
|
|
13
|
+
import { ToolSpec } from '../types.js';
|
|
14
|
+
export declare const studioListProjectsTool: ToolSpec;
|
|
15
|
+
export declare const studioCreateProjectTool: ToolSpec;
|
|
16
|
+
export declare const studioReadProjectTool: ToolSpec;
|
|
17
|
+
export declare const studioListArtifactsTool: ToolSpec;
|
|
18
|
+
export declare const studioCreateArtifactTool: ToolSpec;
|
|
19
|
+
export declare const studioUpdateArtifactTool: ToolSpec;
|
|
20
|
+
export declare const studioSyncEventsTool: ToolSpec;
|
|
21
|
+
export declare const studioRegisterDeviceTool: ToolSpec;
|
|
22
|
+
export declare const studioHeartbeatTool: ToolSpec;
|
|
23
|
+
export declare const studioListJobsTool: ToolSpec;
|
|
24
|
+
export declare const studioClaimJobTool: ToolSpec;
|
|
25
|
+
export declare const studioUpdateJobTool: ToolSpec;
|
|
26
|
+
export declare const studioCloudSpineTools: ToolSpec[];
|
|
27
|
+
//# sourceMappingURL=cloud-spine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-spine.d.ts","sourceRoot":"","sources":["../../../src/tools/studio/cloud-spine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAkBvC,eAAO,MAAM,sBAAsB,EAAE,QA4DpC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,QAmErC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QA8CnC,CAAC;AAMF,eAAO,MAAM,uBAAuB,EAAE,QAoFrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,QA+FtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,QA2FtC,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,QAoElC,CAAC;AAMF,eAAO,MAAM,wBAAwB,EAAE,QAyEtC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QA6CjC,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,QAmEhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAkEhC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QA+EjC,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAkB3C,CAAC"}
|