@enterpriseai/cli 3.19.0 → 3.19.1

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 (362) hide show
  1. package/package.json +1 -1
  2. package/resources/gofer/.gofer-version +4 -357
  3. package/resources/gofer/agents-skills/eai/SKILL.md +365 -0
  4. package/resources/gofer/agents-skills/eai-update/SKILL.md +56 -0
  5. package/resources/gofer/agents-skills/gofer-documentation/SKILL.md +93 -0
  6. package/resources/gofer/bash-scripts/create-new-feature.sh +3 -1
  7. package/resources/gofer/bash-scripts/sync-implementation-status.sh +4 -3
  8. package/resources/gofer/bash-scripts/update-agent-context.sh +7 -8
  9. package/resources/gofer/bash-scripts/validate-artifact.sh +10 -6
  10. package/resources/gofer/bash-scripts/verify-object-type-routing-workspace.sh +184 -0
  11. package/resources/gofer/claude-commands/eai-update.md +46 -0
  12. package/resources/gofer/claude-commands/eai.md +355 -0
  13. package/resources/gofer/claude-skills/eai/SKILL.md +365 -0
  14. package/resources/gofer/claude-skills/eai-update/SKILL.md +56 -0
  15. package/resources/gofer/claude-skills/gofer-documentation/SKILL.md +93 -0
  16. package/resources/gofer/commands/0_gofer_start.md +440 -99
  17. package/resources/gofer/commands/0a_problem_validation.md +187 -27
  18. package/resources/gofer/commands/10_gofer_cloud.md +183 -23
  19. package/resources/gofer/commands/1_gofer_research.md +239 -30
  20. package/resources/gofer/commands/2_gofer_specify.md +239 -35
  21. package/resources/gofer/commands/3_gofer_plan.md +259 -43
  22. package/resources/gofer/commands/4_gofer_tasks.md +401 -81
  23. package/resources/gofer/commands/5_gofer_implement.md +375 -84
  24. package/resources/gofer/commands/6_gofer_validate.md +284 -53
  25. package/resources/gofer/commands/7_gofer_save.md +187 -26
  26. package/resources/gofer/commands/7a_stakeholder_comms.md +183 -23
  27. package/resources/gofer/commands/8_gofer_branding.md +183 -23
  28. package/resources/gofer/commands/9_gofer_tests.md +212 -23
  29. package/resources/gofer/commands/gofer_bootstrap_workspace.md +121 -8
  30. package/resources/gofer/commands/gofer_check_workspace.md +123 -8
  31. package/resources/gofer/commands/gofer_constitution.md +183 -23
  32. package/resources/gofer/commands/gofer_diagnose.md +183 -23
  33. package/resources/gofer/commands/gofer_eai_first_run.md +254 -25
  34. package/resources/gofer/commands/gofer_hydrate.md +183 -23
  35. package/resources/gofer/commands/gofer_personality.md +117 -6
  36. package/resources/gofer/commands/gofer_plan.md +117 -6
  37. package/resources/gofer/commands/gofer_side.md +117 -6
  38. package/resources/gofer/commands/gofer_spec_summary.md +183 -23
  39. package/resources/gofer/commands/gofer_tdd.md +183 -23
  40. package/resources/gofer/commands/gofer_vocabulary.md +185 -25
  41. package/resources/gofer/commands/gofer_zoom_out.md +183 -23
  42. package/resources/gofer/config/typesafe-learning-review.json +16 -0
  43. package/resources/gofer/config/typesafe-semantic-review.json +9 -0
  44. package/resources/gofer/copilot-instructions/gofer-cost.instructions.md +15 -6
  45. package/resources/gofer/copilot-instructions/typescript.instructions.md +1 -1
  46. package/resources/gofer/copilot-prompts/eai-update.prompt.md +58 -0
  47. package/resources/gofer/copilot-prompts/eai.prompt.md +367 -0
  48. package/resources/gofer/gemini/commands/gofer/eai-update.md +22 -0
  49. package/resources/gofer/gemini/commands/gofer/eai-update.toml +2 -0
  50. package/resources/gofer/gemini/commands/gofer/eai.md +357 -0
  51. package/resources/gofer/gemini/commands/gofer/eai.toml +2 -0
  52. package/resources/gofer/gemini/commands/gofer/manifest.json +3 -27
  53. package/resources/gofer/gemini/extension.json +4 -4
  54. package/resources/gofer/github-agents/eai.agent.md +83 -0
  55. package/resources/gofer/github-agents/gofer-business.agent.md +73 -4
  56. package/resources/gofer/github-agents/gofer-implement.agent.md +71 -2
  57. package/resources/gofer/github-agents/gofer-plan.agent.md +72 -2
  58. package/resources/gofer/github-agents/gofer-research.agent.md +72 -2
  59. package/resources/gofer/github-agents/gofer-validate.agent.md +72 -2
  60. package/resources/gofer/github-skills/eai/SKILL.md +365 -0
  61. package/resources/gofer/github-skills/eai-update/SKILL.md +56 -0
  62. package/resources/gofer/github-skills/gofer-documentation/SKILL.md +93 -0
  63. package/resources/gofer/grok-skills/eai/SKILL.md +267 -14
  64. package/resources/gofer/grok-skills/eai-update/SKILL.md +56 -0
  65. package/resources/gofer/hook-scripts/user-prompt-submit.mjs +58 -13
  66. package/resources/gofer/instruction-templates/base/agents-base.md +8 -4
  67. package/resources/gofer/instruction-templates/gofer/gofer-claude.md +7 -5
  68. package/resources/gofer/instruction-templates/gofer/gofer-copilot.md +10 -8
  69. package/resources/gofer/memory/constitution.md +9 -7
  70. package/resources/gofer/memory/gofer-model-policy.yaml +23 -1
  71. package/resources/gofer/memory/lessons.md +0 -31
  72. package/resources/gofer/node-scripts/canonical-descriptions.mjs +1 -1
  73. package/resources/gofer/node-scripts/check-version-alignment.mjs +4 -7
  74. package/resources/gofer/node-scripts/delivery-lineage-corpus.mjs +156 -0
  75. package/resources/gofer/node-scripts/generate-commands.mjs +1073 -265
  76. package/resources/gofer/node-scripts/gofer-acceptance-check.mjs +143 -0
  77. package/resources/gofer/node-scripts/gofer-agent-catalog.mjs +271 -0
  78. package/resources/gofer/node-scripts/gofer-benchmark-executor.mjs +123 -0
  79. package/resources/gofer/node-scripts/gofer-benchmark-sign.mjs +62 -0
  80. package/resources/gofer/node-scripts/gofer-benchmark-signer.mjs +89 -0
  81. package/resources/gofer/node-scripts/gofer-benchmark.mjs +76 -0
  82. package/resources/gofer/node-scripts/gofer-blocker-control.mjs +274 -0
  83. package/resources/gofer/node-scripts/gofer-claude-adapter.mjs +154 -0
  84. package/resources/gofer/node-scripts/gofer-closed-loop-audit.mjs +19 -2
  85. package/resources/gofer/node-scripts/gofer-delivery-check.mjs +121 -0
  86. package/resources/gofer/node-scripts/gofer-encrypted-key.mjs +58 -0
  87. package/resources/gofer/node-scripts/gofer-execution-metrics.mjs +477 -0
  88. package/resources/gofer/node-scripts/gofer-execution-recovery.mjs +334 -0
  89. package/resources/gofer/node-scripts/gofer-grok-adapter.mjs +184 -0
  90. package/resources/gofer/node-scripts/gofer-heldout-corpus.mjs +73 -0
  91. package/resources/gofer/node-scripts/gofer-heldout-snapshot.mjs +286 -0
  92. package/resources/gofer/node-scripts/gofer-heldout-verifier.mjs +211 -0
  93. package/resources/gofer/node-scripts/gofer-host-capability.mjs +335 -0
  94. package/resources/gofer/node-scripts/gofer-independent-reviewer.mjs +130 -0
  95. package/resources/gofer/node-scripts/gofer-live-routing.mjs +109 -0
  96. package/resources/gofer/node-scripts/gofer-local-capability-issuer.mjs +71 -0
  97. package/resources/gofer/node-scripts/gofer-local-isolation.mjs +175 -0
  98. package/resources/gofer/node-scripts/gofer-local-settings-cleanup.mjs +388 -0
  99. package/resources/gofer/node-scripts/gofer-loop-audit.mjs +54 -3
  100. package/resources/gofer/node-scripts/gofer-native-adapter.mjs +567 -0
  101. package/resources/gofer/node-scripts/gofer-native-benchmark-dispatch.mjs +145 -0
  102. package/resources/gofer/node-scripts/gofer-native-runtime.mjs +169 -0
  103. package/resources/gofer/node-scripts/gofer-pre-edit-check.mjs +204 -0
  104. package/resources/gofer/node-scripts/gofer-priority-check.mjs +214 -0
  105. package/resources/gofer/node-scripts/gofer-response-check.mjs +56 -0
  106. package/resources/gofer/node-scripts/gofer-reviewed-learning.mjs +1232 -0
  107. package/resources/gofer/node-scripts/gofer-run-verified-task.mjs +330 -0
  108. package/resources/gofer/node-scripts/gofer-runtime-ledger.mjs +289 -0
  109. package/resources/gofer/node-scripts/gofer-semantic-drift.mjs +584 -0
  110. package/resources/gofer/node-scripts/gofer-surface-update.mjs +1178 -0
  111. package/resources/gofer/node-scripts/gofer-trust-bootstrap.mjs +77 -0
  112. package/resources/gofer/node-scripts/gofer-trusted-benchmark.mjs +102 -0
  113. package/resources/gofer/node-scripts/gofer-trusted-evaluator.mjs +274 -0
  114. package/resources/gofer/node-scripts/gofer-tty-prompt.mjs +34 -0
  115. package/resources/gofer/node-scripts/gofer-typesafe-credentials.mjs +435 -0
  116. package/resources/gofer/node-scripts/gofer-ui-preview.mjs +1212 -0
  117. package/resources/gofer/node-scripts/gofer-verified-execution.mjs +484 -0
  118. package/resources/gofer/node-scripts/gofer-verifier-key-ceremony.mjs +101 -0
  119. package/resources/gofer/node-scripts/gofer-worktree-layout.mjs +32 -0
  120. package/resources/gofer/node-scripts/object-type-routing-phase-bundle.mjs +360 -0
  121. package/resources/gofer/node-scripts/package-agent-plugin.mjs +574 -82
  122. package/resources/gofer/node-scripts/parse-stage-command.mjs +1 -1
  123. package/resources/gofer/node-scripts/render-delivery-lineage.mjs +178 -0
  124. package/resources/gofer/node-scripts/sync-extension-resources.mjs +78 -2
  125. package/resources/gofer/node-scripts/validate-object-type-identifiers.mjs +767 -0
  126. package/resources/gofer/node-scripts/validate-object-type-routing-workspace.mjs +1325 -0
  127. package/resources/gofer/node-scripts/validate-v4-resource-contract.d.mts +44 -0
  128. package/resources/gofer/node-scripts/validate-v4-resource-contract.mjs +957 -0
  129. package/resources/gofer/node-scripts/workspace-bootstrap-lib.mjs +685 -116
  130. package/resources/gofer/references/agent-catalog.json +126 -0
  131. package/resources/gofer/references/blocker-mediation.md +156 -0
  132. package/resources/gofer/references/business-updates-and-goal-checks.md +109 -0
  133. package/resources/gofer/references/delivery-lineage.md +48 -0
  134. package/resources/gofer/references/mvp-capability-validation.md +102 -0
  135. package/resources/gofer/references/platform/README.md +1 -1
  136. package/resources/gofer/references/platform/eai-app-template.md +15 -13
  137. package/resources/gofer/references/platform/eai-auth-access.md +104 -0
  138. package/resources/gofer/references/platform/eai-config-driven-ui.md +5 -5
  139. package/resources/gofer/references/platform/eai-error-catalog.yaml +77 -19
  140. package/resources/gofer/references/platform/eai-repo-contract.md +61 -23
  141. package/resources/gofer/references/platform/eai-service-patterns.md +102 -105
  142. package/resources/gofer/references/platform/eai.md +44 -8
  143. package/resources/gofer/references/platform/vertical-template.md +10 -9
  144. package/resources/gofer/references/priority-outcome-protection.md +152 -0
  145. package/resources/gofer/references/verified-agent-execution.md +179 -0
  146. package/resources/gofer/schemas/gofer-learning-trace-v1.json +70 -0
  147. package/resources/gofer/specify-commands/0_gofer_start.md +440 -99
  148. package/resources/gofer/specify-commands/0a_problem_validation.md +187 -27
  149. package/resources/gofer/specify-commands/10_gofer_cloud.md +183 -23
  150. package/resources/gofer/specify-commands/1_gofer_research.md +239 -30
  151. package/resources/gofer/specify-commands/2_gofer_specify.md +239 -35
  152. package/resources/gofer/specify-commands/3_gofer_plan.md +259 -43
  153. package/resources/gofer/specify-commands/4_gofer_tasks.md +401 -81
  154. package/resources/gofer/specify-commands/5_gofer_implement.md +375 -84
  155. package/resources/gofer/specify-commands/6_gofer_validate.md +284 -53
  156. package/resources/gofer/specify-commands/7_gofer_save.md +187 -26
  157. package/resources/gofer/specify-commands/7a_stakeholder_comms.md +183 -23
  158. package/resources/gofer/specify-commands/8_gofer_branding.md +183 -23
  159. package/resources/gofer/specify-commands/9_gofer_tests.md +212 -23
  160. package/resources/gofer/specify-commands/gofer_bootstrap_workspace.md +121 -8
  161. package/resources/gofer/specify-commands/gofer_check_workspace.md +123 -8
  162. package/resources/gofer/specify-commands/gofer_constitution.md +183 -23
  163. package/resources/gofer/specify-commands/gofer_diagnose.md +183 -23
  164. package/resources/gofer/specify-commands/gofer_eai_first_run.md +254 -25
  165. package/resources/gofer/specify-commands/gofer_hydrate.md +183 -23
  166. package/resources/gofer/specify-commands/gofer_personality.md +117 -6
  167. package/resources/gofer/specify-commands/gofer_plan.md +117 -6
  168. package/resources/gofer/specify-commands/gofer_side.md +117 -6
  169. package/resources/gofer/specify-commands/gofer_spec_summary.md +183 -23
  170. package/resources/gofer/specify-commands/gofer_tdd.md +183 -23
  171. package/resources/gofer/specify-commands/gofer_vocabulary.md +185 -25
  172. package/resources/gofer/specify-commands/gofer_zoom_out.md +183 -23
  173. package/resources/gofer/specify-config/object-type-routing.json +24 -0
  174. package/resources/gofer/specify-config/typesafe-learning-review.json +16 -0
  175. package/resources/gofer/specify-config/typesafe-semantic-review.json +9 -0
  176. package/resources/gofer/system-skills/eai/SKILL.md +365 -0
  177. package/resources/gofer/system-skills/eai-update/SKILL.md +56 -0
  178. package/resources/gofer/system-skills/gofer-documentation/SKILL.md +93 -0
  179. package/resources/gofer/templates/build-map-template.md +64 -0
  180. package/resources/gofer/templates/business-scenarios-template.json +14 -0
  181. package/resources/gofer/templates/ciso-security-summary-template.md +3 -3
  182. package/resources/gofer/templates/context-bundle-template.md +4 -3
  183. package/resources/gofer/templates/contract-pack-template.md +8 -8
  184. package/resources/gofer/templates/cto-architecture-summary-template.md +3 -3
  185. package/resources/gofer/templates/delivery-lineage-template.json +8 -0
  186. package/resources/gofer/templates/eai-preflight-template.md +109 -68
  187. package/resources/gofer/templates/goal-ledger-template.json +1 -1
  188. package/resources/gofer/templates/gofer-model-policy.yaml +28 -6
  189. package/resources/gofer/templates/loop-contract-template.json +3 -1
  190. package/resources/gofer/templates/plan-template.md +8 -7
  191. package/resources/gofer/templates/priority-plan-template.json +29 -0
  192. package/resources/gofer/templates/proposal-review-template.md +6 -3
  193. package/resources/gofer/templates/release-capability-ledger-template.md +24 -0
  194. package/resources/gofer/templates/research-template.md +7 -6
  195. package/resources/gofer/templates/spec-summary-template.md +1 -1
  196. package/resources/gofer/templates/spec-template.md +45 -6
  197. package/resources/gofer/templates/tasks-template.md +12 -3
  198. package/resources/gofer/templates/ui-preview-brief-template.md +55 -5
  199. package/resources/gofer/templates/ui-review-log-template.md +21 -3
  200. package/resources/gofer/templates/ui-show-and-tell-template.md +46 -0
  201. package/resources/gofer/templates/visuals/capability-heatmap-template.md +2 -2
  202. package/resources/gofer/templates/working-backwards-prfaq-template.md +9 -8
  203. package/resources/linked-sources.json +2 -2
  204. package/resources/gofer/agents-skills/0_gofer_start/SKILL.md +0 -1287
  205. package/resources/gofer/agents-skills/0a_problem_validation/SKILL.md +0 -429
  206. package/resources/gofer/agents-skills/10_gofer_cloud/SKILL.md +0 -635
  207. package/resources/gofer/agents-skills/1_gofer_research/SKILL.md +0 -1159
  208. package/resources/gofer/agents-skills/2_gofer_specify/SKILL.md +0 -860
  209. package/resources/gofer/agents-skills/3_gofer_plan/SKILL.md +0 -899
  210. package/resources/gofer/agents-skills/4_gofer_tasks/SKILL.md +0 -760
  211. package/resources/gofer/agents-skills/5_gofer_implement/SKILL.md +0 -944
  212. package/resources/gofer/agents-skills/6_gofer_validate/SKILL.md +0 -2302
  213. package/resources/gofer/agents-skills/7_gofer_save/SKILL.md +0 -423
  214. package/resources/gofer/agents-skills/7a_stakeholder_comms/SKILL.md +0 -508
  215. package/resources/gofer/agents-skills/8_gofer_branding/SKILL.md +0 -315
  216. package/resources/gofer/agents-skills/9_gofer_tests/SKILL.md +0 -558
  217. package/resources/gofer/agents-skills/gofer_bootstrap_workspace/SKILL.md +0 -148
  218. package/resources/gofer/agents-skills/gofer_check_workspace/SKILL.md +0 -119
  219. package/resources/gofer/agents-skills/gofer_constitution/SKILL.md +0 -612
  220. package/resources/gofer/agents-skills/gofer_diagnose/SKILL.md +0 -114
  221. package/resources/gofer/agents-skills/gofer_eai_first_run/SKILL.md +0 -397
  222. package/resources/gofer/agents-skills/gofer_hydrate/SKILL.md +0 -561
  223. package/resources/gofer/agents-skills/gofer_personality/SKILL.md +0 -44
  224. package/resources/gofer/agents-skills/gofer_plan/SKILL.md +0 -40
  225. package/resources/gofer/agents-skills/gofer_side/SKILL.md +0 -45
  226. package/resources/gofer/agents-skills/gofer_spec_summary/SKILL.md +0 -112
  227. package/resources/gofer/agents-skills/gofer_tdd/SKILL.md +0 -112
  228. package/resources/gofer/agents-skills/gofer_vocabulary/SKILL.md +0 -112
  229. package/resources/gofer/agents-skills/gofer_zoom_out/SKILL.md +0 -112
  230. package/resources/gofer/claude-commands/0_gofer_start.md +0 -1282
  231. package/resources/gofer/claude-commands/0a_problem_validation.md +0 -424
  232. package/resources/gofer/claude-commands/10_gofer_cloud.md +0 -630
  233. package/resources/gofer/claude-commands/1_gofer_research.md +0 -1154
  234. package/resources/gofer/claude-commands/2_gofer_specify.md +0 -855
  235. package/resources/gofer/claude-commands/3_gofer_plan.md +0 -894
  236. package/resources/gofer/claude-commands/4_gofer_tasks.md +0 -755
  237. package/resources/gofer/claude-commands/5_gofer_implement.md +0 -939
  238. package/resources/gofer/claude-commands/6_gofer_validate.md +0 -2297
  239. package/resources/gofer/claude-commands/7_gofer_save.md +0 -418
  240. package/resources/gofer/claude-commands/7a_stakeholder_comms.md +0 -503
  241. package/resources/gofer/claude-commands/8_gofer_branding.md +0 -310
  242. package/resources/gofer/claude-commands/9_gofer_tests.md +0 -553
  243. package/resources/gofer/claude-commands/gofer_bootstrap_workspace.md +0 -143
  244. package/resources/gofer/claude-commands/gofer_check_workspace.md +0 -114
  245. package/resources/gofer/claude-commands/gofer_constitution.md +0 -607
  246. package/resources/gofer/claude-commands/gofer_diagnose.md +0 -109
  247. package/resources/gofer/claude-commands/gofer_eai_first_run.md +0 -392
  248. package/resources/gofer/claude-commands/gofer_hydrate.md +0 -556
  249. package/resources/gofer/claude-commands/gofer_personality.md +0 -39
  250. package/resources/gofer/claude-commands/gofer_plan.md +0 -35
  251. package/resources/gofer/claude-commands/gofer_side.md +0 -40
  252. package/resources/gofer/claude-commands/gofer_spec_summary.md +0 -107
  253. package/resources/gofer/claude-commands/gofer_tdd.md +0 -107
  254. package/resources/gofer/claude-commands/gofer_vocabulary.md +0 -107
  255. package/resources/gofer/claude-commands/gofer_zoom_out.md +0 -107
  256. package/resources/gofer/claude-skills/eai-gofer/SKILL.md +0 -56
  257. package/resources/gofer/copilot-prompts/0_gofer_start.prompt.md +0 -1308
  258. package/resources/gofer/copilot-prompts/0a_problem_validation.prompt.md +0 -429
  259. package/resources/gofer/copilot-prompts/10_gofer_cloud.prompt.md +0 -644
  260. package/resources/gofer/copilot-prompts/1_gofer_research.prompt.md +0 -1177
  261. package/resources/gofer/copilot-prompts/2_gofer_specify.prompt.md +0 -878
  262. package/resources/gofer/copilot-prompts/3_gofer_plan.prompt.md +0 -917
  263. package/resources/gofer/copilot-prompts/4_gofer_tasks.prompt.md +0 -778
  264. package/resources/gofer/copilot-prompts/5_gofer_implement.prompt.md +0 -962
  265. package/resources/gofer/copilot-prompts/6_gofer_validate.prompt.md +0 -2310
  266. package/resources/gofer/copilot-prompts/7_gofer_save.prompt.md +0 -433
  267. package/resources/gofer/copilot-prompts/7a_stakeholder_comms.prompt.md +0 -516
  268. package/resources/gofer/copilot-prompts/8_gofer_branding.prompt.md +0 -323
  269. package/resources/gofer/copilot-prompts/9_gofer_tests.prompt.md +0 -566
  270. package/resources/gofer/copilot-prompts/gofer_bootstrap_workspace.prompt.md +0 -161
  271. package/resources/gofer/copilot-prompts/gofer_check_workspace.prompt.md +0 -132
  272. package/resources/gofer/copilot-prompts/gofer_constitution.prompt.md +0 -621
  273. package/resources/gofer/copilot-prompts/gofer_diagnose.prompt.md +0 -127
  274. package/resources/gofer/copilot-prompts/gofer_eai_first_run.prompt.md +0 -410
  275. package/resources/gofer/copilot-prompts/gofer_hydrate.prompt.md +0 -571
  276. package/resources/gofer/copilot-prompts/gofer_personality.prompt.md +0 -57
  277. package/resources/gofer/copilot-prompts/gofer_plan.prompt.md +0 -53
  278. package/resources/gofer/copilot-prompts/gofer_side.prompt.md +0 -58
  279. package/resources/gofer/copilot-prompts/gofer_spec_summary.prompt.md +0 -125
  280. package/resources/gofer/copilot-prompts/gofer_tdd.prompt.md +0 -125
  281. package/resources/gofer/copilot-prompts/gofer_vocabulary.prompt.md +0 -125
  282. package/resources/gofer/copilot-prompts/gofer_zoom_out.prompt.md +0 -125
  283. package/resources/gofer/gemini/commands/gofer/0_gofer_start.md +0 -1282
  284. package/resources/gofer/gemini/commands/gofer/0_gofer_start.toml +0 -2
  285. package/resources/gofer/gemini/commands/gofer/0a_problem_validation.md +0 -424
  286. package/resources/gofer/gemini/commands/gofer/0a_problem_validation.toml +0 -2
  287. package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.md +0 -630
  288. package/resources/gofer/gemini/commands/gofer/10_gofer_cloud.toml +0 -2
  289. package/resources/gofer/gemini/commands/gofer/1_gofer_research.md +0 -1154
  290. package/resources/gofer/gemini/commands/gofer/1_gofer_research.toml +0 -2
  291. package/resources/gofer/gemini/commands/gofer/2_gofer_specify.md +0 -855
  292. package/resources/gofer/gemini/commands/gofer/2_gofer_specify.toml +0 -2
  293. package/resources/gofer/gemini/commands/gofer/3_gofer_plan.md +0 -894
  294. package/resources/gofer/gemini/commands/gofer/3_gofer_plan.toml +0 -2
  295. package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.md +0 -755
  296. package/resources/gofer/gemini/commands/gofer/4_gofer_tasks.toml +0 -2
  297. package/resources/gofer/gemini/commands/gofer/5_gofer_implement.md +0 -939
  298. package/resources/gofer/gemini/commands/gofer/5_gofer_implement.toml +0 -2
  299. package/resources/gofer/gemini/commands/gofer/6_gofer_validate.md +0 -2297
  300. package/resources/gofer/gemini/commands/gofer/6_gofer_validate.toml +0 -2
  301. package/resources/gofer/gemini/commands/gofer/7_gofer_save.md +0 -418
  302. package/resources/gofer/gemini/commands/gofer/7_gofer_save.toml +0 -2
  303. package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.md +0 -503
  304. package/resources/gofer/gemini/commands/gofer/7a_stakeholder_comms.toml +0 -2
  305. package/resources/gofer/gemini/commands/gofer/8_gofer_branding.md +0 -310
  306. package/resources/gofer/gemini/commands/gofer/8_gofer_branding.toml +0 -2
  307. package/resources/gofer/gemini/commands/gofer/9_gofer_tests.md +0 -553
  308. package/resources/gofer/gemini/commands/gofer/9_gofer_tests.toml +0 -2
  309. package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.md +0 -143
  310. package/resources/gofer/gemini/commands/gofer/gofer_bootstrap_workspace.toml +0 -2
  311. package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.md +0 -114
  312. package/resources/gofer/gemini/commands/gofer/gofer_check_workspace.toml +0 -2
  313. package/resources/gofer/gemini/commands/gofer/gofer_constitution.md +0 -607
  314. package/resources/gofer/gemini/commands/gofer/gofer_constitution.toml +0 -2
  315. package/resources/gofer/gemini/commands/gofer/gofer_diagnose.md +0 -109
  316. package/resources/gofer/gemini/commands/gofer/gofer_diagnose.toml +0 -2
  317. package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.md +0 -392
  318. package/resources/gofer/gemini/commands/gofer/gofer_eai_first_run.toml +0 -2
  319. package/resources/gofer/gemini/commands/gofer/gofer_hydrate.md +0 -556
  320. package/resources/gofer/gemini/commands/gofer/gofer_hydrate.toml +0 -2
  321. package/resources/gofer/gemini/commands/gofer/gofer_personality.md +0 -39
  322. package/resources/gofer/gemini/commands/gofer/gofer_personality.toml +0 -2
  323. package/resources/gofer/gemini/commands/gofer/gofer_plan.md +0 -35
  324. package/resources/gofer/gemini/commands/gofer/gofer_plan.toml +0 -2
  325. package/resources/gofer/gemini/commands/gofer/gofer_side.md +0 -40
  326. package/resources/gofer/gemini/commands/gofer/gofer_side.toml +0 -2
  327. package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.md +0 -107
  328. package/resources/gofer/gemini/commands/gofer/gofer_spec_summary.toml +0 -2
  329. package/resources/gofer/gemini/commands/gofer/gofer_tdd.md +0 -107
  330. package/resources/gofer/gemini/commands/gofer/gofer_tdd.toml +0 -2
  331. package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.md +0 -107
  332. package/resources/gofer/gemini/commands/gofer/gofer_vocabulary.toml +0 -2
  333. package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.md +0 -107
  334. package/resources/gofer/gemini/commands/gofer/gofer_zoom_out.toml +0 -2
  335. package/resources/gofer/github-skills/eai-gofer/SKILL.md +0 -56
  336. package/resources/gofer/system-skills/0_gofer_start/SKILL.md +0 -1287
  337. package/resources/gofer/system-skills/0a_problem_validation/SKILL.md +0 -429
  338. package/resources/gofer/system-skills/10_gofer_cloud/SKILL.md +0 -635
  339. package/resources/gofer/system-skills/1_gofer_research/SKILL.md +0 -1159
  340. package/resources/gofer/system-skills/2_gofer_specify/SKILL.md +0 -860
  341. package/resources/gofer/system-skills/3_gofer_plan/SKILL.md +0 -899
  342. package/resources/gofer/system-skills/4_gofer_tasks/SKILL.md +0 -760
  343. package/resources/gofer/system-skills/5_gofer_implement/SKILL.md +0 -944
  344. package/resources/gofer/system-skills/6_gofer_validate/SKILL.md +0 -2302
  345. package/resources/gofer/system-skills/7_gofer_save/SKILL.md +0 -423
  346. package/resources/gofer/system-skills/7a_stakeholder_comms/SKILL.md +0 -508
  347. package/resources/gofer/system-skills/8_gofer_branding/SKILL.md +0 -315
  348. package/resources/gofer/system-skills/9_gofer_tests/SKILL.md +0 -558
  349. package/resources/gofer/system-skills/gofer_bootstrap_workspace/SKILL.md +0 -148
  350. package/resources/gofer/system-skills/gofer_check_workspace/SKILL.md +0 -119
  351. package/resources/gofer/system-skills/gofer_constitution/SKILL.md +0 -612
  352. package/resources/gofer/system-skills/gofer_diagnose/SKILL.md +0 -114
  353. package/resources/gofer/system-skills/gofer_eai_first_run/SKILL.md +0 -397
  354. package/resources/gofer/system-skills/gofer_hydrate/SKILL.md +0 -561
  355. package/resources/gofer/system-skills/gofer_personality/SKILL.md +0 -44
  356. package/resources/gofer/system-skills/gofer_plan/SKILL.md +0 -40
  357. package/resources/gofer/system-skills/gofer_side/SKILL.md +0 -45
  358. package/resources/gofer/system-skills/gofer_spec_summary/SKILL.md +0 -112
  359. package/resources/gofer/system-skills/gofer_tdd/SKILL.md +0 -112
  360. package/resources/gofer/system-skills/gofer_vocabulary/SKILL.md +0 -112
  361. package/resources/gofer/system-skills/gofer_zoom_out/SKILL.md +0 -112
  362. package/resources/gofer/templates/ui-approval-template.md +0 -32
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { promises as fs } from 'fs';
4
4
  import path from 'path';
5
+ import { reviewPriority } from './gofer-priority-check.mjs';
5
6
 
6
7
  const STAGE_ORDER = {
7
8
  '1_research': 1,
@@ -31,6 +32,7 @@ Options:
31
32
  --report <path> Override markdown report path
32
33
  --json Print JSON summary to stdout
33
34
  --strict Exit non-zero on drift, missing evidence, or invalid artifacts
35
+ --completion Require the current priority outcome receipt before completion
34
36
  --no-report Do not write goal-rebaseline-report.md
35
37
  `;
36
38
  }
@@ -42,6 +44,7 @@ function parseArgs(argv) {
42
44
  reportPath: '',
43
45
  json: false,
44
46
  strict: false,
47
+ completion: false,
45
48
  writeReport: true,
46
49
  };
47
50
 
@@ -66,6 +69,9 @@ function parseArgs(argv) {
66
69
  case '--strict':
67
70
  args.strict = true;
68
71
  break;
72
+ case '--completion':
73
+ args.completion = true;
74
+ break;
69
75
  case '--no-report':
70
76
  args.writeReport = false;
71
77
  break;
@@ -370,7 +376,7 @@ function getSpecArtifactStatus(content) {
370
376
  return 'ready';
371
377
  }
372
378
 
373
- async function analyzeFeature({ featureDir, workspaceRoot }) {
379
+ async function analyzeFeature({ featureDir, workspaceRoot, completion = false }) {
374
380
  const featureId = path.basename(featureDir);
375
381
  const specPath = path.join(featureDir, 'spec.md');
376
382
  const planPath = path.join(featureDir, 'plan.md');
@@ -673,7 +679,7 @@ async function analyzeFeature({ featureDir, workspaceRoot }) {
673
679
  latestMtimeMs(path.join(featureDir, 'contract-pack.md')),
674
680
  latestMtimeMs(path.join(featureDir, 'contracts')),
675
681
  latestMtimeMs(path.join(featureDir, 'ui-preview-brief.md')),
676
- latestMtimeMs(path.join(featureDir, 'ui-approval.md')),
682
+ latestMtimeMs(path.join(featureDir, 'ui-show-and-tell.md')),
677
683
  latestMtimeMs(path.join(featureDir, 'service-fit-matrix.md')),
678
684
  ]);
679
685
 
@@ -776,6 +782,16 @@ async function analyzeFeature({ featureDir, workspaceRoot }) {
776
782
  }
777
783
  }
778
784
 
785
+ if (completion || await pathExists(path.join(featureDir, 'priority-plan.json'))) {
786
+ result.priorityReview = await reviewPriority(featureDir, { finish: completion });
787
+ if (result.priorityReview.status !== 'pass') {
788
+ result.status = 'fail';
789
+ for (const message of result.priorityReview.findings) addFinding(result.blockingFindings, {
790
+ stage: '6_validate', source: 'priority-plan.json', message,
791
+ });
792
+ }
793
+ }
794
+
779
795
  if (
780
796
  result.status === 'healthy' &&
781
797
  (result.warnings.length > 0 || result.deliveryStates.incomplete.length > 0)
@@ -863,6 +879,7 @@ async function writeReport(reportPath, content) {
863
879
  async function main() {
864
880
  const args = parseArgs(process.argv.slice(2));
865
881
  const result = await analyzeFeature({
882
+ completion: args.completion,
866
883
  featureDir: args.featureDir,
867
884
  workspaceRoot: args.workspace,
868
885
  });
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env node
2
+ import { readFile, writeFile, realpath, rename } from 'node:fs/promises';
3
+ import { createHash, randomUUID } from 'node:crypto';
4
+ import path from 'node:path';
5
+ import { pathToFileURL } from 'node:url';
6
+
7
+ const REQUIRED = ['spec.md', 'plan.md', 'tasks.md', 'traceability.md'];
8
+ const OPTIONAL = ['goal-ledger.json', 'research.md', 'discovery.md', 'issues.md', 'validation-report.md', 'decisions.md', 'priority-plan.json'];
9
+ const hash = text => createHash('sha256').update(text).digest('hex');
10
+
11
+ function namesReceipt(line, receipt) {
12
+ // Consume Markdown links as a whole so their labels cannot stand in for destinations.
13
+ const references = line.matchAll(/`([^`]+)`|\[[^\[\]]*\]\(\s*(?:<([^>]+)>|([^\s)]+))(?:\s+["'][^"']*["'])?\s*\)|\[[^\[\]]*\](?:\[[^\[\]]*\])?|([^\s|`()[\]<>]+)/g);
14
+ return Array.from(references).some(match => (match[1] ?? match[2] ?? match[3] ?? match[4]) === receipt);
15
+ }
16
+
17
+ async function safeRead(root, relative) {
18
+ if (typeof relative !== 'string' || path.isAbsolute(relative) || relative.split(/[\\/]/).includes('..')) throw new Error('Unsafe artifact path');
19
+ const target = await realpath(path.resolve(root, relative));
20
+ if (!target.startsWith(root + path.sep)) throw new Error('Artifact escapes feature folder');
21
+ return readFile(target, 'utf8');
22
+ }
23
+
24
+ export async function reviewDelivery(featureDir, { capture = false, evidenceMap } = {}) {
25
+ const root = await realpath(featureDir);
26
+ const findings = [];
27
+ const artifacts = {};
28
+ const contents = {};
29
+ for (const file of [...REQUIRED, ...OPTIONAL]) {
30
+ try {
31
+ contents[file] = await safeRead(root, file);
32
+ if (!contents[file].trim()) findings.push(`EMPTY_ARTIFACT:${file}`);
33
+ artifacts[file] = hash(contents[file]);
34
+ } catch (error) {
35
+ artifacts[file] = null;
36
+ if (REQUIRED.includes(file) || error.code !== 'ENOENT') findings.push(`UNREADABLE_ARTIFACT:${file}`);
37
+ }
38
+ }
39
+ let checkpoint;
40
+ try { checkpoint = JSON.parse(await safeRead(root, 'delivery-checkpoint.json')); }
41
+ catch (error) { if (!capture || error.code !== 'ENOENT') findings.push('MISSING_OR_INVALID_CHECKPOINT'); }
42
+ const completed = [];
43
+ const taskIds = new Set();
44
+ for (const line of (contents['tasks.md'] || '').split('\n')) {
45
+ if (/^\s*-\s+\[[xX]\]/.test(line) && !/^\s*-\s+\[[xX]\]\s+(?:\*\*)?#?T\d+\b/.test(line)) findings.push('COMPLETED_TASK_WITHOUT_ID');
46
+ }
47
+ for (const match of (contents['tasks.md'] || '').matchAll(/^\s*-\s+\[([^\]])\]\s+(?:\*\*)?#?(T\d+)\b/gm)) {
48
+ if (taskIds.has(match[2])) findings.push(`DUPLICATE_TASK:${match[2]}`);
49
+ taskIds.add(match[2]);
50
+ if (/[xX]/.test(match[1])) completed.push(match[2]);
51
+ }
52
+ const mapping = evidenceMap ?? checkpoint?.completedTasks ?? {};
53
+ if (!mapping || typeof mapping !== 'object' || Array.isArray(mapping)) findings.push('INVALID_EVIDENCE_MAP');
54
+ const checked = {};
55
+ for (const task of completed) {
56
+ const item = mapping?.[task];
57
+ if (!item || !Array.isArray(item.requirements) || !item.requirements.length) {
58
+ findings.push(`MISSING_TASK_EVIDENCE:${task}`); continue;
59
+ }
60
+ const requirements = new Set((contents['spec.md'] || '').match(/\b(?:FR|NFR|SC)-\d+\b/g) || []);
61
+ if (item.requirements.some(id => !requirements.has(id))) findings.push(`UNKNOWN_REQUIREMENT:${task}`);
62
+ const trace = contents['traceability.md'] || '';
63
+ if (!trace.split('\n').some(line => new RegExp(`\\b${task}\\b`).test(line) && item.requirements.every(id => typeof id === 'string' && /^(?:FR|NFR|SC)-\d+$/.test(id) && new RegExp(`\\b${id}\\b`).test(line)))) findings.push(`MISSING_TRACEABILITY:${task}`);
64
+ if (artifacts['priority-plan.json'] && !trace.split('\n').some(line =>
65
+ new RegExp(`\\b${task}\\b`).test(line) && typeof item.evidence === 'string' && namesReceipt(line, item.evidence))) {
66
+ findings.push(`MISSING_NAMED_TASK_RECEIPT:${task}`);
67
+ }
68
+ try {
69
+ const raw = await safeRead(root, item.evidence);
70
+ const proof = JSON.parse(raw);
71
+ if (proof.result !== 'pass' || proof.specHash !== artifacts['spec.md'] ||
72
+ !Array.isArray(proof.requirements) || item.requirements.some(id => !proof.requirements.includes(id)) ||
73
+ typeof proof.check !== 'string' || !proof.check.trim()) findings.push(`INVALID_OR_STALE_EVIDENCE:${task}`);
74
+ if (!capture && item.evidenceHash !== hash(raw)) findings.push(`CHANGED_EVIDENCE:${task}`);
75
+ checked[task] = { requirements: item.requirements, evidence: item.evidence, evidenceHash: hash(raw) };
76
+ } catch { findings.push(`UNREADABLE_EVIDENCE:${task}`); }
77
+ }
78
+ if (mapping && Object.keys(mapping).some(task => !completed.includes(task))) findings.push('EVIDENCE_FOR_UNFINISHED_OR_REMOVED_TASK');
79
+ if (!capture) {
80
+ if (checkpoint?.schemaVersion !== 1) findings.push('INVALID_CHECKPOINT_VERSION');
81
+ for (const file of Object.keys(artifacts)) {
82
+ if ((checkpoint?.artifacts?.[file] ?? null) !== artifacts[file]) findings.push(`ARTIFACT_DRIFT:${file}`);
83
+ }
84
+ }
85
+ if (capture && !findings.length) {
86
+ // Refuse symlink outputs as well as symlink inputs outside the feature.
87
+ try { await safeRead(root, 'delivery-checkpoint.json'); }
88
+ catch (error) { if (error.code !== 'ENOENT') throw error; }
89
+ const temporary = path.join(root, `.delivery-checkpoint-${randomUUID()}.tmp`);
90
+ await writeFile(temporary, JSON.stringify({
91
+ schemaVersion: 1, capturedAt: new Date().toISOString(), artifacts, completedTasks: checked,
92
+ }, null, 2) + '\n', { flag: 'wx' });
93
+ await rename(temporary, path.join(root, 'delivery-checkpoint.json'));
94
+ }
95
+ return { status: findings.length ? 'fail' : 'pass', findings, completedTasks: completed.length,
96
+ artifacts, scope: 'File freshness and recorded evidence checks, not independent proof of test execution or goal alignment.' };
97
+ }
98
+
99
+ async function main() {
100
+ const args = process.argv.slice(2);
101
+ if (args.includes('--help')) {
102
+ console.log('Usage: gofer-delivery-check.mjs --feature-dir <path> [--capture --evidence-map <json-file>]'); return;
103
+ }
104
+ const options = {};
105
+ let featureDir;
106
+ for (let i = 0; i < args.length; i++) {
107
+ if (args[i] === '--capture') options.capture = true;
108
+ else if (['--feature-dir', '--evidence-map'].includes(args[i]) && args[i + 1] && !args[i + 1].startsWith('--')) {
109
+ const flag = args[i++];
110
+ if (flag === '--feature-dir') featureDir = args[i];
111
+ else options.evidenceMap = JSON.parse(await readFile(args[i], 'utf8'));
112
+ } else throw new Error('Invalid arguments');
113
+ }
114
+ if (!featureDir || (options.evidenceMap && !options.capture)) throw new Error('Invalid capture arguments');
115
+ const result = await reviewDelivery(path.resolve(featureDir), options);
116
+ console.log(JSON.stringify(result, null, 2));
117
+ if (result.status === 'fail') process.exitCode = 1;
118
+ }
119
+ if (process.argv[1] && import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href) {
120
+ main().catch(() => { console.error('Delivery check failed. Check the local feature files and arguments.'); process.exitCode = 1; });
121
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Passphrase-encrypted Ed25519 signing key. A worker sandbox can read the
3
+ * account home, so a plaintext signing key is forgeable by any worker. This
4
+ * envelope is useless without a passphrase that only a person types at a
5
+ * terminal. It is never read from the environment, a file, or an argument.
6
+ */
7
+ import { createCipheriv, createDecipheriv, createPrivateKey, randomBytes, scrypt } from 'node:crypto';
8
+ import { promisify } from 'node:util';
9
+
10
+ const derive = promisify(scrypt);
11
+ const denied = () => new Error('ENCRYPTED_KEY_REQUIRED');
12
+ const MIN_PASSPHRASE_LENGTH = 12;
13
+ const KDF = Object.freeze({ N: 2 ** 17, r: 8, p: 1, keyLength: 32, maxmem: 256 * 1024 * 1024 });
14
+ const b64 = value => Buffer.from(value).toString('base64url');
15
+ const fromB64 = (value, length) => {
16
+ if (typeof value !== 'string' || !/^[A-Za-z0-9_-]+$/.test(value)) throw denied();
17
+ const bytes = Buffer.from(value, 'base64url');
18
+ if (length !== undefined && bytes.length !== length) throw denied();
19
+ return bytes;
20
+ };
21
+
22
+ export function assertStrongPassphrase(passphrase) {
23
+ if (typeof passphrase !== 'string' || passphrase.length < MIN_PASSPHRASE_LENGTH) throw denied();
24
+ }
25
+
26
+ /** `privateKey` must be an Ed25519 KeyObject. */
27
+ export async function encryptSigningKey(privateKey, passphrase) {
28
+ assertStrongPassphrase(passphrase);
29
+ if (privateKey?.asymmetricKeyType !== 'ed25519') throw denied();
30
+ const salt = randomBytes(16);
31
+ const iv = randomBytes(12);
32
+ const key = await derive(passphrase, salt, KDF.keyLength, { N: KDF.N, r: KDF.r, p: KDF.p, maxmem: KDF.maxmem });
33
+ const cipher = createCipheriv('aes-256-gcm', key, iv);
34
+ cipher.setAAD(Buffer.from('gofer-verifier-key-v1'));
35
+ const ciphertext = Buffer.concat([cipher.update(privateKey.export({ type: 'pkcs8', format: 'der' })), cipher.final()]);
36
+ return Object.freeze({ schemaVersion: 1, kdf: { name: 'scrypt', N: KDF.N, r: KDF.r, p: KDF.p, salt: b64(salt) },
37
+ cipher: { name: 'aes-256-gcm', iv: b64(iv), tag: b64(cipher.getAuthTag()) }, ciphertext: b64(ciphertext) });
38
+ }
39
+
40
+ /** Returns an Ed25519 private KeyObject, or throws. A wrong passphrase and a
41
+ * tampered envelope are indistinguishable by design. */
42
+ export async function decryptSigningKey(envelope, passphrase) {
43
+ assertStrongPassphrase(passphrase);
44
+ if (envelope?.schemaVersion !== 1 || envelope.kdf?.name !== 'scrypt' ||
45
+ envelope.kdf.N !== KDF.N || envelope.kdf.r !== KDF.r || envelope.kdf.p !== KDF.p ||
46
+ envelope.cipher?.name !== 'aes-256-gcm') throw denied();
47
+ try {
48
+ const key = await derive(passphrase, fromB64(envelope.kdf.salt, 16), KDF.keyLength,
49
+ { N: KDF.N, r: KDF.r, p: KDF.p, maxmem: KDF.maxmem });
50
+ const decipher = createDecipheriv('aes-256-gcm', key, fromB64(envelope.cipher.iv, 12));
51
+ decipher.setAAD(Buffer.from('gofer-verifier-key-v1'));
52
+ decipher.setAuthTag(fromB64(envelope.cipher.tag, 16));
53
+ const der = Buffer.concat([decipher.update(fromB64(envelope.ciphertext)), decipher.final()]);
54
+ const privateKey = createPrivateKey({ key: der, format: 'der', type: 'pkcs8' });
55
+ if (privateKey.asymmetricKeyType !== 'ed25519') throw denied();
56
+ return privateKey;
57
+ } catch { throw denied(); }
58
+ }