@entelligentsia/forgecli 0.7.10 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/dist/CHANGELOG-forge-plugin.md +70 -0
  3. package/dist/CHANGELOG-pi.md +63 -0
  4. package/dist/bin/argv.d.ts +2 -2
  5. package/dist/bin/argv.js +27 -0
  6. package/dist/bin/argv.js.map +1 -1
  7. package/dist/bin/config.d.ts +69 -0
  8. package/dist/bin/config.js +315 -0
  9. package/dist/bin/config.js.map +1 -0
  10. package/dist/bin/doctor.d.ts +1 -0
  11. package/dist/bin/doctor.js +12 -0
  12. package/dist/bin/doctor.js.map +1 -1
  13. package/dist/bin/env-defaults.d.ts +1 -0
  14. package/dist/bin/env-defaults.js +13 -0
  15. package/dist/bin/env-defaults.js.map +1 -0
  16. package/dist/bin/forge.js +16 -0
  17. package/dist/bin/forge.js.map +1 -1
  18. package/dist/bin/update-cli.d.ts +9 -0
  19. package/dist/bin/update-cli.js +120 -0
  20. package/dist/bin/update-cli.js.map +1 -0
  21. package/dist/extensions/forgecli/config-command.d.ts +8 -0
  22. package/dist/extensions/forgecli/config-command.js +66 -0
  23. package/dist/extensions/forgecli/config-command.js.map +1 -0
  24. package/dist/extensions/forgecli/config-layer.d.ts +38 -0
  25. package/dist/extensions/forgecli/config-layer.js +68 -0
  26. package/dist/extensions/forgecli/config-layer.js.map +1 -0
  27. package/dist/extensions/forgecli/config-tui/component.d.ts +35 -0
  28. package/dist/extensions/forgecli/config-tui/component.js +236 -0
  29. package/dist/extensions/forgecli/config-tui/component.js.map +1 -0
  30. package/dist/extensions/forgecli/config-tui/handler.d.ts +40 -0
  31. package/dist/extensions/forgecli/config-tui/handler.js +240 -0
  32. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -0
  33. package/dist/extensions/forgecli/config-tui/index.d.ts +5 -0
  34. package/dist/extensions/forgecli/config-tui/index.js +5 -0
  35. package/dist/extensions/forgecli/config-tui/index.js.map +1 -0
  36. package/dist/extensions/forgecli/config-tui/keys.d.ts +26 -0
  37. package/dist/extensions/forgecli/config-tui/keys.js +33 -0
  38. package/dist/extensions/forgecli/config-tui/keys.js.map +1 -0
  39. package/dist/extensions/forgecli/config-tui/plugin-config-reader.d.ts +23 -0
  40. package/dist/extensions/forgecli/config-tui/plugin-config-reader.js +58 -0
  41. package/dist/extensions/forgecli/config-tui/plugin-config-reader.js.map +1 -0
  42. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.d.ts +7 -0
  43. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js +83 -0
  44. package/dist/extensions/forgecli/config-tui/screens/advanced-menu.js.map +1 -0
  45. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.d.ts +11 -0
  46. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js +54 -0
  47. package/dist/extensions/forgecli/config-tui/screens/confirm-quit.js.map +1 -0
  48. package/dist/extensions/forgecli/config-tui/screens/override-editor.d.ts +11 -0
  49. package/dist/extensions/forgecli/config-tui/screens/override-editor.js +233 -0
  50. package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -0
  51. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.d.ts +7 -0
  52. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +91 -0
  53. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -0
  54. package/dist/extensions/forgecli/config-tui/screens/overrides-list.d.ts +7 -0
  55. package/dist/extensions/forgecli/config-tui/screens/overrides-list.js +71 -0
  56. package/dist/extensions/forgecli/config-tui/screens/overrides-list.js.map +1 -0
  57. package/dist/extensions/forgecli/config-tui/screens/persona-editor.d.ts +10 -0
  58. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js +182 -0
  59. package/dist/extensions/forgecli/config-tui/screens/persona-editor.js.map +1 -0
  60. package/dist/extensions/forgecli/config-tui/screens/persona-picker.d.ts +7 -0
  61. package/dist/extensions/forgecli/config-tui/screens/persona-picker.js +76 -0
  62. package/dist/extensions/forgecli/config-tui/screens/persona-picker.js.map +1 -0
  63. package/dist/extensions/forgecli/config-tui/screens/personas-list.d.ts +7 -0
  64. package/dist/extensions/forgecli/config-tui/screens/personas-list.js +98 -0
  65. package/dist/extensions/forgecli/config-tui/screens/personas-list.js.map +1 -0
  66. package/dist/extensions/forgecli/config-tui/screens/shared.d.ts +29 -0
  67. package/dist/extensions/forgecli/config-tui/screens/shared.js +100 -0
  68. package/dist/extensions/forgecli/config-tui/screens/shared.js.map +1 -0
  69. package/dist/extensions/forgecli/config-tui/screens/show-resolved.d.ts +23 -0
  70. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +128 -0
  71. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -0
  72. package/dist/extensions/forgecli/config-tui/screens/tier-menu.d.ts +7 -0
  73. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +135 -0
  74. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -0
  75. package/dist/extensions/forgecli/config-tui/screens/tier-picker.d.ts +9 -0
  76. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js +122 -0
  77. package/dist/extensions/forgecli/config-tui/screens/tier-picker.js.map +1 -0
  78. package/dist/extensions/forgecli/config-tui/screens/types.d.ts +24 -0
  79. package/dist/extensions/forgecli/config-tui/screens/types.js +5 -0
  80. package/dist/extensions/forgecli/config-tui/screens/types.js.map +1 -0
  81. package/dist/extensions/forgecli/config-tui/screens.d.ts +24 -0
  82. package/dist/extensions/forgecli/config-tui/screens.js +78 -0
  83. package/dist/extensions/forgecli/config-tui/screens.js.map +1 -0
  84. package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +11 -0
  85. package/dist/extensions/forgecli/config-tui/state/buffer.js +91 -0
  86. package/dist/extensions/forgecli/config-tui/state/buffer.js.map +1 -0
  87. package/dist/extensions/forgecli/config-tui/state/constants.d.ts +4 -0
  88. package/dist/extensions/forgecli/config-tui/state/constants.js +14 -0
  89. package/dist/extensions/forgecli/config-tui/state/constants.js.map +1 -0
  90. package/dist/extensions/forgecli/config-tui/state/index.d.ts +6 -0
  91. package/dist/extensions/forgecli/config-tui/state/index.js +9 -0
  92. package/dist/extensions/forgecli/config-tui/state/index.js.map +1 -0
  93. package/dist/extensions/forgecli/config-tui/state/init.d.ts +2 -0
  94. package/dist/extensions/forgecli/config-tui/state/init.js +30 -0
  95. package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -0
  96. package/dist/extensions/forgecli/config-tui/state/model.d.ts +192 -0
  97. package/dist/extensions/forgecli/config-tui/state/model.js +4 -0
  98. package/dist/extensions/forgecli/config-tui/state/model.js.map +1 -0
  99. package/dist/extensions/forgecli/config-tui/state/reducer.d.ts +2 -0
  100. package/dist/extensions/forgecli/config-tui/state/reducer.js +212 -0
  101. package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -0
  102. package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +91 -0
  103. package/dist/extensions/forgecli/config-tui/state/selectors.js +231 -0
  104. package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -0
  105. package/dist/extensions/forgecli/config-tui/state.d.ts +6 -0
  106. package/dist/extensions/forgecli/config-tui/state.js +11 -0
  107. package/dist/extensions/forgecli/config-tui/state.js.map +1 -0
  108. package/dist/extensions/forgecli/config-tui/theme.d.ts +37 -0
  109. package/dist/extensions/forgecli/config-tui/theme.js +88 -0
  110. package/dist/extensions/forgecli/config-tui/theme.js.map +1 -0
  111. package/dist/extensions/forgecli/config-tui/tier-meta.d.ts +28 -0
  112. package/dist/extensions/forgecli/config-tui/tier-meta.js +69 -0
  113. package/dist/extensions/forgecli/config-tui/tier-meta.js.map +1 -0
  114. package/dist/extensions/forgecli/config-writer.d.ts +16 -0
  115. package/dist/extensions/forgecli/config-writer.js +63 -0
  116. package/dist/extensions/forgecli/config-writer.js.map +1 -0
  117. package/dist/extensions/forgecli/fix-bug.js +85 -1
  118. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  119. package/dist/extensions/forgecli/forge-cli-schema.json +54 -0
  120. package/dist/extensions/forgecli/forge-commands.js +3 -8
  121. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  122. package/dist/extensions/forgecli/forge-subagent.d.ts +13 -0
  123. package/dist/extensions/forgecli/forge-subagent.js +19 -0
  124. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  125. package/dist/extensions/forgecli/index.js +19 -3
  126. package/dist/extensions/forgecli/index.js.map +1 -1
  127. package/dist/extensions/forgecli/input-router.d.ts +33 -0
  128. package/dist/extensions/forgecli/input-router.js +133 -0
  129. package/dist/extensions/forgecli/input-router.js.map +1 -0
  130. package/dist/extensions/forgecli/model-resolver.d.ts +32 -0
  131. package/dist/extensions/forgecli/model-resolver.js +65 -0
  132. package/dist/extensions/forgecli/model-resolver.js.map +1 -0
  133. package/dist/extensions/forgecli/model-validator.d.ts +29 -0
  134. package/dist/extensions/forgecli/model-validator.js +107 -0
  135. package/dist/extensions/forgecli/model-validator.js.map +1 -0
  136. package/dist/extensions/forgecli/run-sprint.js +59 -0
  137. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  138. package/dist/extensions/forgecli/run-task.js +93 -1
  139. package/dist/extensions/forgecli/run-task.js.map +1 -1
  140. package/dist/extensions/forgecli/thread-switcher.js +5 -2
  141. package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
  142. package/dist/extensions/forgecli/update-check.js +1 -1
  143. package/dist/extensions/forgecli/update-check.js.map +1 -1
  144. package/dist/extensions/forgecli/whats-new-widget.d.ts +5 -5
  145. package/dist/extensions/forgecli/whats-new-widget.js +16 -13
  146. package/dist/extensions/forgecli/whats-new-widget.js.map +1 -1
  147. package/dist/extensions/forgecli/whats-new.js +6 -5
  148. package/dist/extensions/forgecli/whats-new.js.map +1 -1
  149. package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
  150. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +27 -98
  151. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  152. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +62 -132
  153. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  154. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  155. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +25 -15
  156. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  157. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  158. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +1 -0
  159. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  160. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  161. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +17 -1
  162. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  163. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  164. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +8 -2
  165. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  166. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  167. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +17 -1
  168. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  169. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  170. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +8 -1
  171. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
  172. package/node_modules/@earendil-works/pi-ai/package.json +2 -2
  173. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +63 -0
  174. package/node_modules/@earendil-works/pi-coding-agent/README.md +1 -1
  175. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts.map +1 -1
  176. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js +1 -1
  177. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js.map +1 -1
  178. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.d.ts.map +1 -1
  179. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js +6 -10
  180. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js.map +1 -1
  181. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
  182. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +12 -3
  183. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
  184. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +1 -0
  185. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  186. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +30 -15
  187. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  188. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts +3 -3
  189. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  190. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +23 -13
  191. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  192. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +4 -0
  193. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  194. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +58 -38
  195. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  196. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  197. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js +0 -1
  198. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  199. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +3 -2
  201. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts +2 -2
  203. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  204. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js +7 -4
  205. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js.map +1 -1
  206. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  207. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +6 -2
  208. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  209. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  210. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +3 -4
  211. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  212. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  213. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js +2 -2
  214. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  215. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/child-process.d.ts +7 -1
  216. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/child-process.d.ts.map +1 -1
  217. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/child-process.js +60 -7
  218. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/child-process.js.map +1 -1
  219. package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +2 -2
  220. package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +1 -3
  221. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
  222. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  223. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
  224. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
  225. package/node_modules/@earendil-works/pi-coding-agent/package.json +6 -6
  226. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  227. package/node_modules/@protobufjs/fetch/CHANGELOG.md +8 -0
  228. package/node_modules/@protobufjs/fetch/index.d.ts +7 -7
  229. package/node_modules/@protobufjs/fetch/index.js +4 -7
  230. package/node_modules/@protobufjs/fetch/package.json +7 -5
  231. package/node_modules/@protobufjs/fetch/tests/data/file.txt +1 -0
  232. package/node_modules/@protobufjs/fetch/tests/index.js +150 -8
  233. package/node_modules/@protobufjs/fetch/util/fs.js +11 -0
  234. package/node_modules/@protobufjs/inquire/CHANGELOG.md +8 -0
  235. package/node_modules/@protobufjs/inquire/index.d.ts +1 -0
  236. package/node_modules/@protobufjs/inquire/index.js +1 -0
  237. package/node_modules/@protobufjs/inquire/package.json +1 -1
  238. package/node_modules/protobufjs/dist/light/protobuf.js +187 -153
  239. package/node_modules/protobufjs/dist/light/protobuf.js.map +1 -1
  240. package/node_modules/protobufjs/dist/light/protobuf.min.js +3 -3
  241. package/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -1
  242. package/node_modules/protobufjs/dist/minimal/protobuf.js +14 -5
  243. package/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -1
  244. package/node_modules/protobufjs/dist/minimal/protobuf.min.js +3 -3
  245. package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -1
  246. package/node_modules/protobufjs/dist/protobuf.js +207 -173
  247. package/node_modules/protobufjs/dist/protobuf.js.map +1 -1
  248. package/node_modules/protobufjs/dist/protobuf.min.js +3 -3
  249. package/node_modules/protobufjs/dist/protobuf.min.js.map +1 -1
  250. package/node_modules/protobufjs/package.json +6 -3
  251. package/node_modules/protobufjs/src/util/fs.js +11 -0
  252. package/node_modules/protobufjs/src/util/minimal.js +10 -2
  253. package/node_modules/protobufjs/src/util.js +1 -1
  254. package/node_modules/undici/README.md +14 -5
  255. package/node_modules/undici/docs/docs/api/Client.md +4 -2
  256. package/node_modules/undici/docs/docs/api/Dispatcher.md +62 -27
  257. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +7 -5
  258. package/node_modules/undici/docs/docs/api/H2CClient.md +1 -1
  259. package/node_modules/undici/docs/docs/api/RedirectHandler.md +14 -9
  260. package/node_modules/undici/docs/docs/api/RetryAgent.md +0 -1
  261. package/node_modules/undici/docs/docs/api/RetryHandler.md +12 -14
  262. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +23 -0
  263. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +231 -0
  264. package/node_modules/undici/index.js +4 -2
  265. package/node_modules/undici/lib/api/api-connect.js +13 -11
  266. package/node_modules/undici/lib/api/api-pipeline.js +26 -13
  267. package/node_modules/undici/lib/api/api-request.js +45 -21
  268. package/node_modules/undici/lib/api/api-stream.js +81 -20
  269. package/node_modules/undici/lib/api/api-upgrade.js +21 -11
  270. package/node_modules/undici/lib/api/readable.js +3 -2
  271. package/node_modules/undici/lib/cache/memory-cache-store.js +1 -1
  272. package/node_modules/undici/lib/cache/sqlite-cache-store.js +6 -4
  273. package/node_modules/undici/lib/core/connect.js +17 -1
  274. package/node_modules/undici/lib/core/constants.js +1 -24
  275. package/node_modules/undici/lib/core/errors.js +2 -2
  276. package/node_modules/undici/lib/core/request.js +115 -18
  277. package/node_modules/undici/lib/core/socks5-client.js +24 -9
  278. package/node_modules/undici/lib/core/socks5-utils.js +32 -23
  279. package/node_modules/undici/lib/core/symbols.js +1 -0
  280. package/node_modules/undici/lib/core/util.js +70 -43
  281. package/node_modules/undici/lib/dispatcher/agent.js +47 -33
  282. package/node_modules/undici/lib/dispatcher/balanced-pool.js +21 -26
  283. package/node_modules/undici/lib/dispatcher/client-h1.js +98 -39
  284. package/node_modules/undici/lib/dispatcher/client-h2.js +603 -272
  285. package/node_modules/undici/lib/dispatcher/client.js +12 -5
  286. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +24 -5
  287. package/node_modules/undici/lib/dispatcher/dispatcher.js +0 -4
  288. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +107 -0
  289. package/node_modules/undici/lib/dispatcher/h2c-client.js +5 -5
  290. package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
  291. package/node_modules/undici/lib/dispatcher/pool.js +31 -6
  292. package/node_modules/undici/lib/dispatcher/proxy-agent.js +38 -13
  293. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +31 -9
  294. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +95 -80
  295. package/node_modules/undici/lib/global.js +13 -1
  296. package/node_modules/undici/lib/handler/cache-handler.js +16 -8
  297. package/node_modules/undici/lib/handler/decorator-handler.js +1 -2
  298. package/node_modules/undici/lib/handler/redirect-handler.js +5 -51
  299. package/node_modules/undici/lib/handler/retry-handler.js +15 -2
  300. package/node_modules/undici/lib/interceptor/cache.js +30 -17
  301. package/node_modules/undici/lib/interceptor/decompress.js +28 -2
  302. package/node_modules/undici/lib/interceptor/dns.js +1 -1
  303. package/node_modules/undici/lib/interceptor/redirect.js +3 -3
  304. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
  305. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
  306. package/node_modules/undici/lib/mock/mock-agent.js +8 -8
  307. package/node_modules/undici/lib/mock/mock-call-history.js +15 -15
  308. package/node_modules/undici/lib/mock/mock-utils.js +37 -22
  309. package/node_modules/undici/lib/mock/snapshot-agent.js +16 -6
  310. package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
  311. package/node_modules/undici/lib/util/cache.js +8 -7
  312. package/node_modules/undici/lib/util/runtime-features.js +3 -34
  313. package/node_modules/undici/lib/web/cache/cache.js +6 -8
  314. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +245 -150
  315. package/node_modules/undici/lib/web/fetch/body.js +3 -9
  316. package/node_modules/undici/lib/web/fetch/formdata-parser.js +17 -6
  317. package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
  318. package/node_modules/undici/lib/web/fetch/index.js +214 -221
  319. package/node_modules/undici/lib/web/webidl/index.js +7 -9
  320. package/node_modules/undici/lib/web/websocket/frame.js +1 -7
  321. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +13 -31
  322. package/node_modules/undici/lib/web/websocket/receiver.js +62 -22
  323. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +11 -17
  324. package/node_modules/undici/lib/web/websocket/websocket.js +6 -1
  325. package/node_modules/undici/package.json +9 -9
  326. package/node_modules/undici/types/agent.d.ts +0 -2
  327. package/node_modules/undici/types/client.d.ts +25 -19
  328. package/node_modules/undici/types/dispatcher.d.ts +7 -27
  329. package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
  330. package/node_modules/undici/types/formdata.d.ts +0 -6
  331. package/node_modules/undici/types/h2c-client.d.ts +6 -6
  332. package/node_modules/undici/types/header.d.ts +5 -0
  333. package/node_modules/undici/types/index.d.ts +3 -1
  334. package/node_modules/undici/types/interceptors.d.ts +1 -1
  335. package/node_modules/undici/types/pool.d.ts +0 -2
  336. package/node_modules/undici/types/proxy-agent.d.ts +2 -2
  337. package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
  338. package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
  339. package/node_modules/undici/types/socks5-proxy-agent.d.ts +2 -2
  340. package/node_modules/undici/types/webidl.d.ts +0 -1
  341. package/package.json +16 -9
  342. package/dist/extensions/forgecli/review-command.d.ts +0 -2
  343. package/dist/extensions/forgecli/review-command.js +0 -184
  344. package/dist/extensions/forgecli/review-command.js.map +0 -1
  345. package/dist/forge-payload/.tools/banners.cjs +0 -435
  346. package/dist/forge-payload/.tools/build-context-pack.cjs +0 -290
  347. package/dist/forge-payload/.tools/build-init-context.cjs +0 -322
  348. package/dist/forge-payload/.tools/build-overlay.cjs +0 -326
  349. package/dist/forge-payload/.tools/build-persona-pack.cjs +0 -226
  350. package/dist/forge-payload/.tools/collate.cjs +0 -1041
  351. package/dist/forge-payload/.tools/generation-manifest.cjs +0 -311
  352. package/dist/forge-payload/.tools/lib/forge-root.cjs +0 -59
  353. package/dist/forge-payload/.tools/lib/paths.cjs +0 -29
  354. package/dist/forge-payload/.tools/lib/pricing.cjs +0 -165
  355. package/dist/forge-payload/.tools/lib/project-root.cjs +0 -32
  356. package/dist/forge-payload/.tools/lib/result.js +0 -40
  357. package/dist/forge-payload/.tools/lib/store-facade.cjs +0 -162
  358. package/dist/forge-payload/.tools/lib/store-nlp.cjs +0 -250
  359. package/dist/forge-payload/.tools/lib/store-query-exec.cjs +0 -272
  360. package/dist/forge-payload/.tools/lib/validate.js +0 -141
  361. package/dist/forge-payload/.tools/manage-config.cjs +0 -340
  362. package/dist/forge-payload/.tools/manage-versions.cjs +0 -365
  363. package/dist/forge-payload/.tools/package.json +0 -3
  364. package/dist/forge-payload/.tools/parse-gates.cjs +0 -151
  365. package/dist/forge-payload/.tools/parse-verdict.cjs +0 -67
  366. package/dist/forge-payload/.tools/preflight-gate.cjs +0 -350
  367. package/dist/forge-payload/.tools/prompts/sprint-plan-prompt.md +0 -70
  368. package/dist/forge-payload/.tools/schemas/task-list.schema.json +0 -53
  369. package/dist/forge-payload/.tools/seed-store.cjs +0 -237
  370. package/dist/forge-payload/.tools/store-cli.cjs +0 -1226
  371. package/dist/forge-payload/.tools/store-query.cjs +0 -319
  372. package/dist/forge-payload/.tools/store.cjs +0 -315
  373. package/dist/forge-payload/.tools/substitute-placeholders.cjs +0 -625
  374. package/dist/forge-payload/.tools/validate-store.cjs +0 -593
  375. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package-lock.json +0 -24
  376. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package-lock.json +0 -92
  377. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package-lock.json +0 -31
  378. package/node_modules/undici/lib/handler/unwrap-handler.js +0 -100
  379. package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
  380. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  381. package/node_modules/undici/lib/util/promise.js +0 -28
  382. package/skills/refresh-kb-links/SKILL.md +0 -217
  383. package/skills/store-custodian/SKILL.md +0 -163
  384. package/skills/store-query-grammar/SKILL.md +0 -145
  385. package/skills/store-query-nlp/SKILL.md +0 -110
@@ -1,163 +0,0 @@
1
- ---
2
- name: store-custodian
3
- description: "Sole authorized gateway for reading and writing the Forge JSON store (.forge/store/). Use whenever a workflow needs to write sprints, tasks, bugs, features, or events — or read/list/validate/transition them. All store mutations MUST go through store-cli.cjs, never by writing files directly."
4
- allowed-tools:
5
- - Bash
6
- ---
7
-
8
- # forge:store-custodian
9
-
10
- The Store Custodian is the **sole authorized gateway** for the probabilistic
11
- layer (LLM-driven workflows and commands) to read and modify the JSON store at
12
- `.forge/store/`. All store mutations must go through `store-cli.cjs`.
13
-
14
- **Hard rule: never fall back to writing store files directly.** If the CLI
15
- fails, read the error, fix the data, and retry. If it persists after retries,
16
- report the error to the user and stop.
17
-
18
- ## FORGE_ROOT Resolution
19
-
20
- Before invoking any store-cli command, resolve the plugin root path:
21
-
22
- ```sh
23
- FORGE_ROOT=$(node -e "console.log(require('./.forge/config.json').paths.forgeRoot)")
24
- ```
25
-
26
- This reads the `paths.forgeRoot` field from the project config, which is set
27
- during `/forge:init` and refreshed by `/forge:update`. Do NOT hardcode the
28
- plugin install path.
29
-
30
- ## Invocation
31
-
32
- All commands follow this pattern:
33
-
34
- ```
35
- node "$FORGE_ROOT/tools/store-cli.cjs" <command> <args>
36
- ```
37
-
38
- Exit codes: **0** on success, **1** on failure (validation error, illegal
39
- transition, entity not found, etc.).
40
-
41
- ## Invocation Patterns
42
-
43
- ### Write / Read / Mutate
44
-
45
- | Intent | Command |
46
- |--------|---------|
47
- | Write a sprint | `node "$FORGE_ROOT/tools/store-cli.cjs" write sprint '{...}'` |
48
- | Write a task | `node "$FORGE_ROOT/tools/store-cli.cjs" write task '{...}'` |
49
- | Write a bug | `node "$FORGE_ROOT/tools/store-cli.cjs" write bug '{...}'` |
50
- | Write a feature | `node "$FORGE_ROOT/tools/store-cli.cjs" write feature '{...}'` |
51
- | Read a task | `node "$FORGE_ROOT/tools/store-cli.cjs" read task FORGE-S01-T01` |
52
- | Read a task (raw JSON) | `node "$FORGE_ROOT/tools/store-cli.cjs" read task FORGE-S01-T01 --json` |
53
- | Update task status | `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task FORGE-S01-T01 status implemented` |
54
- | Update bug status | `node "$FORGE_ROOT/tools/store-cli.cjs" update-status bug BUG-001 status triaged` |
55
- | Emit an event | `node "$FORGE_ROOT/tools/store-cli.cjs" emit FORGE-S01 '{...event-json...}'` |
56
- | Write a sidecar | `node "$FORGE_ROOT/tools/store-cli.cjs" emit FORGE-S01 '{...sidecar-json...}' --sidecar` |
57
- | Merge a sidecar | `node "$FORGE_ROOT/tools/store-cli.cjs" merge-sidecar FORGE-S01 20260415T141523Z_T01_plan_plan-task` |
58
- | Validate before write | `node "$FORGE_ROOT/tools/store-cli.cjs" validate task '{...}'` |
59
- | List entities | `node "$FORGE_ROOT/tools/store-cli.cjs" list task status=planned` |
60
- | List all sprints | `node "$FORGE_ROOT/tools/store-cli.cjs" list sprint` |
61
- | Delete an entity | `node "$FORGE_ROOT/tools/store-cli.cjs" delete task FORGE-S01-T01` |
62
- | Purge sprint events | `node "$FORGE_ROOT/tools/store-cli.cjs" purge-events FORGE-S01` |
63
- | Write collation state | `node "$FORGE_ROOT/tools/store-cli.cjs" write-collation-state '{...}'` |
64
- | Force a transition | `node "$FORGE_ROOT/tools/store-cli.cjs" update-status task T01 status committed --force` |
65
-
66
- ### Query
67
-
68
- Use the query engine to find entities by intent, sprint, or keyword — without manual KB navigation.
69
-
70
- | Intent | Command |
71
- |--------|---------|
72
- | Query by natural language | `node "$FORGE_ROOT/tools/store-cli.cjs" nlp "open bugs in S12"` |
73
- | Query sprint tasks/bugs | `node "$FORGE_ROOT/tools/store-cli.cjs" query --sprint S12` |
74
- | Query specific bug | `node "$FORGE_ROOT/tools/store-cli.cjs" query --bug {PREFIX}-BUG-047` |
75
- | Query specific task | `node "$FORGE_ROOT/tools/store-cli.cjs" query --task {PREFIX}-S12-T03` |
76
- | Keyword search | `node "$FORGE_ROOT/tools/store-cli.cjs" query --keyword auth` |
77
- | Project schema / grammar | `node "$FORGE_ROOT/tools/store-cli.cjs" schema` |
78
- | Query (strict mode, no NLP) | `node "$FORGE_ROOT/tools/store-cli.cjs" query --mode strict --sprint S12` |
79
-
80
- Query returns structured JSON: entity IDs, titles, statuses, relationships, fileRefs, INDEX.md excerpts.
81
- See `forge:store-query-nlp` for full output schema and confidence signals.
82
- See `forge:store-query-grammar` for NLP token vocabulary.
83
-
84
- ## Entity Types
85
-
86
- | Entity | ID Field | Directory |
87
- |--------|----------|-----------|
88
- | sprint | `sprintId` | `.forge/store/sprints/` |
89
- | task | `taskId` | `.forge/store/tasks/` |
90
- | bug | `bugId` | `.forge/store/bugs/` |
91
- | event | `eventId` | `.forge/store/events/{sprintId}/` |
92
- | feature | `id` | `.forge/store/features/` |
93
-
94
- ## Error Handling
95
-
96
- On exit code 1:
97
- 1. Read stderr for the validation error message.
98
- 2. Fix the data that caused the error (missing required fields, illegal
99
- transition, invalid JSON, etc.).
100
- 3. Retry the command (max 2 retries).
101
- 4. If the command still fails after retries, report the validation error to
102
- the user and stop. Do NOT fall back to writing store files directly.
103
-
104
- ## Commands Reference
105
-
106
- ### `write <entity> '<json>'`
107
-
108
- Write a full entity record. Validates against the schema before writing.
109
- Rejects on validation error (exit 1 + per-field stderr messages). No partial
110
- write on failure.
111
-
112
- ### `read <entity> <id> [--json]`
113
-
114
- Read an entity record. Pretty-printed by default. `--json` outputs raw JSON for
115
- parsing.
116
-
117
- ### `list <entity> [key=value ...]`
118
-
119
- List entities with optional key=value filter pairs. Numeric values are
120
- auto-parsed. Outputs JSON array.
121
-
122
- ### `delete <entity> <id>`
123
-
124
- Delete an entity record. No validation needed.
125
-
126
- ### `update-status <entity> <id> <field> <value> [--force]`
127
-
128
- Atomic status/enum field update with transition check. Reads the current
129
- record, verifies the transition is legal, applies the update, and writes back.
130
- Use `--force` to bypass the transition check (emits a warning on stderr).
131
-
132
- ### `emit <sprintId> '<json>' [--sidecar]`
133
-
134
- Write an event record. With `--sidecar`, writes a `_{eventId}_usage.json`
135
- ephemeral sidecar file instead of a canonical event. Sidecars require only an
136
- `eventId` field; they are merged into the canonical event later.
137
-
138
- ### `merge-sidecar <sprintId> <eventId>`
139
-
140
- Merge sidecar token fields into the canonical event, then delete the sidecar.
141
- Fails if either file is missing.
142
-
143
- ### `purge-events <sprintId>`
144
-
145
- Delete all event files for a sprint.
146
-
147
- ### `write-collation-state '<json>'`
148
-
149
- Write COLLATION_STATE.json to the store root. Delegates to the store facade.
150
-
151
- ### `validate <entity> '<json>'`
152
-
153
- Validate a record against the schema without writing. Reports errors on
154
- stderr, exits 1 on failure, exits 0 on success with `{"ok":true,"valid":true}`.
155
-
156
- ## Flags
157
-
158
- | Flag | Applies to | Effect |
159
- |------|-----------|--------|
160
- | `--dry-run` | All write commands | Validate and preview without writing |
161
- | `--force` | `update-status` | Bypass transition check (warns on stderr) |
162
- | `--json` | `read` | Output raw JSON (no pretty-print) |
163
- | `--sidecar` | `emit` | Write as sidecar file (ephemeral, `_-prefixed`) |
@@ -1,145 +0,0 @@
1
- ---
2
- name: store-query-grammar
3
- description: "Reference for the Forge NLP query grammar — entity synonyms, status synonyms, ordering tokens, FK phrases, and ID patterns. Use when constructing or debugging store-query-nlp queries, or to understand why a query returned unexpected results."
4
- allowed-tools:
5
- - Bash
6
- ---
7
-
8
- # forge:store-query-grammar
9
-
10
- NLP grammar reference for the Forge store query engine.
11
-
12
- The query engine (`store-cli.cjs nlp`) uses a 5-stage deterministic rule-based
13
- parser — no LLM, no network. This skill documents the token vocabulary so you
14
- can construct precise queries and debug unexpected parse results.
15
-
16
- ## Setup
17
-
18
- Dump the live grammar for the current project (includes project-specific ID patterns):
19
-
20
- ```sh
21
- FORGE_ROOT=$(node -e "console.log(require('./.forge/config.json').paths.forgeRoot)")
22
- node "$FORGE_ROOT/tools/store-cli.cjs" schema
23
- ```
24
-
25
- The `schema` command returns entity schemas, status enums, and the full grammar
26
- reference for the installed project prefix.
27
-
28
- ## Parser Stages
29
-
30
- ### Stage 1 — ID Patterns (highest priority)
31
-
32
- Matched first; consumed tokens are excluded from later stages.
33
-
34
- | Pattern | Example | Resolves to |
35
- |---------|---------|------------|
36
- | `{PREFIX}-S##-T##` | `WI-S12-T03` | task filter |
37
- | `{PREFIX}-BUG-###` | `WI-BUG-047` | bug filter |
38
- | `FEAT-###` | `FEAT-003` | feature filter |
39
- | `S##` | `S12` | sprint filter |
40
- | `sprint N` | `sprint 12` | sprint filter → `S12` |
41
-
42
- ### Stage 2 — Entity Detection
43
-
44
- The parser identifies the primary entity type from synonyms. First match wins.
45
-
46
- | Entity | Synonyms |
47
- |--------|---------|
48
- | sprints | sprint, sprints, release, releases, iteration, iterations |
49
- | tasks | task, tasks, item, items, work item, work items, todo, todos |
50
- | bugs | bug, bugs, defect, defects, issue, issues, problem, problems |
51
- | features | feature, features, epic, epics, capability, capabilities |
52
-
53
- Bigrams are matched before unigrams (e.g. `work item` → tasks).
54
-
55
- ### Stage 3 — Status / Severity Filters
56
-
57
- Maps natural-language status phrases to schema enum values per entity type.
58
-
59
- | Input phrase | tasks | bugs | sprints | features |
60
- |-------------|-------|------|---------|---------|
61
- | open / active / in progress | implementing | in-progress | active | active |
62
- | completed / done | committed | fixed | completed | shipped |
63
- | fixed | — | fixed | — | — |
64
- | planned / planning | planned | — | planning | — |
65
- | implementing | implementing | — | — | — |
66
- | implemented | implemented | — | — | — |
67
- | committed | committed | — | — | — |
68
- | draft | draft | — | — | draft |
69
- | abandoned | abandoned | — | abandoned | — |
70
- | retired | — | — | — | retired |
71
- | shipped | — | — | — | shipped |
72
- | triaged | — | triaged | — | — |
73
- | reported | — | reported | — | — |
74
- | blocked | blocked | — | — | — |
75
-
76
- Severity (bugs only, sets `severity` field not `status`):
77
-
78
- | Input | Severity |
79
- |-------|---------|
80
- | critical | critical |
81
- | major | major |
82
- | minor | minor |
83
-
84
- ### Stage 4 — FK Follow Phrases
85
-
86
- Trigger FK traversal in the result set.
87
-
88
- | Phrase | FK followed |
89
- |--------|-----------|
90
- | with sprint / sprint for / which sprint | `sprintId` |
91
- | with feature / feature for | `featureId` |
92
- | block / blocking / blocked | `blocksTask` (for bugs) or `blockedBy` (for tasks) |
93
-
94
- ### Stage 4b — Ordering and Limit Tokens
95
-
96
- | Token(s) | Effect |
97
- |----------|--------|
98
- | latest / newest / recent / most recent | sort desc, limit 1 |
99
- | oldest / earliest / first | sort asc, limit 1 |
100
- | last | sort desc, limit 1 |
101
- | top N / first N | sort desc/asc, limit N |
102
- | last N | sort desc, limit N |
103
- | how many / count of / number of / count | count mode (returns `{count: N}`) |
104
-
105
- ### Stage 5 — Keyword Extraction
106
-
107
- Remaining tokens (not consumed by stages 1–4, not in stop words, length > 1)
108
- become keyword match terms on the `title` field (word-boundary match).
109
-
110
- Stop words include all entity synonyms plus: list, all, the, show, find, what,
111
- which, are, in, for, about, related, to, of, and, with, details, status, how,
112
- many, there, a, an, is, that, this, on, by, me, give, get, tell, please, can,
113
- do, does, did, was, were, been, being, have, has, had, will, would, could,
114
- should, may, might, blocking, blocked, block, severity, titles, title.
115
-
116
- ## Debugging Queries
117
-
118
- If a query returns unexpected results, use `traversalTrace` in the output:
119
-
120
- ```json
121
- "traversalTrace": [
122
- "intent parsed via NLP rules",
123
- "listed tasks with filter {\"status\":\"implementing\"}: 7 results",
124
- "sorted tasks desc",
125
- "limited to 3 (of 7)",
126
- "plan confidence: high"
127
- ]
128
- ```
129
-
130
- Common debug patterns:
131
-
132
- | Symptom | Likely cause |
133
- |---------|-------------|
134
- | 0 results, retried | Status phrase didn't map to a valid enum for the detected entity type |
135
- | confidence: low | Filter value stripped — check the status mapping table above |
136
- | Wrong entity type | Entity synonym matched a stop word before the intended synonym |
137
- | Keyword matching too broadly | Term is short (≤1 char) or in stop words; try a more specific term |
138
- | Missing FK traversal | FK phrase not in stage 4 vocabulary; use `--with-sprint` / `--with-feature` flags instead |
139
-
140
- ## Query Composition Tips
141
-
142
- - Put entity type first: `"bugs in S12"` not `"S12 bugs"` — entity is detected in order
143
- - Use exact ID when known: `"WI-BUG-047"` is faster and more precise than `"bug about auth"`
144
- - Count before listing: `"how many open bugs"` before `"open bugs"` for large stores
145
- - Combine stages naturally: `"critical open bugs in S12 blocking tasks"` uses stages 1, 2, 3, 4 together
@@ -1,110 +0,0 @@
1
- ---
2
- name: store-query-nlp
3
- description: "Query the Forge store using natural language. Use when you need to find tasks, bugs, sprints, or features by intent — e.g. 'open bugs in S12', 'blocked tasks', 'tasks implementing the auth feature', 'how many bugs are critical'. Returns structured JSON with entity IDs, titles, statuses, relationships, file refs, and INDEX.md excerpts."
4
- allowed-tools:
5
- - Bash
6
- ---
7
-
8
- # forge:store-query-nlp
9
-
10
- Translate natural language intent into a structured Forge store query.
11
- Returns filtered, FK-resolved results with excerpts — replacing manual KB navigation.
12
-
13
- **When to use:** anytime you need to find entities without knowing exact IDs, or
14
- want filtered/sorted results from a sprint/feature/status. Replaces reading
15
- MASTER_INDEX.md manually when a focused query is sufficient.
16
-
17
- ## Setup
18
-
19
- Resolve the plugin root path before any invocation:
20
-
21
- ```sh
22
- FORGE_ROOT=$(node -e "console.log(require('./.forge/config.json').paths.forgeRoot)")
23
- ```
24
-
25
- ## Invocation
26
-
27
- ```sh
28
- node "$FORGE_ROOT/tools/store-cli.cjs" nlp "<natural language query>"
29
- ```
30
-
31
- Returns JSON to stdout. Exit 0 on success, 1 on error.
32
-
33
- ## Example Queries
34
-
35
- | Intent | Example |
36
- |--------|---------|
37
- | Bugs in a sprint | `"open bugs in S12"` |
38
- | Blocked tasks | `"blocked tasks"` |
39
- | Tasks by status | `"implementing tasks in S14"` |
40
- | Critical bugs | `"critical bugs"` |
41
- | Tasks for a feature | `"tasks for FEAT-003"` |
42
- | Sprint overview | `"sprint S12"` |
43
- | Specific bug | `"WI-BUG-047"` |
44
- | Specific task | `"WI-S12-T03"` |
45
- | Latest sprint | `"latest sprint"` |
46
- | Count query | `"how many open bugs"` |
47
- | Blocking chain | `"bugs blocking tasks in S12"` |
48
-
49
- ## Output Structure
50
-
51
- ```json
52
- {
53
- "query": "open bugs in S12",
54
- "path": "intent-nlp",
55
- "traversalTrace": ["..."],
56
- "results": [
57
- {
58
- "id": "WI-BUG-047",
59
- "title": "...",
60
- "status": "in-progress",
61
- "type": "bug",
62
- "relationships": { "sprintId": "S12", "blocksTask": ["WI-S12-T03"] },
63
- "fileRefs": { "json": ".forge/store/bugs/WI-BUG-047.json", "md": "engineering/bugs/..." },
64
- "excerpt": "First few sentences from INDEX.md..."
65
- }
66
- ],
67
- "relatedFileRefs": ["..."],
68
- "meta": { "mode": "auto", "engineVersion": "1.0.0", "totalTimeMs": 42 }
69
- }
70
- ```
71
-
72
- ## Interpreting Results
73
-
74
- - `traversalTrace` — explains the NLP parse path (entity detected, filters applied, FKs followed, confidence level)
75
- - `fileRefs.md` — path to the INDEX.md for this entity; read it for full context
76
- - `fileRefs.json` — path to the store JSON record; use with `store-cli read` for full data
77
- - `excerpt` — first 4 sentences from the INDEX.md; often sufficient without a Read() call
78
- - `relatedFileRefs` — flat list of all referenced files, ready for batch Read()
79
- - `meta.totalTimeMs` — wall-clock query time; typical range 5–80ms
80
-
81
- ## Confidence Signals
82
-
83
- Check `traversalTrace` for confidence:
84
-
85
- - `plan confidence: high` — all filters validated against schema enums/patterns
86
- - `plan confidence: low` — one or more filters were stripped as invalid; results may be broader than expected
87
- - `overall confidence: low (required retry)` — primary query returned 0 results; retried as keyword-only search
88
-
89
- When confidence is low, verify results or fall back to reading MASTER_INDEX.md.
90
-
91
- ## Mode Control
92
-
93
- ```sh
94
- # Explicit NLP mode (default for nlp subcommand)
95
- node "$FORGE_ROOT/tools/store-cli.cjs" nlp "open bugs in S12"
96
-
97
- # Strict mode — exact flags only, no NLP (baseline comparison)
98
- node "$FORGE_ROOT/tools/store-cli.cjs" query --mode strict --sprint S12 --status in-progress
99
- ```
100
-
101
- ## Fallback
102
-
103
- If the query returns 0 results or low confidence, fall back to:
104
-
105
- ```sh
106
- node "$FORGE_ROOT/tools/store-cli.cjs" list bug
107
- # Then scan titles manually
108
- ```
109
-
110
- Or read `engineering/MASTER_INDEX.md` directly.