@wemuda/launchrail 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -23
- package/assets/agents-docs/domain.md +59 -0
- package/assets/agents-docs/issue-tracker-github.md +51 -0
- package/assets/agents-docs/issue-tracker-gitlab.md +52 -0
- package/assets/agents-docs/issue-tracker-linear.md +52 -0
- package/assets/agents-docs/issue-tracker-local.md +45 -0
- package/assets/ralph.permission-guard.py +90 -0
- package/assets/ralph.workflow.js +43 -8
- package/assets/skills/NOTICE.md +41 -0
- package/assets/skills/launchrail/launch/SKILL.md +67 -0
- package/assets/skills/launchrail/launch/workflow.md +77 -0
- package/assets/skills/launchrail/launch-browser-smoke/SKILL.md +49 -0
- package/assets/skills/launchrail/launch-code-review/SKILL.md +89 -0
- package/assets/skills/launchrail/launch-design-validation/SKILL.md +44 -0
- package/assets/skills/launchrail/launch-discovery/SKILL.md +33 -0
- package/assets/skills/launchrail/launch-grill/CONTEXT-FORMAT.md +62 -0
- package/assets/skills/launchrail/launch-grill/SKILL.md +48 -0
- package/assets/skills/launchrail/launch-grill/domain-modeling.md +45 -0
- package/assets/skills/launchrail/launch-implement/SKILL.md +46 -0
- package/assets/skills/launchrail/launch-project-alignment/SKILL.md +48 -0
- package/assets/skills/launchrail/launch-ralph/SKILL.md +100 -0
- package/assets/skills/launchrail/launch-ralph-implement/SKILL.md +17 -0
- package/assets/skills/launchrail/launch-research/SKILL.md +16 -0
- package/assets/skills/launchrail/launch-resolving-merge-conflicts/SKILL.md +15 -0
- package/assets/skills/launchrail/launch-spec/SKILL.md +77 -0
- package/assets/skills/launchrail/launch-tickets/SKILL.md +107 -0
- package/assets/skills/launchrail/launch-vision-creation/SKILL.md +60 -0
- package/assets/skills/launchrail/launch-wayfinder/SKILL.md +130 -0
- package/dist/commands/add.js +21 -4
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/doctor.js +42 -32
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -7
- package/dist/commands/init.js +62 -85
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/sync.js +11 -0
- package/dist/commands/sync.js.map +1 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/agentsDocs.d.ts +4 -0
- package/dist/lib/agentsDocs.js +32 -0
- package/dist/lib/agentsDocs.js.map +1 -0
- package/dist/lib/claudeSettings.d.ts +74 -11
- package/dist/lib/claudeSettings.js +185 -17
- package/dist/lib/claudeSettings.js.map +1 -1
- package/dist/lib/detect.d.ts +0 -2
- package/dist/lib/detect.js +0 -1
- package/dist/lib/detect.js.map +1 -1
- package/dist/lib/manifest.d.ts +14 -1
- package/dist/lib/manifest.js +18 -1
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/migrations.js +202 -1
- package/dist/lib/migrations.js.map +1 -1
- package/dist/lib/project.js +9 -1
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/ralph.d.ts +16 -5
- package/dist/lib/ralph.js +32 -9
- package/dist/lib/ralph.js.map +1 -1
- package/dist/lib/seeds.js +4 -2
- package/dist/lib/seeds.js.map +1 -1
- package/dist/lib/skills.d.ts +12 -0
- package/dist/lib/skills.js +57 -0
- package/dist/lib/skills.js.map +1 -0
- package/dist/lib/upstream.d.ts +6 -6
- package/dist/lib/upstream.js +1 -1
- package/dist/lib/upstream.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/claudeCli.d.ts +0 -51
- package/dist/lib/claudeCli.js +0 -71
- package/dist/lib/claudeCli.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAoBpD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC;QACE,EAAE,EAAE,4BAA4B;QAChC,WAAW,EAAE,2CAA2C,oBAAoB,aAAa;QACzF,IAAI,CAAC,GAAG;YACN,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,oBAAoB,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzD,KAAK,EAAE,GAAG,EAAE;oBACV,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC5C,CAAC;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,2EAA2E;QAC3E,qEAAqE;QACrE,EAAE,EAAE,gCAAgC;QACpC,WAAW,EAAE,oDAAoD,oBAAoB,aAAa;QAClG,IAAI,CAAC,GAAG;YACN,uEAAuE;YACvE,4EAA4E;YAC5E,yEAAyE;YACzE,iEAAiE;YACjE,0EAA0E;YAC1E,qEAAqE;YACrE,yEAAyE;YACzE,4EAA4E;YAC5E,+BAA+B;YAC/B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAElC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,oBAAoB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrD,KAAK,EAAE,GAAG,EAAE;oBACV,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACrC,CAAC;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,sCAAsC;QAC1C,WAAW,EAAE,mEAAmE,oBAAoB,aAAa;QACjH,IAAI,CAAC,GAAG;YACN,wEAAwE;YACxE,2EAA2E;YAC3E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,oBAAoB,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACzD,KAAK,EAAE,GAAG,EAAE;oBACV,sBAAsB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC5C,CAAC;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,gCAAgC;QACpC,WAAW,EAAE,qHAAqH,oBAAoB,aAAa;QACnK,IAAI,CAAC,GAAG;YACN,2EAA2E;YAC3E,2EAA2E;YAC3E,yEAAyE;YACzE,sEAAsE;YACtE,MAAM,OAAO,GAAG,2BAA2B,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;gBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YACtE,OAAO;gBACL,OAAO,EAAE,CAAC,GAAG,oBAAoB,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;gBACxD,KAAK,EAAE,GAAG,EAAE;oBACV,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACjD,CAAC;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,0CAA0C;QAC9C,WAAW,EACT,4JAA4J;QAC9J,IAAI,CAAC,GAAG;YACN,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACrC,mEAAmE;YACnE,qEAAqE;YACrE,sEAAsE;YACtE,6CAA6C;YAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAElC,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,cAAc,CAAC,OAAO;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,4BAA4B,CAAC,CAAC;YAC3F,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,mBAAmB,kEAAkE,CAAC,CAAC;gBACzG,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACtC,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,GAAG,EAAE;oBACV,IAAI,cAAc,CAAC,OAAO;wBAAE,aAAa,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBACvF,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5C,CAAC;aACF,CAAC;QACJ,CAAC;KACF;IACD;QACE,EAAE,EAAE,sCAAsC;QAC1C,WAAW,EACT,2JAA2J;QAC7J,IAAI,CAAC,GAAG;YACN,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,qEAAqE;YACrE,wEAAwE;YACxE,yEAAyE;YACzE,oEAAoE;YACpE,wEAAwE;YACxE,kEAAkE;YAClE,WAAW;YACX,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAClE,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,kBAAkB,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBACvG,SAAS;gBACX,CAAC;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACnC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC5E,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,aAAa,SAAS,CAAC,MAAM,wBAAwB,CAAC,CAAC;YAC3F,CAAC;YACD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,sDAAsD,CAAC,CAAC;YACjF,CAAC;YAED,uEAAuE;YACvE,4CAA4C;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACtD,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5F,MAAM,UAAU,GAAG,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAC;YAC5G,IAAI,UAAU,EAAE,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,gDAAgD,CAAC,CAAC;YACrF,CAAC;YAED,qEAAqE;YACrE,qEAAqE;YACrE,uEAAuE;YACvE,6BAA6B;YAC7B,MAAM,cAAc,GAAG,UAAU,EAAE,QAAQ,KAAK,aAAa,CAAC;YAC9D,MAAM,eAAe,GAAG,cAAc;gBACpC,CAAC,CAAC,2BAA2B,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,CAAC;gBACzE,CAAC,CAAC,IAAI,CAAC;YACT,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,GAAG,oBAAoB,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,WAAW,GACf,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9F,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,uDAAuD,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACzD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;YAClE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACrD,OAAO;gBACL,OAAO;gBACP,KAAK,EAAE,GAAG,EAAE;oBACV,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;wBAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;wBACnC,IAAI,UAAU,CAAC,GAAG,CAAC;4BAAE,UAAU,CAAC,GAAG,CAAC,CAAC;wBACrC,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACrC,CAAC;oBACD,KAAK,MAAM,OAAO,IAAI,YAAY;wBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvE,kEAAkE;oBAClE,mEAAmE;oBACnE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACzF,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B,CAAC;oBACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/E,IAAI,CAAC;gCACH,SAAS,CAAC,CAAC,CAAC,CAAC;4BACf,CAAC;4BAAC,MAAM,CAAC;gCACP,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM,aAAa,GAAG,WAAW,IAAI,UAAU,CAAC;oBAChD,IAAI,aAAa,IAAI,CAAC,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;wBACnE,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC5D,CAAC;oBACD,IAAI,eAAe,KAAK,IAAI;wBAAE,4BAA4B,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;oBACrF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;wBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9E,CAAC;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,WAAwB,UAAU;IAC7D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,WAAwB,UAAU;IACtF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClG,CAAC;AAQD,+EAA+E;AAC/E,MAAM,UAAU,qBAAqB,CAAC,GAAqB,EAAE,WAAwB,UAAU;IAC7F,OAAO,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnE,EAAE,EAAE,SAAS,CAAC,EAAE;QAChB,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;KACrC,CAAC,CAAC,CAAC;AACN,CAAC;AAYD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAqB,EAAE,WAAwB,UAAU;IAC9F,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,KAAK,MAAM,SAAS,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClE,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,SAAS,CAAC,EAAE;gBAChB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,MAAM,EAAE,QAAQ;gBAChB,OAAO;gBACP,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB;YAC5D,OAAO;YACP,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/lib/project.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
+
import { agentsDocsFiles } from "./agentsDocs.js";
|
|
3
4
|
import { BROWSER_TESTING_MODULE, browserTestingFiles } from "./browser-testing.js";
|
|
4
5
|
import { detectRepo } from "./detect.js";
|
|
5
6
|
import { LOCKFILE_FILENAME, readLockfile } from "./lockfile.js";
|
|
6
7
|
import { MANIFEST_FILENAME, parseManifest } from "./manifest.js";
|
|
7
8
|
import { RALPH_MODULE, ralphFiles } from "./ralph.js";
|
|
8
9
|
import { seedFiles } from "./seeds.js";
|
|
10
|
+
import { skillFiles } from "./skills.js";
|
|
9
11
|
import { VERSION } from "../version.js";
|
|
10
12
|
/** Load manifest and lockfile — the precondition for status, diff, sync, and eject. */
|
|
11
13
|
export function loadProject(cwd) {
|
|
@@ -32,7 +34,13 @@ export function moduleSpecs(state) {
|
|
|
32
34
|
manifest: state.manifest,
|
|
33
35
|
launchrailVersion: VERSION,
|
|
34
36
|
};
|
|
35
|
-
|
|
37
|
+
// Skills ship as managed files on every project (ADR-0019/0020) — not
|
|
38
|
+
// module-gated, so they ship regardless of which modules are enabled. The
|
|
39
|
+
// docs/agents configuration seeds with core, derived from the manifest.
|
|
40
|
+
const modules = {
|
|
41
|
+
core: [...seedFiles(ctx), ...agentsDocsFiles(state.manifest)],
|
|
42
|
+
skills: skillFiles(),
|
|
43
|
+
};
|
|
36
44
|
if (state.manifest.modules[BROWSER_TESTING_MODULE]) {
|
|
37
45
|
modules[BROWSER_TESTING_MODULE] = browserTestingFiles({ manifest: state.manifest, detection: state.detection });
|
|
38
46
|
}
|
package/dist/lib/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAsB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/ralph.d.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import type { FileSpec } from "./writer.js";
|
|
2
2
|
export declare const RALPH_MODULE = "ralph";
|
|
3
3
|
export declare const RALPH_WORKFLOW_PATH = ".claude/workflows/ralph.js";
|
|
4
|
+
export declare const RALPH_GUARD_HOOK_PATH = ".claude/hooks/ralph-permission-guard.py";
|
|
4
5
|
export declare function ralphWorkflowContent(): string;
|
|
6
|
+
export declare function ralphGuardHookContent(): string;
|
|
5
7
|
/**
|
|
6
|
-
* Everything `launchrail add ralph` writes.
|
|
7
|
-
*
|
|
8
|
-
* never by editing the file), so Launchrail may replace
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Everything `launchrail add ralph` writes. Both files are managed-class — they
|
|
9
|
+
* contain toolchain logic only (workflow policy is overridden per run via args,
|
|
10
|
+
* never by editing the file), so Launchrail may replace them as the loop improves.
|
|
11
|
+
*
|
|
12
|
+
* - the workflow script (`.claude/workflows/ralph.js`), read by the Workflow tool;
|
|
13
|
+
* - the unattended-launch guard hook, which warns when the loop is launched in an
|
|
14
|
+
* interactive permission mode (ADR-0021). The hook file rides here; its
|
|
15
|
+
* registration in the project-owned `.claude/settings.json` is an additive merge
|
|
16
|
+
* handled separately (see `planRalphGuardHook`), exactly like the plugin
|
|
17
|
+
* declaration, because that file is shared and never lockfile-tracked.
|
|
18
|
+
*
|
|
19
|
+
* The skills half of Ralph (`launch-ralph`, `launch-ralph-implement`,
|
|
20
|
+
* `launch-resolving-merge-conflicts`) is vendored as managed skill files
|
|
21
|
+
* (ADR-0019) and flows through `skillFiles()`, not here.
|
|
11
22
|
*/
|
|
12
23
|
export declare function ralphFiles(): FileSpec[];
|
package/dist/lib/ralph.js
CHANGED
|
@@ -1,21 +1,44 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
export const RALPH_MODULE = "ralph";
|
|
3
3
|
export const RALPH_WORKFLOW_PATH = ".claude/workflows/ralph.js";
|
|
4
|
-
|
|
5
|
-
//
|
|
6
|
-
// (
|
|
4
|
+
export const RALPH_GUARD_HOOK_PATH = ".claude/hooks/ralph-permission-guard.py";
|
|
5
|
+
// The workflow script and the permission-guard hook ship as real assets
|
|
6
|
+
// (readable, reviewable, syntax-checkable) rather than inline template strings.
|
|
7
|
+
// They resolve from both src/ (tests) and dist/ (published CLI) because the two
|
|
8
|
+
// are sibling directories of assets/.
|
|
7
9
|
const WORKFLOW_ASSET_URL = new URL("../../assets/ralph.workflow.js", import.meta.url);
|
|
10
|
+
const GUARD_HOOK_ASSET_URL = new URL("../../assets/ralph.permission-guard.py", import.meta.url);
|
|
8
11
|
export function ralphWorkflowContent() {
|
|
9
12
|
return readFileSync(WORKFLOW_ASSET_URL, "utf8");
|
|
10
13
|
}
|
|
14
|
+
export function ralphGuardHookContent() {
|
|
15
|
+
return readFileSync(GUARD_HOOK_ASSET_URL, "utf8");
|
|
16
|
+
}
|
|
11
17
|
/**
|
|
12
|
-
* Everything `launchrail add ralph` writes.
|
|
13
|
-
*
|
|
14
|
-
* never by editing the file), so Launchrail may replace
|
|
15
|
-
*
|
|
16
|
-
*
|
|
18
|
+
* Everything `launchrail add ralph` writes. Both files are managed-class — they
|
|
19
|
+
* contain toolchain logic only (workflow policy is overridden per run via args,
|
|
20
|
+
* never by editing the file), so Launchrail may replace them as the loop improves.
|
|
21
|
+
*
|
|
22
|
+
* - the workflow script (`.claude/workflows/ralph.js`), read by the Workflow tool;
|
|
23
|
+
* - the unattended-launch guard hook, which warns when the loop is launched in an
|
|
24
|
+
* interactive permission mode (ADR-0021). The hook file rides here; its
|
|
25
|
+
* registration in the project-owned `.claude/settings.json` is an additive merge
|
|
26
|
+
* handled separately (see `planRalphGuardHook`), exactly like the plugin
|
|
27
|
+
* declaration, because that file is shared and never lockfile-tracked.
|
|
28
|
+
*
|
|
29
|
+
* The skills half of Ralph (`launch-ralph`, `launch-ralph-implement`,
|
|
30
|
+
* `launch-resolving-merge-conflicts`) is vendored as managed skill files
|
|
31
|
+
* (ADR-0019) and flows through `skillFiles()`, not here.
|
|
17
32
|
*/
|
|
18
33
|
export function ralphFiles() {
|
|
19
|
-
return [
|
|
34
|
+
return [
|
|
35
|
+
{ relPath: RALPH_WORKFLOW_PATH, content: ralphWorkflowContent(), ownership: "managed" },
|
|
36
|
+
{
|
|
37
|
+
relPath: RALPH_GUARD_HOOK_PATH,
|
|
38
|
+
content: ralphGuardHookContent(),
|
|
39
|
+
ownership: "managed",
|
|
40
|
+
executable: true,
|
|
41
|
+
},
|
|
42
|
+
];
|
|
20
43
|
}
|
|
21
44
|
//# sourceMappingURL=ralph.js.map
|
package/dist/lib/ralph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/lib/ralph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ralph.js","sourceRoot":"","sources":["../../src/lib/ralph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,4BAA4B,CAAC;AAChE,MAAM,CAAC,MAAM,qBAAqB,GAAG,yCAAyC,CAAC;AAE/E,wEAAwE;AACxE,gFAAgF;AAChF,gFAAgF;AAChF,sCAAsC;AACtC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhG,MAAM,UAAU,oBAAoB;IAClC,OAAO,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,oBAAoB,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;QACvF;YACE,OAAO,EAAE,qBAAqB;YAC9B,OAAO,EAAE,qBAAqB,EAAE;YAChC,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;AACJ,CAAC"}
|
package/dist/lib/seeds.js
CHANGED
|
@@ -69,19 +69,21 @@ function claudeGeneratedMd(ctx) {
|
|
|
69
69
|
? `
|
|
70
70
|
## The Ralph loop
|
|
71
71
|
|
|
72
|
-
-
|
|
72
|
+
- Implementation starts with \`/launch-implement\` — all ready tickets, or one with \`/launch-implement <ticket>\`. It drives the Ralph loop: the \`launch-ralph\` skill (watchable, checkpointed) or the \`ralph\` workflow in \`.claude/workflows/ralph.js\` (wide or long runs). Only ever started explicitly by the user.
|
|
73
73
|
- Tickets enter the loop with the \`ready-for-agent\` label and explicit \`Blocked by: #n\` edges; parked tickets carry \`needs-info\` plus their failure history.
|
|
74
74
|
- A ticket counts done only when its PR is merged on the remote, the issue is closed, and \`npx @wemuda/launchrail verify\` is green — agent reports are claims, not evidence.
|
|
75
75
|
- \`.claude/workflows/ralph.js\` is managed by Launchrail: override policy per run via workflow args (e.g. \`{ width: 1 }\`), never by editing the file.
|
|
76
|
+
- Launch unattended runs in a non-prompting permission mode (bypass/autonomous); a guard hook (\`.claude/hooks/ralph-permission-guard.py\`) warns if the \`ralph\` workflow starts in an interactive mode, since one benign prompt can stall a walk-away run and lose the container mid-ticket.
|
|
76
77
|
`
|
|
77
78
|
: "";
|
|
78
79
|
return `<!-- Managed by Launchrail v${ctx.launchrailVersion}. Do not edit: \`launchrail sync\` may replace this file. Project-specific instructions belong in CLAUDE.md. -->
|
|
79
80
|
|
|
80
81
|
# Launchrail workflow instructions
|
|
81
82
|
|
|
82
|
-
- This project follows the Launchrail development loop: vision → design exploration → grill/research → ADRs → spec → visual validation → tickets → bounded implementation → verification → release.
|
|
83
|
+
- This project follows the Launchrail development loop: vision → design exploration → discovery → grill/research → ADRs → spec → visual validation → tickets → bounded implementation → verification → release.
|
|
83
84
|
- Product knowledge (vision, specs, ADRs, designs, tickets, code) is project-owned; Launchrail never overwrites it.
|
|
84
85
|
- \`.launchrail.yml\` is project configuration; \`.launchrail-lock.json\` is machine-managed — do not hand-edit it.
|
|
86
|
+
- The issue-tracker workflow (labels included) and the domain-doc consumer rules live in \`docs/agents/\` — seeded from \`.launchrail.yml\`, yours to edit.
|
|
85
87
|
- Before claiming completion, run the project's deterministic checks. Completion requires evidence, not assertion.
|
|
86
88
|
- Run \`npx @wemuda/launchrail doctor\` when repository state seems inconsistent.
|
|
87
89
|
${browserTesting}${ralph}`;
|
package/dist/lib/seeds.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;;;;;EAgBtD,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../src/lib/seeds.ts"],"names":[],"mappings":"AASA,SAAS,QAAQ,CAAC,GAAgB;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW;QAC3C,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO;QACtD,CAAC,CAAC,qEAAqE,CAAC;IAE1E,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB;QAC5D,CAAC,CAAC;;;;CAIL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,gCAAgC,GAAG,CAAC,WAAW;;;;;;;;;;;;;;;;EAgBtD,QAAQ;EACR,aAAa;;;;;;;;;;;6BAWc,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE;;;;CAIxG,CAAC;AACF,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACzC,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC5D,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;QACtC,CAAC,CAAC;;;;;;;;CAQL;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO,+BAA+B,GAAG,CAAC,iBAAiB;;;;;;;;;;EAU3D,cAAc,GAAG,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;;;;;;;;;;;;;;;;;;;CAmBR,CAAC;AACF,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,mBAAmB,CAAC,GAAgB;IAClD,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/G,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,GAAgB;IACxC,OAAO;QACL,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QAClE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE;QACrF,mBAAmB,CAAC,GAAG,CAAC;KACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FileSpec } from "./writer.js";
|
|
2
|
+
/** Where the workflow skills land in a consuming repo. */
|
|
3
|
+
export declare const SKILLS_DEST_PREFIX = ".claude/skills";
|
|
4
|
+
/** Attribution file for the skills with upstream-derived text (MIT). */
|
|
5
|
+
export declare const SKILLS_NOTICE_PATH = ".claude/skills/NOTICE.md";
|
|
6
|
+
/**
|
|
7
|
+
* Every skill file Launchrail writes into a consuming repo, as managed specs,
|
|
8
|
+
* plus the attribution NOTICE beside them.
|
|
9
|
+
*/
|
|
10
|
+
export declare function skillFiles(): FileSpec[];
|
|
11
|
+
/** Directory names of every skill written into the consumer, for reporting/verification. */
|
|
12
|
+
export declare function skillNames(): string[];
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, relative, sep } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
/**
|
|
5
|
+
* The workflow skills are Launchrail's own complete, `launch-`-prefixed set
|
|
6
|
+
* (ADR-0020), shipped as real files under assets/skills/launchrail/ and written
|
|
7
|
+
* into consuming repos as managed files (ADR-0019) — no plugin and no vendored
|
|
8
|
+
* upstream snapshot. Skills that absorb text from Matt Pocock's MIT-licensed
|
|
9
|
+
* skills carry a derivation note; the license travels as the NOTICE file. The
|
|
10
|
+
* asset dir resolves from both src/ (tests) and dist/ (published CLI); both are
|
|
11
|
+
* siblings of assets/, exactly like the Ralph workflow asset (see ralph.ts).
|
|
12
|
+
*/
|
|
13
|
+
const SKILLS_ASSET_DIR = fileURLToPath(new URL("../../assets/skills/", import.meta.url));
|
|
14
|
+
/** Where the workflow skills land in a consuming repo. */
|
|
15
|
+
export const SKILLS_DEST_PREFIX = ".claude/skills";
|
|
16
|
+
/** Attribution file for the skills with upstream-derived text (MIT). */
|
|
17
|
+
export const SKILLS_NOTICE_PATH = `${SKILLS_DEST_PREFIX}/NOTICE.md`;
|
|
18
|
+
/** The single skill source root — Launchrail's own set. */
|
|
19
|
+
const SOURCE_ROOT = "launchrail";
|
|
20
|
+
/** Recursively list every file under `dir` (absolute paths). */
|
|
21
|
+
function walk(dir) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
24
|
+
const full = join(dir, entry.name);
|
|
25
|
+
if (entry.isDirectory())
|
|
26
|
+
out.push(...walk(full));
|
|
27
|
+
else if (entry.isFile())
|
|
28
|
+
out.push(full);
|
|
29
|
+
}
|
|
30
|
+
return out;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Every skill file Launchrail writes into a consuming repo, as managed specs,
|
|
34
|
+
* plus the attribution NOTICE beside them.
|
|
35
|
+
*/
|
|
36
|
+
export function skillFiles() {
|
|
37
|
+
const rootDir = join(SKILLS_ASSET_DIR, SOURCE_ROOT);
|
|
38
|
+
const specs = walk(rootDir).map((file) => ({
|
|
39
|
+
relPath: `${SKILLS_DEST_PREFIX}/${relative(rootDir, file).split(sep).join("/")}`,
|
|
40
|
+
content: readFileSync(file, "utf8"),
|
|
41
|
+
ownership: "managed",
|
|
42
|
+
}));
|
|
43
|
+
specs.push({
|
|
44
|
+
relPath: SKILLS_NOTICE_PATH,
|
|
45
|
+
content: readFileSync(join(SKILLS_ASSET_DIR, "NOTICE.md"), "utf8"),
|
|
46
|
+
ownership: "managed",
|
|
47
|
+
});
|
|
48
|
+
return specs;
|
|
49
|
+
}
|
|
50
|
+
/** Directory names of every skill written into the consumer, for reporting/verification. */
|
|
51
|
+
export function skillNames() {
|
|
52
|
+
return readdirSync(join(SKILLS_ASSET_DIR, SOURCE_ROOT), { withFileTypes: true })
|
|
53
|
+
.filter((e) => e.isDirectory())
|
|
54
|
+
.map((e) => e.name)
|
|
55
|
+
.sort();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;;;GAQG;AACH,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,kBAAkB,YAAY,CAAC;AAEpE,2DAA2D;AAC3D,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC,gEAAgE;AAChE,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC5C,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,KAAK,GAAe,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,GAAG,kBAAkB,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAChF,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;QACnC,SAAS,EAAE,SAAkB;KAC9B,CAAC,CAAC,CAAC;IACJ,KAAK,CAAC,IAAI,CAAC;QACT,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAClE,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,UAAU;IACxB,OAAO,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SAC7E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/lib/upstream.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Upstream dependency compatibility tracking (ADR-0006).
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
2
|
+
* Upstream dependency compatibility tracking (ADR-0006). Names of the external
|
|
3
|
+
* tools Launchrail drives (Claude Design, Playwright) — and of its own skills
|
|
4
|
+
* and commands — end up in project-owned docs. When a rename ships, an entry
|
|
5
|
+
* lands in this registry and `status` reports stale references. Project-owned
|
|
6
|
+
* files are never edited automatically: advisories only, the fix stays a human
|
|
7
|
+
* (or agent) decision.
|
|
8
8
|
*/
|
|
9
9
|
export interface UpstreamRename {
|
|
10
10
|
/** The retired name, matched as a whole word (hyphens count as word characters). */
|
package/dist/lib/upstream.js
CHANGED
|
@@ -2,7 +2,7 @@ import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
/** Known upstream renames. Empty until an upstream rename actually ships. */
|
|
4
4
|
export const UPSTREAM_RENAMES = [];
|
|
5
|
-
/** Project-owned docs worth scanning: agent contracts and
|
|
5
|
+
/** Project-owned docs worth scanning: agent contracts and the seeded docs/agents configuration. */
|
|
6
6
|
const SCAN_FILES = ["AGENTS.md", "CLAUDE.md", "docs/workflow.md"];
|
|
7
7
|
const SCAN_DIRS = ["docs/agents"];
|
|
8
8
|
function scanTargets(root) {
|
package/dist/lib/upstream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../src/lib/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAqB,EAAE,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"upstream.js","sourceRoot":"","sources":["../../src/lib/upstream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAqB,EAAE,CAAC;AAErD,mGAAmG;AACnG,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;AAClE,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC,CAAC;AAOlC,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAAE,SAAS;QAC3C,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAY,EACZ,UAA4B,gBAAgB;IAE5C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,UAAU,GAAuB,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChF,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
package/package.json
CHANGED
package/dist/lib/claudeCli.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The committed declaration (ADR-0003) makes Claude Code offer the plugin when
|
|
3
|
-
* a folder is trusted for the *first* time — a folder trusted before init ran
|
|
4
|
-
* is never prompted, and upstream dependencies are not declared at all. When
|
|
5
|
-
* the `claude` CLI is on PATH, init closes both gaps by installing every
|
|
6
|
-
* plugin the workflow depends on directly (ADR-0011). These helpers wrap that
|
|
7
|
-
* CLI.
|
|
8
|
-
*
|
|
9
|
-
* Setting LAUNCHRAIL_SKIP_CLAUDE_CLI=1 disables all `claude` invocations —
|
|
10
|
-
* the environment twin of `init --skip-plugin-install`, and the seam the test
|
|
11
|
-
* suite uses so running tests never touches a developer's real Claude setup.
|
|
12
|
-
*/
|
|
13
|
-
export interface WorkflowPlugin {
|
|
14
|
-
/** Marketplace source accepted by `claude plugin marketplace add` (owner/repo). */
|
|
15
|
-
marketplace: string;
|
|
16
|
-
/** Qualified id accepted by `claude plugin install` (plugin@marketplace). */
|
|
17
|
-
id: string;
|
|
18
|
-
/** Human-readable label for init/doctor messages. */
|
|
19
|
-
label: string;
|
|
20
|
-
}
|
|
21
|
-
/** Every Claude Code plugin the Launchrail workflow depends on — one roster with the committed declaration. */
|
|
22
|
-
export declare const WORKFLOW_PLUGINS: WorkflowPlugin[];
|
|
23
|
-
/** The `claude` CLI version, or null when it is unavailable or opted out. */
|
|
24
|
-
export declare function detectClaudeCli(cwd: string): string | null;
|
|
25
|
-
export type PluginInstallOutcome = {
|
|
26
|
-
state: "installed";
|
|
27
|
-
detail: "installed" | "updated" | "up-to-date";
|
|
28
|
-
versions?: string;
|
|
29
|
-
} | {
|
|
30
|
-
state: "failed";
|
|
31
|
-
step: "marketplace-add" | "plugin-install" | "plugin-update";
|
|
32
|
-
output: string;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Register one plugin's marketplace and install it at user scope — or, when
|
|
36
|
-
* it is already installed, update it to the marketplace's latest version, so
|
|
37
|
-
* re-running init always leaves the roster current. Every underlying command
|
|
38
|
-
* is idempotent (exit 0 on "already on disk" / "already installed" / "already
|
|
39
|
-
* at the latest version"). Assumes the CLI is present — callers detect first.
|
|
40
|
-
*/
|
|
41
|
-
export declare function installPlugin(cwd: string, plugin: WorkflowPlugin): PluginInstallOutcome;
|
|
42
|
-
export type InstalledPluginIds = {
|
|
43
|
-
state: "ok";
|
|
44
|
-
ids: string[];
|
|
45
|
-
} | {
|
|
46
|
-
state: "no-cli";
|
|
47
|
-
} | {
|
|
48
|
-
state: "unreadable";
|
|
49
|
-
};
|
|
50
|
-
/** The ids of installed plugins, via `claude plugin list --json`. */
|
|
51
|
-
export declare function listInstalledPluginIds(cwd: string): InstalledPluginIds;
|
package/dist/lib/claudeCli.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
-
import { PLUGIN_DECLARATIONS } from "./claudeSettings.js";
|
|
3
|
-
/** Every Claude Code plugin the Launchrail workflow depends on — one roster with the committed declaration. */
|
|
4
|
-
export const WORKFLOW_PLUGINS = PLUGIN_DECLARATIONS.map((d) => ({
|
|
5
|
-
marketplace: d.repo,
|
|
6
|
-
id: d.pluginKey,
|
|
7
|
-
label: d.label,
|
|
8
|
-
}));
|
|
9
|
-
const RUN_OPTS = { encoding: "utf8", timeout: 180_000 };
|
|
10
|
-
function runClaude(cwd, args) {
|
|
11
|
-
const res = spawnSync("claude", args, { ...RUN_OPTS, cwd });
|
|
12
|
-
return {
|
|
13
|
-
ok: res.status === 0,
|
|
14
|
-
notFound: res.error !== undefined,
|
|
15
|
-
stdout: (res.stdout ?? "").trim(),
|
|
16
|
-
stderr: (res.stderr ?? "").trim(),
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/** The `claude` CLI version, or null when it is unavailable or opted out. */
|
|
20
|
-
export function detectClaudeCli(cwd) {
|
|
21
|
-
if (process.env.LAUNCHRAIL_SKIP_CLAUDE_CLI)
|
|
22
|
-
return null;
|
|
23
|
-
const res = runClaude(cwd, ["--version"]);
|
|
24
|
-
if (!res.ok || res.notFound)
|
|
25
|
-
return null;
|
|
26
|
-
return res.stdout || "unknown version";
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Register one plugin's marketplace and install it at user scope — or, when
|
|
30
|
-
* it is already installed, update it to the marketplace's latest version, so
|
|
31
|
-
* re-running init always leaves the roster current. Every underlying command
|
|
32
|
-
* is idempotent (exit 0 on "already on disk" / "already installed" / "already
|
|
33
|
-
* at the latest version"). Assumes the CLI is present — callers detect first.
|
|
34
|
-
*/
|
|
35
|
-
export function installPlugin(cwd, plugin) {
|
|
36
|
-
const add = runClaude(cwd, ["plugin", "marketplace", "add", plugin.marketplace]);
|
|
37
|
-
if (!add.ok) {
|
|
38
|
-
return { state: "failed", step: "marketplace-add", output: add.stderr || add.stdout };
|
|
39
|
-
}
|
|
40
|
-
const install = runClaude(cwd, ["plugin", "install", plugin.id]);
|
|
41
|
-
if (!install.ok) {
|
|
42
|
-
return { state: "failed", step: "plugin-install", output: install.stderr || install.stdout };
|
|
43
|
-
}
|
|
44
|
-
if (!install.stdout.includes("already installed")) {
|
|
45
|
-
return { state: "installed", detail: "installed" };
|
|
46
|
-
}
|
|
47
|
-
const update = runClaude(cwd, ["plugin", "update", plugin.id]);
|
|
48
|
-
if (!update.ok) {
|
|
49
|
-
return { state: "failed", step: "plugin-update", output: update.stderr || update.stdout };
|
|
50
|
-
}
|
|
51
|
-
const moved = update.stdout.match(/updated from (\S+) to (\S+)/);
|
|
52
|
-
return moved
|
|
53
|
-
? { state: "installed", detail: "updated", versions: `${moved[1]} → ${moved[2]}` }
|
|
54
|
-
: { state: "installed", detail: "up-to-date" };
|
|
55
|
-
}
|
|
56
|
-
/** The ids of installed plugins, via `claude plugin list --json`. */
|
|
57
|
-
export function listInstalledPluginIds(cwd) {
|
|
58
|
-
if (detectClaudeCli(cwd) === null)
|
|
59
|
-
return { state: "no-cli" };
|
|
60
|
-
const res = runClaude(cwd, ["plugin", "list", "--json"]);
|
|
61
|
-
if (!res.ok)
|
|
62
|
-
return { state: "unreadable" };
|
|
63
|
-
try {
|
|
64
|
-
const plugins = JSON.parse(res.stdout);
|
|
65
|
-
return { state: "ok", ids: plugins.map((p) => p.id).filter((id) => typeof id === "string") };
|
|
66
|
-
}
|
|
67
|
-
catch {
|
|
68
|
-
return { state: "unreadable" };
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=claudeCli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claudeCli.js","sourceRoot":"","sources":["../../src/lib/claudeCli.ts"],"names":[],"mappings":"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"}
|