@trespies-source/dojo-genesis-plugin 1.0.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.
Files changed (209) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/LICENSE +21 -0
  3. package/README.md +204 -0
  4. package/dist/hooks/after-tool-call/handler.d.ts +4 -0
  5. package/dist/hooks/after-tool-call/handler.d.ts.map +1 -0
  6. package/dist/hooks/after-tool-call/handler.js +37 -0
  7. package/dist/hooks/after-tool-call/handler.js.map +1 -0
  8. package/dist/hooks/agent-end/handler.d.ts +4 -0
  9. package/dist/hooks/agent-end/handler.d.ts.map +1 -0
  10. package/dist/hooks/agent-end/handler.js +16 -0
  11. package/dist/hooks/agent-end/handler.js.map +1 -0
  12. package/dist/hooks/before-agent-start/handler.d.ts +4 -0
  13. package/dist/hooks/before-agent-start/handler.d.ts.map +1 -0
  14. package/dist/hooks/before-agent-start/handler.js +81 -0
  15. package/dist/hooks/before-agent-start/handler.js.map +1 -0
  16. package/dist/index.d.ts +18 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +35 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/src/commands/archive.d.ts +4 -0
  21. package/dist/src/commands/archive.d.ts.map +1 -0
  22. package/dist/src/commands/archive.js +20 -0
  23. package/dist/src/commands/archive.js.map +1 -0
  24. package/dist/src/commands/init.d.ts +4 -0
  25. package/dist/src/commands/init.d.ts.map +1 -0
  26. package/dist/src/commands/init.js +57 -0
  27. package/dist/src/commands/init.js.map +1 -0
  28. package/dist/src/commands/list.d.ts +4 -0
  29. package/dist/src/commands/list.d.ts.map +1 -0
  30. package/dist/src/commands/list.js +9 -0
  31. package/dist/src/commands/list.js.map +1 -0
  32. package/dist/src/commands/router.d.ts +3 -0
  33. package/dist/src/commands/router.d.ts.map +1 -0
  34. package/dist/src/commands/router.js +83 -0
  35. package/dist/src/commands/router.js.map +1 -0
  36. package/dist/src/commands/skill-invoke.d.ts +4 -0
  37. package/dist/src/commands/skill-invoke.d.ts.map +1 -0
  38. package/dist/src/commands/skill-invoke.js +26 -0
  39. package/dist/src/commands/skill-invoke.js.map +1 -0
  40. package/dist/src/commands/status.d.ts +4 -0
  41. package/dist/src/commands/status.d.ts.map +1 -0
  42. package/dist/src/commands/status.js +42 -0
  43. package/dist/src/commands/status.js.map +1 -0
  44. package/dist/src/commands/switch.d.ts +4 -0
  45. package/dist/src/commands/switch.d.ts.map +1 -0
  46. package/dist/src/commands/switch.js +20 -0
  47. package/dist/src/commands/switch.js.map +1 -0
  48. package/dist/src/orchestration/tool-registry.d.ts +18 -0
  49. package/dist/src/orchestration/tool-registry.d.ts.map +1 -0
  50. package/dist/src/orchestration/tool-registry.js +153 -0
  51. package/dist/src/orchestration/tool-registry.js.map +1 -0
  52. package/dist/src/skills/catalog.d.ts +9 -0
  53. package/dist/src/skills/catalog.d.ts.map +1 -0
  54. package/dist/src/skills/catalog.js +251 -0
  55. package/dist/src/skills/catalog.js.map +1 -0
  56. package/dist/src/state/manager.d.ts +19 -0
  57. package/dist/src/state/manager.d.ts.map +1 -0
  58. package/dist/src/state/manager.js +114 -0
  59. package/dist/src/state/manager.js.map +1 -0
  60. package/dist/src/state/migrations.d.ts +3 -0
  61. package/dist/src/state/migrations.d.ts.map +1 -0
  62. package/dist/src/state/migrations.js +8 -0
  63. package/dist/src/state/migrations.js.map +1 -0
  64. package/dist/src/state/types.d.ts +62 -0
  65. package/dist/src/state/types.d.ts.map +1 -0
  66. package/dist/src/state/types.js +2 -0
  67. package/dist/src/state/types.js.map +1 -0
  68. package/dist/src/ui/chat-formatter.d.ts +11 -0
  69. package/dist/src/ui/chat-formatter.d.ts.map +1 -0
  70. package/dist/src/ui/chat-formatter.js +39 -0
  71. package/dist/src/ui/chat-formatter.js.map +1 -0
  72. package/dist/src/utils/file-ops.d.ts +6 -0
  73. package/dist/src/utils/file-ops.d.ts.map +1 -0
  74. package/dist/src/utils/file-ops.js +38 -0
  75. package/dist/src/utils/file-ops.js.map +1 -0
  76. package/dist/src/utils/markdown.d.ts +2 -0
  77. package/dist/src/utils/markdown.d.ts.map +1 -0
  78. package/dist/src/utils/markdown.js +11 -0
  79. package/dist/src/utils/markdown.js.map +1 -0
  80. package/dist/src/utils/validation.d.ts +7 -0
  81. package/dist/src/utils/validation.d.ts.map +1 -0
  82. package/dist/src/utils/validation.js +29 -0
  83. package/dist/src/utils/validation.js.map +1 -0
  84. package/dist/tests/__mocks__/openclaw-types.d.ts +54 -0
  85. package/dist/tests/__mocks__/openclaw-types.d.ts.map +1 -0
  86. package/dist/tests/__mocks__/openclaw-types.js +29 -0
  87. package/dist/tests/__mocks__/openclaw-types.js.map +1 -0
  88. package/hooks/after-tool-call/HOOK.md +7 -0
  89. package/hooks/after-tool-call/handler.ts +41 -0
  90. package/hooks/agent-end/HOOK.md +7 -0
  91. package/hooks/agent-end/handler.ts +18 -0
  92. package/hooks/before-agent-start/HOOK.md +7 -0
  93. package/hooks/before-agent-start/handler.ts +133 -0
  94. package/openclaw.plugin.json +19 -0
  95. package/package.json +61 -0
  96. package/skills/agent-teaching/SKILL.md +583 -0
  97. package/skills/agent-teaching/claw.json +12 -0
  98. package/skills/compression-ritual/SKILL.md +136 -0
  99. package/skills/compression-ritual/claw.json +12 -0
  100. package/skills/context-ingestion/SKILL.md +109 -0
  101. package/skills/context-ingestion/claw.json +12 -0
  102. package/skills/decision-propagation/SKILL.md +130 -0
  103. package/skills/decision-propagation/claw.json +12 -0
  104. package/skills/documentation-audit/SKILL.md +146 -0
  105. package/skills/documentation-audit/claw.json +12 -0
  106. package/skills/era-architecture/SKILL.md +166 -0
  107. package/skills/era-architecture/claw.json +12 -0
  108. package/skills/file-management/SKILL.md +127 -0
  109. package/skills/file-management/claw.json +12 -0
  110. package/skills/frontend-from-backend/SKILL.md +127 -0
  111. package/skills/frontend-from-backend/claw.json +12 -0
  112. package/skills/handoff-protocol/SKILL.md +168 -0
  113. package/skills/handoff-protocol/claw.json +12 -0
  114. package/skills/health-audit/SKILL.md +123 -0
  115. package/skills/health-audit/claw.json +12 -0
  116. package/skills/implementation-prompt/SKILL.md +361 -0
  117. package/skills/implementation-prompt/claw.json +12 -0
  118. package/skills/iterative-scouting/SKILL.md +106 -0
  119. package/skills/iterative-scouting/claw.json +12 -0
  120. package/skills/memory-garden/SKILL.md +470 -0
  121. package/skills/memory-garden/claw.json +12 -0
  122. package/skills/multi-surface-strategy/SKILL.md +288 -0
  123. package/skills/multi-surface-strategy/claw.json +12 -0
  124. package/skills/parallel-tracks/SKILL.md +152 -0
  125. package/skills/parallel-tracks/claw.json +12 -0
  126. package/skills/patient-learning-protocol/SKILL.md +438 -0
  127. package/skills/patient-learning-protocol/claw.json +12 -0
  128. package/skills/planning-with-files/SKILL.md +139 -0
  129. package/skills/planning-with-files/claw.json +12 -0
  130. package/skills/pre-implementation-checklist/SKILL.md +156 -0
  131. package/skills/pre-implementation-checklist/claw.json +12 -0
  132. package/skills/process-extraction/SKILL.md +148 -0
  133. package/skills/process-extraction/claw.json +12 -0
  134. package/skills/process-extraction/references/process_example_template.md +40 -0
  135. package/skills/product-positioning/SKILL.md +293 -0
  136. package/skills/product-positioning/claw.json +12 -0
  137. package/skills/project-exploration/SKILL.md +168 -0
  138. package/skills/project-exploration/claw.json +12 -0
  139. package/skills/release-specification/SKILL.md +645 -0
  140. package/skills/release-specification/claw.json +12 -0
  141. package/skills/repo-context-sync/SKILL.md +362 -0
  142. package/skills/repo-context-sync/claw.json +12 -0
  143. package/skills/repo-context-sync/references/file_hierarchy_patterns.md +186 -0
  144. package/skills/repo-context-sync/references/zenflow_repo_patterns.md +328 -0
  145. package/skills/repo-context-sync/scripts/context_mapper.py +251 -0
  146. package/skills/repo-context-sync/scripts/diff_tracker.py +187 -0
  147. package/skills/repo-context-sync/scripts/smart_clone.sh +52 -0
  148. package/skills/repo-context-sync/templates/context_summary.md +58 -0
  149. package/skills/repo-status/SKILL.md +240 -0
  150. package/skills/repo-status/claw.json +12 -0
  151. package/skills/repo-status/references/semantic-clusters.md +159 -0
  152. package/skills/repo-status/references/status-template.md +214 -0
  153. package/skills/research-modes/SKILL.md +515 -0
  154. package/skills/research-modes/claw.json +12 -0
  155. package/skills/research-synthesis/SKILL.md +110 -0
  156. package/skills/research-synthesis/claw.json +12 -0
  157. package/skills/retrospective/SKILL.md +152 -0
  158. package/skills/retrospective/claw.json +12 -0
  159. package/skills/seed-extraction/SKILL.md +419 -0
  160. package/skills/seed-extraction/claw.json +12 -0
  161. package/skills/seed-library/SKILL.md +424 -0
  162. package/skills/seed-library/claw.json +12 -0
  163. package/skills/seed-library/references/seed_catalog.md +171 -0
  164. package/skills/seed-library/scripts/apply_seed.py +129 -0
  165. package/skills/seed-library/scripts/suggest_seeds.py +183 -0
  166. package/skills/seed-library/seeds/01_three_tiered_governance.md +90 -0
  167. package/skills/seed-library/seeds/02_harness_trace.md +135 -0
  168. package/skills/seed-library/seeds/03_context_iceberg.md +120 -0
  169. package/skills/seed-library/seeds/04_agent_connect.md +106 -0
  170. package/skills/seed-library/seeds/05_go_live_bundles.md +40 -0
  171. package/skills/seed-library/seeds/06_cost_guard.md +40 -0
  172. package/skills/seed-library/seeds/07_safety_switch.md +41 -0
  173. package/skills/seed-library/seeds/08_implicit_perspective_extraction.md +41 -0
  174. package/skills/seed-library/seeds/09_mode_based_complexity_gating.md +46 -0
  175. package/skills/seed-library/seeds/10_shared_infrastructure.md +75 -0
  176. package/skills/seed-library/seeds/11_voice_before_structure.md +74 -0
  177. package/skills/seed-library/seeds/12_pointer_directories.md +81 -0
  178. package/skills/seed-library/seeds/13_granular_visibility.md +82 -0
  179. package/skills/seed-library/seeds/meta_governance_multiplies_velocity.md +43 -0
  180. package/skills/seed-to-skill-converter/SKILL.md +113 -0
  181. package/skills/seed-to-skill-converter/claw.json +12 -0
  182. package/skills/semantic-clusters/SKILL.md +246 -0
  183. package/skills/semantic-clusters/claw.json +12 -0
  184. package/skills/semantic-clusters/references/verb-catalog.md +267 -0
  185. package/skills/skill-audit-upgrade/SKILL.md +427 -0
  186. package/skills/skill-audit-upgrade/claw.json +12 -0
  187. package/skills/skill-creation/LICENSE.txt +202 -0
  188. package/skills/skill-creation/SKILL.md +252 -0
  189. package/skills/skill-creation/claw.json +12 -0
  190. package/skills/skill-creation/references/output-patterns.md +82 -0
  191. package/skills/skill-creation/references/progressive-disclosure-patterns.md +79 -0
  192. package/skills/skill-creation/references/workflows.md +28 -0
  193. package/skills/skill-creation/scripts/init_skill.py +305 -0
  194. package/skills/skill-creation/scripts/quick_validate.py +134 -0
  195. package/skills/skill-maintenance/SKILL.md +413 -0
  196. package/skills/skill-maintenance/claw.json +12 -0
  197. package/skills/spec-constellation-to-prompt-suite/SKILL.md +174 -0
  198. package/skills/spec-constellation-to-prompt-suite/claw.json +12 -0
  199. package/skills/status-template/SKILL.md +211 -0
  200. package/skills/status-template/claw.json +12 -0
  201. package/skills/status-template/references/complete-template.md +191 -0
  202. package/skills/status-writing/SKILL.md +161 -0
  203. package/skills/status-writing/claw.json +12 -0
  204. package/skills/strategic-scout/SKILL.md +163 -0
  205. package/skills/strategic-scout/claw.json +12 -0
  206. package/skills/strategic-to-tactical-workflow/SKILL.md +391 -0
  207. package/skills/strategic-to-tactical-workflow/claw.json +12 -0
  208. package/skills/workspace-navigation/SKILL.md +622 -0
  209. package/skills/workspace-navigation/claw.json +12 -0
@@ -0,0 +1,3 @@
1
+ import type { PluginAPI } from "../../tests/__mocks__/openclaw-types.js";
2
+ export declare function registerDojoCommands(api: PluginAPI): void;
3
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/commands/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwCzE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAkDzD"}
@@ -0,0 +1,83 @@
1
+ import { handleInit } from "./init.js";
2
+ import { handleSwitch } from "./switch.js";
3
+ import { handleStatus } from "./status.js";
4
+ import { handleList } from "./list.js";
5
+ import { handleArchive } from "./archive.js";
6
+ import { handleSkillInvoke } from "./skill-invoke.js";
7
+ import { SKILL_CATALOG, listSkills } from "../skills/catalog.js";
8
+ // Keep shorthand aliases for the core pipeline
9
+ const PIPELINE_SHORTCUTS = {
10
+ scout: "strategic-scout",
11
+ spec: "release-specification",
12
+ tracks: "parallel-tracks",
13
+ commission: "implementation-prompt",
14
+ retro: "retrospective",
15
+ };
16
+ const HELP_TEXT = `**Dojo Genesis** — Specification-driven development orchestration
17
+
18
+ **Project Management:**
19
+ \`/dojo init <name>\` — Create a new project
20
+ \`/dojo switch <name>\` — Switch active project
21
+ \`/dojo status\` — Show current project status
22
+ \`/dojo list\` — List all projects
23
+ \`/dojo archive <name>\` — Archive a project
24
+
25
+ **Core Pipeline:**
26
+ \`/dojo scout <tension>\` — Strategic scout
27
+ \`/dojo spec <feature>\` — Release specification
28
+ \`/dojo tracks\` — Parallel track decomposition
29
+ \`/dojo commission\` — Implementation prompts
30
+ \`/dojo retro\` — Retrospective
31
+
32
+ **Skill Catalog (40 skills):**
33
+ \`/dojo run <skill-name> [args]\` — Run any skill
34
+ \`/dojo skills [category]\` — Browse available skills
35
+
36
+ Use \`@project-name\` to target a specific project.`;
37
+ export function registerDojoCommands(api) {
38
+ api.registerCommand({
39
+ name: "dojo",
40
+ description: "Dojo Genesis: specification-driven development orchestration",
41
+ handler: (ctx) => {
42
+ const args = (ctx.args || "").trim().split(/\s+/).filter(Boolean);
43
+ const subcommand = args[0]?.toLowerCase();
44
+ switch (subcommand) {
45
+ case "init":
46
+ return handleInit(args.slice(1));
47
+ case "switch":
48
+ return handleSwitch(args.slice(1));
49
+ case "status":
50
+ return handleStatus(args.slice(1));
51
+ case "list":
52
+ return handleList(args.slice(1));
53
+ case "archive":
54
+ return handleArchive(args.slice(1));
55
+ case "scout":
56
+ case "spec":
57
+ case "tracks":
58
+ case "commission":
59
+ case "retro":
60
+ return handleSkillInvoke(PIPELINE_SHORTCUTS[subcommand], args.slice(1));
61
+ case "run": {
62
+ const skillName = args[1];
63
+ if (!skillName || !SKILL_CATALOG[skillName]) {
64
+ return {
65
+ text: `Unknown skill: \`${skillName || "(none)"}\`. Run \`/dojo skills\` for available skills.`,
66
+ };
67
+ }
68
+ return handleSkillInvoke(skillName, args.slice(2));
69
+ }
70
+ case "skills": {
71
+ const category = args[1];
72
+ return { text: listSkills(category) };
73
+ }
74
+ case "help":
75
+ case undefined:
76
+ return { text: HELP_TEXT };
77
+ default:
78
+ return { text: `Unknown command: \`${subcommand}\`. Run \`/dojo help\` for available commands.` };
79
+ }
80
+ },
81
+ });
82
+ }
83
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/commands/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function handleSkillInvoke(skillName: string, args: string[]): Promise<{
2
+ text: string;
3
+ }>;
4
+ //# sourceMappingURL=skill-invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-invoke.d.ts","sourceRoot":"","sources":["../../../src/commands/skill-invoke.ts"],"names":[],"mappings":"AAGA,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA2B3B"}
@@ -0,0 +1,26 @@
1
+ import { stateManager } from "../state/manager.js";
2
+ export async function handleSkillInvoke(skillName, args) {
3
+ const atProject = args.find((a) => a.startsWith("@"));
4
+ const remainingArgs = args.filter((a) => !a.startsWith("@"));
5
+ const projectId = atProject
6
+ ? atProject.slice(1)
7
+ : (await stateManager.getGlobalState()).activeProjectId;
8
+ if (!projectId) {
9
+ return { text: "No active project. Run `/dojo init <name>` first." };
10
+ }
11
+ const state = await stateManager.getProjectState(projectId);
12
+ if (!state) {
13
+ return { text: `Project \`${projectId}\` not found.` };
14
+ }
15
+ const pendingAction = {
16
+ skill: skillName,
17
+ args: remainingArgs.join(" "),
18
+ requestedAt: new Date().toISOString(),
19
+ };
20
+ await stateManager.updateProjectState(projectId, { pendingAction });
21
+ await stateManager.addActivity(projectId, `command:${skillName}`, `Requested ${skillName}`);
22
+ return {
23
+ text: `**Starting ${skillName}** for project \`${projectId}\` (phase: ${state.phase})\n\nThe agent will pick up this request and run the skill with your project context.`,
24
+ };
25
+ }
26
+ //# sourceMappingURL=skill-invoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-invoke.js","sourceRoot":"","sources":["../../../src/commands/skill-invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,IAAc;IAEd,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,SAAS;QACzB,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC,eAAe,CAAC;IAE1D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,mDAAmD,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,aAAa,SAAS,eAAe,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,aAAa,GAAkB;QACnC,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACtC,CAAC;IACF,MAAM,YAAY,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IACpE,MAAM,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,SAAS,EAAE,EAAE,aAAa,SAAS,EAAE,CAAC,CAAC;IAE5F,OAAO;QACL,IAAI,EAAE,cAAc,SAAS,oBAAoB,SAAS,cAAc,KAAK,CAAC,KAAK,uFAAuF;KAC3K,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function handleStatus(args: string[]): Promise<{
2
+ text: string;
3
+ }>;
4
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC5E"}
@@ -0,0 +1,42 @@
1
+ import { stateManager } from "../state/manager.js";
2
+ import { formatPhase, formatDate, formatTrackTable } from "../ui/chat-formatter.js";
3
+ export async function handleStatus(args) {
4
+ const atProject = args.find((a) => a.startsWith("@"));
5
+ const projectId = atProject?.slice(1) || undefined;
6
+ const state = await stateManager.getProjectState(projectId);
7
+ if (!state) {
8
+ return { text: "No active project. Run `/dojo init <name>` to create one." };
9
+ }
10
+ const recentActivity = state.activityLog.slice(0, 5);
11
+ const nextAction = suggestNextAction(state.phase);
12
+ let output = `**Project:** \`${state.projectId}\`\n`;
13
+ output += `**Phase:** ${formatPhase(state.phase)}\n`;
14
+ output += `**Last updated:** ${formatDate(state.lastUpdated)}\n\n`;
15
+ if (state.tracks.length > 0) {
16
+ output += `**Tracks:**\n${formatTrackTable(state.tracks)}\n\n`;
17
+ }
18
+ if (recentActivity.length > 0) {
19
+ output += `**Recent activity:**\n`;
20
+ for (const entry of recentActivity) {
21
+ output += `- ${formatDate(entry.timestamp)} — ${entry.summary}\n`;
22
+ }
23
+ output += "\n";
24
+ }
25
+ if (nextAction) {
26
+ output += `**Suggested next:** ${nextAction}`;
27
+ }
28
+ return { text: output };
29
+ }
30
+ function suggestNextAction(phase) {
31
+ const suggestions = {
32
+ initialized: "`/dojo scout <tension>` — Start with a strategic scout",
33
+ scouting: "`/dojo spec <feature>` — Write a release specification",
34
+ specifying: "`/dojo tracks` — Decompose into parallel tracks",
35
+ decomposing: "`/dojo commission` — Generate implementation prompts",
36
+ commissioning: "Hand off prompts to implementation agents",
37
+ implementing: "`/dojo retro` — Run a retrospective when done",
38
+ retrospective: "`/dojo init <name>` — Start a new project, or continue iterating",
39
+ };
40
+ return suggestions[phase] || "";
41
+ }
42
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGpF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACnD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,2DAA2D,EAAE,CAAC;IAC/E,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAElD,IAAI,MAAM,GAAG,kBAAkB,KAAK,CAAC,SAAS,MAAM,CAAC;IACrD,MAAM,IAAI,cAAc,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IACrD,MAAM,IAAI,qBAAqB,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;IAEnE,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,gBAAgB,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACjE,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,CAAC;QACpE,CAAC;QACD,MAAM,IAAI,IAAI,CAAC;IACjB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,uBAAuB,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB;IACzC,MAAM,WAAW,GAA2B;QAC1C,WAAW,EAAE,wDAAwD;QACrE,QAAQ,EAAE,wDAAwD;QAClE,UAAU,EAAE,iDAAiD;QAC7D,WAAW,EAAE,sDAAsD;QACnE,aAAa,EAAE,2CAA2C;QAC1D,YAAY,EAAE,+CAA+C;QAC7D,aAAa,EAAE,kEAAkE;KAClF,CAAC;IACF,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function handleSwitch(args: string[]): Promise<{
2
+ text: string;
3
+ }>;
4
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/commands/switch.ts"],"names":[],"mappings":"AAEA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAsB5E"}
@@ -0,0 +1,20 @@
1
+ import { stateManager } from "../state/manager.js";
2
+ export async function handleSwitch(args) {
3
+ const name = args[0];
4
+ if (!name) {
5
+ return { text: "Project name is required. Usage: `/dojo switch <name>`" };
6
+ }
7
+ const global = await stateManager.getGlobalState();
8
+ const meta = global.projects.find((p) => p.id === name);
9
+ if (!meta) {
10
+ return { text: `Project \`${name}\` not found.` };
11
+ }
12
+ if (meta.archived) {
13
+ return { text: `Project \`${name}\` is archived. Unarchive it first before switching.` };
14
+ }
15
+ await stateManager.setActiveProject(name);
16
+ return {
17
+ text: `**Switched to:** \`${name}\`\n\n**Phase:** ${meta.phase}`,
18
+ };
19
+ }
20
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/switch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,wDAAwD,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IAExD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,aAAa,IAAI,eAAe,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,aAAa,IAAI,sDAAsD,EAAE,CAAC;IAC3F,CAAC;IAED,MAAM,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,sBAAsB,IAAI,oBAAoB,IAAI,CAAC,KAAK,EAAE;KACjE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ interface ToolResult {
2
+ content: Array<{
3
+ type: string;
4
+ text: string;
5
+ }>;
6
+ }
7
+ interface ToolRegistration {
8
+ name: string;
9
+ description: string;
10
+ parameters: unknown;
11
+ execute: (id: string, params: Record<string, unknown>) => Promise<ToolResult>;
12
+ }
13
+ interface ToolRegistrar {
14
+ registerTool(tool: ToolRegistration): void;
15
+ }
16
+ export declare function registerOrchestrationTools(api: ToolRegistrar): void;
17
+ export {};
18
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../src/orchestration/tool-registry.ts"],"names":[],"mappings":"AAMA,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/E;AAED,UAAU,aAAa;IACrB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;CAC5C;AAMD,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAwLnE"}
@@ -0,0 +1,153 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ import { stateManager } from "../state/manager.js";
3
+ import { validateOutputDir, sanitizeFilename } from "../utils/validation.js";
4
+ import { writeTextFile, ensureDir } from "../utils/file-ops.js";
5
+ function jsonResult(data) {
6
+ return { content: [{ type: "text", text: JSON.stringify(data) }] };
7
+ }
8
+ export function registerOrchestrationTools(api) {
9
+ api.registerTool({
10
+ name: "dojo_get_context",
11
+ description: "Get the active Dojo Genesis project context including phase, tracks, decisions, and recent activity. Call this at the start of any skill execution to check if a project is active.",
12
+ parameters: Type.Object({
13
+ projectId: Type.Optional(Type.String({ description: "Target a specific project instead of the active one" })),
14
+ }),
15
+ async execute(_id, params) {
16
+ const state = await stateManager.getProjectState(params.projectId);
17
+ if (!state) {
18
+ return jsonResult({ active: false, message: "No active project" });
19
+ }
20
+ return jsonResult({
21
+ active: true,
22
+ projectId: state.projectId,
23
+ phase: state.phase,
24
+ tracks: state.tracks,
25
+ decisions: state.decisions.map((d) => ({ date: d.date, topic: d.topic })),
26
+ specs: state.specs,
27
+ currentTrack: state.currentTrack,
28
+ lastSkill: state.lastSkill,
29
+ recentActivity: state.activityLog.slice(0, 10),
30
+ });
31
+ },
32
+ });
33
+ api.registerTool({
34
+ name: "dojo_save_artifact",
35
+ description: "Save a skill output as a markdown file in the active project directory. Use this after completing a skill to persist the results.",
36
+ parameters: Type.Object({
37
+ filename: Type.String({
38
+ description: "Output filename (e.g., '2026-02-12_scout_build-native.md')",
39
+ }),
40
+ content: Type.String({ description: "Full markdown content to save" }),
41
+ outputDir: Type.String({
42
+ description: "Subdirectory: scouts, specs, prompts, retros, tracks, or artifacts",
43
+ }),
44
+ projectId: Type.Optional(Type.String({ description: "Target specific project" })),
45
+ }),
46
+ async execute(_id, params) {
47
+ const outputDir = params.outputDir;
48
+ if (!validateOutputDir(outputDir)) {
49
+ return jsonResult({ error: `Invalid output directory: ${outputDir}` });
50
+ }
51
+ const global = await stateManager.getGlobalState();
52
+ const id = params.projectId || global.activeProjectId;
53
+ if (!id) {
54
+ return jsonResult({ error: "No active project" });
55
+ }
56
+ const safeName = sanitizeFilename(params.filename);
57
+ const basePath = stateManager.getBasePath();
58
+ const dir = `${basePath}/projects/${id}/${outputDir}`;
59
+ const filePath = `${dir}/${safeName}`;
60
+ await ensureDir(dir);
61
+ await writeTextFile(filePath, params.content);
62
+ const state = await stateManager.getProjectState(id);
63
+ if (state) {
64
+ state.artifacts.push({
65
+ category: outputDir,
66
+ filename: safeName,
67
+ createdAt: new Date().toISOString(),
68
+ skill: state.lastSkill || "unknown",
69
+ });
70
+ await stateManager.updateProjectState(id, { artifacts: state.artifacts });
71
+ await stateManager.addActivity(id, `artifact:${outputDir}`, `Saved ${safeName} to ${outputDir}/`);
72
+ }
73
+ return jsonResult({ saved: true, path: `${outputDir}/${safeName}` });
74
+ },
75
+ });
76
+ api.registerTool({
77
+ name: "dojo_update_state",
78
+ description: "Update the active project's phase, track status, or other state. Use this after completing a skill to advance the project workflow.",
79
+ parameters: Type.Object({
80
+ phase: Type.Optional(Type.String({
81
+ description: "New project phase (initialized, scouting, specifying, decomposing, commissioning, implementing, retrospective)",
82
+ })),
83
+ lastSkill: Type.Optional(Type.String({ description: "Name of the skill that just ran" })),
84
+ currentTrack: Type.Optional(Type.String({ description: "Set the current active track" })),
85
+ addTrack: Type.Optional(Type.Object({
86
+ id: Type.String(),
87
+ name: Type.String(),
88
+ dependencies: Type.Optional(Type.Array(Type.String())),
89
+ })),
90
+ addDecision: Type.Optional(Type.Object({
91
+ topic: Type.String(),
92
+ file: Type.String(),
93
+ })),
94
+ addSpec: Type.Optional(Type.Object({
95
+ version: Type.String(),
96
+ file: Type.String(),
97
+ })),
98
+ projectId: Type.Optional(Type.String({ description: "Target specific project" })),
99
+ }),
100
+ async execute(_id, params) {
101
+ const global = await stateManager.getGlobalState();
102
+ const id = params.projectId || global.activeProjectId;
103
+ if (!id) {
104
+ return jsonResult({ error: "No active project" });
105
+ }
106
+ const state = await stateManager.getProjectState(id);
107
+ if (!state) {
108
+ return jsonResult({ error: `Project not found: ${id}` });
109
+ }
110
+ const updates = {};
111
+ if (params.phase)
112
+ updates.phase = params.phase;
113
+ if (params.lastSkill)
114
+ updates.lastSkill = params.lastSkill;
115
+ if (params.currentTrack)
116
+ updates.currentTrack = params.currentTrack;
117
+ if (params.addTrack) {
118
+ const track = params.addTrack;
119
+ state.tracks.push({
120
+ id: track.id,
121
+ name: track.name,
122
+ status: "pending",
123
+ dependencies: track.dependencies || [],
124
+ promptFile: null,
125
+ });
126
+ updates.tracks = state.tracks;
127
+ }
128
+ if (params.addDecision) {
129
+ const decision = params.addDecision;
130
+ state.decisions.push({
131
+ date: new Date().toISOString().split("T")[0],
132
+ topic: decision.topic,
133
+ file: decision.file,
134
+ });
135
+ updates.decisions = state.decisions;
136
+ }
137
+ if (params.addSpec) {
138
+ const spec = params.addSpec;
139
+ state.specs.push({
140
+ version: spec.version,
141
+ file: spec.file,
142
+ });
143
+ updates.specs = state.specs;
144
+ }
145
+ await stateManager.updateProjectState(id, updates);
146
+ if (params.lastSkill) {
147
+ await stateManager.addActivity(id, `skill:${params.lastSkill}`, `${params.lastSkill} completed`);
148
+ }
149
+ return jsonResult({ updated: true, phase: params.phase || state.phase });
150
+ },
151
+ });
152
+ }
153
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/orchestration/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface SkillEntry {
2
+ name: string;
3
+ category: string;
4
+ description: string;
5
+ }
6
+ export declare const SKILL_CATALOG: Record<string, SkillEntry>;
7
+ export declare const CATEGORIES: readonly ["pipeline", "workflow", "research", "forge", "garden", "orchestration", "system", "tools"];
8
+ export declare function listSkills(category?: string): string;
9
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../../src/skills/catalog.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAwNpD,CAAC;AAEF,eAAO,MAAM,UAAU,sGASb,CAAC;AAEX,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAiCpD"}