@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
@@ -0,0 +1,360 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { createHash } from 'node:crypto';
4
+ import { execFileSync, spawnSync } from 'node:child_process';
5
+ import { constants as fsConstants } from 'node:fs';
6
+ import {
7
+ chmod,
8
+ mkdir,
9
+ mkdtemp,
10
+ open,
11
+ readFile,
12
+ readlink,
13
+ realpath,
14
+ rename,
15
+ rm,
16
+ symlink,
17
+ writeFile,
18
+ } from 'node:fs/promises';
19
+ import { tmpdir } from 'node:os';
20
+ import path from 'node:path';
21
+
22
+ const SCHEMA_VERSION = 'eai.object-type-routing.phase-bundle/v1';
23
+ const PHASES = new Set(['P0', 'A0', 'P1', 'A1']);
24
+ const CALLER_GIT_CONTEXT_KEYS = [
25
+ 'GIT_ALTERNATE_OBJECT_DIRECTORIES',
26
+ 'GIT_COMMON_DIR',
27
+ 'GIT_DIR',
28
+ 'GIT_INDEX_FILE',
29
+ 'GIT_OBJECT_DIRECTORY',
30
+ 'GIT_PREFIX',
31
+ 'GIT_WORK_TREE',
32
+ ];
33
+
34
+ function usage() {
35
+ return `Usage:
36
+ object-type-routing-phase-bundle.mjs create --repository <path> --phase <P0|A0|P1|A1> --baseline <sha> --output <file> [--exclude <path>] [--json]
37
+ object-type-routing-phase-bundle.mjs verify --bundle <file> [--reconstruct] [--json]
38
+ object-type-routing-phase-bundle.mjs verify-set --manifest <file> [--reconstruct] [--json]`;
39
+ }
40
+
41
+ function parseArgs(argv) {
42
+ const command = argv[0];
43
+ const args = { command, excludes: [], json: false, reconstruct: false };
44
+ for (let index = 1; index < argv.length; index += 1) {
45
+ const token = argv[index];
46
+ if (token === '--json') args.json = true;
47
+ else if (token === '--reconstruct') args.reconstruct = true;
48
+ else if (token === '--exclude') args.excludes.push(argv[++index] ?? '');
49
+ else if (token.startsWith('--')) args[token.slice(2)] = argv[++index] ?? '';
50
+ else throw new Error(`Unexpected argument: ${token}`);
51
+ }
52
+ return args;
53
+ }
54
+
55
+ function canonicalize(value) {
56
+ if (Array.isArray(value)) return value.map(canonicalize);
57
+ if (value && typeof value === 'object') {
58
+ return Object.fromEntries(
59
+ Object.keys(value)
60
+ .sort()
61
+ .map((key) => [key, canonicalize(value[key])])
62
+ );
63
+ }
64
+ return value;
65
+ }
66
+
67
+ function canonicalBytes(value) {
68
+ return Buffer.from(JSON.stringify(canonicalize(value)), 'utf8');
69
+ }
70
+
71
+ function sha256(value) {
72
+ return `sha256:${createHash('sha256').update(value).digest('hex')}`;
73
+ }
74
+
75
+ function without(object, key) {
76
+ return Object.fromEntries(Object.entries(object).filter(([name]) => name !== key));
77
+ }
78
+
79
+ function isolatedGitEnvironment() {
80
+ const environment = { ...process.env };
81
+ for (const key of CALLER_GIT_CONTEXT_KEYS) delete environment[key];
82
+ return environment;
83
+ }
84
+
85
+ function git(repository, args, options = {}) {
86
+ return execFileSync('git', ['-C', repository, ...args], {
87
+ encoding: options.encoding === 'buffer' ? null : (options.encoding ?? 'utf8'),
88
+ env: isolatedGitEnvironment(),
89
+ maxBuffer: 128 * 1024 * 1024,
90
+ });
91
+ }
92
+
93
+ function normalizeRepositoryPath(value) {
94
+ return value.split(path.sep).join('/');
95
+ }
96
+
97
+ function validateEntryPath(value) {
98
+ if (!value || path.isAbsolute(value) || value.split('/').includes('..')) {
99
+ throw new Error(`Unsafe bundle entry path: ${value}`);
100
+ }
101
+ }
102
+
103
+ function parseBaselineTree(repository, baselineSha) {
104
+ const output = git(repository, ['ls-tree', '-r', '-z', '--full-tree', baselineSha]);
105
+ const entries = new Map();
106
+ for (const row of output.split('\0')) {
107
+ if (!row) continue;
108
+ const match = /^(\d+)\s+(\w+)\s+([a-f0-9]+)\t([\s\S]+)$/.exec(row);
109
+ if (!match) throw new Error(`Could not parse git tree row: ${row}`);
110
+ const [, mode, kind, oid, file] = match;
111
+ if (kind === 'blob') entries.set(file, { mode, oid });
112
+ }
113
+ return entries;
114
+ }
115
+
116
+ function listWorktreePaths(repository) {
117
+ const output = git(repository, ['ls-files', '-z', '--cached', '--others', '--exclude-standard']);
118
+ return output.split('\0').filter(Boolean);
119
+ }
120
+
121
+ async function currentEntry(repository, relativePath) {
122
+ const absolutePath = path.join(repository, ...relativePath.split('/'));
123
+ try {
124
+ const handle = await open(
125
+ absolutePath,
126
+ fsConstants.O_RDONLY | fsConstants.O_NOFOLLOW
127
+ );
128
+ try {
129
+ const openedStat = await handle.stat();
130
+ if (!openedStat.isFile()) {
131
+ throw new Error(`Bundle entry changed type while being read: ${relativePath}`);
132
+ }
133
+ return {
134
+ kind: 'file',
135
+ mode: (openedStat.mode & 0o111) !== 0 ? '100755' : '100644',
136
+ content: await handle.readFile(),
137
+ };
138
+ } finally {
139
+ await handle.close();
140
+ }
141
+ } catch (error) {
142
+ if (error?.code === 'ENOENT') return null;
143
+ if (error?.code === 'ELOOP') {
144
+ return {
145
+ kind: 'symlink',
146
+ mode: '120000',
147
+ content: Buffer.from(await readlink(absolutePath), 'utf8'),
148
+ };
149
+ }
150
+ throw error;
151
+ }
152
+ }
153
+
154
+ function isExcluded(relativePath, excludes) {
155
+ return excludes.some((candidate) => {
156
+ const normalized = normalizeRepositoryPath(candidate).replace(/^\.\//, '').replace(/\/$/, '');
157
+ return normalized && (relativePath === normalized || relativePath.startsWith(`${normalized}/`));
158
+ });
159
+ }
160
+
161
+ async function buildEntries(repository, baselineSha, excludes) {
162
+ const baseline = parseBaselineTree(repository, baselineSha);
163
+ const candidates = new Set([...baseline.keys(), ...listWorktreePaths(repository)]);
164
+ const entries = [];
165
+
166
+ for (const relativePath of [...candidates].sort()) {
167
+ validateEntryPath(relativePath);
168
+ if (isExcluded(relativePath, excludes)) continue;
169
+ const previous = baseline.get(relativePath);
170
+ const current = await currentEntry(repository, relativePath);
171
+
172
+ if (!current) {
173
+ if (!previous) continue;
174
+ const entry = {
175
+ path: relativePath,
176
+ kind: 'deletion',
177
+ mode: previous.mode,
178
+ deleted: true,
179
+ contentBase64: null,
180
+ contentDigest: null,
181
+ };
182
+ entries.push({ ...entry, entryDigest: sha256(canonicalBytes(entry)) });
183
+ continue;
184
+ }
185
+
186
+ let changed = !previous || previous.mode !== current.mode;
187
+ if (previous && !changed) {
188
+ const previousContent = git(repository, ['show', `${baselineSha}:${relativePath}`], { encoding: 'buffer' });
189
+ changed = !Buffer.from(previousContent).equals(current.content);
190
+ }
191
+ if (!changed) continue;
192
+
193
+ const entry = {
194
+ path: relativePath,
195
+ kind: current.kind,
196
+ mode: current.mode,
197
+ deleted: false,
198
+ contentBase64: current.content.toString('base64'),
199
+ contentDigest: sha256(current.content),
200
+ };
201
+ entries.push({ ...entry, entryDigest: sha256(canonicalBytes(entry)) });
202
+ }
203
+ return entries;
204
+ }
205
+
206
+ async function atomicWriteJson(outputPath, value) {
207
+ await mkdir(path.dirname(outputPath), { recursive: true });
208
+ const temporaryPath = `${outputPath}.tmp-${process.pid}`;
209
+ await writeFile(temporaryPath, `${JSON.stringify(value, null, 2)}\n`, 'utf8');
210
+ await rename(temporaryPath, outputPath);
211
+ }
212
+
213
+ async function createBundle(args) {
214
+ if (!args.repository || !args.phase || !args.baseline || !args.output) {
215
+ throw new Error(`Missing create argument.\n${usage()}`);
216
+ }
217
+ if (!PHASES.has(args.phase)) throw new Error(`Unsupported phase: ${args.phase}`);
218
+ const repository = await realpath(path.resolve(args.repository));
219
+ const baselineSha = git(repository, ['rev-parse', '--verify', `${args.baseline}^{commit}`]).trim();
220
+ const entries = await buildEntries(repository, baselineSha, args.excludes);
221
+ const body = {
222
+ schemaVersion: SCHEMA_VERSION,
223
+ repository: normalizeRepositoryPath(args.repository),
224
+ phase: args.phase,
225
+ baselineSha,
226
+ semantics: 'cumulative_from_baseline',
227
+ entries,
228
+ };
229
+ const bundle = { ...body, rootDigest: sha256(canonicalBytes(body)) };
230
+ await atomicWriteJson(path.resolve(args.output), bundle);
231
+ return { valid: true, bundle: path.resolve(args.output), phase: args.phase, entryCount: entries.length, rootDigest: bundle.rootDigest };
232
+ }
233
+
234
+ function validateBundle(bundle) {
235
+ const errors = [];
236
+ if (bundle?.schemaVersion !== SCHEMA_VERSION) errors.push(`schemaVersion must be ${SCHEMA_VERSION}`);
237
+ if (!PHASES.has(bundle?.phase)) errors.push('phase must be P0, A0, P1, or A1');
238
+ if (bundle?.semantics !== 'cumulative_from_baseline') errors.push('semantics must be cumulative_from_baseline');
239
+ if (!/^[a-f0-9]{40,64}$/.test(bundle?.baselineSha ?? '')) errors.push('baselineSha must be an immutable Git object ID');
240
+ if (!Array.isArray(bundle?.entries)) errors.push('entries must be an array');
241
+ else {
242
+ const sortedPaths = bundle.entries.map((entry) => entry.path);
243
+ if (JSON.stringify(sortedPaths) !== JSON.stringify([...sortedPaths].sort())) errors.push('entries must be path-sorted');
244
+ if (new Set(sortedPaths).size !== sortedPaths.length) errors.push('entries must have unique paths');
245
+ for (const entry of bundle.entries) {
246
+ try { validateEntryPath(entry.path); } catch (error) { errors.push(error.message); }
247
+ const expectedEntryDigest = sha256(canonicalBytes(without(entry, 'entryDigest')));
248
+ if (entry.entryDigest !== expectedEntryDigest) errors.push(`entry digest mismatch: ${entry.path}`);
249
+ if (entry.deleted) {
250
+ if (entry.kind !== 'deletion' || entry.contentBase64 !== null || entry.contentDigest !== null) {
251
+ errors.push(`invalid deletion entry: ${entry.path}`);
252
+ }
253
+ } else {
254
+ const content = Buffer.from(entry.contentBase64 ?? '', 'base64');
255
+ if (entry.contentDigest !== sha256(content)) errors.push(`content digest mismatch: ${entry.path}`);
256
+ }
257
+ }
258
+ }
259
+ const expectedRootDigest = sha256(canonicalBytes(without(bundle ?? {}, 'rootDigest')));
260
+ if (bundle?.rootDigest !== expectedRootDigest) errors.push('root digest mismatch');
261
+ return errors;
262
+ }
263
+
264
+ async function reconstructBundle(bundle) {
265
+ const repository = path.resolve(bundle.repository);
266
+ const root = await mkdtemp(path.join(tmpdir(), 'object-type-routing-phase-'));
267
+ try {
268
+ const archive = spawnSync('git', ['-C', repository, 'archive', bundle.baselineSha], {
269
+ env: isolatedGitEnvironment(),
270
+ maxBuffer: 128 * 1024 * 1024,
271
+ });
272
+ if (archive.status !== 0) throw new Error(archive.stderr?.toString() || 'git archive failed');
273
+ const extracted = spawnSync('tar', ['-x', '-C', root], { input: archive.stdout, maxBuffer: 128 * 1024 * 1024 });
274
+ if (extracted.status !== 0) throw new Error(extracted.stderr?.toString() || 'tar extraction failed');
275
+
276
+ for (const entry of bundle.entries) {
277
+ validateEntryPath(entry.path);
278
+ const target = path.join(root, ...entry.path.split('/'));
279
+ if (entry.deleted) {
280
+ await rm(target, { recursive: true, force: true });
281
+ continue;
282
+ }
283
+ await mkdir(path.dirname(target), { recursive: true });
284
+ await rm(target, { recursive: true, force: true });
285
+ const content = Buffer.from(entry.contentBase64, 'base64');
286
+ if (entry.kind === 'symlink') await symlink(content.toString('utf8'), target);
287
+ else {
288
+ await writeFile(target, content);
289
+ await chmod(target, entry.mode === '100755' ? 0o755 : 0o644);
290
+ }
291
+ }
292
+
293
+ for (const entry of bundle.entries) {
294
+ const current = await currentEntry(root, entry.path);
295
+ if (entry.deleted && current !== null) throw new Error(`reconstruction retained deleted path: ${entry.path}`);
296
+ if (!entry.deleted) {
297
+ if (!current) throw new Error(`reconstruction omitted path: ${entry.path}`);
298
+ if (current.mode !== entry.mode || current.kind !== entry.kind) throw new Error(`reconstruction metadata mismatch: ${entry.path}`);
299
+ if (sha256(current.content) !== entry.contentDigest) throw new Error(`reconstruction content mismatch: ${entry.path}`);
300
+ }
301
+ }
302
+ return true;
303
+ } finally {
304
+ await rm(root, { recursive: true, force: true });
305
+ }
306
+ }
307
+
308
+ async function verifyBundleFile(bundlePath, reconstruct) {
309
+ const bundle = JSON.parse(await readFile(path.resolve(bundlePath), 'utf8'));
310
+ const errors = validateBundle(bundle);
311
+ let reconstructed = false;
312
+ if (errors.length === 0 && reconstruct) {
313
+ try {
314
+ reconstructed = await reconstructBundle(bundle);
315
+ } catch (error) {
316
+ errors.push(error instanceof Error ? error.message : String(error));
317
+ }
318
+ }
319
+ return { valid: errors.length === 0, bundle: path.resolve(bundlePath), phase: bundle.phase, rootDigest: bundle.rootDigest, reconstructed, errors };
320
+ }
321
+
322
+ async function verifySet(args) {
323
+ if (!args.manifest) throw new Error(`--manifest is required.\n${usage()}`);
324
+ const manifestPath = path.resolve(args.manifest);
325
+ const manifest = JSON.parse(await readFile(manifestPath, 'utf8'));
326
+ const members = Array.isArray(manifest.bundles)
327
+ ? manifest.bundles
328
+ : Object.values(manifest.bundles ?? {});
329
+ const results = [];
330
+ for (const member of members) {
331
+ const memberPath = typeof member === 'string' ? member : member.path;
332
+ const absolutePath = path.resolve(path.dirname(manifestPath), memberPath);
333
+ const result = await verifyBundleFile(absolutePath, args.reconstruct);
334
+ if (typeof member === 'object' && member.rootDigest && member.rootDigest !== result.rootDigest) {
335
+ result.valid = false;
336
+ result.errors.push('manifest rootDigest mismatch');
337
+ }
338
+ results.push(result);
339
+ }
340
+ return { valid: results.length > 0 && results.every((result) => result.valid), manifest: manifestPath, results };
341
+ }
342
+
343
+ async function main() {
344
+ const args = parseArgs(process.argv.slice(2));
345
+ let result;
346
+ if (args.command === 'create') result = await createBundle(args);
347
+ else if (args.command === 'verify') {
348
+ if (!args.bundle) throw new Error(`--bundle is required.\n${usage()}`);
349
+ result = await verifyBundleFile(args.bundle, args.reconstruct);
350
+ } else if (args.command === 'verify-set') result = await verifySet(args);
351
+ else throw new Error(usage());
352
+
353
+ process.stdout.write(`${JSON.stringify(result, null, args.json ? 2 : 0)}\n`);
354
+ if (!result.valid) process.exitCode = 1;
355
+ }
356
+
357
+ main().catch((error) => {
358
+ process.stdout.write(`${JSON.stringify({ valid: false, errors: [error instanceof Error ? error.message : String(error)] }, null, 2)}\n`);
359
+ process.exitCode = 1;
360
+ });