@decibelsystems/tools 2.2.0-beta.0 → 3.1.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/CHANGELOG.md +226 -0
- package/dist/agentCommands.d.ts +0 -1
- package/dist/agentCommands.d.ts.map +1 -1
- package/dist/agentCommands.js +19 -8
- package/dist/agentCommands.js.map +1 -1
- package/dist/agentPresence.d.ts +82 -0
- package/dist/agentPresence.d.ts.map +1 -1
- package/dist/agentPresence.js +194 -26
- package/dist/agentPresence.js.map +1 -1
- package/dist/agentic/index.d.ts +18 -8
- package/dist/agentic/index.d.ts.map +1 -1
- package/dist/agentic/index.js +18 -144
- package/dist/agentic/index.js.map +1 -1
- package/dist/agentic/types.d.ts +106 -0
- package/dist/agentic/types.d.ts.map +1 -1
- package/dist/agentic/types.js +77 -1
- package/dist/agentic/types.js.map +1 -1
- package/dist/architectAdrs.d.ts +27 -3
- package/dist/architectAdrs.d.ts.map +1 -1
- package/dist/architectAdrs.js +92 -4
- package/dist/architectAdrs.js.map +1 -1
- package/dist/artifacts.d.ts +60 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +208 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/asks.d.ts +93 -0
- package/dist/asks.d.ts.map +1 -0
- package/dist/asks.js +383 -0
- package/dist/asks.js.map +1 -0
- package/dist/chat.d.ts +47 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +288 -0
- package/dist/chat.js.map +1 -0
- package/dist/client/transports.d.ts.map +1 -1
- package/dist/client/transports.js +13 -3
- package/dist/client/transports.js.map +1 -1
- package/dist/daemon.d.ts +33 -3
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +225 -52
- package/dist/daemon.js.map +1 -1
- package/dist/daemonConfig.d.ts +46 -0
- package/dist/daemonConfig.d.ts.map +1 -1
- package/dist/daemonConfig.js +57 -12
- package/dist/daemonConfig.js.map +1 -1
- package/dist/decibelPaths.d.ts.map +1 -1
- package/dist/decibelPaths.js +39 -6
- package/dist/decibelPaths.js.map +1 -1
- package/dist/domain/issue.d.ts +81 -0
- package/dist/domain/issue.d.ts.map +1 -0
- package/dist/domain/issue.js +106 -0
- package/dist/domain/issue.js.map +1 -0
- package/dist/domain/issueCodec.d.ts +39 -0
- package/dist/domain/issueCodec.d.ts.map +1 -0
- package/dist/domain/issueCodec.js +308 -0
- package/dist/domain/issueCodec.js.map +1 -0
- package/dist/domain/issueRepository.d.ts +124 -0
- package/dist/domain/issueRepository.d.ts.map +1 -0
- package/dist/domain/issueRepository.js +296 -0
- package/dist/domain/issueRepository.js.map +1 -0
- package/dist/domain/uid.d.ts +16 -0
- package/dist/domain/uid.d.ts.map +1 -0
- package/dist/domain/uid.js +43 -0
- package/dist/domain/uid.js.map +1 -0
- package/dist/facades/definitions.d.ts +0 -1
- package/dist/facades/definitions.d.ts.map +1 -1
- package/dist/facades/definitions.js +140 -116
- package/dist/facades/definitions.js.map +1 -1
- package/dist/facades/index.d.ts +2 -1
- package/dist/facades/index.d.ts.map +1 -1
- package/dist/facades/index.js +1 -1
- package/dist/facades/index.js.map +1 -1
- package/dist/facades/types.d.ts +17 -0
- package/dist/facades/types.d.ts.map +1 -1
- package/dist/hq/defineAgent.d.ts.map +1 -1
- package/dist/hq/defineAgent.js +7 -11
- package/dist/hq/defineAgent.js.map +1 -1
- package/dist/httpArgs.d.ts +11 -0
- package/dist/httpArgs.d.ts.map +1 -0
- package/dist/httpArgs.js +39 -0
- package/dist/httpArgs.js.map +1 -0
- package/dist/httpServer.d.ts +1 -12
- package/dist/httpServer.d.ts.map +1 -1
- package/dist/httpServer.js +298 -144
- package/dist/httpServer.js.map +1 -1
- package/dist/identity.d.ts +123 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +312 -0
- package/dist/identity.js.map +1 -0
- package/dist/kernel.d.ts +46 -1
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +334 -26
- package/dist/kernel.js.map +1 -1
- package/dist/killSwitch.d.ts +117 -0
- package/dist/killSwitch.d.ts.map +1 -0
- package/dist/killSwitch.js +161 -0
- package/dist/killSwitch.js.map +1 -0
- package/dist/lib/agent-services/assumptions.d.ts.map +1 -1
- package/dist/lib/agent-services/assumptions.js +8 -2
- package/dist/lib/agent-services/assumptions.js.map +1 -1
- package/dist/lib/atomicWrite.d.ts +49 -0
- package/dist/lib/atomicWrite.d.ts.map +1 -0
- package/dist/lib/atomicWrite.js +157 -0
- package/dist/lib/atomicWrite.js.map +1 -0
- package/dist/lib/envelope.d.ts +31 -0
- package/dist/lib/envelope.d.ts.map +1 -0
- package/dist/lib/envelope.js +80 -0
- package/dist/lib/envelope.js.map +1 -0
- package/dist/lib/fileLock.d.ts +38 -0
- package/dist/lib/fileLock.d.ts.map +1 -0
- package/dist/lib/fileLock.js +124 -0
- package/dist/lib/fileLock.js.map +1 -0
- package/dist/lib/recordIdAllocator.d.ts +102 -0
- package/dist/lib/recordIdAllocator.d.ts.map +1 -0
- package/dist/lib/recordIdAllocator.js +179 -0
- package/dist/lib/recordIdAllocator.js.map +1 -0
- package/dist/orgId.d.ts +23 -0
- package/dist/orgId.d.ts.map +1 -0
- package/dist/orgId.js +73 -0
- package/dist/orgId.js.map +1 -0
- package/dist/pairCli.d.ts +2 -0
- package/dist/pairCli.d.ts.map +1 -0
- package/dist/pairCli.js +97 -0
- package/dist/pairCli.js.map +1 -0
- package/dist/peerBroker.d.ts +40 -0
- package/dist/peerBroker.d.ts.map +1 -0
- package/dist/peerBroker.js +70 -0
- package/dist/peerBroker.js.map +1 -0
- package/dist/peerBrokerSupervisor.d.ts +21 -0
- package/dist/peerBrokerSupervisor.d.ts.map +1 -0
- package/dist/peerBrokerSupervisor.js +131 -0
- package/dist/peerBrokerSupervisor.js.map +1 -0
- package/dist/projectPaths.d.ts.map +1 -1
- package/dist/projectPaths.js +1 -19
- package/dist/projectPaths.js.map +1 -1
- package/dist/projectRegistry.d.ts +22 -0
- package/dist/projectRegistry.d.ts.map +1 -1
- package/dist/projectRegistry.js +69 -2
- package/dist/projectRegistry.js.map +1 -1
- package/dist/pty/boundary.d.ts +39 -0
- package/dist/pty/boundary.d.ts.map +1 -0
- package/dist/pty/boundary.js +100 -0
- package/dist/pty/boundary.js.map +1 -0
- package/dist/pty/errors.d.ts +6 -0
- package/dist/pty/errors.d.ts.map +1 -0
- package/dist/pty/errors.js +12 -0
- package/dist/pty/errors.js.map +1 -0
- package/dist/pty/fleet.d.ts +159 -0
- package/dist/pty/fleet.d.ts.map +1 -0
- package/dist/pty/fleet.js +543 -0
- package/dist/pty/fleet.js.map +1 -0
- package/dist/pty/launchProfile.d.ts +45 -0
- package/dist/pty/launchProfile.d.ts.map +1 -0
- package/dist/pty/launchProfile.js +149 -0
- package/dist/pty/launchProfile.js.map +1 -0
- package/dist/pty/openTerminal.d.ts +48 -0
- package/dist/pty/openTerminal.d.ts.map +1 -0
- package/dist/pty/openTerminal.js +185 -0
- package/dist/pty/openTerminal.js.map +1 -0
- package/dist/pty/pairDialog.d.ts +16 -0
- package/dist/pty/pairDialog.d.ts.map +1 -0
- package/dist/pty/pairDialog.js +121 -0
- package/dist/pty/pairDialog.js.map +1 -0
- package/dist/pty/pairing.d.ts +86 -0
- package/dist/pty/pairing.d.ts.map +1 -0
- package/dist/pty/pairing.js +351 -0
- package/dist/pty/pairing.js.map +1 -0
- package/dist/pty/routes.d.ts +49 -0
- package/dist/pty/routes.d.ts.map +1 -0
- package/dist/pty/routes.js +624 -0
- package/dist/pty/routes.js.map +1 -0
- package/dist/pty/sessions.d.ts +167 -0
- package/dist/pty/sessions.d.ts.map +1 -0
- package/dist/pty/sessions.js +513 -0
- package/dist/pty/sessions.js.map +1 -0
- package/dist/pty/tmux.d.ts +109 -0
- package/dist/pty/tmux.d.ts.map +1 -0
- package/dist/pty/tmux.js +271 -0
- package/dist/pty/tmux.js.map +1 -0
- package/dist/roster.d.ts +37 -0
- package/dist/roster.d.ts.map +1 -0
- package/dist/roster.js +126 -0
- package/dist/roster.js.map +1 -0
- package/dist/runtime/circuitBreaker.d.ts +95 -0
- package/dist/runtime/circuitBreaker.d.ts.map +1 -0
- package/dist/runtime/circuitBreaker.js +178 -0
- package/dist/runtime/circuitBreaker.js.map +1 -0
- package/dist/runtime/daemonMeta.d.ts +53 -0
- package/dist/runtime/daemonMeta.d.ts.map +1 -0
- package/dist/runtime/daemonMeta.js +121 -0
- package/dist/runtime/daemonMeta.js.map +1 -0
- package/dist/runtime/ensureRuntime.d.ts +103 -0
- package/dist/runtime/ensureRuntime.d.ts.map +1 -0
- package/dist/runtime/ensureRuntime.js +276 -0
- package/dist/runtime/ensureRuntime.js.map +1 -0
- package/dist/runtime/extensions.d.ts +57 -0
- package/dist/runtime/extensions.d.ts.map +1 -0
- package/dist/runtime/extensions.js +216 -0
- package/dist/runtime/extensions.js.map +1 -0
- package/dist/runtime/localHttp.d.ts +24 -0
- package/dist/runtime/localHttp.d.ts.map +1 -0
- package/dist/runtime/localHttp.js +84 -0
- package/dist/runtime/localHttp.js.map +1 -0
- package/dist/runtime/projectResolution.d.ts +29 -0
- package/dist/runtime/projectResolution.d.ts.map +1 -0
- package/dist/runtime/projectResolution.js +67 -0
- package/dist/runtime/projectResolution.js.map +1 -0
- package/dist/runtime/protocol.d.ts +62 -0
- package/dist/runtime/protocol.d.ts.map +1 -0
- package/dist/runtime/protocol.js +74 -0
- package/dist/runtime/protocol.js.map +1 -0
- package/dist/sentinelIssues.d.ts +42 -2
- package/dist/sentinelIssues.d.ts.map +1 -1
- package/dist/sentinelIssues.js +167 -65
- package/dist/sentinelIssues.js.map +1 -1
- package/dist/server.js +123 -15
- package/dist/server.js.map +1 -1
- package/dist/toolConfig.d.ts.map +1 -1
- package/dist/toolConfig.js +12 -0
- package/dist/toolConfig.js.map +1 -1
- package/dist/tools/agentic/agentQueue.d.ts.map +1 -1
- package/dist/tools/agentic/agentQueue.js +4 -0
- package/dist/tools/agentic/agentQueue.js.map +1 -1
- package/dist/tools/agentic/index.d.ts.map +1 -1
- package/dist/tools/agentic/index.js +28 -2
- package/dist/tools/agentic/index.js.map +1 -1
- package/dist/tools/architect/index.d.ts +1 -0
- package/dist/tools/architect/index.d.ts.map +1 -1
- package/dist/tools/architect/index.js +52 -3
- package/dist/tools/architect/index.js.map +1 -1
- package/dist/tools/architect.d.ts.map +1 -1
- package/dist/tools/architect.js +59 -8
- package/dist/tools/architect.js.map +1 -1
- package/dist/tools/artifacts.d.ts +5 -0
- package/dist/tools/artifacts.d.ts.map +1 -0
- package/dist/tools/artifacts.js +89 -0
- package/dist/tools/artifacts.js.map +1 -0
- package/dist/tools/asks.d.ts +6 -0
- package/dist/tools/asks.d.ts.map +1 -0
- package/dist/tools/asks.js +104 -0
- package/dist/tools/asks.js.map +1 -0
- package/dist/tools/context.d.ts +10 -5
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +45 -18
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/coordinator/coordinator.d.ts.map +1 -1
- package/dist/tools/coordinator/coordinator.js +48 -19
- package/dist/tools/coordinator/coordinator.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts +1 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +42 -2
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/crit.d.ts +2 -1
- package/dist/tools/crit.d.ts.map +1 -1
- package/dist/tools/crit.js +19 -4
- package/dist/tools/crit.js.map +1 -1
- package/dist/tools/data-inspector.d.ts +1 -1
- package/dist/tools/data-inspector.d.ts.map +1 -1
- package/dist/tools/data-inspector.js +1 -1
- package/dist/tools/data-inspector.js.map +1 -1
- package/dist/tools/designer/index.d.ts.map +1 -1
- package/dist/tools/designer/index.js +4 -3
- package/dist/tools/designer/index.js.map +1 -1
- package/dist/tools/designer/lateral-tools.d.ts.map +1 -1
- package/dist/tools/designer/lateral-tools.js +4 -2
- package/dist/tools/designer/lateral-tools.js.map +1 -1
- package/dist/tools/designer.d.ts +2 -1
- package/dist/tools/designer.d.ts.map +1 -1
- package/dist/tools/designer.js +24 -12
- package/dist/tools/designer.js.map +1 -1
- package/dist/tools/dojo/index.d.ts.map +1 -1
- package/dist/tools/dojo/index.js +52 -3
- package/dist/tools/dojo/index.js.map +1 -1
- package/dist/tools/dojo.d.ts +65 -3
- package/dist/tools/dojo.d.ts.map +1 -1
- package/dist/tools/dojo.js +148 -23
- package/dist/tools/dojo.js.map +1 -1
- package/dist/tools/friction.d.ts.map +1 -1
- package/dist/tools/friction.js +16 -6
- package/dist/tools/friction.js.map +1 -1
- package/dist/tools/guardian.d.ts +7 -0
- package/dist/tools/guardian.d.ts.map +1 -1
- package/dist/tools/guardian.js +152 -11
- package/dist/tools/guardian.js.map +1 -1
- package/dist/tools/hygiene/oracle-hygiene.d.ts.map +1 -1
- package/dist/tools/hygiene/oracle-hygiene.js +8 -2
- package/dist/tools/hygiene/oracle-hygiene.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +33 -18
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/killswitch/index.d.ts +13 -0
- package/dist/tools/killswitch/index.d.ts.map +1 -0
- package/dist/tools/killswitch/index.js +138 -0
- package/dist/tools/killswitch/index.js.map +1 -0
- package/dist/tools/learnings.d.ts +2 -1
- package/dist/tools/learnings.d.ts.map +1 -1
- package/dist/tools/learnings.js +31 -15
- package/dist/tools/learnings.js.map +1 -1
- package/dist/tools/oracle/index.d.ts.map +1 -1
- package/dist/tools/oracle/index.js +8 -0
- package/dist/tools/oracle/index.js.map +1 -1
- package/dist/tools/oracle.d.ts +7 -0
- package/dist/tools/oracle.d.ts.map +1 -1
- package/dist/tools/oracle.js +41 -12
- package/dist/tools/oracle.js.map +1 -1
- package/dist/tools/policy.d.ts +2 -1
- package/dist/tools/policy.d.ts.map +1 -1
- package/dist/tools/policy.js +28 -9
- package/dist/tools/policy.js.map +1 -1
- package/dist/tools/postoffice/index.d.ts +10 -0
- package/dist/tools/postoffice/index.d.ts.map +1 -0
- package/dist/tools/postoffice/index.js +218 -0
- package/dist/tools/postoffice/index.js.map +1 -0
- package/dist/tools/postoffice.d.ts +78 -0
- package/dist/tools/postoffice.d.ts.map +1 -0
- package/dist/tools/postoffice.js +199 -0
- package/dist/tools/postoffice.js.map +1 -0
- package/dist/tools/provenance.d.ts +18 -2
- package/dist/tools/provenance.d.ts.map +1 -1
- package/dist/tools/provenance.js +68 -40
- package/dist/tools/provenance.js.map +1 -1
- package/dist/tools/registry/index.d.ts.map +1 -1
- package/dist/tools/registry/index.js +24 -0
- package/dist/tools/registry/index.js.map +1 -1
- package/dist/tools/sentinel/index.d.ts +1 -0
- package/dist/tools/sentinel/index.d.ts.map +1 -1
- package/dist/tools/sentinel/index.js +142 -6
- package/dist/tools/sentinel/index.js.map +1 -1
- package/dist/tools/sentinel.d.ts +152 -1
- package/dist/tools/sentinel.d.ts.map +1 -1
- package/dist/tools/sentinel.js +609 -328
- package/dist/tools/sentinel.js.map +1 -1
- package/dist/tools/shared/index.d.ts +2 -1
- package/dist/tools/shared/index.d.ts.map +1 -1
- package/dist/tools/shared/index.js +2 -1
- package/dist/tools/shared/index.js.map +1 -1
- package/dist/tools/shared/response.d.ts +24 -0
- package/dist/tools/shared/response.d.ts.map +1 -1
- package/dist/tools/shared/response.js +61 -7
- package/dist/tools/shared/response.js.map +1 -1
- package/dist/tools/shared/runTracker.d.ts +2 -0
- package/dist/tools/shared/runTracker.d.ts.map +1 -1
- package/dist/tools/shared/runTracker.js +38 -0
- package/dist/tools/shared/runTracker.js.map +1 -1
- package/dist/tools/shared/storeRead.d.ts +153 -0
- package/dist/tools/shared/storeRead.d.ts.map +1 -0
- package/dist/tools/shared/storeRead.js +242 -0
- package/dist/tools/shared/storeRead.js.map +1 -0
- package/dist/tools/swarm.d.ts +3 -1
- package/dist/tools/swarm.d.ts.map +1 -1
- package/dist/tools/swarm.js +6 -12
- package/dist/tools/swarm.js.map +1 -1
- package/dist/tools/testSpec.d.ts +3 -2
- package/dist/tools/testSpec.d.ts.map +1 -1
- package/dist/tools/testSpec.js +51 -14
- package/dist/tools/testSpec.js.map +1 -1
- package/dist/tools/vector.d.ts +33 -1
- package/dist/tools/vector.d.ts.map +1 -1
- package/dist/tools/vector.js +31 -5
- package/dist/tools/vector.js.map +1 -1
- package/dist/tools/voice/index.d.ts +1 -0
- package/dist/tools/voice/index.d.ts.map +1 -1
- package/dist/tools/voice/index.js +33 -2
- package/dist/tools/voice/index.js.map +1 -1
- package/dist/tools/voice.d.ts +48 -1
- package/dist/tools/voice.d.ts.map +1 -1
- package/dist/tools/voice.js +63 -3
- package/dist/tools/voice.js.map +1 -1
- package/dist/tools/zoom/index.d.ts +15 -0
- package/dist/tools/zoom/index.d.ts.map +1 -0
- package/dist/tools/zoom/index.js +174 -0
- package/dist/tools/zoom/index.js.map +1 -0
- package/dist/tools/zoom.d.ts +234 -0
- package/dist/tools/zoom.d.ts.map +1 -0
- package/dist/tools/zoom.js +627 -0
- package/dist/tools/zoom.js.map +1 -0
- package/dist/transports/bridge.d.ts +1 -1
- package/dist/transports/bridge.d.ts.map +1 -1
- package/dist/transports/bridge.js +4 -1
- package/dist/transports/bridge.js.map +1 -1
- package/dist/transports/http.d.ts +1 -1
- package/dist/transports/http.d.ts.map +1 -1
- package/dist/transports/http.js +3 -1
- package/dist/transports/http.js.map +1 -1
- package/dist/transports/index.d.ts +1 -0
- package/dist/transports/index.d.ts.map +1 -1
- package/dist/transports/index.js +1 -0
- package/dist/transports/index.js.map +1 -1
- package/dist/transports/mcp.d.ts +1 -1
- package/dist/transports/mcp.d.ts.map +1 -1
- package/dist/transports/mcp.js +9 -4
- package/dist/transports/mcp.js.map +1 -1
- package/dist/transports/stdio.d.ts +1 -1
- package/dist/transports/stdio.d.ts.map +1 -1
- package/dist/transports/stdio.js +2 -0
- package/dist/transports/stdio.js.map +1 -1
- package/dist/transports/thinStdio.d.ts +22 -0
- package/dist/transports/thinStdio.d.ts.map +1 -0
- package/dist/transports/thinStdio.js +218 -0
- package/dist/transports/thinStdio.js.map +1 -0
- package/dist/transports/types.d.ts +8 -1
- package/dist/transports/types.d.ts.map +1 -1
- package/dist/types/agent-services.d.ts +7 -0
- package/dist/types/agent-services.d.ts.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/package.json +20 -4
- package/templates/AGENT.md +3 -0
- package/templates/CLAUDE-decibel.md +11 -0
- package/templates/com.decibel.daemon.plist +6 -1
- package/dist/tools/deck.d.ts +0 -11
- package/dist/tools/deck.d.ts.map +0 -1
- package/dist/tools/deck.js +0 -1656
- package/dist/tools/deck.js.map +0 -1
- package/dist/tools/mother.d.ts +0 -11
- package/dist/tools/mother.d.ts.map +0 -1
- package/dist/tools/mother.js +0 -503
- package/dist/tools/mother.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -3
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -189
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/senken.d.ts +0 -11
- package/dist/tools/senken.d.ts.map +0 -1
- package/dist/tools/senken.js +0 -482
- package/dist/tools/senken.js.map +0 -1
- package/dist/tools/terminal.d.ts +0 -17
- package/dist/tools/terminal.d.ts.map +0 -1
- package/dist/tools/terminal.js +0 -968
- package/dist/tools/terminal.js.map +0 -1
- package/dist/tools/toolsIndex.d.ts +0 -5
- package/dist/tools/toolsIndex.d.ts.map +0 -1
- package/dist/tools/toolsIndex.js +0 -37
- package/dist/tools/toolsIndex.js.map +0 -1
package/dist/kernel.js
CHANGED
|
@@ -11,13 +11,46 @@
|
|
|
11
11
|
import { EventEmitter } from 'events';
|
|
12
12
|
import { getAllTools } from './tools/index.js';
|
|
13
13
|
import { trackToolUse } from './tools/shared/index.js';
|
|
14
|
+
import { logToolEvent } from './tools/shared/runTracker.js';
|
|
14
15
|
import { log } from './config.js';
|
|
15
|
-
import { coreFacades, proFacades
|
|
16
|
+
import { coreFacades, proFacades } from './facades/definitions.js';
|
|
17
|
+
import { loadExtensions } from './runtime/extensions.js';
|
|
16
18
|
import { buildMcpDefinitions, validateFacades } from './facades/index.js';
|
|
17
19
|
import { getEnabledFacades } from './toolConfig.js';
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
import { CircuitBreakerRegistry } from './runtime/circuitBreaker.js';
|
|
21
|
+
import { withResolutionTracking, currentResolution } from './runtime/projectResolution.js';
|
|
22
|
+
import { resolveActingIdentity, withIdentity } from './identity.js';
|
|
23
|
+
// Tier gating (same logic as tools/index.ts).
|
|
24
|
+
//
|
|
25
|
+
// Fails CLOSED: opt in explicitly. The previous form OR'd in
|
|
26
|
+
// `NODE_ENV !== 'production'`, which is true whenever NODE_ENV is simply unset —
|
|
27
|
+
// the default for a plain `npx @decibelsystems/tools` install and for any client
|
|
28
|
+
// that spawns the server without a curated env (Claude Desktop, Cursor). That
|
|
29
|
+
// silently exposed every pro and apps facade, including `terminal` (reads
|
|
30
|
+
// DX_WALLET_PRIVATE_KEY) and the Postgres trading facades, to ordinary users.
|
|
31
|
+
const PRO_ENABLED = process.env.DECIBEL_PRO === '1';
|
|
32
|
+
// Heartbeat/poll reads: 18k of 18.3k run-log events were coord_status polls.
|
|
33
|
+
const POLLING_TOOLS = new Set(['coord_status', 'coord_heartbeat', 'coord_inbox']);
|
|
34
|
+
// Apps-tier facades are no longer env-gated. They arrive as extensions from the
|
|
35
|
+
// allowlist in ~/.decibel/config.yaml — see runtime/extensions.ts. DECIBEL_APPS
|
|
36
|
+
// was machine-dependent in the worst way: it lived in a launchd plist, so
|
|
37
|
+
// regenerating the plist dropped four facades with no error on any surface.
|
|
38
|
+
let lastExtensionLoad = null;
|
|
39
|
+
/**
|
|
40
|
+
* What the last createKernel() call loaded, and what it refused. Surfaced on
|
|
41
|
+
* /health so a rejected extension is visible without reading the daemon log.
|
|
42
|
+
*/
|
|
43
|
+
export function getExtensionDiagnostics() {
|
|
44
|
+
return {
|
|
45
|
+
loaded: (lastExtensionLoad?.extensions ?? []).map(e => ({
|
|
46
|
+
name: e.manifest.name,
|
|
47
|
+
version: e.manifest.version,
|
|
48
|
+
tier: e.manifest.tier,
|
|
49
|
+
facades: e.facades.map(f => f.name),
|
|
50
|
+
})),
|
|
51
|
+
rejected: lastExtensionLoad?.rejected ?? [],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
21
54
|
/**
|
|
22
55
|
* Coerce params that arrived as JSON strings but whose target tool's schema
|
|
23
56
|
* declares them as object or array. Facade MCP definitions expose only
|
|
@@ -65,18 +98,109 @@ export function coerceStringifiedParams(params, schema) {
|
|
|
65
98
|
}
|
|
66
99
|
return out ?? params;
|
|
67
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Tell the caller when the project it was served is not the project it asked
|
|
103
|
+
* for. Only fires when the resolver SUBSTITUTED one — a normal call is byte
|
|
104
|
+
* for byte unchanged, so this adds no noise to the ninety-nine percent case.
|
|
105
|
+
*
|
|
106
|
+
* The substitution is silent today by construction: strategy 7 returns a
|
|
107
|
+
* different id, and strategy 6 returns the requested id attached to a
|
|
108
|
+
* different path, so a caller comparing what it asked for against what it got
|
|
109
|
+
* cannot even detect the second one. HQ fans out across 34 projects; without
|
|
110
|
+
* this, a mistyped or unregistered id renders another project's issues under
|
|
111
|
+
* the requested project's name and nothing anywhere looks wrong.
|
|
112
|
+
*
|
|
113
|
+
* This does not change resolution — whether the forgiving strategies should
|
|
114
|
+
* apply to programmatic callers at all is a separate decision. It makes the
|
|
115
|
+
* outcome legible either way.
|
|
116
|
+
*/
|
|
117
|
+
function annotateResolution(result) {
|
|
118
|
+
const record = currentResolution();
|
|
119
|
+
if (!record || record.matched)
|
|
120
|
+
return result;
|
|
121
|
+
const text = result.content?.find((c) => c.type === 'text')?.text;
|
|
122
|
+
if (!text)
|
|
123
|
+
return result;
|
|
124
|
+
let payload;
|
|
125
|
+
try {
|
|
126
|
+
payload = JSON.parse(text);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return result; // Not JSON — leave it alone rather than mangling it.
|
|
130
|
+
}
|
|
131
|
+
if (typeof payload !== 'object' || payload === null || Array.isArray(payload)) {
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
const annotated = {
|
|
135
|
+
...payload,
|
|
136
|
+
project_resolution: {
|
|
137
|
+
requested: record.requested,
|
|
138
|
+
resolved: record.resolvedId,
|
|
139
|
+
strategy: record.strategy,
|
|
140
|
+
matched: false,
|
|
141
|
+
warning: `This result is for project "${record.resolvedId}", not "${record.requested}". ` +
|
|
142
|
+
'The requested project could not be resolved, so the runtime substituted one ' +
|
|
143
|
+
'discovered from its own environment. Treat this data as belonging to the ' +
|
|
144
|
+
'resolved project.',
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
...result,
|
|
149
|
+
content: [{ type: 'text', text: JSON.stringify(annotated, null, 2) }],
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Invoke a handler with project-resolution tracking, and annotate its result
|
|
154
|
+
* before the tracking scope closes. Annotating outside the scope reads an
|
|
155
|
+
* empty store — AsyncLocalStorage ends `run` when the callback settles, so the
|
|
156
|
+
* record is gone by the time the caller has the value in hand.
|
|
157
|
+
*/
|
|
158
|
+
function runTracked(tool, params) {
|
|
159
|
+
return withResolutionTracking(async () => annotateResolution(await tool.handler(params)));
|
|
160
|
+
}
|
|
161
|
+
/** Best-effort one-line reason from an `isError` result, for circuit reporting. */
|
|
162
|
+
function resultErrorText(result) {
|
|
163
|
+
const text = result.content?.find((c) => c.type === 'text')?.text;
|
|
164
|
+
if (!text)
|
|
165
|
+
return undefined;
|
|
166
|
+
try {
|
|
167
|
+
const parsed = JSON.parse(text);
|
|
168
|
+
if (typeof parsed.error === 'string')
|
|
169
|
+
return parsed.error;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Not JSON — fall through to the raw text.
|
|
173
|
+
}
|
|
174
|
+
return text.slice(0, 200);
|
|
175
|
+
}
|
|
68
176
|
/**
|
|
69
177
|
* Create the tool kernel. Call once at startup — both transports share it.
|
|
70
178
|
*/
|
|
71
179
|
export async function createKernel() {
|
|
72
180
|
const tools = await getAllTools();
|
|
73
181
|
const toolMap = new Map(tools.map(t => [t.definition.name, t]));
|
|
74
|
-
// Build facade registry
|
|
75
|
-
|
|
182
|
+
// Build facade registry: core, plus pro when licensed, plus whatever the
|
|
183
|
+
// extension allowlist yields.
|
|
184
|
+
const baseFacades = [
|
|
76
185
|
...coreFacades,
|
|
77
186
|
...(PRO_ENABLED ? proFacades : []),
|
|
78
|
-
...(APPS_ENABLED ? appFacades : []),
|
|
79
187
|
];
|
|
188
|
+
// Extensions register into this same toolMap and facade list, so dispatching
|
|
189
|
+
// to an extension facade takes exactly the path a core call takes — no second
|
|
190
|
+
// lookup, no parallel registry, nothing that can disagree with core.
|
|
191
|
+
//
|
|
192
|
+
// Fail closed by absence: a facade that was not allowlisted is never
|
|
193
|
+
// registered, so dispatch answers "unknown facade" rather than returning an
|
|
194
|
+
// empty result. That distinction matters more than it looks — an unregistered
|
|
195
|
+
// facade returning something zero-shaped is indistinguishable from a real
|
|
196
|
+
// empty answer, which is exactly how a broken voice inbox read as "0 messages"
|
|
197
|
+
// for five hours on 2026-09-01.
|
|
198
|
+
const loaded = await loadExtensions(new Set(baseFacades.map(f => f.name)));
|
|
199
|
+
lastExtensionLoad = loaded;
|
|
200
|
+
for (const tool of loaded.tools) {
|
|
201
|
+
toolMap.set(tool.definition.name, tool);
|
|
202
|
+
}
|
|
203
|
+
let facades = [...baseFacades, ...loaded.facades];
|
|
80
204
|
// DECIBEL_FACADES env var or config: restrict to only these facades
|
|
81
205
|
// Always include 'registry' so config tools remain accessible
|
|
82
206
|
const enabledFacades = getEnabledFacades();
|
|
@@ -116,17 +240,60 @@ export async function createKernel() {
|
|
|
116
240
|
// Register a no-op default so unsubscribed errors don't crash the process.
|
|
117
241
|
const emitter = new EventEmitter();
|
|
118
242
|
emitter.on('error', () => { });
|
|
119
|
-
//
|
|
243
|
+
// Per-facade circuit breaker. See src/runtime/circuitBreaker.ts for what
|
|
244
|
+
// counts as a fault and why `isError` alone is neither necessary nor
|
|
245
|
+
// sufficient.
|
|
246
|
+
const circuits = new CircuitBreakerRegistry();
|
|
247
|
+
/**
|
|
248
|
+
* Emit without letting a subscriber take the call down with it. Listeners
|
|
249
|
+
* run synchronously on the dispatch path — an SSE writer whose socket died
|
|
250
|
+
* mid-write, or a logging hook with a bad assumption, would otherwise throw
|
|
251
|
+
* straight out of a tool call that had already succeeded.
|
|
252
|
+
*/
|
|
253
|
+
function safeEmit(event, payload) {
|
|
254
|
+
try {
|
|
255
|
+
emitter.emit(event, payload);
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
log(`Kernel: dispatch listener for "${event}" threw — ${err instanceof Error ? err.message : String(err)}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/** The circuit a call belongs to: its facade, or the facade that owns the tool. */
|
|
262
|
+
function circuitKey(name) {
|
|
263
|
+
if (facadeMap.has(name))
|
|
264
|
+
return name;
|
|
265
|
+
return toolToFacade.get(name)?.name ?? name;
|
|
266
|
+
}
|
|
267
|
+
function circuitOpenResult(key, decision) {
|
|
268
|
+
return {
|
|
269
|
+
content: [{ type: 'text', text: JSON.stringify({
|
|
270
|
+
error: `Facade "${key}" is temporarily unavailable — circuit open after repeated failures`,
|
|
271
|
+
circuit_open: true,
|
|
272
|
+
facade: key,
|
|
273
|
+
retry_after_ms: decision.retryAfterMs,
|
|
274
|
+
opened_at: decision.openedAt,
|
|
275
|
+
last_error: decision.lastError,
|
|
276
|
+
hint: 'The facade\'s dependency (database, network service, or mount) is failing. Other facades are unaffected.',
|
|
277
|
+
}) }],
|
|
278
|
+
isError: true,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// Pre-build MCP definitions for each tier (cached). Keyed on transport too:
|
|
282
|
+
// an HTTP listing must not advertise a local-only facade it would then refuse
|
|
283
|
+
// to dispatch. Offering a tool and rejecting every call to it is a worse
|
|
284
|
+
// failure than not offering it — the caller reads the rejection as a bug.
|
|
120
285
|
const mcpDefCache = new Map();
|
|
121
|
-
function getMcpToolDefinitions(tier = 'full') {
|
|
122
|
-
|
|
286
|
+
function getMcpToolDefinitions(tier = 'full', opts = {}) {
|
|
287
|
+
const key = `${tier}:${opts.transport ?? 'stdio'}`;
|
|
288
|
+
let cached = mcpDefCache.get(key);
|
|
123
289
|
if (!cached) {
|
|
124
|
-
|
|
125
|
-
|
|
290
|
+
const visible = opts.transport === 'http' ? facades.filter(f => !f.localOnly) : facades;
|
|
291
|
+
cached = buildMcpDefinitions(visible, tier, toolMap);
|
|
292
|
+
mcpDefCache.set(key, cached);
|
|
126
293
|
}
|
|
127
294
|
return cached;
|
|
128
295
|
}
|
|
129
|
-
async function
|
|
296
|
+
async function dispatchInner(name, args, context) {
|
|
130
297
|
const agentId = context?.agentId || 'anonymous';
|
|
131
298
|
const runId = context?.runId;
|
|
132
299
|
const requestId = context?.requestId;
|
|
@@ -146,6 +313,27 @@ export async function createKernel() {
|
|
|
146
313
|
};
|
|
147
314
|
}
|
|
148
315
|
}
|
|
316
|
+
// Local-only enforcement: a facade whose blast radius exceeds the caller's
|
|
317
|
+
// own project never leaves the local machine, whatever the tier says.
|
|
318
|
+
// Checked BEFORE tier, because a licensed pro caller over HTTP is exactly
|
|
319
|
+
// the case tier gating would wave through.
|
|
320
|
+
if (context?.transport === 'http') {
|
|
321
|
+
const localFacade = facadeMap.get(name) ?? (() => {
|
|
322
|
+
const owner = toolToFacade.get(name);
|
|
323
|
+
return owner ? facadeMap.get(owner.name) : undefined;
|
|
324
|
+
})();
|
|
325
|
+
if (localFacade?.localOnly) {
|
|
326
|
+
return {
|
|
327
|
+
content: [{ type: 'text', text: JSON.stringify({
|
|
328
|
+
error: `Facade "${localFacade.name}" is local-only and is not served over HTTP`,
|
|
329
|
+
facade: localFacade.name,
|
|
330
|
+
transport: 'http',
|
|
331
|
+
hint: 'Call it from a local stdio client. This facade reaches credentials whose scope is wider than one project, so it is not exposed on a network bind.',
|
|
332
|
+
}) }],
|
|
333
|
+
isError: true,
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
}
|
|
149
337
|
// Tier enforcement: reject pro/apps facade calls from core-tier callers
|
|
150
338
|
if (context?.tier === 'core') {
|
|
151
339
|
const targetFacade = facadeMap.get(name);
|
|
@@ -226,26 +414,53 @@ export async function createKernel() {
|
|
|
226
414
|
const params = coerceStringifiedParams(merged, tool.definition.inputSchema);
|
|
227
415
|
log(`Kernel: facade ${name}.${action} → ${internalName} (agent=${agentId}${runId ? ` run=${runId}` : ''})`);
|
|
228
416
|
trackToolUse(internalName);
|
|
417
|
+
const breaker = circuits.beforeCall(name);
|
|
418
|
+
if (!breaker.allowed) {
|
|
419
|
+
safeEmit('error', {
|
|
420
|
+
type: 'error', facade: name, action, tool: internalName,
|
|
421
|
+
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
422
|
+
duration_ms: 0,
|
|
423
|
+
error: `circuit open for facade "${name}"`,
|
|
424
|
+
});
|
|
425
|
+
return circuitOpenResult(name, breaker);
|
|
426
|
+
}
|
|
229
427
|
const startTime = Date.now();
|
|
230
|
-
|
|
428
|
+
safeEmit('dispatch', {
|
|
231
429
|
type: 'dispatch', facade: name, action, tool: internalName,
|
|
232
430
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
233
431
|
});
|
|
234
432
|
try {
|
|
235
|
-
const result = await tool
|
|
236
|
-
|
|
433
|
+
const result = await runTracked(tool, params);
|
|
434
|
+
// Read telemetry: write tools wrap themselves with withRunTracking; reads
|
|
435
|
+
// (readOnlyHint) were invisible, so the run log could not show that an
|
|
436
|
+
// agent consulted the project memory. Polling tools stay excluded.
|
|
437
|
+
if (!result.isError && tool.definition.annotations?.readOnlyHint && !POLLING_TOOLS.has(internalName)) {
|
|
438
|
+
const pid = params.projectId;
|
|
439
|
+
if (pid)
|
|
440
|
+
logToolEvent(pid, internalName, 'success', `${internalName} read`).catch(() => { });
|
|
441
|
+
}
|
|
442
|
+
const duration = Date.now() - startTime;
|
|
443
|
+
circuits.afterCall(name, {
|
|
444
|
+
threw: false,
|
|
445
|
+
isError: !!result.isError,
|
|
446
|
+
durationMs: duration,
|
|
447
|
+
error: result.isError ? resultErrorText(result) : undefined,
|
|
448
|
+
});
|
|
449
|
+
safeEmit('result', {
|
|
237
450
|
type: 'result', facade: name, action, tool: internalName,
|
|
238
451
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
239
|
-
duration_ms:
|
|
452
|
+
duration_ms: duration, success: !result.isError,
|
|
240
453
|
});
|
|
241
454
|
return result;
|
|
242
455
|
}
|
|
243
456
|
catch (err) {
|
|
244
457
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
245
|
-
|
|
458
|
+
const duration = Date.now() - startTime;
|
|
459
|
+
circuits.afterCall(name, { threw: true, isError: true, durationMs: duration, error: errMsg });
|
|
460
|
+
safeEmit('error', {
|
|
246
461
|
type: 'error', facade: name, action, tool: internalName,
|
|
247
462
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
248
|
-
duration_ms:
|
|
463
|
+
duration_ms: duration,
|
|
249
464
|
error: errMsg,
|
|
250
465
|
});
|
|
251
466
|
return {
|
|
@@ -270,32 +485,103 @@ export async function createKernel() {
|
|
|
270
485
|
log(`Kernel: dispatch ${name} (agent=${agentId}${runId ? ` run=${runId}` : ''})`);
|
|
271
486
|
trackToolUse(name);
|
|
272
487
|
const directParams = coerceStringifiedParams(args, tool.definition.inputSchema);
|
|
488
|
+
// Direct tool calls share the circuit of the facade that owns the tool —
|
|
489
|
+
// `senken_trade_summary` and `senken.trade_summary` reach the same pool.
|
|
490
|
+
const key = circuitKey(name);
|
|
491
|
+
const breaker = circuits.beforeCall(key);
|
|
492
|
+
if (!breaker.allowed) {
|
|
493
|
+
safeEmit('error', {
|
|
494
|
+
type: 'error', tool: name,
|
|
495
|
+
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
496
|
+
duration_ms: 0,
|
|
497
|
+
error: `circuit open for facade "${key}"`,
|
|
498
|
+
});
|
|
499
|
+
return circuitOpenResult(key, breaker);
|
|
500
|
+
}
|
|
273
501
|
const startTime = Date.now();
|
|
274
|
-
|
|
502
|
+
safeEmit('dispatch', {
|
|
275
503
|
type: 'dispatch', tool: name,
|
|
276
504
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
277
505
|
});
|
|
278
506
|
try {
|
|
279
|
-
const result = await tool
|
|
280
|
-
|
|
507
|
+
const result = await runTracked(tool, directParams);
|
|
508
|
+
const duration = Date.now() - startTime;
|
|
509
|
+
circuits.afterCall(key, {
|
|
510
|
+
threw: false,
|
|
511
|
+
isError: !!result.isError,
|
|
512
|
+
durationMs: duration,
|
|
513
|
+
error: result.isError ? resultErrorText(result) : undefined,
|
|
514
|
+
});
|
|
515
|
+
safeEmit('result', {
|
|
281
516
|
type: 'result', tool: name,
|
|
282
517
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
283
|
-
duration_ms:
|
|
518
|
+
duration_ms: duration, success: !result.isError,
|
|
284
519
|
});
|
|
285
520
|
return result;
|
|
286
521
|
}
|
|
287
522
|
catch (err) {
|
|
288
523
|
const errMsg = err instanceof Error ? err.message : String(err);
|
|
289
|
-
|
|
524
|
+
const duration = Date.now() - startTime;
|
|
525
|
+
circuits.afterCall(key, { threw: true, isError: true, durationMs: duration, error: errMsg });
|
|
526
|
+
safeEmit('error', {
|
|
290
527
|
type: 'error', tool: name,
|
|
291
528
|
agentId, runId, requestId, timestamp: new Date().toISOString(),
|
|
292
|
-
duration_ms:
|
|
529
|
+
duration_ms: duration,
|
|
530
|
+
error: errMsg,
|
|
531
|
+
});
|
|
532
|
+
return {
|
|
533
|
+
content: [{ type: 'text', text: JSON.stringify({
|
|
534
|
+
error: errMsg,
|
|
535
|
+
tool: name,
|
|
536
|
+
}) }],
|
|
537
|
+
isError: true,
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* The isolation boundary. Every failure a facade can produce becomes a
|
|
543
|
+
* `ToolResult`, never a rejected promise: the inner dispatch already handles
|
|
544
|
+
* a throwing *handler*, but the code around it can fail too — a malformed
|
|
545
|
+
* schema in `coerceStringifiedParams`, an unexpected shape in facade
|
|
546
|
+
* resolution, an out-of-memory string build. Whatever escapes, one facade's
|
|
547
|
+
* fault must not take down a runtime that six clients share.
|
|
548
|
+
*
|
|
549
|
+
* The transports depend on this: `server.ts` and `httpServer.ts` turn a
|
|
550
|
+
* rejected dispatch into a transport-level error, which for stdio means the
|
|
551
|
+
* MCP client sees a protocol fault rather than a tool that failed.
|
|
552
|
+
*/
|
|
553
|
+
async function dispatch(name, args, context) {
|
|
554
|
+
try {
|
|
555
|
+
// Open the acting-identity scope for the whole dispatch — EPIC-0040.
|
|
556
|
+
//
|
|
557
|
+
// Here rather than inside runTracked because this is the one place both
|
|
558
|
+
// paths pass through (the facade route and the direct-tool route both
|
|
559
|
+
// live in dispatchInner) AND the context is still in hand. runTracked
|
|
560
|
+
// has the handler but not the caller.
|
|
561
|
+
//
|
|
562
|
+
// resolveActingIdentity cannot throw: a malformed token degrades to the
|
|
563
|
+
// local identity rather than failing the call, because attribution is
|
|
564
|
+
// never worth losing a write over.
|
|
565
|
+
const identity = resolveActingIdentity(context);
|
|
566
|
+
return await withIdentity(identity, () => dispatchInner(name, args, context));
|
|
567
|
+
}
|
|
568
|
+
catch (err) {
|
|
569
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
570
|
+
log(`Kernel: dispatch of "${name}" failed outside the handler — ${errMsg}`);
|
|
571
|
+
circuits.recordFault(circuitKey(name), errMsg);
|
|
572
|
+
safeEmit('error', {
|
|
573
|
+
type: 'error', tool: name,
|
|
574
|
+
agentId: context?.agentId || 'anonymous',
|
|
575
|
+
runId: context?.runId,
|
|
576
|
+
requestId: context?.requestId,
|
|
577
|
+
timestamp: new Date().toISOString(),
|
|
293
578
|
error: errMsg,
|
|
294
579
|
});
|
|
295
580
|
return {
|
|
296
581
|
content: [{ type: 'text', text: JSON.stringify({
|
|
297
582
|
error: errMsg,
|
|
298
583
|
tool: name,
|
|
584
|
+
dispatch_fault: true,
|
|
299
585
|
}) }],
|
|
300
586
|
isError: true,
|
|
301
587
|
};
|
|
@@ -305,6 +591,22 @@ export async function createKernel() {
|
|
|
305
591
|
log(`Kernel: batch dispatch — ${calls.length} calls (agent=${context?.agentId || 'anonymous'})`);
|
|
306
592
|
const promises = calls.map(async (call) => {
|
|
307
593
|
const start = Date.now();
|
|
594
|
+
// Structural check before dispatch. Without it an unknown facade came
|
|
595
|
+
// back as a text node saying "Unknown tool: x" inside an otherwise
|
|
596
|
+
// successful-looking result, so a caller reading the envelope saw
|
|
597
|
+
// success for a facade that does not exist on this machine. That matters
|
|
598
|
+
// more since Phase 7 made the registered set machine-dependent: a missing
|
|
599
|
+
// extension MUST NOT be indistinguishable from an empty answer.
|
|
600
|
+
// Raw tool names are accepted here too, because dispatch accepts them.
|
|
601
|
+
if (!facadeMap.has(call.facade) && !toolMap.has(call.facade)) {
|
|
602
|
+
return {
|
|
603
|
+
facade: call.facade,
|
|
604
|
+
action: call.action,
|
|
605
|
+
error: `Unknown facade: ${call.facade}`,
|
|
606
|
+
code: 'UNKNOWN_FACADE',
|
|
607
|
+
duration_ms: Date.now() - start,
|
|
608
|
+
};
|
|
609
|
+
}
|
|
308
610
|
try {
|
|
309
611
|
const result = await dispatch(call.facade, { action: call.action, ...(call.params || {}) }, context);
|
|
310
612
|
return {
|
|
@@ -335,7 +637,13 @@ export async function createKernel() {
|
|
|
335
637
|
on: (event, listener) => emitter.on(event, listener),
|
|
336
638
|
off: (event, listener) => emitter.off(event, listener),
|
|
337
639
|
getMcpToolDefinitions,
|
|
338
|
-
|
|
640
|
+
circuitSnapshot: () => circuits.snapshot(),
|
|
641
|
+
resetCircuit: (key) => circuits.reset(key),
|
|
642
|
+
// toolMap, not `tools` — extension tools are merged into the map after
|
|
643
|
+
// getAllTools() returns, so counting the array would under-report by
|
|
644
|
+
// exactly the private tools and make /health disagree with what dispatch
|
|
645
|
+
// can actually reach.
|
|
646
|
+
toolCount: toolMap.size,
|
|
339
647
|
facadeCount: facades.length,
|
|
340
648
|
};
|
|
341
649
|
}
|
package/dist/kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The kill switch — one durable STOP for unattended work (ISS-0178).
|
|
3
|
+
*
|
|
4
|
+
* WHAT IT STOPS, AND WHAT IT DELIBERATELY DOES NOT. The metaphor is a machine
|
|
5
|
+
* tool's big red button: it halts the automation, it does not power down the
|
|
6
|
+
* panel. Unattended work — the agentic queue replaying remote writes, the dojo
|
|
7
|
+
* experiment runner spawning a script — refuses while stopped. Interactive
|
|
8
|
+
* calls keep working on purpose, because the first thing anyone does after
|
|
9
|
+
* hitting stop is ask what went wrong, and that takes sentinel, oracle and this
|
|
10
|
+
* module itself.
|
|
11
|
+
*
|
|
12
|
+
* THE SAFETY INVARIANT. You can never stop yourself out of resuming. That holds
|
|
13
|
+
* BY CONSTRUCTION rather than by an exception list: nothing in this file gates
|
|
14
|
+
* itself, and enforcement lives at the call sites of the work being stopped.
|
|
15
|
+
* There is no path where `resume` consults the flag it is trying to clear.
|
|
16
|
+
*
|
|
17
|
+
* WHY A FILE, AND WHY THIS FILE. State lives at ~/.decibel/killswitch.json:
|
|
18
|
+
*
|
|
19
|
+
* - machine-global, because a button on a desk is machine-global. Stopping
|
|
20
|
+
* "the project you happen to be in" is not what a red button means.
|
|
21
|
+
* - a file, so it survives a daemon restart, a crash, and a reboot. A stop
|
|
22
|
+
* that forgets itself is worse than no stop, because it teaches people the
|
|
23
|
+
* switch is unreliable.
|
|
24
|
+
* - plain JSON with no schema tricks, so a process that is not this one — a
|
|
25
|
+
* shell script, a microcontroller, a future physical button — can read and
|
|
26
|
+
* write it without linking anything.
|
|
27
|
+
*
|
|
28
|
+
* WHAT IT IS NOT. It is not a security control. Anything that can write to
|
|
29
|
+
* ~/.decibel can clear it. It is an operational brake for work you started, in
|
|
30
|
+
* the same spirit as the daemon's own PID file.
|
|
31
|
+
*/
|
|
32
|
+
/** Machine-global, deliberately — see the header. */
|
|
33
|
+
export declare const KILL_SWITCH_PATH: string;
|
|
34
|
+
export interface KillSwitchState {
|
|
35
|
+
/** The only field a reader strictly needs. */
|
|
36
|
+
stopped: boolean;
|
|
37
|
+
/** Why, when stated. A button has no keyboard, so this is optional by design. */
|
|
38
|
+
reason?: string;
|
|
39
|
+
/** Who pressed it: an agent id, a person, or 'button' for the physical one. */
|
|
40
|
+
actor?: string;
|
|
41
|
+
/** ISO timestamp of the stop that is currently in force. */
|
|
42
|
+
stopped_at?: string;
|
|
43
|
+
/** Free-form origin, e.g. 'mcp', 'http', 'device'. Useful when a stop surprises someone. */
|
|
44
|
+
source?: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Read the current state, treating every failure as RUNNING.
|
|
48
|
+
*
|
|
49
|
+
* FAIL-OPEN IS THE RIGHT CHOICE HERE and it is worth saying why, because the
|
|
50
|
+
* opposite is defensible and wrong for this case. A corrupt or unreadable
|
|
51
|
+
* killswitch file would, under fail-closed, halt all unattended work on the
|
|
52
|
+
* machine with no way to diagnose it except editing the very file that is
|
|
53
|
+
* broken — a brake that jams on is worse than one that does not engage. The
|
|
54
|
+
* stop is an operational convenience, not a safety interlock, and it says so in
|
|
55
|
+
* the header.
|
|
56
|
+
*
|
|
57
|
+
* Note this is the one place the module is deliberately quiet: a missing file
|
|
58
|
+
* is the overwhelmingly common case (nobody has ever pressed stop) and must not
|
|
59
|
+
* be noise.
|
|
60
|
+
*/
|
|
61
|
+
export declare function readKillSwitch(): KillSwitchState;
|
|
62
|
+
/** True when unattended work should refuse. */
|
|
63
|
+
export declare function isStopped(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Engage the stop. Idempotent: a second press reports the FIRST stop rather
|
|
66
|
+
* than overwriting it, because a button will be pressed twice and the original
|
|
67
|
+
* reason and time are the ones worth keeping.
|
|
68
|
+
*
|
|
69
|
+
* @returns the state now in force, and whether this call is what engaged it
|
|
70
|
+
*/
|
|
71
|
+
export declare function engageStop(opts?: {
|
|
72
|
+
reason?: string;
|
|
73
|
+
actor?: string;
|
|
74
|
+
source?: string;
|
|
75
|
+
}): {
|
|
76
|
+
state: KillSwitchState;
|
|
77
|
+
already: boolean;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Release the stop. Idempotent, and never gated — see the safety invariant.
|
|
81
|
+
*
|
|
82
|
+
* @returns the state that was cleared, when there was one
|
|
83
|
+
*/
|
|
84
|
+
export declare function releaseStop(): {
|
|
85
|
+
released: KillSwitchState | null;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Thrown at the gate. Carries the stop's own reason and time so the refusal can
|
|
89
|
+
* say WHY work stopped rather than merely that it did — the difference between
|
|
90
|
+
* a legible brake and a mystery.
|
|
91
|
+
*/
|
|
92
|
+
export declare class KillSwitchEngagedError extends Error {
|
|
93
|
+
readonly code = "KILL_SWITCH_ENGAGED";
|
|
94
|
+
readonly state: KillSwitchState;
|
|
95
|
+
constructor(operation: string, state: KillSwitchState);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The gate. Call at the top of anything that runs without someone watching.
|
|
99
|
+
*
|
|
100
|
+
* Takes the operation name so the refusal names what it refused — "agentic
|
|
101
|
+
* queue replay" is actionable, "operation failed" is not.
|
|
102
|
+
*/
|
|
103
|
+
export declare function assertRunnable(operation: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Non-throwing form of {@link assertRunnable}, for call sites whose contract is
|
|
106
|
+
* to RETURN an error rather than throw one.
|
|
107
|
+
*
|
|
108
|
+
* Both forms exist deliberately. `assertRunnable` suits functions that already
|
|
109
|
+
* throw (agentQueueSync throws for unconfigured Supabase, so a throw is in
|
|
110
|
+
* keeping); this suits functions that declare `Promise<Output | SomeError>`,
|
|
111
|
+
* where throwing would be a lie about the signature and would behave
|
|
112
|
+
* differently when called directly than when called through a handler that
|
|
113
|
+
* catches. That divergence between the direct and dispatched path is a bug
|
|
114
|
+
* shape this repo has been bitten by more than once.
|
|
115
|
+
*/
|
|
116
|
+
export declare function checkRunnable(operation: string): KillSwitchEngagedError | null;
|
|
117
|
+
//# sourceMappingURL=killSwitch.d.ts.map
|