@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.61
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 +34 -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/shell.d.ts +15 -0
- package/dist/agent-farm/commands/shell.d.ts.map +1 -0
- package/dist/agent-farm/commands/shell.js +61 -0
- 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 +58 -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 +2340 -109
- 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 +9 -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 +2 -0
- package/dist/commands/consult/index.d.ts.map +1 -1
- package/dist/commands/consult/index.js +103 -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 +481 -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/consult-types/impl-review.md +9 -0
- 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 +0 -15
- package/dist/agent-farm/commands/util.d.ts.map +0 -1
- package/dist/agent-farm/commands/util.js +0 -108
- 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,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simple prompt utilities for the tutorial
|
|
3
|
-
* Uses readline for interactive input
|
|
4
|
-
*/
|
|
5
|
-
import * as readline from 'node:readline';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
/**
|
|
8
|
-
* Create readline interface for prompts
|
|
9
|
-
*/
|
|
10
|
-
function createInterface() {
|
|
11
|
-
return readline.createInterface({
|
|
12
|
-
input: process.stdin,
|
|
13
|
-
output: process.stdout,
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Ask a yes/no confirmation question
|
|
18
|
-
*/
|
|
19
|
-
export async function confirm(message, defaultValue = true) {
|
|
20
|
-
const rl = createInterface();
|
|
21
|
-
const hint = defaultValue ? '[Y/n]' : '[y/N]';
|
|
22
|
-
return new Promise((resolve) => {
|
|
23
|
-
rl.question(`${message} ${chalk.gray(hint)} `, (answer) => {
|
|
24
|
-
rl.close();
|
|
25
|
-
const normalized = answer.trim().toLowerCase();
|
|
26
|
-
if (normalized === '') {
|
|
27
|
-
resolve(defaultValue);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
resolve(normalized === 'y' || normalized === 'yes');
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Ask for free-form text input
|
|
37
|
-
*/
|
|
38
|
-
export async function prompt(message, defaultValue) {
|
|
39
|
-
const rl = createInterface();
|
|
40
|
-
const hint = defaultValue ? chalk.gray(` [${defaultValue}]`) : '';
|
|
41
|
-
return new Promise((resolve) => {
|
|
42
|
-
rl.question(`${message}${hint}: `, (answer) => {
|
|
43
|
-
rl.close();
|
|
44
|
-
const value = answer.trim();
|
|
45
|
-
resolve(value || defaultValue || '');
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Ask user to select from a list of options
|
|
51
|
-
*/
|
|
52
|
-
export async function select(message, options) {
|
|
53
|
-
const rl = createInterface();
|
|
54
|
-
console.log(message);
|
|
55
|
-
options.forEach((opt, i) => {
|
|
56
|
-
console.log(` ${chalk.cyan(`${i + 1}.`)} ${opt}`);
|
|
57
|
-
});
|
|
58
|
-
return new Promise((resolve) => {
|
|
59
|
-
rl.question(chalk.gray('Enter number: '), (answer) => {
|
|
60
|
-
rl.close();
|
|
61
|
-
const index = parseInt(answer.trim(), 10) - 1;
|
|
62
|
-
if (index >= 0 && index < options.length) {
|
|
63
|
-
resolve(options[index]);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
// Default to first option on invalid input
|
|
67
|
-
resolve(options[0]);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Wait for user to press Enter to continue
|
|
74
|
-
*/
|
|
75
|
-
export async function pressEnter(message = 'Press Enter to continue...') {
|
|
76
|
-
const rl = createInterface();
|
|
77
|
-
return new Promise((resolve) => {
|
|
78
|
-
rl.question(chalk.gray(message), () => {
|
|
79
|
-
rl.close();
|
|
80
|
-
resolve();
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Print a section header
|
|
86
|
-
*/
|
|
87
|
-
export function section(title) {
|
|
88
|
-
console.log();
|
|
89
|
-
console.log(chalk.bold.cyan('━'.repeat(50)));
|
|
90
|
-
console.log(chalk.bold.cyan(` ${title}`));
|
|
91
|
-
console.log(chalk.bold.cyan('━'.repeat(50)));
|
|
92
|
-
console.log();
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Print content text (with proper wrapping)
|
|
96
|
-
*/
|
|
97
|
-
export function content(text) {
|
|
98
|
-
console.log(text);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Print a bullet point
|
|
102
|
-
*/
|
|
103
|
-
export function bullet(text) {
|
|
104
|
-
console.log(` ${chalk.gray('•')} ${text}`);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Print a numbered step
|
|
108
|
-
*/
|
|
109
|
-
export function step(num, text) {
|
|
110
|
-
console.log(` ${chalk.cyan(`${num}.`)} ${text}`);
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Print highlighted text (e.g., for commands)
|
|
114
|
-
*/
|
|
115
|
-
export function highlight(text) {
|
|
116
|
-
console.log(chalk.yellow(` ${text}`));
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Print a success message
|
|
120
|
-
*/
|
|
121
|
-
export function success(text) {
|
|
122
|
-
console.log(chalk.green(` ✓ ${text}`));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Print a warning message
|
|
126
|
-
*/
|
|
127
|
-
export function warn(text) {
|
|
128
|
-
console.log(chalk.yellow(` ⚠ ${text}`));
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Print an info message
|
|
132
|
-
*/
|
|
133
|
-
export function info(text) {
|
|
134
|
-
console.log(chalk.blue(` ℹ ${text}`));
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Print a code block
|
|
138
|
-
*/
|
|
139
|
-
export function code(text) {
|
|
140
|
-
const lines = text.split('\n');
|
|
141
|
-
console.log(chalk.gray(' ┌' + '─'.repeat(48)));
|
|
142
|
-
for (const line of lines) {
|
|
143
|
-
console.log(chalk.gray(' │ ') + chalk.white(line));
|
|
144
|
-
}
|
|
145
|
-
console.log(chalk.gray(' └' + '─'.repeat(48)));
|
|
146
|
-
}
|
|
147
|
-
//# sourceMappingURL=prompts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,SAAS,eAAe;IACtB,OAAO,QAAQ,CAAC,eAAe,CAAC;QAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,YAAY,GAAG,IAAI;IAChE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAE9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YACxD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,YAAqB;IACjE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC5C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,OAAiB;IAC7D,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE;YACnD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAO,GAAG,4BAA4B;IACrE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE;YACpC,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,GAAW,EAAE,IAAY;IAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tutorial step runner infrastructure
|
|
3
|
-
* Manages step execution, state, and progress
|
|
4
|
-
*/
|
|
5
|
-
import type { TutorialState } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Detected project type
|
|
8
|
-
*/
|
|
9
|
-
export type ProjectType = 'nodejs' | 'python' | 'other';
|
|
10
|
-
/**
|
|
11
|
-
* Context passed to each step function
|
|
12
|
-
*/
|
|
13
|
-
export interface StepContext {
|
|
14
|
-
state: TutorialState;
|
|
15
|
-
projectPath: string;
|
|
16
|
-
projectName: string;
|
|
17
|
-
projectType: ProjectType;
|
|
18
|
-
hasGit: boolean;
|
|
19
|
-
hasCodev: boolean;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Result returned by each step
|
|
23
|
-
*/
|
|
24
|
-
export interface StepResult {
|
|
25
|
-
status: 'completed' | 'skipped' | 'aborted';
|
|
26
|
-
responses?: Record<string, string>;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Step function signature
|
|
30
|
-
*/
|
|
31
|
-
export type StepFunction = (ctx: StepContext) => Promise<StepResult>;
|
|
32
|
-
/**
|
|
33
|
-
* Step definition
|
|
34
|
-
*/
|
|
35
|
-
export interface Step {
|
|
36
|
-
id: string;
|
|
37
|
-
title: string;
|
|
38
|
-
run: StepFunction;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Show tutorial status/progress
|
|
42
|
-
*/
|
|
43
|
-
export declare function showStatus(steps: Step[]): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Skip to the next step
|
|
46
|
-
*/
|
|
47
|
-
export declare function skipCurrentStep(steps: Step[]): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
* Run the tutorial from current step
|
|
50
|
-
*/
|
|
51
|
-
export declare function runTutorial(steps: Step[]): Promise<void>;
|
|
52
|
-
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,YAAY,CAAC;CACnB;AAgED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC7D;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqF9D"}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tutorial step runner infrastructure
|
|
3
|
-
* Manages step execution, state, and progress
|
|
4
|
-
*/
|
|
5
|
-
import { existsSync } from 'node:fs';
|
|
6
|
-
import { execSync } from 'node:child_process';
|
|
7
|
-
import { resolve, basename } from 'node:path';
|
|
8
|
-
import { getConfig } from '../utils/index.js';
|
|
9
|
-
import { loadTutorialState, saveTutorialState, getOrCreateTutorialState, completeStep } from './state.js';
|
|
10
|
-
import * as prompts from './prompts.js';
|
|
11
|
-
import { logger } from '../utils/logger.js';
|
|
12
|
-
/**
|
|
13
|
-
* Detect project type based on files present
|
|
14
|
-
*/
|
|
15
|
-
function detectProjectType(projectPath) {
|
|
16
|
-
if (existsSync(resolve(projectPath, 'package.json'))) {
|
|
17
|
-
return 'nodejs';
|
|
18
|
-
}
|
|
19
|
-
if (existsSync(resolve(projectPath, 'pyproject.toml')) ||
|
|
20
|
-
existsSync(resolve(projectPath, 'setup.py')) ||
|
|
21
|
-
existsSync(resolve(projectPath, 'requirements.txt'))) {
|
|
22
|
-
return 'python';
|
|
23
|
-
}
|
|
24
|
-
return 'other';
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Check if directory is a git repository
|
|
28
|
-
*/
|
|
29
|
-
function hasGitRepo(projectPath) {
|
|
30
|
-
try {
|
|
31
|
-
execSync('git rev-parse --git-dir', {
|
|
32
|
-
cwd: projectPath,
|
|
33
|
-
stdio: 'ignore',
|
|
34
|
-
});
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Check if codev directory exists
|
|
43
|
-
*/
|
|
44
|
-
function hasCodevDir(projectPath) {
|
|
45
|
-
return existsSync(resolve(projectPath, 'codev'));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Build step context from current state
|
|
49
|
-
*/
|
|
50
|
-
async function buildContext(state) {
|
|
51
|
-
const config = getConfig();
|
|
52
|
-
return {
|
|
53
|
-
state,
|
|
54
|
-
projectPath: config.projectRoot,
|
|
55
|
-
projectName: basename(config.projectRoot),
|
|
56
|
-
projectType: detectProjectType(config.projectRoot),
|
|
57
|
-
hasGit: hasGitRepo(config.projectRoot),
|
|
58
|
-
hasCodev: hasCodevDir(config.projectRoot),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Find the index of the current step
|
|
63
|
-
*/
|
|
64
|
-
function findCurrentStepIndex(steps, currentStepId) {
|
|
65
|
-
return steps.findIndex((s) => s.id === currentStepId);
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Show tutorial status/progress
|
|
69
|
-
*/
|
|
70
|
-
export async function showStatus(steps) {
|
|
71
|
-
const state = await loadTutorialState();
|
|
72
|
-
if (!state) {
|
|
73
|
-
logger.info('No tutorial in progress. Run `af tutorial` to start.');
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
const currentIndex = findCurrentStepIndex(steps, state.currentStep);
|
|
77
|
-
logger.header('Tutorial Progress');
|
|
78
|
-
logger.kv('Started', new Date(state.startedAt).toLocaleDateString());
|
|
79
|
-
logger.kv('Last active', new Date(state.lastActiveAt).toLocaleDateString());
|
|
80
|
-
logger.blank();
|
|
81
|
-
for (let i = 0; i < steps.length; i++) {
|
|
82
|
-
const step = steps[i];
|
|
83
|
-
const isCompleted = state.completedSteps.includes(step.id);
|
|
84
|
-
const isCurrent = i === currentIndex;
|
|
85
|
-
let prefix = ' ';
|
|
86
|
-
if (isCompleted) {
|
|
87
|
-
prefix = '✓ ';
|
|
88
|
-
}
|
|
89
|
-
else if (isCurrent) {
|
|
90
|
-
prefix = '→ ';
|
|
91
|
-
}
|
|
92
|
-
const status = isCompleted ? '(completed)' : isCurrent ? '(current)' : '';
|
|
93
|
-
console.log(`${prefix}${i + 1}. ${step.title} ${status}`);
|
|
94
|
-
}
|
|
95
|
-
logger.blank();
|
|
96
|
-
const completed = state.completedSteps.length;
|
|
97
|
-
const total = steps.length;
|
|
98
|
-
logger.info(`Progress: ${completed}/${total} steps completed`);
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Skip to the next step
|
|
102
|
-
*/
|
|
103
|
-
export async function skipCurrentStep(steps) {
|
|
104
|
-
const state = await loadTutorialState();
|
|
105
|
-
if (!state) {
|
|
106
|
-
logger.error('No tutorial in progress. Run `af tutorial` to start.');
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
const currentIndex = findCurrentStepIndex(steps, state.currentStep);
|
|
110
|
-
if (currentIndex < 0) {
|
|
111
|
-
logger.error('Current step not found. Try resetting the tutorial.');
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if (currentIndex >= steps.length - 1) {
|
|
115
|
-
logger.info('Already at the last step.');
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const currentStep = steps[currentIndex];
|
|
119
|
-
const nextStep = steps[currentIndex + 1];
|
|
120
|
-
await completeStep(state, currentStep.id, nextStep.id);
|
|
121
|
-
logger.success(`Skipped "${currentStep.title}"`);
|
|
122
|
-
logger.info(`Now at: "${nextStep.title}"`);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Run the tutorial from current step
|
|
126
|
-
*/
|
|
127
|
-
export async function runTutorial(steps) {
|
|
128
|
-
const state = await getOrCreateTutorialState();
|
|
129
|
-
let ctx = await buildContext(state);
|
|
130
|
-
let currentIndex = findCurrentStepIndex(steps, state.currentStep);
|
|
131
|
-
// If current step not found, start from the beginning
|
|
132
|
-
if (currentIndex < 0) {
|
|
133
|
-
currentIndex = 0;
|
|
134
|
-
state.currentStep = steps[0].id;
|
|
135
|
-
await saveTutorialState(state);
|
|
136
|
-
}
|
|
137
|
-
// Show welcome if resuming
|
|
138
|
-
if (state.completedSteps.length > 0) {
|
|
139
|
-
prompts.section('Resuming Tutorial');
|
|
140
|
-
prompts.info(`You're on step ${currentIndex + 1} of ${steps.length}: ${steps[currentIndex].title}`);
|
|
141
|
-
console.log();
|
|
142
|
-
const shouldContinue = await prompts.confirm('Continue from where you left off?');
|
|
143
|
-
if (!shouldContinue) {
|
|
144
|
-
const restart = await prompts.confirm('Start from the beginning?', false);
|
|
145
|
-
if (restart) {
|
|
146
|
-
state.currentStep = steps[0].id;
|
|
147
|
-
state.completedSteps = [];
|
|
148
|
-
state.userResponses = {};
|
|
149
|
-
await saveTutorialState(state);
|
|
150
|
-
currentIndex = 0;
|
|
151
|
-
ctx = await buildContext(state);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
logger.info('Tutorial paused. Run `af tutorial` to resume later.');
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
// Run steps sequentially
|
|
160
|
-
while (currentIndex < steps.length) {
|
|
161
|
-
const step = steps[currentIndex];
|
|
162
|
-
prompts.section(`Step ${currentIndex + 1}/${steps.length}: ${step.title}`);
|
|
163
|
-
try {
|
|
164
|
-
const result = await step.run(ctx);
|
|
165
|
-
if (result.status === 'aborted') {
|
|
166
|
-
// Save current position and exit
|
|
167
|
-
await saveTutorialState(ctx.state);
|
|
168
|
-
logger.info('Tutorial paused. Run `af tutorial` to resume.');
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
// Update state with results
|
|
172
|
-
const nextStepId = currentIndex < steps.length - 1 ? steps[currentIndex + 1].id : null;
|
|
173
|
-
ctx.state = await completeStep(ctx.state, step.id, nextStepId, result.responses);
|
|
174
|
-
// Refresh context in case step modified things (like creating codev dir)
|
|
175
|
-
ctx = await buildContext(ctx.state);
|
|
176
|
-
currentIndex++;
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
// Handle Ctrl+C gracefully
|
|
180
|
-
if (error instanceof Error && error.message.includes('readline was closed')) {
|
|
181
|
-
console.log();
|
|
182
|
-
await saveTutorialState(ctx.state);
|
|
183
|
-
logger.info('Tutorial paused. Run `af tutorial` to resume.');
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
throw error;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
// Tutorial complete!
|
|
190
|
-
prompts.section('Tutorial Complete!');
|
|
191
|
-
prompts.success('Congratulations! You\'ve completed the Agent Farm tutorial.');
|
|
192
|
-
console.log();
|
|
193
|
-
prompts.content('You now know how to:');
|
|
194
|
-
prompts.bullet('Set up Codev in your project');
|
|
195
|
-
prompts.bullet('Create specifications for new features');
|
|
196
|
-
prompts.bullet('Write implementation plans');
|
|
197
|
-
prompts.bullet('Use the Architect/Builder pattern');
|
|
198
|
-
console.log();
|
|
199
|
-
prompts.content('For more information, check out:');
|
|
200
|
-
prompts.bullet('CLAUDE.md or AGENTS.md in your project');
|
|
201
|
-
prompts.bullet('codev/protocols/ for protocol documentation');
|
|
202
|
-
prompts.bullet('Run `af --help` to see all available commands');
|
|
203
|
-
}
|
|
204
|
-
//# sourceMappingURL=runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tutorial state management
|
|
3
|
-
* Persists tutorial progress to disk
|
|
4
|
-
*/
|
|
5
|
-
import type { TutorialState } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Load tutorial state from disk
|
|
8
|
-
*/
|
|
9
|
-
export declare function loadTutorialState(): Promise<TutorialState | null>;
|
|
10
|
-
/**
|
|
11
|
-
* Save tutorial state to disk
|
|
12
|
-
*/
|
|
13
|
-
export declare function saveTutorialState(state: TutorialState): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Reset tutorial state (delete the file)
|
|
16
|
-
*/
|
|
17
|
-
export declare function resetTutorialState(): Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Get or create tutorial state
|
|
20
|
-
*/
|
|
21
|
-
export declare function getOrCreateTutorialState(): Promise<TutorialState>;
|
|
22
|
-
/**
|
|
23
|
-
* Mark a step as completed and advance to the next step
|
|
24
|
-
*/
|
|
25
|
-
export declare function completeStep(state: TutorialState, stepId: string, nextStepId: string | null, responses?: Record<string, string>): Promise<TutorialState>;
|
|
26
|
-
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsBjD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAavE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC,CASvE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAexB"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tutorial state management
|
|
3
|
-
* Persists tutorial progress to disk
|
|
4
|
-
*/
|
|
5
|
-
import { readFile, writeFile, unlink } from 'node:fs/promises';
|
|
6
|
-
import { existsSync } from 'node:fs';
|
|
7
|
-
import { resolve } from 'node:path';
|
|
8
|
-
import { getConfig, ensureDirectories } from '../utils/index.js';
|
|
9
|
-
const TUTORIAL_STATE_FILE = 'tutorial.json';
|
|
10
|
-
function getTutorialStatePath() {
|
|
11
|
-
const config = getConfig();
|
|
12
|
-
return resolve(config.stateDir, TUTORIAL_STATE_FILE);
|
|
13
|
-
}
|
|
14
|
-
function getDefaultTutorialState() {
|
|
15
|
-
const config = getConfig();
|
|
16
|
-
return {
|
|
17
|
-
projectPath: config.projectRoot,
|
|
18
|
-
currentStep: 'welcome',
|
|
19
|
-
completedSteps: [],
|
|
20
|
-
userResponses: {},
|
|
21
|
-
startedAt: new Date().toISOString(),
|
|
22
|
-
lastActiveAt: new Date().toISOString(),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Load tutorial state from disk
|
|
27
|
-
*/
|
|
28
|
-
export async function loadTutorialState() {
|
|
29
|
-
const statePath = getTutorialStatePath();
|
|
30
|
-
if (!existsSync(statePath)) {
|
|
31
|
-
return null;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
const content = await readFile(statePath, 'utf-8');
|
|
35
|
-
return JSON.parse(content);
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Save tutorial state to disk
|
|
43
|
-
*/
|
|
44
|
-
export async function saveTutorialState(state) {
|
|
45
|
-
const config = getConfig();
|
|
46
|
-
await ensureDirectories(config);
|
|
47
|
-
// Update lastActiveAt on every save
|
|
48
|
-
state.lastActiveAt = new Date().toISOString();
|
|
49
|
-
const statePath = getTutorialStatePath();
|
|
50
|
-
await writeFile(statePath, JSON.stringify(state, null, 2));
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Reset tutorial state (delete the file)
|
|
54
|
-
*/
|
|
55
|
-
export async function resetTutorialState() {
|
|
56
|
-
const statePath = getTutorialStatePath();
|
|
57
|
-
if (existsSync(statePath)) {
|
|
58
|
-
await unlink(statePath);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get or create tutorial state
|
|
63
|
-
*/
|
|
64
|
-
export async function getOrCreateTutorialState() {
|
|
65
|
-
const existing = await loadTutorialState();
|
|
66
|
-
if (existing) {
|
|
67
|
-
return existing;
|
|
68
|
-
}
|
|
69
|
-
const newState = getDefaultTutorialState();
|
|
70
|
-
await saveTutorialState(newState);
|
|
71
|
-
return newState;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Mark a step as completed and advance to the next step
|
|
75
|
-
*/
|
|
76
|
-
export async function completeStep(state, stepId, nextStepId, responses) {
|
|
77
|
-
if (!state.completedSteps.includes(stepId)) {
|
|
78
|
-
state.completedSteps.push(stepId);
|
|
79
|
-
}
|
|
80
|
-
if (nextStepId) {
|
|
81
|
-
state.currentStep = nextStepId;
|
|
82
|
-
}
|
|
83
|
-
if (responses) {
|
|
84
|
-
state.userResponses = { ...state.userResponses, ...responses };
|
|
85
|
-
}
|
|
86
|
-
await saveTutorialState(state);
|
|
87
|
-
return state;
|
|
88
|
-
}
|
|
89
|
-
//# sourceMappingURL=state.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"first-spec.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/first-spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,cAAc,CAAC;AAsDlE,eAAO,MAAM,aAAa,EAAE,IA2F3B,CAAC"}
|