@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.60
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/bin/af.js +2 -2
- package/bin/consult.js +1 -1
- package/bin/porch.js +6 -35
- package/dashboard/dist/assets/index-CXloFYpB.css +32 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.js +131 -0
- package/dashboard/dist/assets/index-Ca2fjOJf.js.map +1 -0
- package/dashboard/dist/index.html +14 -0
- package/dist/agent-farm/cli.d.ts.map +1 -1
- package/dist/agent-farm/cli.js +94 -65
- package/dist/agent-farm/cli.js.map +1 -1
- package/dist/agent-farm/commands/architect.d.ts.map +1 -1
- package/dist/agent-farm/commands/architect.js +13 -6
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/attach.d.ts +13 -0
- package/dist/agent-farm/commands/attach.d.ts.map +1 -0
- package/dist/agent-farm/commands/attach.js +202 -0
- package/dist/agent-farm/commands/attach.js.map +1 -0
- package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
- package/dist/agent-farm/commands/cleanup.js +30 -3
- package/dist/agent-farm/commands/cleanup.js.map +1 -1
- package/dist/agent-farm/commands/consult.js +1 -1
- package/dist/agent-farm/commands/consult.js.map +1 -1
- package/dist/agent-farm/commands/index.d.ts +2 -2
- package/dist/agent-farm/commands/index.d.ts.map +1 -1
- package/dist/agent-farm/commands/index.js +2 -2
- package/dist/agent-farm/commands/index.js.map +1 -1
- package/dist/agent-farm/commands/open.d.ts +4 -2
- package/dist/agent-farm/commands/open.d.ts.map +1 -1
- package/dist/agent-farm/commands/open.js +37 -70
- package/dist/agent-farm/commands/open.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +55 -17
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/{util.d.ts → shell.d.ts} +5 -5
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/{util.js → shell.js} +23 -36
- package/dist/agent-farm/commands/shell.js.map +1 -0
- package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn.js +503 -226
- package/dist/agent-farm/commands/spawn.js.map +1 -1
- package/dist/agent-farm/commands/start.d.ts +3 -0
- package/dist/agent-farm/commands/start.d.ts.map +1 -1
- package/dist/agent-farm/commands/start.js +55 -265
- package/dist/agent-farm/commands/start.js.map +1 -1
- package/dist/agent-farm/commands/status.d.ts +2 -0
- package/dist/agent-farm/commands/status.d.ts.map +1 -1
- package/dist/agent-farm/commands/status.js +61 -3
- package/dist/agent-farm/commands/status.js.map +1 -1
- package/dist/agent-farm/commands/stop.d.ts +6 -0
- package/dist/agent-farm/commands/stop.d.ts.map +1 -1
- package/dist/agent-farm/commands/stop.js +116 -12
- package/dist/agent-farm/commands/stop.js.map +1 -1
- package/dist/agent-farm/commands/tower.d.ts +9 -0
- package/dist/agent-farm/commands/tower.d.ts.map +1 -1
- package/dist/agent-farm/commands/tower.js +59 -19
- package/dist/agent-farm/commands/tower.js.map +1 -1
- package/dist/agent-farm/db/index.d.ts.map +1 -1
- package/dist/agent-farm/db/index.js +124 -0
- package/dist/agent-farm/db/index.js.map +1 -1
- package/dist/agent-farm/db/schema.d.ts +2 -2
- package/dist/agent-farm/db/schema.d.ts.map +1 -1
- package/dist/agent-farm/db/schema.js +26 -5
- package/dist/agent-farm/db/schema.js.map +1 -1
- package/dist/agent-farm/db/types.d.ts +3 -0
- package/dist/agent-farm/db/types.d.ts.map +1 -1
- package/dist/agent-farm/db/types.js +3 -0
- package/dist/agent-farm/db/types.js.map +1 -1
- package/dist/agent-farm/hq-connector.d.ts +2 -6
- package/dist/agent-farm/hq-connector.d.ts.map +1 -1
- package/dist/agent-farm/hq-connector.js +2 -17
- package/dist/agent-farm/hq-connector.js.map +1 -1
- package/dist/agent-farm/lib/tower-client.d.ts +157 -0
- package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
- package/dist/agent-farm/lib/tower-client.js +223 -0
- package/dist/agent-farm/lib/tower-client.js.map +1 -0
- package/dist/agent-farm/servers/tower-server.js +2137 -112
- package/dist/agent-farm/servers/tower-server.js.map +1 -1
- package/dist/agent-farm/state.d.ts +4 -10
- package/dist/agent-farm/state.d.ts.map +1 -1
- package/dist/agent-farm/state.js +30 -31
- package/dist/agent-farm/state.js.map +1 -1
- package/dist/agent-farm/types.d.ts +48 -1
- package/dist/agent-farm/types.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +13 -14
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/deps.d.ts.map +1 -1
- package/dist/agent-farm/utils/deps.js +0 -16
- package/dist/agent-farm/utils/deps.js.map +1 -1
- package/dist/agent-farm/utils/notifications.d.ts +30 -0
- package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
- package/dist/agent-farm/utils/notifications.js +121 -0
- package/dist/agent-farm/utils/notifications.js.map +1 -0
- package/dist/agent-farm/utils/port-registry.d.ts +0 -1
- package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
- package/dist/agent-farm/utils/port-registry.js +1 -1
- package/dist/agent-farm/utils/port-registry.js.map +1 -1
- package/dist/agent-farm/utils/server-utils.d.ts +4 -4
- package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
- package/dist/agent-farm/utils/server-utils.js +4 -15
- package/dist/agent-farm/utils/server-utils.js.map +1 -1
- package/dist/agent-farm/utils/shell.d.ts +9 -22
- package/dist/agent-farm/utils/shell.d.ts.map +1 -1
- package/dist/agent-farm/utils/shell.js +34 -34
- package/dist/agent-farm/utils/shell.js.map +1 -1
- package/dist/agent-farm/utils/terminal-ports.d.ts +1 -1
- package/dist/agent-farm/utils/terminal-ports.js +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -54
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +49 -4
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/consult/index.d.ts +1 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +85 -6
- package/dist/commands/consult/index.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +0 -15
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +41 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/build-counter.d.ts +5 -0
- package/dist/commands/porch/build-counter.d.ts.map +1 -0
- package/dist/commands/porch/build-counter.js +5 -0
- package/dist/commands/porch/build-counter.js.map +1 -0
- package/dist/commands/porch/checks.d.ts +17 -29
- package/dist/commands/porch/checks.d.ts.map +1 -1
- package/dist/commands/porch/checks.js +96 -144
- package/dist/commands/porch/checks.js.map +1 -1
- package/dist/commands/porch/index.d.ts +21 -43
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +418 -1123
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts +22 -0
- package/dist/commands/porch/next.d.ts.map +1 -0
- package/dist/commands/porch/next.js +479 -0
- package/dist/commands/porch/next.js.map +1 -0
- package/dist/commands/porch/plan.d.ts +70 -0
- package/dist/commands/porch/plan.d.ts.map +1 -0
- package/dist/commands/porch/plan.js +190 -0
- package/dist/commands/porch/plan.js.map +1 -0
- package/dist/commands/porch/prompts.d.ts +19 -0
- package/dist/commands/porch/prompts.d.ts.map +1 -0
- package/dist/commands/porch/prompts.js +255 -0
- package/dist/commands/porch/prompts.js.map +1 -0
- package/dist/commands/porch/protocol.d.ts +59 -0
- package/dist/commands/porch/protocol.d.ts.map +1 -0
- package/dist/commands/porch/protocol.js +294 -0
- package/dist/commands/porch/protocol.js.map +1 -0
- package/dist/commands/porch/state.d.ts +23 -112
- package/dist/commands/porch/state.d.ts.map +1 -1
- package/dist/commands/porch/state.js +81 -699
- package/dist/commands/porch/state.js.map +1 -1
- package/dist/commands/porch/types.d.ts +99 -164
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/porch/types.js +2 -1
- package/dist/commands/porch/types.js.map +1 -1
- package/dist/commands/porch/verdict.d.ts +31 -0
- package/dist/commands/porch/verdict.d.ts.map +1 -0
- package/dist/commands/porch/verdict.js +59 -0
- package/dist/commands/porch/verdict.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +31 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/scaffold.d.ts +37 -0
- package/dist/lib/scaffold.d.ts.map +1 -1
- package/dist/lib/scaffold.js +114 -0
- package/dist/lib/scaffold.js.map +1 -1
- package/dist/terminal/index.d.ts +8 -0
- package/dist/terminal/index.d.ts.map +1 -0
- package/dist/terminal/index.js +5 -0
- package/dist/terminal/index.js.map +1 -0
- package/dist/terminal/pty-manager.d.ts +60 -0
- package/dist/terminal/pty-manager.d.ts.map +1 -0
- package/dist/terminal/pty-manager.js +334 -0
- package/dist/terminal/pty-manager.js.map +1 -0
- package/dist/terminal/pty-session.d.ts +79 -0
- package/dist/terminal/pty-session.d.ts.map +1 -0
- package/dist/terminal/pty-session.js +215 -0
- package/dist/terminal/pty-session.js.map +1 -0
- package/dist/terminal/ring-buffer.d.ts +27 -0
- package/dist/terminal/ring-buffer.d.ts.map +1 -0
- package/dist/terminal/ring-buffer.js +74 -0
- package/dist/terminal/ring-buffer.js.map +1 -0
- package/dist/terminal/ws-protocol.d.ts +27 -0
- package/dist/terminal/ws-protocol.d.ts.map +1 -0
- package/dist/terminal/ws-protocol.js +44 -0
- package/dist/terminal/ws-protocol.js.map +1 -0
- package/package.json +18 -5
- package/skeleton/.claude/skills/af/SKILL.md +74 -0
- package/skeleton/.claude/skills/codev/SKILL.md +41 -0
- package/skeleton/.claude/skills/consult/SKILL.md +81 -0
- package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
- package/skeleton/DEPENDENCIES.md +3 -29
- package/skeleton/builders.md +1 -1
- package/skeleton/porch/prompts/defend.md +1 -1
- package/skeleton/porch/prompts/evaluate.md +2 -2
- package/skeleton/porch/prompts/implement.md +1 -1
- package/skeleton/porch/prompts/plan.md +1 -1
- package/skeleton/porch/prompts/review.md +4 -4
- package/skeleton/porch/prompts/specify.md +1 -1
- package/skeleton/porch/prompts/understand.md +2 -2
- package/skeleton/protocol-schema.json +282 -0
- package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
- package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
- package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
- package/skeleton/protocols/bugfix/prompts/pr.md +61 -0
- package/skeleton/protocols/bugfix/protocol.json +19 -2
- package/skeleton/protocols/experiment/builder-prompt.md +52 -0
- package/skeleton/protocols/experiment/protocol.json +101 -0
- package/skeleton/protocols/experiment/protocol.md +3 -3
- package/skeleton/protocols/experiment/templates/notes.md +1 -1
- package/skeleton/protocols/maintain/builder-prompt.md +46 -0
- package/skeleton/protocols/maintain/prompts/audit.md +111 -0
- package/skeleton/protocols/maintain/prompts/clean.md +91 -0
- package/skeleton/protocols/maintain/prompts/sync.md +113 -0
- package/skeleton/protocols/maintain/prompts/verify.md +110 -0
- package/skeleton/protocols/maintain/protocol.json +141 -0
- package/skeleton/protocols/maintain/protocol.md +14 -8
- package/skeleton/protocols/protocol-schema.json +54 -1
- package/skeleton/protocols/spir/builder-prompt.md +59 -0
- package/skeleton/protocols/spir/prompts/implement.md +208 -0
- package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
- package/skeleton/protocols/{spider → spir}/prompts/review.md +7 -25
- package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
- package/skeleton/protocols/spir/protocol.json +152 -0
- package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
- package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
- package/skeleton/protocols/{spider → spir}/templates/review.md +1 -1
- package/skeleton/protocols/tick/builder-prompt.md +56 -0
- package/skeleton/protocols/tick/protocol.json +7 -2
- package/skeleton/protocols/tick/protocol.md +18 -18
- package/skeleton/protocols/tick/templates/review.md +1 -1
- package/skeleton/resources/commands/agent-farm.md +25 -43
- package/skeleton/resources/commands/overview.md +7 -17
- package/skeleton/resources/workflow-reference.md +4 -4
- package/skeleton/roles/architect.md +152 -315
- package/skeleton/roles/builder.md +109 -218
- package/skeleton/templates/AGENTS.md +2 -2
- package/skeleton/templates/CLAUDE.md +2 -2
- package/skeleton/templates/cheatsheet.md +7 -5
- package/skeleton/templates/projectlist.md +1 -1
- package/templates/dashboard/index.html +17 -43
- package/templates/dashboard/js/dialogs.js +7 -7
- package/templates/dashboard/js/files.js +2 -2
- package/templates/dashboard/js/main.js +4 -4
- package/templates/dashboard/js/projects.js +3 -3
- package/templates/dashboard/js/tabs.js +1 -1
- package/templates/dashboard/js/utils.js +22 -87
- package/templates/open.html +26 -0
- package/templates/tower.html +542 -27
- package/dist/agent-farm/commands/kickoff.d.ts +0 -19
- package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
- package/dist/agent-farm/commands/kickoff.js +0 -331
- package/dist/agent-farm/commands/kickoff.js.map +0 -1
- package/dist/agent-farm/commands/rename.d.ts +0 -13
- package/dist/agent-farm/commands/rename.d.ts.map +0 -1
- package/dist/agent-farm/commands/rename.js +0 -33
- package/dist/agent-farm/commands/rename.js.map +0 -1
- package/dist/agent-farm/commands/tutorial.d.ts +0 -10
- package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
- package/dist/agent-farm/commands/tutorial.js +0 -49
- package/dist/agent-farm/commands/tutorial.js.map +0 -1
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
- package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/dashboard-server.js +0 -1872
- package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
- package/dist/agent-farm/servers/open-server.d.ts +0 -7
- package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
- package/dist/agent-farm/servers/open-server.js +0 -315
- package/dist/agent-farm/servers/open-server.js.map +0 -1
- package/dist/agent-farm/tutorial/index.d.ts +0 -8
- package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/index.js +0 -8
- package/dist/agent-farm/tutorial/index.js.map +0 -1
- package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
- package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/prompts.js +0 -147
- package/dist/agent-farm/tutorial/prompts.js.map +0 -1
- package/dist/agent-farm/tutorial/runner.d.ts +0 -52
- package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/runner.js +0 -204
- package/dist/agent-farm/tutorial/runner.js.map +0 -1
- package/dist/agent-farm/tutorial/state.d.ts +0 -26
- package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/state.js +0 -89
- package/dist/agent-farm/tutorial/state.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
- package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
- package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
- package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/index.js +0 -10
- package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/planning.js +0 -143
- package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/review.js +0 -78
- package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/setup.js +0 -126
- package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
- package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
- package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
- package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
- package/dist/commands/pcheck/cache.d.ts +0 -48
- package/dist/commands/pcheck/cache.d.ts.map +0 -1
- package/dist/commands/pcheck/cache.js +0 -170
- package/dist/commands/pcheck/cache.js.map +0 -1
- package/dist/commands/pcheck/evaluator.d.ts +0 -15
- package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
- package/dist/commands/pcheck/evaluator.js +0 -246
- package/dist/commands/pcheck/evaluator.js.map +0 -1
- package/dist/commands/pcheck/index.d.ts +0 -12
- package/dist/commands/pcheck/index.d.ts.map +0 -1
- package/dist/commands/pcheck/index.js +0 -249
- package/dist/commands/pcheck/index.js.map +0 -1
- package/dist/commands/pcheck/parser.d.ts +0 -39
- package/dist/commands/pcheck/parser.d.ts.map +0 -1
- package/dist/commands/pcheck/parser.js +0 -155
- package/dist/commands/pcheck/parser.js.map +0 -1
- package/dist/commands/pcheck/types.d.ts +0 -82
- package/dist/commands/pcheck/types.d.ts.map +0 -1
- package/dist/commands/pcheck/types.js +0 -5
- package/dist/commands/pcheck/types.js.map +0 -1
- package/dist/commands/porch/consultation.d.ts +0 -56
- package/dist/commands/porch/consultation.d.ts.map +0 -1
- package/dist/commands/porch/consultation.js +0 -330
- package/dist/commands/porch/consultation.js.map +0 -1
- package/dist/commands/porch/notifications.d.ts +0 -99
- package/dist/commands/porch/notifications.d.ts.map +0 -1
- package/dist/commands/porch/notifications.js +0 -223
- package/dist/commands/porch/notifications.js.map +0 -1
- package/dist/commands/porch/plan-parser.d.ts +0 -38
- package/dist/commands/porch/plan-parser.d.ts.map +0 -1
- package/dist/commands/porch/plan-parser.js +0 -166
- package/dist/commands/porch/plan-parser.js.map +0 -1
- package/dist/commands/porch/protocol-loader.d.ts +0 -46
- package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
- package/dist/commands/porch/protocol-loader.js +0 -253
- package/dist/commands/porch/protocol-loader.js.map +0 -1
- package/dist/commands/porch/signal-parser.d.ts +0 -88
- package/dist/commands/porch/signal-parser.d.ts.map +0 -1
- package/dist/commands/porch/signal-parser.js +0 -148
- package/dist/commands/porch/signal-parser.js.map +0 -1
- package/dist/commands/tower.d.ts +0 -16
- package/dist/commands/tower.d.ts.map +0 -1
- package/dist/commands/tower.js +0 -21
- package/dist/commands/tower.js.map +0 -1
- package/skeleton/config.json +0 -7
- package/skeleton/porch/protocols/bugfix.json +0 -85
- package/skeleton/porch/protocols/spider.json +0 -135
- package/skeleton/porch/protocols/tick.json +0 -76
- package/skeleton/protocols/spider/prompts/defend.md +0 -215
- package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
- package/skeleton/protocols/spider/prompts/implement.md +0 -149
- package/skeleton/protocols/spider/protocol.json +0 -210
- package/templates/dashboard/css/activity.css +0 -151
- package/templates/dashboard/js/activity.js +0 -112
- /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch Notifications
|
|
3
|
-
*
|
|
4
|
-
* Simple notification system for porch events.
|
|
5
|
-
* Supports console logging and optional desktop notifications.
|
|
6
|
-
*/
|
|
7
|
-
import type { ConsultationFeedback } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Notification event types
|
|
10
|
-
*/
|
|
11
|
-
export type NotificationEvent = 'phase-start' | 'phase-complete' | 'gate-pending' | 'gate-approved' | 'consultation-start' | 'consultation-complete' | 'check-failed' | 'blocked' | 'error';
|
|
12
|
-
/**
|
|
13
|
-
* Notification payload
|
|
14
|
-
*/
|
|
15
|
-
export interface NotificationPayload {
|
|
16
|
-
event: NotificationEvent;
|
|
17
|
-
projectId: string;
|
|
18
|
-
phase?: string;
|
|
19
|
-
message: string;
|
|
20
|
-
details?: string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Send a notification
|
|
24
|
-
*/
|
|
25
|
-
export declare function notify(payload: NotificationPayload, options?: {
|
|
26
|
-
desktop?: boolean;
|
|
27
|
-
}): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Notify phase start
|
|
30
|
-
*/
|
|
31
|
-
export declare function notifyPhaseStart(projectId: string, phase: string, options?: {
|
|
32
|
-
desktop?: boolean;
|
|
33
|
-
}): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Notify phase complete
|
|
36
|
-
*/
|
|
37
|
-
export declare function notifyPhaseComplete(projectId: string, phase: string, options?: {
|
|
38
|
-
desktop?: boolean;
|
|
39
|
-
}): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Notify gate pending approval
|
|
42
|
-
*/
|
|
43
|
-
export declare function notifyGatePending(projectId: string, phase: string, gateName: string, options?: {
|
|
44
|
-
desktop?: boolean;
|
|
45
|
-
}): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Notify gate approved
|
|
48
|
-
*/
|
|
49
|
-
export declare function notifyGateApproved(projectId: string, gateName: string, options?: {
|
|
50
|
-
desktop?: boolean;
|
|
51
|
-
}): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Notify consultation start
|
|
54
|
-
*/
|
|
55
|
-
export declare function notifyConsultationStart(projectId: string, phase: string, models: string[], options?: {
|
|
56
|
-
desktop?: boolean;
|
|
57
|
-
}): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Notify consultation complete
|
|
60
|
-
*/
|
|
61
|
-
export declare function notifyConsultationComplete(projectId: string, phase: string, feedback: ConsultationFeedback[], allApproved: boolean, options?: {
|
|
62
|
-
desktop?: boolean;
|
|
63
|
-
}): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Notify check failed
|
|
66
|
-
*/
|
|
67
|
-
export declare function notifyCheckFailed(projectId: string, phase: string, checkName: string, error: string, options?: {
|
|
68
|
-
desktop?: boolean;
|
|
69
|
-
}): Promise<void>;
|
|
70
|
-
/**
|
|
71
|
-
* Notify blocked
|
|
72
|
-
*/
|
|
73
|
-
export declare function notifyBlocked(projectId: string, reason: string, options?: {
|
|
74
|
-
desktop?: boolean;
|
|
75
|
-
}): Promise<void>;
|
|
76
|
-
/**
|
|
77
|
-
* Notify error
|
|
78
|
-
*/
|
|
79
|
-
export declare function notifyError(projectId: string, error: string, options?: {
|
|
80
|
-
desktop?: boolean;
|
|
81
|
-
}): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Create a notification context for a project
|
|
84
|
-
* Returns bound notification functions
|
|
85
|
-
*/
|
|
86
|
-
export declare function createNotifier(projectId: string, options?: {
|
|
87
|
-
desktop?: boolean;
|
|
88
|
-
}): {
|
|
89
|
-
phaseStart: (phase: string) => Promise<void>;
|
|
90
|
-
phaseComplete: (phase: string) => Promise<void>;
|
|
91
|
-
gatePending: (phase: string, gateName: string) => Promise<void>;
|
|
92
|
-
gateApproved: (gateName: string) => Promise<void>;
|
|
93
|
-
consultationStart: (phase: string, models: string[]) => Promise<void>;
|
|
94
|
-
consultationComplete: (phase: string, feedback: ConsultationFeedback[], allApproved: boolean) => Promise<void>;
|
|
95
|
-
checkFailed: (phase: string, checkName: string, error: string) => Promise<void>;
|
|
96
|
-
blocked: (reason: string) => Promise<void>;
|
|
97
|
-
error: (error: string) => Promise<void>;
|
|
98
|
-
};
|
|
99
|
-
//# sourceMappingURL=notifications.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Porch Notifications
|
|
3
|
-
*
|
|
4
|
-
* Simple notification system for porch events.
|
|
5
|
-
* Supports console logging and optional desktop notifications.
|
|
6
|
-
*/
|
|
7
|
-
import { spawn } from 'node:child_process';
|
|
8
|
-
import chalk from 'chalk';
|
|
9
|
-
/**
|
|
10
|
-
* Send a desktop notification (macOS only)
|
|
11
|
-
* Fails silently if osascript is not available
|
|
12
|
-
*/
|
|
13
|
-
async function sendDesktopNotification(title, message) {
|
|
14
|
-
if (process.platform !== 'darwin') {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
return new Promise((resolve) => {
|
|
18
|
-
const script = `display notification "${message.replace(/"/g, '\\"')}" with title "${title.replace(/"/g, '\\"')}"`;
|
|
19
|
-
const proc = spawn('osascript', ['-e', script], { stdio: 'ignore' });
|
|
20
|
-
proc.on('close', () => resolve());
|
|
21
|
-
proc.on('error', () => resolve());
|
|
22
|
-
// Don't wait forever
|
|
23
|
-
setTimeout(() => resolve(), 2000);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Format and log a notification to console
|
|
28
|
-
*/
|
|
29
|
-
function logNotification(payload) {
|
|
30
|
-
const { event, projectId, phase, message, details } = payload;
|
|
31
|
-
let icon;
|
|
32
|
-
let color;
|
|
33
|
-
switch (event) {
|
|
34
|
-
case 'phase-start':
|
|
35
|
-
icon = '>';
|
|
36
|
-
color = chalk.blue;
|
|
37
|
-
break;
|
|
38
|
-
case 'phase-complete':
|
|
39
|
-
icon = '✓';
|
|
40
|
-
color = chalk.green;
|
|
41
|
-
break;
|
|
42
|
-
case 'gate-pending':
|
|
43
|
-
icon = '◉';
|
|
44
|
-
color = chalk.yellow;
|
|
45
|
-
break;
|
|
46
|
-
case 'gate-approved':
|
|
47
|
-
icon = '✓';
|
|
48
|
-
color = chalk.green;
|
|
49
|
-
break;
|
|
50
|
-
case 'consultation-start':
|
|
51
|
-
icon = '⟳';
|
|
52
|
-
color = chalk.blue;
|
|
53
|
-
break;
|
|
54
|
-
case 'consultation-complete':
|
|
55
|
-
icon = '✓';
|
|
56
|
-
color = chalk.green;
|
|
57
|
-
break;
|
|
58
|
-
case 'check-failed':
|
|
59
|
-
icon = '✗';
|
|
60
|
-
color = chalk.red;
|
|
61
|
-
break;
|
|
62
|
-
case 'blocked':
|
|
63
|
-
icon = '!';
|
|
64
|
-
color = chalk.yellow;
|
|
65
|
-
break;
|
|
66
|
-
case 'error':
|
|
67
|
-
icon = '✗';
|
|
68
|
-
color = chalk.red;
|
|
69
|
-
break;
|
|
70
|
-
default:
|
|
71
|
-
icon = '•';
|
|
72
|
-
color = chalk.gray;
|
|
73
|
-
}
|
|
74
|
-
const prefix = phase
|
|
75
|
-
? `[porch:${projectId}:${phase}]`
|
|
76
|
-
: `[porch:${projectId}]`;
|
|
77
|
-
console.log(color(`${icon} ${prefix} ${message}`));
|
|
78
|
-
if (details) {
|
|
79
|
-
console.log(chalk.gray(` ${details}`));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Send a notification
|
|
84
|
-
*/
|
|
85
|
-
export async function notify(payload, options = {}) {
|
|
86
|
-
// Always log to console
|
|
87
|
-
logNotification(payload);
|
|
88
|
-
// Desktop notification for important events
|
|
89
|
-
if (options.desktop) {
|
|
90
|
-
const shouldNotify = payload.event === 'gate-pending' ||
|
|
91
|
-
payload.event === 'consultation-complete' ||
|
|
92
|
-
payload.event === 'check-failed' ||
|
|
93
|
-
payload.event === 'blocked' ||
|
|
94
|
-
payload.event === 'error';
|
|
95
|
-
if (shouldNotify) {
|
|
96
|
-
const title = `Porch: ${payload.projectId}`;
|
|
97
|
-
await sendDesktopNotification(title, payload.message);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Notify phase start
|
|
103
|
-
*/
|
|
104
|
-
export async function notifyPhaseStart(projectId, phase, options = {}) {
|
|
105
|
-
await notify({
|
|
106
|
-
event: 'phase-start',
|
|
107
|
-
projectId,
|
|
108
|
-
phase,
|
|
109
|
-
message: `Starting phase: ${phase}`,
|
|
110
|
-
}, options);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Notify phase complete
|
|
114
|
-
*/
|
|
115
|
-
export async function notifyPhaseComplete(projectId, phase, options = {}) {
|
|
116
|
-
await notify({
|
|
117
|
-
event: 'phase-complete',
|
|
118
|
-
projectId,
|
|
119
|
-
phase,
|
|
120
|
-
message: `Completed phase: ${phase}`,
|
|
121
|
-
}, options);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Notify gate pending approval
|
|
125
|
-
*/
|
|
126
|
-
export async function notifyGatePending(projectId, phase, gateName, options = {}) {
|
|
127
|
-
await notify({
|
|
128
|
-
event: 'gate-pending',
|
|
129
|
-
projectId,
|
|
130
|
-
phase,
|
|
131
|
-
message: `Gate pending: ${gateName}`,
|
|
132
|
-
details: `Run: porch approve ${projectId} ${gateName}`,
|
|
133
|
-
}, options);
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Notify gate approved
|
|
137
|
-
*/
|
|
138
|
-
export async function notifyGateApproved(projectId, gateName, options = {}) {
|
|
139
|
-
await notify({
|
|
140
|
-
event: 'gate-approved',
|
|
141
|
-
projectId,
|
|
142
|
-
message: `Gate approved: ${gateName}`,
|
|
143
|
-
}, options);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Notify consultation start
|
|
147
|
-
*/
|
|
148
|
-
export async function notifyConsultationStart(projectId, phase, models, options = {}) {
|
|
149
|
-
await notify({
|
|
150
|
-
event: 'consultation-start',
|
|
151
|
-
projectId,
|
|
152
|
-
phase,
|
|
153
|
-
message: `Starting ${models.length}-way consultation`,
|
|
154
|
-
details: `Models: ${models.join(', ')}`,
|
|
155
|
-
}, options);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Notify consultation complete
|
|
159
|
-
*/
|
|
160
|
-
export async function notifyConsultationComplete(projectId, phase, feedback, allApproved, options = {}) {
|
|
161
|
-
const approveCount = feedback.filter((f) => f.verdict === 'APPROVE').length;
|
|
162
|
-
const changeCount = feedback.filter((f) => f.verdict === 'REQUEST_CHANGES').length;
|
|
163
|
-
const message = allApproved
|
|
164
|
-
? `Consultation complete: All ${approveCount} models approved`
|
|
165
|
-
: `Consultation complete: ${approveCount} approved, ${changeCount} requested changes`;
|
|
166
|
-
await notify({
|
|
167
|
-
event: 'consultation-complete',
|
|
168
|
-
projectId,
|
|
169
|
-
phase,
|
|
170
|
-
message,
|
|
171
|
-
details: feedback.map((f) => `${f.model}: ${f.verdict}`).join(', '),
|
|
172
|
-
}, options);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Notify check failed
|
|
176
|
-
*/
|
|
177
|
-
export async function notifyCheckFailed(projectId, phase, checkName, error, options = {}) {
|
|
178
|
-
await notify({
|
|
179
|
-
event: 'check-failed',
|
|
180
|
-
projectId,
|
|
181
|
-
phase,
|
|
182
|
-
message: `Check failed: ${checkName}`,
|
|
183
|
-
details: error,
|
|
184
|
-
}, options);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Notify blocked
|
|
188
|
-
*/
|
|
189
|
-
export async function notifyBlocked(projectId, reason, options = {}) {
|
|
190
|
-
await notify({
|
|
191
|
-
event: 'blocked',
|
|
192
|
-
projectId,
|
|
193
|
-
message: `Blocked: ${reason}`,
|
|
194
|
-
}, options);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Notify error
|
|
198
|
-
*/
|
|
199
|
-
export async function notifyError(projectId, error, options = {}) {
|
|
200
|
-
await notify({
|
|
201
|
-
event: 'error',
|
|
202
|
-
projectId,
|
|
203
|
-
message: `Error: ${error}`,
|
|
204
|
-
}, options);
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Create a notification context for a project
|
|
208
|
-
* Returns bound notification functions
|
|
209
|
-
*/
|
|
210
|
-
export function createNotifier(projectId, options = {}) {
|
|
211
|
-
return {
|
|
212
|
-
phaseStart: (phase) => notifyPhaseStart(projectId, phase, options),
|
|
213
|
-
phaseComplete: (phase) => notifyPhaseComplete(projectId, phase, options),
|
|
214
|
-
gatePending: (phase, gateName) => notifyGatePending(projectId, phase, gateName, options),
|
|
215
|
-
gateApproved: (gateName) => notifyGateApproved(projectId, gateName, options),
|
|
216
|
-
consultationStart: (phase, models) => notifyConsultationStart(projectId, phase, models, options),
|
|
217
|
-
consultationComplete: (phase, feedback, allApproved) => notifyConsultationComplete(projectId, phase, feedback, allApproved, options),
|
|
218
|
-
checkFailed: (phase, checkName, error) => notifyCheckFailed(projectId, phase, checkName, error, options),
|
|
219
|
-
blocked: (reason) => notifyBlocked(projectId, reason, options),
|
|
220
|
-
error: (error) => notifyError(projectId, error, options),
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
//# sourceMappingURL=notifications.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/commands/porch/notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plan Parser
|
|
3
|
-
*
|
|
4
|
-
* Extracts implementation phases from plan.md files.
|
|
5
|
-
* Supports the standard codev plan format with `### Phase N: <title>` headers.
|
|
6
|
-
*/
|
|
7
|
-
import type { PlanPhase } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Extract phases from a plan markdown file
|
|
10
|
-
*
|
|
11
|
-
* Looks for either:
|
|
12
|
-
* - `## Implementation Phases` or `## Phases` section
|
|
13
|
-
* - `### Phase N: <title>` headers within that section
|
|
14
|
-
*
|
|
15
|
-
* Falls back to treating entire implementation as single phase if no structured phases found.
|
|
16
|
-
*/
|
|
17
|
-
export declare function extractPhasesFromPlan(planContent: string): PlanPhase[];
|
|
18
|
-
/**
|
|
19
|
-
* Extract phases from a plan file path
|
|
20
|
-
*/
|
|
21
|
-
export declare function extractPhasesFromPlanFile(planFilePath: string): PlanPhase[];
|
|
22
|
-
/**
|
|
23
|
-
* Find the plan file for a project
|
|
24
|
-
*/
|
|
25
|
-
export declare function findPlanFile(projectRoot: string, projectId: string, projectName?: string): string | null;
|
|
26
|
-
/**
|
|
27
|
-
* Get the current phase ID based on completed phases
|
|
28
|
-
*/
|
|
29
|
-
export declare function getCurrentPhase(phases: PlanPhase[], completedPhases: Set<string>): PlanPhase | null;
|
|
30
|
-
/**
|
|
31
|
-
* Get the next phase after a given phase
|
|
32
|
-
*/
|
|
33
|
-
export declare function getNextPhase(phases: PlanPhase[], currentPhaseId: string): PlanPhase | null;
|
|
34
|
-
/**
|
|
35
|
-
* Check if all phases are complete
|
|
36
|
-
*/
|
|
37
|
-
export declare function allPhasesComplete(phases: PlanPhase[], completedPhases: Set<string>): boolean;
|
|
38
|
-
//# sourceMappingURL=plan-parser.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-parser.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/plan-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAwEtE;AAkCD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,CAO3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BxG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,SAAS,GAAG,IAAI,CAOlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,EAAE,MAAM,GACrB,SAAS,GAAG,IAAI,CAMlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,OAAO,CAET"}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plan Parser
|
|
3
|
-
*
|
|
4
|
-
* Extracts implementation phases from plan.md files.
|
|
5
|
-
* Supports the standard codev plan format with `### Phase N: <title>` headers.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from 'node:fs';
|
|
8
|
-
/**
|
|
9
|
-
* Extract phases from a plan markdown file
|
|
10
|
-
*
|
|
11
|
-
* Looks for either:
|
|
12
|
-
* - `## Implementation Phases` or `## Phases` section
|
|
13
|
-
* - `### Phase N: <title>` headers within that section
|
|
14
|
-
*
|
|
15
|
-
* Falls back to treating entire implementation as single phase if no structured phases found.
|
|
16
|
-
*/
|
|
17
|
-
export function extractPhasesFromPlan(planContent) {
|
|
18
|
-
const phases = [];
|
|
19
|
-
// Look for the phases section
|
|
20
|
-
const phaseSectionMatch = planContent.match(/##\s*(?:Implementation\s+)?Phases\s*\n([\s\S]*?)(?=\n##\s|$)/i);
|
|
21
|
-
if (!phaseSectionMatch) {
|
|
22
|
-
// No phases section found, return single default phase
|
|
23
|
-
return [{
|
|
24
|
-
id: 'phase_1',
|
|
25
|
-
title: 'Implementation',
|
|
26
|
-
description: 'Single implementation phase (no structured phases in plan)',
|
|
27
|
-
}];
|
|
28
|
-
}
|
|
29
|
-
const phasesSection = phaseSectionMatch[1];
|
|
30
|
-
// Extract individual phases with ### Phase N: <title> format
|
|
31
|
-
const phaseRegex = /###\s*Phase\s+(\d+):\s*([^\n]+)\n([\s\S]*?)(?=\n###\s*Phase|\n##\s|$)/gi;
|
|
32
|
-
let match;
|
|
33
|
-
while ((match = phaseRegex.exec(phasesSection)) !== null) {
|
|
34
|
-
const [, number, title, content] = match;
|
|
35
|
-
const phaseId = `phase_${number}`;
|
|
36
|
-
// Extract description from content (bullet points or first paragraph)
|
|
37
|
-
const description = extractPhaseDescription(content);
|
|
38
|
-
phases.push({
|
|
39
|
-
id: phaseId,
|
|
40
|
-
title: title.trim(),
|
|
41
|
-
description,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
// If no phases found with numbered format, try alternative format
|
|
45
|
-
if (phases.length === 0) {
|
|
46
|
-
// Try format: ### <title> (without Phase N prefix)
|
|
47
|
-
const altRegex = /###\s*([^\n]+)\n([\s\S]*?)(?=\n###|\n##\s|$)/gi;
|
|
48
|
-
let phaseNum = 1;
|
|
49
|
-
while ((match = altRegex.exec(phasesSection)) !== null) {
|
|
50
|
-
const [, title, content] = match;
|
|
51
|
-
// Skip if this looks like a non-phase section
|
|
52
|
-
if (title.toLowerCase().includes('dependencies') ||
|
|
53
|
-
title.toLowerCase().includes('acceptance') ||
|
|
54
|
-
title.toLowerCase().includes('test')) {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
phases.push({
|
|
58
|
-
id: `phase_${phaseNum}`,
|
|
59
|
-
title: title.trim(),
|
|
60
|
-
description: extractPhaseDescription(content),
|
|
61
|
-
});
|
|
62
|
-
phaseNum++;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// If still no phases, return single default
|
|
66
|
-
if (phases.length === 0) {
|
|
67
|
-
return [{
|
|
68
|
-
id: 'phase_1',
|
|
69
|
-
title: 'Implementation',
|
|
70
|
-
description: 'Single implementation phase (could not parse plan phases)',
|
|
71
|
-
}];
|
|
72
|
-
}
|
|
73
|
-
return phases;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Extract a description from phase content
|
|
77
|
-
* Takes the first few bullet points or the first paragraph
|
|
78
|
-
*/
|
|
79
|
-
function extractPhaseDescription(content) {
|
|
80
|
-
const lines = content.trim().split('\n');
|
|
81
|
-
const descLines = [];
|
|
82
|
-
for (const line of lines) {
|
|
83
|
-
const trimmed = line.trim();
|
|
84
|
-
// Stop at subheadings
|
|
85
|
-
if (trimmed.startsWith('###') || trimmed.startsWith('####')) {
|
|
86
|
-
break;
|
|
87
|
-
}
|
|
88
|
-
// Collect bullet points
|
|
89
|
-
if (trimmed.startsWith('- ') || trimmed.startsWith('* ')) {
|
|
90
|
-
const bulletContent = trimmed.slice(2).trim();
|
|
91
|
-
// Skip long bullets
|
|
92
|
-
if (bulletContent.length < 100) {
|
|
93
|
-
descLines.push(bulletContent);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
// Limit to first 5 items
|
|
97
|
-
if (descLines.length >= 5)
|
|
98
|
-
break;
|
|
99
|
-
}
|
|
100
|
-
return descLines.join(', ');
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Extract phases from a plan file path
|
|
104
|
-
*/
|
|
105
|
-
export function extractPhasesFromPlanFile(planFilePath) {
|
|
106
|
-
if (!fs.existsSync(planFilePath)) {
|
|
107
|
-
throw new Error(`Plan file not found: ${planFilePath}`);
|
|
108
|
-
}
|
|
109
|
-
const content = fs.readFileSync(planFilePath, 'utf-8');
|
|
110
|
-
return extractPhasesFromPlan(content);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Find the plan file for a project
|
|
114
|
-
*/
|
|
115
|
-
export function findPlanFile(projectRoot, projectId, projectName) {
|
|
116
|
-
const possiblePaths = [
|
|
117
|
-
// New structure: codev/projects/<id>-<name>/plan.md
|
|
118
|
-
`${projectRoot}/codev/projects/${projectId}-${projectName}/plan.md`,
|
|
119
|
-
`${projectRoot}/codev/projects/${projectId}/plan.md`,
|
|
120
|
-
// Legacy structure: codev/plans/<id>-<name>.md
|
|
121
|
-
`${projectRoot}/codev/plans/${projectId}-${projectName}.md`,
|
|
122
|
-
];
|
|
123
|
-
// Also try to find by ID prefix in legacy structure
|
|
124
|
-
const plansDir = `${projectRoot}/codev/plans`;
|
|
125
|
-
if (fs.existsSync(plansDir)) {
|
|
126
|
-
const files = fs.readdirSync(plansDir);
|
|
127
|
-
const match = files.find(f => f.startsWith(`${projectId}-`) && f.endsWith('.md'));
|
|
128
|
-
if (match) {
|
|
129
|
-
possiblePaths.push(`${plansDir}/${match}`);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
for (const planPath of possiblePaths) {
|
|
133
|
-
if (fs.existsSync(planPath)) {
|
|
134
|
-
return planPath;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return null;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Get the current phase ID based on completed phases
|
|
141
|
-
*/
|
|
142
|
-
export function getCurrentPhase(phases, completedPhases) {
|
|
143
|
-
for (const phase of phases) {
|
|
144
|
-
if (!completedPhases.has(phase.id)) {
|
|
145
|
-
return phase;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return null; // All phases complete
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Get the next phase after a given phase
|
|
152
|
-
*/
|
|
153
|
-
export function getNextPhase(phases, currentPhaseId) {
|
|
154
|
-
const currentIndex = phases.findIndex(p => p.id === currentPhaseId);
|
|
155
|
-
if (currentIndex >= 0 && currentIndex < phases.length - 1) {
|
|
156
|
-
return phases[currentIndex + 1];
|
|
157
|
-
}
|
|
158
|
-
return null;
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Check if all phases are complete
|
|
162
|
-
*/
|
|
163
|
-
export function allPhasesComplete(phases, completedPhases) {
|
|
164
|
-
return phases.every(p => completedPhases.has(p.id));
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=plan-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plan-parser.js","sourceRoot":"","sources":["../../../src/commands/porch/plan-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Protocol Loader
|
|
3
|
-
*
|
|
4
|
-
* Loads and validates protocol definitions from JSON files.
|
|
5
|
-
*/
|
|
6
|
-
import type { Protocol, Phase } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Find protocol JSON file
|
|
9
|
-
*/
|
|
10
|
-
export declare function findProtocolFile(projectRoot: string, protocolName: string): string | null;
|
|
11
|
-
/**
|
|
12
|
-
* Load protocol from JSON file
|
|
13
|
-
*/
|
|
14
|
-
export declare function loadProtocol(projectRoot: string, protocolName: string): Protocol | null;
|
|
15
|
-
/**
|
|
16
|
-
* Get all available protocols
|
|
17
|
-
*/
|
|
18
|
-
export declare function listProtocols(projectRoot: string): string[];
|
|
19
|
-
/**
|
|
20
|
-
* Get default protocol (spider)
|
|
21
|
-
*/
|
|
22
|
-
export declare function getDefaultProtocol(projectRoot: string): Protocol | null;
|
|
23
|
-
/**
|
|
24
|
-
* Validate a protocol has required phases
|
|
25
|
-
*/
|
|
26
|
-
export declare function validateProtocol(protocol: Protocol): {
|
|
27
|
-
valid: boolean;
|
|
28
|
-
errors: string[];
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Get phase by ID
|
|
32
|
-
*/
|
|
33
|
-
export declare function getPhase(protocol: Protocol, phaseId: string): Phase | null;
|
|
34
|
-
/**
|
|
35
|
-
* Get the next phase after a given phase
|
|
36
|
-
*/
|
|
37
|
-
export declare function getNextPhase(protocol: Protocol, currentPhaseId: string): Phase | null;
|
|
38
|
-
/**
|
|
39
|
-
* Check if a phase is a terminal phase (no next phase)
|
|
40
|
-
*/
|
|
41
|
-
export declare function isTerminalPhase(protocol: Protocol, phaseId: string): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Get phased phases (phases that run per plan phase)
|
|
44
|
-
*/
|
|
45
|
-
export declare function getPhasedPhases(protocol: Protocol): Phase[];
|
|
46
|
-
//# sourceMappingURL=protocol-loader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"protocol-loader.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/protocol-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAyC,MAAM,YAAY,CAAC;AA8EzF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAevF;AAuID;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCzF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAMrF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,CAE3D"}
|