@entelligentsia/forgecli 0.20.3 → 1.0.2

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 (303) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +31 -33
  3. package/dist/CHANGELOG-forge-plugin.md +118 -0
  4. package/dist/CHANGELOG-pi.md +24 -1
  5. package/dist/bin/forgecli.d.ts +2 -0
  6. package/dist/bin/forgecli.js +6 -0
  7. package/dist/bin/forgecli.js.map +1 -0
  8. package/dist/extensions/forgecli/add-pipeline.js +1 -1
  9. package/dist/extensions/forgecli/add-pipeline.js.map +1 -1
  10. package/dist/extensions/forgecli/add-task.js +1 -1
  11. package/dist/extensions/forgecli/add-task.js.map +1 -1
  12. package/dist/extensions/forgecli/approve.js +17 -2
  13. package/dist/extensions/forgecli/approve.js.map +1 -1
  14. package/dist/extensions/forgecli/calibrate.js +11 -8
  15. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  16. package/dist/extensions/forgecli/collate.js +1 -1
  17. package/dist/extensions/forgecli/collate.js.map +1 -1
  18. package/dist/extensions/forgecli/commit.js +17 -2
  19. package/dist/extensions/forgecli/commit.js.map +1 -1
  20. package/dist/extensions/forgecli/enhance.js +1 -1
  21. package/dist/extensions/forgecli/enhance.js.map +1 -1
  22. package/dist/extensions/forgecli/fix-bug.d.ts +1 -1
  23. package/dist/extensions/forgecli/fix-bug.js +14 -6
  24. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  25. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +6 -8
  26. package/dist/extensions/forgecli/forge-artifact-tool.js +80 -195
  27. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
  28. package/dist/extensions/forgecli/forge-commands.js +57 -18
  29. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  30. package/dist/extensions/forgecli/forge-init/phase4-register.js +6 -7
  31. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  32. package/dist/extensions/forgecli/forge-init/run-phases.d.ts +4 -0
  33. package/dist/extensions/forgecli/forge-init/run-phases.js +304 -0
  34. package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -0
  35. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +14 -5
  36. package/dist/extensions/forgecli/forge-init/verifiers.js +79 -62
  37. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -1
  38. package/dist/extensions/forgecli/forge-init.js +131 -76
  39. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  40. package/dist/extensions/forgecli/forge-subagent.d.ts +9 -0
  41. package/dist/extensions/forgecli/forge-subagent.js +11 -6
  42. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  43. package/dist/extensions/forgecli/forge-tools.d.ts +28 -4
  44. package/dist/extensions/forgecli/forge-tools.js +122 -73
  45. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  46. package/dist/extensions/forgecli/health-check.js +3 -3
  47. package/dist/extensions/forgecli/health-check.js.map +1 -1
  48. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -1
  49. package/dist/extensions/forgecli/hooks/check-update.d.ts +8 -0
  50. package/dist/extensions/forgecli/hooks/check-update.js +29 -1
  51. package/dist/extensions/forgecli/hooks/check-update.js.map +1 -1
  52. package/dist/extensions/forgecli/hooks/post-init-hook.js +6 -6
  53. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  54. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +6 -6
  55. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  56. package/dist/extensions/forgecli/hooks/triage-error.js +1 -0
  57. package/dist/extensions/forgecli/hooks/triage-error.js.map +1 -1
  58. package/dist/extensions/forgecli/implement.js +20 -2
  59. package/dist/extensions/forgecli/implement.js.map +1 -1
  60. package/dist/extensions/forgecli/index.js +39 -32
  61. package/dist/extensions/forgecli/index.js.map +1 -1
  62. package/dist/extensions/forgecli/lib/pipeline-guard.d.ts +41 -0
  63. package/dist/extensions/forgecli/lib/pipeline-guard.js +100 -0
  64. package/dist/extensions/forgecli/lib/pipeline-guard.js.map +1 -0
  65. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  66. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  67. package/dist/extensions/forgecli/migrate.d.ts +3 -0
  68. package/dist/extensions/forgecli/migrate.js +4 -2
  69. package/dist/extensions/forgecli/migrate.js.map +1 -1
  70. package/dist/extensions/forgecli/plan.js +21 -2
  71. package/dist/extensions/forgecli/plan.js.map +1 -1
  72. package/dist/extensions/forgecli/quiz-agent.js +7 -7
  73. package/dist/extensions/forgecli/quiz-agent.js.map +1 -1
  74. package/dist/extensions/forgecli/regenerate.js +49 -18
  75. package/dist/extensions/forgecli/regenerate.js.map +1 -1
  76. package/dist/extensions/forgecli/remove-command.js +1 -1
  77. package/dist/extensions/forgecli/remove-command.js.map +1 -1
  78. package/dist/extensions/forgecli/report-bug.js +1 -1
  79. package/dist/extensions/forgecli/report-bug.js.map +1 -1
  80. package/dist/extensions/forgecli/retrospective.js +9 -9
  81. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  82. package/dist/extensions/forgecli/review-code.d.ts +13 -0
  83. package/dist/extensions/forgecli/review-code.js +62 -3
  84. package/dist/extensions/forgecli/review-code.js.map +1 -1
  85. package/dist/extensions/forgecli/review-plan.d.ts +13 -0
  86. package/dist/extensions/forgecli/review-plan.js +65 -3
  87. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  88. package/dist/extensions/forgecli/run-task.d.ts +2 -1
  89. package/dist/extensions/forgecli/run-task.js +48 -4
  90. package/dist/extensions/forgecli/run-task.js.map +1 -1
  91. package/dist/extensions/forgecli/skill-curator-subagent.d.ts +2 -1
  92. package/dist/extensions/forgecli/skill-curator-subagent.js +2 -1
  93. package/dist/extensions/forgecli/skill-curator-subagent.js.map +1 -1
  94. package/dist/extensions/forgecli/sprint-intake.js +6 -6
  95. package/dist/extensions/forgecli/sprint-intake.js.map +1 -1
  96. package/dist/extensions/forgecli/sprint-plan.js +9 -9
  97. package/dist/extensions/forgecli/sprint-plan.js.map +1 -1
  98. package/dist/extensions/forgecli/status-command.js +1 -1
  99. package/dist/extensions/forgecli/status-command.js.map +1 -1
  100. package/dist/extensions/forgecli/store-query.js +11 -11
  101. package/dist/extensions/forgecli/store-query.js.map +1 -1
  102. package/dist/extensions/forgecli/store-repair.js +7 -7
  103. package/dist/extensions/forgecli/store-repair.js.map +1 -1
  104. package/dist/extensions/forgecli/validate.js +17 -2
  105. package/dist/extensions/forgecli/validate.js.map +1 -1
  106. package/dist/forge-payload/.base-pack/commands/check-agent.md +22 -0
  107. package/dist/forge-payload/.base-pack/commands/new-sprint.md +22 -0
  108. package/dist/forge-payload/.base-pack/commands/plan-sprint.md +22 -0
  109. package/dist/forge-payload/.base-pack/commands/quiz-agent.md +2 -18
  110. package/dist/forge-payload/.base-pack/commands/retro.md +22 -0
  111. package/dist/forge-payload/.base-pack/commands/retrospective.md +2 -18
  112. package/dist/forge-payload/.base-pack/commands/sprint-intake.md +2 -18
  113. package/dist/forge-payload/.base-pack/commands/sprint-plan.md +2 -18
  114. package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +2 -2
  115. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +4 -4
  116. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
  117. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +13 -1
  118. package/dist/forge-payload/.base-pack/workflows/commit_task.md +12 -1
  119. package/dist/forge-payload/.base-pack/workflows/enhance.md +40 -10
  120. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +1 -1
  121. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +14 -2
  122. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +2 -2
  123. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +20 -4
  124. package/dist/forge-payload/.base-pack/workflows/plan_task.md +14 -2
  125. package/dist/forge-payload/.base-pack/workflows/review_code.md +37 -7
  126. package/dist/forge-payload/.base-pack/workflows/review_plan.md +36 -6
  127. package/dist/forge-payload/.base-pack/workflows/run_sprint.md +2 -2
  128. package/dist/forge-payload/.base-pack/workflows/validate_task.md +37 -7
  129. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  130. package/dist/forge-payload/.schemas/config.schema.json +0 -5
  131. package/dist/forge-payload/.schemas/enum-catalog.json +9 -13
  132. package/dist/forge-payload/.schemas/migrations.json +65 -0
  133. package/dist/forge-payload/agents/tomoshibi.md +150 -6
  134. package/dist/forge-payload/commands/add-pipeline.md +1 -1
  135. package/dist/forge-payload/commands/add-task.md +1 -1
  136. package/dist/forge-payload/commands/calibrate.md +4 -350
  137. package/dist/forge-payload/commands/check-agent.md +38 -0
  138. package/dist/forge-payload/commands/config.md +3 -113
  139. package/dist/forge-payload/commands/enhance.md +5 -32
  140. package/dist/forge-payload/commands/health.md +155 -13
  141. package/dist/forge-payload/commands/init.md +25 -31
  142. package/dist/forge-payload/commands/migrate.md +6 -154
  143. package/dist/forge-payload/commands/quiz-agent.md +2 -34
  144. package/dist/forge-payload/commands/rebuild.md +664 -0
  145. package/dist/forge-payload/commands/regenerate.md +2 -774
  146. package/dist/forge-payload/commands/remove.md +10 -13
  147. package/dist/forge-payload/commands/repair.md +187 -0
  148. package/dist/forge-payload/commands/search.md +73 -0
  149. package/dist/forge-payload/commands/status.md +105 -0
  150. package/dist/forge-payload/commands/store-query.md +2 -69
  151. package/dist/forge-payload/commands/store-repair.md +2 -183
  152. package/dist/forge-payload/commands/update-tools.md +4 -50
  153. package/dist/forge-payload/commands/update.md +64 -58
  154. package/dist/forge-payload/hooks/check-update.cjs +1 -1
  155. package/dist/forge-payload/hooks/post-init.cjs +2 -2
  156. package/dist/forge-payload/hooks/post-sprint.cjs +2 -2
  157. package/dist/forge-payload/hooks/triage-error.cjs +11 -10
  158. package/dist/forge-payload/init/phases/phase-1-collect.md +138 -0
  159. package/dist/forge-payload/init/phases/phase-2-discover.md +127 -0
  160. package/dist/forge-payload/init/phases/phase-3-materialize.md +113 -0
  161. package/dist/forge-payload/init/phases/phase-4-register.md +159 -0
  162. package/dist/forge-payload/integrity.json +21 -24
  163. package/dist/forge-payload/meta/fragments/tool-discipline.md +22 -0
  164. package/dist/forge-payload/meta/templates/meta-retro.md +28 -0
  165. package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +2 -2
  166. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +4 -4
  167. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
  168. package/dist/forge-payload/meta/workflows/meta-approve.md +13 -1
  169. package/dist/forge-payload/meta/workflows/meta-check-agent.md +138 -0
  170. package/dist/forge-payload/meta/workflows/meta-commit.md +12 -1
  171. package/dist/forge-payload/meta/workflows/meta-enhance.md +39 -9
  172. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +1 -1
  173. package/dist/forge-payload/meta/workflows/meta-implement.md +13 -1
  174. package/dist/forge-payload/meta/workflows/meta-migrate.md +3 -3
  175. package/dist/forge-payload/meta/workflows/meta-new-sprint.md +84 -0
  176. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +20 -4
  177. package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +152 -0
  178. package/dist/forge-payload/meta/workflows/meta-plan-task.md +13 -1
  179. package/dist/forge-payload/meta/workflows/meta-retro.md +73 -0
  180. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +37 -7
  181. package/dist/forge-payload/meta/workflows/meta-review-plan.md +36 -6
  182. package/dist/forge-payload/meta/workflows/meta-validate.md +37 -7
  183. package/dist/forge-payload/schemas/config.schema.json +0 -5
  184. package/dist/forge-payload/schemas/enum-catalog.json +9 -13
  185. package/dist/forge-payload/schemas/structure-manifest.json +6 -8
  186. package/dist/forge-payload/tools/artifact.cjs +295 -0
  187. package/dist/forge-payload/tools/banners.cjs +3 -4
  188. package/dist/forge-payload/tools/build-context-pack.cjs +1 -1
  189. package/dist/forge-payload/tools/check-structure.cjs +8 -3
  190. package/dist/forge-payload/tools/store-cli.cjs +67 -7
  191. package/dist/forge-payload/tools/substitute-placeholders.cjs +1 -1
  192. package/dist/forge-payload/tools/verify-apply.cjs +75 -0
  193. package/dist/forge-payload/tools/verify-phase.cjs +259 -0
  194. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  195. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +0 -17
  196. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +21 -38
  198. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +5 -4
  201. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +2 -1
  203. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  204. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +5 -2
  205. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  207. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +24 -1
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js +2 -3
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts +1 -0
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.d.ts.map +1 -1
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js +52 -22
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/core/output-guard.js.map +1 -1
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +16 -4
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +45 -50
  220. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  221. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  222. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +43 -81
  223. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  224. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js +27 -12
  226. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/file-mutation-queue.js.map +1 -1
  227. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  228. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js +2 -3
  229. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  230. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  231. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js +3 -3
  232. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  233. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  234. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -5
  235. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  236. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts +2 -0
  237. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  238. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +37 -0
  239. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  240. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +9 -8
  242. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  244. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +20 -35
  245. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  246. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +3 -0
  247. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  248. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +64 -7
  249. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  250. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  251. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +15 -3
  252. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  253. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts +3 -1
  254. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.d.ts.map +1 -1
  255. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js +14 -8
  256. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-native.js.map +1 -1
  257. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts +30 -0
  258. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.d.ts.map +1 -0
  259. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js +124 -0
  260. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-core.js.map +1 -0
  261. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts +2 -0
  262. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.d.ts.map +1 -0
  263. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js +31 -0
  264. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize-worker.js.map +1 -0
  265. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts +7 -27
  266. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  267. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js +75 -115
  268. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  269. package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +6 -0
  270. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  271. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  272. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  273. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  274. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +12 -14
  275. package/node_modules/@earendil-works/pi-coding-agent/package.json +5 -5
  276. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts +3 -0
  277. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.d.ts.map +1 -0
  278. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js +53 -0
  279. package/node_modules/@earendil-works/pi-tui/dist/native-modifiers.js.map +1 -0
  280. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  281. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -1
  282. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  283. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +2 -0
  284. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  285. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +13 -1
  286. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  287. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  288. package/node_modules/@earendil-works/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  289. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  290. package/package.json +6 -6
  291. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +0 -72
  292. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +0 -359
  293. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +0 -1
  294. package/dist/extensions/forgecli/forge-init/prompts.d.ts +0 -10
  295. package/dist/extensions/forgecli/forge-init/prompts.js +0 -91
  296. package/dist/extensions/forgecli/forge-init/prompts.js.map +0 -1
  297. package/dist/extensions/forgecli/lib/store-error-remediation.d.ts +0 -65
  298. package/dist/extensions/forgecli/lib/store-error-remediation.js +0 -298
  299. package/dist/extensions/forgecli/lib/store-error-remediation.js.map +0 -1
  300. package/dist/forge-payload/hooks/check-update.js +0 -378
  301. package/dist/forge-payload/hooks/forge-permissions.js +0 -164
  302. package/dist/forge-payload/hooks/triage-error.js +0 -77
  303. package/dist/forge-payload/hooks/validate-write.js +0 -250
@@ -13,7 +13,7 @@ nothing is deleted until you confirm explicitly.
13
13
  | Location | Contents | Safe to remove? |
14
14
  |---|---|---|
15
15
  | `.forge/` | Config, workflows, templates, task/sprint/bug store | Yes — regeneratable via `/forge:init` |
16
- | `.claude/commands/` | Generated slash commands (sprint-plan, run-task, etc.) | Yes — regeneratable via `/forge:init` |
16
+ | `.claude/commands/` | Generated slash commands (plan-sprint, run-task, etc.) | Yes — regeneratable via `/forge:init` |
17
17
  | `{KB_PATH}/` | Knowledge base, sprint history, bug history, tools | **Caution** — represents accumulated project learning |
18
18
 
19
19
  ## Step 1 — Inventory what exists
@@ -90,8 +90,8 @@ Summarise exactly what will be deleted, then ask:
90
90
  ```
91
91
  About to delete:
92
92
  ✗ .forge/
93
- ✗ .claude/commands/{PREFIX}/sprint-intake.md
94
- ✗ .claude/commands/{PREFIX}/sprint-plan.md
93
+ ✗ .claude/commands/{PREFIX}/new-sprint.md
94
+ ✗ .claude/commands/{PREFIX}/plan-sprint.md
95
95
  ✗ .claude/commands/{PREFIX}/run-task.md
96
96
  ✗ .claude/commands/{PREFIX}/run-sprint.md
97
97
  ✗ .claude/commands/{PREFIX}/plan.md
@@ -101,8 +101,7 @@ About to delete:
101
101
  ✗ .claude/commands/{PREFIX}/fix-bug.md
102
102
  ✗ .claude/commands/{PREFIX}/approve.md
103
103
  ✗ .claude/commands/{PREFIX}/commit.md
104
- ✗ .claude/commands/{PREFIX}/collate.md
105
- ✗ .claude/commands/{PREFIX}/retrospective.md
104
+ ✗ .claude/commands/{PREFIX}/retro.md
106
105
  [✗ {KB_PATH}/] ← only if option 3 confirmed
107
106
 
108
107
  Type "confirm" to proceed, or anything else to cancel.
@@ -122,8 +121,8 @@ rm -rf .forge/
122
121
  **Option 2 (standard):**
123
122
  ```bash
124
123
  rm -rf .forge/
125
- rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
126
- ".claude/commands/${PREFIX}/sprint-plan.md" \
124
+ rm -f ".claude/commands/${PREFIX}/new-sprint.md" \
125
+ ".claude/commands/${PREFIX}/plan-sprint.md" \
127
126
  ".claude/commands/${PREFIX}/run-task.md" \
128
127
  ".claude/commands/${PREFIX}/run-sprint.md" \
129
128
  ".claude/commands/${PREFIX}/plan.md" \
@@ -133,16 +132,15 @@ rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
133
132
  ".claude/commands/${PREFIX}/fix-bug.md" \
134
133
  ".claude/commands/${PREFIX}/approve.md" \
135
134
  ".claude/commands/${PREFIX}/commit.md" \
136
- ".claude/commands/${PREFIX}/collate.md" \
137
- ".claude/commands/${PREFIX}/retrospective.md"
135
+ ".claude/commands/${PREFIX}/retro.md"
138
136
  rmdir ".claude/commands/${PREFIX}" 2>/dev/null || true
139
137
  ```
140
138
 
141
139
  **Option 3 (full):**
142
140
  ```bash
143
141
  rm -rf .forge/ "{KB_PATH}/"
144
- rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
145
- ".claude/commands/${PREFIX}/sprint-plan.md" \
142
+ rm -f ".claude/commands/${PREFIX}/new-sprint.md" \
143
+ ".claude/commands/${PREFIX}/plan-sprint.md" \
146
144
  ".claude/commands/${PREFIX}/run-task.md" \
147
145
  ".claude/commands/${PREFIX}/run-sprint.md" \
148
146
  ".claude/commands/${PREFIX}/plan.md" \
@@ -152,8 +150,7 @@ rm -f ".claude/commands/${PREFIX}/sprint-intake.md" \
152
150
  ".claude/commands/${PREFIX}/fix-bug.md" \
153
151
  ".claude/commands/${PREFIX}/approve.md" \
154
152
  ".claude/commands/${PREFIX}/commit.md" \
155
- ".claude/commands/${PREFIX}/collate.md" \
156
- ".claude/commands/${PREFIX}/retrospective.md"
153
+ ".claude/commands/${PREFIX}/retro.md"
157
154
  rmdir ".claude/commands/${PREFIX}" 2>/dev/null || true
158
155
  ```
159
156
 
@@ -0,0 +1,187 @@
1
+ ---
2
+ name: repair
3
+ description: Diagnose and repair corrupted store records. Use when validate-store reports errors or store data seems wrong.
4
+ ---
5
+
6
+ # /forge:repair
7
+
8
+ Diagnose and repair corruption in the Forge JSON store.
9
+
10
+ ## Arguments
11
+
12
+ $ARGUMENTS
13
+
14
+ | Argument | Purpose |
15
+ |----------|---------|
16
+ | `--dry-run` | Show what would be repaired without making any changes |
17
+
18
+ ## How to Run
19
+
20
+ 1. Resolve the plugin root:
21
+ ```
22
+ FORGE_ROOT: !`echo "${CLAUDE_PLUGIN_ROOT}"`
23
+ ```
24
+
25
+ 2. Run the four-phase repair workflow below. If `--dry-run` is in `$ARGUMENTS`,
26
+ preview all changes without writing — skip Phase 2 writes and Phase 3
27
+ writes, and skip Phase 4 verification since nothing changed.
28
+
29
+ ## Phase 1: Diagnosis
30
+
31
+ Run the deterministic validator in JSON mode:
32
+
33
+ ```sh
34
+ node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run --json
35
+ ```
36
+
37
+ Parse the JSON output. Categorize each error by its `category` field:
38
+
39
+ | Category | Example | Deterministic fix? |
40
+ |----------|---------|--------------------|
41
+ | `missing-required` | `"sprintId": null` on a sprint | Yes — backfill |
42
+ | `type-mismatch` | `"iteration": "1"` instead of `1` | Yes — coerce |
43
+ | `invalid-enum` | `"status": "in-progress"` on a bug | No — needs judgment |
44
+ | `undeclared-field` | `"priority": "high"` on a task | No — needs judgment |
45
+ | `orphaned-fk` | `taskId` pointing to deleted task in event | No — needs judgment |
46
+ | `filename-mismatch` | Event filename != eventId | Yes — rename |
47
+ | `minimum-violation` | `"iteration": 0` | Yes — coerce |
48
+ | `orphan-directory` | Sprint dir with no sprint record | No — needs judgment |
49
+ | `stale-path` | `path` pointing to nonexistent dir | No — needs judgment |
50
+
51
+ ## Phase 2: Auto-Fix
52
+
53
+ Run the deterministic validator with `--fix`:
54
+
55
+ ```sh
56
+ node "$FORGE_ROOT/tools/validate-store.cjs" --fix --json
57
+ ```
58
+
59
+ For dry-run, preview without writing:
60
+
61
+ ```sh
62
+ node "$FORGE_ROOT/tools/validate-store.cjs" --fix --dry-run --json
63
+ ```
64
+
65
+ Report each fix to the user (entity, field, what was backfilled or nullified).
66
+
67
+ ## Phase 3: LLM-Judgment Fixes
68
+
69
+ For each remaining error from Phase 1 that was not auto-fixed, apply LLM judgment:
70
+
71
+ 1. **Read the corrupted record**:
72
+ ```sh
73
+ node "$FORGE_ROOT/tools/store-cli.cjs" read <entity> <id> --json
74
+ ```
75
+
76
+ 2. **Determine the correct value** based on schema definitions, store context, and
77
+ the judgment rules below.
78
+
79
+ 3. **Present the proposed fix** to the user with:
80
+ - Entity ID and field affected
81
+ - Current (corrupted) value
82
+ - Proposed (corrected) value
83
+ - Reasoning
84
+
85
+ If the user declines, skip the fix and note it in the report.
86
+
87
+ 4. **Apply the fix** using the appropriate command:
88
+
89
+ | Corruption Pattern | Repair Action | Command |
90
+ |-------------------|---------------|---------|
91
+ | Invalid enum value | Map to nearest valid enum | `store-cli.cjs update-status <entity> <id> <field> <value> [--force]` |
92
+ | Undeclared field | Remove the field by rewriting | `store-cli.cjs write <entity> '<fixed-json>'` |
93
+ | Type mismatch | Coerce to correct type and rewrite | `store-cli.cjs write <entity> '<fixed-json>'` |
94
+ | Orphaned FK | Nullify or remap to existing entity | `store-cli.cjs write <entity> '<fixed-json>'` |
95
+ | Dangling sprint.taskIds | Remove taskIds referencing non-existent tasks | `store-cli.cjs write sprint '<fixed-json>'` |
96
+ | Illegal status transition | Force-correct to valid state | `store-cli.cjs update-status <entity> <id> status <value> --force` |
97
+ | Stale COLLATION_STATE | Regenerate via collate | `node "$FORGE_ROOT/tools/collate.cjs"` |
98
+
99
+ ### Judgment Rules: Invalid Enum Values
100
+
101
+ Map common misspellings and variant forms to canonical values:
102
+
103
+ | Entity | Field | Common Misspellings | Canonical Values |
104
+ |--------|-------|--------------------|------------------|
105
+ | Sprint | status | "in-progress" | active |
106
+ | Sprint | status | "done", "finished" | completed |
107
+ | Task | status | "in-progress" | implementing |
108
+ | Task | status | "in-review", "review" | review-approved |
109
+ | Task | status | "done", "finished" | committed |
110
+ | Bug | severity | "high", "critical" | critical |
111
+ | Bug | severity | "medium" | major |
112
+ | Bug | severity | "low" | minor |
113
+ | Bug | status | "open" | reported |
114
+ | Bug | status | "working" | in-progress |
115
+ | Feature | status | "complete", "done" | shipped |
116
+
117
+ When no reasonable mapping exists, ask the user to choose from valid values.
118
+
119
+ ### Judgment Rules: Orphaned References
120
+
121
+ - **Event.taskId → deleted task**: If the event's sprintId is valid, nullify the
122
+ taskId. If the sprint also doesn't exist, ask the user whether to delete the
123
+ event or create a stub sprint.
124
+ - **Sprint.taskIds containing deleted task IDs**: Remove the deleted IDs from the
125
+ array and rewrite the sprint.
126
+ - **Undeclared fields**: Remove the field and rewrite. Mention the removed data in
127
+ the report so the user can decide whether to add it to the schema.
128
+
129
+ ### Hard Rules
130
+
131
+ 1. **Never fall back to direct file writes.** All repairs go through
132
+ `store-cli.cjs`. If it rejects a write, fix the data and retry (max 2).
133
+ 2. **Never delete data without confirmation.** Ask the user before deleting any
134
+ record.
135
+ 3. **Never skip Phase 4 verification.** Always re-run validate-store after
136
+ repairs.
137
+ 4. **Preserve data priority.** Prefer corrections that retain more original data.
138
+ Mapping "in-progress" → "implementing" is better than resetting to "draft".
139
+
140
+ ## Phase 4: Verification
141
+
142
+ Re-run the validator to confirm the store is clean:
143
+
144
+ ```sh
145
+ node "$FORGE_ROOT/tools/validate-store.cjs" --dry-run --json
146
+ ```
147
+
148
+ If `"ok": true`, report success. If errors remain, report them as unresolved
149
+ with suggestions for next steps.
150
+
151
+ ## Repair Report
152
+
153
+ After all phases, output a structured report:
154
+
155
+ ```
156
+ # Store Repair Report
157
+
158
+ ## Phase 1: Diagnosis
159
+ - Errors found: N
160
+ - Warnings found: M
161
+ - Categories: {breakdown by category}
162
+
163
+ ## Phase 2: Auto-Fix
164
+ - Fixes applied: N
165
+ - Details: {list of each fix}
166
+
167
+ ## Phase 3: LLM-Judgment Fixes
168
+ - Fixes proposed: N
169
+ - Fixes applied: M (with user approval)
170
+ - Fixes skipped: K (user declined)
171
+ - Details: {list of each proposed change with reasoning}
172
+
173
+ ## Phase 4: Verification
174
+ - Errors remaining: N
175
+ - Warnings remaining: M
176
+ - Status: PASS / FAIL
177
+
178
+ ## Unresolved Issues
179
+ {List of issues that could not be automatically resolved, with suggestions}
180
+ ```
181
+
182
+ ## On Error
183
+
184
+ If `validate-store.cjs` crashes or returns unexpected output, report the error
185
+ and suggest running `/forge:report-bug` if it appears to be a Forge bug. Do NOT
186
+ attempt to continue repairs after an unexpected error in a deterministic tool —
187
+ the store state is unknown and further writes could cause additional corruption.
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: search
3
+ description: Query the Forge store by natural language or exact flags. Use for finding tasks, bugs, sprints, or features without manually reading the knowledge base.
4
+ allowed-tools:
5
+ - Bash
6
+ ---
7
+
8
+ # /forge:search
9
+
10
+ Query the Forge JSON store by intent, sprint, entity ID, or keyword.
11
+
12
+ ## Locate plugin root
13
+
14
+ ```
15
+ FORGE_ROOT: !`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`
16
+ ```
17
+
18
+ ## Dispatch
19
+
20
+ If `$ARGUMENTS` starts with `--` (flags), run exact query:
21
+
22
+ ```sh
23
+ node "$FORGE_ROOT/tools/store-cli.cjs" query $ARGUMENTS
24
+ ```
25
+
26
+ Otherwise run NLP intent query:
27
+
28
+ ```sh
29
+ node "$FORGE_ROOT/tools/store-cli.cjs" nlp "$ARGUMENTS"
30
+ ```
31
+
32
+ If `$ARGUMENTS` is empty, print usage:
33
+
34
+ ```
35
+ Usage: /forge:search <intent or flags>
36
+
37
+ Examples:
38
+ /forge:search open bugs in S12
39
+ /forge:search WI-BUG-047
40
+ /forge:search --sprint S12 --status in-progress
41
+ /forge:search --keyword auth
42
+ /forge:search schema
43
+ ```
44
+
45
+ ## Output
46
+
47
+ Results are printed as JSON. Key fields:
48
+
49
+ | Field | Meaning |
50
+ |-------|---------|
51
+ | `results[].id` | Entity ID |
52
+ | `results[].title` | Entity title |
53
+ | `results[].status` | Current status |
54
+ | `results[].type` | `task`, `bug`, `sprint`, or `feature` |
55
+ | `results[].relationships` | FK IDs (sprintId, featureId, blockedBy, etc.) |
56
+ | `results[].fileRefs.md` | Path to INDEX.md for this entity |
57
+ | `results[].excerpt` | First 4 sentences from INDEX.md |
58
+ | `traversalTrace` | NLP parse steps and confidence |
59
+ | `meta.totalTimeMs` | Query wall-clock time |
60
+
61
+ ## Schema reference
62
+
63
+ To see the project's entity schemas and NLP grammar vocabulary:
64
+
65
+ ```sh
66
+ node "$FORGE_ROOT/tools/store-cli.cjs" schema
67
+ ```
68
+
69
+ ## Skills
70
+
71
+ - `forge:store-query-nlp` — NLP intent reference and output schema
72
+ - `forge:store-query-grammar` — Token vocabulary for constructing queries
73
+ - `forge:store-custodian` — Write/mutate operations (separate from query)
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: status
3
+ description: Sprint and task summary — shows current sprint name, task status counts, and recent activity
4
+ allowed-tools:
5
+ - Bash
6
+ ---
7
+
8
+ # /forge:status
9
+
10
+ Quick overview of the current sprint and task state.
11
+
12
+ ## Locate plugin root
13
+
14
+ ```
15
+ FORGE_ROOT: !`echo "${CLAUDE_PLUGIN_ROOT}"`
16
+ ```
17
+
18
+ ## Locate project config
19
+
20
+ Check whether `.forge/config.json` exists in the current working directory.
21
+ If it does not exist, output:
22
+
23
+ ```
24
+ × forge:status — not inside a Forge project. Run /forge:init first.
25
+ ```
26
+
27
+ and stop.
28
+
29
+ ## Gather sprint data
30
+
31
+ Run:
32
+
33
+ ```sh
34
+ node "$FORGE_ROOT/tools/store-cli.cjs" query --list-sprints --no-excerpts
35
+ ```
36
+
37
+ Parse the JSON output. Filter `results` to entries where `status == "active"`.
38
+ Sort by `id` descending (most recent sprint first). If no active sprints are found, output:
39
+
40
+ ```
41
+ forge:status — No active sprint found.
42
+ Run /forge:init to initialise a project, or check your store with /forge:search --list-sprints.
43
+ ```
44
+
45
+ and stop.
46
+
47
+ Use the first (most recent) active sprint as the current sprint.
48
+
49
+ ## Gather task data
50
+
51
+ Run:
52
+
53
+ ```sh
54
+ node "$FORGE_ROOT/tools/store-cli.cjs" query --sprint <SPRINT_ID> --no-excerpts
55
+ ```
56
+
57
+ From the JSON output, collect all results where `type == "task"`.
58
+
59
+ ## Format and output
60
+
61
+ Print a markdown status report in this format:
62
+
63
+ ```
64
+ ## Sprint: <SPRINT_ID> — <sprint.title> (<sprint.status>)
65
+
66
+ ### Tasks (<total> total)
67
+ <status1>: <count> | <status2>: <count> | ...
68
+
69
+ ### Recent Activity
70
+ - <TASK_ID>: <task.title truncated to 60 chars> → <task.status>
71
+ ...
72
+
73
+ ### Next: /forge:run-task <NEXT_TASK_ID>
74
+ ```
75
+
76
+ **Task counts:** Group tasks by status. Show only status buckets with count > 0, separated by ` | `. Omit zero-count buckets.
77
+
78
+ **Recent Activity:** Show up to 5 tasks sorted by taskId descending (highest T-number first). Each line:
79
+ ` - <task.id>: <title> → <status>`
80
+
81
+ **Next action:** Find the first task (sorted by taskId ascending) that has status `implementing` or `planned`. Suggest `/forge:run-task <TASK_ID>`. If all tasks are committed or abandoned, output `### Next: Sprint complete — run /forge:retro`.
82
+
83
+ **Multiple active sprints:** If more than one active sprint exists, add a note after the report:
84
+ ```
85
+ Note: <N> other active sprint(s) found. Showing most recent (<SPRINT_ID>).
86
+ ```
87
+
88
+ ## Arguments
89
+
90
+ $ARGUMENTS
91
+
92
+ | Argument | Purpose |
93
+ |----------|---------|
94
+ | `--sprint <ID>` | Show status for a specific sprint instead of the most recent active one |
95
+
96
+ If `--sprint <ID>` is in `$ARGUMENTS`, use that sprint ID directly (skip the list-sprints step and active-filter). If the sprint is not found, output:
97
+ ```
98
+ × forge:status — sprint <ID> not found. Run /forge:search --list-sprints to see available sprints.
99
+ ```
100
+
101
+ ## On error
102
+
103
+ If any step above fails unexpectedly, describe what went wrong and ask:
104
+
105
+ > "This looks like a Forge bug. Would you like to file a report to help improve it? Run `/forge:report-bug` — I'll pre-fill the report from this conversation."
@@ -1,73 +1,6 @@
1
1
  ---
2
2
  name: store-query
3
- description: Query the Forge store by natural language or exact flags. Use for finding tasks, bugs, sprints, or features without manually reading the knowledge base.
4
- allowed-tools:
5
- - Bash
3
+ description: Renamed in v1.0 use /forge:search
6
4
  ---
7
5
 
8
- # /forge:store-query
9
-
10
- Query the Forge JSON store by intent, sprint, entity ID, or keyword.
11
-
12
- ## Locate plugin root
13
-
14
- ```
15
- FORGE_ROOT: !`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`
16
- ```
17
-
18
- ## Dispatch
19
-
20
- If `$ARGUMENTS` starts with `--` (flags), run exact query:
21
-
22
- ```sh
23
- node "$FORGE_ROOT/tools/store-cli.cjs" query $ARGUMENTS
24
- ```
25
-
26
- Otherwise run NLP intent query:
27
-
28
- ```sh
29
- node "$FORGE_ROOT/tools/store-cli.cjs" nlp "$ARGUMENTS"
30
- ```
31
-
32
- If `$ARGUMENTS` is empty, print usage:
33
-
34
- ```
35
- Usage: /forge:store-query <intent or flags>
36
-
37
- Examples:
38
- /forge:store-query open bugs in S12
39
- /forge:store-query WI-BUG-047
40
- /forge:store-query --sprint S12 --status in-progress
41
- /forge:store-query --keyword auth
42
- /forge:store-query schema
43
- ```
44
-
45
- ## Output
46
-
47
- Results are printed as JSON. Key fields:
48
-
49
- | Field | Meaning |
50
- |-------|---------|
51
- | `results[].id` | Entity ID |
52
- | `results[].title` | Entity title |
53
- | `results[].status` | Current status |
54
- | `results[].type` | `task`, `bug`, `sprint`, or `feature` |
55
- | `results[].relationships` | FK IDs (sprintId, featureId, blockedBy, etc.) |
56
- | `results[].fileRefs.md` | Path to INDEX.md for this entity |
57
- | `results[].excerpt` | First 4 sentences from INDEX.md |
58
- | `traversalTrace` | NLP parse steps and confidence |
59
- | `meta.totalTimeMs` | Query wall-clock time |
60
-
61
- ## Schema reference
62
-
63
- To see the project's entity schemas and NLP grammar vocabulary:
64
-
65
- ```sh
66
- node "$FORGE_ROOT/tools/store-cli.cjs" schema
67
- ```
68
-
69
- ## Skills
70
-
71
- - `forge:store-query-nlp` — NLP intent reference and output schema
72
- - `forge:store-query-grammar` — Token vocabulary for constructing queries
73
- - `forge:store-custodian` — Write/mutate operations (separate from query)
6
+ × /forge:store-query was renamed to /forge:search in v1.0.