okstra 0.121.1 → 0.122.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 (37) hide show
  1. package/docs/architecture.md +4 -2
  2. package/docs/project-structure-overview.md +1 -1
  3. package/package.json +1 -1
  4. package/runtime/BUILD.json +2 -2
  5. package/runtime/agents/workers/claude-worker.md +1 -1
  6. package/runtime/prompts/launch.template.md +4 -4
  7. package/runtime/prompts/lead/adapters/claude-code.md +104 -0
  8. package/runtime/prompts/lead/adapters/codex.md +45 -0
  9. package/runtime/prompts/lead/adapters/external.md +46 -0
  10. package/runtime/prompts/lead/context-loader.md +5 -5
  11. package/runtime/prompts/lead/convergence.md +11 -28
  12. package/runtime/prompts/lead/okstra-lead-contract.md +42 -92
  13. package/runtime/prompts/lead/plan-body-verification.md +21 -5
  14. package/runtime/prompts/lead/report-writer.md +50 -51
  15. package/runtime/prompts/lead/team-contract.md +33 -106
  16. package/runtime/prompts/profiles/_common-contract.md +2 -2
  17. package/runtime/prompts/profiles/_implementation-executor.md +1 -1
  18. package/runtime/prompts/profiles/_implementation-verifier.md +1 -1
  19. package/runtime/prompts/profiles/implementation-planning.md +3 -3
  20. package/runtime/prompts/profiles/requirements-discovery.md +1 -1
  21. package/runtime/python/okstra_ctl/lead_runtime.py +4 -0
  22. package/runtime/python/okstra_ctl/render.py +76 -194
  23. package/runtime/python/okstra_ctl/report_views.py +22 -7
  24. package/runtime/python/okstra_ctl/team_reconcile.py +3 -1
  25. package/runtime/schemas/final-report-v1.0.schema.json +3 -0
  26. package/runtime/skills/okstra-schedule/SKILL.md +60 -18
  27. package/runtime/templates/reports/final-report.template.md +4 -4
  28. package/runtime/templates/reports/i18n/en.json +1 -1
  29. package/runtime/templates/reports/i18n/ko.json +1 -1
  30. package/runtime/validators/validate-run.py +89 -0
  31. package/runtime/validators/validate-schedule.py +7 -3
  32. package/runtime/validators/validate_session_conformance.py +58 -33
  33. package/src/cli-registry.mjs +7 -0
  34. package/src/commands/inspect/stage-map.mjs +100 -0
  35. package/src/commands/lifecycle/install.mjs +3 -0
  36. package/src/commands/lifecycle/uninstall.mjs +8 -23
  37. package/src/lib/skill-catalog.mjs +8 -0
@@ -6,30 +6,15 @@ import {
6
6
  RUNTIMES_MANIFEST_REL,
7
7
  runtimeManifestIncludesClaudeAssets,
8
8
  } from "../../lib/runtime-manifest.mjs";
9
+ import { OBSOLETE_SKILL_NAMES, USER_SKILL_NAMES } from "../../lib/skill-catalog.mjs";
9
10
 
10
- const FALLBACK_SKILL_NAMES = [
11
- "okstra",
12
- "okstra-setup",
13
- "okstra-brief-gen",
14
- "okstra-run",
15
- "okstra-memory",
16
- "okstra-inspect",
17
- "okstra-schedule",
18
- "okstra-container-build",
19
- "okstra-container",
20
- "okstra-brief",
21
- "okstra-context-loader",
22
- "okstra-team-contract",
23
- "okstra-convergence",
24
- "okstra-report-writer",
25
- // Pre-merge names — kept so uninstall on an upgraded machine still cleans
26
- // them out of ~/.claude/skills/ once the user runs `okstra uninstall`.
27
- // Safe to drop after a few releases when nobody has them installed.
28
- "okstra-status",
29
- "okstra-history",
30
- "okstra-logs",
31
- "okstra-report-finder",
32
- "okstra-time-summary",
11
+ // Manifest-less uninstall must clean out every okstra skill directory — the
12
+ // live names AND every former/renamed one. Both sets are the single source of
13
+ // truth in skill-catalog.mjs (install prunes OBSOLETE_SKILL_NAMES from each
14
+ // skill home), so deriving the fallback from their union keeps uninstall from
15
+ // drifting behind skill additions or renames.
16
+ export const FALLBACK_SKILL_NAMES = [
17
+ ...new Set([...USER_SKILL_NAMES, ...OBSOLETE_SKILL_NAMES]),
33
18
  ];
34
19
 
35
20
  const FALLBACK_AGENT_NAMES = [
@@ -33,6 +33,14 @@ export const OBSOLETE_SKILL_NAMES = Object.freeze([
33
33
  "okstra-coding-preflight",
34
34
  "okstra-container",
35
35
  "okstra-brief",
36
+ // Pre-merge status/history/logs/report/time skills, since folded into
37
+ // okstra-inspect. Absent here, upgrades left them stranded in agent skill
38
+ // homes and their pre-.okstra-migration bodies kept triggering.
39
+ "okstra-status",
40
+ "okstra-history",
41
+ "okstra-logs",
42
+ "okstra-report-finder",
43
+ "okstra-time-summary",
36
44
  ]);
37
45
 
38
46
  export function userSkillNames() {