@kynetic-ai/spec 0.11.0 → 0.12.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 +55 -455
- package/dist/agent-runtime/bootstrap.d.ts +31 -0
- package/dist/agent-runtime/bootstrap.d.ts.map +1 -0
- package/dist/agent-runtime/bootstrap.js +302 -0
- package/dist/agent-runtime/bootstrap.js.map +1 -0
- package/dist/agent-runtime/dispatch.d.ts +119 -10
- package/dist/agent-runtime/dispatch.d.ts.map +1 -1
- package/dist/agent-runtime/dispatch.js +1154 -219
- package/dist/agent-runtime/dispatch.js.map +1 -1
- package/dist/agent-runtime/invocation.d.ts +28 -1
- package/dist/agent-runtime/invocation.d.ts.map +1 -1
- package/dist/agent-runtime/invocation.js +171 -59
- package/dist/agent-runtime/invocation.js.map +1 -1
- package/dist/agent-runtime/prompts.d.ts +9 -0
- package/dist/agent-runtime/prompts.d.ts.map +1 -1
- package/dist/agent-runtime/prompts.js +42 -7
- package/dist/agent-runtime/prompts.js.map +1 -1
- package/dist/agent-runtime/session-event-accumulator.d.ts +83 -0
- package/dist/agent-runtime/session-event-accumulator.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-accumulator.js +203 -0
- package/dist/agent-runtime/session-event-accumulator.js.map +1 -0
- package/dist/agent-runtime/session-event-types.d.ts +67 -0
- package/dist/agent-runtime/session-event-types.d.ts.map +1 -0
- package/dist/agent-runtime/session-event-types.js +13 -0
- package/dist/agent-runtime/session-event-types.js.map +1 -0
- package/dist/agent-runtime/workspace.d.ts +244 -0
- package/dist/agent-runtime/workspace.d.ts.map +1 -0
- package/dist/agent-runtime/workspace.js +2025 -0
- package/dist/agent-runtime/workspace.js.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/adapters.js +58 -13
- package/dist/agents/adapters.js.map +1 -1
- package/dist/agents/spawner.d.ts +8 -0
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +25 -3
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-exec.js +1 -1
- package/dist/cli/batch-exec.js.map +1 -1
- package/dist/cli/command-annotations.d.ts +15 -3
- package/dist/cli/command-annotations.d.ts.map +1 -1
- package/dist/cli/command-annotations.js +23 -3
- package/dist/cli/command-annotations.js.map +1 -1
- package/dist/cli/commands/agent.d.ts +2 -0
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +144 -27
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +5 -5
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/derive.d.ts.map +1 -1
- package/dist/cli/commands/derive.js +118 -3
- package/dist/cli/commands/derive.js.map +1 -1
- package/dist/cli/commands/guard.d.ts.map +1 -1
- package/dist/cli/commands/guard.js +8 -6
- package/dist/cli/commands/guard.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +205 -47
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/log.d.ts.map +1 -1
- package/dist/cli/commands/log.js +24 -10
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/plan-import.d.ts +3 -3
- package/dist/cli/commands/plan-import.d.ts.map +1 -1
- package/dist/cli/commands/plan-import.js +213 -528
- package/dist/cli/commands/plan-import.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +533 -83
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/review.d.ts +14 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +1142 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +1 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +33 -10
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts +2 -4
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
- package/dist/cli/commands/session/checkpoint.js +6 -107
- package/dist/cli/commands/session/checkpoint.js.map +1 -1
- package/dist/cli/commands/session/commands.d.ts.map +1 -1
- package/dist/cli/commands/session/commands.js +33 -23
- package/dist/cli/commands/session/commands.js.map +1 -1
- package/dist/cli/commands/session/compact.js +4 -4
- package/dist/cli/commands/session/compact.js.map +1 -1
- package/dist/cli/commands/session/create.js +2 -2
- package/dist/cli/commands/session/create.js.map +1 -1
- package/dist/cli/commands/session/format.d.ts.map +1 -1
- package/dist/cli/commands/session/format.js +1 -6
- package/dist/cli/commands/session/format.js.map +1 -1
- package/dist/cli/commands/session/log.d.ts +32 -7
- package/dist/cli/commands/session/log.d.ts.map +1 -1
- package/dist/cli/commands/session/log.js +166 -60
- package/dist/cli/commands/session/log.js.map +1 -1
- package/dist/cli/commands/session/migrate.d.ts +9 -0
- package/dist/cli/commands/session/migrate.d.ts.map +1 -0
- package/dist/cli/commands/session/migrate.js +46 -0
- package/dist/cli/commands/session/migrate.js.map +1 -0
- package/dist/cli/commands/session/stale-close.d.ts.map +1 -1
- package/dist/cli/commands/session/stale-close.js +5 -8
- package/dist/cli/commands/session/stale-close.js.map +1 -1
- package/dist/cli/commands/session/types.d.ts +1 -1
- package/dist/cli/commands/session/types.d.ts.map +1 -1
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +287 -257
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/shadow.d.ts.map +1 -1
- package/dist/cli/commands/shadow.js +147 -31
- package/dist/cli/commands/shadow.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts +7 -0
- package/dist/cli/commands/skill-crud.d.ts.map +1 -1
- package/dist/cli/commands/skill-crud.js +41 -18
- package/dist/cli/commands/skill-crud.js.map +1 -1
- package/dist/cli/commands/skill-diff.d.ts.map +1 -1
- package/dist/cli/commands/skill-diff.js +29 -3
- package/dist/cli/commands/skill-diff.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +5 -4
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +359 -49
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/trait.d.ts.map +1 -1
- package/dist/cli/commands/trait.js +5 -27
- package/dist/cli/commands/trait.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +113 -52
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +69 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +26 -0
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +108 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/sync-mode.d.ts +44 -0
- package/dist/cli/sync-mode.d.ts.map +1 -0
- package/dist/cli/sync-mode.js +64 -0
- package/dist/cli/sync-mode.js.map +1 -0
- package/dist/daemon/middleware/project-context.ts +25 -7
- package/dist/daemon/project-context.ts +18 -0
- package/dist/daemon/routes/agent-dispatch.ts +99 -22
- package/dist/daemon/routes/aggregation.ts +184 -0
- package/dist/daemon/routes/inbox.ts +5 -0
- package/dist/daemon/routes/items.ts +145 -0
- package/dist/daemon/routes/meta.ts +1 -1
- package/dist/daemon/routes/projects.ts +28 -6
- package/dist/daemon/routes/ref-resolution.ts +119 -0
- package/dist/daemon/routes/refs.ts +42 -0
- package/dist/daemon/routes/session-related.ts +140 -0
- package/dist/daemon/routes/sessions.ts +420 -19
- package/dist/daemon/routes/tasks.ts +62 -5
- package/dist/daemon/routes/triage.ts +40 -1
- package/dist/daemon/server.ts +143 -49
- package/dist/daemon/session-sync.ts +11 -0
- package/dist/daemon/shadow-sync.ts +11 -0
- package/dist/daemon/watcher.ts +56 -5
- package/dist/daemon/websocket/project-resolution.ts +77 -0
- package/dist/export/json.d.ts.map +1 -1
- package/dist/export/json.js +104 -1
- package/dist/export/json.js.map +1 -1
- package/dist/export/types.d.ts +52 -1
- package/dist/export/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parser/agent-detection.d.ts +1 -1
- package/dist/parser/agent-detection.d.ts.map +1 -1
- package/dist/parser/agent-detection.js +10 -0
- package/dist/parser/agent-detection.js.map +1 -1
- package/dist/parser/config.d.ts +397 -2
- package/dist/parser/config.d.ts.map +1 -1
- package/dist/parser/config.js +125 -3
- package/dist/parser/config.js.map +1 -1
- package/dist/parser/dispatch-workspaces.d.ts +18 -0
- package/dist/parser/dispatch-workspaces.d.ts.map +1 -0
- package/dist/parser/dispatch-workspaces.js +209 -0
- package/dist/parser/dispatch-workspaces.js.map +1 -0
- package/dist/parser/doctor.d.ts.map +1 -1
- package/dist/parser/doctor.js +27 -8
- package/dist/parser/doctor.js.map +1 -1
- package/dist/parser/file-lock.d.ts.map +1 -1
- package/dist/parser/file-lock.js +9 -2
- package/dist/parser/file-lock.js.map +1 -1
- package/dist/parser/index.d.ts +6 -0
- package/dist/parser/index.d.ts.map +1 -1
- package/dist/parser/index.js +6 -0
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/plans.d.ts.map +1 -1
- package/dist/parser/plans.js +1 -0
- package/dist/parser/plans.js.map +1 -1
- package/dist/parser/refs.d.ts +8 -1
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +27 -1
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/review-operations.d.ts +72 -0
- package/dist/parser/review-operations.d.ts.map +1 -0
- package/dist/parser/review-operations.js +185 -0
- package/dist/parser/review-operations.js.map +1 -0
- package/dist/parser/review-task-integration.d.ts +78 -0
- package/dist/parser/review-task-integration.d.ts.map +1 -0
- package/dist/parser/review-task-integration.js +173 -0
- package/dist/parser/review-task-integration.js.map +1 -0
- package/dist/parser/review-threads.d.ts +101 -0
- package/dist/parser/review-threads.d.ts.map +1 -0
- package/dist/parser/review-threads.js +222 -0
- package/dist/parser/review-threads.js.map +1 -0
- package/dist/parser/review-validation.d.ts +69 -0
- package/dist/parser/review-validation.d.ts.map +1 -0
- package/dist/parser/review-validation.js +207 -0
- package/dist/parser/review-validation.js.map +1 -0
- package/dist/parser/reviews.d.ts +58 -0
- package/dist/parser/reviews.d.ts.map +1 -0
- package/dist/parser/reviews.js +230 -0
- package/dist/parser/reviews.js.map +1 -0
- package/dist/parser/session-branch.d.ts +91 -0
- package/dist/parser/session-branch.d.ts.map +1 -0
- package/dist/parser/session-branch.js +565 -0
- package/dist/parser/session-branch.js.map +1 -0
- package/dist/parser/session-sync-scheduler.d.ts +53 -0
- package/dist/parser/session-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/session-sync-scheduler.js +100 -0
- package/dist/parser/session-sync-scheduler.js.map +1 -0
- package/dist/parser/setup-status.d.ts +7 -1
- package/dist/parser/setup-status.d.ts.map +1 -1
- package/dist/parser/setup-status.js +104 -39
- package/dist/parser/setup-status.js.map +1 -1
- package/dist/parser/shadow-sync-scheduler.d.ts +71 -0
- package/dist/parser/shadow-sync-scheduler.d.ts.map +1 -0
- package/dist/parser/shadow-sync-scheduler.js +139 -0
- package/dist/parser/shadow-sync-scheduler.js.map +1 -0
- package/dist/parser/shadow.d.ts +121 -14
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +752 -27
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts +24 -0
- package/dist/parser/skill-render.d.ts.map +1 -1
- package/dist/parser/skill-render.js +98 -26
- package/dist/parser/skill-render.js.map +1 -1
- package/dist/parser/validate.d.ts +43 -3
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +204 -30
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +47 -11
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +329 -149
- package/dist/parser/yaml.js.map +1 -1
- package/dist/review/checks.d.ts +97 -0
- package/dist/review/checks.d.ts.map +1 -0
- package/dist/review/checks.js +175 -0
- package/dist/review/checks.js.map +1 -0
- package/dist/review/index.d.ts +3 -0
- package/dist/review/index.d.ts.map +1 -0
- package/dist/review/index.js +3 -0
- package/dist/review/index.js.map +1 -0
- package/dist/review/subject-bindings.d.ts +83 -0
- package/dist/review/subject-bindings.d.ts.map +1 -0
- package/dist/review/subject-bindings.js +175 -0
- package/dist/review/subject-bindings.js.map +1 -0
- package/dist/schema/common.d.ts +26 -0
- package/dist/schema/common.d.ts.map +1 -1
- package/dist/schema/common.js +13 -0
- package/dist/schema/common.js.map +1 -1
- package/dist/schema/dispatch-workspace.d.ts +2643 -0
- package/dist/schema/dispatch-workspace.d.ts.map +1 -0
- package/dist/schema/dispatch-workspace.js +187 -0
- package/dist/schema/dispatch-workspace.js.map +1 -0
- package/dist/schema/inbox.d.ts +8 -8
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +2 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/meta.d.ts +648 -116
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +27 -0
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +30 -19
- package/dist/schema/plan.d.ts.map +1 -1
- package/dist/schema/plan.js +3 -1
- package/dist/schema/plan.js.map +1 -1
- package/dist/schema/review-records.d.ts +2676 -0
- package/dist/schema/review-records.d.ts.map +1 -0
- package/dist/schema/review-records.js +232 -0
- package/dist/schema/review-records.js.map +1 -0
- package/dist/schema/spec.d.ts +32 -14
- package/dist/schema/spec.d.ts.map +1 -1
- package/dist/schema/spec.js +5 -0
- package/dist/schema/spec.js.map +1 -1
- package/dist/schema/task.d.ts +187 -29
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +12 -2
- package/dist/schema/task.js.map +1 -1
- package/dist/schema/triage.d.ts +22 -22
- package/dist/sessions/cache.d.ts +119 -0
- package/dist/sessions/cache.d.ts.map +1 -0
- package/dist/sessions/cache.js +284 -0
- package/dist/sessions/cache.js.map +1 -0
- package/dist/sessions/index.d.ts +1 -0
- package/dist/sessions/index.d.ts.map +1 -1
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -1
- package/dist/sessions/legacy.d.ts +77 -0
- package/dist/sessions/legacy.d.ts.map +1 -0
- package/dist/sessions/legacy.js +146 -0
- package/dist/sessions/legacy.js.map +1 -0
- package/dist/sessions/store.d.ts +103 -73
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +335 -186
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +44 -16
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +11 -2
- package/dist/sessions/types.js.map +1 -1
- package/dist/strings/errors.d.ts +32 -0
- package/dist/strings/errors.d.ts.map +1 -1
- package/dist/strings/errors.js +17 -0
- package/dist/strings/errors.js.map +1 -1
- package/dist/strings/labels.d.ts +1 -0
- package/dist/strings/labels.d.ts.map +1 -1
- package/dist/strings/labels.js +1 -0
- package/dist/strings/labels.js.map +1 -1
- package/dist/utils/activity.d.ts +101 -0
- package/dist/utils/activity.d.ts.map +1 -0
- package/dist/utils/activity.js +408 -0
- package/dist/utils/activity.js.map +1 -0
- package/dist/utils/git.d.ts +31 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +87 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/web-ui/_app/immutable/assets/0.tmlwn-Ih.css +1 -0
- package/dist/web-ui/_app/immutable/assets/9.BwwJybWx.css +1 -0
- package/dist/web-ui/_app/immutable/chunks/2KqE8gtn.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/70-t_QvE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/AiWQj974.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{CPPfDSei.js → B25nWFyA.js} +4 -4
- package/dist/web-ui/_app/immutable/chunks/{DBYE9jOd.js → B2bcA_Q_.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/B5e5HYyB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7-5z6eA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B7bGmhK0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DzO4hlg9.js → B8tYZKAE.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{B5LJFxqa.js → BFGAyJjD.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BG0850zf.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DAMmvwn4.js → BG8eSzAd.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BIMxXS8I.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BSzL1fpU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BYtjHfeq.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DxCk-KHc.js → Bp5pFYXL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{B8a0xDxR.js → BsJFsuAT.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/BvpNHcD6.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BypqA25-.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BVA9Exy-.js → C0w6WDm5.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/C5_PAZ0y.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CDRO15Iv.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CF1CoqD5.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CS2sa4_m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BJ0JX3ea.js → CWUQwB9H.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/CY5FDdSU.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C_7MTDoj.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{D3vxvonu.js → CaAJD3dl.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{BP352uRn.js → ChB5iyEL.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{pE6cYWlS.js → ChQD-6N8.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/{Eo4gF7ih.js → CqbsoCwA.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/DCeJW50p.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{Cncwi6fQ.js → DJtZNgcs.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/DKIeaprD.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DLd2uVIA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DjcCz-PU.js → DW_subyT.js} +2 -2
- package/dist/web-ui/_app/immutable/chunks/DbU6lVn0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dc7ZCC5m.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Dd5umPsk.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/{BysXJlZb.js → Dg_zDpDS.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/Dgqu8Yuc.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DmxsPZTB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DphTaFUB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DqK4iHp0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{D9QNBZM2.js → DqT6OH_u.js} +2 -2
- package/dist/web-ui/_app/immutable/chunks/Ds9I9wQb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Du5ng3u4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DxJw79Wi.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/GFTX8GgV.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{C076q4JN.js → HNjs76Zz.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/HVMjDi4_.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{BkOJ8DkV.js → P0A_fJvS.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/T3vGWjIL.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/VTmrX9Qu.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{k_Qegko0.js → Xvwhx_F1.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/Yyz1XMQA.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{62JVKtnb.js → dh5HeqUr.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/fZMteyca.js +62 -0
- package/dist/web-ui/_app/immutable/chunks/{D82RulSH.js → gPrj-hqC.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/htcWMiYN.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{CwELQvbx.js → oTsvd9y4.js} +1 -1
- package/dist/web-ui/_app/immutable/chunks/qJfLUwU4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/xCtiO_JE.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/{DvA-KON-.js → y4GeEH6k.js} +1 -1
- package/dist/web-ui/_app/immutable/entry/app.C4h_eOn6.js +2 -0
- package/dist/web-ui/_app/immutable/entry/start.CQFTf9ep.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/0.Dh1xO970.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/1.l75D3Opx.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/10.DBidBPc-.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/11.Ab0gUKWe.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/12.CMsnoxfs.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/13.D8YKuknB.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/14.DZ0aan7y.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/15.CUIKreDL.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/16.BWc8--BO.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/2.CDUonbuh.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/3.Ctg3M00i.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/4.Ci-JDwbA.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/5.CTyEDAq0.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/6.BTZZqsAb.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/7.BI52g_Jo.js +137 -0
- package/dist/web-ui/_app/immutable/nodes/8.3hZPaB9x.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/9.DS49kvwl.js +29 -0
- package/dist/web-ui/_app/version.json +1 -1
- package/dist/web-ui/favicon-192.png +0 -0
- package/dist/web-ui/favicon-32.png +0 -0
- package/dist/web-ui/favicon.ico +0 -0
- package/dist/web-ui/index.html +14 -14
- package/package.json +12 -6
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/kspec/skills/merge/SKILL.md +127 -0
- package/plugin/plugins/kspec/skills/plan/SKILL.md +55 -26
- package/plugin/plugins/kspec/skills/review/SKILL.md +350 -133
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +96 -106
- package/templates/agents-sections/04-pr-workflow.md +15 -12
- package/templates/agents-sections/06-ralph-loop.md +15 -10
- package/templates/skills/manifest.yaml +25 -7
- package/templates/skills/merge/SKILL.md +120 -0
- package/templates/skills/plan/SKILL.md +55 -26
- package/templates/skills/review/SKILL.md +346 -130
- package/templates/skills/task-work/SKILL.md +93 -103
- package/dist/web-ui/_app/immutable/assets/0.BJaYkGW2.css +0 -1
- package/dist/web-ui/_app/immutable/assets/9.SzGLxi4x.css +0 -1
- package/dist/web-ui/_app/immutable/chunks/-lc0BifF.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/8RBjHMN1.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B5wTVqxm.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/B6VSmczZ.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BEOQc37C.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BHtYorjv.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BMuCqDX8.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BUZujXJ2.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BWET-efb.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BXkNecpt.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BYzrIfX8.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BpuwufMc.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/BwMO4RrG.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/C33JaVbg.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CGtqifKp.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CHDZZ7OG.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/CUir3f4J.js +0 -60
- package/dist/web-ui/_app/immutable/chunks/CrCIbn0C.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D6TVmR9T.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/D7LTux4W.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DAh4Wfku.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DAx07bEQ.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DOno4cA2.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DQA8NZIH.js +0 -2
- package/dist/web-ui/_app/immutable/chunks/DRfPm2bo.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DhQhksaB.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DjG7s6hm.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DkltRNvh.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/DlaTnPKL.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/ExCq5swK.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/T3zZGv51.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/XZumBYeP.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/_ySfNjkF.js +0 -1
- package/dist/web-ui/_app/immutable/chunks/iEtR5cV6.js +0 -1
- package/dist/web-ui/_app/immutable/entry/app.Cgu6uKeS.js +0 -2
- package/dist/web-ui/_app/immutable/entry/start.9XifnLoB.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/0.DISwcKSK.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/1.Cx2Ufqp1.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/10.C3z8ijXL.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/11.DZdIjZmM.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/12.FsIGfAOa.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/13.DZoFwagf.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/14.DaIzDKbQ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/15.BYyt4XWF.js +0 -2
- package/dist/web-ui/_app/immutable/nodes/16.CQkSqpOe.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/2.Bkf_j2UJ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/3.kaMCurJG.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/4.BSsFPTHG.js +0 -2
- package/dist/web-ui/_app/immutable/nodes/5.CpPlcCEZ.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/6.BN4FqQmY.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/7.9kBYIZik.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/8.BuijtZ6B.js +0 -1
- package/dist/web-ui/_app/immutable/nodes/9.C-Weba8R.js +0 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic session branch sync for daemon mode.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors ShadowSyncScheduler but operates independently on the session branch.
|
|
5
|
+
* Sync failures on one branch do not affect the other.
|
|
6
|
+
*
|
|
7
|
+
* AC: @session-branch-worktree ac-sync
|
|
8
|
+
*/
|
|
9
|
+
import { sessionBranchPull, } from "./session-branch.js";
|
|
10
|
+
import { hasRemoteTracking } from "./shadow.js";
|
|
11
|
+
/**
|
|
12
|
+
* Manages periodic background session branch pull for the daemon.
|
|
13
|
+
*
|
|
14
|
+
* AC: @session-branch-worktree ac-sync
|
|
15
|
+
*/
|
|
16
|
+
export class SessionSyncScheduler {
|
|
17
|
+
timer = null;
|
|
18
|
+
running = false;
|
|
19
|
+
worktreeDir;
|
|
20
|
+
intervalMs;
|
|
21
|
+
branchName;
|
|
22
|
+
pubsub;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.worktreeDir = options.worktreeDir;
|
|
25
|
+
this.intervalMs = options.intervalSeconds * 1000;
|
|
26
|
+
this.branchName = options.branchName;
|
|
27
|
+
this.pubsub = options.pubsub;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Start the periodic sync scheduler.
|
|
31
|
+
* Does nothing if interval is 0 or already started.
|
|
32
|
+
*/
|
|
33
|
+
start() {
|
|
34
|
+
if (this.intervalMs <= 0 || this.timer !== null) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
console.log(`[daemon] Session sync scheduler started (interval: ${this.intervalMs / 1000}s)`);
|
|
38
|
+
this.timer = setInterval(() => {
|
|
39
|
+
this.syncOnce().catch((err) => {
|
|
40
|
+
console.error("[daemon] Session sync error:", err);
|
|
41
|
+
});
|
|
42
|
+
}, this.intervalMs);
|
|
43
|
+
// Don't prevent process exit
|
|
44
|
+
if (this.timer &&
|
|
45
|
+
typeof this.timer === "object" &&
|
|
46
|
+
"unref" in this.timer) {
|
|
47
|
+
this.timer.unref();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Stop the periodic sync scheduler.
|
|
52
|
+
*/
|
|
53
|
+
stop() {
|
|
54
|
+
if (this.timer !== null) {
|
|
55
|
+
clearInterval(this.timer);
|
|
56
|
+
this.timer = null;
|
|
57
|
+
console.log("[daemon] Session sync scheduler stopped");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Perform a single sync (pull from remote).
|
|
62
|
+
* Skips if another sync is already in progress or no tracking configured.
|
|
63
|
+
*/
|
|
64
|
+
async syncOnce() {
|
|
65
|
+
if (this.running) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const options = { branchName: this.branchName };
|
|
69
|
+
const hasTracking = await hasRemoteTracking(this.worktreeDir, options);
|
|
70
|
+
if (!hasTracking) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.running = true;
|
|
74
|
+
try {
|
|
75
|
+
const result = await sessionBranchPull(this.worktreeDir, this.branchName);
|
|
76
|
+
if (result.pulled) {
|
|
77
|
+
console.log("[daemon] Session sync: pulled remote changes");
|
|
78
|
+
if (this.pubsub) {
|
|
79
|
+
this.pubsub.broadcast("sessions", "session_sync", {
|
|
80
|
+
pulled: true,
|
|
81
|
+
hadConflict: false,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (result.hadConflict) {
|
|
86
|
+
console.warn("[daemon] Session sync: conflict detected. Run `kspec shadow resolve` to fix.");
|
|
87
|
+
if (this.pubsub) {
|
|
88
|
+
this.pubsub.broadcast("sessions", "session_sync", {
|
|
89
|
+
pulled: false,
|
|
90
|
+
hadConflict: true,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
this.running = false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=session-sync-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-sync-scheduler.js","sourceRoot":"","sources":["../../src/parser/session-sync-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,8 +19,10 @@ export interface SetupStatus {
|
|
|
19
19
|
agent: {
|
|
20
20
|
detected: AgentType;
|
|
21
21
|
confidence: AgentConfidence;
|
|
22
|
+
configPath?: string;
|
|
22
23
|
};
|
|
23
24
|
hooks: {
|
|
25
|
+
supported: boolean;
|
|
24
26
|
promptCheck: boolean;
|
|
25
27
|
stop: boolean;
|
|
26
28
|
preToolUse: boolean;
|
|
@@ -51,12 +53,16 @@ export interface SetupStatus {
|
|
|
51
53
|
/** Error message if status check failed */
|
|
52
54
|
error?: string;
|
|
53
55
|
}
|
|
56
|
+
export interface GetSetupStatusOptions {
|
|
57
|
+
agentOverride?: AgentType;
|
|
58
|
+
}
|
|
54
59
|
/**
|
|
55
60
|
* Detect the agent type in use.
|
|
56
61
|
*/
|
|
57
62
|
export declare function detectAgent(): Promise<{
|
|
58
63
|
type: AgentType;
|
|
59
64
|
confidence: AgentConfidence;
|
|
65
|
+
configPath?: string;
|
|
60
66
|
}>;
|
|
61
67
|
/**
|
|
62
68
|
* Get the current setup status for a project.
|
|
@@ -68,5 +74,5 @@ export declare function detectAgent(): Promise<{
|
|
|
68
74
|
*
|
|
69
75
|
* @param projectDir Project root directory
|
|
70
76
|
*/
|
|
71
|
-
export declare function getSetupStatus(projectDir: string): Promise<SetupStatus>;
|
|
77
|
+
export declare function getSetupStatus(projectDir: string, options?: GetSetupStatusOptions): Promise<SetupStatus>;
|
|
72
78
|
//# sourceMappingURL=setup-status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-status.d.ts","sourceRoot":"","sources":["../../src/parser/setup-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS,CAAC;QACpB,UAAU,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-status.d.ts","sourceRoot":"","sources":["../../src/parser/setup-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE;QACL,QAAQ,EAAE,SAAS,CAAC;QACpB,UAAU,EAAE,eAAe,CAAC;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;QACrB,IAAI,EAAE,OAAO,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE;QACN,qBAAqB,EAAE,OAAO,CAAC;QAC/B,kBAAkB,EAAE,OAAO,CAAC;QAC5B,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;QACpD,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,iBAAiB,EAAE,OAAO,CAAC;QAC3B,YAAY,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAiBD;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,eAAe,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAmDD;AAWD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,WAAW,CAAC,CAkRtB"}
|
|
@@ -17,13 +17,28 @@ const GUARD_SCRIPTS = {
|
|
|
17
17
|
"write-guard.mjs": true,
|
|
18
18
|
"edit-guard.mjs": true,
|
|
19
19
|
};
|
|
20
|
+
const NATIVE_GUARD_COMMAND = "kspec guard worktree";
|
|
21
|
+
const LEGACY_GUARD_SCRIPTS = [
|
|
22
|
+
"kspec-worktree-guard.sh",
|
|
23
|
+
"ralph-task-limit-guard.sh",
|
|
24
|
+
];
|
|
20
25
|
/**
|
|
21
26
|
* Detect the agent type in use.
|
|
22
27
|
*/
|
|
23
28
|
export async function detectAgent() {
|
|
24
29
|
const detected = detectAgentFromEnv();
|
|
25
30
|
if (detected.type !== "unknown") {
|
|
26
|
-
|
|
31
|
+
const configPath = detected.configPath ??
|
|
32
|
+
(detected.type === "claude-code"
|
|
33
|
+
? path.join(process.env.HOME ?? "", ".claude", "settings.json")
|
|
34
|
+
: detected.type === "droid"
|
|
35
|
+
? path.join(process.env.HOME ?? "", ".factory", "settings.json")
|
|
36
|
+
: undefined);
|
|
37
|
+
return {
|
|
38
|
+
type: detected.type,
|
|
39
|
+
confidence: detected.confidence,
|
|
40
|
+
configPath,
|
|
41
|
+
};
|
|
27
42
|
}
|
|
28
43
|
// Check for Claude Code by looking for .claude directory
|
|
29
44
|
// This is a medium confidence indicator
|
|
@@ -33,7 +48,26 @@ export async function detectAgent() {
|
|
|
33
48
|
try {
|
|
34
49
|
const stats = await fs.stat(globalClaudeDir);
|
|
35
50
|
if (stats.isDirectory()) {
|
|
36
|
-
return {
|
|
51
|
+
return {
|
|
52
|
+
type: "claude-code",
|
|
53
|
+
confidence: "medium",
|
|
54
|
+
configPath: path.join(process.env.HOME, ".claude", "settings.json"),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// Directory doesn't exist
|
|
60
|
+
}
|
|
61
|
+
// AC: @droid-setup-status ac-2 — ~/.factory as medium-confidence droid fallback (after ~/.claude)
|
|
62
|
+
const globalDroidDir = path.join(process.env.HOME, ".factory");
|
|
63
|
+
try {
|
|
64
|
+
const stats = await fs.stat(globalDroidDir);
|
|
65
|
+
if (stats.isDirectory()) {
|
|
66
|
+
return {
|
|
67
|
+
type: "droid",
|
|
68
|
+
confidence: "medium",
|
|
69
|
+
configPath: path.join(process.env.HOME, ".factory", "settings.json"),
|
|
70
|
+
};
|
|
37
71
|
}
|
|
38
72
|
}
|
|
39
73
|
catch {
|
|
@@ -60,51 +94,80 @@ function debugLog(message, _error) {
|
|
|
60
94
|
*
|
|
61
95
|
* @param projectDir Project root directory
|
|
62
96
|
*/
|
|
63
|
-
export async function getSetupStatus(projectDir) {
|
|
64
|
-
const detected =
|
|
65
|
-
|
|
66
|
-
|
|
97
|
+
export async function getSetupStatus(projectDir, options = {}) {
|
|
98
|
+
const detected = options.agentOverride
|
|
99
|
+
? {
|
|
100
|
+
type: options.agentOverride,
|
|
101
|
+
confidence: "high",
|
|
102
|
+
configPath: options.agentOverride === "claude-code"
|
|
103
|
+
? path.join(process.env.HOME ?? "", ".claude", "settings.json")
|
|
104
|
+
: options.agentOverride === "droid"
|
|
105
|
+
? path.join(process.env.HOME ?? "", ".factory", "settings.json")
|
|
106
|
+
: undefined,
|
|
107
|
+
}
|
|
108
|
+
: await detectAgent();
|
|
67
109
|
const agentsMdPath = path.join(projectDir, "kspec-agents.md");
|
|
68
110
|
const hashPath = path.join(projectDir, ".kspec", ".kspec-agents-hash");
|
|
69
|
-
const
|
|
111
|
+
const claudeConfigPath = path.join(projectDir, ".claude", "settings.json");
|
|
112
|
+
const hooksDir = path.join(projectDir, ".claude", "hooks");
|
|
113
|
+
// AC: @droid-setup-status ac-1 — scan .factory/skills/ for droid-rendered skills
|
|
114
|
+
const skillDirs = new Set([path.join(projectDir, ".claude", "skills")]);
|
|
115
|
+
if (detected.type === "droid") {
|
|
116
|
+
skillDirs.add(path.join(projectDir, ".factory", "skills"));
|
|
117
|
+
}
|
|
70
118
|
// Check hooks
|
|
71
119
|
const hooks = {
|
|
120
|
+
supported: detected.type === "claude-code",
|
|
72
121
|
promptCheck: false,
|
|
73
122
|
stop: false,
|
|
74
123
|
preToolUse: false,
|
|
75
124
|
guardsPresent: [],
|
|
76
125
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
for (const name of Object.keys(GUARD_SCRIPTS)) {
|
|
101
|
-
if (guardFiles.includes(name)) {
|
|
102
|
-
hooks.guardsPresent.push(name);
|
|
126
|
+
if (hooks.supported) {
|
|
127
|
+
try {
|
|
128
|
+
const configContent = await fs.readFile(claudeConfigPath, "utf-8");
|
|
129
|
+
const config = JSON.parse(configContent);
|
|
130
|
+
const hooksConfig = config.hooks || {};
|
|
131
|
+
// Check UserPromptSubmit
|
|
132
|
+
const promptHooks = hooksConfig.UserPromptSubmit;
|
|
133
|
+
hooks.promptCheck =
|
|
134
|
+
promptHooks?.some((entry) => entry.hooks?.some((h) => h.command?.includes("prompt-check"))) ?? false;
|
|
135
|
+
// Check Stop
|
|
136
|
+
const stopHooks = hooksConfig.Stop;
|
|
137
|
+
hooks.stop =
|
|
138
|
+
stopHooks?.some((entry) => entry.hooks?.some((h) => h.command?.includes("checkpoint"))) ?? false;
|
|
139
|
+
// Check PreToolUse
|
|
140
|
+
const preToolUseHooks = hooksConfig.PreToolUse;
|
|
141
|
+
hooks.preToolUse =
|
|
142
|
+
preToolUseHooks?.some((entry) => entry.hooks?.some((h) => h.command === NATIVE_GUARD_COMMAND ||
|
|
143
|
+
h.command?.includes(".claude/hooks/"))) ?? false;
|
|
144
|
+
if (preToolUseHooks?.some((entry) => entry.hooks?.some((h) => h.command === NATIVE_GUARD_COMMAND))) {
|
|
145
|
+
hooks.guardsPresent.push(NATIVE_GUARD_COMMAND);
|
|
146
|
+
}
|
|
147
|
+
if (preToolUseHooks?.some((entry) => entry.hooks?.some((h) => LEGACY_GUARD_SCRIPTS.some((name) => h.command?.includes(name))))) {
|
|
148
|
+
hooks.guardsPresent.push("legacy:bash-scripts");
|
|
103
149
|
}
|
|
104
150
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
151
|
+
catch (err) {
|
|
152
|
+
debugLog("Failed to read hooks config for status", err);
|
|
153
|
+
}
|
|
154
|
+
// Check guard scripts
|
|
155
|
+
try {
|
|
156
|
+
const guardFiles = await fs.readdir(hooksDir);
|
|
157
|
+
for (const name of Object.keys(GUARD_SCRIPTS)) {
|
|
158
|
+
if (guardFiles.includes(name)) {
|
|
159
|
+
hooks.guardsPresent.push(name);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
for (const name of LEGACY_GUARD_SCRIPTS) {
|
|
163
|
+
if (guardFiles.includes(name)) {
|
|
164
|
+
hooks.guardsPresent.push(`legacy-file:${name}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
catch (err) {
|
|
169
|
+
debugLog("Hooks dir doesn't exist", err);
|
|
170
|
+
}
|
|
108
171
|
}
|
|
109
172
|
// Check skills
|
|
110
173
|
const skills = {
|
|
@@ -140,8 +203,9 @@ export async function getSetupStatus(projectDir) {
|
|
|
140
203
|
debugLog(`${label} dir doesn't exist`, err);
|
|
141
204
|
}
|
|
142
205
|
}
|
|
143
|
-
|
|
144
|
-
|
|
206
|
+
for (const skillsDir of skillDirs) {
|
|
207
|
+
await scanForSkills(skillsDir, path.relative(projectDir, skillsDir) || skillsDir);
|
|
208
|
+
}
|
|
145
209
|
// Check plugin marketplace health
|
|
146
210
|
// AC: @enhanced-setup ac-7, ac-8
|
|
147
211
|
const plugin = {
|
|
@@ -165,7 +229,7 @@ export async function getSetupStatus(projectDir) {
|
|
|
165
229
|
}
|
|
166
230
|
// Check if plugin is enabled in project settings
|
|
167
231
|
try {
|
|
168
|
-
const configContent = await fs.readFile(
|
|
232
|
+
const configContent = await fs.readFile(claudeConfigPath, "utf-8");
|
|
169
233
|
const config = JSON.parse(configContent);
|
|
170
234
|
plugin.pluginEnabled = config.enabledPlugins?.["kspec@kspec-plugins"] === true;
|
|
171
235
|
}
|
|
@@ -252,6 +316,7 @@ export async function getSetupStatus(projectDir) {
|
|
|
252
316
|
agent: {
|
|
253
317
|
detected: detected.type,
|
|
254
318
|
confidence: detected.confidence,
|
|
319
|
+
configPath: detected.configPath,
|
|
255
320
|
},
|
|
256
321
|
hooks,
|
|
257
322
|
skills,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-status.js","sourceRoot":"","sources":["../../src/parser/setup-status.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup-status.js","sourceRoot":"","sources":["../../src/parser/setup-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,kBAAkB,GAGnB,MAAM,sBAAsB,CAAC;AAsD9B;;GAEG;AACH,MAAM,aAAa,GAA4B;IAC7C,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;IACvB,gBAAgB,EAAE,IAAI;CACvB,CAAC;AAEF,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AACpD,MAAM,oBAAoB,GAAG;IAC3B,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAK/B,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU;YACpC,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa;gBAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC;gBAC/D,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO;oBACzB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC;oBAChE,CAAC,CAAC,SAAS,CAAC,CAAC;QACnB,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU;SACX,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,wCAAwC;IACxC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,yCAAyC;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,aAAa;oBACnB,UAAU,EAAE,QAAQ;oBACpB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC;iBACpE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,kGAAkG;QAClG,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,UAAU,EAAE,QAAQ;oBACpB,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC;iBACrE,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,OAAe,EAAE,MAAgB;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa;QACpC,CAAC,CAAC;YACE,IAAI,EAAE,OAAO,CAAC,aAAa;YAC3B,UAAU,EAAE,MAAe;YAC3B,UAAU,EACR,OAAO,CAAC,aAAa,KAAK,aAAa;gBACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC;gBAC/D,CAAC,CAAC,OAAO,CAAC,aAAa,KAAK,OAAO;oBACjC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC;oBAChE,CAAC,CAAC,SAAS;SAClB;QACH,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC;IACxB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3D,iFAAiF;IACjF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,cAAc;IACd,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa;QAC1C,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,EAAc;KAC9B,CAAC;IAEF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACzC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YAEvC,yBAAyB;YACzB,MAAM,WAAW,GAAG,WAAW,CAAC,gBAEnB,CAAC;YACd,KAAK,CAAC,WAAW;gBACf,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAC9D,IAAI,KAAK,CAAC;YAEb,aAAa;YACb,MAAM,SAAS,GAAG,WAAW,CAAC,IAEjB,CAAC;YACd,KAAK,CAAC,IAAI;gBACR,SAAS,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAC5D,IAAI,KAAK,CAAC;YAEb,mBAAmB;YACnB,MAAM,eAAe,GAAG,WAAW,CAAC,UAEvB,CAAC;YACd,KAAK,CAAC,UAAU;gBACd,eAAe,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,CAAC,CAAC,OAAO,KAAK,oBAAoB;oBAClC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CACtC,CACF,IAAI,KAAK,CAAC;YAEb,IAAI,eAAe,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,oBAAoB,CAAC,CAC7D,EAAE,CAAC;gBACF,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,eAAe,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACtB,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC/D,CACF,EAAE,CAAC;gBACF,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAC;QAC1D,CAAC;QAED,sBAAsB;QACtB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,oBAAoB,EAAE,CAAC;gBACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;KACX,CAAC;IAEF,sEAAsE;IACtE,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,OAAe;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,6BAA6B,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,KAAa;QACzD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtB,MAAM,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,KAAK,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC,CAAC;IACpF,CAAC;IAED,kCAAkC;IAClC,iCAAiC;IACjC,MAAM,MAAM,GAAG;QACb,qBAAqB,EAAE,KAAK;QAC5B,kBAAkB,EAAE,KAAK;QACzB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,SAA+B;QAC/C,aAAa,EAAE,SAA+B;KAC/C,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC7C,kCAAkC,CACnC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAC9C,MAAM,CAAC,qBAAqB,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QAC3D,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QACxD,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC9C,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,aAAa,GAAG,0BAA0B,CAAC;IACpD,CAAC;IAED,iDAAiD;IACjD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,qBAAqB,CAAC,KAAK,IAAI,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAA4B;QACxC,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,SAAS;KAClB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC9B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACzC,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YAE5C,2CAA2C;YAC3C,+DAA+D;YAC/D,IAAI,CAAC;gBACH,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;gBACpE,6CAA6C;gBAC7C,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAC5E,2BAA2B,CAC5B,CAAC;gBACF,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;gBAChC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACrB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;oBAC3C,IAAI,gBAAgB,GAAa,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACH,gBAAgB,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC;oBAClE,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,QAAQ,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;oBAC/D,CAAC;oBACD,MAAM,WAAW,GAAG,eAAe,CACjC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,SAAS,EACjB,gBAAgB,CACjB,CAAC;oBACF,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC5E,CAAC;qBAAM,CAAC;oBACN,8EAA8E;oBAC9E,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC9B,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,qEAAqE;gBACrE,QAAQ,CAAC,iDAAiD,EAAE,GAAG,CAAC,CAAC;gBACjE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;YAC7D,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,sBAAsB;IACtB,MAAM,OAAO,GAA2B;QACtC,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,KAAK;KACpB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CACrC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,EACjD,OAAO,CACR,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAC7C,kCAAkC,CACnC,CAAC;YACF,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACrE,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YACpC,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,UAAU,GAAG,sBAAsB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC;QACD,KAAK;QACL,MAAM;QACN,MAAM;QACN,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic shadow branch sync for daemon mode.
|
|
3
|
+
*
|
|
4
|
+
* AC: @config-shadow ac-12 — The daemon performs a background shadow pull
|
|
5
|
+
* at a configurable interval (default 60s) to pick up changes pushed by
|
|
6
|
+
* other clones, making remote shadow state available locally without
|
|
7
|
+
* requiring a manual `kspec shadow sync`.
|
|
8
|
+
*
|
|
9
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push — After pulling, pushes
|
|
10
|
+
* local commits if ahead of upstream. Push failure is non-fatal.
|
|
11
|
+
*
|
|
12
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head — Fetch runs
|
|
13
|
+
* from the worktree dir so FETCH_HEAD in the worktree git dir is fresh.
|
|
14
|
+
*/
|
|
15
|
+
import { type ShadowOptions } from './shadow.js';
|
|
16
|
+
export interface ShadowSyncSchedulerOptions {
|
|
17
|
+
/** Path to shadow worktree (e.g., /project/.kspec) */
|
|
18
|
+
worktreeDir: string;
|
|
19
|
+
/** Sync interval in seconds (0 = disabled) */
|
|
20
|
+
intervalSeconds: number;
|
|
21
|
+
/** Optional shadow options for branch/remote config */
|
|
22
|
+
shadowOptions?: ShadowOptions;
|
|
23
|
+
/** Optional pubsub manager for broadcasting sync events */
|
|
24
|
+
pubsub?: ShadowSyncPubSub;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Minimal pubsub interface for broadcasting sync events.
|
|
28
|
+
* Matches PubSubManager.broadcast() without importing the full daemon type.
|
|
29
|
+
*/
|
|
30
|
+
export interface ShadowSyncPubSub {
|
|
31
|
+
broadcast(channel: string, type: string, data: Record<string, unknown>): void;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Manages periodic background shadow sync (fetch + pull + push) for the daemon.
|
|
35
|
+
*
|
|
36
|
+
* AC: @config-shadow ac-12
|
|
37
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push
|
|
38
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head
|
|
39
|
+
*/
|
|
40
|
+
export declare class ShadowSyncScheduler {
|
|
41
|
+
private timer;
|
|
42
|
+
private running;
|
|
43
|
+
private readonly worktreeDir;
|
|
44
|
+
private readonly intervalMs;
|
|
45
|
+
private readonly shadowOptions?;
|
|
46
|
+
private readonly pubsub?;
|
|
47
|
+
constructor(options: ShadowSyncSchedulerOptions);
|
|
48
|
+
/**
|
|
49
|
+
* Start the periodic sync scheduler.
|
|
50
|
+
* Does nothing if interval is 0 or already started.
|
|
51
|
+
*/
|
|
52
|
+
start(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Stop the periodic sync scheduler.
|
|
55
|
+
*/
|
|
56
|
+
stop(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Perform a single sync cycle: fetch, pull, then push if ahead.
|
|
59
|
+
* Skips if another sync is already in progress or no tracking configured.
|
|
60
|
+
*
|
|
61
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head —
|
|
62
|
+
* Fetch runs from worktreeDir so FETCH_HEAD in the worktree git dir
|
|
63
|
+
* is fresh for CLI drift checks.
|
|
64
|
+
*
|
|
65
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push —
|
|
66
|
+
* After pulling, pushes if local is ahead of remote.
|
|
67
|
+
* Push failure is non-fatal (logged, not thrown).
|
|
68
|
+
*/
|
|
69
|
+
syncOnce(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=shadow-sync-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-sync-scheduler.d.ts","sourceRoot":"","sources":["../../src/parser/shadow-sync-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAOL,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,eAAe,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC/E;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAmB;gBAE/B,OAAO,EAAE,0BAA0B;IAO/C;;;OAGG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,IAAI,IAAI,IAAI;IAQZ;;;;;;;;;;;OAWG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAqEhC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Periodic shadow branch sync for daemon mode.
|
|
3
|
+
*
|
|
4
|
+
* AC: @config-shadow ac-12 — The daemon performs a background shadow pull
|
|
5
|
+
* at a configurable interval (default 60s) to pick up changes pushed by
|
|
6
|
+
* other clones, making remote shadow state available locally without
|
|
7
|
+
* requiring a manual `kspec shadow sync`.
|
|
8
|
+
*
|
|
9
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push — After pulling, pushes
|
|
10
|
+
* local commits if ahead of upstream. Push failure is non-fatal.
|
|
11
|
+
*
|
|
12
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head — Fetch runs
|
|
13
|
+
* from the worktree dir so FETCH_HEAD in the worktree git dir is fresh.
|
|
14
|
+
*/
|
|
15
|
+
import { shadowPull, hasRemoteTracking, fetchRemote, isAheadOfUpstream, pushShadowBranch, getRemoteName, } from './shadow.js';
|
|
16
|
+
/**
|
|
17
|
+
* Manages periodic background shadow sync (fetch + pull + push) for the daemon.
|
|
18
|
+
*
|
|
19
|
+
* AC: @config-shadow ac-12
|
|
20
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push
|
|
21
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head
|
|
22
|
+
*/
|
|
23
|
+
export class ShadowSyncScheduler {
|
|
24
|
+
timer = null;
|
|
25
|
+
running = false;
|
|
26
|
+
worktreeDir;
|
|
27
|
+
intervalMs;
|
|
28
|
+
shadowOptions;
|
|
29
|
+
pubsub;
|
|
30
|
+
constructor(options) {
|
|
31
|
+
this.worktreeDir = options.worktreeDir;
|
|
32
|
+
this.intervalMs = options.intervalSeconds * 1000;
|
|
33
|
+
this.shadowOptions = options.shadowOptions;
|
|
34
|
+
this.pubsub = options.pubsub;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Start the periodic sync scheduler.
|
|
38
|
+
* Does nothing if interval is 0 or already started.
|
|
39
|
+
*/
|
|
40
|
+
start() {
|
|
41
|
+
if (this.intervalMs <= 0 || this.timer !== null) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
console.log(`[daemon] Shadow sync scheduler started (interval: ${this.intervalMs / 1000}s)`);
|
|
45
|
+
this.timer = setInterval(() => {
|
|
46
|
+
this.syncOnce().catch((err) => {
|
|
47
|
+
console.error('[daemon] Shadow sync error:', err);
|
|
48
|
+
});
|
|
49
|
+
}, this.intervalMs);
|
|
50
|
+
// Don't prevent process exit
|
|
51
|
+
if (this.timer && typeof this.timer === 'object' && 'unref' in this.timer) {
|
|
52
|
+
this.timer.unref();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Stop the periodic sync scheduler.
|
|
57
|
+
*/
|
|
58
|
+
stop() {
|
|
59
|
+
if (this.timer !== null) {
|
|
60
|
+
clearInterval(this.timer);
|
|
61
|
+
this.timer = null;
|
|
62
|
+
console.log('[daemon] Shadow sync scheduler stopped');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Perform a single sync cycle: fetch, pull, then push if ahead.
|
|
67
|
+
* Skips if another sync is already in progress or no tracking configured.
|
|
68
|
+
*
|
|
69
|
+
* AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head —
|
|
70
|
+
* Fetch runs from worktreeDir so FETCH_HEAD in the worktree git dir
|
|
71
|
+
* is fresh for CLI drift checks.
|
|
72
|
+
*
|
|
73
|
+
* AC: @shadow-daemon-push-sync ac-periodic-push —
|
|
74
|
+
* After pulling, pushes if local is ahead of remote.
|
|
75
|
+
* Push failure is non-fatal (logged, not thrown).
|
|
76
|
+
*/
|
|
77
|
+
async syncOnce() {
|
|
78
|
+
if (this.running) {
|
|
79
|
+
return; // Skip if previous sync still running
|
|
80
|
+
}
|
|
81
|
+
// Check if remote tracking is configured before attempting sync
|
|
82
|
+
const hasTracking = await hasRemoteTracking(this.worktreeDir, this.shadowOptions);
|
|
83
|
+
if (!hasTracking) {
|
|
84
|
+
return; // No remote tracking — nothing to sync
|
|
85
|
+
}
|
|
86
|
+
this.running = true;
|
|
87
|
+
try {
|
|
88
|
+
// AC: @shadow-daemon-push-sync ac-daemon-freshens-fetch-head
|
|
89
|
+
// Fetch from worktreeDir to freshen FETCH_HEAD in the worktree git dir.
|
|
90
|
+
// CLI drift checks resolve FETCH_HEAD from the same worktree dir, so
|
|
91
|
+
// the daemon's fetch keeps it fresh and CLI skips redundant fetches.
|
|
92
|
+
await fetchRemote(this.worktreeDir, getRemoteName(this.shadowOptions));
|
|
93
|
+
const result = await shadowPull(this.worktreeDir, this.shadowOptions);
|
|
94
|
+
if (result.pulled) {
|
|
95
|
+
console.log('[daemon] Shadow sync: pulled remote changes');
|
|
96
|
+
// Broadcast so the UI refreshes
|
|
97
|
+
if (this.pubsub) {
|
|
98
|
+
this.pubsub.broadcast('shadow', 'shadow_sync', {
|
|
99
|
+
pulled: true,
|
|
100
|
+
hadConflict: false,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (result.hadConflict) {
|
|
105
|
+
console.warn('[daemon] Shadow sync: conflict detected. Run `kspec shadow resolve` to fix.');
|
|
106
|
+
if (this.pubsub) {
|
|
107
|
+
this.pubsub.broadcast('shadow', 'shadow_sync', {
|
|
108
|
+
pulled: false,
|
|
109
|
+
hadConflict: true,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// AC: @shadow-daemon-push-sync ac-periodic-push
|
|
114
|
+
// After pulling, push if local has unpushed commits ahead of upstream.
|
|
115
|
+
// Push failure is non-fatal — logged but does not throw.
|
|
116
|
+
if (!result.hadConflict) {
|
|
117
|
+
const ahead = await isAheadOfUpstream(this.worktreeDir);
|
|
118
|
+
if (ahead) {
|
|
119
|
+
const pushed = await pushShadowBranch(this.worktreeDir, getRemoteName(this.shadowOptions), this.shadowOptions);
|
|
120
|
+
if (pushed) {
|
|
121
|
+
console.log('[daemon] Shadow sync: pushed local changes');
|
|
122
|
+
if (this.pubsub) {
|
|
123
|
+
this.pubsub.broadcast('shadow', 'shadow_sync', {
|
|
124
|
+
pushed: true,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.warn('[daemon] Shadow sync: push failed (non-fatal)');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
this.running = false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=shadow-sync-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shadow-sync-scheduler.js","sourceRoot":"","sources":["../../src/parser/shadow-sync-scheduler.ts"],"names":[],"mappings":"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"}
|