@pikku/cli 0.12.17 → 0.12.20

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 (131) hide show
  1. package/cli.schema.json +1 -1
  2. package/console-app/assets/{index-DvrDbftC.css → index-BpY2pSuA.css} +10 -1
  3. package/console-app/assets/index-DXLy-_D4.js +717 -0
  4. package/console-app/index.html +2 -2
  5. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  6. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  7. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  8. package/dist/.pikku/cli/pikku-cli-channel.js +11 -1
  9. package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
  10. package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
  11. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  12. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  13. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  14. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.json +29 -2
  15. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  16. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  17. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  18. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  19. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  20. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  21. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  22. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  23. package/dist/.pikku/function/pikku-functions-meta.gen.json +274 -123
  24. package/dist/.pikku/function/pikku-functions.gen.js +5 -1
  25. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  26. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  27. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
  28. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +62 -1
  29. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +2 -1
  30. package/dist/.pikku/http/pikku-http-wirings.gen.js +2 -1
  31. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  32. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  33. package/dist/.pikku/pikku-bootstrap.gen.d.ts +2 -1
  34. package/dist/.pikku/pikku-bootstrap.gen.js +2 -1
  35. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  36. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  37. package/dist/.pikku/pikku-services.gen.d.ts +7 -6
  38. package/dist/.pikku/pikku-services.gen.js +5 -4
  39. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  40. package/dist/.pikku/pikku-types.gen.js +1 -1
  41. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  42. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  43. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  44. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +12 -4
  45. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  46. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  47. package/dist/.pikku/schemas/register.gen.js +27 -7
  48. package/dist/.pikku/schemas/schemas/DevInput.schema.json +1 -0
  49. package/dist/.pikku/schemas/schemas/GraphStarterInput.schema.json +1 -0
  50. package/dist/.pikku/schemas/schemas/GraphStarterOutput.schema.json +1 -0
  51. package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
  52. package/dist/.pikku/schemas/schemas/WorkflowRunStatus.schema.json +1 -0
  53. package/dist/.pikku/schemas/schemas/WorkflowRunnerInput.schema.json +1 -0
  54. package/dist/.pikku/schemas/schemas/WorkflowStarterInput.schema.json +1 -0
  55. package/dist/.pikku/schemas/schemas/WorkflowStarterOutput.schema.json +1 -0
  56. package/dist/.pikku/schemas/schemas/WorkflowStatusCheckerInput.schema.json +1 -0
  57. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamFullInput.schema.json +1 -0
  58. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamInput.schema.json +1 -0
  59. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  60. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  61. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  62. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  63. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  64. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  65. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  66. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  67. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  68. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  69. package/dist/.pikku/workflow/meta/allWorkflow.gen.json +911 -0
  70. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  71. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  72. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +5 -2
  73. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.d.ts +2 -4
  74. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +5 -2
  75. package/dist/src/cli.wiring.js +25 -0
  76. package/dist/src/deploy/analyzer/analyzer.d.ts +1 -0
  77. package/dist/src/deploy/analyzer/analyzer.js +18 -15
  78. package/dist/src/deploy/codegen/per-unit-codegen.js +3 -3
  79. package/dist/src/functions/commands/all.js +2 -186
  80. package/dist/src/functions/commands/bootstrap.js +10 -10
  81. package/dist/src/functions/commands/console.js +1 -1
  82. package/dist/src/functions/commands/dev.d.ts +13 -0
  83. package/dist/src/functions/commands/dev.js +187 -0
  84. package/dist/src/functions/commands/versions-update.js +7 -3
  85. package/dist/src/functions/commands/watch.js +1 -1
  86. package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -0
  87. package/dist/src/functions/wirings/rpc/pikku-command-react-query.js +33 -0
  88. package/dist/src/functions/wirings/rpc/serialize-react-query-hooks.d.ts +1 -0
  89. package/dist/src/functions/wirings/rpc/serialize-react-query-hooks.js +108 -0
  90. package/dist/src/functions/wirings/rpc/serialize-rpc-wrapper.js +3 -3
  91. package/dist/src/functions/wirings/rpc/serialize-typed-rpc-map.js +6 -4
  92. package/dist/src/functions/wirings/workflow/serialize-workflow-routes.js +128 -29
  93. package/dist/src/functions/workflows/all.workflow.d.ts +1 -0
  94. package/dist/src/functions/workflows/all.workflow.js +207 -0
  95. package/dist/src/scaffold/rpc-remote.gen.js +1 -1
  96. package/dist/src/scaffold/workflow-routes.gen.d.ts +84 -0
  97. package/dist/src/scaffold/workflow-routes.gen.js +197 -0
  98. package/dist/src/services.js +2 -0
  99. package/dist/src/utils/pikku-cli-config.js +1 -0
  100. package/dist/tsconfig.tsbuildinfo +1 -1
  101. package/package.json +8 -4
  102. package/console-app/assets/index-CzMWJFqj.js +0 -700
  103. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.d.ts +0 -1
  104. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.js +0 -6
  105. package/dist/.pikku/agent/pikku-agent-wirings-meta.gen.json +0 -3
  106. package/dist/.pikku/agent/pikku-agent-wirings.gen.d.ts +0 -4
  107. package/dist/.pikku/agent/pikku-agent-wirings.gen.js +0 -4
  108. package/dist/.pikku/channel/pikku-channels-meta.gen.d.ts +0 -1
  109. package/dist/.pikku/channel/pikku-channels-meta.gen.js +0 -6
  110. package/dist/.pikku/channel/pikku-channels-meta.gen.json +0 -1
  111. package/dist/.pikku/channel/pikku-channels.gen.d.ts +0 -4
  112. package/dist/.pikku/channel/pikku-channels.gen.js +0 -5
  113. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.d.ts +0 -1
  114. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.js +0 -8
  115. package/dist/.pikku/mcp/pikku-mcp-wirings-meta.gen.json +0 -5
  116. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.d.ts +0 -4
  117. package/dist/.pikku/mcp/pikku-mcp-wirings.gen.js +0 -5
  118. package/dist/.pikku/pikku-websocket.gen.d.ts +0 -45
  119. package/dist/.pikku/pikku-websocket.gen.js +0 -63
  120. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.d.ts +0 -1
  121. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +0 -6
  122. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.json +0 -1
  123. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +0 -4
  124. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +0 -5
  125. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.d.ts +0 -17
  126. package/dist/.pikku/rpc/pikku-remote-rpc-workers.gen.js +0 -25
  127. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.d.ts +0 -1
  128. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.js +0 -6
  129. package/dist/.pikku/scheduler/pikku-schedulers-wirings-meta.gen.json +0 -1
  130. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.d.ts +0 -4
  131. package/dist/.pikku/scheduler/pikku-schedulers-wirings.gen.js +0 -5
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.17
2
+ * This file was generated by @pikku/cli@0.12.20
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import { template } from '@pikku/core/workflow';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.17
2
+ * This file was generated by @pikku/cli@0.12.20
3
3
  */
4
4
  import { WorkflowCancelledException } from '@pikku/core/workflow';
5
5
  import { template } from '@pikku/core/workflow';
@@ -1,6 +1,9 @@
1
1
  /**
2
- * This file was generated by @pikku/cli@0.12.17
2
+ * This file was generated by @pikku/cli@0.12.20
3
3
  */
4
4
  import { pikkuState } from '@pikku/core/internal';
5
- const workflowsMeta = {};
5
+ import allWorkflowMeta from './meta/allWorkflow.gen.json' with { type: 'json' };
6
+ const workflowsMeta = {
7
+ 'allWorkflow': allWorkflowMeta,
8
+ };
6
9
  pikkuState(null, 'workflows', 'meta', workflowsMeta);
@@ -1,4 +1,2 @@
1
- export {};
2
- /**
3
- * This file was generated by @pikku/cli@0.12.17
4
- */
1
+ import './pikku-workflow-wirings-meta.gen.js';
2
+ export type WorkflowNames = 'allWorkflow';
@@ -1,4 +1,7 @@
1
- export {};
2
1
  /**
3
- * This file was generated by @pikku/cli@0.12.17
2
+ * This file was generated by @pikku/cli@0.12.20
4
3
  */
4
+ import { addWorkflow } from '@pikku/core/workflow';
5
+ import './pikku-workflow-wirings-meta.gen.js';
6
+ import { allWorkflow } from '../../src/functions/workflows/all.workflow.js';
7
+ addWorkflow('allWorkflow', allWorkflow);
@@ -2,6 +2,7 @@ import { pikkuSchemas } from './functions/wirings/functions/schemas.js';
2
2
  import { pikkuFetch } from './functions/runtimes/fetch/index.js';
3
3
  import { pikkuWebSocketTyped } from './functions/runtimes/websocket/pikku-command-websocket-typed.js';
4
4
  import { pikkuRPCClient } from './functions/wirings/rpc/pikku-command-rpc-client.js';
5
+ import { pikkuReactQuery } from './functions/wirings/rpc/pikku-command-react-query.js';
5
6
  import { pikkuQueueService } from './functions/wirings/queue/pikku-command-queue-service.js';
6
7
  import { pikkuOpenAPI } from './functions/wirings/http/pikku-command-openapi.js';
7
8
  import { pikkuNext } from './functions/runtimes/nextjs/pikku-command-nextjs.js';
@@ -10,6 +11,7 @@ import { all } from './functions/commands/all.js';
10
11
  import { bootstrap } from './functions/commands/bootstrap.js';
11
12
  import { watch } from './functions/commands/watch.js';
12
13
  import { consoleCommand } from './functions/commands/console.js';
14
+ import { dev } from './functions/commands/dev.js';
13
15
  import { pikkuVersionsInit } from './functions/commands/versions-init.js';
14
16
  import { pikkuVersionsCheck } from './functions/commands/versions-check.js';
15
17
  import { pikkuVersionsUpdate } from './functions/commands/versions-update.js';
@@ -101,6 +103,25 @@ wireCLI({
101
103
  },
102
104
  },
103
105
  }),
106
+ dev: pikkuCLICommand({
107
+ func: dev,
108
+ description: 'Start a local development server with all services wired',
109
+ options: {
110
+ port: {
111
+ description: 'Port for the dev server',
112
+ default: '3000',
113
+ short: 'p',
114
+ },
115
+ watch: {
116
+ description: 'Watch for file changes and regenerate',
117
+ default: true,
118
+ },
119
+ hmr: {
120
+ description: 'Enable hot module reload',
121
+ default: true,
122
+ },
123
+ },
124
+ }),
104
125
  console: pikkuCLICommand({
105
126
  func: consoleCommand,
106
127
  description: 'Start the Pikku Console UI with live file watching',
@@ -137,6 +158,10 @@ wireCLI({
137
158
  func: pikkuRPCClient,
138
159
  description: 'Generate RPC client wrappers',
139
160
  }),
161
+ 'react-query': pikkuCLICommand({
162
+ func: pikkuReactQuery,
163
+ description: 'Generate React Query hooks from RPC map',
164
+ }),
140
165
  'queue-service': pikkuCLICommand({
141
166
  func: pikkuQueueService,
142
167
  description: 'Generate queue service wrapper',
@@ -14,3 +14,4 @@ export interface AnalyzerOptions {
14
14
  serverlessIncompatible?: string[];
15
15
  }
16
16
  export declare function analyzeDeployment(state: InspectorState, options: AnalyzerOptions): DeploymentManifest;
17
+ export declare function toSafeKebab(str: string): string;
@@ -71,7 +71,7 @@ export function analyzeDeployment(state, options) {
71
71
  handlers.push({ type: 'queue', queueName: queueMeta.name ?? queueName });
72
72
  queues.push({
73
73
  name: queueMeta.name ?? queueName,
74
- consumerUnit: toKebab(funcId),
74
+ consumerUnit: toSafeKebab(funcId),
75
75
  consumerFunctionId: funcId,
76
76
  });
77
77
  }
@@ -87,7 +87,7 @@ export function analyzeDeployment(state, options) {
87
87
  scheduledTasks.push({
88
88
  name: schedMeta.name,
89
89
  schedule: schedMeta.schedule,
90
- unitName: toKebab(funcId),
90
+ unitName: toSafeKebab(funcId),
91
91
  functionId: funcId,
92
92
  });
93
93
  }
@@ -129,7 +129,7 @@ export function analyzeDeployment(state, options) {
129
129
  continue;
130
130
  }
131
131
  units.push({
132
- name: toKebab(funcId),
132
+ name: toSafeKebab(funcId),
133
133
  role: 'function',
134
134
  target: resolveDeployTarget(funcMeta, serverlessIncompatible),
135
135
  functionIds: [funcId],
@@ -143,10 +143,10 @@ export function analyzeDeployment(state, options) {
143
143
  for (const [agentName, agentMeta] of entries(state.agents.agentsMeta)) {
144
144
  const toolIds = agentMeta.tools ?? [];
145
145
  const subAgentNames = agentMeta.agents ?? [];
146
- const unitName = `agent-${toKebab(agentName)}`;
146
+ const unitName = `agent-${toSafeKebab(agentName)}`;
147
147
  // Agent gateway depends on its tool function units
148
- const toolUnitNames = toolIds.map((id) => toKebab(id));
149
- const subAgentUnitNames = subAgentNames.map((sa) => `agent-${toKebab(sa)}`);
148
+ const toolUnitNames = toolIds.map((id) => toSafeKebab(id));
149
+ const subAgentUnitNames = subAgentNames.map((sa) => `agent-${toSafeKebab(sa)}`);
150
150
  // Agent needs AI services
151
151
  const agentServices = [
152
152
  { capability: 'ai-model', sourceServiceName: 'aiAgentRunner' },
@@ -209,7 +209,7 @@ export function analyzeDeployment(state, options) {
209
209
  const allMcpIds = [...mcpToolIds, ...mcpResourceIds, ...mcpPromptIds];
210
210
  if (allMcpIds.length > 0) {
211
211
  const unitName = 'mcp-server';
212
- const mcpFuncUnitNames = allMcpIds.map((id) => toKebab(id));
212
+ const mcpFuncUnitNames = allMcpIds.map((id) => toSafeKebab(id));
213
213
  units.push({
214
214
  name: unitName,
215
215
  role: 'mcp',
@@ -232,8 +232,8 @@ export function analyzeDeployment(state, options) {
232
232
  const funcIds = collectChannelFunctionIds(channelMeta);
233
233
  if (funcIds.length === 0)
234
234
  continue;
235
- const unitName = `channel-${toKebab(channelName)}`;
236
- const funcUnitNames = funcIds.map((id) => toKebab(id));
235
+ const unitName = `channel-${toSafeKebab(channelName)}`;
236
+ const funcUnitNames = funcIds.map((id) => toSafeKebab(id));
237
237
  units.push({
238
238
  name: unitName,
239
239
  role: 'channel',
@@ -346,7 +346,7 @@ function buildWorkflows(graphMeta, _functionsMeta, _httpMeta, units, workflows,
346
346
  continue;
347
347
  if (!('rpcName' in node))
348
348
  continue;
349
- const stepUnitName = toKebab(node.rpcName);
349
+ const stepUnitName = toSafeKebab(node.rpcName);
350
350
  const isAsync = node.options?.async === true;
351
351
  const isInline = !isAsync && graph.inline === true;
352
352
  steps.push({
@@ -358,7 +358,7 @@ function buildWorkflows(graphMeta, _functionsMeta, _httpMeta, units, workflows,
358
358
  stepUnitNames.push(stepUnitName);
359
359
  }
360
360
  // Build orchestrator unit — no function code, just orchestration
361
- const orchUnitName = `wf-${toKebab(graph.name)}`;
361
+ const orchUnitName = `wf-${toSafeKebab(graph.name)}`;
362
362
  const orchServices = [
363
363
  { capability: 'workflow-state', sourceServiceName: 'workflowService' },
364
364
  { capability: 'queue', sourceServiceName: 'queueService' },
@@ -387,7 +387,7 @@ function buildWorkflows(graphMeta, _functionsMeta, _httpMeta, units, workflows,
387
387
  },
388
388
  ];
389
389
  // Orchestrator queue — the orchestrator consumes from this
390
- const orchQueueName = `wf-orchestrator-${toKebab(graph.name)}`;
390
+ const orchQueueName = `wf-orchestrator-${toSafeKebab(graph.name)}`;
391
391
  const orchHandlers = [
392
392
  { type: 'fetch', routes: wfRoutes },
393
393
  { type: 'queue', queueName: orchQueueName },
@@ -413,10 +413,10 @@ function buildWorkflows(graphMeta, _functionsMeta, _httpMeta, units, workflows,
413
413
  for (const step of steps) {
414
414
  if (step.inline || !step.functionId)
415
415
  continue;
416
- const stepQueueName = `wf-step-${toKebab(step.functionId)}`;
416
+ const stepQueueName = `wf-step-${toSafeKebab(step.functionId)}`;
417
417
  queues.push({
418
418
  name: stepQueueName,
419
- consumerUnit: toKebab(step.functionId),
419
+ consumerUnit: toSafeKebab(step.functionId),
420
420
  consumerFunctionId: `pikkuWorkflowWorker:${step.functionId}`,
421
421
  });
422
422
  }
@@ -523,10 +523,13 @@ function collectChannelFunctionIds(channelMeta) {
523
523
  // ---------------------------------------------------------------------------
524
524
  // Naming helpers
525
525
  // ---------------------------------------------------------------------------
526
- function toKebab(str) {
526
+ export function toSafeKebab(str) {
527
527
  return str
528
528
  .replace(/([a-z0-9])([A-Z])/g, '$1-$2')
529
529
  .replace(/([A-Z])([A-Z][a-z])/g, '$1-$2')
530
+ .replace(/[:/\\]/g, '-')
531
+ .replace(/--+/g, '-')
532
+ .replace(/^-|-$/g, '')
530
533
  .toLowerCase();
531
534
  }
532
535
  function fromKebab(str) {
@@ -14,6 +14,7 @@ import { tmpdir } from 'node:os';
14
14
  import { randomBytes } from 'node:crypto';
15
15
  import { promisify } from 'node:util';
16
16
  import { serializeInspectorState } from '@pikku/inspector';
17
+ import { toSafeKebab } from '../analyzer/analyzer.js';
17
18
  const execFileAsync = promisify(execFile);
18
19
  /**
19
20
  * Resolve the pikku CLI binary path.
@@ -122,12 +123,11 @@ function collectFilterNames(unit, manifest, inspectorState) {
122
123
  names.add('http:get:/workflow/:workflowName/status/:runId/stream');
123
124
  names.add('http:post:/workflow/:workflowName/graph/:nodeId');
124
125
  // Queue names for orchestrator and step workers
125
- const toKebab = (s) => s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
126
- names.add(`wf-orchestrator-${toKebab(wfDef.name)}`);
126
+ names.add(`wf-orchestrator-${toSafeKebab(wfDef.name)}`);
127
127
  for (const step of wfDef.steps) {
128
128
  if (step.functionId) {
129
129
  names.add(step.functionId);
130
- names.add(`wf-step-${toKebab(step.functionId)}`);
130
+ names.add(`wf-step-${toSafeKebab(step.functionId)}`);
131
131
  }
132
132
  }
133
133
  }
@@ -1,191 +1,7 @@
1
- import { existsSync } from 'fs';
2
1
  import { pikkuVoidFunc } from '#pikku';
3
- const scaffoldFiles = (config) => {
4
- const files = [];
5
- if (config.scaffold?.rpc && config.publicRpcFile)
6
- files.push({ file: config.publicRpcFile, generator: 'pikkuPublicRPC' });
7
- if (config.scaffold?.console && config.consoleFunctionsFile)
8
- files.push({
9
- file: config.consoleFunctionsFile,
10
- generator: 'pikkuConsoleFunctions',
11
- });
12
- if (config.scaffold?.agent && config.publicAgentFile)
13
- files.push({
14
- file: config.publicAgentFile,
15
- generator: 'pikkuPublicAgent',
16
- });
17
- return files;
18
- };
19
2
  export const all = pikkuVoidFunc({
20
3
  remote: true,
21
- func: async ({ logger, config, getInspectorState }, _data, { rpc }) => {
22
- const allImports = [];
23
- let typesDeclarationFileExists = true;
24
- if (!existsSync(config.outDir)) {
25
- logger.debug(`• .pikku directory not found, running bootstrap first...`);
26
- await getInspectorState(false, false, true);
27
- await rpc.invoke('pikkuFunctionTypes', null);
28
- await rpc.invoke('pikkuFunctionTypesSplit', null);
29
- await rpc.invoke('pikkuHTTPTypes', null);
30
- await rpc.invoke('pikkuChannelTypes', null);
31
- await rpc.invoke('pikkuSchedulerTypes', null);
32
- await rpc.invoke('pikkuQueueTypes', null);
33
- await rpc.invoke('pikkuWorkflow', null);
34
- await rpc.invoke('pikkuMCPTypes', null);
35
- await rpc.invoke('pikkuAIAgentTypes', null);
36
- await rpc.invoke('pikkuCLITypes', null);
37
- await getInspectorState(true);
38
- }
39
- if (!existsSync(config.typesDeclarationFile)) {
40
- typesDeclarationFileExists = false;
41
- }
42
- const missingScaffolds = scaffoldFiles(config).filter((s) => !existsSync(s.file));
43
- if (missingScaffolds.length > 0) {
44
- for (const { generator } of missingScaffolds) {
45
- await rpc.invoke(generator, null);
46
- }
47
- }
48
- await rpc.invoke('pikkuFunctionTypes', null);
49
- if (!typesDeclarationFileExists || missingScaffolds.length > 0) {
50
- logger.debug(`• Type file or scaffolds first created, inspecting again...`);
51
- await getInspectorState(true);
52
- }
53
- await rpc.invoke('pikkuFunctionTypesSplit', null);
54
- await rpc.invoke('pikkuTriggerTypes', null);
55
- await rpc.invoke('pikkuAIAgentTypes', null);
56
- if (!config.addon) {
57
- await rpc.invoke('pikkuHTTPTypes', null);
58
- await rpc.invoke('pikkuChannelTypes', null);
59
- await rpc.invoke('pikkuSchedulerTypes', null);
60
- await rpc.invoke('pikkuQueueTypes', null);
61
- await rpc.invoke('pikkuMCPTypes', null);
62
- await rpc.invoke('pikkuCLITypes', null);
63
- }
64
- const middleware = await rpc.invoke('pikkuMiddleware', null);
65
- if (middleware) {
66
- allImports.push(config.middlewareFile);
67
- }
68
- const permissions = await rpc.invoke('pikkuPermissions', null);
69
- if (permissions) {
70
- allImports.push(config.permissionsFile);
71
- }
72
- await rpc.invoke('pikkuServices', null);
73
- const hasPackageFactories = await rpc.invoke('pikkuPackage', null);
74
- if (hasPackageFactories) {
75
- allImports.push(config.packageFile);
76
- }
77
- const hasInternalRPCs = await rpc.invoke('pikkuRPC', null);
78
- const agents = await rpc.invoke('pikkuAIAgent', null);
79
- if (agents) {
80
- allImports.push(config.agentWiringMetaFile, config.agentWiringsFile);
81
- if (config.scaffold?.agent) {
82
- await rpc.invoke('pikkuPublicAgent', null);
83
- }
84
- }
85
- await rpc.invoke('pikkuPublicRPC', null);
86
- await rpc.invoke('pikkuConsoleFunctions', null);
87
- await rpc.invoke('pikkuNodeTypes', null);
88
- await rpc.invoke('pikkuSecretDefinitionTypes', null);
89
- await rpc.invoke('pikkuSecrets', null);
90
- await rpc.invoke('pikkuCredentials', null);
91
- await rpc.invoke('pikkuVariableDefinitionTypes', null);
92
- await rpc.invoke('pikkuVariables', null);
93
- await rpc.invoke('pikkuAddonTypes', null);
94
- if (hasInternalRPCs) {
95
- allImports.push(config.rpcInternalWiringMetaFile);
96
- }
97
- if (agents || !config.addon) {
98
- await getInspectorState(true);
99
- }
100
- const schemas = await rpc.invoke('pikkuSchemas', null);
101
- if (schemas) {
102
- allImports.push(`${config.schemaDirectory}/register.gen.ts`);
103
- }
104
- await rpc.invoke('pikkuRPCInternalMap', null);
105
- await rpc.invoke('pikkuRPCExposedMap', null);
106
- const workflows = await rpc.invoke('pikkuWorkflow', null);
107
- let remoteRPC = false;
108
- let workflowRoutes = false;
109
- if (!config.addon) {
110
- remoteRPC = await rpc.invoke('pikkuRemoteRPC', null);
111
- if (workflows) {
112
- workflowRoutes = await rpc.invoke('pikkuWorkflowRoutes', null);
113
- }
114
- }
115
- if (workflows || remoteRPC || workflowRoutes) {
116
- await getInspectorState(true);
117
- await rpc.invoke('pikkuSchemas', null);
118
- }
119
- if (!config.addon) {
120
- const http = await rpc.invoke('pikkuHTTP', null);
121
- if (http) {
122
- await rpc.invoke('pikkuHTTPMap', null);
123
- await rpc.invoke('pikkuFetch', null);
124
- await rpc.invoke('pikkuRPCClient', null);
125
- allImports.push(config.httpWiringMetaFile, config.httpWiringsFile);
126
- }
127
- const scheduler = await rpc.invoke('pikkuScheduler', null);
128
- if (scheduler) {
129
- allImports.push(config.schedulersWiringMetaFile, config.schedulersWiringFile);
130
- }
131
- const triggers = await rpc.invoke('pikkuTrigger', null);
132
- if (triggers) {
133
- allImports.push(config.triggersWiringMetaFile, config.triggerSourcesMetaFile, config.triggersWiringFile);
134
- }
135
- }
136
- const hasFunctionRegistrations = await rpc.invoke('pikkuFunctions', null);
137
- allImports.push(config.functionsMetaFile);
138
- if (hasFunctionRegistrations) {
139
- allImports.push(config.functionsFile);
140
- }
141
- if (workflows) {
142
- allImports.push(config.workflowsWiringFile);
143
- }
144
- if (!config.addon) {
145
- const queues = await rpc.invoke('pikkuQueue', null);
146
- if (queues) {
147
- await rpc.invoke('pikkuQueueMap', null);
148
- await rpc.invoke('pikkuQueueService', null);
149
- allImports.push(config.queueWorkersWiringMetaFile, config.queueWorkersWiringFile);
150
- }
151
- const channels = await rpc.invoke('pikkuChannels', null);
152
- if (channels) {
153
- await rpc.invoke('pikkuChannelsMap', null);
154
- await rpc.invoke('pikkuWebSocketTyped', null);
155
- allImports.push(config.channelsWiringMetaFile, config.channelsWiringFile);
156
- }
157
- const gateways = await rpc.invoke('pikkuGateway', null);
158
- if (gateways) {
159
- allImports.push(config.gatewaysWiringFile);
160
- }
161
- const mcp = await rpc.invoke('pikkuMCP', null);
162
- if (mcp) {
163
- await rpc.invoke('pikkuMCPJSON', null);
164
- allImports.push(config.mcpWiringsMetaFile, config.mcpWiringsFile);
165
- }
166
- const cli = await rpc.invoke('pikkuCLI', null);
167
- if (cli) {
168
- await rpc.invoke('pikkuCLIEntry', null);
169
- allImports.push(config.cliWiringMetaFile, config.cliWiringsFile);
170
- }
171
- }
172
- await rpc.invoke('pikkuNodesMeta', null);
173
- if (config.clientFiles?.nextBackendFile ||
174
- config.clientFiles?.nextHTTPFile) {
175
- await rpc.invoke('pikkuNext', null);
176
- }
177
- if (config.openAPI) {
178
- logger.debug(`• OpenAPI requires a reinspection to pickup new generated types..`);
179
- await getInspectorState(true);
180
- await rpc.invoke('pikkuOpenAPI', null);
181
- }
182
- try {
183
- await rpc.invoke('pikkuVersionsUpdate', null);
184
- }
185
- catch {
186
- logger.warn(`Run 'pikku versions init' to enable contract versioning.`);
187
- }
188
- await rpc.invoke('pikkuBootstrap', { allImports });
189
- await rpc.invoke('pikkuSummary', null);
4
+ func: async (services, _data, { rpc }) => {
5
+ await services.workflowService.runToCompletion('allWorkflow', {}, rpc);
190
6
  },
191
7
  });
@@ -3,16 +3,16 @@ export const bootstrap = pikkuVoidFunc({
3
3
  remote: true,
4
4
  func: async ({ logger, getInspectorState }, _data, { rpc }) => {
5
5
  await getInspectorState(false, false, true);
6
- await rpc.invoke('pikkuFunctionTypes', null);
7
- await rpc.invoke('pikkuFunctionTypesSplit', null);
8
- await rpc.invoke('pikkuHTTPTypes', null);
9
- await rpc.invoke('pikkuChannelTypes', null);
10
- await rpc.invoke('pikkuSchedulerTypes', null);
11
- await rpc.invoke('pikkuQueueTypes', null);
12
- await rpc.invoke('pikkuWorkflow', null);
13
- await rpc.invoke('pikkuMCPTypes', null);
14
- await rpc.invoke('pikkuAIAgentTypes', null);
15
- await rpc.invoke('pikkuCLITypes', null);
6
+ await rpc.invoke('pikkuFunctionTypes');
7
+ await rpc.invoke('pikkuFunctionTypesSplit');
8
+ await rpc.invoke('pikkuHTTPTypes');
9
+ await rpc.invoke('pikkuChannelTypes');
10
+ await rpc.invoke('pikkuSchedulerTypes');
11
+ await rpc.invoke('pikkuQueueTypes');
12
+ await rpc.invoke('pikkuWorkflow');
13
+ await rpc.invoke('pikkuMCPTypes');
14
+ await rpc.invoke('pikkuAIAgentTypes');
15
+ await rpc.invoke('pikkuCLITypes');
16
16
  if (logger.hasCriticalErrors()) {
17
17
  process.exit(1);
18
18
  }
@@ -88,7 +88,7 @@ export const consoleCommand = pikkuSessionlessFunc({
88
88
  const handle = async () => {
89
89
  try {
90
90
  const start = Date.now();
91
- await rpc.invoke('all', null);
91
+ await rpc.invoke('all');
92
92
  logger.info({
93
93
  message: `✓ Generated in ${Date.now() - start}ms`,
94
94
  type: 'timing',
@@ -0,0 +1,13 @@
1
+ export declare const dev: import("#pikku").PikkuFunctionConfig<{
2
+ port?: string;
3
+ watch?: boolean;
4
+ hmr?: boolean;
5
+ }, void, "session" | "rpc", import("#pikku").PikkuFunctionSessionless<{
6
+ port?: string;
7
+ watch?: boolean;
8
+ hmr?: boolean;
9
+ }, void, "session" | "rpc", import("#pikku").Services> | import("#pikku").PikkuFunction<{
10
+ port?: string;
11
+ watch?: boolean;
12
+ hmr?: boolean;
13
+ }, void, "session" | "rpc", import("#pikku").Services>, undefined, undefined>;