@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/daemonConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemonConfig.js","sourceRoot":"","sources":["../src/daemonConfig.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E;AAC/E,4EAA4E;AAC5E,wEAAwE;AACxE,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"daemonConfig.js","sourceRoot":"","sources":["../src/daemonConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decibelPaths.d.ts","sourceRoot":"","sources":["../src/decibelPaths.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"decibelPaths.d.ts","sourceRoot":"","sources":["../src/decibelPaths.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,YAAY,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAyCD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CA+BvB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,EAA6B,GAC9C,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAE,EAAE,CAAC,CAyD/D"}
|
package/dist/decibelPaths.js
CHANGED
|
@@ -14,13 +14,33 @@ import { log } from './config.js';
|
|
|
14
14
|
/**
|
|
15
15
|
* Check if a directory exists
|
|
16
16
|
*/
|
|
17
|
+
/**
|
|
18
|
+
* Does this directory exist — and say so only when we could actually tell.
|
|
19
|
+
*
|
|
20
|
+
* ISS-0153, second round. The readdir calls below were made to THROW on an
|
|
21
|
+
* unreadable store rather than return empty, and the fix was reported as
|
|
22
|
+
* landed. It never fired: every one of them sits behind this guard, and this
|
|
23
|
+
* guard caught everything. A store at chmod 000 makes stat() fail with EACCES
|
|
24
|
+
* on the directory INSIDE it, so `dirExists` answered false, the readdir was
|
|
25
|
+
* skipped, and the throw was unreachable. The result was the exact behaviour
|
|
26
|
+
* the fix was written to remove — "no issues" for a project whose issues could
|
|
27
|
+
* not be read — with the code that says otherwise sitting right there.
|
|
28
|
+
*
|
|
29
|
+
* ENOENT and ENOTDIR mean the directory genuinely is not there, which is what
|
|
30
|
+
* an untouched project looks like. Every other errno means it may well be
|
|
31
|
+
* there and this process cannot see it, and that is not an answer this
|
|
32
|
+
* function is entitled to give.
|
|
33
|
+
*/
|
|
17
34
|
async function dirExists(dirPath) {
|
|
18
35
|
try {
|
|
19
36
|
const stat = await fs.stat(dirPath);
|
|
20
37
|
return stat.isDirectory();
|
|
21
38
|
}
|
|
22
|
-
catch {
|
|
23
|
-
|
|
39
|
+
catch (err) {
|
|
40
|
+
const code = err.code;
|
|
41
|
+
if (code === 'ENOENT' || code === 'ENOTDIR')
|
|
42
|
+
return false;
|
|
43
|
+
throw new Error(`STORE_UNREADABLE: cannot stat ${dirPath} (${code ?? 'unknown'})`);
|
|
24
44
|
}
|
|
25
45
|
}
|
|
26
46
|
// ============================================================================
|
|
@@ -107,6 +127,17 @@ export async function readFilesFromBothPaths(projectId, subpath, extensions = ['
|
|
|
107
127
|
const paths = await resolveDecibelPaths(projectId, subpath);
|
|
108
128
|
const seen = new Set();
|
|
109
129
|
const results = [];
|
|
130
|
+
// ISS-0153: a directory that exists but cannot be opened is NOT an empty
|
|
131
|
+
// directory. Both reads below used to `catch { /* Directory read failed */ }`
|
|
132
|
+
// and return whatever had been collected — which, for an unreadable store,
|
|
133
|
+
// was nothing. Every caller then reported "no issues" for a project whose
|
|
134
|
+
// issues it simply could not see.
|
|
135
|
+
//
|
|
136
|
+
// These now THROW. "I could not look" is an exceptional condition, not an
|
|
137
|
+
// empty result, and letting it propagate turns it into a loud tool failure at
|
|
138
|
+
// no cost to the six call sites. Note the dirExists() guard above already
|
|
139
|
+
// handles the ordinary not-created-yet case, so reaching the readdir at all
|
|
140
|
+
// means the directory is really there.
|
|
110
141
|
// Read primary first (takes precedence)
|
|
111
142
|
if (await dirExists(paths.primary)) {
|
|
112
143
|
try {
|
|
@@ -121,8 +152,9 @@ export async function readFilesFromBothPaths(projectId, subpath, extensions = ['
|
|
|
121
152
|
}
|
|
122
153
|
}
|
|
123
154
|
}
|
|
124
|
-
catch {
|
|
125
|
-
|
|
155
|
+
catch (err) {
|
|
156
|
+
const code = err.code ?? 'unknown';
|
|
157
|
+
throw new Error(`STORE_UNREADABLE: cannot read ${paths.primary} (${code})`);
|
|
126
158
|
}
|
|
127
159
|
}
|
|
128
160
|
// Read legacy, skip duplicates
|
|
@@ -141,8 +173,9 @@ export async function readFilesFromBothPaths(projectId, subpath, extensions = ['
|
|
|
141
173
|
}
|
|
142
174
|
}
|
|
143
175
|
}
|
|
144
|
-
catch {
|
|
145
|
-
|
|
176
|
+
catch (err) {
|
|
177
|
+
const code = err.code ?? 'unknown';
|
|
178
|
+
throw new Error(`STORE_UNREADABLE: cannot read ${paths.legacy} (${code})`);
|
|
146
179
|
}
|
|
147
180
|
}
|
|
148
181
|
return results;
|
package/dist/decibelPaths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decibelPaths.js","sourceRoot":"","sources":["../src/decibelPaths.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;AAC/E,8EAA8E;AAC9E,uDAAuD;AACvD,+EAA+E;AAE/E,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAiBlC,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"decibelPaths.js","sourceRoot":"","sources":["../src/decibelPaths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The complete status vocabulary. Closed set — if a value is not here, it is
|
|
3
|
+
* not a status, and normalizeStatus decides what to do about it.
|
|
4
|
+
*/
|
|
5
|
+
export declare const ISSUE_STATUSES: readonly ["open", "in_progress", "blocked", "closed", "wontfix"];
|
|
6
|
+
export type IssueStatus = (typeof ISSUE_STATUSES)[number];
|
|
7
|
+
/** Statuses meaning "no longer needs work". Everything else is live. */
|
|
8
|
+
export declare const TERMINAL_STATUSES: ReadonlySet<IssueStatus>;
|
|
9
|
+
export declare function isTerminal(status: IssueStatus): boolean;
|
|
10
|
+
export declare function isLive(status: IssueStatus): boolean;
|
|
11
|
+
export interface NormalizedStatus {
|
|
12
|
+
status: IssueStatus;
|
|
13
|
+
/** Set when the raw value was not already canonical. */
|
|
14
|
+
normalizedFrom?: string;
|
|
15
|
+
/**
|
|
16
|
+
* True when the raw value matched nothing and the fallback was used. The
|
|
17
|
+
* caller decides whether that is a warning or a hard error; the model will
|
|
18
|
+
* not invent a meaning for a value it does not recognize.
|
|
19
|
+
*/
|
|
20
|
+
unrecognized?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Map any on-disk status to the canonical vocabulary.
|
|
24
|
+
*
|
|
25
|
+
* Missing status defaults to `open` — that matches the previous reader's
|
|
26
|
+
* behaviour and is the safe direction: a record wrongly shown as open gets
|
|
27
|
+
* triaged, whereas one wrongly shown as closed disappears.
|
|
28
|
+
*/
|
|
29
|
+
export declare function normalizeStatus(raw: unknown): NormalizedStatus;
|
|
30
|
+
export declare const ISSUE_SEVERITIES: readonly ["low", "med", "high", "critical"];
|
|
31
|
+
export type IssueSeverity = (typeof ISSUE_SEVERITIES)[number];
|
|
32
|
+
export declare const ISSUE_PRIORITIES: readonly ["low", "medium", "high", "critical"];
|
|
33
|
+
export type IssuePriority = (typeof ISSUE_PRIORITIES)[number];
|
|
34
|
+
export { newUid, isUid } from './uid.js';
|
|
35
|
+
/**
|
|
36
|
+
* One issue, as the rest of the system should think about it.
|
|
37
|
+
*
|
|
38
|
+
* Deliberately absent: file path, file format, frontmatter layout, and the
|
|
39
|
+
* `**Status:**` line that markdown records carry in their body. That line is a
|
|
40
|
+
* rendering of `status`, not a second copy of it — treating it as data is what
|
|
41
|
+
* let sixteen records drift into saying `open` while the tools read them as
|
|
42
|
+
* closed. The codec regenerates it on write; nothing else may touch it.
|
|
43
|
+
*/
|
|
44
|
+
export interface Issue {
|
|
45
|
+
/** Stable identity. Optional only until the backfill completes. */
|
|
46
|
+
uid?: string;
|
|
47
|
+
/** Human-facing label, e.g. ISS-0112. Renumberable; not identity. */
|
|
48
|
+
id: string;
|
|
49
|
+
title: string;
|
|
50
|
+
status: IssueStatus;
|
|
51
|
+
severity?: IssueSeverity;
|
|
52
|
+
priority?: IssuePriority;
|
|
53
|
+
tags?: string[];
|
|
54
|
+
epicId?: string;
|
|
55
|
+
project?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Who is working on this — EPIC-0040. A prefixed identity: `user:<uuid>`,
|
|
58
|
+
* `agent:<uuid>` or `human:<name>`. Never a team, and never a display name.
|
|
59
|
+
*
|
|
60
|
+
* Singular on purpose. Assigning to a group is what `team` expresses, and
|
|
61
|
+
* keeping this one person is what keeps a team a lens rather than an owner
|
|
62
|
+
* (ADR-0011).
|
|
63
|
+
*/
|
|
64
|
+
assignee?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Which team the work belongs to — EPIC-0040. Always `team:<uuid>`, minted
|
|
67
|
+
* by HQ. Not a slug: a slug would have to be migrated to a uuid later, and
|
|
68
|
+
* migrating identity is what this whole design exists to avoid.
|
|
69
|
+
*
|
|
70
|
+
* A lens, not a wall. Nothing is hidden from anyone by virtue of this field;
|
|
71
|
+
* it groups, filters and routes.
|
|
72
|
+
*/
|
|
73
|
+
team?: string;
|
|
74
|
+
/** Prose body: the markdown after the header block, or `description:`. */
|
|
75
|
+
details?: string;
|
|
76
|
+
resolution?: string;
|
|
77
|
+
created_at?: string;
|
|
78
|
+
updated_at?: string;
|
|
79
|
+
closed_at?: string;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=issue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../../src/domain/issue.ts"],"names":[],"mappings":"AA6BA;;;GAGG;AACH,eAAO,MAAM,cAAc,kEAMjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wEAAwE;AACxE,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,WAAW,CAGrD,CAAC;AAEH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnD;AA2BD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAmB9D;AAED,eAAO,MAAM,gBAAgB,6CAA8C,CAAC;AAC5E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,eAAO,MAAM,gBAAgB,gDAAiD,CAAC;AAC/E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAK9D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Canonical issue model — EPIC-0038 Phase 3
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// The one definition of what an issue IS, independent of how it is stored.
|
|
5
|
+
//
|
|
6
|
+
// Before this file there were three, and they disagreed:
|
|
7
|
+
//
|
|
8
|
+
// src/sentinelIssues.ts 'open' | 'in_progress' | 'done' | 'blocked'
|
|
9
|
+
// src/tools/sentinel.ts 'open' | 'in_progress' | 'blocked' | 'closed' | 'wontfix'
|
|
10
|
+
// src/store/types.ts both unions merged, plus 'done'
|
|
11
|
+
//
|
|
12
|
+
// No two agree. `update_issue` could write `done`, which the reader's type did
|
|
13
|
+
// not contain; `close_issue` wrote `closed`, which the updater's type did not
|
|
14
|
+
// contain. Neither was a type error, because status crossed the boundary as a
|
|
15
|
+
// bare string: buildIssueSummary read it with `typeof parsed.status === 'string'`
|
|
16
|
+
// and the list filter compared it with `!==`. An out-of-vocabulary value was
|
|
17
|
+
// therefore not rejected and not normalized — it was stored, returned, and
|
|
18
|
+
// matched by no query.
|
|
19
|
+
//
|
|
20
|
+
// ISS-0026 is the proof. It sits on disk with `status: resolved`, a value no
|
|
21
|
+
// writer in this codebase can produce and no filter can select. It is finished
|
|
22
|
+
// work that is invisible to `list_issues(status: 'open')` and equally invisible
|
|
23
|
+
// to `list_issues(status: 'closed')`.
|
|
24
|
+
//
|
|
25
|
+
// So the vocabulary is closed, and everything entering the model goes through
|
|
26
|
+
// normalizeStatus(). Unknown values are mapped or flagged, never passed through.
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* The complete status vocabulary. Closed set — if a value is not here, it is
|
|
30
|
+
* not a status, and normalizeStatus decides what to do about it.
|
|
31
|
+
*/
|
|
32
|
+
export const ISSUE_STATUSES = [
|
|
33
|
+
'open',
|
|
34
|
+
'in_progress',
|
|
35
|
+
'blocked',
|
|
36
|
+
'closed',
|
|
37
|
+
'wontfix',
|
|
38
|
+
];
|
|
39
|
+
/** Statuses meaning "no longer needs work". Everything else is live. */
|
|
40
|
+
export const TERMINAL_STATUSES = new Set([
|
|
41
|
+
'closed',
|
|
42
|
+
'wontfix',
|
|
43
|
+
]);
|
|
44
|
+
export function isTerminal(status) {
|
|
45
|
+
return TERMINAL_STATUSES.has(status);
|
|
46
|
+
}
|
|
47
|
+
export function isLive(status) {
|
|
48
|
+
return !isTerminal(status);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Values seen on disk that predate the closed vocabulary, and what they meant.
|
|
52
|
+
*
|
|
53
|
+
* `done` came from sentinelIssues.updateIssue, whose union had it. `resolved`
|
|
54
|
+
* came from a hand-edit or an older tool; ISS-0026 is the only instance. Both
|
|
55
|
+
* mean the work finished, so both map to `closed` — the mapping is recorded on
|
|
56
|
+
* the decoded record rather than applied silently, so a caller can tell the
|
|
57
|
+
* difference between a record that said `closed` and one that was interpreted.
|
|
58
|
+
*/
|
|
59
|
+
const STATUS_ALIASES = {
|
|
60
|
+
done: 'closed',
|
|
61
|
+
resolved: 'closed',
|
|
62
|
+
complete: 'closed',
|
|
63
|
+
completed: 'closed',
|
|
64
|
+
fixed: 'closed',
|
|
65
|
+
wont_fix: 'wontfix',
|
|
66
|
+
'wont-fix': 'wontfix',
|
|
67
|
+
duplicate: 'closed',
|
|
68
|
+
reopened: 'open',
|
|
69
|
+
todo: 'open',
|
|
70
|
+
new: 'open',
|
|
71
|
+
active: 'in_progress',
|
|
72
|
+
in_review: 'in_progress',
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Map any on-disk status to the canonical vocabulary.
|
|
76
|
+
*
|
|
77
|
+
* Missing status defaults to `open` — that matches the previous reader's
|
|
78
|
+
* behaviour and is the safe direction: a record wrongly shown as open gets
|
|
79
|
+
* triaged, whereas one wrongly shown as closed disappears.
|
|
80
|
+
*/
|
|
81
|
+
export function normalizeStatus(raw) {
|
|
82
|
+
if (typeof raw !== 'string' || raw.trim() === '') {
|
|
83
|
+
// Absent is not the same as wrong: a record with no status is defaulted
|
|
84
|
+
// quietly, while a record whose status is an empty string or a number is
|
|
85
|
+
// flagged, because something wrote that on purpose.
|
|
86
|
+
if (raw === undefined || raw === null)
|
|
87
|
+
return { status: 'open' };
|
|
88
|
+
return { status: 'open', normalizedFrom: String(raw), unrecognized: true };
|
|
89
|
+
}
|
|
90
|
+
const key = raw.trim().toLowerCase();
|
|
91
|
+
if (ISSUE_STATUSES.includes(key)) {
|
|
92
|
+
const status = key;
|
|
93
|
+
return key === raw ? { status } : { status, normalizedFrom: raw };
|
|
94
|
+
}
|
|
95
|
+
const aliased = STATUS_ALIASES[key];
|
|
96
|
+
if (aliased)
|
|
97
|
+
return { status: aliased, normalizedFrom: raw };
|
|
98
|
+
return { status: 'open', normalizedFrom: raw, unrecognized: true };
|
|
99
|
+
}
|
|
100
|
+
export const ISSUE_SEVERITIES = ['low', 'med', 'high', 'critical'];
|
|
101
|
+
export const ISSUE_PRIORITIES = ['low', 'medium', 'high', 'critical'];
|
|
102
|
+
// Identity moved to ./uid.js so ADRs and the projector can use it without
|
|
103
|
+
// importing an issue module. Re-exported because it has always been part of
|
|
104
|
+
// this module's surface.
|
|
105
|
+
export { newUid, isUid } from './uid.js';
|
|
106
|
+
//# sourceMappingURL=issue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.js","sourceRoot":"","sources":["../../src/domain/issue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Issue } from './issue.js';
|
|
2
|
+
export type IssueFormat = 'md' | 'yaml';
|
|
3
|
+
export interface DecodedIssue {
|
|
4
|
+
issue: Issue;
|
|
5
|
+
format: IssueFormat;
|
|
6
|
+
/**
|
|
7
|
+
* Everything needed to reconstruct the file byte-for-byte apart from the
|
|
8
|
+
* fields the model owns. Callers should treat this as opaque and pass it back
|
|
9
|
+
* to encodeIssue unchanged.
|
|
10
|
+
*/
|
|
11
|
+
raw: {
|
|
12
|
+
data: Record<string, unknown>;
|
|
13
|
+
body: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Non-fatal observations: a normalized status, an unrecognized value, a
|
|
17
|
+
* missing title. Surfaced so callers can report integrity problems rather
|
|
18
|
+
* than discovering them months later.
|
|
19
|
+
*/
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Split a bare-YAML record into its YAML head and any markdown tail at column 0.
|
|
24
|
+
*
|
|
25
|
+
* The column-0 anchor is load-bearing and must not gain `\s*`: headings indented
|
|
26
|
+
* inside a `description:` block scalar are body text, not a tail, and matching
|
|
27
|
+
* them would truncate the record at parse time. Phase 2 verified no record in
|
|
28
|
+
* the store relies on the difference, but nothing else pins it, so it is pinned
|
|
29
|
+
* by test here.
|
|
30
|
+
*/
|
|
31
|
+
export declare function splitBareYaml(content: string): {
|
|
32
|
+
head: string;
|
|
33
|
+
tail: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function decodeIssue(filename: string, content: string): DecodedIssue;
|
|
36
|
+
export declare function encodeIssue(decoded: DecodedIssue): string;
|
|
37
|
+
/** Apply changes to a decoded record, keeping derived state consistent. */
|
|
38
|
+
export declare function applyIssueChanges(decoded: DecodedIssue, changes: Partial<Issue>): DecodedIssue;
|
|
39
|
+
//# sourceMappingURL=issueCodec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issueCodec.d.ts","sourceRoot":"","sources":["../../src/domain/issueCodec.ts"],"names":[],"mappings":"AAyBA,OAAO,EACL,KAAK,EAKN,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK7E;AA8BD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAkH3E;AA0CD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAyDzD;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,CAE9F"}
|