@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.
- package/CHANGELOG.md +30 -0
- package/LICENSE +21 -0
- package/README.md +204 -0
- package/dist/hooks/after-tool-call/handler.d.ts +4 -0
- package/dist/hooks/after-tool-call/handler.d.ts.map +1 -0
- package/dist/hooks/after-tool-call/handler.js +37 -0
- package/dist/hooks/after-tool-call/handler.js.map +1 -0
- package/dist/hooks/agent-end/handler.d.ts +4 -0
- package/dist/hooks/agent-end/handler.d.ts.map +1 -0
- package/dist/hooks/agent-end/handler.js +16 -0
- package/dist/hooks/agent-end/handler.js.map +1 -0
- package/dist/hooks/before-agent-start/handler.d.ts +4 -0
- package/dist/hooks/before-agent-start/handler.d.ts.map +1 -0
- package/dist/hooks/before-agent-start/handler.js +81 -0
- package/dist/hooks/before-agent-start/handler.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/src/commands/archive.d.ts +4 -0
- package/dist/src/commands/archive.d.ts.map +1 -0
- package/dist/src/commands/archive.js +20 -0
- package/dist/src/commands/archive.js.map +1 -0
- package/dist/src/commands/init.d.ts +4 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +57 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/list.d.ts +4 -0
- package/dist/src/commands/list.d.ts.map +1 -0
- package/dist/src/commands/list.js +9 -0
- package/dist/src/commands/list.js.map +1 -0
- package/dist/src/commands/router.d.ts +3 -0
- package/dist/src/commands/router.d.ts.map +1 -0
- package/dist/src/commands/router.js +83 -0
- package/dist/src/commands/router.js.map +1 -0
- package/dist/src/commands/skill-invoke.d.ts +4 -0
- package/dist/src/commands/skill-invoke.d.ts.map +1 -0
- package/dist/src/commands/skill-invoke.js +26 -0
- package/dist/src/commands/skill-invoke.js.map +1 -0
- package/dist/src/commands/status.d.ts +4 -0
- package/dist/src/commands/status.d.ts.map +1 -0
- package/dist/src/commands/status.js +42 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/switch.d.ts +4 -0
- package/dist/src/commands/switch.d.ts.map +1 -0
- package/dist/src/commands/switch.js +20 -0
- package/dist/src/commands/switch.js.map +1 -0
- package/dist/src/orchestration/tool-registry.d.ts +18 -0
- package/dist/src/orchestration/tool-registry.d.ts.map +1 -0
- package/dist/src/orchestration/tool-registry.js +153 -0
- package/dist/src/orchestration/tool-registry.js.map +1 -0
- package/dist/src/skills/catalog.d.ts +9 -0
- package/dist/src/skills/catalog.d.ts.map +1 -0
- package/dist/src/skills/catalog.js +251 -0
- package/dist/src/skills/catalog.js.map +1 -0
- package/dist/src/state/manager.d.ts +19 -0
- package/dist/src/state/manager.d.ts.map +1 -0
- package/dist/src/state/manager.js +114 -0
- package/dist/src/state/manager.js.map +1 -0
- package/dist/src/state/migrations.d.ts +3 -0
- package/dist/src/state/migrations.d.ts.map +1 -0
- package/dist/src/state/migrations.js +8 -0
- package/dist/src/state/migrations.js.map +1 -0
- package/dist/src/state/types.d.ts +62 -0
- package/dist/src/state/types.d.ts.map +1 -0
- package/dist/src/state/types.js +2 -0
- package/dist/src/state/types.js.map +1 -0
- package/dist/src/ui/chat-formatter.d.ts +11 -0
- package/dist/src/ui/chat-formatter.d.ts.map +1 -0
- package/dist/src/ui/chat-formatter.js +39 -0
- package/dist/src/ui/chat-formatter.js.map +1 -0
- package/dist/src/utils/file-ops.d.ts +6 -0
- package/dist/src/utils/file-ops.d.ts.map +1 -0
- package/dist/src/utils/file-ops.js +38 -0
- package/dist/src/utils/file-ops.js.map +1 -0
- package/dist/src/utils/markdown.d.ts +2 -0
- package/dist/src/utils/markdown.d.ts.map +1 -0
- package/dist/src/utils/markdown.js +11 -0
- package/dist/src/utils/markdown.js.map +1 -0
- package/dist/src/utils/validation.d.ts +7 -0
- package/dist/src/utils/validation.d.ts.map +1 -0
- package/dist/src/utils/validation.js +29 -0
- package/dist/src/utils/validation.js.map +1 -0
- package/dist/tests/__mocks__/openclaw-types.d.ts +54 -0
- package/dist/tests/__mocks__/openclaw-types.d.ts.map +1 -0
- package/dist/tests/__mocks__/openclaw-types.js +29 -0
- package/dist/tests/__mocks__/openclaw-types.js.map +1 -0
- package/hooks/after-tool-call/HOOK.md +7 -0
- package/hooks/after-tool-call/handler.ts +41 -0
- package/hooks/agent-end/HOOK.md +7 -0
- package/hooks/agent-end/handler.ts +18 -0
- package/hooks/before-agent-start/HOOK.md +7 -0
- package/hooks/before-agent-start/handler.ts +133 -0
- package/openclaw.plugin.json +19 -0
- package/package.json +61 -0
- package/skills/agent-teaching/SKILL.md +583 -0
- package/skills/agent-teaching/claw.json +12 -0
- package/skills/compression-ritual/SKILL.md +136 -0
- package/skills/compression-ritual/claw.json +12 -0
- package/skills/context-ingestion/SKILL.md +109 -0
- package/skills/context-ingestion/claw.json +12 -0
- package/skills/decision-propagation/SKILL.md +130 -0
- package/skills/decision-propagation/claw.json +12 -0
- package/skills/documentation-audit/SKILL.md +146 -0
- package/skills/documentation-audit/claw.json +12 -0
- package/skills/era-architecture/SKILL.md +166 -0
- package/skills/era-architecture/claw.json +12 -0
- package/skills/file-management/SKILL.md +127 -0
- package/skills/file-management/claw.json +12 -0
- package/skills/frontend-from-backend/SKILL.md +127 -0
- package/skills/frontend-from-backend/claw.json +12 -0
- package/skills/handoff-protocol/SKILL.md +168 -0
- package/skills/handoff-protocol/claw.json +12 -0
- package/skills/health-audit/SKILL.md +123 -0
- package/skills/health-audit/claw.json +12 -0
- package/skills/implementation-prompt/SKILL.md +361 -0
- package/skills/implementation-prompt/claw.json +12 -0
- package/skills/iterative-scouting/SKILL.md +106 -0
- package/skills/iterative-scouting/claw.json +12 -0
- package/skills/memory-garden/SKILL.md +470 -0
- package/skills/memory-garden/claw.json +12 -0
- package/skills/multi-surface-strategy/SKILL.md +288 -0
- package/skills/multi-surface-strategy/claw.json +12 -0
- package/skills/parallel-tracks/SKILL.md +152 -0
- package/skills/parallel-tracks/claw.json +12 -0
- package/skills/patient-learning-protocol/SKILL.md +438 -0
- package/skills/patient-learning-protocol/claw.json +12 -0
- package/skills/planning-with-files/SKILL.md +139 -0
- package/skills/planning-with-files/claw.json +12 -0
- package/skills/pre-implementation-checklist/SKILL.md +156 -0
- package/skills/pre-implementation-checklist/claw.json +12 -0
- package/skills/process-extraction/SKILL.md +148 -0
- package/skills/process-extraction/claw.json +12 -0
- package/skills/process-extraction/references/process_example_template.md +40 -0
- package/skills/product-positioning/SKILL.md +293 -0
- package/skills/product-positioning/claw.json +12 -0
- package/skills/project-exploration/SKILL.md +168 -0
- package/skills/project-exploration/claw.json +12 -0
- package/skills/release-specification/SKILL.md +645 -0
- package/skills/release-specification/claw.json +12 -0
- package/skills/repo-context-sync/SKILL.md +362 -0
- package/skills/repo-context-sync/claw.json +12 -0
- package/skills/repo-context-sync/references/file_hierarchy_patterns.md +186 -0
- package/skills/repo-context-sync/references/zenflow_repo_patterns.md +328 -0
- package/skills/repo-context-sync/scripts/context_mapper.py +251 -0
- package/skills/repo-context-sync/scripts/diff_tracker.py +187 -0
- package/skills/repo-context-sync/scripts/smart_clone.sh +52 -0
- package/skills/repo-context-sync/templates/context_summary.md +58 -0
- package/skills/repo-status/SKILL.md +240 -0
- package/skills/repo-status/claw.json +12 -0
- package/skills/repo-status/references/semantic-clusters.md +159 -0
- package/skills/repo-status/references/status-template.md +214 -0
- package/skills/research-modes/SKILL.md +515 -0
- package/skills/research-modes/claw.json +12 -0
- package/skills/research-synthesis/SKILL.md +110 -0
- package/skills/research-synthesis/claw.json +12 -0
- package/skills/retrospective/SKILL.md +152 -0
- package/skills/retrospective/claw.json +12 -0
- package/skills/seed-extraction/SKILL.md +419 -0
- package/skills/seed-extraction/claw.json +12 -0
- package/skills/seed-library/SKILL.md +424 -0
- package/skills/seed-library/claw.json +12 -0
- package/skills/seed-library/references/seed_catalog.md +171 -0
- package/skills/seed-library/scripts/apply_seed.py +129 -0
- package/skills/seed-library/scripts/suggest_seeds.py +183 -0
- package/skills/seed-library/seeds/01_three_tiered_governance.md +90 -0
- package/skills/seed-library/seeds/02_harness_trace.md +135 -0
- package/skills/seed-library/seeds/03_context_iceberg.md +120 -0
- package/skills/seed-library/seeds/04_agent_connect.md +106 -0
- package/skills/seed-library/seeds/05_go_live_bundles.md +40 -0
- package/skills/seed-library/seeds/06_cost_guard.md +40 -0
- package/skills/seed-library/seeds/07_safety_switch.md +41 -0
- package/skills/seed-library/seeds/08_implicit_perspective_extraction.md +41 -0
- package/skills/seed-library/seeds/09_mode_based_complexity_gating.md +46 -0
- package/skills/seed-library/seeds/10_shared_infrastructure.md +75 -0
- package/skills/seed-library/seeds/11_voice_before_structure.md +74 -0
- package/skills/seed-library/seeds/12_pointer_directories.md +81 -0
- package/skills/seed-library/seeds/13_granular_visibility.md +82 -0
- package/skills/seed-library/seeds/meta_governance_multiplies_velocity.md +43 -0
- package/skills/seed-to-skill-converter/SKILL.md +113 -0
- package/skills/seed-to-skill-converter/claw.json +12 -0
- package/skills/semantic-clusters/SKILL.md +246 -0
- package/skills/semantic-clusters/claw.json +12 -0
- package/skills/semantic-clusters/references/verb-catalog.md +267 -0
- package/skills/skill-audit-upgrade/SKILL.md +427 -0
- package/skills/skill-audit-upgrade/claw.json +12 -0
- package/skills/skill-creation/LICENSE.txt +202 -0
- package/skills/skill-creation/SKILL.md +252 -0
- package/skills/skill-creation/claw.json +12 -0
- package/skills/skill-creation/references/output-patterns.md +82 -0
- package/skills/skill-creation/references/progressive-disclosure-patterns.md +79 -0
- package/skills/skill-creation/references/workflows.md +28 -0
- package/skills/skill-creation/scripts/init_skill.py +305 -0
- package/skills/skill-creation/scripts/quick_validate.py +134 -0
- package/skills/skill-maintenance/SKILL.md +413 -0
- package/skills/skill-maintenance/claw.json +12 -0
- package/skills/spec-constellation-to-prompt-suite/SKILL.md +174 -0
- package/skills/spec-constellation-to-prompt-suite/claw.json +12 -0
- package/skills/status-template/SKILL.md +211 -0
- package/skills/status-template/claw.json +12 -0
- package/skills/status-template/references/complete-template.md +191 -0
- package/skills/status-writing/SKILL.md +161 -0
- package/skills/status-writing/claw.json +12 -0
- package/skills/strategic-scout/SKILL.md +163 -0
- package/skills/strategic-scout/claw.json +12 -0
- package/skills/strategic-to-tactical-workflow/SKILL.md +391 -0
- package/skills/strategic-to-tactical-workflow/claw.json +12 -0
- package/skills/workspace-navigation/SKILL.md +622 -0
- package/skills/workspace-navigation/claw.json +12 -0
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|