@cleocode/core 2026.3.74 → 2026.4.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/README.md +1 -1
- package/dist/agents/agent-schema.d.ts.map +1 -1
- package/dist/agents/retry.js +26 -21
- package/dist/agents/retry.js.map +1 -1
- package/dist/cant/approval.d.ts +110 -0
- package/dist/cant/approval.d.ts.map +1 -0
- package/dist/cant/approval.js +185 -0
- package/dist/cant/approval.js.map +1 -0
- package/dist/cant/context-builder.d.ts +79 -0
- package/dist/cant/context-builder.d.ts.map +1 -0
- package/dist/cant/context-builder.js +117 -0
- package/dist/cant/context-builder.js.map +1 -0
- package/dist/cant/discretion.d.ts +95 -0
- package/dist/cant/discretion.d.ts.map +1 -0
- package/dist/cant/discretion.js +116 -0
- package/dist/cant/discretion.js.map +1 -0
- package/dist/cant/index.d.ts +25 -0
- package/dist/cant/index.d.ts.map +1 -0
- package/dist/cant/index.js +23 -0
- package/dist/cant/index.js.map +1 -0
- package/dist/cant/parallel-runner.d.ts +38 -0
- package/dist/cant/parallel-runner.d.ts.map +1 -0
- package/dist/cant/parallel-runner.js +173 -0
- package/dist/cant/parallel-runner.js.map +1 -0
- package/dist/cant/types.d.ts +127 -0
- package/dist/cant/types.d.ts.map +1 -0
- package/dist/cant/types.js +11 -0
- package/dist/cant/types.js.map +1 -0
- package/dist/cant/workflow-executor.d.ts +105 -0
- package/dist/cant/workflow-executor.d.ts.map +1 -0
- package/dist/cant/workflow-executor.js +440 -0
- package/dist/cant/workflow-executor.js.map +1 -0
- package/dist/cleo.js +21 -1
- package/dist/cleo.js.map +1 -1
- package/dist/code/index.d.ts +10 -0
- package/dist/code/index.d.ts.map +1 -0
- package/dist/code/outline.d.ts +51 -0
- package/dist/code/outline.d.ts.map +1 -0
- package/dist/code/parser.d.ts +30 -0
- package/dist/code/parser.d.ts.map +1 -0
- package/dist/code/search.d.ts +42 -0
- package/dist/code/search.d.ts.map +1 -0
- package/dist/code/unfold.d.ts +44 -0
- package/dist/code/unfold.d.ts.map +1 -0
- package/dist/conduit/conduit-client.d.ts +35 -0
- package/dist/conduit/conduit-client.d.ts.map +1 -0
- package/dist/conduit/conduit-client.js +94 -0
- package/dist/conduit/conduit-client.js.map +1 -0
- package/dist/conduit/factory.d.ts +15 -0
- package/dist/conduit/factory.d.ts.map +1 -0
- package/dist/conduit/factory.js +35 -0
- package/dist/conduit/factory.js.map +1 -0
- package/dist/conduit/http-transport.d.ts +44 -0
- package/dist/conduit/http-transport.d.ts.map +1 -0
- package/dist/conduit/http-transport.js +165 -0
- package/dist/conduit/http-transport.js.map +1 -0
- package/dist/conduit/index.d.ts +15 -0
- package/dist/conduit/index.d.ts.map +1 -0
- package/dist/conduit/index.js +12 -0
- package/dist/conduit/index.js.map +1 -0
- package/dist/conduit/local-transport.d.ts +91 -0
- package/dist/conduit/local-transport.d.ts.map +1 -0
- package/dist/conduit/sse-transport.d.ts +68 -0
- package/dist/conduit/sse-transport.d.ts.map +1 -0
- package/dist/config.js +4 -3
- package/dist/config.js.map +1 -1
- package/dist/crypto/credentials.d.ts +40 -0
- package/dist/crypto/credentials.d.ts.map +1 -0
- package/dist/crypto/credentials.js +144 -0
- package/dist/crypto/credentials.js.map +1 -0
- package/dist/engine-result.d.ts +1 -1
- package/dist/engine-result.d.ts.map +1 -1
- package/dist/error-catalog.d.ts +1 -1
- package/dist/error-catalog.d.ts.map +1 -1
- package/dist/error-registry.d.ts +1 -1
- package/dist/error-registry.d.ts.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/hooks/handlers/agent-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/agent-hooks.js +106 -0
- package/dist/hooks/handlers/agent-hooks.js.map +1 -0
- package/dist/hooks/handlers/context-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/context-hooks.js +111 -0
- package/dist/hooks/handlers/context-hooks.js.map +1 -0
- package/dist/hooks/handlers/error-hooks.d.ts +14 -5
- package/dist/hooks/handlers/error-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/error-hooks.js +15 -6
- package/dist/hooks/handlers/error-hooks.js.map +1 -1
- package/dist/hooks/handlers/file-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/file-hooks.js +35 -11
- package/dist/hooks/handlers/file-hooks.js.map +1 -1
- package/dist/hooks/handlers/handler-helpers.d.ts +41 -0
- package/dist/hooks/handlers/handler-helpers.d.ts.map +1 -0
- package/dist/hooks/handlers/handler-helpers.js +61 -0
- package/dist/hooks/handlers/handler-helpers.js.map +1 -0
- package/dist/hooks/handlers/index.js +10 -1
- package/dist/hooks/handlers/index.js.map +1 -1
- package/dist/hooks/handlers/mcp-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/mcp-hooks.js +88 -21
- package/dist/hooks/handlers/mcp-hooks.js.map +1 -1
- package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/session-hooks.js +5 -10
- package/dist/hooks/handlers/session-hooks.js.map +1 -1
- package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/task-hooks.js +5 -10
- package/dist/hooks/handlers/task-hooks.js.map +1 -1
- package/dist/hooks/handlers/work-capture-hooks.d.ts.map +1 -1
- package/dist/hooks/handlers/work-capture-hooks.js +165 -0
- package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
- package/dist/hooks/payload-schemas.js +83 -26
- package/dist/hooks/payload-schemas.js.map +1 -1
- package/dist/hooks/provider-hooks.js +37 -5
- package/dist/hooks/provider-hooks.js.map +1 -1
- package/dist/hooks/registry.js +76 -23
- package/dist/hooks/registry.js.map +1 -1
- package/dist/hooks/types.js +17 -13
- package/dist/hooks/types.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6452 -3371
- package/dist/index.js.map +4 -4
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +12 -0
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +11 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +10 -0
- package/dist/internal.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/tree-sitter-languages.d.ts +29 -0
- package/dist/lib/tree-sitter-languages.d.ts.map +1 -0
- package/dist/memory/brain-links.d.ts.map +1 -1
- package/dist/memory/brain-maintenance.d.ts +13 -0
- package/dist/memory/brain-maintenance.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.d.ts +3 -0
- package/dist/memory/brain-retrieval.d.ts.map +1 -1
- package/dist/memory/brain-retrieval.js +5 -0
- package/dist/memory/brain-retrieval.js.map +1 -1
- package/dist/memory/decisions.d.ts.map +1 -1
- package/dist/mvi-helpers.d.ts +52 -0
- package/dist/mvi-helpers.d.ts.map +1 -0
- package/dist/mvi-helpers.js +74 -0
- package/dist/mvi-helpers.js.map +1 -0
- package/dist/nexus/index.js +2 -0
- package/dist/nexus/index.js.map +1 -1
- package/dist/nexus/workspace.d.ts.map +1 -1
- package/dist/nexus/workspace.js +355 -0
- package/dist/nexus/workspace.js.map +1 -0
- package/dist/orchestration/hierarchy.d.ts +32 -0
- package/dist/orchestration/hierarchy.d.ts.map +1 -0
- package/dist/orchestration/index.d.ts +1 -0
- package/dist/orchestration/index.d.ts.map +1 -1
- package/dist/output.d.ts +2 -2
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +40 -8
- package/dist/output.js.map +1 -1
- package/dist/pagination.d.ts +1 -1
- package/dist/pagination.d.ts.map +1 -1
- package/dist/sessions/find.d.ts +3 -0
- package/dist/sessions/find.d.ts.map +1 -1
- package/dist/sessions/find.js +3 -1
- package/dist/sessions/find.js.map +1 -1
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +11 -4
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/snapshot.js +213 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/store/agent-registry-accessor.d.ts +31 -0
- package/dist/store/agent-registry-accessor.d.ts.map +1 -0
- package/dist/store/agent-registry-accessor.js +169 -0
- package/dist/store/agent-registry-accessor.js.map +1 -0
- package/dist/store/converters.d.ts.map +1 -1
- package/dist/store/converters.js +2 -0
- package/dist/store/converters.js.map +1 -1
- package/dist/store/cross-db-cleanup.d.ts +34 -0
- package/dist/store/cross-db-cleanup.d.ts.map +1 -1
- package/dist/store/db-helpers.d.ts.map +1 -1
- package/dist/store/db-helpers.js +1 -0
- package/dist/store/db-helpers.js.map +1 -1
- package/dist/store/json.js +2 -2
- package/dist/store/safety-data-accessor.d.ts +7 -0
- package/dist/store/safety-data-accessor.d.ts.map +1 -1
- package/dist/store/safety-data-accessor.js +14 -0
- package/dist/store/safety-data-accessor.js.map +1 -1
- package/dist/store/signaldock-sqlite.d.ts +48 -0
- package/dist/store/signaldock-sqlite.d.ts.map +1 -0
- package/dist/store/signaldock-sqlite.js +178 -0
- package/dist/store/signaldock-sqlite.js.map +1 -0
- package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
- package/dist/store/sqlite-data-accessor.js +50 -0
- package/dist/store/sqlite-data-accessor.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +30 -1
- package/dist/store/sqlite.js.map +1 -1
- package/dist/store/task-store.d.ts.map +1 -1
- package/dist/store/task-store.js +2 -0
- package/dist/store/task-store.js.map +1 -1
- package/dist/store/tasks-schema.d.ts +16 -0
- package/dist/store/tasks-schema.d.ts.map +1 -1
- package/dist/store/tasks-schema.js +33 -0
- package/dist/store/tasks-schema.js.map +1 -1
- package/dist/store/validation-schemas.d.ts +32 -0
- package/dist/store/validation-schemas.d.ts.map +1 -1
- package/dist/system/health.d.ts +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +35 -0
- package/dist/system/health.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +8 -4
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/complete.js +5 -2
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/find.d.ts +3 -0
- package/dist/tasks/find.d.ts.map +1 -1
- package/dist/tasks/find.js +7 -1
- package/dist/tasks/find.js.map +1 -1
- package/dist/tasks/list.d.ts +5 -2
- package/dist/tasks/list.d.ts.map +1 -1
- package/dist/tasks/list.js +9 -2
- package/dist/tasks/list.js.map +1 -1
- package/dist/tasks/show.d.ts +3 -0
- package/dist/tasks/show.d.ts.map +1 -1
- package/dist/tasks/show.js +2 -0
- package/dist/tasks/show.js.map +1 -1
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +15 -0
- package/dist/upgrade.js.map +1 -1
- package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
- package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
- package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
- package/package.json +17 -7
- package/src/__tests__/cli-parity.test.js +11 -1
- package/src/__tests__/cli-parity.test.js.map +1 -1
- package/src/__tests__/cli-parity.test.ts +17 -1
- package/src/__tests__/human-output.test.js +11 -1
- package/src/__tests__/human-output.test.js.map +1 -1
- package/src/__tests__/human-output.test.ts +18 -1
- package/src/__tests__/injection-chain.test.js +3 -2
- package/src/__tests__/injection-chain.test.js.map +1 -1
- package/src/__tests__/injection-mvi-tiers.test.d.ts +2 -2
- package/src/__tests__/injection-mvi-tiers.test.js +15 -15
- package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
- package/src/__tests__/lafs-conformance.test.d.ts +1 -1
- package/src/__tests__/lafs-conformance.test.js +2 -2
- package/src/__tests__/sharing.test.js +19 -0
- package/src/__tests__/sharing.test.js.map +1 -1
- package/src/agents/__tests__/agent-registry.test.d.ts +12 -0
- package/src/agents/__tests__/agent-registry.test.d.ts.map +1 -0
- package/src/agents/__tests__/agent-registry.test.js +262 -0
- package/src/agents/__tests__/agent-registry.test.js.map +1 -0
- package/src/agents/__tests__/execution-learning.test.d.ts +14 -0
- package/src/agents/__tests__/execution-learning.test.d.ts.map +1 -0
- package/src/agents/__tests__/execution-learning.test.js +533 -0
- package/src/agents/__tests__/execution-learning.test.js.map +1 -0
- package/src/agents/__tests__/health-monitor.test.d.ts +10 -0
- package/src/agents/__tests__/health-monitor.test.d.ts.map +1 -0
- package/src/agents/__tests__/health-monitor.test.js +259 -0
- package/src/agents/__tests__/health-monitor.test.js.map +1 -0
- package/src/agents/__tests__/registry.test.js +27 -2
- package/src/agents/__tests__/registry.test.js.map +1 -1
- package/src/agents/agent-schema.ts +2 -5
- package/src/cant/__tests__/cant-agent-parse.test.ts +94 -0
- package/src/cant/approval.ts +218 -0
- package/src/cant/context-builder.ts +135 -0
- package/src/cant/discretion.ts +149 -0
- package/src/cant/index.ts +58 -0
- package/src/cant/parallel-runner.ts +205 -0
- package/src/cant/types.ts +158 -0
- package/src/cant/workflow-executor.ts +618 -0
- package/src/code/index.ts +10 -0
- package/src/code/outline.ts +214 -0
- package/src/code/parser.ts +299 -0
- package/src/code/search.ts +173 -0
- package/src/code/unfold.ts +204 -0
- package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
- package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
- package/src/conduit/__tests__/local-transport.test.ts +320 -0
- package/src/conduit/__tests__/sse-transport.test.ts +344 -0
- package/src/conduit/conduit-client.ts +123 -0
- package/src/conduit/factory.ts +49 -0
- package/src/conduit/http-transport.ts +201 -0
- package/src/conduit/index.ts +15 -0
- package/src/conduit/local-transport.ts +309 -0
- package/src/conduit/sse-transport.ts +382 -0
- package/src/crypto/credentials.ts +166 -0
- package/src/engine-result.ts +1 -1
- package/src/error-catalog.ts +1 -1
- package/src/error-registry.ts +1 -1
- package/src/errors.ts +1 -1
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts +13 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +1 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +501 -0
- package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -0
- package/src/hooks/handlers/agent-hooks.ts +1 -30
- package/src/hooks/handlers/context-hooks.ts +1 -30
- package/src/hooks/handlers/error-hooks.ts +14 -5
- package/src/hooks/handlers/file-hooks.ts +1 -6
- package/src/hooks/handlers/handler-helpers.ts +62 -0
- package/src/hooks/handlers/mcp-hooks.ts +2 -14
- package/src/hooks/handlers/session-hooks.ts +1 -6
- package/src/hooks/handlers/task-hooks.ts +1 -6
- package/src/hooks/handlers/work-capture-hooks.ts +1 -10
- package/src/index.ts +12 -1
- package/src/init.ts +12 -0
- package/src/intelligence/__tests__/adaptive-validation.test.d.ts +11 -0
- package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +1 -0
- package/src/intelligence/__tests__/adaptive-validation.test.js +517 -0
- package/src/intelligence/__tests__/adaptive-validation.test.js.map +1 -0
- package/src/intelligence/__tests__/impact.test.d.ts +1 -0
- package/src/intelligence/__tests__/impact.test.d.ts.map +1 -1
- package/src/intelligence/__tests__/impact.test.js +132 -1
- package/src/intelligence/__tests__/impact.test.js.map +1 -1
- package/src/internal.ts +22 -0
- package/src/lib/__tests__/retry.test.d.ts +7 -0
- package/src/lib/__tests__/retry.test.d.ts.map +1 -0
- package/src/lib/__tests__/retry.test.js +225 -0
- package/src/lib/__tests__/retry.test.js.map +1 -0
- package/src/lib/index.ts +8 -0
- package/src/lib/tree-sitter-languages.ts +88 -0
- package/src/lifecycle/__tests__/chain-store.test.js +6 -0
- package/src/lifecycle/__tests__/chain-store.test.js.map +1 -1
- package/src/lifecycle/__tests__/tessera-engine.test.js +52 -0
- package/src/lifecycle/__tests__/tessera-engine.test.js.map +1 -1
- package/src/memory/__tests__/brain-automation.test.d.ts +11 -0
- package/src/memory/__tests__/brain-automation.test.d.ts.map +1 -0
- package/src/memory/__tests__/brain-automation.test.js +730 -0
- package/src/memory/__tests__/brain-automation.test.js.map +1 -0
- package/src/memory/__tests__/brain-links.test.ts +14 -0
- package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
- package/src/memory/__tests__/session-memory.test.ts +17 -0
- package/src/memory/brain-links.ts +17 -0
- package/src/memory/brain-maintenance.ts +33 -1
- package/src/memory/brain-retrieval.ts +27 -2
- package/src/memory/decisions.ts +18 -2
- package/src/mvi-helpers.ts +81 -0
- package/src/nexus/workspace.ts +19 -7
- package/src/orchestration/hierarchy.ts +202 -0
- package/src/orchestration/index.ts +1 -0
- package/src/output.ts +43 -10
- package/src/pagination.ts +1 -1
- package/src/sessions/__tests__/session-edge-cases.test.js +20 -1
- package/src/sessions/__tests__/session-edge-cases.test.js.map +1 -1
- package/src/sessions/__tests__/session-find.test.js +1 -1
- package/src/sessions/__tests__/session-find.test.js.map +1 -1
- package/src/sessions/__tests__/session-find.test.ts +1 -1
- package/src/sessions/find.ts +6 -1
- package/src/sessions/index.ts +9 -0
- package/src/store/__tests__/migration-safety.test.js +3 -0
- package/src/store/__tests__/migration-safety.test.js.map +1 -1
- package/src/store/__tests__/session-store.test.js +128 -1
- package/src/store/__tests__/session-store.test.js.map +1 -1
- package/src/store/__tests__/task-store.test.js +18 -1
- package/src/store/__tests__/task-store.test.js.map +1 -1
- package/src/store/__tests__/test-db-helper.d.ts.map +1 -1
- package/src/store/__tests__/test-db-helper.js +12 -0
- package/src/store/__tests__/test-db-helper.js.map +1 -1
- package/src/store/agent-registry-accessor.ts +375 -0
- package/src/store/converters.ts +2 -0
- package/src/store/cross-db-cleanup.ts +175 -1
- package/src/store/db-helpers.ts +1 -0
- package/src/store/safety-data-accessor.ts +23 -0
- package/src/store/signaldock-sqlite.ts +429 -0
- package/src/store/sqlite-data-accessor.ts +72 -0
- package/src/store/sqlite.ts +4 -1
- package/src/store/task-store.ts +9 -1
- package/src/store/tasks-schema.ts +7 -0
- package/src/system/__tests__/health.test.ts +2 -2
- package/src/system/health.ts +54 -2
- package/src/task-work/index.ts +5 -0
- package/src/tasks/__tests__/add.test.js +19 -1
- package/src/tasks/__tests__/add.test.js.map +1 -1
- package/src/tasks/__tests__/assignee.test.d.ts +14 -0
- package/src/tasks/__tests__/assignee.test.d.ts.map +1 -0
- package/src/tasks/__tests__/assignee.test.js +125 -0
- package/src/tasks/__tests__/assignee.test.js.map +1 -0
- package/src/tasks/__tests__/assignee.test.ts +162 -0
- package/src/tasks/__tests__/complete-unblocks.test.js +13 -1
- package/src/tasks/__tests__/complete-unblocks.test.js.map +1 -1
- package/src/tasks/__tests__/complete.test.js +28 -7
- package/src/tasks/__tests__/complete.test.js.map +1 -1
- package/src/tasks/__tests__/epic-enforcement.test.d.ts +15 -0
- package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +1 -0
- package/src/tasks/__tests__/epic-enforcement.test.js +669 -0
- package/src/tasks/__tests__/epic-enforcement.test.js.map +1 -0
- package/src/tasks/__tests__/hierarchy-policy.test.js +5 -0
- package/src/tasks/__tests__/hierarchy-policy.test.js.map +1 -1
- package/src/tasks/__tests__/minimal-test.test.d.ts +2 -0
- package/src/tasks/__tests__/minimal-test.test.d.ts.map +1 -0
- package/src/tasks/__tests__/minimal-test.test.js +25 -0
- package/src/tasks/__tests__/minimal-test.test.js.map +1 -0
- package/src/tasks/__tests__/pipeline-stage.test.d.ts +14 -0
- package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +1 -0
- package/src/tasks/__tests__/pipeline-stage.test.js +277 -0
- package/src/tasks/__tests__/pipeline-stage.test.js.map +1 -0
- package/src/tasks/__tests__/update.test.js +43 -6
- package/src/tasks/__tests__/update.test.js.map +1 -1
- package/src/tasks/find.ts +11 -1
- package/src/tasks/list.ts +14 -3
- package/src/tasks/show.ts +6 -0
- package/src/upgrade.ts +16 -0
- package/dist/tasks/reparent.d.ts +0 -38
- package/dist/tasks/reparent.d.ts.map +0 -1
- package/dist/ui/injection-legacy.d.ts +0 -26
- package/dist/ui/injection-legacy.d.ts.map +0 -1
- package/dist/ui/injection-legacy.js +0 -42
- package/dist/ui/injection-legacy.js.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.d.ts +0 -7
- package/src/signaldock/__tests__/claude-code-transport.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.js +0 -147
- package/src/signaldock/__tests__/claude-code-transport.test.js.map +0 -1
- package/src/signaldock/__tests__/claude-code-transport.test.ts +0 -180
- package/src/signaldock/__tests__/factory.test.d.ts +0 -7
- package/src/signaldock/__tests__/factory.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/factory.test.js +0 -55
- package/src/signaldock/__tests__/factory.test.js.map +0 -1
- package/src/signaldock/__tests__/factory.test.ts +0 -61
- package/src/signaldock/__tests__/signaldock-transport.test.d.ts +0 -9
- package/src/signaldock/__tests__/signaldock-transport.test.d.ts.map +0 -1
- package/src/signaldock/__tests__/signaldock-transport.test.js +0 -321
- package/src/signaldock/__tests__/signaldock-transport.test.js.map +0 -1
- package/src/signaldock/__tests__/signaldock-transport.test.ts +0 -421
- package/src/signaldock/claude-code-transport.ts +0 -137
- package/src/signaldock/factory.ts +0 -39
- package/src/signaldock/index.ts +0 -28
- package/src/signaldock/signaldock-transport.ts +0 -194
- package/src/signaldock/transport.ts +0 -78
- package/src/signaldock/types.ts +0 -100
package/dist/engine-result.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-result.d.ts","sourceRoot":"","sources":["../src/engine-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"engine-result.d.ts","sourceRoot":"","sources":["../src/engine-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3D,CAAC;CACH"}
|
package/dist/error-catalog.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-catalog.d.ts","sourceRoot":"","sources":["../src/error-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"error-catalog.d.ts","sourceRoot":"","sources":["../src/error-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAijC9D,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE5E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAK1F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,EAAE,CAE1D"}
|
package/dist/error-registry.d.ts
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* @epic T4663
|
|
13
13
|
*/
|
|
14
14
|
import { ExitCode } from '@cleocode/contracts';
|
|
15
|
-
import type { LAFSErrorCategory } from '@cleocode/lafs
|
|
15
|
+
import type { LAFSErrorCategory } from '@cleocode/lafs';
|
|
16
16
|
/**
|
|
17
17
|
* Entry in the CLEO-to-LAFS error registry.
|
|
18
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-registry.d.ts","sourceRoot":"","sources":["../src/error-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"error-registry.d.ts","sourceRoot":"","sources":["../src/error-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAgWD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAElF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,EAAE,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE9D"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* @task T5240
|
|
8
8
|
*/
|
|
9
9
|
import { ExitCode } from '@cleocode/contracts';
|
|
10
|
-
import type { LAFSError } from '@cleocode/lafs
|
|
10
|
+
import type { LAFSError } from '@cleocode/lafs';
|
|
11
11
|
/**
|
|
12
12
|
* RFC 9457 Problem Details object.
|
|
13
13
|
* Structured error representation for API/MCP responses.
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAsC,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAsC,MAAM,qBAAqB,CAAC;AACnF,OAAO,KAAK,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAGnE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAqDD;;;;;GAKG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;gBAGjE,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;IASH;;;;OAIG;IACH,WAAW,IAAI,SAAS;IAgBxB;;;;OAIG;IACH,gBAAgB,IAAI,cAAc;IAmBlC,4EAA4E;IAC5E,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAajC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAetB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/agent-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/agent-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAO7E;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent (Subagent) Lifecycle Hook Handlers
|
|
3
|
+
*
|
|
4
|
+
* Captures SubagentStart and SubagentStop events to BRAIN so that
|
|
5
|
+
* multi-agent orchestration runs leave an auditable trail of which
|
|
6
|
+
* subagents were spawned, what tasks they were assigned, and how
|
|
7
|
+
* they completed.
|
|
8
|
+
*
|
|
9
|
+
* Gated behind brain.autoCapture config. Never throws — all errors are
|
|
10
|
+
* swallowed so that brain capture never blocks agent orchestration.
|
|
11
|
+
*
|
|
12
|
+
* Auto-registers on module load.
|
|
13
|
+
*
|
|
14
|
+
* @task T166
|
|
15
|
+
* @epic T134
|
|
16
|
+
*/
|
|
17
|
+
import { hooks } from '../registry.js';
|
|
18
|
+
import { isAutoCaptureEnabled, isMissingBrainSchemaError } from './handler-helpers.js';
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Handlers
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Handle SubagentStart — log subagent spawn as a BRAIN observation.
|
|
24
|
+
*
|
|
25
|
+
* Records the agent ID, role, and task assignment so orchestrators can
|
|
26
|
+
* trace which agents were active in a given session.
|
|
27
|
+
*
|
|
28
|
+
* Gated behind brain.autoCapture config. Never throws.
|
|
29
|
+
*
|
|
30
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
31
|
+
* @param payload - SubagentStart event payload.
|
|
32
|
+
*
|
|
33
|
+
* @task T166
|
|
34
|
+
* @epic T134
|
|
35
|
+
*/
|
|
36
|
+
export async function handleSubagentStart(projectRoot, payload) {
|
|
37
|
+
if (!(await isAutoCaptureEnabled(projectRoot)))
|
|
38
|
+
return;
|
|
39
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
40
|
+
const rolePart = payload.role ? ` role=${payload.role}` : '';
|
|
41
|
+
const taskPart = payload.taskId ? ` task=${payload.taskId}` : '';
|
|
42
|
+
try {
|
|
43
|
+
await observeBrain(projectRoot, {
|
|
44
|
+
text: `Subagent spawned: ${payload.agentId}${rolePart}${taskPart}`,
|
|
45
|
+
title: `Subagent start: ${payload.agentId}`,
|
|
46
|
+
type: 'discovery',
|
|
47
|
+
sourceSessionId: payload.sessionId,
|
|
48
|
+
sourceType: 'agent',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
if (!isMissingBrainSchemaError(err))
|
|
53
|
+
throw err;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Handle SubagentStop — log subagent completion result as a BRAIN observation.
|
|
58
|
+
*
|
|
59
|
+
* Records the agent ID, completion status, assigned task, and optional
|
|
60
|
+
* summary reference so orchestrators can audit subagent outcomes.
|
|
61
|
+
*
|
|
62
|
+
* Gated behind brain.autoCapture config. Never throws.
|
|
63
|
+
*
|
|
64
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
65
|
+
* @param payload - SubagentStop event payload.
|
|
66
|
+
*
|
|
67
|
+
* @task T166
|
|
68
|
+
* @epic T134
|
|
69
|
+
*/
|
|
70
|
+
export async function handleSubagentStop(projectRoot, payload) {
|
|
71
|
+
if (!(await isAutoCaptureEnabled(projectRoot)))
|
|
72
|
+
return;
|
|
73
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
74
|
+
const statusPart = payload.status ? ` status=${payload.status}` : '';
|
|
75
|
+
const taskPart = payload.taskId ? ` task=${payload.taskId}` : '';
|
|
76
|
+
const summaryPart = payload.summary ? `\nSummary: ${payload.summary}` : '';
|
|
77
|
+
try {
|
|
78
|
+
await observeBrain(projectRoot, {
|
|
79
|
+
text: `Subagent completed: ${payload.agentId}${statusPart}${taskPart}${summaryPart}`,
|
|
80
|
+
title: `Subagent stop: ${payload.agentId}`,
|
|
81
|
+
type: 'change',
|
|
82
|
+
sourceSessionId: payload.sessionId,
|
|
83
|
+
sourceType: 'agent',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
if (!isMissingBrainSchemaError(err))
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
// Auto-registration
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
hooks.register({
|
|
95
|
+
id: 'brain-subagent-start',
|
|
96
|
+
event: 'SubagentStart',
|
|
97
|
+
handler: handleSubagentStart,
|
|
98
|
+
priority: 100,
|
|
99
|
+
});
|
|
100
|
+
hooks.register({
|
|
101
|
+
id: 'brain-subagent-stop',
|
|
102
|
+
event: 'SubagentStop',
|
|
103
|
+
handler: handleSubagentStop,
|
|
104
|
+
priority: 100,
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=agent-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/agent-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/context-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/context-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOzE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Compaction Hook Handlers
|
|
3
|
+
*
|
|
4
|
+
* Captures PreCompact and PostCompact events to BRAIN so that agents
|
|
5
|
+
* can later observe when context compactions occurred and what state
|
|
6
|
+
* preceded them. This is especially useful for long sessions where
|
|
7
|
+
* context is compacted multiple times.
|
|
8
|
+
*
|
|
9
|
+
* PreCompact saves a session context snapshot before compaction begins.
|
|
10
|
+
* PostCompact records that compaction occurred and the resulting token counts.
|
|
11
|
+
*
|
|
12
|
+
* Gated behind brain.autoCapture config. Never throws — all errors are
|
|
13
|
+
* swallowed so brain capture never blocks context compaction.
|
|
14
|
+
*
|
|
15
|
+
* Auto-registers on module load.
|
|
16
|
+
*
|
|
17
|
+
* @task T166
|
|
18
|
+
* @epic T134
|
|
19
|
+
*/
|
|
20
|
+
import { hooks } from '../registry.js';
|
|
21
|
+
import { isAutoCaptureEnabled, isMissingBrainSchemaError } from './handler-helpers.js';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Handlers
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Handle PreCompact — snapshot current session memory context to BRAIN.
|
|
27
|
+
*
|
|
28
|
+
* Fires immediately before context compaction begins. Records the token
|
|
29
|
+
* count and compaction reason so the brain retains context about what
|
|
30
|
+
* was in scope before compaction.
|
|
31
|
+
*
|
|
32
|
+
* Gated behind brain.autoCapture config. Never throws.
|
|
33
|
+
*
|
|
34
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
35
|
+
* @param payload - PreCompact event payload.
|
|
36
|
+
*
|
|
37
|
+
* @task T166
|
|
38
|
+
* @epic T134
|
|
39
|
+
*/
|
|
40
|
+
export async function handlePreCompact(projectRoot, payload) {
|
|
41
|
+
if (!(await isAutoCaptureEnabled(projectRoot)))
|
|
42
|
+
return;
|
|
43
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
44
|
+
const tokensPart = payload.tokensBefore != null ? ` (~${payload.tokensBefore.toLocaleString()} tokens)` : '';
|
|
45
|
+
const reasonPart = payload.reason ? ` Reason: ${payload.reason}` : '';
|
|
46
|
+
try {
|
|
47
|
+
await observeBrain(projectRoot, {
|
|
48
|
+
text: `Context compaction about to begin${tokensPart}.${reasonPart}`,
|
|
49
|
+
title: 'Pre-compaction context snapshot',
|
|
50
|
+
type: 'discovery',
|
|
51
|
+
sourceSessionId: payload.sessionId,
|
|
52
|
+
sourceType: 'agent',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (!isMissingBrainSchemaError(err))
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Handle PostCompact — record compaction completion to BRAIN.
|
|
62
|
+
*
|
|
63
|
+
* Fires immediately after context compaction completes. Records the
|
|
64
|
+
* before/after token counts so agents can correlate observations made
|
|
65
|
+
* before compaction with those made after.
|
|
66
|
+
*
|
|
67
|
+
* Gated behind brain.autoCapture config. Never throws.
|
|
68
|
+
*
|
|
69
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
70
|
+
* @param payload - PostCompact event payload.
|
|
71
|
+
*
|
|
72
|
+
* @task T166
|
|
73
|
+
* @epic T134
|
|
74
|
+
*/
|
|
75
|
+
export async function handlePostCompact(projectRoot, payload) {
|
|
76
|
+
if (!(await isAutoCaptureEnabled(projectRoot)))
|
|
77
|
+
return;
|
|
78
|
+
const { observeBrain } = await import('../../memory/brain-retrieval.js');
|
|
79
|
+
const statusPart = payload.success ? 'succeeded' : 'failed';
|
|
80
|
+
const beforePart = payload.tokensBefore != null ? ` before=${payload.tokensBefore.toLocaleString()}` : '';
|
|
81
|
+
const afterPart = payload.tokensAfter != null ? ` after=${payload.tokensAfter.toLocaleString()}` : '';
|
|
82
|
+
try {
|
|
83
|
+
await observeBrain(projectRoot, {
|
|
84
|
+
text: `Context compaction ${statusPart}${beforePart}${afterPart}`,
|
|
85
|
+
title: 'Post-compaction record',
|
|
86
|
+
type: 'change',
|
|
87
|
+
sourceSessionId: payload.sessionId,
|
|
88
|
+
sourceType: 'agent',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
if (!isMissingBrainSchemaError(err))
|
|
93
|
+
throw err;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Auto-registration
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
hooks.register({
|
|
100
|
+
id: 'brain-pre-compact',
|
|
101
|
+
event: 'PreCompact',
|
|
102
|
+
handler: handlePreCompact,
|
|
103
|
+
priority: 100,
|
|
104
|
+
});
|
|
105
|
+
hooks.register({
|
|
106
|
+
id: 'brain-post-compact',
|
|
107
|
+
event: 'PostCompact',
|
|
108
|
+
handler: handlePostCompact,
|
|
109
|
+
priority: 100,
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=context-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/context-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { PostToolUseFailurePayload } from '../types.js';
|
|
9
9
|
/**
|
|
10
|
-
* Handle PostToolUseFailure
|
|
10
|
+
* Handle PostToolUseFailure — capture operation errors to BRAIN.
|
|
11
11
|
*
|
|
12
|
-
* Includes infinite-loop guard: if the payload
|
|
13
|
-
* the handler skips to prevent
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Includes an infinite-loop guard: if the payload carries a `_fromHook`
|
|
13
|
+
* metadata marker the handler skips immediately to prevent the cycle
|
|
14
|
+
* `PostToolUseFailure → observeBrain → PostToolUseFailure`. All
|
|
15
|
+
* `observeBrain` errors are also silently suppressed for the same reason.
|
|
16
|
+
*
|
|
17
|
+
* Never throws. All brain-write errors are swallowed so error hooks
|
|
18
|
+
* never block the original error path.
|
|
19
|
+
*
|
|
20
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
21
|
+
* @param payload - PostToolUseFailure event payload.
|
|
22
|
+
*
|
|
23
|
+
* @task T166
|
|
24
|
+
* @epic T134
|
|
16
25
|
*/
|
|
17
26
|
export declare function handleError(projectRoot: string, payload: PostToolUseFailurePayload): Promise<void>;
|
|
18
27
|
//# sourceMappingURL=error-hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/error-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"error-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/error-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -7,12 +7,21 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { hooks } from '../registry.js';
|
|
9
9
|
/**
|
|
10
|
-
* Handle
|
|
10
|
+
* Handle PostToolUseFailure — capture operation errors to BRAIN.
|
|
11
11
|
*
|
|
12
|
-
* Includes infinite-loop guard: if the payload
|
|
13
|
-
* the handler skips to prevent
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Includes an infinite-loop guard: if the payload carries a `_fromHook`
|
|
13
|
+
* metadata marker the handler skips immediately to prevent the cycle
|
|
14
|
+
* `PostToolUseFailure → observeBrain → PostToolUseFailure`. All
|
|
15
|
+
* `observeBrain` errors are also silently suppressed for the same reason.
|
|
16
|
+
*
|
|
17
|
+
* Never throws. All brain-write errors are swallowed so error hooks
|
|
18
|
+
* never block the original error path.
|
|
19
|
+
*
|
|
20
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
21
|
+
* @param payload - PostToolUseFailure event payload.
|
|
22
|
+
*
|
|
23
|
+
* @task T166
|
|
24
|
+
* @epic T134
|
|
16
25
|
*/
|
|
17
26
|
export async function handleError(projectRoot, payload) {
|
|
18
27
|
// Infinite-loop guard: skip if this error originated from a hook
|
|
@@ -36,7 +45,7 @@ export async function handleError(projectRoot, payload) {
|
|
|
36
45
|
// Register handler on module load
|
|
37
46
|
hooks.register({
|
|
38
47
|
id: 'brain-error',
|
|
39
|
-
event: '
|
|
48
|
+
event: 'PostToolUseFailure',
|
|
40
49
|
handler: handleError,
|
|
41
50
|
priority: 100,
|
|
42
51
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/error-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC
|
|
1
|
+
{"version":3,"file":"error-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/error-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,WAAmB,EACnB,OAAkC;IAElC,iEAAiE;IACjE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC;QAAE,OAAO;IAE5C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAEzE,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7F,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,YAAY,QAAQ,KAAK,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACrI,KAAK,EAAE,UAAU,QAAQ,EAAE;YAC3B,IAAI,EAAE,WAAW;YACjB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,4DAA4D;QAC5D,oCAAoC;IACtC,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,KAAK,CAAC,QAAQ,CAAC;IACb,EAAE,EAAE,aAAa;IACjB,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,GAAG;CACd,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/file-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"file-hooks.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/file-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AA+CvD;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -5,16 +5,13 @@
|
|
|
5
5
|
* Includes 5-second dedup and path-based filtering to avoid noisy writes.
|
|
6
6
|
* Auto-registers on module load.
|
|
7
7
|
*
|
|
8
|
-
* Disabled by default.
|
|
8
|
+
* Disabled by default. Enable via:
|
|
9
|
+
* - Config: brain.captureFiles = true (checked first)
|
|
10
|
+
* - Env: CLEO_BRAIN_CAPTURE_FILES=true (overrides config)
|
|
9
11
|
*/
|
|
10
12
|
import { isAbsolute, relative } from 'node:path';
|
|
11
13
|
import { hooks } from '../registry.js';
|
|
12
|
-
|
|
13
|
-
if (!(err instanceof Error))
|
|
14
|
-
return false;
|
|
15
|
-
const message = String(err.message || '').toLowerCase();
|
|
16
|
-
return message.includes('no such table') && message.includes('brain_');
|
|
17
|
-
}
|
|
14
|
+
import { isMissingBrainSchemaError } from './handler-helpers.js';
|
|
18
15
|
/** 5-second dedup map: filePath -> last dispatch timestamp */
|
|
19
16
|
const recentWrites = new Map();
|
|
20
17
|
const DEDUP_INTERVAL_MS = 5_000;
|
|
@@ -34,16 +31,43 @@ function shouldSkipPath(relativePath) {
|
|
|
34
31
|
return SKIP_PATTERNS.some((pattern) => pattern.test(relativePath));
|
|
35
32
|
}
|
|
36
33
|
/**
|
|
37
|
-
*
|
|
34
|
+
* Check whether file-change capture is enabled.
|
|
38
35
|
*
|
|
39
|
-
*
|
|
36
|
+
* Resolution order (first truthy wins):
|
|
37
|
+
* 1. CLEO_BRAIN_CAPTURE_FILES env var (explicit override)
|
|
38
|
+
* 2. brain.captureFiles project config value
|
|
39
|
+
*
|
|
40
|
+
* Defaults to false when neither is set.
|
|
41
|
+
*/
|
|
42
|
+
async function isFileCaptureEnabled(projectRoot) {
|
|
43
|
+
const envOverride = process.env['CLEO_BRAIN_CAPTURE_FILES'];
|
|
44
|
+
if (envOverride !== undefined) {
|
|
45
|
+
return envOverride === 'true';
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const { loadConfig } = await import('../../config.js');
|
|
49
|
+
const config = await loadConfig(projectRoot);
|
|
50
|
+
return config.brain?.captureFiles ?? false;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Handle Notification (file-change variant) - capture file changes to BRAIN
|
|
58
|
+
*
|
|
59
|
+
* Gated behind brain.captureFiles config or CLEO_BRAIN_CAPTURE_FILES env var.
|
|
60
|
+
* Env var takes precedence over config for backward compatibility.
|
|
40
61
|
* Deduplicates rapid writes to the same file within a 5-second window.
|
|
41
62
|
* Filters out .cleo/ internal files and test temp directories.
|
|
42
63
|
* Converts absolute paths to project-relative paths.
|
|
43
64
|
*/
|
|
44
65
|
export async function handleFileChange(projectRoot, payload) {
|
|
66
|
+
// Only handle file-change notifications
|
|
67
|
+
if (!payload.filePath || !payload.changeType)
|
|
68
|
+
return;
|
|
45
69
|
// Opt-in gate: disabled by default to prevent observation noise
|
|
46
|
-
if (
|
|
70
|
+
if (!(await isFileCaptureEnabled(projectRoot)))
|
|
47
71
|
return;
|
|
48
72
|
// 5-second dedup
|
|
49
73
|
const now = Date.now();
|
|
@@ -73,7 +97,7 @@ export async function handleFileChange(projectRoot, payload) {
|
|
|
73
97
|
// Register handler on module load
|
|
74
98
|
hooks.register({
|
|
75
99
|
id: 'brain-file-change',
|
|
76
|
-
event: '
|
|
100
|
+
event: 'Notification',
|
|
77
101
|
handler: handleFileChange,
|
|
78
102
|
priority: 100,
|
|
79
103
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/file-hooks.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-hooks.js","sourceRoot":"","sources":["../../../src/hooks/handlers/file-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for hook handler modules.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the two patterns repeated across all brain-capture handlers:
|
|
5
|
+
*
|
|
6
|
+
* 1. `isMissingBrainSchemaError` — detects the "no such table: brain_*" error
|
|
7
|
+
* thrown when brain.db has not been migrated yet, so handlers can swallow
|
|
8
|
+
* it silently instead of crashing agent workflows.
|
|
9
|
+
*
|
|
10
|
+
* 2. `isAutoCaptureEnabled` — reads `brain.autoCapture` from the cascaded
|
|
11
|
+
* project config and returns false when the config is unreadable.
|
|
12
|
+
*
|
|
13
|
+
* Import these instead of redefining them in each handler file.
|
|
14
|
+
*
|
|
15
|
+
* @task T166
|
|
16
|
+
* @epic T134
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Return true when the error is the "no such table: brain_*" SQLite error
|
|
20
|
+
* thrown before brain.db has been migrated.
|
|
21
|
+
*
|
|
22
|
+
* Hook handlers use this to swallow migration-lag errors without hiding
|
|
23
|
+
* genuine failures: if the error is NOT a missing-schema error it is
|
|
24
|
+
* re-thrown so it propagates normally.
|
|
25
|
+
*
|
|
26
|
+
* @param err - The caught error value (may be any type).
|
|
27
|
+
*/
|
|
28
|
+
export declare function isMissingBrainSchemaError(err: unknown): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Return true when `brain.autoCapture` is enabled for the given project.
|
|
31
|
+
*
|
|
32
|
+
* Resolution order (first truthy wins):
|
|
33
|
+
* 1. `brain.autoCapture` project config value (via `loadConfig` cascade)
|
|
34
|
+
*
|
|
35
|
+
* Defaults to `false` when the config is unreadable or the key is absent,
|
|
36
|
+
* so handlers are safely disabled in environments where brain.db is not set up.
|
|
37
|
+
*
|
|
38
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
39
|
+
*/
|
|
40
|
+
export declare function isAutoCaptureEnabled(projectRoot: string): Promise<boolean>;
|
|
41
|
+
//# sourceMappingURL=handler-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-helpers.d.ts","sourceRoot":"","sources":["../../../src/hooks/handlers/handler-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAI/D;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helpers for hook handler modules.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the two patterns repeated across all brain-capture handlers:
|
|
5
|
+
*
|
|
6
|
+
* 1. `isMissingBrainSchemaError` — detects the "no such table: brain_*" error
|
|
7
|
+
* thrown when brain.db has not been migrated yet, so handlers can swallow
|
|
8
|
+
* it silently instead of crashing agent workflows.
|
|
9
|
+
*
|
|
10
|
+
* 2. `isAutoCaptureEnabled` — reads `brain.autoCapture` from the cascaded
|
|
11
|
+
* project config and returns false when the config is unreadable.
|
|
12
|
+
*
|
|
13
|
+
* Import these instead of redefining them in each handler file.
|
|
14
|
+
*
|
|
15
|
+
* @task T166
|
|
16
|
+
* @epic T134
|
|
17
|
+
*/
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Brain schema error guard
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Return true when the error is the "no such table: brain_*" SQLite error
|
|
23
|
+
* thrown before brain.db has been migrated.
|
|
24
|
+
*
|
|
25
|
+
* Hook handlers use this to swallow migration-lag errors without hiding
|
|
26
|
+
* genuine failures: if the error is NOT a missing-schema error it is
|
|
27
|
+
* re-thrown so it propagates normally.
|
|
28
|
+
*
|
|
29
|
+
* @param err - The caught error value (may be any type).
|
|
30
|
+
*/
|
|
31
|
+
export function isMissingBrainSchemaError(err) {
|
|
32
|
+
if (!(err instanceof Error))
|
|
33
|
+
return false;
|
|
34
|
+
const message = String(err.message || '').toLowerCase();
|
|
35
|
+
return message.includes('no such table') && message.includes('brain_');
|
|
36
|
+
}
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Auto-capture config gate
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
/**
|
|
41
|
+
* Return true when `brain.autoCapture` is enabled for the given project.
|
|
42
|
+
*
|
|
43
|
+
* Resolution order (first truthy wins):
|
|
44
|
+
* 1. `brain.autoCapture` project config value (via `loadConfig` cascade)
|
|
45
|
+
*
|
|
46
|
+
* Defaults to `false` when the config is unreadable or the key is absent,
|
|
47
|
+
* so handlers are safely disabled in environments where brain.db is not set up.
|
|
48
|
+
*
|
|
49
|
+
* @param projectRoot - Absolute path to the project root directory.
|
|
50
|
+
*/
|
|
51
|
+
export async function isAutoCaptureEnabled(projectRoot) {
|
|
52
|
+
try {
|
|
53
|
+
const { loadConfig } = await import('../../config.js');
|
|
54
|
+
const config = await loadConfig(projectRoot);
|
|
55
|
+
return config.brain?.autoCapture ?? false;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=handler-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler-helpers.js","sourceRoot":"","sources":["../../../src/hooks/handlers/handler-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAY;IACpD,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,OAAO,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzE,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Barrel export for all hook handlers. Importing this module will
|
|
5
5
|
* auto-register all handlers with the hook registry.
|
|
6
|
+
*
|
|
7
|
+
* @task T166
|
|
8
|
+
* @epic T134
|
|
6
9
|
*/
|
|
7
10
|
// Import handlers to trigger auto-registration on module load
|
|
8
11
|
import './session-hooks.js';
|
|
@@ -10,10 +13,16 @@ import './task-hooks.js';
|
|
|
10
13
|
import './error-hooks.js';
|
|
11
14
|
import './file-hooks.js';
|
|
12
15
|
import './mcp-hooks.js';
|
|
16
|
+
import './work-capture-hooks.js';
|
|
17
|
+
import './agent-hooks.js';
|
|
18
|
+
import './context-hooks.js';
|
|
19
|
+
export { handleSubagentStart, handleSubagentStop } from './agent-hooks.js';
|
|
20
|
+
export { handlePostCompact, handlePreCompact } from './context-hooks.js';
|
|
13
21
|
export { handleError } from './error-hooks.js';
|
|
14
22
|
export { handleFileChange } from './file-hooks.js';
|
|
15
|
-
export { handlePromptSubmit, handleResponseComplete } from './mcp-hooks.js';
|
|
23
|
+
export { handlePromptSubmit, handleResponseComplete, handleSystemNotification, } from './mcp-hooks.js';
|
|
16
24
|
// Re-export handler functions for explicit use
|
|
17
25
|
export { handleSessionEnd, handleSessionStart } from './session-hooks.js';
|
|
18
26
|
export { handleToolComplete, handleToolStart } from './task-hooks.js';
|
|
27
|
+
export { handleWorkPromptSubmit, handleWorkResponseComplete } from './work-capture-hooks.js';
|
|
19
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/handlers/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,8DAA8D;AAC9D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAC1B,OAAO,iBAAiB,CAAC;AACzB,OAAO,gBAAgB,CAAC;AACxB,OAAO,yBAAyB,CAAC;AACjC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,+CAA+C;AAC/C,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC"}
|