devchain-cli 0.9.1 → 0.10.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/dist/cli.js +985 -194
- package/dist/drizzle/0042_nice_flatman.sql +10 -0
- package/dist/drizzle/0043_majestic_starhawk.sql +10 -0
- package/dist/drizzle/0044_supreme_joshua_kane.sql +57 -0
- package/dist/drizzle/0045_provider_auto_compact_threshold.sql +11 -0
- package/dist/drizzle/0046_worktrees_owner_project_id.sql +3 -0
- package/dist/drizzle/meta/0042_snapshot.json +4171 -0
- package/dist/drizzle/meta/0043_snapshot.json +4231 -0
- package/dist/drizzle/meta/0044_snapshot.json +4620 -0
- package/dist/drizzle/meta/_journal.json +35 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +18 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js +6 -0
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/app.main.module.d.ts +4 -0
- package/dist/server/app.main.module.js +102 -0
- package/dist/server/app.main.module.js.map +1 -0
- package/dist/server/app.module.d.ts +1 -4
- package/dist/server/app.module.js +2 -78
- package/dist/server/app.module.js.map +1 -1
- package/dist/server/app.normal.module.d.ts +4 -0
- package/dist/server/app.normal.module.js +90 -0
- package/dist/server/app.normal.module.js.map +1 -0
- package/dist/server/common/config/env.config.d.ts +81 -1
- package/dist/server/common/config/env.config.js +52 -2
- package/dist/server/common/config/env.config.js.map +1 -1
- package/dist/server/common/templates-directory.d.ts +8 -0
- package/dist/server/common/templates-directory.js +56 -0
- package/dist/server/common/templates-directory.js.map +1 -0
- package/dist/server/main.js +58 -7
- package/dist/server/main.js.map +1 -1
- package/dist/server/modules/chat/dtos/chat.dto.d.ts +2 -2
- package/dist/server/modules/core/controllers/health.controller.d.ts +4 -0
- package/dist/server/modules/core/controllers/health.controller.js +22 -1
- package/dist/server/modules/core/controllers/health.controller.js.map +1 -1
- package/dist/server/modules/core/controllers/runtime.controller.d.ts +18 -0
- package/dist/server/modules/core/controllers/runtime.controller.js +130 -0
- package/dist/server/modules/core/controllers/runtime.controller.js.map +1 -0
- package/dist/server/modules/core/core-common.module.d.ts +2 -0
- package/dist/server/modules/core/core-common.module.js +24 -0
- package/dist/server/modules/core/core-common.module.js.map +1 -0
- package/dist/server/modules/core/core-main-health.module.d.ts +2 -0
- package/dist/server/modules/core/core-main-health.module.js +32 -0
- package/dist/server/modules/core/core-main-health.module.js.map +1 -0
- package/dist/server/modules/core/core-normal-health.module.d.ts +2 -0
- package/dist/server/modules/core/core-normal-health.module.js +29 -0
- package/dist/server/modules/core/core-normal-health.module.js.map +1 -0
- package/dist/server/modules/core/core-normal.module.d.ts +2 -0
- package/dist/server/modules/core/core-normal.module.js +28 -0
- package/dist/server/modules/core/core-normal.module.js.map +1 -0
- package/dist/server/modules/core/core.module.js +4 -11
- package/dist/server/modules/core/core.module.js.map +1 -1
- package/dist/server/modules/core/services/health.service.d.ts +13 -0
- package/dist/server/modules/core/services/health.service.js +39 -0
- package/dist/server/modules/core/services/health.service.js.map +1 -0
- package/dist/server/modules/core/services/main-readiness-checker.service.d.ts +14 -0
- package/dist/server/modules/core/services/main-readiness-checker.service.js +82 -0
- package/dist/server/modules/core/services/main-readiness-checker.service.js.map +1 -0
- package/dist/server/modules/core/services/normal-readiness-checker.service.d.ts +13 -0
- package/dist/server/modules/core/services/normal-readiness-checker.service.js +67 -0
- package/dist/server/modules/core/services/normal-readiness-checker.service.js.map +1 -0
- package/dist/server/modules/core/services/preflight.service.d.ts +1 -0
- package/dist/server/modules/core/services/preflight.service.js +18 -1
- package/dist/server/modules/core/services/preflight.service.js.map +1 -1
- package/dist/server/modules/core/services/provider-mcp-ensure.service.js +8 -0
- package/dist/server/modules/core/services/provider-mcp-ensure.service.js.map +1 -1
- package/dist/server/modules/epics/epics.module.js +2 -2
- package/dist/server/modules/epics/epics.module.js.map +1 -1
- package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +39 -0
- package/dist/server/modules/events/catalog/claude.hooks.session.started.js +20 -0
- package/dist/server/modules/events/catalog/claude.hooks.session.started.js.map +1 -0
- package/dist/server/modules/events/catalog/epic.created.d.ts +2 -2
- package/dist/server/modules/events/catalog/index.d.ts +38 -4
- package/dist/server/modules/events/catalog/index.js +2 -0
- package/dist/server/modules/events/catalog/index.js.map +1 -1
- package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +2 -2
- package/dist/server/modules/events/controllers/event-log.controller.d.ts +1 -1
- package/dist/server/modules/events/controllers/event-log.controller.js +11 -9
- package/dist/server/modules/events/controllers/event-log.controller.js.map +1 -1
- package/dist/server/modules/events/dtos/event-log.dto.d.ts +1 -0
- package/dist/server/modules/events/events-domain.module.d.ts +2 -0
- package/dist/server/modules/events/events-domain.module.js +42 -0
- package/dist/server/modules/events/events-domain.module.js.map +1 -0
- package/dist/server/modules/events/events-infra.module.d.ts +2 -0
- package/dist/server/modules/events/events-infra.module.js +26 -0
- package/dist/server/modules/events/events-infra.module.js.map +1 -0
- package/dist/server/modules/events/events.module.js +4 -27
- package/dist/server/modules/events/events.module.js.map +1 -1
- package/dist/server/modules/events/index.d.ts +2 -0
- package/dist/server/modules/events/index.js +2 -0
- package/dist/server/modules/events/index.js.map +1 -1
- package/dist/server/modules/events/services/event-log.service.d.ts +8 -1
- package/dist/server/modules/events/services/event-log.service.js +41 -0
- package/dist/server/modules/events/services/event-log.service.js.map +1 -1
- package/dist/server/modules/events/subscribers/index.js +2 -0
- package/dist/server/modules/events/subscribers/index.js.map +1 -1
- package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.d.ts +8 -0
- package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.js +48 -0
- package/dist/server/modules/events/subscribers/worktree-broadcaster.subscriber.js.map +1 -0
- package/dist/server/modules/git/dtos/git.dto.d.ts +1 -1
- package/dist/server/modules/guests/guests.module.js +2 -2
- package/dist/server/modules/guests/guests.module.js.map +1 -1
- package/dist/server/modules/hooks/controllers/hooks.controller.d.ts +7 -0
- package/dist/server/modules/hooks/controllers/hooks.controller.js +49 -0
- package/dist/server/modules/hooks/controllers/hooks.controller.js.map +1 -0
- package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +41 -0
- package/dist/server/modules/hooks/dtos/hook-event.dto.js +19 -0
- package/dist/server/modules/hooks/dtos/hook-event.dto.js.map +1 -0
- package/dist/server/modules/hooks/hooks.module.d.ts +2 -0
- package/dist/server/modules/hooks/hooks.module.js +27 -0
- package/dist/server/modules/hooks/hooks.module.js.map +1 -0
- package/dist/server/modules/hooks/services/hooks-config.service.d.ts +5 -0
- package/dist/server/modules/hooks/services/hooks-config.service.js +215 -0
- package/dist/server/modules/hooks/services/hooks-config.service.js.map +1 -0
- package/dist/server/modules/hooks/services/hooks.service.d.ts +11 -0
- package/dist/server/modules/hooks/services/hooks.service.js +83 -0
- package/dist/server/modules/hooks/services/hooks.service.js.map +1 -0
- package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +14 -14
- package/dist/server/modules/mcp/mcp.module.js +2 -2
- package/dist/server/modules/mcp/mcp.module.js.map +1 -1
- package/dist/server/modules/orchestrator/docker/docker.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/docker/docker.module.js +22 -0
- package/dist/server/modules/orchestrator/docker/docker.module.js.map +1 -0
- package/dist/server/modules/orchestrator/docker/index.d.ts +3 -0
- package/dist/server/modules/orchestrator/docker/index.js +20 -0
- package/dist/server/modules/orchestrator/docker/index.js.map +1 -0
- package/dist/server/modules/orchestrator/docker/services/docker.service.d.ts +85 -0
- package/dist/server/modules/orchestrator/docker/services/docker.service.js +745 -0
- package/dist/server/modules/orchestrator/docker/services/docker.service.js.map +1 -0
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.d.ts +11 -0
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js +181 -0
- package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js.map +1 -0
- package/dist/server/modules/orchestrator/git/controllers/git.controller.d.ts +8 -0
- package/dist/server/modules/orchestrator/git/controllers/git.controller.js +38 -0
- package/dist/server/modules/orchestrator/git/controllers/git.controller.js.map +1 -0
- package/dist/server/modules/orchestrator/git/git.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/git/git.module.js +23 -0
- package/dist/server/modules/orchestrator/git/git.module.js.map +1 -0
- package/dist/server/modules/orchestrator/git/index.d.ts +3 -0
- package/dist/server/modules/orchestrator/git/index.js +20 -0
- package/dist/server/modules/orchestrator/git/index.js.map +1 -0
- package/dist/server/modules/orchestrator/git/services/git-worktree.service.d.ts +83 -0
- package/dist/server/modules/orchestrator/git/services/git-worktree.service.js +474 -0
- package/dist/server/modules/orchestrator/git/services/git-worktree.service.js.map +1 -0
- package/dist/server/modules/orchestrator/index.d.ts +6 -0
- package/dist/server/modules/orchestrator/index.js +23 -0
- package/dist/server/modules/orchestrator/index.js.map +1 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/index.d.ts +1 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/index.js +18 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/index.js.map +1 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.d.ts +5 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.js +10 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/db/orchestrator.provider.js.map +1 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/index.d.ts +2 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/index.js +19 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/index.js.map +1 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.js +23 -0
- package/dist/server/modules/orchestrator/orchestrator-storage/orchestrator-storage.module.js.map +1 -0
- package/dist/server/modules/orchestrator/proxy/index.d.ts +2 -0
- package/dist/server/modules/orchestrator/proxy/index.js +19 -0
- package/dist/server/modules/orchestrator/proxy/index.js.map +1 -0
- package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.js +22 -0
- package/dist/server/modules/orchestrator/proxy/orchestrator-proxy.module.js.map +1 -0
- package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.d.ts +18 -0
- package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.js +192 -0
- package/dist/server/modules/orchestrator/proxy/services/orchestrator-proxy.service.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/controllers/overview.controller.d.ts +9 -0
- package/dist/server/modules/orchestrator/sync/controllers/overview.controller.js +66 -0
- package/dist/server/modules/orchestrator/sync/controllers/overview.controller.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/dtos/overview.dto.d.ts +52 -0
- package/dist/server/modules/orchestrator/sync/dtos/overview.dto.js +3 -0
- package/dist/server/modules/orchestrator/sync/dtos/overview.dto.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.d.ts +5 -0
- package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.js +3 -0
- package/dist/server/modules/orchestrator/sync/dtos/task-merge.dto.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/events/task-merge.events.d.ts +4 -0
- package/dist/server/modules/orchestrator/sync/events/task-merge.events.js +5 -0
- package/dist/server/modules/orchestrator/sync/events/task-merge.events.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/index.d.ts +7 -0
- package/dist/server/modules/orchestrator/sync/index.js +24 -0
- package/dist/server/modules/orchestrator/sync/index.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.d.ts +31 -0
- package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.js +410 -0
- package/dist/server/modules/orchestrator/sync/services/lazy-fetch.service.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.d.ts +44 -0
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.js +730 -0
- package/dist/server/modules/orchestrator/sync/services/task-merge.service.js.map +1 -0
- package/dist/server/modules/orchestrator/sync/sync.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/sync/sync.module.js +36 -0
- package/dist/server/modules/orchestrator/sync/sync.module.js.map +1 -0
- package/dist/server/modules/orchestrator/ui/app/lib/worktrees.d.ts +118 -0
- package/dist/server/modules/orchestrator/ui/app/lib/worktrees.js +297 -0
- package/dist/server/modules/orchestrator/ui/app/lib/worktrees.js.map +1 -0
- package/dist/server/modules/orchestrator/ui/app/orchestrator-app.d.ts +17 -0
- package/dist/server/modules/orchestrator/ui/app/orchestrator-app.js +752 -0
- package/dist/server/modules/orchestrator/ui/app/orchestrator-app.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.d.ts +15 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.js +85 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/templates.controller.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.d.ts +29 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.js +272 -0
- package/dist/server/modules/orchestrator/worktrees/controllers/worktrees.controller.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.d.ts +109 -0
- package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.js +57 -0
- package/dist/server/modules/orchestrator/worktrees/dtos/worktree.dto.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/events/worktree.events.d.ts +4 -0
- package/dist/server/modules/orchestrator/worktrees/events/worktree.events.js +5 -0
- package/dist/server/modules/orchestrator/worktrees/events/worktree.events.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/index.d.ts +7 -0
- package/dist/server/modules/orchestrator/worktrees/index.js +24 -0
- package/dist/server/modules/orchestrator/worktrees/index.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.d.ts +18 -0
- package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.js +198 -0
- package/dist/server/modules/orchestrator/worktrees/local-worktrees.store.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.d.ts +87 -0
- package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js +1380 -0
- package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/worktree-validation.d.ts +4 -0
- package/dist/server/modules/orchestrator/worktrees/worktree-validation.js +43 -0
- package/dist/server/modules/orchestrator/worktrees/worktree-validation.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.module.d.ts +2 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.module.js +44 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.module.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.store.d.ts +38 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.store.js +5 -0
- package/dist/server/modules/orchestrator/worktrees/worktrees.store.js.map +1 -0
- package/dist/server/modules/profiles/dto.d.ts +4 -4
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +13 -3
- package/dist/server/modules/projects/controllers/projects.controller.js +55 -7
- package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
- package/dist/server/modules/projects/projects.module.js +3 -2
- package/dist/server/modules/projects/projects.module.js.map +1 -1
- package/dist/server/modules/projects/services/main-project-bootstrap.service.d.ts +11 -0
- package/dist/server/modules/projects/services/main-project-bootstrap.service.js +76 -0
- package/dist/server/modules/projects/services/main-project-bootstrap.service.js.map +1 -0
- package/dist/server/modules/projects/services/projects.service.d.ts +8 -0
- package/dist/server/modules/projects/services/projects.service.js +115 -37
- package/dist/server/modules/projects/services/projects.service.js.map +1 -1
- package/dist/server/modules/providers/adapters/gemini.adapter.d.ts +1 -1
- package/dist/server/modules/providers/adapters/gemini.adapter.js +6 -4
- package/dist/server/modules/providers/adapters/gemini.adapter.js.map +1 -1
- package/dist/server/modules/providers/controllers/providers.controller.d.ts +3 -0
- package/dist/server/modules/providers/controllers/providers.controller.js +28 -0
- package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
- package/dist/server/modules/providers/providers.module.js +2 -2
- package/dist/server/modules/providers/providers.module.js.map +1 -1
- package/dist/server/modules/registry/services/unified-template.service.js +6 -18
- package/dist/server/modules/registry/services/unified-template.service.js.map +1 -1
- package/dist/server/modules/reviews/dtos/review.dto.d.ts +4 -4
- package/dist/server/modules/reviews/reviews.module.js +2 -2
- package/dist/server/modules/reviews/reviews.module.js.map +1 -1
- package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.d.ts +3 -0
- package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.js +89 -0
- package/dist/server/modules/seeders/seeders/0005_seed_renew_instructions_subscriber.js.map +1 -0
- package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.d.ts +3 -0
- package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.js +60 -0
- package/dist/server/modules/seeders/seeders/0006_seed_rename_template_slugs.js.map +1 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js +4 -0
- package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions.service.d.ts +3 -1
- package/dist/server/modules/sessions/services/sessions.service.js +79 -22
- package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
- package/dist/server/modules/sessions/sessions.module.js +6 -4
- package/dist/server/modules/sessions/sessions.module.js.map +1 -1
- package/dist/server/modules/sessions/utils/claude-config.d.ts +6 -2
- package/dist/server/modules/sessions/utils/claude-config.js +19 -6
- package/dist/server/modules/sessions/utils/claude-config.js.map +1 -1
- package/dist/server/modules/settings/dtos/settings.dto.d.ts +4 -4
- package/dist/server/modules/skills/adapters/github-skill-source.base.d.ts +2 -5
- package/dist/server/modules/skills/adapters/github-skill-source.base.js +31 -100
- package/dist/server/modules/skills/adapters/github-skill-source.base.js.map +1 -1
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.d.ts +16 -0
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.js +265 -0
- package/dist/server/modules/skills/adapters/local-skill-source.adapter.js.map +1 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.d.ts +32 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.js +169 -0
- package/dist/server/modules/skills/adapters/skill-parsing.utils.js.map +1 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.d.ts +12 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.js +71 -0
- package/dist/server/modules/skills/controllers/local-sources.controller.js.map +1 -0
- package/dist/server/modules/skills/controllers/skills.controller.d.ts +11 -1
- package/dist/server/modules/skills/controllers/skills.controller.js +35 -3
- package/dist/server/modules/skills/controllers/skills.controller.js.map +1 -1
- package/dist/server/modules/skills/dtos/community-sources.dto.d.ts +2 -2
- package/dist/server/modules/skills/dtos/local-sources.dto.d.ts +42 -0
- package/dist/server/modules/skills/dtos/local-sources.dto.js +30 -0
- package/dist/server/modules/skills/dtos/local-sources.dto.js.map +1 -0
- package/dist/server/modules/skills/dtos/skill.dto.d.ts +23 -7
- package/dist/server/modules/skills/dtos/skill.dto.js +7 -1
- package/dist/server/modules/skills/dtos/skill.dto.js.map +1 -1
- package/dist/server/modules/skills/services/community-sources.service.d.ts +8 -1
- package/dist/server/modules/skills/services/community-sources.service.js +62 -3
- package/dist/server/modules/skills/services/community-sources.service.js.map +1 -1
- package/dist/server/modules/skills/services/local-sources.service.d.ts +20 -0
- package/dist/server/modules/skills/services/local-sources.service.js +206 -0
- package/dist/server/modules/skills/services/local-sources.service.js.map +1 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.d.ts +11 -0
- package/dist/server/modules/skills/services/skill-source-registry.service.js +99 -3
- package/dist/server/modules/skills/services/skill-source-registry.service.js.map +1 -1
- package/dist/server/modules/skills/services/skill-sync.service.d.ts +4 -0
- package/dist/server/modules/skills/services/skill-sync.service.js +93 -0
- package/dist/server/modules/skills/services/skill-sync.service.js.map +1 -1
- package/dist/server/modules/skills/services/skills.service.d.ts +14 -2
- package/dist/server/modules/skills/services/skills.service.js +125 -23
- package/dist/server/modules/skills/services/skills.service.js.map +1 -1
- package/dist/server/modules/skills/skills.module.js +4 -1
- package/dist/server/modules/skills/skills.module.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +1115 -102
- package/dist/server/modules/storage/db/schema.js +81 -1
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/db/sqlite-json.d.ts +2 -0
- package/dist/server/modules/storage/db/sqlite-json.js +8 -0
- package/dist/server/modules/storage/db/sqlite-json.js.map +1 -0
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +17 -2
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/local-storage.service.d.ts +19 -2
- package/dist/server/modules/storage/local/local-storage.service.js +313 -5
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +10 -0
- package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +16 -16
- package/dist/server/modules/subscribers/events/event-fields-catalog.js +18 -0
- package/dist/server/modules/subscribers/events/event-fields-catalog.js.map +1 -1
- package/dist/server/modules/subscribers/subscribers.module.js +2 -2
- package/dist/server/modules/subscribers/subscribers.module.js.map +1 -1
- package/dist/server/modules/terminal/gateways/terminal.gateway.js +7 -2
- package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
- package/dist/server/modules/terminal/services/tmux.service.d.ts +9 -0
- package/dist/server/modules/terminal/services/tmux.service.js +55 -5
- package/dist/server/modules/terminal/services/tmux.service.js.map +1 -1
- package/dist/server/modules/terminal/terminal.module.js +2 -2
- package/dist/server/modules/terminal/terminal.module.js.map +1 -1
- package/dist/server/modules/watchers/watchers.module.js +2 -2
- package/dist/server/modules/watchers/watchers.module.js.map +1 -1
- package/dist/server/templates/3-agents-dev.json +662 -0
- package/dist/server/templates/{dev-loop.json → 5-agents-dev.json} +174 -100
- package/dist/server/test-setup.js +7 -0
- package/dist/server/test-setup.js.map +1 -1
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/ReviewDetailPage-CZZQtaY7.js +1 -0
- package/dist/server/ui/assets/{ReviewsPage-C98ST0lf.js → ReviewsPage-C209GLQG.js} +1 -1
- package/dist/server/ui/assets/index-DvRuLfpZ.css +32 -0
- package/dist/server/ui/assets/index-Th1FDtKR.js +977 -0
- package/dist/server/ui/assets/{useReviewSubscription-CmLuF45Z.js → useReviewSubscription-Dcabsa78.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/dist/templates/3-agents-dev.json +662 -0
- package/dist/templates/{dev-loop.json → 5-agents-dev.json} +174 -100
- package/package.json +19 -1
- package/dist/server/ui/assets/ReviewDetailPage-D13dH7Wh.js +0 -6
- package/dist/server/ui/assets/index-C8Dc1yQf.js +0 -945
- package/dist/server/ui/assets/index-DZkJ40z9.css +0 -32
|
@@ -1,10 +1,17 @@
|
|
|
1
|
+
import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
|
|
1
2
|
import type { BetterSQLite3Database } from 'drizzle-orm/better-sqlite3';
|
|
2
3
|
import type { EventLogListFilters, EventLogListResult } from '../dtos/event-log.dto';
|
|
3
4
|
import { EventsStreamService } from './events-stream.service';
|
|
4
|
-
export declare class EventLogService {
|
|
5
|
+
export declare class EventLogService implements OnModuleInit, OnModuleDestroy {
|
|
5
6
|
private readonly db;
|
|
6
7
|
private readonly eventsStreamService;
|
|
8
|
+
private cleanupTimer?;
|
|
7
9
|
constructor(db: BetterSQLite3Database, eventsStreamService: EventsStreamService);
|
|
10
|
+
onModuleInit(): Promise<void>;
|
|
11
|
+
onModuleDestroy(): void;
|
|
12
|
+
cleanupOldWorktreeActivityEvents(params?: {
|
|
13
|
+
retentionDays?: number;
|
|
14
|
+
}): Promise<void>;
|
|
8
15
|
recordPublished(params: {
|
|
9
16
|
name: string;
|
|
10
17
|
payload: unknown;
|
|
@@ -52,6 +52,9 @@ const db_provider_1 = require("../../storage/db/db.provider");
|
|
|
52
52
|
const logger_1 = require("../../../common/logging/logger");
|
|
53
53
|
const events_stream_service_1 = require("./events-stream.service");
|
|
54
54
|
const logger = (0, logger_1.createLogger)('EventLogService');
|
|
55
|
+
const WORKTREE_ACTIVITY_EVENT_NAME = 'orchestrator.worktree.activity';
|
|
56
|
+
const WORKTREE_ACTIVITY_RETENTION_DAYS = 30;
|
|
57
|
+
const WORKTREE_ACTIVITY_CLEANUP_INTERVAL_MS = 86_400_000;
|
|
55
58
|
function safeStringify(value) {
|
|
56
59
|
if (value === null || value === undefined) {
|
|
57
60
|
return null;
|
|
@@ -84,6 +87,40 @@ let EventLogService = class EventLogService {
|
|
|
84
87
|
this.db = db;
|
|
85
88
|
this.eventsStreamService = eventsStreamService;
|
|
86
89
|
}
|
|
90
|
+
async onModuleInit() {
|
|
91
|
+
if (this.cleanupTimer) {
|
|
92
|
+
clearInterval(this.cleanupTimer);
|
|
93
|
+
this.cleanupTimer = undefined;
|
|
94
|
+
}
|
|
95
|
+
await this.cleanupOldWorktreeActivityEvents().catch((error) => {
|
|
96
|
+
logger.warn({ error }, 'Failed initial cleanup of worktree activity events');
|
|
97
|
+
});
|
|
98
|
+
this.cleanupTimer = setInterval(() => {
|
|
99
|
+
this.cleanupOldWorktreeActivityEvents().catch((error) => {
|
|
100
|
+
logger.warn({ error }, 'Failed scheduled cleanup of worktree activity events');
|
|
101
|
+
});
|
|
102
|
+
}, WORKTREE_ACTIVITY_CLEANUP_INTERVAL_MS);
|
|
103
|
+
this.cleanupTimer.unref?.();
|
|
104
|
+
}
|
|
105
|
+
onModuleDestroy() {
|
|
106
|
+
if (!this.cleanupTimer) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
clearInterval(this.cleanupTimer);
|
|
110
|
+
this.cleanupTimer = undefined;
|
|
111
|
+
}
|
|
112
|
+
async cleanupOldWorktreeActivityEvents(params) {
|
|
113
|
+
const retentionDaysRaw = params?.retentionDays ?? WORKTREE_ACTIVITY_RETENTION_DAYS;
|
|
114
|
+
const retentionDays = Number.isFinite(retentionDaysRaw)
|
|
115
|
+
? Math.max(1, Math.trunc(retentionDaysRaw))
|
|
116
|
+
: WORKTREE_ACTIVITY_RETENTION_DAYS;
|
|
117
|
+
const cutoffIso = new Date(Date.now() - retentionDays * 86_400_000).toISOString();
|
|
118
|
+
const { events } = await Promise.resolve().then(() => __importStar(require('../../storage/db/schema')));
|
|
119
|
+
const { and, eq, lt } = await Promise.resolve().then(() => __importStar(require('drizzle-orm')));
|
|
120
|
+
await this.db
|
|
121
|
+
.delete(events)
|
|
122
|
+
.where(and(eq(events.name, WORKTREE_ACTIVITY_EVENT_NAME), lt(events.publishedAt, cutoffIso)));
|
|
123
|
+
}
|
|
87
124
|
async recordPublished(params) {
|
|
88
125
|
const { events } = await Promise.resolve().then(() => __importStar(require('../../storage/db/schema')));
|
|
89
126
|
const eventId = params.id ?? (0, crypto_1.randomUUID)();
|
|
@@ -147,12 +184,16 @@ let EventLogService = class EventLogService {
|
|
|
147
184
|
async listEvents(filters) {
|
|
148
185
|
const { events, eventHandlers } = await Promise.resolve().then(() => __importStar(require('../../storage/db/schema')));
|
|
149
186
|
const { and, eq, gte, lte, inArray, sql, desc } = await Promise.resolve().then(() => __importStar(require('drizzle-orm')));
|
|
187
|
+
const { safeJsonFieldEquals } = await Promise.resolve().then(() => __importStar(require('../../storage/db/sqlite-json')));
|
|
150
188
|
const limit = filters.limit ?? 50;
|
|
151
189
|
const offset = filters.offset ?? 0;
|
|
152
190
|
const eventConditions = [];
|
|
153
191
|
if (filters.name) {
|
|
154
192
|
eventConditions.push(eq(events.name, filters.name));
|
|
155
193
|
}
|
|
194
|
+
if (filters.ownerProjectId) {
|
|
195
|
+
eventConditions.push(safeJsonFieldEquals(events.payloadJson, '$.ownerProjectId', filters.ownerProjectId));
|
|
196
|
+
}
|
|
156
197
|
if (filters.from) {
|
|
157
198
|
eventConditions.push(gte(events.publishedAt, filters.from));
|
|
158
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-log.service.js","sourceRoot":"","sources":["../../../../src/modules/events/services/event-log.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"event-log.service.js","sourceRoot":"","sources":["../../../../src/modules/events/services/event-log.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,11 +6,13 @@ const chat_message_broadcaster_subscriber_1 = require("./chat-message-broadcaste
|
|
|
6
6
|
const chat_message_delivery_subscriber_1 = require("./chat-message-delivery.subscriber");
|
|
7
7
|
const review_comment_notifier_subscriber_1 = require("./review-comment-notifier.subscriber");
|
|
8
8
|
const review_broadcaster_subscriber_1 = require("./review-broadcaster.subscriber");
|
|
9
|
+
const worktree_broadcaster_subscriber_1 = require("./worktree-broadcaster.subscriber");
|
|
9
10
|
exports.subscribers = [
|
|
10
11
|
epic_assignment_notifier_subscriber_1.EpicAssignmentNotifierSubscriber,
|
|
11
12
|
chat_message_broadcaster_subscriber_1.ChatMessageBroadcasterSubscriber,
|
|
12
13
|
chat_message_delivery_subscriber_1.ChatMessageDeliverySubscriber,
|
|
13
14
|
review_comment_notifier_subscriber_1.ReviewCommentNotifierSubscriber,
|
|
14
15
|
review_broadcaster_subscriber_1.ReviewBroadcasterSubscriber,
|
|
16
|
+
worktree_broadcaster_subscriber_1.WorktreeBroadcasterSubscriber,
|
|
15
17
|
];
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/events/subscribers/index.ts"],"names":[],"mappings":";;;AACA,+FAAyF;AACzF,+FAAyF;AACzF,yFAAmF;AACnF,6FAAuF;AACvF,mFAA8E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/events/subscribers/index.ts"],"names":[],"mappings":";;;AACA,+FAAyF;AACzF,+FAAyF;AACzF,yFAAmF;AACnF,6FAAuF;AACvF,mFAA8E;AAC9E,uFAAkF;AAErE,QAAA,WAAW,GAAe;IACrC,sEAAgC;IAChC,sEAAgC;IAChC,gEAA6B;IAC7B,oEAA+B;IAC/B,2DAA2B;IAC3B,+DAA6B;CAC9B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TerminalGateway } from '../../terminal/gateways/terminal.gateway';
|
|
2
|
+
import { WorktreeChangedEvent } from '../../orchestrator/worktrees/events/worktree.events';
|
|
3
|
+
export declare class WorktreeBroadcasterSubscriber {
|
|
4
|
+
private readonly terminalGateway;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
constructor(terminalGateway: TerminalGateway);
|
|
7
|
+
handleWorktreeChanged(payload: WorktreeChangedEvent): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var WorktreeBroadcasterSubscriber_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.WorktreeBroadcasterSubscriber = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
19
|
+
const terminal_gateway_1 = require("../../terminal/gateways/terminal.gateway");
|
|
20
|
+
const worktree_events_1 = require("../../orchestrator/worktrees/events/worktree.events");
|
|
21
|
+
let WorktreeBroadcasterSubscriber = WorktreeBroadcasterSubscriber_1 = class WorktreeBroadcasterSubscriber {
|
|
22
|
+
constructor(terminalGateway) {
|
|
23
|
+
this.terminalGateway = terminalGateway;
|
|
24
|
+
this.logger = new common_1.Logger(WorktreeBroadcasterSubscriber_1.name);
|
|
25
|
+
}
|
|
26
|
+
async handleWorktreeChanged(payload) {
|
|
27
|
+
try {
|
|
28
|
+
this.terminalGateway.broadcastEvent('worktrees', 'changed', {});
|
|
29
|
+
this.logger.debug({ worktreeId: payload.worktreeId }, 'Broadcasted worktree changed event via WebSocket');
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.logger.error({ error, worktreeId: payload.worktreeId }, 'Failed to broadcast worktree changed event');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.WorktreeBroadcasterSubscriber = WorktreeBroadcasterSubscriber;
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, event_emitter_1.OnEvent)(worktree_events_1.WORKTREE_CHANGED_EVENT, { async: true }),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", [Object]),
|
|
41
|
+
__metadata("design:returntype", Promise)
|
|
42
|
+
], WorktreeBroadcasterSubscriber.prototype, "handleWorktreeChanged", null);
|
|
43
|
+
exports.WorktreeBroadcasterSubscriber = WorktreeBroadcasterSubscriber = WorktreeBroadcasterSubscriber_1 = __decorate([
|
|
44
|
+
(0, common_1.Injectable)(),
|
|
45
|
+
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => terminal_gateway_1.TerminalGateway))),
|
|
46
|
+
__metadata("design:paramtypes", [terminal_gateway_1.TerminalGateway])
|
|
47
|
+
], WorktreeBroadcasterSubscriber);
|
|
48
|
+
//# sourceMappingURL=worktree-broadcaster.subscriber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worktree-broadcaster.subscriber.js","sourceRoot":"","sources":["../../../../src/modules/events/subscribers/worktree-broadcaster.subscriber.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwE;AACxE,yDAAgD;AAChD,+EAA2E;AAC3E,yFAG6D;AAGtD,IAAM,6BAA6B,qCAAnC,MAAM,6BAA6B;IAGxC,YAEE,eAAiD;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAJlC,WAAM,GAAG,IAAI,eAAM,CAAC,+BAA6B,CAAC,IAAI,CAAC,CAAC;IAKtE,CAAC;IAGE,AAAN,KAAK,CAAC,qBAAqB,CAAC,OAA6B;QACvD,IAAI,CAAC;YACH,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,EAClC,kDAAkD,CACnD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,EACzC,4CAA4C,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAvBY,sEAA6B;AASlC;IADL,IAAA,uBAAO,EAAC,wCAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;;;0EAchD;wCAtBU,6BAA6B;IADzC,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC,CAAC,CAAA;qCACR,kCAAe;GALxC,6BAA6B,CAuBzC"}
|
|
@@ -4,8 +4,8 @@ export declare const ListCommitsQuerySchema: z.ZodObject<{
|
|
|
4
4
|
ref: z.ZodOptional<z.ZodString>;
|
|
5
5
|
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
6
6
|
}, "strip", z.ZodTypeAny, {
|
|
7
|
-
projectId: string;
|
|
8
7
|
limit: number;
|
|
8
|
+
projectId: string;
|
|
9
9
|
ref?: string | undefined;
|
|
10
10
|
}, {
|
|
11
11
|
projectId: string;
|
|
@@ -12,13 +12,13 @@ const guests_service_1 = require("./services/guests.service");
|
|
|
12
12
|
const guest_health_service_1 = require("./services/guest-health.service");
|
|
13
13
|
const storage_module_1 = require("../storage/storage.module");
|
|
14
14
|
const terminal_module_1 = require("../terminal/terminal.module");
|
|
15
|
-
const
|
|
15
|
+
const events_domain_module_1 = require("../events/events-domain.module");
|
|
16
16
|
let GuestsModule = class GuestsModule {
|
|
17
17
|
};
|
|
18
18
|
exports.GuestsModule = GuestsModule;
|
|
19
19
|
exports.GuestsModule = GuestsModule = __decorate([
|
|
20
20
|
(0, common_1.Module)({
|
|
21
|
-
imports: [storage_module_1.StorageModule, (0, common_1.forwardRef)(() => terminal_module_1.TerminalModule), (0, common_1.forwardRef)(() =>
|
|
21
|
+
imports: [storage_module_1.StorageModule, (0, common_1.forwardRef)(() => terminal_module_1.TerminalModule), (0, common_1.forwardRef)(() => events_domain_module_1.EventsDomainModule)],
|
|
22
22
|
providers: [guests_service_1.GuestsService, guest_health_service_1.GuestHealthService],
|
|
23
23
|
exports: [guests_service_1.GuestsService, guest_health_service_1.GuestHealthService],
|
|
24
24
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guests.module.js","sourceRoot":"","sources":["../../../src/modules/guests/guests.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,8DAA0D;AAC1D,0EAAqE;AACrE,8DAA0D;AAC1D,iEAA6D;AAC7D,
|
|
1
|
+
{"version":3,"file":"guests.module.js","sourceRoot":"","sources":["../../../src/modules/guests/guests.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,8DAA0D;AAC1D,0EAAqE;AACrE,8DAA0D;AAC1D,iEAA6D;AAC7D,yEAAoE;AAO7D,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IALxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,8BAAa,EAAE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,gCAAc,CAAC,EAAE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yCAAkB,CAAC,CAAC;QAChG,SAAS,EAAE,CAAC,8BAAa,EAAE,yCAAkB,CAAC;QAC9C,OAAO,EAAE,CAAC,8BAAa,EAAE,yCAAkB,CAAC;KAC7C,CAAC;GACW,YAAY,CAAG"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HooksService } from '../services/hooks.service';
|
|
2
|
+
import { type HookEventResponse } from '../dtos/hook-event.dto';
|
|
3
|
+
export declare class HooksController {
|
|
4
|
+
private readonly hooksService;
|
|
5
|
+
constructor(hooksService: HooksService);
|
|
6
|
+
receiveHookEvent(body: unknown): Promise<HookEventResponse>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.HooksController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const hooks_service_1 = require("../services/hooks.service");
|
|
18
|
+
const hook_event_dto_1 = require("../dtos/hook-event.dto");
|
|
19
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
20
|
+
const logger = (0, logger_1.createLogger)('HooksController');
|
|
21
|
+
let HooksController = class HooksController {
|
|
22
|
+
constructor(hooksService) {
|
|
23
|
+
this.hooksService = hooksService;
|
|
24
|
+
}
|
|
25
|
+
async receiveHookEvent(body) {
|
|
26
|
+
logger.info('POST /api/hooks/events');
|
|
27
|
+
const parseResult = hook_event_dto_1.HookEventSchema.safeParse(body);
|
|
28
|
+
if (!parseResult.success) {
|
|
29
|
+
throw new common_1.BadRequestException({
|
|
30
|
+
message: 'Validation failed',
|
|
31
|
+
errors: parseResult.error.errors,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return this.hooksService.handleHookEvent(parseResult.data);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.HooksController = HooksController;
|
|
38
|
+
__decorate([
|
|
39
|
+
(0, common_1.Post)('events'),
|
|
40
|
+
__param(0, (0, common_1.Body)()),
|
|
41
|
+
__metadata("design:type", Function),
|
|
42
|
+
__metadata("design:paramtypes", [Object]),
|
|
43
|
+
__metadata("design:returntype", Promise)
|
|
44
|
+
], HooksController.prototype, "receiveHookEvent", null);
|
|
45
|
+
exports.HooksController = HooksController = __decorate([
|
|
46
|
+
(0, common_1.Controller)('api/hooks'),
|
|
47
|
+
__metadata("design:paramtypes", [hooks_service_1.HooksService])
|
|
48
|
+
], HooksController);
|
|
49
|
+
//# sourceMappingURL=hooks.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.controller.js","sourceRoot":"","sources":["../../../../src/modules/hooks/controllers/hooks.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6E;AAC7E,6DAAyD;AACzD,2DAAiF;AACjF,2DAA8D;AAE9D,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC;AAGxC,IAAM,eAAe,GAArB,MAAM,eAAe;IAC1B,YAA6B,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAQrD,AAAN,KAAK,CAAC,gBAAgB,CAAS,IAAa;QAC1C,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEtC,MAAM,WAAW,GAAG,gCAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,4BAAmB,CAAC;gBAC5B,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM;aACjC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACF,CAAA;AAtBY,0CAAe;AASpB;IADL,IAAA,aAAI,EAAC,QAAQ,CAAC;IACS,WAAA,IAAA,aAAI,GAAE,CAAA;;;;uDAY7B;0BArBU,eAAe;IAD3B,IAAA,mBAAU,EAAC,WAAW,CAAC;qCAEqB,4BAAY;GAD5C,eAAe,CAsB3B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const HookEventSchema: z.ZodObject<{
|
|
3
|
+
hookEventName: z.ZodString;
|
|
4
|
+
claudeSessionId: z.ZodString;
|
|
5
|
+
source: z.ZodString;
|
|
6
|
+
model: z.ZodOptional<z.ZodString>;
|
|
7
|
+
permissionMode: z.ZodOptional<z.ZodString>;
|
|
8
|
+
transcriptPath: z.ZodOptional<z.ZodString>;
|
|
9
|
+
tmuxSessionName: z.ZodString;
|
|
10
|
+
projectId: z.ZodString;
|
|
11
|
+
agentId: z.ZodNullable<z.ZodString>;
|
|
12
|
+
sessionId: z.ZodNullable<z.ZodString>;
|
|
13
|
+
}, "strict", z.ZodTypeAny, {
|
|
14
|
+
projectId: string;
|
|
15
|
+
agentId: string | null;
|
|
16
|
+
source: string;
|
|
17
|
+
sessionId: string | null;
|
|
18
|
+
tmuxSessionName: string;
|
|
19
|
+
claudeSessionId: string;
|
|
20
|
+
hookEventName: string;
|
|
21
|
+
model?: string | undefined;
|
|
22
|
+
permissionMode?: string | undefined;
|
|
23
|
+
transcriptPath?: string | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
projectId: string;
|
|
26
|
+
agentId: string | null;
|
|
27
|
+
source: string;
|
|
28
|
+
sessionId: string | null;
|
|
29
|
+
tmuxSessionName: string;
|
|
30
|
+
claudeSessionId: string;
|
|
31
|
+
hookEventName: string;
|
|
32
|
+
model?: string | undefined;
|
|
33
|
+
permissionMode?: string | undefined;
|
|
34
|
+
transcriptPath?: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
export type HookEventData = z.infer<typeof HookEventSchema>;
|
|
37
|
+
export interface HookEventResponse {
|
|
38
|
+
ok: boolean;
|
|
39
|
+
handled: boolean;
|
|
40
|
+
data: Record<string, unknown>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HookEventSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.HookEventSchema = zod_1.z
|
|
6
|
+
.object({
|
|
7
|
+
hookEventName: zod_1.z.string().min(1),
|
|
8
|
+
claudeSessionId: zod_1.z.string().min(1),
|
|
9
|
+
source: zod_1.z.string().min(1),
|
|
10
|
+
model: zod_1.z.string().max(200).optional(),
|
|
11
|
+
permissionMode: zod_1.z.string().max(100).optional(),
|
|
12
|
+
transcriptPath: zod_1.z.string().max(1000).optional(),
|
|
13
|
+
tmuxSessionName: zod_1.z.string().min(1),
|
|
14
|
+
projectId: zod_1.z.string().uuid(),
|
|
15
|
+
agentId: zod_1.z.string().uuid().nullable(),
|
|
16
|
+
sessionId: zod_1.z.string().uuid().nullable(),
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
//# sourceMappingURL=hook-event.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-event.dto.js","sourceRoot":"","sources":["../../../../src/modules/hooks/dtos/hook-event.dto.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AASX,QAAA,eAAe,GAAG,OAAC;KAC7B,MAAM,CAAC;IAEN,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAIhC,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzB,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAErC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAE9C,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAI/C,eAAe,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAE5B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;IAErC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HooksModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const hooks_controller_1 = require("./controllers/hooks.controller");
|
|
12
|
+
const hooks_service_1 = require("./services/hooks.service");
|
|
13
|
+
const hooks_config_service_1 = require("./services/hooks-config.service");
|
|
14
|
+
const storage_module_1 = require("../storage/storage.module");
|
|
15
|
+
const events_domain_module_1 = require("../events/events-domain.module");
|
|
16
|
+
let HooksModule = class HooksModule {
|
|
17
|
+
};
|
|
18
|
+
exports.HooksModule = HooksModule;
|
|
19
|
+
exports.HooksModule = HooksModule = __decorate([
|
|
20
|
+
(0, common_1.Module)({
|
|
21
|
+
imports: [storage_module_1.StorageModule, (0, common_1.forwardRef)(() => events_domain_module_1.EventsDomainModule)],
|
|
22
|
+
controllers: [hooks_controller_1.HooksController],
|
|
23
|
+
providers: [hooks_service_1.HooksService, hooks_config_service_1.HooksConfigService],
|
|
24
|
+
exports: [hooks_service_1.HooksService, hooks_config_service_1.HooksConfigService],
|
|
25
|
+
})
|
|
26
|
+
], HooksModule);
|
|
27
|
+
//# sourceMappingURL=hooks.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.module.js","sourceRoot":"","sources":["../../../src/modules/hooks/hooks.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,qEAAiE;AACjE,4DAAwD;AACxD,0EAAqE;AACrE,8DAA0D;AAC1D,yEAAoE;AAQ7D,IAAM,WAAW,GAAjB,MAAM,WAAW;CAAG,CAAA;AAAd,kCAAW;sBAAX,WAAW;IANvB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,8BAAa,EAAE,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,yCAAkB,CAAC,CAAC;QAC9D,WAAW,EAAE,CAAC,kCAAe,CAAC;QAC9B,SAAS,EAAE,CAAC,4BAAY,EAAE,yCAAkB,CAAC;QAC7C,OAAO,EAAE,CAAC,4BAAY,EAAE,yCAAkB,CAAC;KAC5C,CAAC;GACW,WAAW,CAAG"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HooksConfigService = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const promises_1 = require("fs/promises");
|
|
12
|
+
const path_1 = require("path");
|
|
13
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
14
|
+
const logger = (0, logger_1.createLogger)('HooksConfigService');
|
|
15
|
+
const SETTINGS_FILE_MODE = 0o600;
|
|
16
|
+
const SCRIPT_FILE_MODE = 0o755;
|
|
17
|
+
const RELAY_SCRIPT_CONTENT = `#!/bin/bash
|
|
18
|
+
# DevChain relay script — bridges Claude Code hooks to DevChain's event API.
|
|
19
|
+
# Auto-generated by DevChain. Do not edit manually.
|
|
20
|
+
# Requires: jq, curl
|
|
21
|
+
|
|
22
|
+
set -euo pipefail
|
|
23
|
+
|
|
24
|
+
# Read Claude Code hook JSON from stdin
|
|
25
|
+
INPUT="$(cat)"
|
|
26
|
+
|
|
27
|
+
# Bail if no API URL configured
|
|
28
|
+
if [ -z "\${DEVCHAIN_API_URL:-}" ]; then
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Extract hook event name from input
|
|
33
|
+
HOOK_EVENT_NAME="$(echo "$INPUT" | jq -r '.hook_event_name // empty')"
|
|
34
|
+
if [ -z "$HOOK_EVENT_NAME" ]; then
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Capture tmux session name (fallback to env var if tmux unavailable)
|
|
39
|
+
TMUX_SESSION="\${DEVCHAIN_TMUX_SESSION_NAME:-}"
|
|
40
|
+
if [ -z "$TMUX_SESSION" ] && command -v tmux >/dev/null 2>&1; then
|
|
41
|
+
TMUX_SESSION="$(tmux display-message -p '#S' 2>/dev/null || true)"
|
|
42
|
+
fi
|
|
43
|
+
if [ -z "$TMUX_SESSION" ]; then
|
|
44
|
+
exit 0
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Build combined payload: Claude Code fields + DevChain env vars
|
|
48
|
+
PAYLOAD="$(echo "$INPUT" | jq \\
|
|
49
|
+
--arg hookEventName "$HOOK_EVENT_NAME" \\
|
|
50
|
+
--arg claudeSessionId "$(echo "$INPUT" | jq -r '.session_id // empty')" \\
|
|
51
|
+
--arg source "$(echo "$INPUT" | jq -r '.source // empty')" \\
|
|
52
|
+
--arg model "$(echo "$INPUT" | jq -r '.model // empty')" \\
|
|
53
|
+
--arg permissionMode "$(echo "$INPUT" | jq -r '.permission_mode // empty')" \\
|
|
54
|
+
--arg transcriptPath "$(echo "$INPUT" | jq -r '.transcript_path // empty')" \\
|
|
55
|
+
--arg tmuxSessionName "$TMUX_SESSION" \\
|
|
56
|
+
--arg projectId "\${DEVCHAIN_PROJECT_ID:-}" \\
|
|
57
|
+
--arg agentId "\${DEVCHAIN_AGENT_ID:-}" \\
|
|
58
|
+
--arg sessionId "\${DEVCHAIN_SESSION_ID:-}" \\
|
|
59
|
+
'{
|
|
60
|
+
hookEventName: $hookEventName,
|
|
61
|
+
claudeSessionId: $claudeSessionId,
|
|
62
|
+
source: $source,
|
|
63
|
+
tmuxSessionName: $tmuxSessionName,
|
|
64
|
+
projectId: $projectId,
|
|
65
|
+
agentId: (if $agentId == "" then null else $agentId end),
|
|
66
|
+
sessionId: (if $sessionId == "" then null else $sessionId end)
|
|
67
|
+
}
|
|
68
|
+
+ (if $model != "" then {model: $model} else {} end)
|
|
69
|
+
+ (if $permissionMode != "" then {permissionMode: $permissionMode} else {} end)
|
|
70
|
+
+ (if $transcriptPath != "" then {transcriptPath: $transcriptPath} else {} end)
|
|
71
|
+
')" || exit 0
|
|
72
|
+
|
|
73
|
+
# POST to DevChain API, capture response
|
|
74
|
+
RESPONSE="$(curl -s -f -X POST \\
|
|
75
|
+
-H "Content-Type: application/json" \\
|
|
76
|
+
-d "$PAYLOAD" \\
|
|
77
|
+
"\${DEVCHAIN_API_URL}/api/hooks/events" \\
|
|
78
|
+
--max-time 10 \\
|
|
79
|
+
2>/dev/null)" || exit 0
|
|
80
|
+
|
|
81
|
+
# Bidirectional: output hook-compatible JSON if response contains data
|
|
82
|
+
if [ -n "$RESPONSE" ]; then
|
|
83
|
+
# Check if response has non-empty data with additionalContext
|
|
84
|
+
ADDITIONAL_CONTEXT="$(echo "$RESPONSE" | jq -r '.data.additionalContext // empty' 2>/dev/null)" || true
|
|
85
|
+
if [ -n "$ADDITIONAL_CONTEXT" ]; then
|
|
86
|
+
jq -n --arg ctx "$ADDITIONAL_CONTEXT" --arg evt "$HOOK_EVENT_NAME" '{
|
|
87
|
+
hookSpecificOutput: {
|
|
88
|
+
hookEventName: $evt,
|
|
89
|
+
additionalContext: $ctx
|
|
90
|
+
}
|
|
91
|
+
}' 2>/dev/null || true
|
|
92
|
+
fi
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
exit 0
|
|
96
|
+
`;
|
|
97
|
+
let HooksConfigService = class HooksConfigService {
|
|
98
|
+
async ensureHooksConfig(projectRootPath) {
|
|
99
|
+
try {
|
|
100
|
+
await this.materializeRelayScript(projectRootPath);
|
|
101
|
+
await this.mergeHooksSettings(projectRootPath);
|
|
102
|
+
logger.info({ projectRootPath }, 'Hooks config ensured successfully');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
logger.error({ error, projectRootPath }, 'Failed to ensure hooks config (non-fatal)');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async materializeRelayScript(projectRootPath) {
|
|
109
|
+
const hooksDir = (0, path_1.join)(projectRootPath, '.claude', 'hooks');
|
|
110
|
+
const scriptPath = (0, path_1.join)(hooksDir, 'devchain-relay.sh');
|
|
111
|
+
const tempPath = `${scriptPath}.tmp-${process.pid}-${Date.now()}`;
|
|
112
|
+
await (0, promises_1.mkdir)(hooksDir, { recursive: true });
|
|
113
|
+
try {
|
|
114
|
+
await (0, promises_1.writeFile)(tempPath, RELAY_SCRIPT_CONTENT, {
|
|
115
|
+
encoding: 'utf-8',
|
|
116
|
+
mode: SCRIPT_FILE_MODE,
|
|
117
|
+
});
|
|
118
|
+
await (0, promises_1.rename)(tempPath, scriptPath);
|
|
119
|
+
await (0, promises_1.chmod)(scriptPath, SCRIPT_FILE_MODE);
|
|
120
|
+
logger.debug({ scriptPath }, 'Relay script materialized');
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
try {
|
|
124
|
+
await (0, promises_1.unlink)(tempPath);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async mergeHooksSettings(projectRootPath) {
|
|
132
|
+
const settingsDir = (0, path_1.join)(projectRootPath, '.claude');
|
|
133
|
+
const settingsPath = (0, path_1.join)(settingsDir, 'settings.local.json');
|
|
134
|
+
const tempPath = `${settingsPath}.tmp-${process.pid}-${Date.now()}`;
|
|
135
|
+
const relayScriptPath = (0, path_1.join)(projectRootPath, '.claude', 'hooks', 'devchain-relay.sh');
|
|
136
|
+
await (0, promises_1.mkdir)(settingsDir, { recursive: true });
|
|
137
|
+
let settings;
|
|
138
|
+
try {
|
|
139
|
+
const content = await (0, promises_1.readFile)(settingsPath, 'utf-8');
|
|
140
|
+
settings = JSON.parse(content);
|
|
141
|
+
if (typeof settings !== 'object' || settings === null || Array.isArray(settings)) {
|
|
142
|
+
logger.warn({ settingsPath }, 'Invalid settings.local.json (not an object) — creating fresh');
|
|
143
|
+
settings = {};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
if (error.code === 'ENOENT') {
|
|
148
|
+
settings = {};
|
|
149
|
+
}
|
|
150
|
+
else if (error instanceof SyntaxError) {
|
|
151
|
+
logger.warn({ settingsPath }, 'Invalid JSON in settings.local.json — creating fresh');
|
|
152
|
+
settings = {};
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const devchainHook = {
|
|
159
|
+
type: 'command',
|
|
160
|
+
command: `"${relayScriptPath}"`,
|
|
161
|
+
timeout: 10,
|
|
162
|
+
};
|
|
163
|
+
if (!settings.hooks || typeof settings.hooks !== 'object') {
|
|
164
|
+
settings.hooks = {};
|
|
165
|
+
}
|
|
166
|
+
const hooks = settings.hooks;
|
|
167
|
+
const sessionStartEntries = Array.isArray(hooks.SessionStart) ? hooks.SessionStart : [];
|
|
168
|
+
const devchainMarker = 'devchain-relay.sh';
|
|
169
|
+
let devchainGroupFound = false;
|
|
170
|
+
const updatedEntries = sessionStartEntries.map((entry) => {
|
|
171
|
+
if (!isMatcherGroup(entry))
|
|
172
|
+
return entry;
|
|
173
|
+
const hasDevchain = entry.hooks?.some((h) => isHookEntry(h) && typeof h.command === 'string' && h.command.includes(devchainMarker));
|
|
174
|
+
if (hasDevchain) {
|
|
175
|
+
devchainGroupFound = true;
|
|
176
|
+
return {
|
|
177
|
+
...entry,
|
|
178
|
+
hooks: [devchainHook],
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return entry;
|
|
182
|
+
});
|
|
183
|
+
if (!devchainGroupFound) {
|
|
184
|
+
updatedEntries.push({
|
|
185
|
+
hooks: [devchainHook],
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
hooks.SessionStart = updatedEntries;
|
|
189
|
+
const output = JSON.stringify(settings, null, 2) + '\n';
|
|
190
|
+
try {
|
|
191
|
+
await (0, promises_1.writeFile)(tempPath, output, { encoding: 'utf-8', mode: SETTINGS_FILE_MODE });
|
|
192
|
+
await (0, promises_1.rename)(tempPath, settingsPath);
|
|
193
|
+
logger.debug({ settingsPath }, 'Hooks settings merged');
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
try {
|
|
197
|
+
await (0, promises_1.unlink)(tempPath);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
}
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
exports.HooksConfigService = HooksConfigService;
|
|
206
|
+
exports.HooksConfigService = HooksConfigService = __decorate([
|
|
207
|
+
(0, common_1.Injectable)()
|
|
208
|
+
], HooksConfigService);
|
|
209
|
+
function isMatcherGroup(value) {
|
|
210
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
211
|
+
}
|
|
212
|
+
function isHookEntry(value) {
|
|
213
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=hooks-config.service.js.map
|