maestro-flow 0.3.0 → 0.3.2
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/.claude/commands/maestro-overlay.md +178 -122
- package/.claude/commands/manage-harvest.md +4 -4
- package/.codex/skills/maestro-coordinate/SKILL.md +3 -4
- package/dist/src/commands/launcher.js +1 -1
- package/dist/src/commands/launcher.js.map +1 -1
- package/dist/src/commands/overlay-ui/OverlayList.d.ts +35 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -0
- package/dist/src/commands/overlay-ui/OverlayList.js +143 -0
- package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -0
- package/dist/src/commands/overlay-ui/index.d.ts +2 -0
- package/dist/src/commands/overlay-ui/index.d.ts.map +1 -0
- package/dist/src/commands/overlay-ui/index.js +188 -0
- package/dist/src/commands/overlay-ui/index.js.map +1 -0
- package/dist/src/commands/overlay.d.ts.map +1 -1
- package/dist/src/commands/overlay.js +79 -59
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/core/overlay/applier.d.ts +32 -1
- package/dist/src/core/overlay/applier.d.ts.map +1 -1
- package/dist/src/core/overlay/applier.js +109 -1
- package/dist/src/core/overlay/applier.js.map +1 -1
- package/package.json +1 -1
- package/dist/agents/cli-agent-runner.d.ts +0 -131
- package/dist/agents/cli-agent-runner.d.ts.map +0 -1
- package/dist/agents/cli-agent-runner.js +0 -688
- package/dist/agents/cli-agent-runner.js.map +0 -1
- package/dist/agents/cli-history-store.d.ts +0 -63
- package/dist/agents/cli-history-store.d.ts.map +0 -1
- package/dist/agents/cli-history-store.js +0 -242
- package/dist/agents/cli-history-store.js.map +0 -1
- package/dist/agents/dashboard-bridge.d.ts +0 -39
- package/dist/agents/dashboard-bridge.d.ts.map +0 -1
- package/dist/agents/dashboard-bridge.js +0 -76
- package/dist/agents/dashboard-bridge.js.map +0 -1
- package/dist/agents/parallel-cli-runner.d.ts +0 -46
- package/dist/agents/parallel-cli-runner.d.ts.map +0 -1
- package/dist/agents/parallel-cli-runner.js +0 -277
- package/dist/agents/parallel-cli-runner.js.map +0 -1
- package/dist/agents/terminal-adapter.d.ts +0 -94
- package/dist/agents/terminal-adapter.d.ts.map +0 -1
- package/dist/agents/terminal-adapter.js +0 -132
- package/dist/agents/terminal-adapter.js.map +0 -1
- package/dist/agents/terminal-backend.d.ts +0 -53
- package/dist/agents/terminal-backend.d.ts.map +0 -1
- package/dist/agents/terminal-backend.js +0 -286
- package/dist/agents/terminal-backend.js.map +0 -1
- package/dist/async/delegate-broker-client.d.ts +0 -22
- package/dist/async/delegate-broker-client.d.ts.map +0 -1
- package/dist/async/delegate-broker-client.js +0 -47
- package/dist/async/delegate-broker-client.js.map +0 -1
- package/dist/async/delegate-broker.d.ts +0 -180
- package/dist/async/delegate-broker.d.ts.map +0 -1
- package/dist/async/delegate-broker.js +0 -1040
- package/dist/async/delegate-broker.js.map +0 -1
- package/dist/async/delegate-control.d.ts +0 -37
- package/dist/async/delegate-control.d.ts.map +0 -1
- package/dist/async/delegate-control.js +0 -155
- package/dist/async/delegate-control.js.map +0 -1
- package/dist/async/index.d.ts +0 -3
- package/dist/async/index.d.ts.map +0 -1
- package/dist/async/index.js +0 -3
- package/dist/async/index.js.map +0 -1
- package/dist/cli.d.ts +0 -2
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -40
- package/dist/cli.js.map +0 -1
- package/dist/commands/cli.d.ts +0 -3
- package/dist/commands/cli.d.ts.map +0 -1
- package/dist/commands/cli.js +0 -262
- package/dist/commands/cli.js.map +0 -1
- package/dist/commands/coordinate.d.ts +0 -3
- package/dist/commands/coordinate.d.ts.map +0 -1
- package/dist/commands/coordinate.js +0 -275
- package/dist/commands/coordinate.js.map +0 -1
- package/dist/commands/delegate.d.ts +0 -37
- package/dist/commands/delegate.d.ts.map +0 -1
- package/dist/commands/delegate.js +0 -470
- package/dist/commands/delegate.js.map +0 -1
- package/dist/commands/ext.d.ts +0 -3
- package/dist/commands/ext.d.ts.map +0 -1
- package/dist/commands/ext.js +0 -28
- package/dist/commands/ext.js.map +0 -1
- package/dist/commands/hooks.d.ts +0 -3
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js +0 -126
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/install.d.ts +0 -3
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -621
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/launcher.d.ts +0 -3
- package/dist/commands/launcher.d.ts.map +0 -1
- package/dist/commands/launcher.js +0 -635
- package/dist/commands/launcher.js.map +0 -1
- package/dist/commands/link-coordinate.d.ts +0 -3
- package/dist/commands/link-coordinate.d.ts.map +0 -1
- package/dist/commands/link-coordinate.js +0 -225
- package/dist/commands/link-coordinate.js.map +0 -1
- package/dist/commands/msg.d.ts +0 -3
- package/dist/commands/msg.d.ts.map +0 -1
- package/dist/commands/msg.js +0 -110
- package/dist/commands/msg.js.map +0 -1
- package/dist/commands/overlay.d.ts +0 -3
- package/dist/commands/overlay.d.ts.map +0 -1
- package/dist/commands/overlay.js +0 -243
- package/dist/commands/overlay.js.map +0 -1
- package/dist/commands/run.d.ts +0 -3
- package/dist/commands/run.d.ts.map +0 -1
- package/dist/commands/run.js +0 -15
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -3
- package/dist/commands/serve.d.ts.map +0 -1
- package/dist/commands/serve.js +0 -16
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/spec.d.ts +0 -8
- package/dist/commands/spec.d.ts.map +0 -1
- package/dist/commands/spec.js +0 -147
- package/dist/commands/spec.js.map +0 -1
- package/dist/commands/stop.d.ts +0 -3
- package/dist/commands/stop.d.ts.map +0 -1
- package/dist/commands/stop.js +0 -218
- package/dist/commands/stop.js.map +0 -1
- package/dist/commands/tool.d.ts +0 -3
- package/dist/commands/tool.d.ts.map +0 -1
- package/dist/commands/tool.js +0 -29
- package/dist/commands/tool.js.map +0 -1
- package/dist/commands/uninstall.d.ts +0 -3
- package/dist/commands/uninstall.d.ts.map +0 -1
- package/dist/commands/uninstall.js +0 -77
- package/dist/commands/uninstall.js.map +0 -1
- package/dist/commands/view.d.ts +0 -3
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js +0 -337
- package/dist/commands/view.js.map +0 -1
- package/dist/config/cli-tools-config.d.ts +0 -26
- package/dist/config/cli-tools-config.d.ts.map +0 -1
- package/dist/config/cli-tools-config.js +0 -49
- package/dist/config/cli-tools-config.js.map +0 -1
- package/dist/config/cli-tools-config.test.d.ts +0 -2
- package/dist/config/cli-tools-config.test.d.ts.map +0 -1
- package/dist/config/cli-tools-config.test.js +0 -59
- package/dist/config/cli-tools-config.test.js.map +0 -1
- package/dist/config/index.d.ts +0 -4
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -27
- package/dist/config/index.js.map +0 -1
- package/dist/config/paths.d.ts +0 -15
- package/dist/config/paths.d.ts.map +0 -1
- package/dist/config/paths.js +0 -27
- package/dist/config/paths.js.map +0 -1
- package/dist/config/template-discovery.d.ts +0 -32
- package/dist/config/template-discovery.d.ts.map +0 -1
- package/dist/config/template-discovery.js +0 -128
- package/dist/config/template-discovery.js.map +0 -1
- package/dist/coordinator/cli-executor.d.ts +0 -22
- package/dist/coordinator/cli-executor.d.ts.map +0 -1
- package/dist/coordinator/cli-executor.js +0 -49
- package/dist/coordinator/cli-executor.js.map +0 -1
- package/dist/coordinator/expr-evaluator.d.ts +0 -11
- package/dist/coordinator/expr-evaluator.d.ts.map +0 -1
- package/dist/coordinator/expr-evaluator.js +0 -351
- package/dist/coordinator/expr-evaluator.js.map +0 -1
- package/dist/coordinator/graph-loader.d.ts +0 -16
- package/dist/coordinator/graph-loader.d.ts.map +0 -1
- package/dist/coordinator/graph-loader.js +0 -190
- package/dist/coordinator/graph-loader.js.map +0 -1
- package/dist/coordinator/graph-types.d.ts +0 -304
- package/dist/coordinator/graph-types.d.ts.map +0 -1
- package/dist/coordinator/graph-types.js +0 -6
- package/dist/coordinator/graph-types.js.map +0 -1
- package/dist/coordinator/graph-walker.d.ts +0 -51
- package/dist/coordinator/graph-walker.d.ts.map +0 -1
- package/dist/coordinator/graph-walker.js +0 -666
- package/dist/coordinator/graph-walker.js.map +0 -1
- package/dist/coordinator/index.d.ts +0 -13
- package/dist/coordinator/index.d.ts.map +0 -1
- package/dist/coordinator/index.js +0 -14
- package/dist/coordinator/index.js.map +0 -1
- package/dist/coordinator/intent-router.d.ts +0 -11
- package/dist/coordinator/intent-router.d.ts.map +0 -1
- package/dist/coordinator/intent-router.js +0 -65
- package/dist/coordinator/intent-router.js.map +0 -1
- package/dist/coordinator/link-session.d.ts +0 -29
- package/dist/coordinator/link-session.d.ts.map +0 -1
- package/dist/coordinator/link-session.js +0 -192
- package/dist/coordinator/link-session.js.map +0 -1
- package/dist/coordinator/link-walker.d.ts +0 -56
- package/dist/coordinator/link-walker.d.ts.map +0 -1
- package/dist/coordinator/link-walker.js +0 -548
- package/dist/coordinator/link-walker.js.map +0 -1
- package/dist/coordinator/output-parser.d.ts +0 -5
- package/dist/coordinator/output-parser.d.ts.map +0 -1
- package/dist/coordinator/output-parser.js +0 -114
- package/dist/coordinator/output-parser.js.map +0 -1
- package/dist/coordinator/parallel-executor.d.ts +0 -24
- package/dist/coordinator/parallel-executor.d.ts.map +0 -1
- package/dist/coordinator/parallel-executor.js +0 -43
- package/dist/coordinator/parallel-executor.js.map +0 -1
- package/dist/coordinator/prompt-assembler.d.ts +0 -15
- package/dist/coordinator/prompt-assembler.d.ts.map +0 -1
- package/dist/coordinator/prompt-assembler.js +0 -228
- package/dist/coordinator/prompt-assembler.js.map +0 -1
- package/dist/coordinator/step-analyzer.d.ts +0 -8
- package/dist/coordinator/step-analyzer.d.ts.map +0 -1
- package/dist/coordinator/step-analyzer.js +0 -82
- package/dist/coordinator/step-analyzer.js.map +0 -1
- package/dist/core/extension-loader.d.ts +0 -11
- package/dist/core/extension-loader.d.ts.map +0 -1
- package/dist/core/extension-loader.js +0 -54
- package/dist/core/extension-loader.js.map +0 -1
- package/dist/core/manifest.d.ts +0 -24
- package/dist/core/manifest.d.ts.map +0 -1
- package/dist/core/manifest.js +0 -139
- package/dist/core/manifest.js.map +0 -1
- package/dist/core/mcp-tool-registry.integration.test.d.ts +0 -2
- package/dist/core/mcp-tool-registry.integration.test.d.ts.map +0 -1
- package/dist/core/mcp-tool-registry.integration.test.js +0 -220
- package/dist/core/mcp-tool-registry.integration.test.js.map +0 -1
- package/dist/core/overlay/applier.d.ts +0 -73
- package/dist/core/overlay/applier.d.ts.map +0 -1
- package/dist/core/overlay/applier.js +0 -248
- package/dist/core/overlay/applier.js.map +0 -1
- package/dist/core/overlay/loader.d.ts +0 -26
- package/dist/core/overlay/loader.d.ts.map +0 -1
- package/dist/core/overlay/loader.js +0 -199
- package/dist/core/overlay/loader.js.map +0 -1
- package/dist/core/overlay/patcher.d.ts +0 -26
- package/dist/core/overlay/patcher.d.ts.map +0 -1
- package/dist/core/overlay/patcher.js +0 -212
- package/dist/core/overlay/patcher.js.map +0 -1
- package/dist/core/overlay/section-parser.d.ts +0 -25
- package/dist/core/overlay/section-parser.d.ts.map +0 -1
- package/dist/core/overlay/section-parser.js +0 -99
- package/dist/core/overlay/section-parser.js.map +0 -1
- package/dist/core/overlay/types.d.ts +0 -51
- package/dist/core/overlay/types.d.ts.map +0 -1
- package/dist/core/overlay/types.js +0 -15
- package/dist/core/overlay/types.js.map +0 -1
- package/dist/core/tool-registry.d.ts +0 -10
- package/dist/core/tool-registry.d.ts.map +0 -1
- package/dist/core/tool-registry.js +0 -29
- package/dist/core/tool-registry.js.map +0 -1
- package/dist/core/tool-registry.test.d.ts +0 -2
- package/dist/core/tool-registry.test.d.ts.map +0 -1
- package/dist/core/tool-registry.test.js +0 -78
- package/dist/core/tool-registry.test.js.map +0 -1
- package/dist/db/connection-pool.d.ts +0 -21
- package/dist/db/connection-pool.d.ts.map +0 -1
- package/dist/db/connection-pool.js +0 -53
- package/dist/db/connection-pool.js.map +0 -1
- package/dist/db/index.d.ts +0 -6
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/index.js +0 -9
- package/dist/db/index.js.map +0 -1
- package/dist/db/schema/core/index.d.ts +0 -5
- package/dist/db/schema/core/index.d.ts.map +0 -1
- package/dist/db/schema/core/index.js +0 -5
- package/dist/db/schema/core/index.js.map +0 -1
- package/dist/db/schema/core/organizations.d.ts +0 -244
- package/dist/db/schema/core/organizations.d.ts.map +0 -1
- package/dist/db/schema/core/organizations.js +0 -44
- package/dist/db/schema/core/organizations.js.map +0 -1
- package/dist/db/schema/core/permissions.d.ts +0 -158
- package/dist/db/schema/core/permissions.d.ts.map +0 -1
- package/dist/db/schema/core/permissions.js +0 -62
- package/dist/db/schema/core/permissions.js.map +0 -1
- package/dist/db/schema/core/refresh-tokens.d.ts +0 -147
- package/dist/db/schema/core/refresh-tokens.d.ts.map +0 -1
- package/dist/db/schema/core/refresh-tokens.js +0 -22
- package/dist/db/schema/core/refresh-tokens.js.map +0 -1
- package/dist/db/schema/core/users.d.ts +0 -178
- package/dist/db/schema/core/users.d.ts.map +0 -1
- package/dist/db/schema/core/users.js +0 -14
- package/dist/db/schema/core/users.js.map +0 -1
- package/dist/db/tenant-migrator.d.ts +0 -11
- package/dist/db/tenant-migrator.d.ts.map +0 -1
- package/dist/db/tenant-migrator.js +0 -74
- package/dist/db/tenant-migrator.js.map +0 -1
- package/dist/db/tenant-schema.d.ts +0 -290
- package/dist/db/tenant-schema.d.ts.map +0 -1
- package/dist/db/tenant-schema.js +0 -32
- package/dist/db/tenant-schema.js.map +0 -1
- package/dist/hooks/constants.d.ts +0 -40
- package/dist/hooks/constants.d.ts.map +0 -1
- package/dist/hooks/constants.js +0 -53
- package/dist/hooks/constants.js.map +0 -1
- package/dist/hooks/context-monitor.d.ts +0 -33
- package/dist/hooks/context-monitor.d.ts.map +0 -1
- package/dist/hooks/context-monitor.js +0 -117
- package/dist/hooks/context-monitor.js.map +0 -1
- package/dist/hooks/delegate-monitor.d.ts +0 -24
- package/dist/hooks/delegate-monitor.d.ts.map +0 -1
- package/dist/hooks/delegate-monitor.js +0 -76
- package/dist/hooks/delegate-monitor.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -4
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -4
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/statusline.d.ts +0 -29
- package/dist/hooks/statusline.d.ts.map +0 -1
- package/dist/hooks/statusline.js +0 -134
- package/dist/hooks/statusline.js.map +0 -1
- package/dist/index.d.ts +0 -8
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -6
- package/dist/index.js.map +0 -1
- package/dist/mcp/delegate-channel-relay.d.ts +0 -51
- package/dist/mcp/delegate-channel-relay.d.ts.map +0 -1
- package/dist/mcp/delegate-channel-relay.js +0 -307
- package/dist/mcp/delegate-channel-relay.js.map +0 -1
- package/dist/mcp/server.d.ts +0 -6
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js +0 -64
- package/dist/mcp/server.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -13
- package/dist/middleware/auth.d.ts.map +0 -1
- package/dist/middleware/auth.js +0 -27
- package/dist/middleware/auth.js.map +0 -1
- package/dist/middleware/permission.d.ts +0 -9
- package/dist/middleware/permission.d.ts.map +0 -1
- package/dist/middleware/permission.js +0 -19
- package/dist/middleware/permission.js.map +0 -1
- package/dist/middleware/rate-limit.d.ts +0 -9
- package/dist/middleware/rate-limit.d.ts.map +0 -1
- package/dist/middleware/rate-limit.js +0 -40
- package/dist/middleware/rate-limit.js.map +0 -1
- package/dist/middleware/tenant.d.ts +0 -17
- package/dist/middleware/tenant.d.ts.map +0 -1
- package/dist/middleware/tenant.js +0 -57
- package/dist/middleware/tenant.js.map +0 -1
- package/dist/middleware/validation.d.ts +0 -40
- package/dist/middleware/validation.d.ts.map +0 -1
- package/dist/middleware/validation.js +0 -51
- package/dist/middleware/validation.js.map +0 -1
- package/dist/routes/auth.d.ts +0 -3
- package/dist/routes/auth.d.ts.map +0 -1
- package/dist/routes/auth.js +0 -77
- package/dist/routes/auth.js.map +0 -1
- package/dist/routes/members.d.ts +0 -4
- package/dist/routes/members.d.ts.map +0 -1
- package/dist/routes/members.js +0 -114
- package/dist/routes/members.js.map +0 -1
- package/dist/routes/organizations.d.ts +0 -5
- package/dist/routes/organizations.d.ts.map +0 -1
- package/dist/routes/organizations.js +0 -97
- package/dist/routes/organizations.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -24
- package/dist/services/auth.service.d.ts.map +0 -1
- package/dist/services/auth.service.js +0 -70
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/password.service.d.ts +0 -3
- package/dist/services/password.service.d.ts.map +0 -1
- package/dist/services/password.service.js +0 -18
- package/dist/services/password.service.js.map +0 -1
- package/dist/services/rbac.service.d.ts +0 -7
- package/dist/services/rbac.service.d.ts.map +0 -1
- package/dist/services/rbac.service.js +0 -36
- package/dist/services/rbac.service.js.map +0 -1
- package/dist/services/token.service.d.ts +0 -18
- package/dist/services/token.service.d.ts.map +0 -1
- package/dist/services/token.service.js +0 -86
- package/dist/services/token.service.js.map +0 -1
- package/dist/tools/core-memory.d.ts +0 -12
- package/dist/tools/core-memory.d.ts.map +0 -1
- package/dist/tools/core-memory.js +0 -276
- package/dist/tools/core-memory.js.map +0 -1
- package/dist/tools/edit-file.d.ts +0 -25
- package/dist/tools/edit-file.d.ts.map +0 -1
- package/dist/tools/edit-file.js +0 -462
- package/dist/tools/edit-file.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -536
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/read-file.d.ts +0 -13
- package/dist/tools/read-file.d.ts.map +0 -1
- package/dist/tools/read-file.js +0 -91
- package/dist/tools/read-file.js.map +0 -1
- package/dist/tools/read-many-files.d.ts +0 -15
- package/dist/tools/read-many-files.d.ts.map +0 -1
- package/dist/tools/read-many-files.js +0 -187
- package/dist/tools/read-many-files.js.map +0 -1
- package/dist/tools/spec-index-builder.d.ts +0 -58
- package/dist/tools/spec-index-builder.d.ts.map +0 -1
- package/dist/tools/spec-index-builder.js +0 -211
- package/dist/tools/spec-index-builder.js.map +0 -1
- package/dist/tools/spec-init.d.ts +0 -17
- package/dist/tools/spec-init.d.ts.map +0 -1
- package/dist/tools/spec-init.js +0 -215
- package/dist/tools/spec-init.js.map +0 -1
- package/dist/tools/spec-keyword-extractor.d.ts +0 -24
- package/dist/tools/spec-keyword-extractor.d.ts.map +0 -1
- package/dist/tools/spec-keyword-extractor.js +0 -84
- package/dist/tools/spec-keyword-extractor.js.map +0 -1
- package/dist/tools/spec-keyword-extractor.test.d.ts +0 -2
- package/dist/tools/spec-keyword-extractor.test.d.ts.map +0 -1
- package/dist/tools/spec-keyword-extractor.test.js +0 -99
- package/dist/tools/spec-keyword-extractor.test.js.map +0 -1
- package/dist/tools/spec-loader.d.ts +0 -15
- package/dist/tools/spec-loader.d.ts.map +0 -1
- package/dist/tools/spec-loader.js +0 -93
- package/dist/tools/spec-loader.js.map +0 -1
- package/dist/tools/team-msg.d.ts +0 -52
- package/dist/tools/team-msg.d.ts.map +0 -1
- package/dist/tools/team-msg.js +0 -449
- package/dist/tools/team-msg.js.map +0 -1
- package/dist/tools/write-file.d.ts +0 -19
- package/dist/tools/write-file.d.ts.map +0 -1
- package/dist/tools/write-file.js +0 -165
- package/dist/tools/write-file.js.map +0 -1
- package/dist/types/index.d.ts +0 -47
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/tool-schema.d.ts +0 -37
- package/dist/types/tool-schema.d.ts.map +0 -1
- package/dist/types/tool-schema.js +0 -24
- package/dist/types/tool-schema.js.map +0 -1
- package/dist/utils/file-reader.d.ts +0 -74
- package/dist/utils/file-reader.d.ts.map +0 -1
- package/dist/utils/file-reader.js +0 -217
- package/dist/utils/file-reader.js.map +0 -1
- package/dist/utils/path-validator.d.ts +0 -52
- package/dist/utils/path-validator.d.ts.map +0 -1
- package/dist/utils/path-validator.js +0 -151
- package/dist/utils/path-validator.js.map +0 -1
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// Parallel CLI Runner — Async multi-CLI scheduler with semaphore concurrency.
|
|
3
|
-
// Standalone scheduler with SpawnFn injection, decoupled from GraphWalker.
|
|
4
|
-
//
|
|
5
|
-
// Concurrency model (from Bridge's PerSessionWorkerPool):
|
|
6
|
-
// - Tasks with same sessionKey (tool+workDir) run serially
|
|
7
|
-
// - Tasks with different sessionKeys run in parallel
|
|
8
|
-
// - Global maxConcurrency limits total parallel processes
|
|
9
|
-
// ---------------------------------------------------------------------------
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
// Tool name -> AgentType mapping (mirrors cli-agent-runner.ts)
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
const TOOL_TO_AGENT_TYPE = {
|
|
14
|
-
gemini: 'gemini',
|
|
15
|
-
qwen: 'qwen',
|
|
16
|
-
codex: 'codex',
|
|
17
|
-
claude: 'claude-code',
|
|
18
|
-
opencode: 'opencode',
|
|
19
|
-
};
|
|
20
|
-
const TOOL_TO_TERMINAL_CMD = {
|
|
21
|
-
gemini: 'gemini',
|
|
22
|
-
qwen: 'qwen',
|
|
23
|
-
codex: 'codex',
|
|
24
|
-
claude: 'claude',
|
|
25
|
-
opencode: 'opencode',
|
|
26
|
-
};
|
|
27
|
-
// ---------------------------------------------------------------------------
|
|
28
|
-
// Semaphore — simple counter-based concurrency limiter
|
|
29
|
-
// ---------------------------------------------------------------------------
|
|
30
|
-
class Semaphore {
|
|
31
|
-
max;
|
|
32
|
-
current = 0;
|
|
33
|
-
waiters = [];
|
|
34
|
-
constructor(max) {
|
|
35
|
-
this.max = max;
|
|
36
|
-
}
|
|
37
|
-
async acquire() {
|
|
38
|
-
if (this.current < this.max) {
|
|
39
|
-
this.current++;
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
return new Promise((resolve) => {
|
|
43
|
-
this.waiters.push(() => {
|
|
44
|
-
this.current++;
|
|
45
|
-
resolve();
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
release() {
|
|
50
|
-
this.current--;
|
|
51
|
-
const next = this.waiters.shift();
|
|
52
|
-
if (next)
|
|
53
|
-
next();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// ---------------------------------------------------------------------------
|
|
57
|
-
// Default per-task timeout (10 min ceiling)
|
|
58
|
-
// ---------------------------------------------------------------------------
|
|
59
|
-
const DEFAULT_TASK_TIMEOUT_MS = 10 * 60 * 1000;
|
|
60
|
-
// ---------------------------------------------------------------------------
|
|
61
|
-
// ParallelCliRunner
|
|
62
|
-
// ---------------------------------------------------------------------------
|
|
63
|
-
export class ParallelCliRunner {
|
|
64
|
-
spawn;
|
|
65
|
-
terminalBackend;
|
|
66
|
-
constructor(spawn, terminalBackend) {
|
|
67
|
-
this.spawn = spawn;
|
|
68
|
-
this.terminalBackend = terminalBackend;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Execute tasks in parallel with session-key grouping and join strategy.
|
|
72
|
-
*
|
|
73
|
-
* Tasks sharing the same sessionKey (defaults to tool+workDir) execute
|
|
74
|
-
* serially within their group. Different groups run in parallel, limited
|
|
75
|
-
* by maxConcurrency.
|
|
76
|
-
*/
|
|
77
|
-
async runAll(tasks, options) {
|
|
78
|
-
const { maxConcurrency = 4, joinStrategy, signal: globalSignal, } = options;
|
|
79
|
-
if (tasks.length === 0) {
|
|
80
|
-
return { results: [], success: true };
|
|
81
|
-
}
|
|
82
|
-
// Group by session key
|
|
83
|
-
const groups = this.groupBySession(tasks);
|
|
84
|
-
const semaphore = new Semaphore(maxConcurrency);
|
|
85
|
-
const results = [];
|
|
86
|
-
// For 'any' strategy, wrap global signal so we can abort remaining
|
|
87
|
-
// groups once the first group completes.
|
|
88
|
-
const effectiveAbort = joinStrategy === 'any'
|
|
89
|
-
? new AbortController()
|
|
90
|
-
: undefined;
|
|
91
|
-
if (effectiveAbort && globalSignal) {
|
|
92
|
-
globalSignal.addEventListener('abort', () => effectiveAbort.abort(), { once: true });
|
|
93
|
-
}
|
|
94
|
-
const effectiveSignal = effectiveAbort?.signal ?? globalSignal;
|
|
95
|
-
// Create per-group serial chains, run groups in parallel
|
|
96
|
-
const groupPromises = [...groups.values()].map((queue) => this.runSessionGroup(queue, semaphore, results, effectiveSignal));
|
|
97
|
-
if (joinStrategy === 'any') {
|
|
98
|
-
// First group to finish triggers abort of the rest
|
|
99
|
-
await Promise.race(groupPromises);
|
|
100
|
-
effectiveAbort.abort();
|
|
101
|
-
await Promise.allSettled(groupPromises);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
// 'all' and 'majority' both wait for all groups to settle
|
|
105
|
-
await Promise.allSettled(groupPromises);
|
|
106
|
-
}
|
|
107
|
-
const success = this.evaluateJoin(results, tasks.length, joinStrategy);
|
|
108
|
-
return { results, success };
|
|
109
|
-
}
|
|
110
|
-
// -------------------------------------------------------------------------
|
|
111
|
-
// Session grouping
|
|
112
|
-
// -------------------------------------------------------------------------
|
|
113
|
-
groupBySession(tasks) {
|
|
114
|
-
const groups = new Map();
|
|
115
|
-
for (const task of tasks) {
|
|
116
|
-
const key = task.sessionKey ?? `${task.tool}:${task.workDir}`;
|
|
117
|
-
if (!groups.has(key))
|
|
118
|
-
groups.set(key, []);
|
|
119
|
-
groups.get(key).push(task);
|
|
120
|
-
}
|
|
121
|
-
return groups;
|
|
122
|
-
}
|
|
123
|
-
// -------------------------------------------------------------------------
|
|
124
|
-
// Serial execution within a session group
|
|
125
|
-
// -------------------------------------------------------------------------
|
|
126
|
-
async runSessionGroup(queue, semaphore, results, signal) {
|
|
127
|
-
for (const task of queue) {
|
|
128
|
-
if (signal?.aborted)
|
|
129
|
-
break;
|
|
130
|
-
await semaphore.acquire();
|
|
131
|
-
if (signal?.aborted) {
|
|
132
|
-
semaphore.release();
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
try {
|
|
136
|
-
const result = await this.executeTask(task, signal);
|
|
137
|
-
results.push(result);
|
|
138
|
-
}
|
|
139
|
-
finally {
|
|
140
|
-
semaphore.release();
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// -------------------------------------------------------------------------
|
|
145
|
-
// Single task execution — routes to SpawnFn or TerminalAdapter
|
|
146
|
-
// -------------------------------------------------------------------------
|
|
147
|
-
async executeTask(task, globalSignal) {
|
|
148
|
-
if (task.backend === 'terminal' && this.terminalBackend) {
|
|
149
|
-
return this.executeViaTerminal(task, globalSignal);
|
|
150
|
-
}
|
|
151
|
-
return this.executeViaSpawn(task, globalSignal);
|
|
152
|
-
}
|
|
153
|
-
// -------------------------------------------------------------------------
|
|
154
|
-
// Execution via SpawnFn (direct adapter — default)
|
|
155
|
-
// -------------------------------------------------------------------------
|
|
156
|
-
async executeViaSpawn(task, globalSignal) {
|
|
157
|
-
const startTime = Date.now();
|
|
158
|
-
const agentType = TOOL_TO_AGENT_TYPE[task.tool];
|
|
159
|
-
if (!agentType) {
|
|
160
|
-
return {
|
|
161
|
-
id: task.id,
|
|
162
|
-
success: false,
|
|
163
|
-
output: `Unknown tool: ${task.tool}`,
|
|
164
|
-
execId: '',
|
|
165
|
-
durationMs: Date.now() - startTime,
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
// Per-task abort: merges global signal + timeout ceiling
|
|
169
|
-
const taskAbort = new AbortController();
|
|
170
|
-
const timeout = setTimeout(() => taskAbort.abort(), DEFAULT_TASK_TIMEOUT_MS);
|
|
171
|
-
const onGlobalAbort = () => taskAbort.abort();
|
|
172
|
-
globalSignal?.addEventListener('abort', onGlobalAbort, { once: true });
|
|
173
|
-
try {
|
|
174
|
-
const result = await this.spawn({
|
|
175
|
-
type: agentType,
|
|
176
|
-
prompt: task.prompt,
|
|
177
|
-
workDir: task.workDir,
|
|
178
|
-
approvalMode: task.mode === 'write' ? 'auto' : 'suggest',
|
|
179
|
-
signal: taskAbort.signal,
|
|
180
|
-
});
|
|
181
|
-
return {
|
|
182
|
-
id: task.id,
|
|
183
|
-
success: result.success,
|
|
184
|
-
output: result.output,
|
|
185
|
-
execId: result.execId,
|
|
186
|
-
durationMs: result.durationMs,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
catch (err) {
|
|
190
|
-
return {
|
|
191
|
-
id: task.id,
|
|
192
|
-
success: false,
|
|
193
|
-
output: err instanceof Error ? err.message : String(err),
|
|
194
|
-
execId: '',
|
|
195
|
-
durationMs: Date.now() - startTime,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
finally {
|
|
199
|
-
clearTimeout(timeout);
|
|
200
|
-
globalSignal?.removeEventListener('abort', onGlobalAbort);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
// -------------------------------------------------------------------------
|
|
204
|
-
// Execution via TerminalAdapter (tmux/wezterm pane)
|
|
205
|
-
// -------------------------------------------------------------------------
|
|
206
|
-
async executeViaTerminal(task, globalSignal) {
|
|
207
|
-
const startTime = Date.now();
|
|
208
|
-
const agentType = TOOL_TO_AGENT_TYPE[task.tool];
|
|
209
|
-
if (!agentType) {
|
|
210
|
-
return {
|
|
211
|
-
id: task.id, success: false,
|
|
212
|
-
output: `Unknown tool: ${task.tool}`, execId: '', durationMs: 0,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
const { TerminalAdapter } = await import('./terminal-adapter.js');
|
|
216
|
-
const cmd = TOOL_TO_TERMINAL_CMD[task.tool] ?? task.tool;
|
|
217
|
-
const adapter = new TerminalAdapter(this.terminalBackend, cmd);
|
|
218
|
-
// Cast needed: graph-types AgentType includes 'claude', terminal-adapter's is narrower
|
|
219
|
-
const proc = await adapter.spawn({
|
|
220
|
-
type: agentType,
|
|
221
|
-
prompt: task.prompt,
|
|
222
|
-
workDir: task.workDir,
|
|
223
|
-
approvalMode: task.mode === 'write' ? 'auto' : 'suggest',
|
|
224
|
-
});
|
|
225
|
-
return new Promise((resolve) => {
|
|
226
|
-
let output = '';
|
|
227
|
-
let settled = false;
|
|
228
|
-
const settle = (success) => {
|
|
229
|
-
if (settled)
|
|
230
|
-
return;
|
|
231
|
-
settled = true;
|
|
232
|
-
clearTimeout(timeout);
|
|
233
|
-
globalSignal?.removeEventListener('abort', onAbort);
|
|
234
|
-
unsub();
|
|
235
|
-
resolve({
|
|
236
|
-
id: task.id, success, output,
|
|
237
|
-
execId: proc.id, durationMs: Date.now() - startTime,
|
|
238
|
-
});
|
|
239
|
-
};
|
|
240
|
-
const timeout = setTimeout(() => {
|
|
241
|
-
adapter.stop(proc.id);
|
|
242
|
-
settle(false);
|
|
243
|
-
}, DEFAULT_TASK_TIMEOUT_MS);
|
|
244
|
-
const onAbort = () => {
|
|
245
|
-
adapter.stop(proc.id);
|
|
246
|
-
settle(false);
|
|
247
|
-
};
|
|
248
|
-
globalSignal?.addEventListener('abort', onAbort, { once: true });
|
|
249
|
-
const unsub = adapter.onEntry(proc.id, (entry) => {
|
|
250
|
-
if (entry.type === 'assistant_message') {
|
|
251
|
-
output += entry.content;
|
|
252
|
-
}
|
|
253
|
-
if (entry.type === 'status_change') {
|
|
254
|
-
if (entry.status === 'stopped')
|
|
255
|
-
settle(true);
|
|
256
|
-
else if (entry.status === 'error')
|
|
257
|
-
settle(false);
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
// -------------------------------------------------------------------------
|
|
263
|
-
// Join strategy evaluation
|
|
264
|
-
// -------------------------------------------------------------------------
|
|
265
|
-
evaluateJoin(results, totalTasks, strategy) {
|
|
266
|
-
const successCount = results.filter((r) => r.success).length;
|
|
267
|
-
switch (strategy) {
|
|
268
|
-
case 'all':
|
|
269
|
-
return successCount === totalTasks;
|
|
270
|
-
case 'any':
|
|
271
|
-
return successCount >= 1;
|
|
272
|
-
case 'majority':
|
|
273
|
-
return successCount > totalTasks / 2;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
//# sourceMappingURL=parallel-cli-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-cli-runner.js","sourceRoot":"","sources":["../../src/agents/parallel-cli-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import type { TerminalBackend } from './terminal-backend.js';
|
|
2
|
-
type AgentType = 'claude-code' | 'codex' | 'gemini' | 'qwen' | 'opencode';
|
|
3
|
-
type AgentProcessStatus = 'spawning' | 'running' | 'paused' | 'stopping' | 'stopped' | 'error';
|
|
4
|
-
interface AgentConfig {
|
|
5
|
-
type: AgentType;
|
|
6
|
-
prompt: string;
|
|
7
|
-
workDir: string;
|
|
8
|
-
env?: Record<string, string>;
|
|
9
|
-
model?: string;
|
|
10
|
-
approvalMode?: 'suggest' | 'auto';
|
|
11
|
-
}
|
|
12
|
-
interface AgentProcess {
|
|
13
|
-
id: string;
|
|
14
|
-
type: AgentType;
|
|
15
|
-
status: AgentProcessStatus;
|
|
16
|
-
config: AgentConfig;
|
|
17
|
-
startedAt: string;
|
|
18
|
-
pid?: number;
|
|
19
|
-
}
|
|
20
|
-
interface NormalizedEntryBase {
|
|
21
|
-
id: string;
|
|
22
|
-
processId: string;
|
|
23
|
-
timestamp: string;
|
|
24
|
-
}
|
|
25
|
-
type NormalizedEntry = (NormalizedEntryBase & {
|
|
26
|
-
type: 'user_message';
|
|
27
|
-
content: string;
|
|
28
|
-
}) | (NormalizedEntryBase & {
|
|
29
|
-
type: 'assistant_message';
|
|
30
|
-
content: string;
|
|
31
|
-
partial: boolean;
|
|
32
|
-
}) | (NormalizedEntryBase & {
|
|
33
|
-
type: 'thinking';
|
|
34
|
-
content: string;
|
|
35
|
-
}) | (NormalizedEntryBase & {
|
|
36
|
-
type: 'tool_use';
|
|
37
|
-
name: string;
|
|
38
|
-
input: Record<string, unknown>;
|
|
39
|
-
status: string;
|
|
40
|
-
result?: string;
|
|
41
|
-
}) | (NormalizedEntryBase & {
|
|
42
|
-
type: 'file_change';
|
|
43
|
-
path: string;
|
|
44
|
-
action: string;
|
|
45
|
-
diff?: string;
|
|
46
|
-
}) | (NormalizedEntryBase & {
|
|
47
|
-
type: 'command_exec';
|
|
48
|
-
command: string;
|
|
49
|
-
exitCode?: number;
|
|
50
|
-
output?: string;
|
|
51
|
-
}) | (NormalizedEntryBase & {
|
|
52
|
-
type: 'approval_request';
|
|
53
|
-
toolName: string;
|
|
54
|
-
toolInput: Record<string, unknown>;
|
|
55
|
-
requestId: string;
|
|
56
|
-
}) | (NormalizedEntryBase & {
|
|
57
|
-
type: 'approval_response';
|
|
58
|
-
requestId: string;
|
|
59
|
-
allowed: boolean;
|
|
60
|
-
}) | (NormalizedEntryBase & {
|
|
61
|
-
type: 'error';
|
|
62
|
-
message: string;
|
|
63
|
-
code?: string;
|
|
64
|
-
}) | (NormalizedEntryBase & {
|
|
65
|
-
type: 'status_change';
|
|
66
|
-
status: AgentProcessStatus;
|
|
67
|
-
reason?: string;
|
|
68
|
-
}) | (NormalizedEntryBase & {
|
|
69
|
-
type: 'token_usage';
|
|
70
|
-
inputTokens: number;
|
|
71
|
-
outputTokens: number;
|
|
72
|
-
cacheReadTokens?: number;
|
|
73
|
-
cacheWriteTokens?: number;
|
|
74
|
-
});
|
|
75
|
-
/** Minimal adapter interface matching BaseAgentAdapter's public surface */
|
|
76
|
-
interface AdapterLike {
|
|
77
|
-
spawn(config: AgentConfig): Promise<AgentProcess>;
|
|
78
|
-
stop(processId: string): Promise<void>;
|
|
79
|
-
onEntry(processId: string, cb: (entry: NormalizedEntry) => void): () => void;
|
|
80
|
-
}
|
|
81
|
-
export declare class TerminalAdapter implements AdapterLike {
|
|
82
|
-
private readonly backend;
|
|
83
|
-
private readonly toolCmd;
|
|
84
|
-
private readonly panes;
|
|
85
|
-
private readonly listeners;
|
|
86
|
-
constructor(backend: TerminalBackend, toolCmd: string);
|
|
87
|
-
spawn(config: AgentConfig): Promise<AgentProcess>;
|
|
88
|
-
stop(processId: string): Promise<void>;
|
|
89
|
-
onEntry(processId: string, cb: (entry: NormalizedEntry) => void): () => void;
|
|
90
|
-
private pollOutput;
|
|
91
|
-
private emit;
|
|
92
|
-
}
|
|
93
|
-
export {};
|
|
94
|
-
//# sourceMappingURL=terminal-adapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-adapter.d.ts","sourceRoot":"","sources":["../../src/agents/terminal-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// Terminal Adapter — wraps TerminalBackend into AdapterLike interface
|
|
3
|
-
// with 2s polling output collection and 120s stale timeout.
|
|
4
|
-
// ---------------------------------------------------------------------------
|
|
5
|
-
// ---------------------------------------------------------------------------
|
|
6
|
-
// Constants
|
|
7
|
-
// ---------------------------------------------------------------------------
|
|
8
|
-
const POLL_INTERVAL_MS = 2000;
|
|
9
|
-
const MAX_STALE_CYCLES = 60; // 60 * 2s = 120s stale timeout
|
|
10
|
-
const STARTUP_DELAY_MS = 1000;
|
|
11
|
-
function sleep(ms) {
|
|
12
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
13
|
-
}
|
|
14
|
-
export class TerminalAdapter {
|
|
15
|
-
backend;
|
|
16
|
-
toolCmd;
|
|
17
|
-
panes = new Map();
|
|
18
|
-
listeners = new Map();
|
|
19
|
-
constructor(backend, toolCmd) {
|
|
20
|
-
this.backend = backend;
|
|
21
|
-
this.toolCmd = toolCmd;
|
|
22
|
-
}
|
|
23
|
-
async spawn(config) {
|
|
24
|
-
const processId = `term-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
25
|
-
// Create pane with the CLI tool running
|
|
26
|
-
const paneId = await this.backend.createPane({
|
|
27
|
-
cwd: config.workDir,
|
|
28
|
-
cmd: this.toolCmd,
|
|
29
|
-
});
|
|
30
|
-
this.panes.set(processId, { paneId, polling: true });
|
|
31
|
-
// Wait for tool to start, then inject prompt
|
|
32
|
-
await sleep(STARTUP_DELAY_MS);
|
|
33
|
-
await this.backend.sendText(paneId, config.prompt);
|
|
34
|
-
// Start polling for output (fire-and-forget async loop)
|
|
35
|
-
this.pollOutput(processId, paneId);
|
|
36
|
-
return {
|
|
37
|
-
id: processId,
|
|
38
|
-
type: config.type,
|
|
39
|
-
status: 'running',
|
|
40
|
-
config,
|
|
41
|
-
startedAt: new Date().toISOString(),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
async stop(processId) {
|
|
45
|
-
const pane = this.panes.get(processId);
|
|
46
|
-
if (!pane)
|
|
47
|
-
return;
|
|
48
|
-
pane.polling = false;
|
|
49
|
-
await this.backend.killPane(pane.paneId);
|
|
50
|
-
this.panes.delete(processId);
|
|
51
|
-
this.emit(processId, {
|
|
52
|
-
id: `${processId}-stop`,
|
|
53
|
-
processId,
|
|
54
|
-
timestamp: new Date().toISOString(),
|
|
55
|
-
type: 'status_change',
|
|
56
|
-
status: 'stopped',
|
|
57
|
-
reason: 'manual stop',
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
onEntry(processId, cb) {
|
|
61
|
-
if (!this.listeners.has(processId)) {
|
|
62
|
-
this.listeners.set(processId, new Set());
|
|
63
|
-
}
|
|
64
|
-
this.listeners.get(processId).add(cb);
|
|
65
|
-
return () => {
|
|
66
|
-
this.listeners.get(processId)?.delete(cb);
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
// -------------------------------------------------------------------------
|
|
70
|
-
// Polling loop — getText diff every 2s, 120s stale timeout
|
|
71
|
-
// -------------------------------------------------------------------------
|
|
72
|
-
async pollOutput(processId, paneId) {
|
|
73
|
-
let lastContent = '';
|
|
74
|
-
let staleCount = 0;
|
|
75
|
-
while (this.panes.get(processId)?.polling) {
|
|
76
|
-
await sleep(POLL_INTERVAL_MS);
|
|
77
|
-
// Check if pane is still alive
|
|
78
|
-
const alive = await this.backend.isAlive(paneId);
|
|
79
|
-
if (!alive) {
|
|
80
|
-
this.emit(processId, {
|
|
81
|
-
id: `${processId}-done`,
|
|
82
|
-
processId,
|
|
83
|
-
timestamp: new Date().toISOString(),
|
|
84
|
-
type: 'status_change',
|
|
85
|
-
status: 'stopped',
|
|
86
|
-
reason: 'pane exited',
|
|
87
|
-
});
|
|
88
|
-
this.panes.delete(processId);
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
// Capture pane content and diff against previous snapshot
|
|
92
|
-
const content = await this.backend.getText(paneId, 100);
|
|
93
|
-
if (content !== lastContent) {
|
|
94
|
-
const newContent = content.slice(lastContent.length);
|
|
95
|
-
if (newContent.trim()) {
|
|
96
|
-
this.emit(processId, {
|
|
97
|
-
id: `${processId}-${Date.now()}`,
|
|
98
|
-
processId,
|
|
99
|
-
timestamp: new Date().toISOString(),
|
|
100
|
-
type: 'assistant_message',
|
|
101
|
-
content: newContent,
|
|
102
|
-
partial: true,
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
lastContent = content;
|
|
106
|
-
staleCount = 0;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
staleCount++;
|
|
110
|
-
if (staleCount >= MAX_STALE_CYCLES) {
|
|
111
|
-
this.emit(processId, {
|
|
112
|
-
id: `${processId}-timeout`,
|
|
113
|
-
processId,
|
|
114
|
-
timestamp: new Date().toISOString(),
|
|
115
|
-
type: 'status_change',
|
|
116
|
-
status: 'stopped',
|
|
117
|
-
reason: 'output stale timeout (120s)',
|
|
118
|
-
});
|
|
119
|
-
this.panes.delete(processId);
|
|
120
|
-
break;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
emit(processId, entry) {
|
|
126
|
-
const cbs = this.listeners.get(processId);
|
|
127
|
-
if (cbs) {
|
|
128
|
-
cbs.forEach(cb => cb(entry));
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=terminal-adapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-adapter.js","sourceRoot":"","sources":["../../src/agents/terminal-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { type ExecFileOptions } from 'node:child_process';
|
|
2
|
-
/** Common child_process options with windowsHide:true for all calls. */
|
|
3
|
-
export declare function subprocessOpts(cwd?: string): ExecFileOptions;
|
|
4
|
-
export interface CreatePaneOptions {
|
|
5
|
-
cwd: string;
|
|
6
|
-
cmd?: string;
|
|
7
|
-
direction?: 'right' | 'bottom';
|
|
8
|
-
percent?: number;
|
|
9
|
-
parentPaneId?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface TerminalBackend {
|
|
12
|
-
readonly type: 'tmux' | 'wezterm';
|
|
13
|
-
createPane(options: CreatePaneOptions): Promise<string>;
|
|
14
|
-
sendText(paneId: string, text: string): Promise<void>;
|
|
15
|
-
isAlive(paneId: string): Promise<boolean>;
|
|
16
|
-
getText(paneId: string, lines?: number): Promise<string>;
|
|
17
|
-
killPane(paneId: string): Promise<void>;
|
|
18
|
-
}
|
|
19
|
-
export declare class TmuxBackend implements TerminalBackend {
|
|
20
|
-
readonly type: "tmux";
|
|
21
|
-
private enterDelay;
|
|
22
|
-
constructor(options?: {
|
|
23
|
-
enterDelayMs?: number;
|
|
24
|
-
});
|
|
25
|
-
createPane(options: CreatePaneOptions): Promise<string>;
|
|
26
|
-
sendText(paneId: string, text: string): Promise<void>;
|
|
27
|
-
isAlive(paneId: string): Promise<boolean>;
|
|
28
|
-
getText(paneId: string, lines?: number): Promise<string>;
|
|
29
|
-
killPane(paneId: string): Promise<void>;
|
|
30
|
-
}
|
|
31
|
-
export declare class WeztermBackend implements TerminalBackend {
|
|
32
|
-
readonly type: "wezterm";
|
|
33
|
-
private enterDelay;
|
|
34
|
-
private weztermBin;
|
|
35
|
-
constructor(options?: {
|
|
36
|
-
enterDelayMs?: number;
|
|
37
|
-
weztermBin?: string;
|
|
38
|
-
});
|
|
39
|
-
createPane(options: CreatePaneOptions): Promise<string>;
|
|
40
|
-
sendText(paneId: string, text: string): Promise<void>;
|
|
41
|
-
/**
|
|
42
|
-
* 3-level Enter key fallback:
|
|
43
|
-
* 1. wezterm cli send-key --key Enter (flag form)
|
|
44
|
-
* 2. wezterm cli send-key Enter (positional form)
|
|
45
|
-
* 3. CR byte via send-text --no-paste (final fallback)
|
|
46
|
-
*/
|
|
47
|
-
private sendEnter;
|
|
48
|
-
isAlive(paneId: string): Promise<boolean>;
|
|
49
|
-
getText(paneId: string, lines?: number): Promise<string>;
|
|
50
|
-
killPane(paneId: string): Promise<void>;
|
|
51
|
-
}
|
|
52
|
-
export declare function detectBackend(): TerminalBackend | null;
|
|
53
|
-
//# sourceMappingURL=terminal-backend.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-backend.d.ts","sourceRoot":"","sources":["../../src/agents/terminal-backend.ts"],"names":[],"mappings":"AAIA,OAAO,EAAY,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAuBpE,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,CAO5D;AAUD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE;IAKzC,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCvD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDrD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAQpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAO9C;AAMD,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAQ9D,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBvD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B3D;;;;;OAKG;YACW,SAAS;IA2BjB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IASpD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAM9C;AAMD,wBAAgB,aAAa,IAAI,eAAe,GAAG,IAAI,CAQtD"}
|