@pikku/cli 0.12.0 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/cli.schema.json +1 -1
  2. package/console-app/assets/index-DiYPTQU_.js +676 -0
  3. package/console-app/index.html +6 -1
  4. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +30 -3
  5. package/dist/.pikku/agent/pikku-agent-types.gen.js +13 -0
  6. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +2 -2
  7. package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +1 -1
  8. package/dist/.pikku/agent/pikku-agent-wirings.gen.js +1 -1
  9. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  10. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  11. package/dist/.pikku/channel/pikku-channels-meta.gen.js +2 -2
  12. package/dist/.pikku/channel/pikku-channels.gen.d.ts +1 -1
  13. package/dist/.pikku/channel/pikku-channels.gen.js +1 -1
  14. package/dist/.pikku/cli/pikku-cli-channel.js +57 -3
  15. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  16. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  17. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  18. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  19. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +2 -2
  20. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +228 -10
  21. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  22. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  23. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  24. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  25. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  26. package/dist/.pikku/function/pikku-function-types.gen.d.ts +14 -11
  27. package/dist/.pikku/function/pikku-function-types.gen.js +25 -13
  28. package/dist/.pikku/function/pikku-functions-meta.gen.js +2 -2
  29. package/dist/.pikku/function/pikku-functions-meta.gen.json +359 -105
  30. package/dist/.pikku/function/pikku-functions.gen.js +3 -3
  31. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  32. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  33. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +2 -2
  34. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -1
  35. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
  36. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  37. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  38. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +2 -2
  39. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +1 -1
  40. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +1 -1
  41. package/dist/.pikku/pikku-bootstrap.gen.js +2 -2
  42. package/dist/.pikku/pikku-services.gen.d.ts +2 -1
  43. package/dist/.pikku/pikku-services.gen.js +1 -0
  44. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  45. package/dist/.pikku/pikku-types.gen.js +1 -1
  46. package/dist/.pikku/pikku-websocket.gen.d.ts +1 -1
  47. package/dist/.pikku/pikku-websocket.gen.js +1 -1
  48. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  49. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  50. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +2 -2
  51. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  52. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  53. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +1 -1
  54. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +2 -2
  55. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +15 -6
  56. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  57. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  58. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +2 -2
  59. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +1 -1
  60. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +1 -1
  61. package/dist/.pikku/schemas/register.gen.js +15 -5
  62. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  63. package/dist/.pikku/schemas/schemas/PikkuNewAddonInput.schema.json +1 -0
  64. package/dist/.pikku/schemas/schemas/PikkuNewFunctionInput.schema.json +1 -0
  65. package/dist/.pikku/schemas/schemas/PikkuNewMiddlewareInput.schema.json +1 -0
  66. package/dist/.pikku/schemas/schemas/PikkuNewPermissionInput.schema.json +1 -0
  67. package/dist/.pikku/schemas/schemas/PikkuNewWiringInput.schema.json +1 -0
  68. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  69. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  70. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  71. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  72. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  73. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  74. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  75. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  76. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  77. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  78. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  79. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  80. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +2 -2
  81. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +1 -1
  82. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  83. package/dist/src/cli.wiring.js +190 -9
  84. package/dist/src/functions/commands/all.js +6 -6
  85. package/dist/src/functions/commands/info.d.ts +9 -0
  86. package/dist/src/functions/commands/info.js +283 -0
  87. package/dist/src/functions/commands/new-addon.d.ts +34 -0
  88. package/dist/src/functions/commands/new-addon.js +636 -0
  89. package/dist/src/functions/commands/new-function.d.ts +10 -0
  90. package/dist/src/functions/commands/new-function.js +79 -0
  91. package/dist/src/functions/commands/new-middleware.d.ts +10 -0
  92. package/dist/src/functions/commands/new-middleware.js +48 -0
  93. package/dist/src/functions/commands/new-permission.d.ts +10 -0
  94. package/dist/src/functions/commands/new-permission.js +45 -0
  95. package/dist/src/functions/commands/new-wiring.d.ts +10 -0
  96. package/dist/src/functions/commands/new-wiring.js +102 -0
  97. package/dist/src/functions/commands/pikku-command-bootstrap.js +11 -40
  98. package/dist/src/functions/commands/versions-check.js +85 -3
  99. package/dist/src/functions/commands/versions-update.js +1 -1
  100. package/dist/src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.js +0 -4
  101. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.js +3 -2
  102. package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.js +5 -5
  103. package/dist/src/functions/wirings/ai-agent/serialize-agent-map.d.ts +1 -1
  104. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.d.ts +1 -1
  105. package/dist/src/functions/wirings/ai-agent/serialize-ai-agent-types.js +48 -3
  106. package/dist/src/functions/wirings/ai-agent/serialize-public-agent.js +30 -52
  107. package/dist/src/functions/wirings/channels/pikku-channels.js +1 -1
  108. package/dist/src/functions/wirings/channels/pikku-command-channel-types.js +2 -2
  109. package/dist/src/functions/wirings/channels/pikku-command-channels.js +1 -1
  110. package/dist/src/functions/wirings/channels/serialize-typed-channel-map.d.ts +4 -4
  111. package/dist/src/functions/wirings/cli/pikku-command-cli.js +1 -1
  112. package/dist/src/functions/wirings/cli/serialize-channel-cli-client.d.ts +2 -2
  113. package/dist/src/functions/wirings/cli/serialize-channel-cli.d.ts +1 -1
  114. package/dist/src/functions/wirings/cli/serialize-local-cli-bootstrap.d.ts +1 -1
  115. package/dist/src/functions/wirings/console/pikku-command-console-functions.js +2 -1
  116. package/dist/src/functions/wirings/console/pikku-command-nodes-meta.js +1 -1
  117. package/dist/src/functions/wirings/console/serialize-console-functions.d.ts +1 -1
  118. package/dist/src/functions/wirings/console/serialize-console-functions.js +18 -157
  119. package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -0
  120. package/dist/src/functions/wirings/functions/pikku-command-addon-types.js +33 -0
  121. package/dist/src/functions/wirings/functions/pikku-command-function-types-split.js +1 -1
  122. package/dist/src/functions/wirings/functions/pikku-command-function-types.js +4 -4
  123. package/dist/src/functions/wirings/functions/pikku-command-functions.js +8 -14
  124. package/dist/src/functions/wirings/functions/schemas.js +1 -1
  125. package/dist/src/functions/wirings/functions/serialize-addon-types.d.ts +1 -0
  126. package/dist/src/functions/wirings/functions/{serialize-external-types.js → serialize-addon-types.js} +16 -15
  127. package/dist/src/functions/wirings/functions/serialize-function-imports.d.ts +3 -3
  128. package/dist/src/functions/wirings/functions/serialize-function-imports.js +3 -3
  129. package/dist/src/functions/wirings/functions/serialize-function-types.js +28 -14
  130. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.d.ts +1 -1
  131. package/dist/src/functions/wirings/functions/serialize-pikku-types-hub.js +2 -2
  132. package/dist/src/functions/wirings/http/pikku-command-http-routes.js +1 -1
  133. package/dist/src/functions/wirings/http/pikku-http-routes.js +1 -1
  134. package/dist/src/functions/wirings/http/serialize-typed-http-map.d.ts +3 -3
  135. package/dist/src/functions/wirings/mcp/pikku-command-mcp.js +1 -1
  136. package/dist/src/functions/wirings/package/pikku-command-package.js +5 -5
  137. package/dist/src/functions/wirings/package/serialize-package.js +2 -2
  138. package/dist/src/functions/wirings/permissions/pikku-command-permissions.js +0 -5
  139. package/dist/src/functions/wirings/queue/serialize-queue-map.d.ts +2 -2
  140. package/dist/src/functions/wirings/queue/serialize-queue-meta.d.ts +1 -1
  141. package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.js +6 -6
  142. package/dist/src/functions/wirings/rpc/pikku-command-rpc.js +2 -4
  143. package/dist/src/functions/wirings/rpc/serialize-public-rpc.js +25 -16
  144. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +43 -7
  145. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.d.ts +8 -3
  146. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +41 -31
  147. package/dist/src/functions/wirings/scheduler/serialize-scheduler-meta.d.ts +1 -1
  148. package/dist/src/functions/wirings/secrets/serialize-secrets-types.d.ts +2 -2
  149. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.d.ts +1 -1
  150. package/dist/src/functions/wirings/triggers/serialize-trigger-meta.js +2 -2
  151. package/dist/src/functions/wirings/variables/serialize-variables-types.d.ts +2 -2
  152. package/dist/src/functions/wirings/workflow/pikku-command-workflow.js +2 -2
  153. package/dist/src/functions/wirings/workflow/serialize-workflow-map.d.ts +2 -2
  154. package/dist/src/functions/wirings/workflow/serialize-workflow-meta.js +2 -2
  155. package/dist/src/services/cli-logger-forwarder.service.d.ts +4 -3
  156. package/dist/src/services/cli-logger.service.d.ts +3 -2
  157. package/dist/src/services.d.ts +4 -3
  158. package/dist/src/services.js +2 -3
  159. package/dist/src/utils/check-required-types.d.ts +1 -1
  160. package/dist/src/utils/contract-versions.d.ts +1 -1
  161. package/dist/src/utils/file-writer.d.ts +6 -1
  162. package/dist/src/utils/file-writer.js +14 -1
  163. package/dist/src/utils/generate-bootstrap-file.d.ts +2 -2
  164. package/dist/src/utils/openapi/codegen.d.ts +19 -0
  165. package/dist/src/utils/openapi/codegen.js +288 -0
  166. package/dist/src/utils/openapi/naming.d.ts +30 -0
  167. package/dist/src/utils/openapi/naming.js +167 -0
  168. package/dist/src/utils/openapi/parse-openapi.d.ts +36 -0
  169. package/dist/src/utils/openapi/parse-openapi.js +196 -0
  170. package/dist/src/utils/openapi/zod-codegen.d.ts +53 -0
  171. package/dist/src/utils/openapi/zod-codegen.js +251 -0
  172. package/dist/src/utils/pikku-cli-config.d.ts +2 -2
  173. package/dist/src/utils/pikku-cli-config.js +8 -14
  174. package/dist/src/utils/pikku-files-and-methods.d.ts +1 -1
  175. package/dist/src/utils/pikku-files-and-methods.js +1 -1
  176. package/dist/src/utils/serialize-import-map.d.ts +2 -2
  177. package/dist/src/utils/serialize-import-map.js +1 -1
  178. package/dist/src/utils/serialize-meta-ts.js +1 -1
  179. package/dist/src/utils/serialize-schemas.d.ts +2 -2
  180. package/dist/tsconfig.tsbuildinfo +1 -1
  181. package/package.json +3 -3
  182. package/console-app/assets/index-C19L3UJu.js +0 -637
  183. package/dist/src/functions/wirings/functions/pikku-command-external-types.d.ts +0 -1
  184. package/dist/src/functions/wirings/functions/pikku-command-external-types.js +0 -33
  185. package/dist/src/functions/wirings/functions/serialize-external-types.d.ts +0 -1
@@ -1,4 +1,4 @@
1
1
  export {};
2
2
  /**
3
- * This file was generated by @pikku/cli@0.12.0
3
+ * This file was generated by @pikku/cli@0.12.1
4
4
  */
@@ -1,4 +1,4 @@
1
1
  export {};
2
2
  /**
3
- * This file was generated by @pikku/cli@0.12.0
3
+ * This file was generated by @pikku/cli@0.12.1
4
4
  */
@@ -12,6 +12,13 @@ import { watch } from './functions/commands/watch.js';
12
12
  import { consoleCommand } from './functions/commands/console.js';
13
13
  import { pikkuVersionsInit } from './functions/commands/versions-init.js';
14
14
  import { pikkuVersionsCheck } from './functions/commands/versions-check.js';
15
+ import { pikkuVersionsUpdate } from './functions/commands/versions-update.js';
16
+ import { pikkuNewFunction } from './functions/commands/new-function.js';
17
+ import { pikkuNewWiring } from './functions/commands/new-wiring.js';
18
+ import { pikkuNewMiddleware } from './functions/commands/new-middleware.js';
19
+ import { pikkuNewPermission } from './functions/commands/new-permission.js';
20
+ import { pikkuNewAddon } from './functions/commands/new-addon.js';
21
+ import { pikkuInfoFunctions, pikkuInfoTags, pikkuInfoMiddleware, pikkuInfoPermissions, } from './functions/commands/info.js';
15
22
  // import { clientCLIRenderer } from './services.js'
16
23
  wireCLI({
17
24
  program: 'pikku',
@@ -119,18 +126,192 @@ wireCLI({
119
126
  func: pikkuNext,
120
127
  description: 'Generate Next.js backend and HTTP wrappers',
121
128
  }),
122
- init: pikkuCLICommand({
123
- func: pikkuVersionsInit,
124
- description: 'Initialize project',
129
+ new: {
130
+ description: 'Scaffold new functions and wirings',
131
+ subcommands: {
132
+ function: pikkuCLICommand({
133
+ func: pikkuNewFunction,
134
+ description: 'Create a new Pikku function file',
135
+ parameters: '<name>',
136
+ options: {
137
+ type: {
138
+ description: 'Function type: func, sessionless (default), or void',
139
+ short: 't',
140
+ default: 'sessionless',
141
+ },
142
+ },
143
+ }),
144
+ wiring: pikkuCLICommand({
145
+ func: pikkuNewWiring,
146
+ description: 'Create a new wiring file',
147
+ parameters: '<name>',
148
+ options: {
149
+ type: {
150
+ description: 'Wiring type: http (default), channel, scheduler, queue, mcp, cli, or trigger',
151
+ short: 't',
152
+ default: 'http',
153
+ },
154
+ },
155
+ }),
156
+ middleware: pikkuCLICommand({
157
+ func: pikkuNewMiddleware,
158
+ description: 'Create a new middleware file',
159
+ parameters: '<name>',
160
+ options: {
161
+ type: {
162
+ description: 'Middleware type: simple (default) or factory',
163
+ short: 't',
164
+ default: 'simple',
165
+ },
166
+ },
167
+ }),
168
+ permission: pikkuCLICommand({
169
+ func: pikkuNewPermission,
170
+ description: 'Create a new permission file',
171
+ parameters: '<name>',
172
+ options: {
173
+ type: {
174
+ description: 'Permission type: simple (default) or factory',
175
+ short: 't',
176
+ default: 'simple',
177
+ },
178
+ },
179
+ }),
180
+ addon: pikkuCLICommand({
181
+ func: pikkuNewAddon,
182
+ description: 'Scaffold a new addon package',
183
+ parameters: '<name>',
184
+ options: {
185
+ displayName: {
186
+ description: 'Human-readable display name (defaults to PascalCase of name)',
187
+ },
188
+ description: {
189
+ description: 'Package description (defaults to "{displayName} integration for Pikku")',
190
+ },
191
+ category: {
192
+ description: 'Forge category (defaults to "General")',
193
+ default: 'General',
194
+ },
195
+ dir: {
196
+ description: 'Override output directory (defaults to scaffold.addonDir or cwd)',
197
+ short: 'd',
198
+ },
199
+ secret: {
200
+ description: 'Include secret schema file',
201
+ default: false,
202
+ },
203
+ variable: {
204
+ description: 'Include variable definition file',
205
+ default: false,
206
+ },
207
+ oauth: {
208
+ description: 'Include OAuth2 credential wiring and OAuth2Client-based API service',
209
+ default: false,
210
+ },
211
+ test: {
212
+ description: 'Include test harness (default: true)',
213
+ default: true,
214
+ },
215
+ openapi: {
216
+ description: 'Path to OpenAPI YAML/JSON spec to generate functions from',
217
+ },
218
+ },
219
+ }),
220
+ },
221
+ },
222
+ versions: {
223
+ description: 'Manage function contract versions',
224
+ subcommands: {
225
+ init: pikkuCLICommand({
226
+ func: pikkuVersionsInit,
227
+ description: 'Initialize the version manifest (versions.json)',
228
+ options: {
229
+ force: {
230
+ description: 'Overwrite existing manifest',
231
+ },
232
+ },
233
+ }),
234
+ check: pikkuCLICommand({
235
+ func: pikkuVersionsCheck,
236
+ description: 'Validate function contracts against the version manifest',
237
+ }),
238
+ update: pikkuCLICommand({
239
+ func: pikkuVersionsUpdate,
240
+ description: 'Update the version manifest with current contract hashes',
241
+ }),
242
+ },
243
+ },
244
+ info: pikkuCLICommand({
245
+ func: pikkuInfoFunctions,
246
+ description: 'Show information about Pikku project resources',
125
247
  options: {
126
- force: {
127
- description: 'Overwrite existing manifest',
248
+ limit: {
249
+ description: 'Maximum number of rows to display',
250
+ default: '50',
251
+ },
252
+ verbose: {
253
+ description: 'Show additional details (file paths, services, etc.)',
254
+ default: false,
128
255
  },
129
256
  },
130
- }),
131
- 'versions-check': pikkuCLICommand({
132
- func: pikkuVersionsCheck,
133
- description: 'Validate function contracts against the version manifest',
257
+ subcommands: {
258
+ functions: pikkuCLICommand({
259
+ func: pikkuInfoFunctions,
260
+ description: 'List all registered functions',
261
+ options: {
262
+ limit: {
263
+ description: 'Maximum number of rows to display',
264
+ default: '50',
265
+ },
266
+ verbose: {
267
+ description: 'Show additional details (type, middleware, file)',
268
+ default: false,
269
+ },
270
+ },
271
+ }),
272
+ tags: pikkuCLICommand({
273
+ func: pikkuInfoTags,
274
+ description: 'List all tags with associated functions, middleware, and permissions',
275
+ options: {
276
+ limit: {
277
+ description: 'Maximum number of rows to display',
278
+ default: '50',
279
+ },
280
+ verbose: {
281
+ description: 'Show names instead of counts',
282
+ default: false,
283
+ },
284
+ },
285
+ }),
286
+ middleware: pikkuCLICommand({
287
+ func: pikkuInfoMiddleware,
288
+ description: 'List all middleware definitions',
289
+ options: {
290
+ limit: {
291
+ description: 'Maximum number of rows to display',
292
+ default: '50',
293
+ },
294
+ verbose: {
295
+ description: 'Show additional details (sourceFile, services)',
296
+ default: false,
297
+ },
298
+ },
299
+ }),
300
+ permissions: pikkuCLICommand({
301
+ func: pikkuInfoPermissions,
302
+ description: 'List all permission definitions',
303
+ options: {
304
+ limit: {
305
+ description: 'Maximum number of rows to display',
306
+ default: '50',
307
+ },
308
+ verbose: {
309
+ description: 'Show additional details (sourceFile, services)',
310
+ default: false,
311
+ },
312
+ },
313
+ }),
314
+ },
134
315
  }),
135
316
  },
136
317
  });
@@ -16,7 +16,7 @@ export const all = pikkuVoidFunc({
16
16
  await rpc.invoke('pikkuFunctionTypesSplit', null);
17
17
  await rpc.invoke('pikkuTriggerTypes', null);
18
18
  await rpc.invoke('pikkuAIAgentTypes', null);
19
- if (!config.externalPackage) {
19
+ if (!config.addon) {
20
20
  await rpc.invoke('pikkuHTTPTypes', null);
21
21
  await rpc.invoke('pikkuChannelTypes', null);
22
22
  await rpc.invoke('pikkuSchedulerTypes', null);
@@ -53,11 +53,11 @@ export const all = pikkuVoidFunc({
53
53
  await rpc.invoke('pikkuSecrets', null);
54
54
  await rpc.invoke('pikkuVariableDefinitionTypes', null);
55
55
  await rpc.invoke('pikkuVariables', null);
56
- await rpc.invoke('pikkuExternalTypes', null);
56
+ await rpc.invoke('pikkuAddonTypes', null);
57
57
  if (hasInternalRPCs) {
58
58
  allImports.push(config.rpcInternalWiringMetaFile);
59
59
  }
60
- if (agents || !config.externalPackage) {
60
+ if (agents || !config.addon) {
61
61
  await getInspectorState(true);
62
62
  }
63
63
  const schemas = await rpc.invoke('pikkuSchemas', null);
@@ -66,7 +66,7 @@ export const all = pikkuVoidFunc({
66
66
  }
67
67
  await rpc.invoke('pikkuRPCInternalMap', null);
68
68
  await rpc.invoke('pikkuRPCExposedMap', null);
69
- if (!config.externalPackage) {
69
+ if (!config.addon) {
70
70
  const http = await rpc.invoke('pikkuHTTP', null);
71
71
  if (http) {
72
72
  await rpc.invoke('pikkuHTTPMap', null);
@@ -84,7 +84,7 @@ export const all = pikkuVoidFunc({
84
84
  }
85
85
  const workflows = await rpc.invoke('pikkuWorkflow', null);
86
86
  let remoteRPC = false;
87
- if (!config.externalPackage) {
87
+ if (!config.addon) {
88
88
  remoteRPC = await rpc.invoke('pikkuRemoteRPC', null);
89
89
  }
90
90
  if (workflows || remoteRPC) {
@@ -99,7 +99,7 @@ export const all = pikkuVoidFunc({
99
99
  if (workflows) {
100
100
  allImports.push(config.workflowsWiringFile);
101
101
  }
102
- if (!config.externalPackage) {
102
+ if (!config.addon) {
103
103
  const queues = await rpc.invoke('pikkuQueue', null);
104
104
  if (queues) {
105
105
  await rpc.invoke('pikkuQueueMap', null);
@@ -0,0 +1,9 @@
1
+ type InfoInput = {
2
+ limit?: string;
3
+ verbose?: boolean;
4
+ };
5
+ export declare const pikkuInfoFunctions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<InfoInput, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
6
+ export declare const pikkuInfoTags: import("#pikku").PikkuFunctionConfig<InfoInput, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<InfoInput, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
7
+ export declare const pikkuInfoMiddleware: import("#pikku").PikkuFunctionConfig<InfoInput, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<InfoInput, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
8
+ export declare const pikkuInfoPermissions: import("#pikku").PikkuFunctionConfig<InfoInput, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<InfoInput, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<InfoInput, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;
9
+ export {};
@@ -0,0 +1,283 @@
1
+ import path from 'path';
2
+ import { pikkuSessionlessFunc } from '#pikku';
3
+ const printTable = (headers, rows, limit) => {
4
+ const all = [headers, ...rows.slice(0, limit)];
5
+ const widths = headers.map((_, col) => Math.max(...all.map((row) => (row[col] ?? '').length)));
6
+ const line = (row) => row.map((cell, i) => cell.padEnd(widths[i])).join(' ');
7
+ console.log(line(headers));
8
+ console.log(widths.map((w) => '-'.repeat(w)).join(' '));
9
+ for (const row of rows.slice(0, limit)) {
10
+ console.log(line(row));
11
+ }
12
+ if (rows.length > limit) {
13
+ console.log(`... and ${rows.length - limit} more (use --limit to show more)`);
14
+ }
15
+ };
16
+ const getFunctionTypes = (funcId, state) => {
17
+ const types = [];
18
+ if (state.http?.meta) {
19
+ for (const routes of Object.values(state.http.meta)) {
20
+ for (const meta of Object.values(routes)) {
21
+ if (meta.pikkuFuncId === funcId)
22
+ types.push('http');
23
+ }
24
+ }
25
+ }
26
+ if (state.channels?.meta) {
27
+ for (const channel of Object.values(state.channels.meta)) {
28
+ const messages = [channel.connect, channel.disconnect, channel.message];
29
+ for (const msg of messages) {
30
+ if (msg && msg.pikkuFuncId === funcId)
31
+ types.push('channel');
32
+ }
33
+ }
34
+ }
35
+ if (state.scheduledTasks?.meta) {
36
+ if (funcId in state.scheduledTasks.meta)
37
+ types.push('scheduler');
38
+ }
39
+ if (state.queueWorkers?.meta) {
40
+ if (funcId in state.queueWorkers.meta)
41
+ types.push('queue');
42
+ }
43
+ if (state.workflows?.meta) {
44
+ if (funcId in state.workflows.meta)
45
+ types.push('workflow');
46
+ }
47
+ if (state.mcpEndpoints?.toolsMeta) {
48
+ if (funcId in state.mcpEndpoints.toolsMeta)
49
+ types.push('mcp');
50
+ }
51
+ if (state.cli?.meta) {
52
+ for (const program of Object.values(state.cli.meta)) {
53
+ if (program.commands) {
54
+ for (const cmd of program.commands) {
55
+ if (cmd.pikkuFuncId === funcId)
56
+ types.push('cli');
57
+ }
58
+ }
59
+ }
60
+ }
61
+ if (state.triggers?.meta) {
62
+ if (funcId in state.triggers.meta)
63
+ types.push('trigger');
64
+ }
65
+ return [...new Set(types)];
66
+ };
67
+ const getFilePath = (funcId, state) => {
68
+ const entry = state.functions.files.get(funcId);
69
+ if (entry) {
70
+ return path.relative(state.rootDir, entry.path);
71
+ }
72
+ return '';
73
+ };
74
+ const formatMetadata = (meta) => {
75
+ if (!meta || meta.length === 0)
76
+ return '';
77
+ return meta
78
+ .map((m) => {
79
+ if ('name' in m)
80
+ return m.name;
81
+ if ('type' in m)
82
+ return m.type;
83
+ return '?';
84
+ })
85
+ .join(', ');
86
+ };
87
+ export const pikkuInfoFunctions = pikkuSessionlessFunc({
88
+ func: async ({ getInspectorState }, data) => {
89
+ const limit = parseInt(data?.limit ?? '50', 10);
90
+ const verbose = !!data?.verbose;
91
+ const state = await getInspectorState();
92
+ const meta = state.functions.meta;
93
+ const entries = Object.entries(meta);
94
+ if (entries.length === 0) {
95
+ console.log('No functions found.');
96
+ return;
97
+ }
98
+ if (!verbose) {
99
+ const headers = ['pikkuFuncId', 'name', 'tags'];
100
+ const rows = entries.map(([id, m]) => [
101
+ id,
102
+ m.name ?? '',
103
+ (m.tags ?? []).join(', '),
104
+ ]);
105
+ printTable(headers, rows, limit);
106
+ }
107
+ else {
108
+ const headers = [
109
+ 'pikkuFuncId',
110
+ 'name',
111
+ 'tags',
112
+ 'type',
113
+ 'middleware',
114
+ 'permissions',
115
+ 'file',
116
+ ];
117
+ const rows = entries.map(([id, m]) => [
118
+ id,
119
+ m.name ?? '',
120
+ (m.tags ?? []).join(', '),
121
+ getFunctionTypes(id, state).join(', '),
122
+ formatMetadata(m.middleware),
123
+ formatMetadata(m.permissions),
124
+ getFilePath(id, state),
125
+ ]);
126
+ printTable(headers, rows, limit);
127
+ }
128
+ },
129
+ });
130
+ export const pikkuInfoTags = pikkuSessionlessFunc({
131
+ func: async ({ getInspectorState }, data) => {
132
+ const limit = parseInt(data?.limit ?? '50', 10);
133
+ const verbose = !!data?.verbose;
134
+ const state = await getInspectorState();
135
+ const meta = state.functions.meta;
136
+ const tagMap = new Map();
137
+ for (const [id, m] of Object.entries(meta)) {
138
+ for (const tag of m.tags ?? []) {
139
+ if (!tagMap.has(tag)) {
140
+ tagMap.set(tag, {
141
+ funcIds: [],
142
+ middlewareNames: [],
143
+ permissionNames: [],
144
+ });
145
+ }
146
+ tagMap.get(tag).funcIds.push(m.name ?? id);
147
+ }
148
+ }
149
+ const tagMiddleware = state.middleware?.tagMiddleware;
150
+ if (tagMiddleware) {
151
+ for (const [tag, group] of tagMiddleware) {
152
+ if (!tagMap.has(tag)) {
153
+ tagMap.set(tag, {
154
+ funcIds: [],
155
+ middlewareNames: [],
156
+ permissionNames: [],
157
+ });
158
+ }
159
+ tagMap.get(tag).middlewareNames.push(...(group.instanceIds ?? []));
160
+ }
161
+ }
162
+ const tagPermissions = state.permissions?.tagPermissions;
163
+ if (tagPermissions) {
164
+ for (const [tag, group] of tagPermissions) {
165
+ if (!tagMap.has(tag)) {
166
+ tagMap.set(tag, {
167
+ funcIds: [],
168
+ middlewareNames: [],
169
+ permissionNames: [],
170
+ });
171
+ }
172
+ tagMap.get(tag).permissionNames.push(...(group.instanceIds ?? []));
173
+ }
174
+ }
175
+ const tags = [...tagMap.entries()].sort((a, b) => a[0].localeCompare(b[0]));
176
+ if (tags.length === 0) {
177
+ console.log('No tags found.');
178
+ return;
179
+ }
180
+ if (!verbose) {
181
+ const headers = ['tag', 'functions', 'middleware', 'permissions'];
182
+ const rows = tags.map(([tag, info]) => [
183
+ tag,
184
+ String(info.funcIds.length),
185
+ String(info.middlewareNames.length),
186
+ String(info.permissionNames.length),
187
+ ]);
188
+ printTable(headers, rows, limit);
189
+ }
190
+ else {
191
+ const headers = ['tag', 'functions', 'middleware', 'permissions'];
192
+ const rows = tags.map(([tag, info]) => [
193
+ tag,
194
+ info.funcIds.join(', ') || '(none)',
195
+ info.middlewareNames.join(', ') || '(none)',
196
+ info.permissionNames.join(', ') || '(none)',
197
+ ]);
198
+ printTable(headers, rows, limit);
199
+ }
200
+ },
201
+ });
202
+ export const pikkuInfoMiddleware = pikkuSessionlessFunc({
203
+ func: async ({ getInspectorState }, data) => {
204
+ const limit = parseInt(data?.limit ?? '50', 10);
205
+ const verbose = !!data?.verbose;
206
+ const state = await getInspectorState();
207
+ const definitions = state.middleware?.definitions ?? {};
208
+ const entries = Object.entries(definitions);
209
+ if (entries.length === 0) {
210
+ console.log('No middleware found.');
211
+ return;
212
+ }
213
+ if (!verbose) {
214
+ const headers = ['id', 'name', 'exportedName'];
215
+ const rows = entries.map(([id, def]) => [
216
+ id,
217
+ def.name ?? '',
218
+ def.exportedName ?? '',
219
+ ]);
220
+ printTable(headers, rows, limit);
221
+ }
222
+ else {
223
+ const headers = [
224
+ 'id',
225
+ 'name',
226
+ 'exportedName',
227
+ 'sourceFile',
228
+ 'services',
229
+ 'description',
230
+ ];
231
+ const rows = entries.map(([id, def]) => [
232
+ id,
233
+ def.name ?? '',
234
+ def.exportedName ?? '',
235
+ def.sourceFile?.replace(state.rootDir + '/', '') ?? '',
236
+ def.services?.services?.join(', ') ?? '',
237
+ def.description ?? '',
238
+ ]);
239
+ printTable(headers, rows, limit);
240
+ }
241
+ },
242
+ });
243
+ export const pikkuInfoPermissions = pikkuSessionlessFunc({
244
+ func: async ({ getInspectorState }, data) => {
245
+ const limit = parseInt(data?.limit ?? '50', 10);
246
+ const verbose = !!data?.verbose;
247
+ const state = await getInspectorState();
248
+ const definitions = state.permissions?.definitions ?? {};
249
+ const entries = Object.entries(definitions);
250
+ if (entries.length === 0) {
251
+ console.log('No permissions found.');
252
+ return;
253
+ }
254
+ if (!verbose) {
255
+ const headers = ['id', 'name', 'exportedName'];
256
+ const rows = entries.map(([id, def]) => [
257
+ id,
258
+ def.name ?? '',
259
+ def.exportedName ?? '',
260
+ ]);
261
+ printTable(headers, rows, limit);
262
+ }
263
+ else {
264
+ const headers = [
265
+ 'id',
266
+ 'name',
267
+ 'exportedName',
268
+ 'sourceFile',
269
+ 'services',
270
+ 'description',
271
+ ];
272
+ const rows = entries.map(([id, def]) => [
273
+ id,
274
+ def.name ?? '',
275
+ def.exportedName ?? '',
276
+ def.sourceFile?.replace(state.rootDir + '/', '') ?? '',
277
+ def.services?.services?.join(', ') ?? '',
278
+ def.description ?? '',
279
+ ]);
280
+ printTable(headers, rows, limit);
281
+ }
282
+ },
283
+ });
@@ -0,0 +1,34 @@
1
+ export declare const pikkuNewAddon: import("#pikku").PikkuFunctionConfig<{
2
+ name: string;
3
+ displayName?: string;
4
+ description?: string;
5
+ category?: string;
6
+ dir?: string;
7
+ secret?: boolean;
8
+ variable?: boolean;
9
+ oauth?: boolean;
10
+ test?: boolean;
11
+ openapi?: string;
12
+ }, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<{
13
+ name: string;
14
+ displayName?: string;
15
+ description?: string;
16
+ category?: string;
17
+ dir?: string;
18
+ secret?: boolean;
19
+ variable?: boolean;
20
+ oauth?: boolean;
21
+ test?: boolean;
22
+ openapi?: string;
23
+ }, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<{
24
+ name: string;
25
+ displayName?: string;
26
+ description?: string;
27
+ category?: string;
28
+ dir?: string;
29
+ secret?: boolean;
30
+ variable?: boolean;
31
+ oauth?: boolean;
32
+ test?: boolean;
33
+ openapi?: string;
34
+ }, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;