@pikku/cli 0.12.54 → 0.12.56
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/cli.schema.json +1 -1
- package/console-app/assets/{index-DYnbceYg.js → index-xN8LW0II.js} +155 -155
- package/console-app/index.html +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +3 -3
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-channel.d.ts +6 -6
- package/dist/.pikku/cli/pikku-cli-channel.js +11 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-client.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.d.ts +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.js +1 -1
- package/dist/.pikku/cli/pikku-cli-contracts-meta.gen.json +14 -0
- 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-meta.gen.json +29 -0
- 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 +8 -31
- 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 +1420 -1384
- package/dist/.pikku/function/pikku-functions.gen.js +3 -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.gen.d.ts +1 -1
- package/dist/.pikku/http/pikku-http-wirings.gen.js +1 -1
- 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 +4 -2
- package/dist/.pikku/pikku-services.gen.js +2 -0
- 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-meta.gen.json +0 -248
- 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 +69 -67
- 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 +191 -185
- package/dist/.pikku/schemas/schemas/FabricAddonVerifyInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/FabricAddonVerifyOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuAuthInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/PikkuCLIConfig.schema.json +1 -1
- 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/meta/allWorkflow.gen.json +9 -3
- 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/cli.wiring.js +15 -1
- package/dist/src/deploy/analyzer/analyzer.d.ts +6 -0
- package/dist/src/deploy/analyzer/analyzer.js +5 -4
- package/dist/src/deploy/build-pipeline.d.ts +5 -1
- package/dist/src/deploy/build-pipeline.js +5 -5
- package/dist/src/deploy/bundler/bun-bundler.d.ts +14 -0
- package/dist/src/deploy/bundler/bun-bundler.js +121 -0
- package/dist/src/deploy/bundler/bundler.d.ts +25 -30
- package/dist/src/deploy/bundler/bundler.interface.d.ts +54 -0
- package/dist/src/deploy/bundler/bundler.interface.js +11 -0
- package/dist/src/deploy/bundler/bundler.js +120 -190
- package/dist/src/deploy/bundler/dep-extractor.d.ts +11 -3
- package/dist/src/deploy/bundler/dep-extractor.js +12 -6
- package/dist/src/deploy/bundler/index.d.ts +5 -2
- package/dist/src/deploy/bundler/index.js +4 -2
- package/dist/src/deploy/bundler/node-bundler.d.ts +13 -0
- package/dist/src/deploy/bundler/node-bundler.js +80 -0
- package/dist/src/deploy/provider-adapter.d.ts +11 -0
- package/dist/src/deploy/server-entry.js +3 -1
- package/dist/src/fabric/fabric-commands.d.ts +109 -72
- package/dist/src/fabric/fabric-commands.js +8 -0
- package/dist/src/fabric/functions/add.function.d.ts +3 -3
- package/dist/src/fabric/functions/addon-verify.function.d.ts +54 -0
- package/dist/src/fabric/functions/addon-verify.function.js +153 -0
- package/dist/src/fabric/functions/db-schema.function.d.ts +3 -3
- package/dist/src/fabric/functions/deploy-list.function.d.ts +3 -3
- package/dist/src/fabric/functions/deploy-units.function.d.ts +3 -3
- package/dist/src/fabric/functions/deploy.function.d.ts +6 -6
- package/dist/src/fabric/functions/domains-add.function.d.ts +3 -3
- package/dist/src/fabric/functions/domains-list.function.d.ts +3 -3
- package/dist/src/fabric/functions/domains-remove.function.d.ts +3 -3
- package/dist/src/fabric/functions/errors.function.d.ts +3 -3
- package/dist/src/fabric/functions/init.function.d.ts +3 -3
- package/dist/src/fabric/functions/link.function.d.ts +3 -3
- package/dist/src/fabric/functions/llm-key.function.d.ts +3 -3
- package/dist/src/fabric/functions/llm-key.function.js +1 -1
- package/dist/src/fabric/functions/login.function.d.ts +3 -3
- package/dist/src/fabric/functions/logs.function.d.ts +3 -3
- package/dist/src/fabric/functions/metrics.function.d.ts +3 -3
- package/dist/src/fabric/functions/publish.function.d.ts +3 -3
- package/dist/src/fabric/functions/publish.function.js +8 -3
- package/dist/src/fabric/functions/rollback.function.d.ts +3 -3
- package/dist/src/fabric/functions/secrets-list.function.d.ts +3 -3
- package/dist/src/fabric/functions/secrets-set.function.d.ts +3 -3
- package/dist/src/fabric/functions/smoke.function.d.ts +3 -3
- package/dist/src/fabric/functions/status.function.d.ts +3 -3
- package/dist/src/fabric/functions/trace.function.d.ts +3 -3
- package/dist/src/fabric/functions/validate.function.d.ts +3 -3
- package/dist/src/functions/commands/all.d.ts +1 -1
- package/dist/src/functions/commands/all.js +19 -2
- package/dist/src/functions/commands/binary.d.ts +3 -3
- package/dist/src/functions/commands/bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/bootstrap.js +3 -0
- package/dist/src/functions/commands/console.d.ts +3 -3
- package/dist/src/functions/commands/db-audit.d.ts +1 -1
- package/dist/src/functions/commands/db-generate.d.ts +1 -1
- package/dist/src/functions/commands/db-migrate.d.ts +1 -1
- package/dist/src/functions/commands/db-reset.d.ts +1 -1
- package/dist/src/functions/commands/db-seed.d.ts +1 -1
- package/dist/src/functions/commands/deploy-apply.d.ts +3 -3
- package/dist/src/functions/commands/deploy-apply.js +32 -1
- package/dist/src/functions/commands/deploy-info.d.ts +1 -1
- package/dist/src/functions/commands/deploy-plan.d.ts +3 -3
- package/dist/src/functions/commands/deploy-plan.js +3 -1
- package/dist/src/functions/commands/dev.d.ts +3 -3
- package/dist/src/functions/commands/dev.js +17 -45
- package/dist/src/functions/commands/emails-init.d.ts +1 -1
- package/dist/src/functions/commands/enable.d.ts +6 -5
- package/dist/src/functions/commands/enable.js +4 -0
- package/dist/src/functions/commands/info.d.ts +4 -4
- package/dist/src/functions/commands/login.d.ts +7 -7
- package/dist/src/functions/commands/meta.d.ts +31 -31
- package/dist/src/functions/commands/new-addon.d.ts +3 -3
- package/dist/src/functions/commands/new-function.d.ts +3 -3
- package/dist/src/functions/commands/new-middleware.d.ts +3 -3
- package/dist/src/functions/commands/new-permission.d.ts +3 -3
- package/dist/src/functions/commands/new-wiring.d.ts +3 -3
- package/dist/src/functions/commands/pikku-command-bootstrap.d.ts +1 -1
- package/dist/src/functions/commands/pikku-command-summary.d.ts +1 -1
- package/dist/src/functions/commands/pikku-command-summary.js +6 -1
- package/dist/src/functions/commands/skills.d.ts +6 -6
- package/dist/src/functions/commands/tests-coverage.d.ts +3 -3
- package/dist/src/functions/commands/tests-init.d.ts +3 -3
- package/dist/src/functions/commands/versions-check.d.ts +1 -1
- package/dist/src/functions/commands/versions-init.d.ts +3 -3
- package/dist/src/functions/commands/versions-update.d.ts +1 -1
- package/dist/src/functions/commands/watch.d.ts +3 -3
- package/dist/src/functions/commands/workspace-validate.d.ts +3 -3
- package/dist/src/functions/db/db-codegen.js +14 -0
- package/dist/src/functions/db/sqlite/sqlite-runtime-bun.js +10 -0
- package/dist/src/functions/runtimes/fetch/index.d.ts +1 -1
- package/dist/src/functions/runtimes/nextjs/pikku-command-nextjs.d.ts +1 -1
- package/dist/src/functions/runtimes/tanstack-start/pikku-command-tanstack-start.d.ts +1 -1
- package/dist/src/functions/runtimes/websocket/pikku-command-websocket-typed.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent-types.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-ai-agent.d.ts +1 -1
- package/dist/src/functions/wirings/ai-agent/pikku-command-public-agent.d.ts +1 -1
- package/dist/src/functions/wirings/auth/pikku-command-auth.d.ts +7 -1
- package/dist/src/functions/wirings/auth/pikku-command-auth.js +14 -2
- package/dist/src/functions/wirings/auth/serialize-auth-types.d.ts +10 -0
- package/dist/src/functions/wirings/auth/serialize-auth-types.js +15 -0
- package/dist/src/functions/wirings/channels/pikku-channels.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channel-types.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels-map.d.ts +1 -1
- package/dist/src/functions/wirings/channels/pikku-command-channels.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-entry.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli-types.d.ts +1 -1
- package/dist/src/functions/wirings/cli/pikku-command-cli.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-console-functions.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-node-types.d.ts +1 -1
- package/dist/src/functions/wirings/console/pikku-command-nodes-meta.d.ts +1 -1
- package/dist/src/functions/wirings/credentials/pikku-command-credentials.d.ts +1 -1
- package/dist/src/functions/wirings/emails/pikku-command-emails.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-addon-types.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-function-types-split.d.ts +3 -3
- package/dist/src/functions/wirings/functions/pikku-command-function-types.d.ts +3 -3
- package/dist/src/functions/wirings/functions/pikku-command-function-types.js +10 -3
- package/dist/src/functions/wirings/functions/pikku-command-functions.d.ts +1 -1
- package/dist/src/functions/wirings/functions/pikku-command-services.d.ts +1 -1
- package/dist/src/functions/wirings/functions/schemas.d.ts +1 -1
- package/dist/src/functions/wirings/functions/serialize-function-types.js +6 -29
- package/dist/src/functions/wirings/gateway/pikku-command-gateway.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-map.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-http-types.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-command-openapi.d.ts +1 -1
- package/dist/src/functions/wirings/http/pikku-http-routes.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-json.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp-types.d.ts +1 -1
- package/dist/src/functions/wirings/mcp/pikku-command-mcp.d.ts +1 -1
- package/dist/src/functions/wirings/middleware/pikku-command-middleware.d.ts +1 -1
- package/dist/src/functions/wirings/package/pikku-command-package-types.d.ts +2 -2
- package/dist/src/functions/wirings/package/pikku-command-package.d.ts +1 -1
- package/dist/src/functions/wirings/permissions/pikku-command-permissions.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-service.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue-types.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-command-queue.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue-map.d.ts +1 -1
- package/dist/src/functions/wirings/queue/pikku-queue.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-events-scaffold.d.ts +1 -1
- package/dist/src/functions/wirings/realtime/pikku-command-realtime.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-public-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-react-query.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-remote-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-client.d.ts +1 -1
- package/dist/src/functions/wirings/rpc/pikku-command-rpc-map.d.ts +2 -2
- package/dist/src/functions/wirings/rpc/pikku-command-rpc.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler-types.d.ts +1 -1
- package/dist/src/functions/wirings/scheduler/pikku-command-scheduler.d.ts +1 -1
- package/dist/src/functions/wirings/secrets/pikku-command-secrets.d.ts +1 -1
- package/dist/src/functions/wirings/triggers/pikku-command-trigger-types.d.ts +3 -3
- package/dist/src/functions/wirings/triggers/pikku-command-trigger.d.ts +1 -1
- package/dist/src/functions/wirings/variables/pikku-command-variables.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow-routes.d.ts +1 -1
- package/dist/src/functions/wirings/workflow/pikku-command-workflow.d.ts +1 -1
- package/dist/src/functions/workflows/all.workflow.js +6 -1
- package/dist/src/scaffold/rpc-remote.gen.d.ts +3 -3
- package/dist/src/scaffold/rpc-remote.gen.js +1 -1
- package/dist/src/server/bun-server-runner.d.ts +17 -0
- package/dist/src/server/bun-server-runner.js +25 -0
- package/dist/src/server/dev-server-runner.interface.d.ts +31 -0
- package/dist/src/server/dev-server-runner.interface.js +11 -0
- package/dist/src/server/node-server-runner.d.ts +12 -0
- package/dist/src/server/node-server-runner.js +30 -0
- package/dist/src/services/cli-logger.service.js +7 -1
- package/dist/src/services.js +18 -0
- package/dist/src/utils/detect-better-auth.d.ts +7 -0
- package/dist/src/utils/detect-better-auth.js +29 -0
- package/dist/src/utils/parse-cli-filters.d.ts +1 -0
- package/dist/src/utils/parse-cli-filters.js +1 -0
- package/dist/src/utils/pikku-cli-config.js +1 -1
- package/dist/src/utils/serialize-schemas.js +5 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/skills/pikku-addon/SKILL.md +25 -117
- package/skills/pikku-addon/references/addon-package-manifest.md +63 -0
- package/skills/pikku-cli/SKILL.md +7 -93
- package/skills/pikku-cli/references/complete-example.md +82 -0
- package/skills/pikku-concepts/SKILL.md +17 -69
- package/skills/pikku-concepts/references/concept-mapping.md +37 -13
- package/skills/pikku-concepts/references/packages.md +29 -0
- package/skills/pikku-http/SKILL.md +14 -105
- package/skills/pikku-http/references/http-options.md +57 -0
- package/skills/pikku-middleware/SKILL.md +11 -68
- package/skills/pikku-middleware/references/middleware-patterns.md +61 -0
- package/skills/pikku-realtime/SKILL.md +56 -105
- package/skills/pikku-realtime/references/other-routes.md +23 -0
- package/skills/pikku-services/SKILL.md +25 -108
- package/skills/pikku-services/references/audit-wire-service.md +34 -0
- package/skills/pikku-testing/SKILL.md +51 -359
- package/skills/pikku-testing/references/cucumber-bdd-testing.md +176 -0
- package/skills/pikku-workflow/SKILL.md +93 -259
- package/skills/pikku-workflow/references/workflow-reference.md +63 -0
|
@@ -26,7 +26,7 @@ export declare const FabricPublish: import("../../../.pikku/pikku-types.gen.js")
|
|
|
26
26
|
name: string;
|
|
27
27
|
version: string;
|
|
28
28
|
publisher: string | null;
|
|
29
|
-
}, "
|
|
29
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
30
30
|
dir?: string | undefined;
|
|
31
31
|
apiUrl?: string | undefined;
|
|
32
32
|
}, {
|
|
@@ -34,7 +34,7 @@ export declare const FabricPublish: import("../../../.pikku/pikku-types.gen.js")
|
|
|
34
34
|
name: string;
|
|
35
35
|
version: string;
|
|
36
36
|
publisher: string | null;
|
|
37
|
-
}, "
|
|
37
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
38
38
|
dir?: string | undefined;
|
|
39
39
|
apiUrl?: string | undefined;
|
|
40
40
|
}, {
|
|
@@ -42,4 +42,4 @@ export declare const FabricPublish: import("../../../.pikku/pikku-types.gen.js")
|
|
|
42
42
|
name: string;
|
|
43
43
|
version: string;
|
|
44
44
|
publisher: string | null;
|
|
45
|
-
}, "
|
|
45
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
@@ -29,7 +29,12 @@ export const FabricPublish = pikkuSessionlessFunc({
|
|
|
29
29
|
description: 'Publish a package directory to the Fabric community registry.',
|
|
30
30
|
input: FabricPublishInput,
|
|
31
31
|
output: FabricPublishOutput,
|
|
32
|
-
func: async (_services, { dir, apiUrl: apiUrlOverride }) => {
|
|
32
|
+
func: async (_services, { dir, apiUrl: apiUrlOverride }, { rpc, cli }) => {
|
|
33
|
+
const verification = await rpc.invoke('FabricAddonVerify', { dir });
|
|
34
|
+
await cli?.channel.send(verification);
|
|
35
|
+
if (!verification.ok) {
|
|
36
|
+
throw new Error('Addon verification failed — fix the errors above before publishing.');
|
|
37
|
+
}
|
|
33
38
|
const ctx = await resolveApiContext({ apiUrlOverride });
|
|
34
39
|
if (!ctx.token)
|
|
35
40
|
throw new Error('Not logged in. Run `pikku fabric login` first.');
|
|
@@ -64,14 +69,14 @@ export const FabricPublish = pikkuSessionlessFunc({
|
|
|
64
69
|
return r.json();
|
|
65
70
|
};
|
|
66
71
|
// 1. presigned upload URL (short-lived)
|
|
67
|
-
const { uploadUrl, artifactKey } = await post('/registry/
|
|
72
|
+
const { uploadUrl, artifactKey } = await post('/registry/addons/publish-url', { packageName: pkg.name, version: pkg.version });
|
|
68
73
|
// 2. PUT the artifact to the exact signed URL (no extra headers — the URL
|
|
69
74
|
// is signed over host only; mismatched headers break the signature).
|
|
70
75
|
const put = await fetch(uploadUrl, { method: 'PUT', body: artifact });
|
|
71
76
|
if (!put.ok)
|
|
72
77
|
throw new Error(`upload failed → ${put.status}: ${await put.text()}`);
|
|
73
78
|
// 3. finalize — server reads the artifact back, extracts meta, indexes it
|
|
74
|
-
const entry = await post('/registry/
|
|
79
|
+
const entry = await post('/registry/addons/publish', { artifactKey });
|
|
75
80
|
const publisher = entry.publisher?.name ?? null;
|
|
76
81
|
console.log(`[fabric] published ${entry.name}@${entry.version} (id=${entry.id})` +
|
|
77
82
|
(publisher ? ` as ${publisher}` : ''));
|
|
@@ -37,7 +37,7 @@ export declare const FabricRollback: import("../../../.pikku/pikku-types.gen.js"
|
|
|
37
37
|
}[];
|
|
38
38
|
deploymentId?: string | undefined;
|
|
39
39
|
rolledBackToDeploymentId?: string | undefined;
|
|
40
|
-
}, "
|
|
40
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
41
41
|
branch: string;
|
|
42
42
|
target?: string | undefined;
|
|
43
43
|
list?: boolean | undefined;
|
|
@@ -55,7 +55,7 @@ export declare const FabricRollback: import("../../../.pikku/pikku-types.gen.js"
|
|
|
55
55
|
}[];
|
|
56
56
|
deploymentId?: string | undefined;
|
|
57
57
|
rolledBackToDeploymentId?: string | undefined;
|
|
58
|
-
}, "
|
|
58
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
59
59
|
branch: string;
|
|
60
60
|
target?: string | undefined;
|
|
61
61
|
list?: boolean | undefined;
|
|
@@ -73,4 +73,4 @@ export declare const FabricRollback: import("../../../.pikku/pikku-types.gen.js"
|
|
|
73
73
|
}[];
|
|
74
74
|
deploymentId?: string | undefined;
|
|
75
75
|
rolledBackToDeploymentId?: string | undefined;
|
|
76
|
-
}, "
|
|
76
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
@@ -11,14 +11,14 @@ export declare const FabricSecretsList: import("../../../.pikku/pikku-types.gen.
|
|
|
11
11
|
json?: boolean | undefined;
|
|
12
12
|
}, {
|
|
13
13
|
names: string[];
|
|
14
|
-
}, "
|
|
14
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
15
15
|
branch: string;
|
|
16
16
|
json?: boolean | undefined;
|
|
17
17
|
}, {
|
|
18
18
|
names: string[];
|
|
19
|
-
}, "
|
|
19
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
20
20
|
branch: string;
|
|
21
21
|
json?: boolean | undefined;
|
|
22
22
|
}, {
|
|
23
23
|
names: string[];
|
|
24
|
-
}, "
|
|
24
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
@@ -15,18 +15,18 @@ export declare const FabricSecretsSet: import("../../../.pikku/pikku-types.gen.j
|
|
|
15
15
|
force?: boolean | undefined;
|
|
16
16
|
}, {
|
|
17
17
|
ok: boolean;
|
|
18
|
-
}, "
|
|
18
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
19
19
|
name: string;
|
|
20
20
|
branch: string;
|
|
21
21
|
value?: string | undefined;
|
|
22
22
|
force?: boolean | undefined;
|
|
23
23
|
}, {
|
|
24
24
|
ok: boolean;
|
|
25
|
-
}, "
|
|
25
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
26
26
|
name: string;
|
|
27
27
|
branch: string;
|
|
28
28
|
value?: string | undefined;
|
|
29
29
|
force?: boolean | undefined;
|
|
30
30
|
}, {
|
|
31
31
|
ok: boolean;
|
|
32
|
-
}, "
|
|
32
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
@@ -47,7 +47,7 @@ export declare const FabricSmoke: import("../../../.pikku/pikku-types.gen.js").P
|
|
|
47
47
|
}[];
|
|
48
48
|
failure?: string | undefined;
|
|
49
49
|
logTail?: string | undefined;
|
|
50
|
-
}, "
|
|
50
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
51
51
|
keepTemp?: boolean | undefined;
|
|
52
52
|
timeoutSeconds?: number | undefined;
|
|
53
53
|
startupTimeoutSeconds?: number | undefined;
|
|
@@ -68,7 +68,7 @@ export declare const FabricSmoke: import("../../../.pikku/pikku-types.gen.js").P
|
|
|
68
68
|
}[];
|
|
69
69
|
failure?: string | undefined;
|
|
70
70
|
logTail?: string | undefined;
|
|
71
|
-
}, "
|
|
71
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
72
72
|
keepTemp?: boolean | undefined;
|
|
73
73
|
timeoutSeconds?: number | undefined;
|
|
74
74
|
startupTimeoutSeconds?: number | undefined;
|
|
@@ -89,5 +89,5 @@ export declare const FabricSmoke: import("../../../.pikku/pikku-types.gen.js").P
|
|
|
89
89
|
}[];
|
|
90
90
|
failure?: string | undefined;
|
|
91
91
|
logTail?: string | undefined;
|
|
92
|
-
}, "
|
|
92
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
93
93
|
export declare const renderSmoke: (_services: unknown, output: z.infer<typeof FabricSmokeOutput>) => void;
|
|
@@ -7,13 +7,13 @@ export declare const FabricStatusOutput: z.ZodObject<{
|
|
|
7
7
|
export declare const FabricStatus: import("../../../.pikku/pikku-types.gen.js").PikkuFunctionConfig<Record<string, never>, {
|
|
8
8
|
projectId: string;
|
|
9
9
|
status: any;
|
|
10
|
-
}, "
|
|
10
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<Record<string, never>, {
|
|
11
11
|
projectId: string;
|
|
12
12
|
status: any;
|
|
13
|
-
}, "
|
|
13
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<Record<string, never>, {
|
|
14
14
|
projectId: string;
|
|
15
15
|
status: any;
|
|
16
|
-
}, "
|
|
16
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
17
17
|
type StageState = {
|
|
18
18
|
stageBranch: string;
|
|
19
19
|
gitSha?: string | null;
|
|
@@ -13,16 +13,16 @@ export declare const FabricTrace: import("../../../.pikku/pikku-types.gen.js").P
|
|
|
13
13
|
json?: boolean | undefined;
|
|
14
14
|
}, {
|
|
15
15
|
count: number;
|
|
16
|
-
}, "
|
|
16
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<{
|
|
17
17
|
branch: string;
|
|
18
18
|
traceId: string;
|
|
19
19
|
json?: boolean | undefined;
|
|
20
20
|
}, {
|
|
21
21
|
count: number;
|
|
22
|
-
}, "
|
|
22
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<{
|
|
23
23
|
branch: string;
|
|
24
24
|
traceId: string;
|
|
25
25
|
json?: boolean | undefined;
|
|
26
26
|
}, {
|
|
27
27
|
count: number;
|
|
28
|
-
}, "
|
|
28
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
@@ -26,7 +26,7 @@ export declare const FabricValidate: import("../../../.pikku/pikku-types.gen.js"
|
|
|
26
26
|
path: string;
|
|
27
27
|
fixHint: string;
|
|
28
28
|
}[];
|
|
29
|
-
}, "
|
|
29
|
+
}, "rpc" | "session", import("../../../.pikku/pikku-types.gen.js").PikkuFunctionSessionless<Record<string, never>, {
|
|
30
30
|
ok: boolean;
|
|
31
31
|
root: string;
|
|
32
32
|
findings: {
|
|
@@ -36,7 +36,7 @@ export declare const FabricValidate: import("../../../.pikku/pikku-types.gen.js"
|
|
|
36
36
|
path: string;
|
|
37
37
|
fixHint: string;
|
|
38
38
|
}[];
|
|
39
|
-
}, "
|
|
39
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services> | import("../../../.pikku/pikku-types.gen.js").PikkuFunction<Record<string, never>, {
|
|
40
40
|
ok: boolean;
|
|
41
41
|
root: string;
|
|
42
42
|
findings: {
|
|
@@ -46,5 +46,5 @@ export declare const FabricValidate: import("../../../.pikku/pikku-types.gen.js"
|
|
|
46
46
|
path: string;
|
|
47
47
|
fixHint: string;
|
|
48
48
|
}[];
|
|
49
|
-
}, "
|
|
49
|
+
}, "rpc" | "session", import("../../../types/application-types.js").Services>, undefined, undefined>;
|
|
50
50
|
export declare const renderValidate: (_s: unknown, { ok, root, findings }: z.infer<typeof FabricValidateOutput>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const all: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
1
|
+
export declare const all: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
import { pikkuVoidFunc } from '#pikku';
|
|
2
2
|
export const all = pikkuVoidFunc({
|
|
3
3
|
remote: true,
|
|
4
|
-
func: async ({ workflowService }, _data, { rpc }) => {
|
|
5
|
-
|
|
4
|
+
func: async ({ workflowService, logger }, _data, { rpc }) => {
|
|
5
|
+
// Drive the run directly (the CLI is always inline — no queueService) so we
|
|
6
|
+
// can read back the per-step durations already recorded on each step's
|
|
7
|
+
// state. startWorkflow runs the job to completion before returning in inline
|
|
8
|
+
// mode and re-throws on failure, matching runToCompletion's behaviour.
|
|
9
|
+
const { runId } = await workflowService.startWorkflow('allWorkflow', {}, { type: 'internal' }, rpc, { inline: true });
|
|
10
|
+
// Per-step timing breakdown for debugging slow runs (e.g. which inspector
|
|
11
|
+
// re-runs dominate). Opt-in via PIKKU_TIMING so normal runs stay quiet.
|
|
12
|
+
if (typeof process !== 'undefined' && process.env?.PIKKU_TIMING) {
|
|
13
|
+
const status = await workflowService.getRunStatus(runId);
|
|
14
|
+
const rows = (status?.steps ?? [])
|
|
15
|
+
.filter((s) => typeof s.duration === 'number')
|
|
16
|
+
.sort((a, b) => (b.duration ?? 0) - (a.duration ?? 0));
|
|
17
|
+
const total = rows.reduce((sum, s) => sum + (s.duration ?? 0), 0);
|
|
18
|
+
logger.info(`[TIMING] pikku all — ${rows.length} steps, ${total}ms total (slowest first):`);
|
|
19
|
+
for (const s of rows) {
|
|
20
|
+
logger.info(`[TIMING] ${String(s.duration).padStart(7)}ms ${s.name}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
6
23
|
},
|
|
7
24
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const binary: import("#pikku").PikkuFunctionConfig<{
|
|
2
2
|
compileTarget?: string;
|
|
3
|
-
}, void, "
|
|
3
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
4
4
|
compileTarget?: string;
|
|
5
|
-
}, void, "
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
|
|
6
6
|
compileTarget?: string;
|
|
7
|
-
}, void, "
|
|
7
|
+
}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const bootstrap: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
1
|
+
export declare const bootstrap: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -4,6 +4,9 @@ export const bootstrap = pikkuVoidFunc({
|
|
|
4
4
|
func: async ({ logger, getInspectorState }, _data, { rpc }) => {
|
|
5
5
|
await getInspectorState(false, true, true);
|
|
6
6
|
await rpc.invoke('pikkuFunctionTypesSplit', { bootstrap: true });
|
|
7
|
+
// Stub auth.types.ts (if better-auth is used) so the pikkuBetterAuth
|
|
8
|
+
// re-export resolves before any user file is imported.
|
|
9
|
+
await rpc.invoke('pikkuAuth', { bootstrap: true });
|
|
7
10
|
await rpc.invoke('pikkuFunctionTypes', { bootstrap: true });
|
|
8
11
|
await rpc.invoke('pikkuHTTPTypes');
|
|
9
12
|
await rpc.invoke('pikkuChannelTypes');
|
|
@@ -2,12 +2,12 @@ export declare const consoleCommand: import("#pikku").PikkuFunctionConfig<{
|
|
|
2
2
|
port?: string;
|
|
3
3
|
open?: string;
|
|
4
4
|
hmr?: boolean;
|
|
5
|
-
}, void, "
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
6
6
|
port?: string;
|
|
7
7
|
open?: string;
|
|
8
8
|
hmr?: boolean;
|
|
9
|
-
}, void, "
|
|
9
|
+
}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
|
|
10
10
|
port?: string;
|
|
11
11
|
open?: string;
|
|
12
12
|
hmr?: boolean;
|
|
13
|
-
}, void, "
|
|
13
|
+
}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const dbAudit: import("#pikku").PikkuFunctionConfig<{}, void, "
|
|
1
|
+
export declare const dbAudit: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const dbGenerate: import("#pikku").PikkuFunctionConfig<{}, void, "
|
|
1
|
+
export declare const dbGenerate: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const dbMigrate: import("#pikku").PikkuFunctionConfig<{}, void, "
|
|
1
|
+
export declare const dbMigrate: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const dbReset: import("#pikku").PikkuFunctionConfig<{}, void, "
|
|
1
|
+
export declare const dbReset: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const dbSeed: import("#pikku").PikkuFunctionConfig<{}, void, "
|
|
1
|
+
export declare const dbSeed: import("#pikku").PikkuFunctionConfig<{}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -15,16 +15,16 @@ export declare const deployApply: import("#pikku").PikkuFunctionConfig<{
|
|
|
15
15
|
runtime?: string;
|
|
16
16
|
resultFile?: string;
|
|
17
17
|
debugArtifacts?: boolean;
|
|
18
|
-
}, void, "
|
|
18
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
19
19
|
fromPlan?: boolean;
|
|
20
20
|
provider?: string;
|
|
21
21
|
runtime?: string;
|
|
22
22
|
resultFile?: string;
|
|
23
23
|
debugArtifacts?: boolean;
|
|
24
|
-
}, void, "
|
|
24
|
+
}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
|
|
25
25
|
fromPlan?: boolean;
|
|
26
26
|
provider?: string;
|
|
27
27
|
runtime?: string;
|
|
28
28
|
resultFile?: string;
|
|
29
29
|
debugArtifacts?: boolean;
|
|
30
|
-
}, void, "
|
|
30
|
+
}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { basename, join, relative } from 'node:path';
|
|
2
2
|
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
4
|
import { pikkuSessionlessFunc } from '#pikku';
|
|
4
5
|
import { runBuildPipeline } from '../../deploy/build-pipeline.js';
|
|
5
6
|
function toRelativeImport(fromDir, toFile) {
|
|
@@ -25,6 +26,32 @@ export function getEntryContext(unitDir, pikkuDir, unit, inspectorState) {
|
|
|
25
26
|
const servicesType = singletonServicesType
|
|
26
27
|
? `Partial<${singletonServicesType.type}>`
|
|
27
28
|
: 'Record<string, unknown>';
|
|
29
|
+
// MCP: when the unit's .pikku has a non-empty mcp.gen.json, import it and pass
|
|
30
|
+
// it to the generated server so PikkuNodeHTTPServer mounts /mcp. Without this
|
|
31
|
+
// the deployed bundle never serves MCP even though the dev server does.
|
|
32
|
+
let mcpImport = '';
|
|
33
|
+
let mcpServerOption = '';
|
|
34
|
+
const mcpJsonAbs = join(pikkuDir, 'mcp', 'mcp.gen.json');
|
|
35
|
+
if (existsSync(mcpJsonAbs)) {
|
|
36
|
+
let hasMcp = false;
|
|
37
|
+
try {
|
|
38
|
+
const parsed = JSON.parse(readFileSync(mcpJsonAbs, 'utf-8'));
|
|
39
|
+
hasMcp =
|
|
40
|
+
(parsed.tools?.length ?? 0) +
|
|
41
|
+
(parsed.resources?.length ?? 0) +
|
|
42
|
+
(parsed.prompts?.length ?? 0) >
|
|
43
|
+
0;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.warn(`[pikku] could not parse ${mcpJsonAbs} — skipping MCP mount: ${err instanceof Error ? err.message : String(err)}`);
|
|
47
|
+
}
|
|
48
|
+
if (hasMcp) {
|
|
49
|
+
const rel = relative(unitDir, mcpJsonAbs).replace(/\\/g, '/');
|
|
50
|
+
const relImport = rel.startsWith('.') ? rel : `./${rel}`;
|
|
51
|
+
mcpImport = `import mcpJson from '${relImport}' with { type: 'json' }`;
|
|
52
|
+
mcpServerOption = 'mcpJson, ';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
28
55
|
return {
|
|
29
56
|
unit,
|
|
30
57
|
unitDir,
|
|
@@ -35,6 +62,8 @@ export function getEntryContext(unitDir, pikkuDir, unit, inspectorState) {
|
|
|
35
62
|
servicesVar: singletonServicesFactory.variable,
|
|
36
63
|
singletonServicesImport,
|
|
37
64
|
servicesType,
|
|
65
|
+
mcpImport,
|
|
66
|
+
mcpServerOption,
|
|
38
67
|
};
|
|
39
68
|
}
|
|
40
69
|
function sanitizeProjectId(raw) {
|
|
@@ -147,7 +176,7 @@ async function runDeploy(provider, providerDir, logger, resultFile) {
|
|
|
147
176
|
}
|
|
148
177
|
}
|
|
149
178
|
export const deployApply = pikkuSessionlessFunc({
|
|
150
|
-
func: async ({ logger, config, getInspectorState }, data) => {
|
|
179
|
+
func: async ({ logger, config, getInspectorState, bundler }, data) => {
|
|
151
180
|
const projectDir = config.rootDir;
|
|
152
181
|
const provider = await resolveProvider(config, data?.provider, {
|
|
153
182
|
runtime: data?.runtime,
|
|
@@ -180,10 +209,12 @@ export const deployApply = pikkuSessionlessFunc({
|
|
|
180
209
|
provider,
|
|
181
210
|
inspectorState,
|
|
182
211
|
serverlessIncompatible: config.deploy?.serverlessIncompatible,
|
|
212
|
+
defaultTarget: config.deploy?.defaultTarget,
|
|
183
213
|
getEntryContext,
|
|
184
214
|
outDir: config.outDir,
|
|
185
215
|
debugArtifacts: data?.debugArtifacts ?? false,
|
|
186
216
|
logger,
|
|
217
|
+
bundler,
|
|
187
218
|
});
|
|
188
219
|
if (buildResult.manifest.units.length === 0) {
|
|
189
220
|
logger.info('No deployment units found. Nothing to deploy.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const deployInfo: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
1
|
+
export declare const deployInfo: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -3,14 +3,14 @@ export declare const deployPlan: import("#pikku").PikkuFunctionConfig<{
|
|
|
3
3
|
provider?: string;
|
|
4
4
|
runtime?: string;
|
|
5
5
|
debugArtifacts?: boolean;
|
|
6
|
-
}, void, "
|
|
6
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
7
7
|
resultFile?: string;
|
|
8
8
|
provider?: string;
|
|
9
9
|
runtime?: string;
|
|
10
10
|
debugArtifacts?: boolean;
|
|
11
|
-
}, void, "
|
|
11
|
+
}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
|
|
12
12
|
resultFile?: string;
|
|
13
13
|
provider?: string;
|
|
14
14
|
runtime?: string;
|
|
15
15
|
debugArtifacts?: boolean;
|
|
16
|
-
}, void, "
|
|
16
|
+
}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -43,7 +43,7 @@ function createEmptyProvider() {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
export const deployPlan = pikkuSessionlessFunc({
|
|
46
|
-
func: async ({ logger, config, getInspectorState }, data) => {
|
|
46
|
+
func: async ({ logger, config, getInspectorState, bundler }, data) => {
|
|
47
47
|
const projectDir = config.rootDir;
|
|
48
48
|
const inspectorState = await getInspectorState(true);
|
|
49
49
|
const projectId = await resolveProjectId(projectDir);
|
|
@@ -56,10 +56,12 @@ export const deployPlan = pikkuSessionlessFunc({
|
|
|
56
56
|
provider,
|
|
57
57
|
inspectorState,
|
|
58
58
|
serverlessIncompatible: config.deploy?.serverlessIncompatible,
|
|
59
|
+
defaultTarget: config.deploy?.defaultTarget,
|
|
59
60
|
getEntryContext,
|
|
60
61
|
outDir: config.outDir,
|
|
61
62
|
debugArtifacts: data?.debugArtifacts ?? false,
|
|
62
63
|
logger,
|
|
64
|
+
bundler,
|
|
63
65
|
});
|
|
64
66
|
if (result.manifest.units.length === 0) {
|
|
65
67
|
logger.info('No deployment units found.');
|
|
@@ -2,12 +2,12 @@ export declare const dev: import("#pikku").PikkuFunctionConfig<{
|
|
|
2
2
|
port?: string;
|
|
3
3
|
watch?: boolean;
|
|
4
4
|
hmr?: boolean;
|
|
5
|
-
}, void, "
|
|
5
|
+
}, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<{
|
|
6
6
|
port?: string;
|
|
7
7
|
watch?: boolean;
|
|
8
8
|
hmr?: boolean;
|
|
9
|
-
}, void, "
|
|
9
|
+
}, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<{
|
|
10
10
|
port?: string;
|
|
11
11
|
watch?: boolean;
|
|
12
12
|
hmr?: boolean;
|
|
13
|
-
}, void, "
|
|
13
|
+
}, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
@@ -7,20 +7,22 @@ import { KyselyAIStorageService, KyselyAIRunStateService, KyselyAgentRunService,
|
|
|
7
7
|
import { stopSingletonServices } from '@pikku/core';
|
|
8
8
|
import { pikkuState } from '@pikku/core/internal';
|
|
9
9
|
import { LocalMetaService } from '@pikku/core/services/local-meta';
|
|
10
|
-
import { LocalEventHubService } from '@pikku/core/channel/local';
|
|
11
10
|
import { LocalContent, } from '@pikku/core/services/local-content';
|
|
12
|
-
import { pikkuWebsocketHandler } from '@pikku/ws';
|
|
13
|
-
import { PikkuNodeHTTPServer } from '@pikku/node-http-server';
|
|
14
|
-
import { WebSocketServer } from 'ws';
|
|
15
11
|
import { InMemorySchedulerService } from '@pikku/schedule';
|
|
16
12
|
import { resolveDb, createKysely, parseDatabaseUrl, } from '../db/local-db.js';
|
|
17
13
|
import { loadUserBootstrap, loadUserModule } from './load-user-project.js';
|
|
18
14
|
import { createDevAIAgentRunner } from './dev-ai-runner.js';
|
|
19
15
|
export const dev = pikkuSessionlessFunc({
|
|
20
16
|
remote: true,
|
|
21
|
-
func: async ({ logger, config, getInspectorState, variables }, { port, watch, hmr }, { rpc }) => {
|
|
17
|
+
func: async ({ logger, config, getInspectorState, variables, devServerRunner }, { port, watch, hmr }, { rpc }) => {
|
|
22
18
|
const resolvedPort = parseInt(port || '3000', 10);
|
|
23
19
|
const hostname = 'localhost';
|
|
20
|
+
// Bind on IPv4 loopback explicitly. Under Bun, hostname 'localhost' resolves
|
|
21
|
+
// to IPv6 [::1] only, so a 127.0.0.1 proxy (e.g. the sandbox Caddy) can't
|
|
22
|
+
// reach it. '127.0.0.1' binds IPv4 on both Node and Bun (Node otherwise
|
|
23
|
+
// relies on --dns-result-order=ipv4first for the same effect). `hostname`
|
|
24
|
+
// stays 'localhost' for the user-facing content URL below.
|
|
25
|
+
const bindHostname = '127.0.0.1';
|
|
24
26
|
const enableWatch = watch !== false;
|
|
25
27
|
const enableHmr = hmr !== false;
|
|
26
28
|
const watchDirectories = [
|
|
@@ -168,20 +170,10 @@ export const dev = pikkuSessionlessFunc({
|
|
|
168
170
|
variables,
|
|
169
171
|
})
|
|
170
172
|
: undefined;
|
|
171
|
-
//
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
|
|
175
|
-
// shared with the singleton services so function-side broadcasts reach the
|
|
176
|
-
// sockets the transport holds.
|
|
177
|
-
const isBun = typeof globalThis.Bun !== 'undefined';
|
|
178
|
-
const bun = isBun
|
|
179
|
-
? await (async () => {
|
|
180
|
-
const mod = await import('@pikku/bun-server');
|
|
181
|
-
return { mod, eventHub: new mod.BunEventHubService() };
|
|
182
|
-
})()
|
|
183
|
-
: null;
|
|
184
|
-
const eventHub = bun ? bun.eventHub : new LocalEventHubService();
|
|
173
|
+
// The dev server runner (node http+ws, or bun-server) is resolved by DI in
|
|
174
|
+
// services.ts. Its EventHub is shared into the singleton services so
|
|
175
|
+
// function-side broadcasts reach the sockets the transport holds.
|
|
176
|
+
const eventHub = await devServerRunner.createEventHub();
|
|
185
177
|
const inMemoryServices = {
|
|
186
178
|
logger: devLogger,
|
|
187
179
|
...(aiAgentRunner ? { aiAgentRunner } : {}),
|
|
@@ -207,29 +199,12 @@ export const dev = pikkuSessionlessFunc({
|
|
|
207
199
|
...singletonServices,
|
|
208
200
|
getInspectorState,
|
|
209
201
|
});
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
port: resolvedPort,
|
|
217
|
-
content: localContentConfig,
|
|
218
|
-
}, logger, { eventHub: bun.eventHub });
|
|
219
|
-
}
|
|
220
|
-
else {
|
|
221
|
-
wss = new WebSocketServer({ noServer: true });
|
|
222
|
-
pikkuServer = new PikkuNodeHTTPServer({
|
|
223
|
-
...userConfig,
|
|
224
|
-
hostname,
|
|
225
|
-
port: resolvedPort,
|
|
226
|
-
content: localContentConfig,
|
|
227
|
-
}, logger, {
|
|
228
|
-
configureServer: (httpServer) => {
|
|
229
|
-
pikkuWebsocketHandler({ server: httpServer, wss: wss, logger });
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
}
|
|
202
|
+
const pikkuServer = devServerRunner.createServer({
|
|
203
|
+
...userConfig,
|
|
204
|
+
hostname: bindHostname,
|
|
205
|
+
port: resolvedPort,
|
|
206
|
+
content: localContentConfig,
|
|
207
|
+
}, logger);
|
|
233
208
|
await pikkuServer.init();
|
|
234
209
|
await schedulerService.start();
|
|
235
210
|
await pikkuServer.start();
|
|
@@ -241,9 +216,6 @@ export const dev = pikkuSessionlessFunc({
|
|
|
241
216
|
await stopSingletonServices();
|
|
242
217
|
await configWatcher?.close();
|
|
243
218
|
await watcher?.close();
|
|
244
|
-
if (wss) {
|
|
245
|
-
await new Promise((resolve, reject) => wss.close((err) => (err ? reject(err) : resolve())));
|
|
246
|
-
}
|
|
247
219
|
await pikkuServer.stop();
|
|
248
220
|
}
|
|
249
221
|
finally {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
type EmailsInitInput = {
|
|
2
2
|
force?: boolean;
|
|
3
3
|
};
|
|
4
|
-
export declare const pikkuEmailsInit: import("#pikku").PikkuFunctionConfig<EmailsInitInput, void, "
|
|
4
|
+
export declare const pikkuEmailsInit: import("#pikku").PikkuFunctionConfig<EmailsInitInput, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<EmailsInitInput, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<EmailsInitInput, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
5
5
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export declare const enableRpc: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
2
|
-
export declare const enableConsole: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
3
|
-
export declare const enableAgent: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
4
|
-
export declare const enableWorkflow: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
5
|
-
export declare const enableEvents: import("#pikku").PikkuFunctionConfig<void, void, "
|
|
1
|
+
export declare const enableRpc: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
2
|
+
export declare const enableConsole: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
3
|
+
export declare const enableAgent: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
4
|
+
export declare const enableWorkflow: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
5
|
+
export declare const enableEvents: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|
|
6
|
+
export declare const enableRemoteRpc: import("#pikku").PikkuFunctionConfig<void, void, "rpc" | "session", import("#pikku").PikkuFunctionSessionless<void, void, "rpc" | "session", import("#pikku").Services> | import("#pikku").PikkuFunction<void, void, "rpc" | "session", import("#pikku").Services>, undefined, undefined>;
|