@pikku/cli 0.12.155 → 0.12.159

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 (273) hide show
  1. package/console-app/assets/{HelpPanel-Ndvkqpn8.js → HelpPanel-C06T226y.js} +1 -1
  2. package/console-app/assets/{abnfDiagram-VCTEODGH-DvUR4gej.js → abnfDiagram-VCTEODGH-BVwdT3Es.js} +1 -1
  3. package/console-app/assets/architecture-7GRP2DOG-3y7bWtag.js +1 -0
  4. package/console-app/assets/{architectureDiagram-5GKGNRK7-HLwJ3llk.js → architectureDiagram-5GKGNRK7-XfzqZ3mW.js} +1 -1
  5. package/console-app/assets/{blockDiagram-I7D4REHJ-LMSdIVfc.js → blockDiagram-I7D4REHJ-B5omSqDK.js} +1 -1
  6. package/console-app/assets/{c4Diagram-7LVT6UL2-CcWW9nYv.js → c4Diagram-7LVT6UL2-DkPe7xCg.js} +1 -1
  7. package/console-app/assets/channel-CTiluQVw.js +1 -0
  8. package/console-app/assets/{chunk-4HAMMTFA-Dxcu8ptc.js → chunk-4HAMMTFA-QfSXT_X7.js} +1 -1
  9. package/console-app/assets/{chunk-75Z2AOVW-BBINCcJe.js → chunk-75Z2AOVW-h7UnPWNo.js} +1 -1
  10. package/console-app/assets/{chunk-DU6HZSFF-BgJhrYpo.js → chunk-DU6HZSFF-VaMy-LOI.js} +1 -1
  11. package/console-app/assets/{chunk-F27PBJKO-CctviqIo.js → chunk-F27PBJKO-toywqOqS.js} +1 -1
  12. package/console-app/assets/{chunk-GMAD6QVW-BJ-InAqp.js → chunk-GMAD6QVW-Cpa-YKLB.js} +1 -1
  13. package/console-app/assets/{chunk-GVQU2GXP-DaeerGJS.js → chunk-GVQU2GXP-BWSHPLNL.js} +1 -1
  14. package/console-app/assets/{chunk-IMKFNOWR-eOSAFAc9.js → chunk-IMKFNOWR-yhQzfQuj.js} +1 -1
  15. package/console-app/assets/{chunk-L3NEJ4N5-DRfMBpkp.js → chunk-L3NEJ4N5-C8pAfDlo.js} +1 -1
  16. package/console-app/assets/{chunk-OSK3NFVY-DMZ2WBA1.js → chunk-OSK3NFVY-749yk2fa.js} +1 -1
  17. package/console-app/assets/{chunk-P2QGCYS3-d0BFQiY1.js → chunk-P2QGCYS3-C1Y9GyYT.js} +1 -1
  18. package/console-app/assets/{chunk-POPQ4Y6H-D4zICDtR.js → chunk-POPQ4Y6H-DzI9aRsX.js} +1 -1
  19. package/console-app/assets/{chunk-PWAF6VOD-_v9wUl6m.js → chunk-PWAF6VOD-D3fAPSwz.js} +1 -1
  20. package/console-app/assets/{chunk-SHT3W25Y-DZ3Wa0Mc.js → chunk-SHT3W25Y-D9w7LzM9.js} +1 -1
  21. package/console-app/assets/{chunk-SVP7TREG-2yCR3ywB.js → chunk-SVP7TREG-D55MjOJw.js} +1 -1
  22. package/console-app/assets/{chunk-TICWLB2K-CtulM0X6.js → chunk-TICWLB2K-DV8q7H-z.js} +1 -1
  23. package/console-app/assets/chunk-XXDRQBXY-DBtYQykd.js +1 -0
  24. package/console-app/assets/classDiagram-ZZMXUADV-BnWa-i9n.js +1 -0
  25. package/console-app/assets/classDiagram-v2-VYDZK3BY-BnWa-i9n.js +1 -0
  26. package/console-app/assets/{cose-bilkent-JH36ORCC-DNc5wiJ_.js → cose-bilkent-JH36ORCC-CLedPW9a.js} +1 -1
  27. package/console-app/assets/{cynefin-OW5HDTMX-CQPn9kED.js → cynefin-OW5HDTMX-CS5NKw2p.js} +1 -1
  28. package/console-app/assets/{cynefinDiagram-5FMLGOSQ-CkW1ZG13.js → cynefinDiagram-5FMLGOSQ-DGTHW90E.js} +1 -1
  29. package/console-app/assets/{dagre-BcTdbH8b.js → dagre-BNQdos_2.js} +1 -1
  30. package/console-app/assets/{dagre-GXQ25YYZ-Cgvwy7_U.js → dagre-GXQ25YYZ-DHZ8wtwQ.js} +1 -1
  31. package/console-app/assets/{diagram-S7CK7UJ4-JB3GlMwZ.js → diagram-S7CK7UJ4-C41Begsy.js} +1 -1
  32. package/console-app/assets/{diagram-UQ7AKVKN-CaIeYJXa.js → diagram-UQ7AKVKN-CU8D-sRT.js} +1 -1
  33. package/console-app/assets/{diagram-VSXAHHWV-Cku8J3KG.js → diagram-VSXAHHWV-DTTiXYnQ.js} +1 -1
  34. package/console-app/assets/{diagram-VX7I27RA-Dp3jeYrS.js → diagram-VX7I27RA-BBy91pxm.js} +1 -1
  35. package/console-app/assets/{diagram-Z3DM3KII-B56Ys0Pf.js → diagram-Z3DM3KII-D50xTYe5.js} +1 -1
  36. package/console-app/assets/{ebnfDiagram-PWID7BFC-CfxeEpk1.js → ebnfDiagram-PWID7BFC-BHjnFZgE.js} +1 -1
  37. package/console-app/assets/{erDiagram-RLTQ6QDP-Dp9sOoSf.js → erDiagram-RLTQ6QDP-B4-yVo9b.js} +1 -1
  38. package/console-app/assets/eventmodeling-NTZA5JFV-C_IpFSCw.js +1 -0
  39. package/console-app/assets/flowDiagram-HODETNUW-Q90rgVpx.js +1 -0
  40. package/console-app/assets/{ganttDiagram-EL5Y4UJY-BsD1LYkb.js → ganttDiagram-EL5Y4UJY-D1T-2BlO.js} +1 -1
  41. package/console-app/assets/{gitGraph-4MIJSDKK-CSHhAZoD.js → gitGraph-4MIJSDKK-ClqKTUfQ.js} +1 -1
  42. package/console-app/assets/{gitGraphDiagram-WWUBYQGX-CZ_0OI7F.js → gitGraphDiagram-WWUBYQGX-ruq2MAhM.js} +1 -1
  43. package/console-app/assets/{graphlib-Bpf494dL.js → graphlib-D-vLYPdw.js} +1 -1
  44. package/console-app/assets/{index-DXtR4J7Y.js → index-BIEZPuyK.js} +131 -128
  45. package/console-app/assets/{info-A6RAGUB7-Cym2YsaS.js → info-A6RAGUB7-BGI-8HNB.js} +1 -1
  46. package/console-app/assets/{infoDiagram-27XIBGKW-n9atnl-K.js → infoDiagram-27XIBGKW-BGURgKHv.js} +1 -1
  47. package/console-app/assets/{ishikawaDiagram-5VMMS53U-BeLDkr8-.js → ishikawaDiagram-5VMMS53U-DzgAaPTR.js} +1 -1
  48. package/console-app/assets/{journeyDiagram-3NMN7TZE-B__R_eOL.js → journeyDiagram-3NMN7TZE-BsyWad8z.js} +1 -1
  49. package/console-app/assets/{kanban-definition-UXKFOSKX-Cwsl1hYB.js → kanban-definition-UXKFOSKX-g1nO2rWF.js} +1 -1
  50. package/console-app/assets/{line-UWFHtT2i.js → line-CeFoQ5y-.js} +1 -1
  51. package/console-app/assets/{linear-BHDHoGpb.js → linear-C4Pk-YMX.js} +1 -1
  52. package/console-app/assets/{mermaid-parser.core-CyGW9xht.js → mermaid-parser.core-U7wquvx8.js} +3 -3
  53. package/console-app/assets/{mermaid.core-zeBKxakC.js → mermaid.core-8TRpFRm9.js} +4 -4
  54. package/console-app/assets/{mindmap-definition-YA3MSWOX-bZ2kbbMM.js → mindmap-definition-YA3MSWOX-C7lzwqBX.js} +1 -1
  55. package/console-app/assets/{packet-AYTQ26CC-DtH3ZjsO.js → packet-AYTQ26CC-DiQV_rU3.js} +1 -1
  56. package/console-app/assets/{pegDiagram-XKGWAZYB-Cy-M_2Zc.js → pegDiagram-XKGWAZYB-63ajP7-W.js} +1 -1
  57. package/console-app/assets/{pie-WAS4IAKB-DEZDAaJW.js → pie-WAS4IAKB-B5q_o6dr.js} +1 -1
  58. package/console-app/assets/{pieDiagram-E7YTZNPT-Ce3Yl--P.js → pieDiagram-E7YTZNPT-BTbvj-by.js} +1 -1
  59. package/console-app/assets/{quadrantDiagram-AXDQQJYC-BTK8v4H5.js → quadrantDiagram-AXDQQJYC-CulqsAYd.js} +1 -1
  60. package/console-app/assets/{radar-RG4KPBEZ-CTPhaLOE.js → radar-RG4KPBEZ-CW_KoURS.js} +1 -1
  61. package/console-app/assets/{railroad-74A4TZTK-DMa9G1LV.js → railroad-74A4TZTK-CUmF6uBQ.js} +1 -1
  62. package/console-app/assets/railroad-abnf-HS5TGJTU-CcPw9q8a.js +1 -0
  63. package/console-app/assets/railroad-ebnf-LZEXJU2U-Ci_fZics.js +1 -0
  64. package/console-app/assets/railroad-peg-WCYAUIDC-DTsDykSf.js +1 -0
  65. package/console-app/assets/{railroadDiagram-O6MQD6OU-CYbkYMqD.js → railroadDiagram-O6MQD6OU-WlkBu_N3.js} +1 -1
  66. package/console-app/assets/{requirementDiagram-BXWQKSXE-DjWjfWOk.js → requirementDiagram-BXWQKSXE-CJK_CbPR.js} +1 -1
  67. package/console-app/assets/{sankeyDiagram-P5KCCOFB-6sAcPgDK.js → sankeyDiagram-P5KCCOFB-C466WOH8.js} +1 -1
  68. package/console-app/assets/{sequenceDiagram-WJ2MYXX4-DzyU1CIr.js → sequenceDiagram-WJ2MYXX4-CV0dCcj0.js} +1 -1
  69. package/console-app/assets/{src-0ppm3vZe.js → src-P4Nw8sY0.js} +1 -1
  70. package/console-app/assets/{stateDiagram-D77RDMKH-S5osVh5p.js → stateDiagram-D77RDMKH-HaLGm8V9.js} +1 -1
  71. package/console-app/assets/stateDiagram-v2-MP3YSRHH--GM14Hz5.js +1 -0
  72. package/console-app/assets/{swimlanes-42K2YHIH-Dd7HjelH.js → swimlanes-42K2YHIH-Bi-O5vWa.js} +1 -1
  73. package/console-app/assets/swimlanesDiagram-VR7AAH4N-_6rRi6Wt.js +8 -0
  74. package/console-app/assets/{timeline-definition-24CTP7MA-eZ3AIIpc.js → timeline-definition-24CTP7MA-B4h-gx-i.js} +1 -1
  75. package/console-app/assets/{treeView-Q6P3EWNA-DF5sOT6y.js → treeView-Q6P3EWNA-CXJ_pHQw.js} +1 -1
  76. package/console-app/assets/{treemap-WGGIJYW6-Bob0iUUb.js → treemap-WGGIJYW6-M84p2a_3.js} +1 -1
  77. package/console-app/assets/{vennDiagram-4TSXK5OY-CeowTqyG.js → vennDiagram-4TSXK5OY-BesF4k_r.js} +1 -1
  78. package/console-app/assets/{wardley-WFR3VGLG-DrnQFkZZ.js → wardley-WFR3VGLG-n9ulickP.js} +1 -1
  79. package/console-app/assets/{wardleyDiagram-VM6X3IG4-Dsfkp6D5.js → wardleyDiagram-VM6X3IG4-BG0nnWDf.js} +1 -1
  80. package/console-app/assets/{xychartDiagram-S5SC5T6Z-YC_qsmJw.js → xychartDiagram-S5SC5T6Z-BtOW7fpF.js} +1 -1
  81. package/console-app/index.html +1 -1
  82. package/dist/.pikku/addon/index.d.ts +1 -1
  83. package/dist/.pikku/addon/index.js +1 -1
  84. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +1 -1
  85. package/dist/.pikku/addon/pikku-addon-types.gen.js +1 -1
  86. package/dist/.pikku/agent/index.d.ts +1 -1
  87. package/dist/.pikku/agent/index.js +1 -1
  88. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  89. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  90. package/dist/.pikku/analytics/index.d.ts +1 -1
  91. package/dist/.pikku/analytics/index.js +1 -1
  92. package/dist/.pikku/analytics/pikku-analytics-types.gen.d.ts +1 -1
  93. package/dist/.pikku/analytics/pikku-analytics-types.gen.js +1 -1
  94. package/dist/.pikku/auth/index.d.ts +1 -1
  95. package/dist/.pikku/auth/index.js +1 -1
  96. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +1 -1
  97. package/dist/.pikku/auth/pikku-auth-types.gen.js +1 -1
  98. package/dist/.pikku/channel/index.d.ts +1 -1
  99. package/dist/.pikku/channel/index.js +1 -1
  100. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  101. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  102. package/dist/.pikku/cli/index.d.ts +1 -1
  103. package/dist/.pikku/cli/index.js +1 -1
  104. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  105. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  106. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  107. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
  108. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
  109. package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +11 -1
  110. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  111. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  112. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  113. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +30 -3
  114. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  115. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  116. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  117. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  118. package/dist/.pikku/error/index.d.ts +1 -1
  119. package/dist/.pikku/error/index.js +1 -1
  120. package/dist/.pikku/error/pikku-error-types.gen.d.ts +1 -1
  121. package/dist/.pikku/error/pikku-error-types.gen.js +1 -1
  122. package/dist/.pikku/function/index.d.ts +1 -1
  123. package/dist/.pikku/function/index.js +1 -1
  124. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  125. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  126. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  127. package/dist/.pikku/function/pikku-functions-meta.gen.json +23 -23
  128. package/dist/.pikku/function/pikku-functions.gen.js +1 -1
  129. package/dist/.pikku/gateway/index.d.ts +1 -1
  130. package/dist/.pikku/gateway/index.js +1 -1
  131. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +1 -1
  132. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +1 -1
  133. package/dist/.pikku/http/index.d.ts +1 -1
  134. package/dist/.pikku/http/index.js +1 -1
  135. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  136. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  137. package/dist/.pikku/mcp/index.d.ts +1 -1
  138. package/dist/.pikku/mcp/index.js +1 -1
  139. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  140. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  141. package/dist/.pikku/middleware/index.d.ts +1 -1
  142. package/dist/.pikku/middleware/index.js +1 -1
  143. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +1 -1
  144. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +1 -1
  145. package/dist/.pikku/pikku-bootstrap-scenarios.gen.d.ts +1 -1
  146. package/dist/.pikku/pikku-bootstrap-scenarios.gen.js +1 -1
  147. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  148. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  149. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  150. package/dist/.pikku/queue/index.d.ts +1 -1
  151. package/dist/.pikku/queue/index.js +1 -1
  152. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  153. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  154. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  155. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  156. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  157. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  158. package/dist/.pikku/scenarios/index.d.ts +1 -1
  159. package/dist/.pikku/scenarios/index.js +1 -1
  160. package/dist/.pikku/scenarios/pikku-personas.gen.js +1 -1
  161. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  162. package/dist/.pikku/scenarios/pikku-scenario-functions.gen.d.ts +1 -1
  163. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +1 -1
  164. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  165. package/dist/.pikku/scenarios/pikku-scenario-wirings.gen.d.ts +1 -1
  166. package/dist/.pikku/scenarios/schemas/register.gen.d.ts +1 -1
  167. package/dist/.pikku/scenarios/schemas/register.gen.js +1 -1
  168. package/dist/.pikku/scheduler/index.d.ts +1 -1
  169. package/dist/.pikku/scheduler/index.js +1 -1
  170. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  171. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  172. package/dist/.pikku/schemas/register.gen.js +1 -1
  173. package/dist/.pikku/schemas/schemas/FabricChangesAskInput.schema.json +1 -1
  174. package/dist/.pikku/schemas/schemas/FabricInitInput.schema.json +1 -1
  175. package/dist/.pikku/schemas/schemas/FabricLinkInput.schema.json +1 -1
  176. package/dist/.pikku/schemas/schemas/KnowledgeReconcileInput.schema.json +1 -1
  177. package/dist/.pikku/schemas/schemas/KnowledgeReconcileOutput.schema.json +1 -1
  178. package/dist/.pikku/schemas/schemas/PikkuSkillsInstallInput.schema.json +1 -1
  179. package/dist/.pikku/scopes/index.d.ts +1 -1
  180. package/dist/.pikku/scopes/index.js +1 -1
  181. package/dist/.pikku/scopes/pikku-flags.gen.d.ts +1 -1
  182. package/dist/.pikku/scopes/pikku-personas.gen.js +1 -1
  183. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  184. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +1 -1
  185. package/dist/.pikku/scopes/pikku-scope-types.gen.js +1 -1
  186. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +1 -1
  187. package/dist/.pikku/secrets/index.d.ts +1 -1
  188. package/dist/.pikku/secrets/index.js +1 -1
  189. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  190. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  191. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  192. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  193. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +1 -1
  194. package/dist/.pikku/services/pikku-meta-service.gen.js +1 -1
  195. package/dist/.pikku/setup/index.d.ts +1 -1
  196. package/dist/.pikku/setup/index.js +1 -1
  197. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +1 -1
  198. package/dist/.pikku/setup/pikku-setup-types.gen.js +1 -1
  199. package/dist/.pikku/trigger/index.d.ts +1 -1
  200. package/dist/.pikku/trigger/index.js +1 -1
  201. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  202. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  203. package/dist/.pikku/variables/index.d.ts +1 -1
  204. package/dist/.pikku/variables/index.js +1 -1
  205. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  206. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  207. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  208. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  209. package/dist/.pikku/workflow/index.d.ts +1 -1
  210. package/dist/.pikku/workflow/index.js +1 -1
  211. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  212. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  213. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  214. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  215. package/dist/bin/pikku-bin.mjs +3 -3
  216. package/dist/src/cli.wiring.js +19 -1
  217. package/dist/src/deploy/analyzer/analyzer.js +93 -4
  218. package/dist/src/deploy/codegen/per-unit-codegen.js +24 -0
  219. package/dist/src/fabric/fabric-commands.d.ts +9 -0
  220. package/dist/src/fabric/fabric-commands.js +11 -1
  221. package/dist/src/fabric/functions/changes-ask.function.d.ts +4 -0
  222. package/dist/src/fabric/functions/changes-ask.function.js +7 -1
  223. package/dist/src/fabric/functions/init.function.d.ts +4 -0
  224. package/dist/src/fabric/functions/init.function.js +5 -1
  225. package/dist/src/fabric/functions/link.function.d.ts +4 -0
  226. package/dist/src/fabric/functions/link.function.js +9 -1
  227. package/dist/src/fabric/lib/organization.d.ts +8 -0
  228. package/dist/src/fabric/lib/organization.js +26 -0
  229. package/dist/src/functions/commands/audit.js +4 -2
  230. package/dist/src/functions/commands/deploy-apply.js +128 -13
  231. package/dist/src/functions/commands/dev-mcp-manifests.d.ts +27 -0
  232. package/dist/src/functions/commands/dev-mcp-manifests.js +52 -0
  233. package/dist/src/functions/commands/dev.js +10 -30
  234. package/dist/src/functions/commands/knowledge-reconcile.d.ts +15 -3
  235. package/dist/src/functions/commands/knowledge-reconcile.js +1 -1
  236. package/dist/src/functions/commands/scenario.js +1 -1
  237. package/dist/src/functions/commands/skill-agents.d.ts +43 -0
  238. package/dist/src/functions/commands/skill-agents.js +135 -0
  239. package/dist/src/functions/commands/skills.d.ts +9 -0
  240. package/dist/src/functions/commands/skills.js +29 -2
  241. package/dist/src/functions/db/postgres/postgres-introspector.d.ts +6 -0
  242. package/dist/src/functions/db/postgres/postgres-introspector.js +7 -1
  243. package/dist/src/functions/knowledge/render.d.ts +1 -1
  244. package/dist/src/functions/knowledge/render.js +25 -2
  245. package/dist/src/functions/knowledge/schemas.d.ts +5 -1
  246. package/dist/src/functions/wirings/credentials/pikku-command-credentials.js +26 -2
  247. package/dist/src/functions/wirings/credentials/serialize-credentials-types.d.ts +6 -2
  248. package/dist/src/functions/wirings/credentials/serialize-credentials-types.js +9 -3
  249. package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.js +32 -5
  250. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +4 -1
  251. package/dist/src/functions/wirings/secrets/serialize-secrets-types.js +9 -4
  252. package/dist/src/functions/workflows/all.workflow.js +8 -0
  253. package/dist/src/server/bun-server-runner.js +1 -0
  254. package/dist/src/server/dev-server-runner.interface.d.ts +13 -0
  255. package/dist/src/server/node-server-runner.js +1 -0
  256. package/dist/src/services.js +1 -0
  257. package/dist/src/utils/mcp-surface.d.ts +8 -0
  258. package/dist/src/utils/mcp-surface.js +9 -0
  259. package/dist/tsconfig.tsbuildinfo +1 -1
  260. package/package.json +13 -13
  261. package/surface.json +25 -17
  262. package/console-app/assets/architecture-7GRP2DOG-DJkDVzM_.js +0 -1
  263. package/console-app/assets/channel-C6yZyX_m.js +0 -1
  264. package/console-app/assets/chunk-XXDRQBXY-CLsn_tEh.js +0 -1
  265. package/console-app/assets/classDiagram-ZZMXUADV-D7FKceOo.js +0 -1
  266. package/console-app/assets/classDiagram-v2-VYDZK3BY-D7FKceOo.js +0 -1
  267. package/console-app/assets/eventmodeling-NTZA5JFV-CccBkMWb.js +0 -1
  268. package/console-app/assets/flowDiagram-HODETNUW-Cp_XHTFC.js +0 -1
  269. package/console-app/assets/railroad-abnf-HS5TGJTU-K0DgRobv.js +0 -1
  270. package/console-app/assets/railroad-ebnf-LZEXJU2U-CHEGHd9y.js +0 -1
  271. package/console-app/assets/railroad-peg-WCYAUIDC-EYHvZbXp.js +0 -1
  272. package/console-app/assets/stateDiagram-v2-MP3YSRHH-BZUe_KiH.js +0 -1
  273. package/console-app/assets/swimlanesDiagram-VR7AAH4N-D6xRypPY.js +0 -8
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export const empty = null;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/scheduler` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/scheduler` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Scheduler-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Scheduler-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { addSchema } from '@pikku/core/schema';
5
5
  import * as BinaryInput from './schemas/BinaryInput.schema.json' with { type: 'json' };
@@ -1 +1 @@
1
- { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "apiUrl": { "type": "string" }, "changeId": { "type": "string" }, "question": { "type": "string", "minLength": 1 }, "authorName": { "type": "string" } }, "required": ["changeId", "question"], "additionalProperties": false }
1
+ { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "apiUrl": { "type": "string" }, "changeId": { "type": "string" }, "question": { "type": "string", "minLength": 1 }, "option": { "maxItems": 6, "type": "array", "items": { "type": "string", "minLength": 1 } }, "authorName": { "type": "string" } }, "required": ["changeId", "question"], "additionalProperties": false }
@@ -1 +1 @@
1
- { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "repo": { "type": "string" }, "name": { "type": "string" }, "branch": { "type": "string" }, "force": { "type": "boolean" }, "apiUrl": { "type": "string" } }, "required": ["repo"], "additionalProperties": false }
1
+ { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "repo": { "type": "string" }, "name": { "type": "string" }, "branch": { "type": "string" }, "force": { "type": "boolean" }, "apiUrl": { "type": "string" }, "organization": { "type": "string" } }, "required": ["repo"], "additionalProperties": false }
@@ -1 +1 @@
1
- { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "apiUrl": { "type": "string" }, "github": { "type": "boolean" }, "gitea": { "type": "boolean" }, "repoName": { "type": "string" } }, "additionalProperties": false }
1
+ { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "apiUrl": { "type": "string" }, "github": { "type": "boolean" }, "gitea": { "type": "boolean" }, "repoName": { "type": "string" }, "organization": { "type": "string" } }, "additionalProperties": false }
@@ -1 +1 @@
1
- { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": {}, "additionalProperties": false }
1
+ { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "require": { "type": "string" } }, "additionalProperties": false }
@@ -1 +1 @@
1
- { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "kind": { "type": "string", "enum": ["idle", "repair-note", "write-plan", "ask-user", "dispatch", "hold"] }, "reason": { "type": "string" }, "note": { "type": "string" }, "hold": { "type": "string" }, "notes": { "type": "array", "items": { "type": "string" } }, "question": { "type": "object", "properties": { "header": { "type": "string" }, "question": { "type": "string" }, "options": { "default": [], "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "description": { "type": "string" } }, "required": ["label"], "additionalProperties": false } } }, "required": ["header", "question", "options"], "additionalProperties": false } }, "required": ["kind", "reason"], "additionalProperties": false }
1
+ { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "kind": { "type": "string", "enum": ["idle", "repair-note", "write-plan", "ask-user", "dispatch", "hold"] }, "reason": { "type": "string" }, "note": { "type": "string" }, "hold": { "type": "string" }, "notes": { "type": "array", "items": { "type": "string" } }, "question": { "type": "object", "properties": { "header": { "type": "string" }, "question": { "type": "string" }, "options": { "default": [], "type": "array", "items": { "type": "object", "properties": { "label": { "type": "string" }, "description": { "type": "string" } }, "required": ["label"], "additionalProperties": false } } }, "required": ["header", "question", "options"], "additionalProperties": false }, "satisfied": { "type": "boolean" }, "required": { "type": "array", "items": { "type": "string" } } }, "required": ["kind", "reason"], "additionalProperties": false }
@@ -1 +1 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "agent": { "type": "string" }, "only": { "type": "string" }, "core": { "type": "boolean" }, "fabric": { "type": "boolean" }, "client": { "type": "boolean" }, "update": { "type": "boolean" } }, "additionalProperties": false, "definitions": {} }
1
+ { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "agent": { "type": "string" }, "only": { "type": "string" }, "core": { "type": "boolean" }, "fabric": { "type": "boolean" }, "client": { "type": "boolean" }, "update": { "type": "boolean" }, "agentExtensions": { "type": "string" }, "agentDir": { "type": "string" }, "agentSkillDir": { "type": "string" } }, "additionalProperties": false, "definitions": {} }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/scopes` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/scopes` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * This file was generated by the @pikku/cli
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * This file was generated by the @pikku/cli
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * This file was generated by the @pikku/cli
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineScope } from '@pikku/core/scope';
5
5
  export { defineSystemRole } from '@pikku/core/role';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineScope } from '@pikku/core/scope';
5
5
  export { defineSystemRole } from '@pikku/core/role';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * This file was generated by the @pikku/cli
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/secrets` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/secrets` resolves here.
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineSecret } from '@pikku/core/secret';
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineSecret } from '@pikku/core/secret';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { TypedSecretService as CoreTypedSecretService } from '@pikku/core/services';
5
5
  import type { SecretService } from '@pikku/core/services';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { TypedSecretService as CoreTypedSecretService } from '@pikku/core/services';
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { LocalMetaService } from '@pikku/core/services/local-meta';
5
5
  export declare class PikkuMetaService extends LocalMetaService {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { LocalMetaService } from '@pikku/core/services/local-meta';
5
5
  export class PikkuMetaService extends LocalMetaService {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/setup` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/setup` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Config and service factory definitions, declared once per application
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Config and service factory definitions, declared once per application
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/trigger` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/trigger` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Trigger-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Trigger-specific type definitions for tree-shaking optimization
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/variables` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/variables` resolves here.
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineVariable } from '@pikku/core/variable';
@@ -1,4 +1,4 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  export { defineVariable } from '@pikku/core/variable';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { TypedVariablesService as CoreTypedVariablesService } from '@pikku/core/services';
5
5
  import type { VariablesService } from '@pikku/core/services';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { TypedVariablesService as CoreTypedVariablesService, } from '@pikku/core/services';
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/workflow` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  /**
5
5
  * Subpath entry — `#pikku/workflow` resolves here.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import type { PikkuWorkflowGraphConfig, PikkuWorkflowGraphResult } from '@pikku/core/workflow';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import { pikkuWorkflowGraph as corePikkuWorkflowGraph } from '@pikku/core/workflow';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { pikkuState } from '@pikku/core/state';
5
5
  import allWorkflowMeta from './meta/allWorkflow.gen.json' with { type: 'json' };
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.155
2
+ * This file was generated by @pikku/cli@0.12.159
3
3
  */
4
4
  import { addWorkflow } from '@pikku/core/workflow';
5
5
  import './pikku-workflow-wirings-meta.gen.js';
@@ -11,8 +11,8 @@ async function checkForUpdate() {
11
11
  })
12
12
  if (!res.ok) return
13
13
  const { version: latest } = await res.json()
14
- if (latest !== '0.12.155') {
15
- process.stderr.write(`\n Update available 0.12.155 → ${latest}\n brew upgrade pikku or npm install -g @pikku/cli\n\n`)
14
+ if (latest !== '0.12.159') {
15
+ process.stderr.write(`\n Update available 0.12.159 → ${latest}\n brew upgrade pikku or npm install -g @pikku/cli\n\n`)
16
16
  }
17
17
  } catch {}
18
18
  }
@@ -20,4 +20,4 @@ import { PikkuCLI } from '../.pikku/cli/pikku-cli.gen.js'
20
20
  const updateCheck = checkForUpdate()
21
21
  await PikkuCLI(process.argv.slice(2))
22
22
  await updateCheck
23
- process.exit(0)
23
+ process.exit(process.exitCode ?? 0)
@@ -581,6 +581,12 @@ wireCLI({
581
581
  func: knowledgeReconcile,
582
582
  render: renderKnowledgeReconcile,
583
583
  description: 'Say the one thing to do next — repair a note, write a plan, ask the user, build, or nothing',
584
+ options: {
585
+ require: {
586
+ description: 'Exit non-zero unless the next action is one of these (comma-separated: idle, repair-note, write-plan, ask-user, dispatch, hold) — what turns this command into a gate a stage can be held to',
587
+ type: 'string',
588
+ },
589
+ },
584
590
  }),
585
591
  plan: {
586
592
  description: "Read and write a milestone's technical plan — the shape of the work, checked before it is built rather than after",
@@ -666,7 +672,7 @@ wireCLI({
666
672
  default: 'default',
667
673
  },
668
674
  strict: {
669
- description: 'Fail rather than pass a `then` that has no witness for --run, i.e. an assertion nobody checked on the surface its prose claims',
675
+ description: 'Every step must run on --run: an action may not fall back to its default binding, and a `then` may not be witnessed anywhere else. No effect on --run default',
670
676
  default: false,
671
677
  },
672
678
  spawn: {
@@ -1100,6 +1106,18 @@ wireCLI({
1100
1106
  description: 'Overwrite existing skills if already installed',
1101
1107
  default: false,
1102
1108
  },
1109
+ agentExtensions: {
1110
+ description: 'Comma-separated extension paths every projected agent loads — how a host that fences its writers or routes their model adds that to the agents it installs',
1111
+ type: 'string',
1112
+ },
1113
+ agentDir: {
1114
+ description: 'Where to write the projected agents, overriding the harness default — an absolute path for a host whose agents live outside the project',
1115
+ type: 'string',
1116
+ },
1117
+ agentSkillDir: {
1118
+ description: 'The skill directory a projected agent points at, for a host that relocates the installed skills afterwards',
1119
+ type: 'string',
1120
+ },
1103
1121
  },
1104
1122
  }),
1105
1123
  },
@@ -10,7 +10,56 @@ import { incompatibleServicesFor, resolveDeployTarget, } from '@pikku/inspector'
10
10
  import { relative } from 'node:path';
11
11
  import { isScenarioFunction, withoutScenarios, withoutScenarioWorkflows, } from '../../functions/wirings/scenarios/scenario-partition.js';
12
12
  import { toSafeKebab } from './naming.js';
13
+ import { mcpSurfaceSlug } from '../../utils/mcp-surface.js';
13
14
  import { createUnitResolver } from './grouping.js';
15
+ /**
16
+ * Where an MCP unit answers. Every runtime that mounts MCP defaults to `/mcp`,
17
+ * and pikku's own codegen never writes an `mcpPath` into the generated
18
+ * manifest, so the route table and the mount agree. A project that overrides
19
+ * `mcpPath` in `mcp.gen.json` moves the mount but not this — the analyzer never
20
+ * reads that file.
21
+ */
22
+ const MCP_PATH = '/mcp';
23
+ /** The discovery document `PikkuMCPServer` serves, per RFC 9728. */
24
+ const WELL_KNOWN_PRM = '/.well-known/oauth-protected-resource';
25
+ /**
26
+ * The routes an MCP unit has to receive to serve Streamable HTTP. Without them
27
+ * the unit deploys with an empty route table and nothing ever reaches it: POST
28
+ * carries the JSON-RPC calls, GET opens the server-to-client stream, and DELETE
29
+ * ends a session. The well-known paths are how a client discovers the
30
+ * authorization server when the endpoint refuses it.
31
+ *
32
+ * `bareDiscovery` is what keeps a multi-endpoint project's route table
33
+ * unambiguous. RFC 9728 folds the resource's path into the well-known route, so
34
+ * each endpoint's own document is distinct, but the bare path predates that and
35
+ * describes whichever resource answers it. Handing it to every unit would
36
+ * register the same route twice and let the router pick a winner, so only the
37
+ * project's default endpoint claims it; a surface serves its path-aware
38
+ * document alone.
39
+ *
40
+ * The ids are synthetic, as they are for the agent gateway's routes: no single
41
+ * pikku function answers here, because the MCP transport picks the tool out of
42
+ * the JSON-RPC body and dispatches it itself.
43
+ */
44
+ const mcpRoutes = (mcpPath, { bareDiscovery = true } = {}) => [
45
+ { method: 'post', route: mcpPath, pikkuFuncId: 'mcp:call' },
46
+ { method: 'get', route: mcpPath, pikkuFuncId: 'mcp:stream' },
47
+ { method: 'delete', route: mcpPath, pikkuFuncId: 'mcp:end' },
48
+ ...(bareDiscovery
49
+ ? [
50
+ {
51
+ method: 'get',
52
+ route: WELL_KNOWN_PRM,
53
+ pikkuFuncId: 'mcp:discovery',
54
+ },
55
+ ]
56
+ : []),
57
+ {
58
+ method: 'get',
59
+ route: `${WELL_KNOWN_PRM}${mcpPath}`,
60
+ pikkuFuncId: 'mcp:discovery',
61
+ },
62
+ ];
14
63
  export function analyzeDeployment(state, options) {
15
64
  const serverlessIncompatible = new Set(options.serverlessIncompatible ?? []);
16
65
  const defaultTarget = options.defaultTarget ?? 'serverless';
@@ -370,9 +419,25 @@ export function analyzeDeployment(state, options) {
370
419
  // place a scenario or step id can still arrive from raw state. A gateway that
371
420
  // lists one would depend on a unit that was never emitted.
372
421
  const deployableFuncId = (funcId) => !isScenarioFunction(state.functions.meta[funcId]);
373
- const mcpToolIds = values(state.mcpEndpoints.toolsMeta)
374
- .map((t) => t.pikkuFuncId)
375
- .filter(deployableFuncId);
422
+ // A tool naming a surface is served by that surface's endpoint and by no
423
+ // other, so it is grouped out of the default set here rather than pooled
424
+ // with it. Resources and prompts have no surface of their own yet.
425
+ const surfacePaths = state.mcpEndpoints.surfaces ?? {};
426
+ const toolIdsBySurface = new Map();
427
+ const mcpToolIds = [];
428
+ for (const tool of values(state.mcpEndpoints.toolsMeta)) {
429
+ if (!deployableFuncId(tool.pikkuFuncId))
430
+ continue;
431
+ const surface = tool.surface;
432
+ if (surface && surfacePaths[surface]) {
433
+ const ids = toolIdsBySurface.get(surface) ?? [];
434
+ ids.push(tool.pikkuFuncId);
435
+ toolIdsBySurface.set(surface, ids);
436
+ }
437
+ else {
438
+ mcpToolIds.push(tool.pikkuFuncId);
439
+ }
440
+ }
376
441
  const mcpResourceIds = values(state.mcpEndpoints.resourcesMeta)
377
442
  .map((r) => r.pikkuFuncId)
378
443
  .filter(deployableFuncId);
@@ -388,6 +453,30 @@ export function analyzeDeployment(state, options) {
388
453
  mcpToolIds.push(funcId);
389
454
  }
390
455
  }
456
+ for (const [surface, toolIds] of toolIdsBySurface) {
457
+ const unitName = `mcp-${mcpSurfaceSlug(surface)}`;
458
+ units.push({
459
+ name: unitName,
460
+ role: 'mcp',
461
+ target: 'serverless',
462
+ functionIds: [],
463
+ services: [],
464
+ dependsOn: toolIds.map((id) => unitFor(id)),
465
+ handlers: [
466
+ {
467
+ type: 'fetch',
468
+ routes: mcpRoutes(surfacePaths[surface], { bareDiscovery: false }),
469
+ },
470
+ ],
471
+ tags: collectTags(toolIds, tagsFor),
472
+ });
473
+ mcpEndpoints.push({
474
+ unitName,
475
+ toolFunctionIds: toolIds,
476
+ resourceFunctionIds: [],
477
+ promptFunctionIds: [],
478
+ });
479
+ }
391
480
  const allMcpIds = [...mcpToolIds, ...mcpResourceIds, ...mcpPromptIds];
392
481
  if (allMcpIds.length > 0) {
393
482
  const unitName = 'mcp-server';
@@ -399,7 +488,7 @@ export function analyzeDeployment(state, options) {
399
488
  functionIds: [], // No function code bundled
400
489
  services: [],
401
490
  dependsOn: mcpFuncUnitNames,
402
- handlers: [{ type: 'fetch', routes: [] }],
491
+ handlers: [{ type: 'fetch', routes: mcpRoutes(MCP_PATH) }],
403
492
  tags: collectTags(allMcpIds, tagsFor),
404
493
  });
405
494
  mcpEndpoints.push({
@@ -99,6 +99,30 @@ export function collectFilterNames(unit, manifest, inspectorState, workflowQueue
99
99
  for (const id of channelDef.functionIds)
100
100
  names.add(id);
101
101
  }
102
+ // A CLI channel is a whole program's transport, not a set of commands.
103
+ //
104
+ // `wireCLI` generates this channel and tags it ['cli', <program>]. Its
105
+ // own wirings are the per-command ones plus `__help` and `__raw`, and
106
+ // those two resolve against `CLIMeta.programs[<program>]` rather than
107
+ // against a wiring — so without the program the channel connects, serves
108
+ // a named command, and answers `__help` with "Program not found".
109
+ //
110
+ // CLI programs are filtered by COMMAND name (see the inspector's
111
+ // filter-inspector-state), and a command name matches nothing in the set
112
+ // above, so every command is dropped and the empty program with it. The
113
+ // program's commands are what has to be asked for.
114
+ if (unit.tags.includes('cli')) {
115
+ const programs = inspectorState.cli?.meta?.programs ?? {};
116
+ for (const tag of unit.tags) {
117
+ const programMeta = programs[tag];
118
+ if (!programMeta)
119
+ continue;
120
+ names.add(tag);
121
+ for (const commandName of Object.keys(programMeta.commands ?? {})) {
122
+ names.add(commandName);
123
+ }
124
+ }
125
+ }
102
126
  break;
103
127
  }
104
128
  case 'function': {