@mclawnet/swarm 0.1.12 → 0.1.14
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/__tests__/always-on-activity-reader.test.d.ts +2 -0
- package/dist/__tests__/always-on-activity-reader.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-activity-reader.test.js +193 -0
- package/dist/__tests__/always-on-activity-reader.test.js.map +1 -0
- package/dist/__tests__/always-on-config.test.d.ts +2 -0
- package/dist/__tests__/always-on-config.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-config.test.js +285 -0
- package/dist/__tests__/always-on-config.test.js.map +1 -0
- package/dist/__tests__/always-on-manager.test.d.ts +2 -0
- package/dist/__tests__/always-on-manager.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-manager.test.js +797 -0
- package/dist/__tests__/always-on-manager.test.js.map +1 -0
- package/dist/__tests__/always-on-parity.test.d.ts +2 -0
- package/dist/__tests__/always-on-parity.test.d.ts.map +1 -0
- package/dist/__tests__/always-on-parity.test.js +20 -0
- package/dist/__tests__/always-on-parity.test.js.map +1 -0
- package/dist/__tests__/cascade-picker.test.d.ts +2 -0
- package/dist/__tests__/cascade-picker.test.d.ts.map +1 -0
- package/dist/__tests__/cascade-picker.test.js +122 -0
- package/dist/__tests__/cascade-picker.test.js.map +1 -0
- package/dist/__tests__/coordinator-shipment.test.d.ts +2 -0
- package/dist/__tests__/coordinator-shipment.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-shipment.test.js +280 -0
- package/dist/__tests__/coordinator-shipment.test.js.map +1 -0
- package/dist/__tests__/coordinator-workspace-recover.test.d.ts +2 -0
- package/dist/__tests__/coordinator-workspace-recover.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-workspace-recover.test.js +140 -0
- package/dist/__tests__/coordinator-workspace-recover.test.js.map +1 -0
- package/dist/__tests__/coordinator-workspace.test.d.ts +2 -0
- package/dist/__tests__/coordinator-workspace.test.d.ts.map +1 -0
- package/dist/__tests__/coordinator-workspace.test.js +135 -0
- package/dist/__tests__/coordinator-workspace.test.js.map +1 -0
- package/dist/__tests__/default-runner-epipe.test.d.ts +2 -0
- package/dist/__tests__/default-runner-epipe.test.d.ts.map +1 -0
- package/dist/__tests__/default-runner-epipe.test.js +43 -0
- package/dist/__tests__/default-runner-epipe.test.js.map +1 -0
- package/dist/__tests__/discovery-scheduler.test.d.ts +2 -0
- package/dist/__tests__/discovery-scheduler.test.d.ts.map +1 -0
- package/dist/__tests__/discovery-scheduler.test.js +367 -0
- package/dist/__tests__/discovery-scheduler.test.js.map +1 -0
- package/dist/__tests__/env-forward-e2e.test.d.ts +2 -0
- package/dist/__tests__/env-forward-e2e.test.d.ts.map +1 -0
- package/dist/__tests__/env-forward-e2e.test.js +57 -0
- package/dist/__tests__/env-forward-e2e.test.js.map +1 -0
- package/dist/__tests__/gh-pr-creator.test.d.ts +2 -0
- package/dist/__tests__/gh-pr-creator.test.d.ts.map +1 -0
- package/dist/__tests__/gh-pr-creator.test.js +107 -0
- package/dist/__tests__/gh-pr-creator.test.js.map +1 -0
- package/dist/__tests__/git-worktree-provider.test.d.ts +2 -0
- package/dist/__tests__/git-worktree-provider.test.d.ts.map +1 -0
- package/dist/__tests__/git-worktree-provider.test.js +98 -0
- package/dist/__tests__/git-worktree-provider.test.js.map +1 -0
- package/dist/__tests__/gitignore-check.test.d.ts +2 -0
- package/dist/__tests__/gitignore-check.test.d.ts.map +1 -0
- package/dist/__tests__/gitignore-check.test.js +39 -0
- package/dist/__tests__/gitignore-check.test.js.map +1 -0
- package/dist/__tests__/idea-research-source.test.d.ts +2 -0
- package/dist/__tests__/idea-research-source.test.d.ts.map +1 -0
- package/dist/__tests__/idea-research-source.test.js +425 -0
- package/dist/__tests__/idea-research-source.test.js.map +1 -0
- package/dist/__tests__/idea-todo-source.test.d.ts +2 -0
- package/dist/__tests__/idea-todo-source.test.d.ts.map +1 -0
- package/dist/__tests__/idea-todo-source.test.js +258 -0
- package/dist/__tests__/idea-todo-source.test.js.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.js +47 -0
- package/dist/__tests__/inbox-store-notbefore.test.js.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js +32 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js.map +1 -0
- package/dist/__tests__/introspection-dedupe.test.d.ts +2 -0
- package/dist/__tests__/introspection-dedupe.test.d.ts.map +1 -0
- package/dist/__tests__/introspection-dedupe.test.js +484 -0
- package/dist/__tests__/introspection-dedupe.test.js.map +1 -0
- package/dist/__tests__/introspection-source.test.d.ts +2 -0
- package/dist/__tests__/introspection-source.test.d.ts.map +1 -0
- package/dist/__tests__/introspection-source.test.js +1051 -0
- package/dist/__tests__/introspection-source.test.js.map +1 -0
- package/dist/__tests__/migration-roles.test.js +1 -22
- package/dist/__tests__/migration-roles.test.js.map +1 -1
- package/dist/__tests__/reconcile-researching.test.d.ts +2 -0
- package/dist/__tests__/reconcile-researching.test.d.ts.map +1 -0
- package/dist/__tests__/reconcile-researching.test.js +224 -0
- package/dist/__tests__/reconcile-researching.test.js.map +1 -0
- package/dist/__tests__/role-loader-editor.test.js +40 -10
- package/dist/__tests__/role-loader-editor.test.js.map +1 -1
- package/dist/__tests__/role-loader-preamble-all.test.js +3 -1
- package/dist/__tests__/role-loader-preamble-all.test.js.map +1 -1
- package/dist/__tests__/role-loader.test.js +95 -0
- package/dist/__tests__/role-loader.test.js.map +1 -1
- package/dist/__tests__/role-prompt-no-legacy-protocol.test.js +3 -1
- package/dist/__tests__/role-prompt-no-legacy-protocol.test.js.map +1 -1
- package/dist/__tests__/secret-scrub.test.d.ts +2 -0
- package/dist/__tests__/secret-scrub.test.d.ts.map +1 -0
- package/dist/__tests__/secret-scrub.test.js +55 -0
- package/dist/__tests__/secret-scrub.test.js.map +1 -0
- package/dist/__tests__/shipment-actions.test.d.ts +2 -0
- package/dist/__tests__/shipment-actions.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-actions.test.js +378 -0
- package/dist/__tests__/shipment-actions.test.js.map +1 -0
- package/dist/__tests__/shipment-persistence.test.d.ts +2 -0
- package/dist/__tests__/shipment-persistence.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-persistence.test.js +120 -0
- package/dist/__tests__/shipment-persistence.test.js.map +1 -0
- package/dist/__tests__/shipment-pipeline.test.d.ts +2 -0
- package/dist/__tests__/shipment-pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-pipeline.test.js +392 -0
- package/dist/__tests__/shipment-pipeline.test.js.map +1 -0
- package/dist/__tests__/shipment-report.test.d.ts +2 -0
- package/dist/__tests__/shipment-report.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-report.test.js +78 -0
- package/dist/__tests__/shipment-report.test.js.map +1 -0
- package/dist/__tests__/shipment-stdin-integration.test.d.ts +2 -0
- package/dist/__tests__/shipment-stdin-integration.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-stdin-integration.test.js +49 -0
- package/dist/__tests__/shipment-stdin-integration.test.js.map +1 -0
- package/dist/__tests__/shipment-type-parity.test.d.ts +2 -0
- package/dist/__tests__/shipment-type-parity.test.d.ts.map +1 -0
- package/dist/__tests__/shipment-type-parity.test.js +10 -0
- package/dist/__tests__/shipment-type-parity.test.js.map +1 -0
- package/dist/__tests__/snapshot-copy-provider.test.d.ts +2 -0
- package/dist/__tests__/snapshot-copy-provider.test.d.ts.map +1 -0
- package/dist/__tests__/snapshot-copy-provider.test.js +88 -0
- package/dist/__tests__/snapshot-copy-provider.test.js.map +1 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js +153 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js.map +1 -1
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts +2 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts.map +1 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.js +111 -0
- package/dist/__tests__/swarm-coordinator-complete-intercept.test.js.map +1 -0
- package/dist/__tests__/task-store-source.test.d.ts +2 -0
- package/dist/__tests__/task-store-source.test.d.ts.map +1 -0
- package/dist/__tests__/task-store-source.test.js +56 -0
- package/dist/__tests__/task-store-source.test.js.map +1 -0
- package/dist/__tests__/template-loader-editor.test.js +28 -13
- package/dist/__tests__/template-loader-editor.test.js.map +1 -1
- package/dist/__tests__/transport-detect.test.d.ts +2 -0
- package/dist/__tests__/transport-detect.test.d.ts.map +1 -0
- package/dist/__tests__/transport-detect.test.js +92 -0
- package/dist/__tests__/transport-detect.test.js.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts +2 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.js +80 -0
- package/dist/__tests__/wakeup-end-to-end.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js +33 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js +62 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.js +65 -0
- package/dist/__tests__/wakeup-scheduler.test.js.map +1 -0
- package/dist/__tests__/watch-manager.test.d.ts +2 -0
- package/dist/__tests__/watch-manager.test.d.ts.map +1 -0
- package/dist/__tests__/watch-manager.test.js +203 -0
- package/dist/__tests__/watch-manager.test.js.map +1 -0
- package/dist/__tests__/workcycle-runner-cascade.test.d.ts +2 -0
- package/dist/__tests__/workcycle-runner-cascade.test.d.ts.map +1 -0
- package/dist/__tests__/workcycle-runner-cascade.test.js +203 -0
- package/dist/__tests__/workcycle-runner-cascade.test.js.map +1 -0
- package/dist/__tests__/workcycle-runner.test.d.ts +2 -0
- package/dist/__tests__/workcycle-runner.test.d.ts.map +1 -0
- package/dist/__tests__/workcycle-runner.test.js +369 -0
- package/dist/__tests__/workcycle-runner.test.js.map +1 -0
- package/dist/__tests__/workspace-diff.test.d.ts +2 -0
- package/dist/__tests__/workspace-diff.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-diff.test.js +62 -0
- package/dist/__tests__/workspace-diff.test.js.map +1 -0
- package/dist/__tests__/workspace-manager.test.d.ts +2 -0
- package/dist/__tests__/workspace-manager.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-manager.test.js +120 -0
- package/dist/__tests__/workspace-manager.test.js.map +1 -0
- package/dist/__tests__/workspace-types.test.d.ts +2 -0
- package/dist/__tests__/workspace-types.test.d.ts.map +1 -0
- package/dist/__tests__/workspace-types.test.js +37 -0
- package/dist/__tests__/workspace-types.test.js.map +1 -0
- package/dist/__tests__/worktree-gc.test.d.ts +2 -0
- package/dist/__tests__/worktree-gc.test.d.ts.map +1 -0
- package/dist/__tests__/worktree-gc.test.js +183 -0
- package/dist/__tests__/worktree-gc.test.js.map +1 -0
- package/dist/always-on/activity-reader.d.ts +27 -0
- package/dist/always-on/activity-reader.d.ts.map +1 -0
- package/dist/always-on/activity-reader.js +95 -0
- package/dist/always-on/activity-reader.js.map +1 -0
- package/dist/always-on/always-on-manager.d.ts +170 -0
- package/dist/always-on/always-on-manager.d.ts.map +1 -0
- package/dist/always-on/always-on-manager.js +538 -0
- package/dist/always-on/always-on-manager.js.map +1 -0
- package/dist/always-on/config.d.ts +141 -0
- package/dist/always-on/config.d.ts.map +1 -0
- package/dist/always-on/config.js +324 -0
- package/dist/always-on/config.js.map +1 -0
- package/dist/always-on/discovery-scheduler.d.ts +60 -0
- package/dist/always-on/discovery-scheduler.d.ts.map +1 -0
- package/dist/always-on/discovery-scheduler.js +287 -0
- package/dist/always-on/discovery-scheduler.js.map +1 -0
- package/dist/always-on/ideas-client.d.ts +23 -0
- package/dist/always-on/ideas-client.d.ts.map +1 -0
- package/dist/always-on/ideas-client.js +13 -0
- package/dist/always-on/ideas-client.js.map +1 -0
- package/dist/always-on/reconcile-researching.d.ts +42 -0
- package/dist/always-on/reconcile-researching.d.ts.map +1 -0
- package/dist/always-on/reconcile-researching.js +133 -0
- package/dist/always-on/reconcile-researching.js.map +1 -0
- package/dist/always-on/task-sources/cascade-picker.d.ts +42 -0
- package/dist/always-on/task-sources/cascade-picker.d.ts.map +1 -0
- package/dist/always-on/task-sources/cascade-picker.js +65 -0
- package/dist/always-on/task-sources/cascade-picker.js.map +1 -0
- package/dist/always-on/task-sources/idea-dedupe.d.ts +62 -0
- package/dist/always-on/task-sources/idea-dedupe.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-dedupe.js +130 -0
- package/dist/always-on/task-sources/idea-dedupe.js.map +1 -0
- package/dist/always-on/task-sources/idea-research-source.d.ts +46 -0
- package/dist/always-on/task-sources/idea-research-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-research-source.js +308 -0
- package/dist/always-on/task-sources/idea-research-source.js.map +1 -0
- package/dist/always-on/task-sources/idea-sort.d.ts +3 -0
- package/dist/always-on/task-sources/idea-sort.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-sort.js +25 -0
- package/dist/always-on/task-sources/idea-sort.js.map +1 -0
- package/dist/always-on/task-sources/idea-todo-source.d.ts +48 -0
- package/dist/always-on/task-sources/idea-todo-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/idea-todo-source.js +226 -0
- package/dist/always-on/task-sources/idea-todo-source.js.map +1 -0
- package/dist/always-on/task-sources/introspection-source.d.ts +101 -0
- package/dist/always-on/task-sources/introspection-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/introspection-source.js +695 -0
- package/dist/always-on/task-sources/introspection-source.js.map +1 -0
- package/dist/always-on/task-sources/task-store-source.d.ts +15 -0
- package/dist/always-on/task-sources/task-store-source.d.ts.map +1 -0
- package/dist/always-on/task-sources/task-store-source.js +59 -0
- package/dist/always-on/task-sources/task-store-source.js.map +1 -0
- package/dist/always-on/task-sources/types.d.ts +108 -0
- package/dist/always-on/task-sources/types.d.ts.map +1 -0
- package/dist/always-on/task-sources/types.js +13 -0
- package/dist/always-on/task-sources/types.js.map +1 -0
- package/dist/always-on/types.d.ts +76 -0
- package/dist/always-on/types.d.ts.map +1 -0
- package/dist/always-on/types.js +17 -0
- package/dist/always-on/types.js.map +1 -0
- package/dist/always-on/workcycle-runner.d.ts +115 -0
- package/dist/always-on/workcycle-runner.d.ts.map +1 -0
- package/dist/always-on/workcycle-runner.js +285 -0
- package/dist/always-on/workcycle-runner.js.map +1 -0
- package/dist/always-on/worktree-gc.d.ts +41 -0
- package/dist/always-on/worktree-gc.d.ts.map +1 -0
- package/dist/always-on/worktree-gc.js +167 -0
- package/dist/always-on/worktree-gc.js.map +1 -0
- package/dist/inbox-store.d.ts +7 -0
- package/dist/inbox-store.d.ts.map +1 -1
- package/dist/inbox-store.js +8 -1
- package/dist/inbox-store.js.map +1 -1
- package/dist/index.d.ts +29 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -2
- package/dist/index.js.map +1 -1
- package/dist/persistence.d.ts +37 -1
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +48 -0
- package/dist/persistence.js.map +1 -1
- package/dist/retrospective.d.ts.map +1 -1
- package/dist/retrospective.js +6 -0
- package/dist/retrospective.js.map +1 -1
- package/dist/roles/role-loader.d.ts +31 -6
- package/dist/roles/role-loader.d.ts.map +1 -1
- package/dist/roles/role-loader.js +58 -32
- package/dist/roles/role-loader.js.map +1 -1
- package/dist/roles/types.d.ts +12 -0
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/shipment/gh-pr-creator.d.ts +28 -0
- package/dist/shipment/gh-pr-creator.d.ts.map +1 -0
- package/dist/shipment/gh-pr-creator.js +80 -0
- package/dist/shipment/gh-pr-creator.js.map +1 -0
- package/dist/shipment/report.d.ts +27 -0
- package/dist/shipment/report.d.ts.map +1 -0
- package/dist/shipment/report.js +41 -0
- package/dist/shipment/report.js.map +1 -0
- package/dist/shipment/secret-scrub.d.ts +12 -0
- package/dist/shipment/secret-scrub.d.ts.map +1 -0
- package/dist/shipment/secret-scrub.js +30 -0
- package/dist/shipment/secret-scrub.js.map +1 -0
- package/dist/shipment/shipment-actions.d.ts +85 -0
- package/dist/shipment/shipment-actions.d.ts.map +1 -0
- package/dist/shipment/shipment-actions.js +190 -0
- package/dist/shipment/shipment-actions.js.map +1 -0
- package/dist/shipment/shipment-pipeline.d.ts +48 -0
- package/dist/shipment/shipment-pipeline.d.ts.map +1 -0
- package/dist/shipment/shipment-pipeline.js +256 -0
- package/dist/shipment/shipment-pipeline.js.map +1 -0
- package/dist/shipment/transport-detect.d.ts +16 -0
- package/dist/shipment/transport-detect.d.ts.map +1 -0
- package/dist/shipment/transport-detect.js +54 -0
- package/dist/shipment/transport-detect.js.map +1 -0
- package/dist/shipment/workspace-diff.d.ts +39 -0
- package/dist/shipment/workspace-diff.d.ts.map +1 -0
- package/dist/shipment/workspace-diff.js +64 -0
- package/dist/shipment/workspace-diff.js.map +1 -0
- package/dist/swarm-coordinator.d.ts +20 -1
- package/dist/swarm-coordinator.d.ts.map +1 -1
- package/dist/swarm-coordinator.js +193 -10
- package/dist/swarm-coordinator.js.map +1 -1
- package/dist/templates/template-loader.d.ts +23 -9
- package/dist/templates/template-loader.d.ts.map +1 -1
- package/dist/templates/template-loader.js +33 -26
- package/dist/templates/template-loader.js.map +1 -1
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wakeup-scheduler.d.ts +36 -0
- package/dist/wakeup-scheduler.d.ts.map +1 -0
- package/dist/wakeup-scheduler.js +107 -0
- package/dist/wakeup-scheduler.js.map +1 -0
- package/dist/watch-manager.d.ts +32 -0
- package/dist/watch-manager.d.ts.map +1 -0
- package/dist/watch-manager.js +153 -0
- package/dist/watch-manager.js.map +1 -0
- package/dist/workspace/git-worktree-provider.d.ts +11 -0
- package/dist/workspace/git-worktree-provider.d.ts.map +1 -0
- package/dist/workspace/git-worktree-provider.js +123 -0
- package/dist/workspace/git-worktree-provider.js.map +1 -0
- package/dist/workspace/gitignore-check.d.ts +10 -0
- package/dist/workspace/gitignore-check.d.ts.map +1 -0
- package/dist/workspace/gitignore-check.js +25 -0
- package/dist/workspace/gitignore-check.js.map +1 -0
- package/dist/workspace/index.d.ts +5 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +5 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/snapshot-copy-provider.d.ts +11 -0
- package/dist/workspace/snapshot-copy-provider.d.ts.map +1 -0
- package/dist/workspace/snapshot-copy-provider.js +66 -0
- package/dist/workspace/snapshot-copy-provider.js.map +1 -0
- package/dist/workspace/types.d.ts +36 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +2 -0
- package/dist/workspace/types.js.map +1 -0
- package/dist/workspace/workspace-manager.d.ts +30 -0
- package/dist/workspace/workspace-manager.d.ts.map +1 -0
- package/dist/workspace/workspace-manager.js +104 -0
- package/dist/workspace/workspace-manager.js.map +1 -0
- package/package.json +5 -5
- package/roles/queen.md +1 -0
- package/templates/introspection.md +64 -0
- package/templates/research-only.md +58 -0
- package/roles/preset-analyst-simons.md +0 -39
- package/roles/preset-architect-knuth.md +0 -39
- package/roles/preset-designer-norman.md +0 -39
- package/roles/preset-designer.md +0 -39
- package/roles/preset-dev-carmack.md +0 -39
- package/roles/preset-dev-gosling.md +0 -39
- package/roles/preset-developer.md +0 -52
- package/roles/preset-manager-grove.md +0 -39
- package/roles/preset-manager-musk.md +0 -39
- package/roles/preset-pm.md +0 -78
- package/roles/preset-researcher-feynman.md +0 -39
- package/roles/preset-reviewer.md +0 -46
- package/roles/preset-strategist-buffett.md +0 -39
- package/roles/preset-strategist-munger.md +0 -39
- package/roles/preset-strategist-sunzi.md +0 -39
- package/roles/preset-tester-beck.md +0 -40
- package/roles/preset-tester.md +0 -47
- package/roles/preset-writer-orwell.md +0 -39
- package/roles/preset-writer.md +0 -39
|
@@ -11,29 +11,43 @@ import type { TemplateDefinition } from "./types.js";
|
|
|
11
11
|
* ```
|
|
12
12
|
*/
|
|
13
13
|
export declare function parseTemplateFile(content: string): TemplateDefinition;
|
|
14
|
-
/** Ensure user templates directory exists. */
|
|
15
|
-
export declare function initTemplates(): string;
|
|
16
14
|
/** List all available template names (user dir + presets, deduplicated). */
|
|
17
15
|
export declare function listTemplates(): string[];
|
|
18
16
|
/** Load a template definition by name. User directory takes priority. */
|
|
19
17
|
export declare function loadTemplate(name: string): TemplateDefinition;
|
|
20
|
-
export type TemplateSource = "preset" | "user"
|
|
18
|
+
export type TemplateSource = "preset" | "user";
|
|
21
19
|
export interface TemplateListItem {
|
|
22
20
|
name: string;
|
|
23
21
|
source: TemplateSource;
|
|
22
|
+
/**
|
|
23
|
+
* True when a user-authored template with this name hides a built-in preset
|
|
24
|
+
* of the same name (legacy state — saveTemplate now refuses such writes).
|
|
25
|
+
* Lets the UI warn the user they're masking a built-in.
|
|
26
|
+
*/
|
|
27
|
+
shadowsPreset?: boolean;
|
|
24
28
|
}
|
|
25
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* List all templates with source tag.
|
|
31
|
+
*
|
|
32
|
+
* Presets live in the npm package; user templates in `~/.clawnet/templates/`.
|
|
33
|
+
* Names must be globally unique going forward (enforced at save time). On a
|
|
34
|
+
* collision (e.g. a stale user copy left over from an older build), the user
|
|
35
|
+
* copy wins for both listing and loading and is flagged `shadowsPreset` so
|
|
36
|
+
* the UI can surface the conflict.
|
|
37
|
+
*/
|
|
26
38
|
export declare function listTemplatesWithSource(): TemplateListItem[];
|
|
27
39
|
/** Resolve a template's source; null when neither user nor preset has it. */
|
|
28
40
|
export declare function getTemplateSource(name: string): TemplateSource | null;
|
|
29
41
|
/** Get raw markdown content. User file wins over preset. */
|
|
30
42
|
export declare function getTemplateRaw(name: string): string | null;
|
|
31
43
|
/**
|
|
32
|
-
* Write a template to the user directory.
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
44
|
+
* Write a template to the user directory.
|
|
45
|
+
*
|
|
46
|
+
* Validates by parsing first; throws on bad frontmatter so a broken file
|
|
47
|
+
* never reaches disk. Refuses to write if the name collides with a built-in
|
|
48
|
+
* preset — presets are immutable, so "edit a preset" is implemented by Copy
|
|
49
|
+
* with a new name. Uses tmp + rename for atomicity (no truncated reads under
|
|
50
|
+
* concurrent get).
|
|
37
51
|
*/
|
|
38
52
|
export declare function saveTemplate(name: string, raw: string): TemplateSource;
|
|
39
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../src/templates/template-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAuCvE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAwDrE;AAUD,
|
|
1
|
+
{"version":3,"file":"template-loader.d.ts","sourceRoot":"","sources":["../../src/templates/template-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAuCvE;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,CAwDrE;AAUD,4EAA4E;AAC5E,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAqBxC;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAa7D;AAMD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,CAAC;IACvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,EAAE,CA2B5D;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAKrE;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAmBtE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,gBAAgB,EAAE,OAAO,CAAA;CAAE,CAW1E"}
|
|
@@ -104,12 +104,6 @@ function finalizeRole(partial) {
|
|
|
104
104
|
eager: partial.eager,
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
|
-
/** Ensure user templates directory exists. */
|
|
108
|
-
export function initTemplates() {
|
|
109
|
-
const dir = userTemplatesDir();
|
|
110
|
-
mkdirSync(dir, { recursive: true });
|
|
111
|
-
return dir;
|
|
112
|
-
}
|
|
113
107
|
/** List all available template names (user dir + presets, deduplicated). */
|
|
114
108
|
export function listTemplates() {
|
|
115
109
|
const templates = new Set();
|
|
@@ -143,7 +137,15 @@ export function loadTemplate(name) {
|
|
|
143
137
|
}
|
|
144
138
|
throw new Error(`Template not found: ${name}`);
|
|
145
139
|
}
|
|
146
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* List all templates with source tag.
|
|
142
|
+
*
|
|
143
|
+
* Presets live in the npm package; user templates in `~/.clawnet/templates/`.
|
|
144
|
+
* Names must be globally unique going forward (enforced at save time). On a
|
|
145
|
+
* collision (e.g. a stale user copy left over from an older build), the user
|
|
146
|
+
* copy wins for both listing and loading and is flagged `shadowsPreset` so
|
|
147
|
+
* the UI can surface the conflict.
|
|
148
|
+
*/
|
|
147
149
|
export function listTemplatesWithSource() {
|
|
148
150
|
const presetNames = existsSync(PRESET_DIR)
|
|
149
151
|
? readdirSync(PRESET_DIR)
|
|
@@ -156,26 +158,26 @@ export function listTemplatesWithSource() {
|
|
|
156
158
|
.filter((f) => f.endsWith(".md"))
|
|
157
159
|
.map((f) => f.replace(/\.md$/, ""))
|
|
158
160
|
: [];
|
|
159
|
-
const presetSet = new Set(presetNames);
|
|
160
161
|
const userSet = new Set(userNames);
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
162
|
+
const presetSet = new Set(presetNames);
|
|
163
|
+
const items = [];
|
|
164
|
+
for (const name of userNames) {
|
|
165
|
+
items.push(presetSet.has(name)
|
|
166
|
+
? { name, source: "user", shadowsPreset: true }
|
|
167
|
+
: { name, source: "user" });
|
|
168
|
+
}
|
|
169
|
+
for (const name of presetNames) {
|
|
170
|
+
if (!userSet.has(name))
|
|
171
|
+
items.push({ name, source: "preset" });
|
|
172
|
+
}
|
|
173
|
+
return items.sort((a, b) => a.name.localeCompare(b.name));
|
|
168
174
|
}
|
|
169
175
|
/** Resolve a template's source; null when neither user nor preset has it. */
|
|
170
176
|
export function getTemplateSource(name) {
|
|
171
177
|
validateName(name);
|
|
172
|
-
|
|
173
|
-
const inPreset = existsSync(join(PRESET_DIR, `${name}.md`));
|
|
174
|
-
if (inUser && inPreset)
|
|
175
|
-
return "override";
|
|
176
|
-
if (inUser)
|
|
178
|
+
if (existsSync(join(userTemplatesDir(), `${name}.md`)))
|
|
177
179
|
return "user";
|
|
178
|
-
if (
|
|
180
|
+
if (existsSync(join(PRESET_DIR, `${name}.md`)))
|
|
179
181
|
return "preset";
|
|
180
182
|
return null;
|
|
181
183
|
}
|
|
@@ -191,14 +193,19 @@ export function getTemplateRaw(name) {
|
|
|
191
193
|
return null;
|
|
192
194
|
}
|
|
193
195
|
/**
|
|
194
|
-
* Write a template to the user directory.
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
196
|
+
* Write a template to the user directory.
|
|
197
|
+
*
|
|
198
|
+
* Validates by parsing first; throws on bad frontmatter so a broken file
|
|
199
|
+
* never reaches disk. Refuses to write if the name collides with a built-in
|
|
200
|
+
* preset — presets are immutable, so "edit a preset" is implemented by Copy
|
|
201
|
+
* with a new name. Uses tmp + rename for atomicity (no truncated reads under
|
|
202
|
+
* concurrent get).
|
|
199
203
|
*/
|
|
200
204
|
export function saveTemplate(name, raw) {
|
|
201
205
|
validateName(name);
|
|
206
|
+
if (existsSync(join(PRESET_DIR, `${name}.md`))) {
|
|
207
|
+
throw new Error(`Cannot save template '${name}': name conflicts with a built-in preset. Choose another name.`);
|
|
208
|
+
}
|
|
202
209
|
const parsed = parseTemplateFile(raw);
|
|
203
210
|
if (parsed.name && parsed.name !== name && parsed.name !== "unknown") {
|
|
204
211
|
throw new Error(`Frontmatter name '${parsed.name}' does not match requested '${name}'`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-loader.js","sourceRoot":"","sources":["../../src/templates/template-loader.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"template-loader.js","sourceRoot":"","sources":["../../src/templates/template-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -35,6 +35,27 @@ export interface SessionAdapter {
|
|
|
35
35
|
* - claude: `--permission-mode` (LLM-soft approval)
|
|
36
36
|
*/
|
|
37
37
|
sandbox?: SandboxLevel;
|
|
38
|
+
/**
|
|
39
|
+
* N4.5 per-role sticky model code (e.g. claude "opus-4", codex "gpt-4o").
|
|
40
|
+
* Threaded from RoleDefinition.model → spawnRole → SessionAdapter so each
|
|
41
|
+
* backend can map to its own `--model` / `-c model="..."` flag. Omitted =
|
|
42
|
+
* adapter default.
|
|
43
|
+
*/
|
|
44
|
+
model?: string;
|
|
45
|
+
/**
|
|
46
|
+
* N4.5 per-role sticky mode code (claude permission-mode alias / codex
|
|
47
|
+
* sandbox alias). Omitted = adapter falls back to `sandbox` or its own
|
|
48
|
+
* default.
|
|
49
|
+
*/
|
|
50
|
+
mode?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Extra env vars merged onto `process.env` for the subprocess. M6 T7
|
|
53
|
+
* uses this to forward `CLAWNET_PROJECT_ROOT` so MCP tools (whose
|
|
54
|
+
* `workDir` arg defaults to the role's cwd, which under M6 is the
|
|
55
|
+
* worktree) can fall back to the original project root for inbox /
|
|
56
|
+
* task storage routing.
|
|
57
|
+
*/
|
|
58
|
+
env?: Record<string, string>;
|
|
38
59
|
}): Promise<string>;
|
|
39
60
|
sendInput(sessionId: string, input: string): void;
|
|
40
61
|
closeSession(sessionId: string): Promise<void>;
|
|
@@ -45,6 +66,13 @@ export interface HubAdapter {
|
|
|
45
66
|
}
|
|
46
67
|
export type SwarmStatus = "creating" | "running" | "paused" | "completed" | "failed" | "cancelled";
|
|
47
68
|
export type PlanStatus = "none" | "draft" | "reviewing" | "approved" | "rejected";
|
|
69
|
+
/**
|
|
70
|
+
* PR-B D11 — provenance tag for a swarm. UI badges, shipment labels,
|
|
71
|
+
* worktree GC decisions, retrospective dispatch all branch on this.
|
|
72
|
+
* Optional for back-compat: pre-D11 snapshots (without `kind`) are
|
|
73
|
+
* treated as "user" by default — the existing chat-driven path.
|
|
74
|
+
*/
|
|
75
|
+
export type SwarmKind = "user" | "always-on-cycle" | "always-on-introspection";
|
|
48
76
|
export interface SwarmInstance {
|
|
49
77
|
/** Swarm ID (same as the Hub session ID visible to the browser) */
|
|
50
78
|
id: string;
|
|
@@ -74,6 +102,14 @@ export interface SwarmInstance {
|
|
|
74
102
|
status: SwarmStatus;
|
|
75
103
|
/** Plan review status */
|
|
76
104
|
planStatus: PlanStatus;
|
|
105
|
+
/**
|
|
106
|
+
* PR-B D11 — provenance: who/what created this swarm.
|
|
107
|
+
* Default "user" when omitted (pre-D11 snapshots / chat-driven path).
|
|
108
|
+
* Set explicitly by always-on cycle creators (`always-on-cycle` for
|
|
109
|
+
* `WorkCycleRunner.run`-spawned ones, `always-on-introspection` for
|
|
110
|
+
* `IntrospectionSource.pick`-spawned ones).
|
|
111
|
+
*/
|
|
112
|
+
kind?: SwarmKind;
|
|
77
113
|
/**
|
|
78
114
|
* Timer for the "reviewing" deadline. When the reviewer fails to submit a
|
|
79
115
|
* verdict within PLAN_REVIEW_TIMEOUT_MS the swarm auto-approves with a
|
|
@@ -83,6 +119,20 @@ export interface SwarmInstance {
|
|
|
83
119
|
planReviewTimer?: ReturnType<typeof setTimeout>;
|
|
84
120
|
/** True if a recover() pass had ≥1 role fail to spawn — useful for diagnostics. */
|
|
85
121
|
partialRecover?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Workspace handle returned by WorkspaceManager.prepare(). Optional for
|
|
124
|
+
* backward compatibility — swarms created before M6 (or when workspace
|
|
125
|
+
* prepare fails) don't have this set; in that case roles still run with
|
|
126
|
+
* `cwd = workDir` (legacy behavior). Role-cwd override lands in M6 T7.
|
|
127
|
+
*/
|
|
128
|
+
workspace?: import("./workspace/types.js").WorkspaceHandle;
|
|
129
|
+
/**
|
|
130
|
+
* M6.1: Result of the shipment pipeline that runs once during
|
|
131
|
+
* runRetroAndCleanup (before workspace dispose). Captures whether a draft PR
|
|
132
|
+
* was opened, the branch name, or fallback diff/report paths so M6.2 UI can
|
|
133
|
+
* surface "what was shipped" after the swarm completes.
|
|
134
|
+
*/
|
|
135
|
+
shipment?: import("./shipment/shipment-pipeline.js").ShipmentResult;
|
|
86
136
|
}
|
|
87
137
|
export interface RoleInstance {
|
|
88
138
|
/** Unique instance identifier, e.g. "dev-1" */
|
|
@@ -160,6 +210,10 @@ export interface CustomRoleDefinition {
|
|
|
160
210
|
backend?: "claude" | "codex";
|
|
161
211
|
/** Optional sandbox level for this custom role; falls back to "workspace-write". */
|
|
162
212
|
sandbox?: SandboxLevel;
|
|
213
|
+
/** Optional sticky model code; locked at swarm-start. Omitted = adapter default. */
|
|
214
|
+
model?: string;
|
|
215
|
+
/** Optional sticky mode code; aliased per backend. Omitted = adapter uses sandbox or default. */
|
|
216
|
+
mode?: string;
|
|
163
217
|
}
|
|
164
218
|
export interface SwarmCreateOptions {
|
|
165
219
|
workDir?: string;
|
|
@@ -176,9 +230,17 @@ export interface SwarmCreateOptions {
|
|
|
176
230
|
customDefinition?: CustomRoleDefinition;
|
|
177
231
|
backend?: "claude" | "codex";
|
|
178
232
|
sandbox?: SandboxLevel;
|
|
233
|
+
model?: string;
|
|
234
|
+
mode?: string;
|
|
179
235
|
}>;
|
|
180
236
|
task?: string;
|
|
181
237
|
/** When true, this swarm continues from a previously completed/failed swarm on the same session. */
|
|
182
238
|
isContinuation?: boolean;
|
|
239
|
+
/**
|
|
240
|
+
* PR-B D11 — provenance tag. Defaults to "user" when omitted.
|
|
241
|
+
* always-on cycle callers pass "always-on-cycle"; introspection callers
|
|
242
|
+
* pass "always-on-introspection".
|
|
243
|
+
*/
|
|
244
|
+
kind?: SwarmKind;
|
|
183
245
|
}
|
|
184
246
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,OAAO,EAAE;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B;;;;;;;WAOG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qEAAqE;QACrE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,uEAAuE;QACvE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B;;;;WAIG;QACH,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;QAC7B;;;;;WAKG;QACH,OAAO,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface WakeupRelayLike {
|
|
2
|
+
deliver(swarmId: string, instanceId: string): void | Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
export interface RestoreSwarm {
|
|
5
|
+
swarmId: string;
|
|
6
|
+
workDir: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RestoreOptions {
|
|
9
|
+
projectRootFor?: (workDir: string, home: string) => string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* In-memory timer registry for delayed inbox deliveries.
|
|
13
|
+
*
|
|
14
|
+
* `wakeup_after` writes an InboxMessage with `notBefore` in the future;
|
|
15
|
+
* readUndelivered filters it until that time. To avoid waiting on the next
|
|
16
|
+
* external deliver() call to discover the wakeup, we register an in-process
|
|
17
|
+
* setTimeout that fires relay.deliver() at notBefore.
|
|
18
|
+
*
|
|
19
|
+
* Persistence: timers are NOT persisted — InboxStore is. On agent startup
|
|
20
|
+
* restoreFromInbox() scans inbox files and re-registers timers for all
|
|
21
|
+
* future-dated messages.
|
|
22
|
+
*/
|
|
23
|
+
export declare class WakeupScheduler {
|
|
24
|
+
private relay;
|
|
25
|
+
private timers;
|
|
26
|
+
constructor(relay: WakeupRelayLike);
|
|
27
|
+
private key;
|
|
28
|
+
register(swarmId: string, instanceId: string, notBefore: number): void;
|
|
29
|
+
size(): number;
|
|
30
|
+
/** Count of active timers for (swarmId, instanceId). Used by mcp-server's
|
|
31
|
+
* wrapper to enforce per-instance caps before register. */
|
|
32
|
+
countForInstance(swarmId: string, instanceId: string): number;
|
|
33
|
+
dispose(): void;
|
|
34
|
+
restoreFromInbox(home: string, swarms: RestoreSwarm[], opts?: RestoreOptions): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=wakeup-scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-scheduler.d.ts","sourceRoot":"","sources":["../src/wakeup-scheduler.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AACnE,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5D;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,eAAe;IAEd,OAAO,CAAC,KAAK;IADzB,OAAO,CAAC,MAAM,CAAqC;gBAC/B,KAAK,EAAE,eAAe;IAC1C,OAAO,CAAC,GAAG;IACX,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAatE,IAAI,IAAI,MAAM;IACd;gEAC4D;IAC5D,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAM7D,OAAO,IAAI,IAAI;IAET,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CAuCvG"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { createLogger } from "@mclawnet/logger";
|
|
4
|
+
import { projectRoot as defaultProjectRoot } from "@mclawnet/task";
|
|
5
|
+
const log = createLogger({ module: "swarm/wakeup-scheduler" });
|
|
6
|
+
/**
|
|
7
|
+
* In-memory timer registry for delayed inbox deliveries.
|
|
8
|
+
*
|
|
9
|
+
* `wakeup_after` writes an InboxMessage with `notBefore` in the future;
|
|
10
|
+
* readUndelivered filters it until that time. To avoid waiting on the next
|
|
11
|
+
* external deliver() call to discover the wakeup, we register an in-process
|
|
12
|
+
* setTimeout that fires relay.deliver() at notBefore.
|
|
13
|
+
*
|
|
14
|
+
* Persistence: timers are NOT persisted — InboxStore is. On agent startup
|
|
15
|
+
* restoreFromInbox() scans inbox files and re-registers timers for all
|
|
16
|
+
* future-dated messages.
|
|
17
|
+
*/
|
|
18
|
+
export class WakeupScheduler {
|
|
19
|
+
relay;
|
|
20
|
+
timers = new Map();
|
|
21
|
+
constructor(relay) {
|
|
22
|
+
this.relay = relay;
|
|
23
|
+
}
|
|
24
|
+
key(s, i, n) { return `${s}::${i}::${n}`; }
|
|
25
|
+
register(swarmId, instanceId, notBefore) {
|
|
26
|
+
const k = this.key(swarmId, instanceId, notBefore);
|
|
27
|
+
if (this.timers.has(k))
|
|
28
|
+
return;
|
|
29
|
+
const delay = Math.max(0, notBefore - Date.now());
|
|
30
|
+
const t = setTimeout(() => {
|
|
31
|
+
this.timers.delete(k);
|
|
32
|
+
Promise.resolve(this.relay.deliver(swarmId, instanceId)).catch(err => {
|
|
33
|
+
log.warn({ err, swarmId, instanceId }, "wakeup deliver failed (best-effort)");
|
|
34
|
+
});
|
|
35
|
+
}, delay);
|
|
36
|
+
t.unref(); // don't keep event loop alive purely for wakeups
|
|
37
|
+
this.timers.set(k, t);
|
|
38
|
+
}
|
|
39
|
+
size() { return this.timers.size; }
|
|
40
|
+
/** Count of active timers for (swarmId, instanceId). Used by mcp-server's
|
|
41
|
+
* wrapper to enforce per-instance caps before register. */
|
|
42
|
+
countForInstance(swarmId, instanceId) {
|
|
43
|
+
const prefix = `${swarmId}::${instanceId}::`;
|
|
44
|
+
let c = 0;
|
|
45
|
+
for (const k of this.timers.keys())
|
|
46
|
+
if (k.startsWith(prefix))
|
|
47
|
+
c++;
|
|
48
|
+
return c;
|
|
49
|
+
}
|
|
50
|
+
dispose() { for (const t of this.timers.values())
|
|
51
|
+
clearTimeout(t); this.timers.clear(); }
|
|
52
|
+
async restoreFromInbox(home, swarms, opts = {}) {
|
|
53
|
+
const resolveRoot = opts.projectRootFor ?? ((wd, h) => defaultProjectRoot(wd, h));
|
|
54
|
+
const now = Date.now();
|
|
55
|
+
let restored = 0;
|
|
56
|
+
for (const { swarmId, workDir } of swarms) {
|
|
57
|
+
// Per-swarm try: any unexpected throw (bad workDir, projectRoot
|
|
58
|
+
// computation, path traversal in encoding, etc) must not short-circuit
|
|
59
|
+
// restoration for the remaining swarms.
|
|
60
|
+
try {
|
|
61
|
+
const inboxDir = join(resolveRoot(workDir, home), "swarms", swarmId, "inboxes");
|
|
62
|
+
if (!existsSync(inboxDir))
|
|
63
|
+
continue;
|
|
64
|
+
let entries;
|
|
65
|
+
try {
|
|
66
|
+
entries = readdirSync(inboxDir);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
log.warn({ err, inboxDir }, "WakeupScheduler: readdir failed, skipping swarm");
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
for (const file of entries) {
|
|
73
|
+
if (!file.endsWith(".json"))
|
|
74
|
+
continue;
|
|
75
|
+
const instanceId = file.slice(0, -5);
|
|
76
|
+
if (!instanceId)
|
|
77
|
+
continue; // skip pathological ".json" name
|
|
78
|
+
let parsed;
|
|
79
|
+
try {
|
|
80
|
+
parsed = JSON.parse(readFileSync(join(inboxDir, file), "utf-8"));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (!Array.isArray(parsed))
|
|
86
|
+
continue; // defensive: skip object/null
|
|
87
|
+
for (const raw of parsed) {
|
|
88
|
+
if (!raw || typeof raw !== "object")
|
|
89
|
+
continue;
|
|
90
|
+
const m = raw;
|
|
91
|
+
if (m.delivered)
|
|
92
|
+
continue;
|
|
93
|
+
if (m.notBefore === undefined || m.notBefore <= now)
|
|
94
|
+
continue;
|
|
95
|
+
this.register(swarmId, instanceId, m.notBefore);
|
|
96
|
+
restored++;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
log.warn({ err, swarmId, workDir }, "WakeupScheduler: swarm restore failed, skipping");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
log.info({ restored, swarms: swarms.length }, "WakeupScheduler restored timers from inbox");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=wakeup-scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wakeup-scheduler.js","sourceRoot":"","sources":["../src/wakeup-scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { watch } from "node:fs";
|
|
2
|
+
export interface WatchRegistration {
|
|
3
|
+
swarmId: string;
|
|
4
|
+
instanceId: string;
|
|
5
|
+
watchId: string;
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
includeGlobs: string[];
|
|
8
|
+
ignoreGlobs: string[];
|
|
9
|
+
debounceMs: number;
|
|
10
|
+
onTrigger: (matchedPath: string) => void | Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface WatchManagerOptions {
|
|
13
|
+
/** Defaults to native `fs.watch`; tests may inject a fake. */
|
|
14
|
+
watchFn?: typeof watch;
|
|
15
|
+
}
|
|
16
|
+
export declare class WatchManager {
|
|
17
|
+
private handles;
|
|
18
|
+
private watchFn;
|
|
19
|
+
constructor(opts?: WatchManagerOptions);
|
|
20
|
+
size(): number;
|
|
21
|
+
/** Count of active watches for (swarmId, instanceId). Used by the
|
|
22
|
+
* mcp-server wrapper to enforce per-instance caps before register and to
|
|
23
|
+
* decide whether to prune external registries on unregister
|
|
24
|
+
* (`countForInstance(s, i) === 0`). */
|
|
25
|
+
countForInstance(swarmId: string, instanceId: string): number;
|
|
26
|
+
private key;
|
|
27
|
+
register(reg: WatchRegistration): void;
|
|
28
|
+
unregister(swarmId: string, instanceId: string, watchId: string): void;
|
|
29
|
+
unwatchByInstance(swarmId: string, instanceId: string): void;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=watch-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-manager.d.ts","sourceRoot":"","sources":["../src/watch-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,EAAkB,MAAM,SAAS,CAAC;AAM5D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAUD,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAe;gBAElB,IAAI,GAAE,mBAAwB;IAI1C,IAAI,IAAI,MAAM;IAEd;;;4CAGwC;IACxC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAO7D,OAAO,CAAC,GAAG;IAEX,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI;IAwCtC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAStE,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAY5D,OAAO,IAAI,IAAI;CAOhB"}
|