@pikku/cli 0.12.22 → 0.12.23

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 (75) hide show
  1. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
  2. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
  3. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
  4. package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
  5. package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
  6. package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
  7. package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
  8. package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
  9. package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
  10. package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
  11. package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
  12. package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
  13. package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
  14. package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
  15. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  16. package/dist/.pikku/function/pikku-functions-meta.gen.json +162 -270
  17. package/dist/.pikku/function/pikku-functions.gen.js +1 -1
  18. package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
  19. package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
  20. package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
  21. package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +1 -62
  22. package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -2
  23. package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -2
  24. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
  25. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
  26. package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
  27. package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
  28. package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
  29. package/dist/.pikku/pikku-meta-service.gen.js +1 -1
  30. package/dist/.pikku/pikku-services.gen.d.ts +1 -1
  31. package/dist/.pikku/pikku-types.gen.d.ts +1 -1
  32. package/dist/.pikku/pikku-types.gen.js +1 -1
  33. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  34. package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
  35. package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
  36. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
  37. package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
  38. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  39. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +13 -19
  40. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  41. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
  42. package/dist/.pikku/schemas/register.gen.js +7 -25
  43. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
  44. package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
  45. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
  46. package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
  47. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
  48. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
  49. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
  50. package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
  51. package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
  52. package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
  53. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
  54. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
  55. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  56. package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
  57. package/dist/bin/pikku-bin.mjs +2 -2
  58. package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.js +1 -1
  59. package/dist/src/scaffold/rpc-remote.gen.js +1 -1
  60. package/dist/src/utils/serialize-schemas.js +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/package.json +2 -2
  63. package/skills/pikku-i18n/SKILL.md +15 -6
  64. package/skills/pikku-rtl/SKILL.md +38 -24
  65. package/dist/.pikku/schemas/schemas/GraphStarterInput.schema.json +0 -1
  66. package/dist/.pikku/schemas/schemas/GraphStarterOutput.schema.json +0 -1
  67. package/dist/.pikku/schemas/schemas/WorkflowRunStatus.schema.json +0 -1
  68. package/dist/.pikku/schemas/schemas/WorkflowRunnerInput.schema.json +0 -1
  69. package/dist/.pikku/schemas/schemas/WorkflowStarterInput.schema.json +0 -1
  70. package/dist/.pikku/schemas/schemas/WorkflowStarterOutput.schema.json +0 -1
  71. package/dist/.pikku/schemas/schemas/WorkflowStatusCheckerInput.schema.json +0 -1
  72. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamFullInput.schema.json +0 -1
  73. package/dist/.pikku/schemas/schemas/WorkflowStatusStreamInput.schema.json +0 -1
  74. package/dist/src/scaffold/workflow-routes.gen.d.ts +0 -84
  75. package/dist/src/scaffold/workflow-routes.gen.js +0 -229
@@ -1 +1 @@
1
- {"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/deploy/build-pipeline.ts","../src/deploy/provider-adapter.ts","../src/deploy/server-entry.ts","../src/deploy/analyzer/analyzer.ts","../src/deploy/analyzer/index.ts","../src/deploy/analyzer/manifest.ts","../src/deploy/bundler/bundler.ts","../src/deploy/bundler/dep-extractor.ts","../src/deploy/bundler/index.ts","../src/deploy/bundler/types.ts","../src/deploy/codegen/index.ts","../src/deploy/codegen/per-unit-codegen.ts","../src/deploy/plan/executor.ts","../src/deploy/plan/formatter.ts","../src/deploy/plan/index.ts","../src/deploy/plan/planner.ts","../src/deploy/plan/provider.ts","../src/deploy/plan/types.ts","../src/fabric/fabric-commands.ts","../src/fabric/functions/db-schema.function.ts","../src/fabric/functions/deploy-list.function.ts","../src/fabric/functions/deploy-units.function.ts","../src/fabric/functions/deploy.function.ts","../src/fabric/functions/domains-add.function.ts","../src/fabric/functions/domains-list.function.ts","../src/fabric/functions/domains-remove.function.ts","../src/fabric/functions/errors.function.ts","../src/fabric/functions/init.function.ts","../src/fabric/functions/link.function.ts","../src/fabric/functions/llm-key.function.ts","../src/fabric/functions/login.function.ts","../src/fabric/functions/logs.function.ts","../src/fabric/functions/metrics.function.ts","../src/fabric/functions/rollback.function.ts","../src/fabric/functions/secrets-list.function.ts","../src/fabric/functions/secrets-set.function.ts","../src/fabric/functions/status.function.ts","../src/fabric/functions/trace.function.ts","../src/fabric/functions/validate.function.ts","../src/fabric/lib/config.ts","../src/fabric/lib/console-url.ts","../src/fabric/lib/git.ts","../src/fabric/lib/http.ts","../src/fabric/lib/not-implemented.ts","../src/fabric/lib/output.ts","../src/fabric/lib/prompt.ts","../src/fabric/lib/stage.ts","../src/fabric/sdk/http-map.gen.d.ts","../src/fabric/sdk/pikku-fetch.gen.ts","../src/fabric/sdk/pikku-rpc.gen.ts","../src/fabric/sdk/rpc-map.gen.d.ts","../src/functions/commands/all.ts","../src/functions/commands/binary.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/console.ts","../src/functions/commands/db-migrate.ts","../src/functions/commands/db-reset.ts","../src/functions/commands/db-seed.ts","../src/functions/commands/db-shared.ts","../src/functions/commands/deploy-apply.ts","../src/functions/commands/deploy-info.ts","../src/functions/commands/deploy-plan.ts","../src/functions/commands/dev.ts","../src/functions/commands/enable.ts","../src/functions/commands/info.ts","../src/functions/commands/load-user-project.ts","../src/functions/commands/meta.ts","../src/functions/commands/new-addon.ts","../src/functions/commands/new-function.ts","../src/functions/commands/new-middleware.ts","../src/functions/commands/new-permission.ts","../src/functions/commands/new-wiring.ts","../src/functions/commands/pikku-command-bootstrap.ts","../src/functions/commands/pikku-command-summary.ts","../src/functions/commands/skills.ts","../src/functions/commands/tests-coverage.ts","../src/functions/commands/tests-init.ts","../src/functions/commands/versions-check.ts","../src/functions/commands/versions-init.ts","../src/functions/commands/versions-update.ts","../src/functions/commands/watch.ts","../src/functions/db/local-db.ts","../src/functions/db/seed.ts","../src/functions/db/sql-migrator.ts","../src/functions/db/sqlite-codegen.ts","../src/functions/db/zod-codegen.ts","../src/functions/runtimes/fetch/index.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.ts","../src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.ts","../src/functions/runtimes/websocket/pikku-command-websocket-typed.ts","../src/functions/runtimes/websocket/serialize-websocket-wrapper.ts","../src/functions/wirings/ai-agent/pikku-command-ai-agent-types.ts","../src/functions/wirings/ai-agent/pikku-command-ai-agent.ts","../src/functions/wirings/ai-agent/pikku-command-public-agent.ts","../src/functions/wirings/ai-agent/serialize-agent-map.ts","../src/functions/wirings/ai-agent/serialize-ai-agent-types.ts","../src/functions/wirings/ai-agent/serialize-public-agent.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/console/pikku-command-console-functions.ts","../src/functions/wirings/console/pikku-command-node-types.ts","../src/functions/wirings/console/pikku-command-nodes-meta.ts","../src/functions/wirings/console/serialize-console-functions.ts","../src/functions/wirings/console/serialize-node-types.ts","../src/functions/wirings/credentials/pikku-command-credentials.ts","../src/functions/wirings/credentials/serialize-credentials-types.ts","../src/functions/wirings/functions/pikku-command-addon-types.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-function-types.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-addon-types.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-pikku-types-hub.ts","../src/functions/wirings/gateway/pikku-command-gateway.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/package/pikku-command-package-types.ts","../src/functions/wirings/package/pikku-command-package.ts","../src/functions/wirings/package/serialize-package-types.ts","../src/functions/wirings/package/serialize-package.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/realtime/pikku-command-events-scaffold.ts","../src/functions/wirings/realtime/pikku-command-realtime.ts","../src/functions/wirings/realtime/serialize-events-scaffold.ts","../src/functions/wirings/realtime/serialize-realtime-client.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-react-query.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-react-query-hooks.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/secrets/pikku-command-secrets.ts","../src/functions/wirings/secrets/serialize-secrets-types.ts","../src/functions/wirings/triggers/pikku-command-trigger-types.ts","../src/functions/wirings/triggers/pikku-command-trigger.ts","../src/functions/wirings/triggers/serialize-trigger-meta.ts","../src/functions/wirings/triggers/serialize-trigger-types.ts","../src/functions/wirings/variables/pikku-command-variables.ts","../src/functions/wirings/variables/serialize-variables-types.ts","../src/functions/wirings/workflow/pikku-command-workflow-routes.ts","../src/functions/wirings/workflow/pikku-command-workflow.ts","../src/functions/wirings/workflow/serialize-workflow-bootstrap-map.ts","../src/functions/wirings/workflow/serialize-workflow-map.ts","../src/functions/wirings/workflow/serialize-workflow-meta.ts","../src/functions/wirings/workflow/serialize-workflow-registration.ts","../src/functions/wirings/workflow/serialize-workflow-routes.ts","../src/functions/wirings/workflow/serialize-workflow-types.ts","../src/functions/workflows/all.workflow.ts","../src/middleware/log-command-info-and-time.ts","../src/scaffold/rpc-remote.gen.ts","../src/scaffold/workflow-routes.gen.ts","../src/services/cli-logger-forwarder.service.ts","../src/services/cli-logger.service.ts","../src/utils/check-required-types.ts","../src/utils/command-summary.ts","../src/utils/contract-versions.ts","../src/utils/file-import-path.ts","../src/utils/file-imports-serializer.ts","../src/utils/file-writer.ts","../src/utils/generate-bootstrap-file.ts","../src/utils/get-cli-version.ts","../src/utils/parse-cli-filters.ts","../src/utils/pikku-cli-config.ts","../src/utils/pikku-files-and-methods.ts","../src/utils/serialize-import-map.ts","../src/utils/serialize-meta-ts.ts","../src/utils/serialize-schemas.ts","../src/utils/strip-verbose-meta.ts","../.pikku/pikku-bootstrap.gen.ts","../.pikku/pikku-meta-service.gen.ts","../.pikku/pikku-services.gen.ts","../.pikku/pikku-types.gen.ts","../.pikku/agent/pikku-agent-map.gen.d.ts","../.pikku/agent/pikku-agent-types.gen.ts","../.pikku/channel/pikku-channel-types.gen.ts","../.pikku/cli/pikku-cli-channel.ts","../.pikku/cli/pikku-cli-types.gen.ts","../.pikku/cli/pikku-cli-wirings-meta.gen.ts","../.pikku/cli/pikku-cli-wirings.gen.ts","../.pikku/cli/pikku-cli.gen.ts","../.pikku/console/pikku-node-types.gen.ts","../.pikku/function/pikku-function-types.gen.ts","../.pikku/function/pikku-functions-meta.gen.ts","../.pikku/function/pikku-functions.gen.ts","../.pikku/http/pikku-http-types.gen.ts","../.pikku/http/pikku-http-wirings-map.gen.d.ts","../.pikku/http/pikku-http-wirings-meta.gen.ts","../.pikku/http/pikku-http-wirings.gen.ts","../.pikku/mcp/pikku-mcp-types.gen.ts","../.pikku/node/pikku-node-types.gen.ts","../.pikku/queue/pikku-queue-types.gen.ts","../.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts","../.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts","../.pikku/queue/pikku-queue-workers-wirings.gen.ts","../.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts","../.pikku/scheduler/pikku-scheduler-types.gen.ts","../.pikku/schemas/register.gen.ts","../.pikku/secrets/pikku-secret-types.gen.ts","../.pikku/secrets/pikku-secrets.gen.ts","../.pikku/trigger/pikku-trigger-types.gen.ts","../.pikku/variables/pikku-variable-types.gen.ts","../.pikku/variables/pikku-variables.gen.ts","../.pikku/workflow/pikku-workflow-map.gen.d.ts","../.pikku/workflow/pikku-workflow-types.gen.ts","../.pikku/workflow/pikku-workflow-wirings-meta.gen.ts","../.pikku/workflow/pikku-workflow-wirings.gen.ts","../types/application-types.d.ts","../types/config.d.ts"],"version":"5.9.3"}
1
+ {"root":["../bin/pikku.ts","../src/cli.wiring.ts","../src/services.ts","../src/deploy/build-pipeline.ts","../src/deploy/provider-adapter.ts","../src/deploy/server-entry.ts","../src/deploy/analyzer/analyzer.ts","../src/deploy/analyzer/index.ts","../src/deploy/analyzer/manifest.ts","../src/deploy/bundler/bundler.ts","../src/deploy/bundler/dep-extractor.ts","../src/deploy/bundler/index.ts","../src/deploy/bundler/types.ts","../src/deploy/codegen/index.ts","../src/deploy/codegen/per-unit-codegen.ts","../src/deploy/plan/executor.ts","../src/deploy/plan/formatter.ts","../src/deploy/plan/index.ts","../src/deploy/plan/planner.ts","../src/deploy/plan/provider.ts","../src/deploy/plan/types.ts","../src/fabric/fabric-commands.ts","../src/fabric/functions/db-schema.function.ts","../src/fabric/functions/deploy-list.function.ts","../src/fabric/functions/deploy-units.function.ts","../src/fabric/functions/deploy.function.ts","../src/fabric/functions/domains-add.function.ts","../src/fabric/functions/domains-list.function.ts","../src/fabric/functions/domains-remove.function.ts","../src/fabric/functions/errors.function.ts","../src/fabric/functions/init.function.ts","../src/fabric/functions/link.function.ts","../src/fabric/functions/llm-key.function.ts","../src/fabric/functions/login.function.ts","../src/fabric/functions/logs.function.ts","../src/fabric/functions/metrics.function.ts","../src/fabric/functions/rollback.function.ts","../src/fabric/functions/secrets-list.function.ts","../src/fabric/functions/secrets-set.function.ts","../src/fabric/functions/status.function.ts","../src/fabric/functions/trace.function.ts","../src/fabric/functions/validate.function.ts","../src/fabric/lib/config.ts","../src/fabric/lib/console-url.ts","../src/fabric/lib/git.ts","../src/fabric/lib/http.ts","../src/fabric/lib/not-implemented.ts","../src/fabric/lib/output.ts","../src/fabric/lib/prompt.ts","../src/fabric/lib/stage.ts","../src/fabric/sdk/http-map.gen.d.ts","../src/fabric/sdk/pikku-fetch.gen.ts","../src/fabric/sdk/pikku-rpc.gen.ts","../src/fabric/sdk/rpc-map.gen.d.ts","../src/functions/commands/all.ts","../src/functions/commands/binary.ts","../src/functions/commands/bootstrap.ts","../src/functions/commands/console.ts","../src/functions/commands/db-migrate.ts","../src/functions/commands/db-reset.ts","../src/functions/commands/db-seed.ts","../src/functions/commands/db-shared.ts","../src/functions/commands/deploy-apply.ts","../src/functions/commands/deploy-info.ts","../src/functions/commands/deploy-plan.ts","../src/functions/commands/dev.ts","../src/functions/commands/enable.ts","../src/functions/commands/info.ts","../src/functions/commands/load-user-project.ts","../src/functions/commands/meta.ts","../src/functions/commands/new-addon.ts","../src/functions/commands/new-function.ts","../src/functions/commands/new-middleware.ts","../src/functions/commands/new-permission.ts","../src/functions/commands/new-wiring.ts","../src/functions/commands/pikku-command-bootstrap.ts","../src/functions/commands/pikku-command-summary.ts","../src/functions/commands/skills.ts","../src/functions/commands/tests-coverage.ts","../src/functions/commands/tests-init.ts","../src/functions/commands/versions-check.ts","../src/functions/commands/versions-init.ts","../src/functions/commands/versions-update.ts","../src/functions/commands/watch.ts","../src/functions/db/local-db.ts","../src/functions/db/seed.ts","../src/functions/db/sql-migrator.ts","../src/functions/db/sqlite-codegen.ts","../src/functions/db/zod-codegen.ts","../src/functions/runtimes/fetch/index.ts","../src/functions/runtimes/nextjs/pikku-command-nextjs.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-worker-rpc-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-backend-wrapper.ts","../src/functions/runtimes/nextjs/serialize-nextjs-http-wrapper.ts","../src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.ts","../src/functions/runtimes/tanstack-start/serialize-tanstack-start-shim.ts","../src/functions/runtimes/websocket/pikku-command-websocket-typed.ts","../src/functions/runtimes/websocket/serialize-websocket-wrapper.ts","../src/functions/wirings/ai-agent/pikku-command-ai-agent-types.ts","../src/functions/wirings/ai-agent/pikku-command-ai-agent.ts","../src/functions/wirings/ai-agent/pikku-command-public-agent.ts","../src/functions/wirings/ai-agent/serialize-agent-map.ts","../src/functions/wirings/ai-agent/serialize-ai-agent-types.ts","../src/functions/wirings/ai-agent/serialize-public-agent.ts","../src/functions/wirings/channels/pikku-channels.ts","../src/functions/wirings/channels/pikku-command-channel-types.ts","../src/functions/wirings/channels/pikku-command-channels-map.ts","../src/functions/wirings/channels/pikku-command-channels.ts","../src/functions/wirings/channels/serialize-channel-types.ts","../src/functions/wirings/channels/serialize-typed-channel-map.ts","../src/functions/wirings/cli/pikku-command-cli-entry.ts","../src/functions/wirings/cli/pikku-command-cli-types.ts","../src/functions/wirings/cli/pikku-command-cli.ts","../src/functions/wirings/cli/serialize-channel-cli-client.ts","../src/functions/wirings/cli/serialize-channel-cli.ts","../src/functions/wirings/cli/serialize-cli-types.ts","../src/functions/wirings/cli/serialize-local-cli-bootstrap.ts","../src/functions/wirings/console/pikku-command-console-functions.ts","../src/functions/wirings/console/pikku-command-node-types.ts","../src/functions/wirings/console/pikku-command-nodes-meta.ts","../src/functions/wirings/console/serialize-console-functions.ts","../src/functions/wirings/console/serialize-node-types.ts","../src/functions/wirings/credentials/pikku-command-credentials.ts","../src/functions/wirings/credentials/serialize-credentials-types.ts","../src/functions/wirings/functions/pikku-command-addon-types.ts","../src/functions/wirings/functions/pikku-command-function-types-split.ts","../src/functions/wirings/functions/pikku-command-function-types.ts","../src/functions/wirings/functions/pikku-command-functions.ts","../src/functions/wirings/functions/pikku-command-services.ts","../src/functions/wirings/functions/schemas.ts","../src/functions/wirings/functions/serialize-addon-types.ts","../src/functions/wirings/functions/serialize-function-imports.ts","../src/functions/wirings/functions/serialize-function-types.ts","../src/functions/wirings/functions/serialize-pikku-types-hub.ts","../src/functions/wirings/gateway/pikku-command-gateway.ts","../src/functions/wirings/http/pikku-command-http-map.ts","../src/functions/wirings/http/pikku-command-http-routes.ts","../src/functions/wirings/http/pikku-command-http-types.ts","../src/functions/wirings/http/pikku-command-openapi.ts","../src/functions/wirings/http/pikku-http-routes.ts","../src/functions/wirings/http/serialize-fetch-wrapper.ts","../src/functions/wirings/http/serialize-http-types.ts","../src/functions/wirings/http/serialize-typed-http-map.ts","../src/functions/wirings/mcp/pikku-command-mcp-json.ts","../src/functions/wirings/mcp/pikku-command-mcp-types.ts","../src/functions/wirings/mcp/pikku-command-mcp.ts","../src/functions/wirings/mcp/serialize-mcp-types.ts","../src/functions/wirings/middleware/pikku-command-middleware.ts","../src/functions/wirings/middleware/serialize-middleware-imports.ts","../src/functions/wirings/package/pikku-command-package-types.ts","../src/functions/wirings/package/pikku-command-package.ts","../src/functions/wirings/package/serialize-package-types.ts","../src/functions/wirings/package/serialize-package.ts","../src/functions/wirings/permissions/pikku-command-permissions.ts","../src/functions/wirings/permissions/serialize-permissions-imports.ts","../src/functions/wirings/queue/pikku-command-queue-map.ts","../src/functions/wirings/queue/pikku-command-queue-service.ts","../src/functions/wirings/queue/pikku-command-queue-types.ts","../src/functions/wirings/queue/pikku-command-queue.ts","../src/functions/wirings/queue/pikku-queue-map.ts","../src/functions/wirings/queue/pikku-queue.ts","../src/functions/wirings/queue/serialize-queue-map.ts","../src/functions/wirings/queue/serialize-queue-meta.ts","../src/functions/wirings/queue/serialize-queue-types.ts","../src/functions/wirings/queue/serialize-queue-wrapper.ts","../src/functions/wirings/realtime/pikku-command-events-scaffold.ts","../src/functions/wirings/realtime/pikku-command-realtime.ts","../src/functions/wirings/realtime/serialize-events-scaffold.ts","../src/functions/wirings/realtime/serialize-realtime-client.ts","../src/functions/wirings/rpc/pikku-command-public-rpc.ts","../src/functions/wirings/rpc/pikku-command-react-query.ts","../src/functions/wirings/rpc/pikku-command-remote-rpc.ts","../src/functions/wirings/rpc/pikku-command-rpc-client.ts","../src/functions/wirings/rpc/pikku-command-rpc-map.ts","../src/functions/wirings/rpc/pikku-command-rpc.ts","../src/functions/wirings/rpc/serialize-public-rpc.ts","../src/functions/wirings/rpc/serialize-react-query-hooks.ts","../src/functions/wirings/rpc/serialize-remote-rpc.ts","../src/functions/wirings/rpc/serialize-rpc-wrapper.ts","../src/functions/wirings/rpc/serialize-typed-rpc-map.ts","../src/functions/wirings/scheduler/pikku-command-scheduler-types.ts","../src/functions/wirings/scheduler/pikku-command-scheduler.ts","../src/functions/wirings/scheduler/serialize-scheduler-meta.ts","../src/functions/wirings/scheduler/serialize-scheduler-types.ts","../src/functions/wirings/secrets/pikku-command-secrets.ts","../src/functions/wirings/secrets/serialize-secrets-types.ts","../src/functions/wirings/triggers/pikku-command-trigger-types.ts","../src/functions/wirings/triggers/pikku-command-trigger.ts","../src/functions/wirings/triggers/serialize-trigger-meta.ts","../src/functions/wirings/triggers/serialize-trigger-types.ts","../src/functions/wirings/variables/pikku-command-variables.ts","../src/functions/wirings/variables/serialize-variables-types.ts","../src/functions/wirings/workflow/pikku-command-workflow-routes.ts","../src/functions/wirings/workflow/pikku-command-workflow.ts","../src/functions/wirings/workflow/serialize-workflow-bootstrap-map.ts","../src/functions/wirings/workflow/serialize-workflow-map.ts","../src/functions/wirings/workflow/serialize-workflow-meta.ts","../src/functions/wirings/workflow/serialize-workflow-registration.ts","../src/functions/wirings/workflow/serialize-workflow-routes.ts","../src/functions/wirings/workflow/serialize-workflow-types.ts","../src/functions/workflows/all.workflow.ts","../src/middleware/log-command-info-and-time.ts","../src/scaffold/rpc-remote.gen.ts","../src/services/cli-logger-forwarder.service.ts","../src/services/cli-logger.service.ts","../src/utils/check-required-types.ts","../src/utils/command-summary.ts","../src/utils/contract-versions.ts","../src/utils/file-import-path.ts","../src/utils/file-imports-serializer.ts","../src/utils/file-writer.ts","../src/utils/generate-bootstrap-file.ts","../src/utils/get-cli-version.ts","../src/utils/parse-cli-filters.ts","../src/utils/pikku-cli-config.ts","../src/utils/pikku-files-and-methods.ts","../src/utils/serialize-import-map.ts","../src/utils/serialize-meta-ts.ts","../src/utils/serialize-schemas.ts","../src/utils/strip-verbose-meta.ts","../.pikku/pikku-bootstrap.gen.ts","../.pikku/pikku-meta-service.gen.ts","../.pikku/pikku-services.gen.ts","../.pikku/pikku-types.gen.ts","../.pikku/agent/pikku-agent-map.gen.d.ts","../.pikku/agent/pikku-agent-types.gen.ts","../.pikku/channel/pikku-channel-types.gen.ts","../.pikku/cli/pikku-cli-channel.ts","../.pikku/cli/pikku-cli-types.gen.ts","../.pikku/cli/pikku-cli-wirings-meta.gen.ts","../.pikku/cli/pikku-cli-wirings.gen.ts","../.pikku/cli/pikku-cli.gen.ts","../.pikku/console/pikku-node-types.gen.ts","../.pikku/function/pikku-function-types.gen.ts","../.pikku/function/pikku-functions-meta.gen.ts","../.pikku/function/pikku-functions.gen.ts","../.pikku/http/pikku-http-types.gen.ts","../.pikku/http/pikku-http-wirings-map.gen.d.ts","../.pikku/http/pikku-http-wirings-meta.gen.ts","../.pikku/http/pikku-http-wirings.gen.ts","../.pikku/mcp/pikku-mcp-types.gen.ts","../.pikku/node/pikku-node-types.gen.ts","../.pikku/queue/pikku-queue-types.gen.ts","../.pikku/queue/pikku-queue-workers-wirings-map.gen.d.ts","../.pikku/queue/pikku-queue-workers-wirings-meta.gen.ts","../.pikku/queue/pikku-queue-workers-wirings.gen.ts","../.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts","../.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.ts","../.pikku/scheduler/pikku-scheduler-types.gen.ts","../.pikku/schemas/register.gen.ts","../.pikku/secrets/pikku-secret-types.gen.ts","../.pikku/secrets/pikku-secrets.gen.ts","../.pikku/trigger/pikku-trigger-types.gen.ts","../.pikku/variables/pikku-variable-types.gen.ts","../.pikku/variables/pikku-variables.gen.ts","../.pikku/workflow/pikku-workflow-map.gen.d.ts","../.pikku/workflow/pikku-workflow-types.gen.ts","../.pikku/workflow/pikku-workflow-wirings-meta.gen.ts","../.pikku/workflow/pikku-workflow-wirings.gen.ts","../types/application-types.d.ts","../types/config.d.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pikku/cli",
3
- "version": "0.12.22",
3
+ "version": "0.12.23",
4
4
  "author": "yasser.fadl@gmail.com",
5
5
  "license": "BUSL-1.1",
6
6
  "imports": {
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@openapi-contrib/json-schema-to-openapi-schema": "^4.3.1",
29
- "@pikku/core": "^0.12.21",
29
+ "@pikku/core": "^0.12.22",
30
30
  "@pikku/deploy-cloudflare": "^0.12.3",
31
31
  "@pikku/fetch": "^0.12.2",
32
32
  "@pikku/inspector": "^0.12.12",
@@ -12,7 +12,7 @@ Use this skill as an execution checklist, not reference material.
12
12
 
13
13
  1. Every user-facing string in a frontend is a token. Never hardcode display text — write `t('some.token')` and put the English copy in `i18n/en.json`. This holds even when the app ships only English; the tokens are the seam a second language slots into later.
14
14
  2. One `i18n/<lang>.json` file per language per app, sitting next to the i18n config in a single `i18n/` folder. English (`en`) is the default and is the only locale registered until someone adds another.
15
- 3. Pick the delivery pattern by framework (see below). The token files and config shape are identical across frameworks; only *how the active locale reaches the renderer* differs.
15
+ 3. Pick the delivery pattern by framework (see below). The token files and config shape are identical across frameworks; only _how the active locale reaches the renderer_ differs.
16
16
  4. Validate with the app's own `tsc` then its `build`. For Next.js, a clean `dev` is not enough — run `build`, because the RSC page-data collection step is where i18n wiring mistakes surface.
17
17
 
18
18
  ## The rules that don't change
@@ -38,21 +38,22 @@ deploy. `vite build` does not type-check on its own, so this gate is the only
38
38
  thing standing between a broken/missing token and production. Keep a `"tsc":
39
39
  "tsc --noEmit"` script in every frontend's `package.json` so the gate uses it.
40
40
 
41
- The type gate catches *invalid* tokens but not *inlined* strings — a hardcoded
41
+ The type gate catches _invalid_ tokens but not _inlined_ strings — a hardcoded
42
42
  `<h1>Welcome</h1>` compiles fine. Catching those is best-effort (the builder
43
43
  agent is told never to inline) plus the debug mode below.
44
44
 
45
45
  ## i18n debug mode (find inlined strings)
46
46
 
47
47
  Each config registers an i18next `postProcessor` named `i18nDebug` that, when
48
- enabled, masks every *translated* string to block glyphs (`█`). The trick: with
48
+ enabled, masks every _translated_ string to block glyphs (`█`). The trick: with
49
49
  it on, anything still readable on screen is text that **never went through a
50
50
  token** — i.e. a hardcoded/inlined string. It's a visual leak detector for
51
51
  missing i18n, not a runtime feature, so it ships **off by default**.
52
52
 
53
53
  ```ts
54
54
  export function isI18nDebug(): boolean {
55
- if (typeof process !== 'undefined' && process.env?.I18N_DEBUG === '1') return true
55
+ if (typeof process !== 'undefined' && process.env?.I18N_DEBUG === '1')
56
+ return true
56
57
  if (typeof window === 'undefined') return false
57
58
  const params = new URLSearchParams(window.location.search)
58
59
  if (params.has('i18n-debug')) return params.get('i18n-debug') !== '0'
@@ -62,7 +63,8 @@ export function isI18nDebug(): boolean {
62
63
  const i18nDebugPostProcessor = {
63
64
  type: 'postProcessor' as const,
64
65
  name: 'i18nDebug',
65
- process: (value: string) => (isI18nDebug() ? value.replace(/\S/g, '█') : value),
66
+ process: (value: string) =>
67
+ isI18nDebug() ? value.replace(/\S/g, '█') : value,
66
68
  }
67
69
  // register on the instance: `.use(i18nDebugPostProcessor)` and add
68
70
  // `postProcess: ['i18nDebug']` to `.init({ ... })`.
@@ -109,7 +111,10 @@ export function detectLocale(pathname: string): Locale {
109
111
 
110
112
  i18n.use(initReactI18next).init({
111
113
  resources: { en: { translation: en } },
112
- lng: typeof window !== 'undefined' ? detectLocale(window.location.pathname) : defaultLocale,
114
+ lng:
115
+ typeof window !== 'undefined'
116
+ ? detectLocale(window.location.pathname)
117
+ : defaultLocale,
113
118
  fallbackLng: defaultLocale,
114
119
  interpolation: { escapeValue: false },
115
120
  })
@@ -137,12 +142,15 @@ export const prettyStatus = (s: string) => i18n.t(`status.${s}`)
137
142
  ## Per-framework delivery
138
143
 
139
144
  ### Vite SPA
145
+
140
146
  The config above is the whole story. `import './i18n/config'` in `main.tsx`; `useTranslation` everywhere.
141
147
 
142
148
  ### Vite SSR (`@cloudflare/vite-plugin` / Worker)
149
+
143
150
  Same config, but `import './i18n/config'` in **both** the worker entry (`worker.tsx`) and the client entry (`client.tsx`) so the global i18next instance is initialised on each side before `<App/>` renders. The locale JSON is bundled into the Worker (a static import, not a fetch — the Worker never has to fetch its own assets). The shared `<App/>` uses `useTranslation` normally.
144
151
 
145
152
  ### Next.js app-router — server components
153
+
146
154
  Server components **cannot** call `useTranslation`, and they **must not** import `initReactI18next`: it calls React's `createContext`, which throws during RSC page-data collection (`(0 , Y.createContext) is not a function` at build). Use a plain i18next instance and a fixed translator instead.
147
155
 
148
156
  `app/i18n/config.ts`:
@@ -192,6 +200,7 @@ export default function Page() {
192
200
  This works in both `output: 'export'` (static) and dynamic SSR — the static export pre-renders translated HTML at build time.
193
201
 
194
202
  ### Next.js app-router — client components
203
+
195
204
  A `'use client'` component that needs the hook uses the standard `initReactI18next` instance behind an `I18nextProvider`, kept separate from the server `app/i18n/config.ts`. Most starter pages are server components and never need this.
196
205
 
197
206
  ## Adding a second language
@@ -14,7 +14,7 @@ registered `satisfies typeof en`) plus the document being told it is `rtl`.
14
14
  ## The one idea
15
15
 
16
16
  Set `dir` **once at the document root** from the active locale, then let the
17
- browser and Mantine mirror everything — *provided* every custom style is written
17
+ browser and Mantine mirror everything — _provided_ every custom style is written
18
18
  **flow-relative** (start/end), never **physical** (left/right). Get those two
19
19
  things right and Arabic, Hebrew, Farsi and Urdu all work with zero per-component
20
20
  RTL code.
@@ -46,22 +46,22 @@ RTL code.
46
46
 
47
47
  Use the **inline-axis logical** property; never the physical one:
48
48
 
49
- | Don't (physical) | Do (flow-relative) |
50
- | --------------------------- | ------------------------------------------- |
51
- | `margin-left` / `marginLeft`| `margin-inline-start` / `marginInlineStart` |
52
- | `margin-right` | `margin-inline-end` / `marginInlineEnd` |
53
- | `padding-left/right` | `padding-inline-start/end` |
54
- | `left: 0` / `right: 0` | `inset-inline-start: 0` / `inset-inline-end`|
55
- | `text-align: left/right` | `text-align: start / end` |
56
- | `border-top-left-radius` | `border-start-start-radius` |
57
- | `float: left/right` | `float: inline-start / inline-end` |
49
+ | Don't (physical) | Do (flow-relative) |
50
+ | ---------------------------- | -------------------------------------------- |
51
+ | `margin-left` / `marginLeft` | `margin-inline-start` / `marginInlineStart` |
52
+ | `margin-right` | `margin-inline-end` / `marginInlineEnd` |
53
+ | `padding-left/right` | `padding-inline-start/end` |
54
+ | `left: 0` / `right: 0` | `inset-inline-start: 0` / `inset-inline-end` |
55
+ | `text-align: left/right` | `text-align: start / end` |
56
+ | `border-top-left-radius` | `border-start-start-radius` |
57
+ | `float: left/right` | `float: inline-start / inline-end` |
58
58
 
59
59
  In **Mantine**, use the logical style props — they emit the logical CSS above:
60
60
 
61
- | Don't | Do |
62
- | ------------ | ------------- |
63
- | `ml` / `mr` | `ms` / `me` |
64
- | `pl` / `pr` | `ps` / `pe` |
61
+ | Don't | Do |
62
+ | ----------- | ----------- |
63
+ | `ml` / `mr` | `ms` / `me` |
64
+ | `pl` / `pr` | `ps` / `pe` |
65
65
 
66
66
  Mantine's own components already use logical properties internally, so once the
67
67
  direction is set they mirror automatically — you only have to be disciplined in
@@ -76,6 +76,7 @@ logical order; let `dir` handle the visual order.
76
76
  ## Applying direction at the root
77
77
 
78
78
  ### Mantine app (e.g. environment-template)
79
+
79
80
  Mantine ships first-class RTL: wrap the tree in `DirectionProvider` and set the
80
81
  matching `dir` on `<html>`.
81
82
 
@@ -83,14 +84,13 @@ matching `dir` on `<html>`.
83
84
  import { DirectionProvider, MantineProvider } from '@mantine/core'
84
85
  import i18n, { detectLocale, localeDir } from './i18n/config'
85
86
 
86
- const locale = typeof window !== 'undefined'
87
- ? detectLocale(window.location.pathname)
88
- : 'en'
87
+ const locale =
88
+ typeof window !== 'undefined' ? detectLocale(window.location.pathname) : 'en'
89
89
  const dir = localeDir(locale)
90
90
 
91
91
  if (typeof document !== 'undefined') {
92
92
  document.documentElement.lang = locale
93
- document.documentElement.dir = dir // Mantine + browser read this
93
+ document.documentElement.dir = dir // Mantine + browser read this
94
94
  }
95
95
 
96
96
  root.render(
@@ -98,14 +98,16 @@ root.render(
98
98
  <MantineProvider theme={theme} defaultColorScheme="dark">
99
99
  {/* …app… */}
100
100
  </MantineProvider>
101
- </DirectionProvider>,
101
+ </DirectionProvider>
102
102
  )
103
103
  ```
104
+
104
105
  To flip direction live (a language switcher) call
105
106
  `document.documentElement.setAttribute('dir', localeDir(next))` and Mantine's
106
107
  `useDirection().setDirection(dir)`; both read the same value.
107
108
 
108
109
  ### Plain Vite SPA (kanban, test-harness vite-spa)
110
+
109
111
  No Mantine — just put `dir`/`lang` on `<html>` at bootstrap, after the locale is
110
112
  detected (the same `detectLocale` the i18n config uses):
111
113
 
@@ -116,9 +118,11 @@ const locale = detectLocale(window.location.pathname)
116
118
  document.documentElement.lang = locale
117
119
  document.documentElement.dir = localeDir(locale)
118
120
  ```
121
+
119
122
  Everything below inherits `dir` from `<html>`; logical CSS does the mirroring.
120
123
 
121
124
  ### Vite SSR (test-harness vite-ssr)
125
+
122
126
  The worker renders the full HTML, so set `lang`/`dir` on the server `<html>`
123
127
  from the **URL** locale (the client inherits it on hydration — no flash):
124
128
 
@@ -132,17 +136,23 @@ const html = `<!doctype html>
132
136
 
133
137
  </html>`
134
138
  ```
139
+
135
140
  i18next's active language must match: call `i18n.changeLanguage(locale)` before
136
141
  `renderToString` so the SSR'd text and `dir` agree.
137
142
 
138
143
  ### Next.js app-router (test-harness next-ssr / next-static)
144
+
139
145
  Set it on the `<html>` in `app/layout.tsx`. With locale-prefixed routes the
140
146
  segment gives the locale; for a single-locale build it's a constant:
141
147
 
142
148
  ```tsx
143
149
  import { localeDir, defaultLocale } from './i18n/config'
144
150
 
145
- export default function RootLayout({ children }: { children: React.ReactNode }) {
151
+ export default function RootLayout({
152
+ children,
153
+ }: {
154
+ children: React.ReactNode
155
+ }) {
146
156
  const locale = defaultLocale // or the [lang] route segment / params
147
157
  return (
148
158
  <html lang={locale} dir={localeDir(locale)}>
@@ -151,6 +161,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
151
161
  )
152
162
  }
153
163
  ```
164
+
154
165
  For `output: 'export'` with `/ar` prefixes, derive `locale` from the route
155
166
  segment so each statically-exported tree carries the right `dir`.
156
167
 
@@ -162,8 +173,11 @@ non-directional icon (search, settings, avatar) must **not**. Flip with the
162
173
  `:dir()` selector — no JS, no per-locale branching:
163
174
 
164
175
  ```css
165
- :dir(rtl) .icon-directional { transform: scaleX(-1); }
176
+ :dir(rtl) .icon-directional {
177
+ transform: scaleX(-1);
178
+ }
166
179
  ```
180
+
167
181
  Or in CSS-in-JS / inline, gate on the resolved direction:
168
182
  `transform: localeDir(locale) === 'rtl' ? 'scaleX(-1)' : undefined`.
169
183
  Prefer logical icon components if your icon set ships them.
@@ -171,8 +185,8 @@ Prefer logical icon components if your icon set ships them.
171
185
  ## Arabic typography niceties
172
186
 
173
187
  - **Font:** the default Latin stack renders Arabic with the system fallback,
174
- which is inconsistent. Add an Arabic-capable family (e.g. *Noto Sans Arabic*,
175
- *IBM Plex Sans Arabic*) to `font-family` so both scripts look intentional.
188
+ which is inconsistent. Add an Arabic-capable family (e.g. _Noto Sans Arabic_,
189
+ _IBM Plex Sans Arabic_) to `font-family` so both scripts look intentional.
176
190
  - **Numerals:** don't hardcode digits. Format numbers/dates with
177
191
  `Intl.NumberFormat`/`Intl.DateTimeFormat` (or i18next formatters) given the
178
192
  active locale, so Western vs Arabic-Indic digits follow the locale choice.
@@ -187,7 +201,7 @@ Prefer logical icon components if your icon set ships them.
187
201
  2. Confirm the `localeDir` helper includes `ar` (it does by default).
188
202
  3. Confirm the root sets `dir` from the locale (recipe above).
189
203
  4. Sweep the app's styles: replace every `left/right`, `ml/mr`, `text-align:
190
- left` with the flow-relative equivalent; revert any manual `row-reverse`.
204
+ left` with the flow-relative equivalent; revert any manual `row-reverse`.
191
205
  5. Flip directional icons.
192
206
  6. `tsc`, then load the Arabic route and verify the whole layout mirrors —
193
207
  sidebar on the right, text right-aligned, arrows pointing the other way.
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "nodeId": { "type": "string" }, "data": {} }, "required": ["workflowName", "nodeId"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "runId": { "type": "string" } }, "required": ["runId"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "id": { "type": "string" }, "status": { "$ref": "#/definitions/WorkflowStatus" }, "startedAt": { "type": "string", "format": "date-time" }, "completedAt": { "type": "string", "format": "date-time" }, "deterministic": { "type": "boolean" }, "plannedSteps": { "type": "array", "items": { "$ref": "#/definitions/WorkflowPlannedStep" } }, "steps": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "status": { "$ref": "#/definitions/StepStatus" }, "duration": { "type": "number" } }, "required": ["name", "status"], "additionalProperties": false } }, "output": {}, "error": { "type": "object", "properties": { "message": { "type": "string" } }, "required": ["message"], "additionalProperties": false } }, "required": ["id", "status", "startedAt", "steps"], "additionalProperties": false, "definitions": { "WorkflowStatus": { "type": "string", "enum": ["running", "suspended", "completed", "failed", "cancelled"], "description": "Workflow run status" }, "WorkflowPlannedStep": { "type": "object", "properties": { "stepName": { "type": "string", "description": "Human-readable step label for UI timeline" } }, "required": ["stepName"], "additionalProperties": false }, "StepStatus": { "type": "string", "enum": ["pending", "running", "scheduled", "succeeded", "failed", "suspended"], "description": "Workflow step status" } } }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "data": {} }, "required": ["workflowName"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "data": {} }, "required": ["workflowName"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "runId": { "type": "string" } }, "required": ["runId"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "runId": { "type": "string" } }, "required": ["workflowName", "runId"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "runId": { "type": "string" } }, "required": ["workflowName", "runId"], "additionalProperties": false, "definitions": {} }
@@ -1 +0,0 @@
1
- { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "workflowName": { "type": "string" }, "runId": { "type": "string" } }, "required": ["workflowName", "runId"], "additionalProperties": false, "definitions": {} }
@@ -1,84 +0,0 @@
1
- import type { WorkflowRunStatus } from '@pikku/core/workflow';
2
- export declare const workflowStarter: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
3
- workflowName: string;
4
- data?: unknown;
5
- }, {
6
- runId: string;
7
- }, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
8
- workflowName: string;
9
- data?: unknown;
10
- }, {
11
- runId: string;
12
- }, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
13
- workflowName: string;
14
- data?: unknown;
15
- }, {
16
- runId: string;
17
- }, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
18
- export declare const workflowRunner: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
19
- workflowName: string;
20
- data?: unknown;
21
- }, unknown, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
22
- workflowName: string;
23
- data?: unknown;
24
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
25
- workflowName: string;
26
- data?: unknown;
27
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
28
- export declare const workflowStatusChecker: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
29
- workflowName: string;
30
- runId: string;
31
- }, WorkflowRunStatus, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
32
- workflowName: string;
33
- runId: string;
34
- }, WorkflowRunStatus, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
35
- workflowName: string;
36
- runId: string;
37
- }, WorkflowRunStatus, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
38
- /**
39
- * Minimal workflow status stream — sends step names and statuses only.
40
- * Use this for user-facing frontends where internal details should not be exposed.
41
- */
42
- export declare const workflowStatusStream: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
43
- workflowName: string;
44
- runId: string;
45
- }, unknown, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
46
- workflowName: string;
47
- runId: string;
48
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
49
- workflowName: string;
50
- runId: string;
51
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
52
- /**
53
- * Full workflow status stream — includes output, error, and child run IDs.
54
- * Use this for admin consoles and internal tooling.
55
- */
56
- export declare const workflowStatusStreamFull: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
57
- workflowName: string;
58
- runId: string;
59
- }, unknown, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
60
- workflowName: string;
61
- runId: string;
62
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
63
- workflowName: string;
64
- runId: string;
65
- }, unknown, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;
66
- export declare const graphStarter: import("../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<{
67
- workflowName: string;
68
- nodeId: string;
69
- data?: unknown;
70
- }, {
71
- runId: string;
72
- }, "rpc" | "session", import("../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
73
- workflowName: string;
74
- nodeId: string;
75
- data?: unknown;
76
- }, {
77
- runId: string;
78
- }, "rpc" | "session", import("../../types/application-types.js").Services> | import("../../.pikku/pikku-types.gen.js").PikkuFunction<{
79
- workflowName: string;
80
- nodeId: string;
81
- data?: unknown;
82
- }, {
83
- runId: string;
84
- }, "rpc" | "session", import("../../types/application-types.js").Services>, undefined, undefined>;