@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.
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.js +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-wirings.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli.gen.js +1 -1
- package/dist/.pikku/console/pikku-node-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +162 -270
- package/dist/.pikku/function/pikku-functions.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.js +1 -1
- package/dist/.pikku/http/pikku-http-wirings-meta.gen.json +1 -62
- package/dist/.pikku/http/pikku-http-wirings.gen.d.ts +1 -2
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -2
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.d.ts +1 -1
- package/dist/.pikku/pikku-bootstrap.gen.js +1 -1
- package/dist/.pikku/pikku-meta-service.gen.d.ts +1 -1
- package/dist/.pikku/pikku-meta-service.gen.js +1 -1
- package/dist/.pikku/pikku-services.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.d.ts +1 -1
- package/dist/.pikku/pikku-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings-meta.gen.js +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-workers-wirings.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +13 -19
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.js +1 -1
- package/dist/.pikku/schemas/register.gen.js +7 -25
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secret-types.gen.js +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.js +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings.gen.js +1 -1
- package/dist/bin/pikku-bin.mjs +2 -2
- package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.js +1 -1
- package/dist/src/scaffold/rpc-remote.gen.js +1 -1
- package/dist/src/utils/serialize-schemas.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/skills/pikku-i18n/SKILL.md +15 -6
- package/skills/pikku-rtl/SKILL.md +38 -24
- package/dist/.pikku/schemas/schemas/GraphStarterInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/GraphStarterOutput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowRunStatus.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowRunnerInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowStarterInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowStarterOutput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowStatusCheckerInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowStatusStreamFullInput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/WorkflowStatusStreamInput.schema.json +0 -1
- package/dist/src/scaffold/workflow-routes.gen.d.ts +0 -84
- 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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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')
|
|
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) =>
|
|
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:
|
|
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 —
|
|
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)
|
|
50
|
-
|
|
|
51
|
-
| `margin-left` / `marginLeft
|
|
52
|
-
| `margin-right`
|
|
53
|
-
| `padding-left/right`
|
|
54
|
-
| `left: 0` / `right: 0`
|
|
55
|
-
| `text-align: left/right`
|
|
56
|
-
| `border-top-left-radius`
|
|
57
|
-
| `float: left/right`
|
|
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
|
|
62
|
-
|
|
|
63
|
-
| `ml` / `mr`
|
|
64
|
-
| `pl` / `pr`
|
|
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 =
|
|
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
|
|
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({
|
|
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 {
|
|
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.
|
|
175
|
-
|
|
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
|
-
|
|
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>;
|