@plumbus/core 0.4.2 → 0.6.0
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/README.md +2 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/ai/ai/cost-tracker.d.ts +93 -0
- package/dist/ai/ai/derive-ledger-usage.d.ts +10 -0
- package/dist/ai/ai/model-pricing.d.ts +51 -0
- package/dist/ai/ai/provider.d.ts +214 -0
- package/dist/ai/ai/refusal.d.ts +27 -0
- package/dist/ai/ai/usage-client.d.ts +30 -0
- package/dist/ai/ai-service.d.ts +1 -1
- package/dist/ai/ai-service.d.ts.map +1 -1
- package/dist/ai/ai-service.js +21 -16
- package/dist/ai/ai-service.js.map +1 -1
- package/dist/ai/cost-tracker.d.ts +17 -1
- package/dist/ai/cost-tracker.d.ts.map +1 -1
- package/dist/ai/cost-tracker.js +8 -6
- package/dist/ai/cost-tracker.js.map +1 -1
- package/dist/ai/derive-ledger-usage.d.ts +11 -0
- package/dist/ai/derive-ledger-usage.d.ts.map +1 -0
- package/dist/ai/derive-ledger-usage.js +36 -0
- package/dist/ai/derive-ledger-usage.js.map +1 -0
- package/dist/ai/index.d.ts +1 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/types/config.d.ts +72 -0
- package/dist/ai/types/enums.d.ts +73 -0
- package/dist/api/route-generator.d.ts.map +1 -1
- package/dist/api/route-generator.js +27 -14
- package/dist/api/route-generator.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +3 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +38 -149
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +92 -4
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/event.d.ts.map +1 -1
- package/dist/cli/commands/event.js +3 -0
- package/dist/cli/commands/event.js.map +1 -1
- package/dist/cli/commands/events-ops.d.ts +4 -0
- package/dist/cli/commands/events-ops.d.ts.map +1 -0
- package/dist/cli/commands/events-ops.js +203 -0
- package/dist/cli/commands/events-ops.js.map +1 -0
- package/dist/cli/commands/flow-schedule-list.d.ts +31 -0
- package/dist/cli/commands/flow-schedule-list.d.ts.map +1 -0
- package/dist/cli/commands/flow-schedule-list.js +93 -0
- package/dist/cli/commands/flow-schedule-list.js.map +1 -0
- package/dist/cli/commands/flow.d.ts.map +1 -1
- package/dist/cli/commands/flow.js +75 -1
- package/dist/cli/commands/flow.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +4 -0
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +94 -3
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +55 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +2 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/start.d.ts +3 -6
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +71 -180
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/verify.d.ts +3 -1
- package/dist/cli/commands/verify.d.ts.map +1 -1
- package/dist/cli/commands/verify.js +17 -9
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/commands/voice.d.ts +12 -0
- package/dist/cli/commands/voice.d.ts.map +1 -0
- package/dist/cli/commands/voice.js +109 -0
- package/dist/cli/commands/voice.js.map +1 -0
- package/dist/cli/commands/worker.d.ts +19 -0
- package/dist/cli/commands/worker.d.ts.map +1 -0
- package/dist/cli/commands/worker.js +234 -0
- package/dist/cli/commands/worker.js.map +1 -0
- package/dist/cli/mcp-serve-context.d.ts +3 -0
- package/dist/cli/mcp-serve-context.d.ts.map +1 -1
- package/dist/cli/mcp-serve-context.js +133 -111
- package/dist/cli/mcp-serve-context.js.map +1 -1
- package/dist/cli/templates/resources.d.ts.map +1 -1
- package/dist/cli/templates/resources.js +7 -2
- package/dist/cli/templates/resources.js.map +1 -1
- package/dist/cli/utils.d.ts +4 -0
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +9 -0
- package/dist/cli/utils.js.map +1 -1
- package/dist/cli/voice-agent-bootstrap.d.ts +22 -0
- package/dist/cli/voice-agent-bootstrap.d.ts.map +1 -0
- package/dist/cli/voice-agent-bootstrap.js +12 -0
- package/dist/cli/voice-agent-bootstrap.js.map +1 -0
- package/dist/cli/voice-serve-context.d.ts +7 -0
- package/dist/cli/voice-serve-context.d.ts.map +1 -0
- package/dist/cli/voice-serve-context.js +26 -0
- package/dist/cli/voice-serve-context.js.map +1 -0
- package/dist/data/drift-inspector.d.ts +2 -2
- package/dist/data/drift-inspector.d.ts.map +1 -1
- package/dist/data/drift-inspector.js +2 -1
- package/dist/data/drift-inspector.js.map +1 -1
- package/dist/data/migration.d.ts.map +1 -1
- package/dist/data/migration.js +2 -0
- package/dist/data/migration.js.map +1 -1
- package/dist/define/defineCapability.d.ts +5 -0
- package/dist/define/defineCapability.d.ts.map +1 -1
- package/dist/define/defineCapability.js +23 -0
- package/dist/define/defineCapability.js.map +1 -1
- package/dist/errors/http.d.ts.map +1 -1
- package/dist/errors/http.js +1 -0
- package/dist/errors/http.js.map +1 -1
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/events/dispatcher.d.ts +4 -0
- package/dist/events/dispatcher.d.ts.map +1 -1
- package/dist/events/dispatcher.js +24 -1
- package/dist/events/dispatcher.js.map +1 -1
- package/dist/events/emitter.d.ts +2 -0
- package/dist/events/emitter.d.ts.map +1 -1
- package/dist/events/emitter.js +6 -3
- package/dist/events/emitter.js.map +1 -1
- package/dist/events/queue-adapter.d.ts +7 -0
- package/dist/events/queue-adapter.d.ts.map +1 -0
- package/dist/events/queue-adapter.js +4 -0
- package/dist/events/queue-adapter.js.map +1 -0
- package/dist/events/queue.d.ts +16 -13
- package/dist/events/queue.d.ts.map +1 -1
- package/dist/events/queue.js +79 -22
- package/dist/events/queue.js.map +1 -1
- package/dist/events/worker.d.ts +4 -0
- package/dist/events/worker.d.ts.map +1 -1
- package/dist/events/worker.js +47 -1
- package/dist/events/worker.js.map +1 -1
- package/dist/execution/canonical-name.d.ts +13 -0
- package/dist/execution/canonical-name.d.ts.map +1 -0
- package/dist/execution/canonical-name.js +17 -0
- package/dist/execution/canonical-name.js.map +1 -0
- package/dist/execution/capability-executor.d.ts +1 -1
- package/dist/execution/capability-executor.d.ts.map +1 -1
- package/dist/execution/capability-executor.js +52 -24
- package/dist/execution/capability-executor.js.map +1 -1
- package/dist/execution/capability-invocation.d.ts +34 -0
- package/dist/execution/capability-invocation.d.ts.map +1 -0
- package/dist/execution/capability-invocation.js +138 -0
- package/dist/execution/capability-invocation.js.map +1 -0
- package/dist/execution/capability-registry.d.ts +6 -4
- package/dist/execution/capability-registry.d.ts.map +1 -1
- package/dist/execution/capability-registry.js +13 -7
- package/dist/execution/capability-registry.js.map +1 -1
- package/dist/execution/context-factory.d.ts.map +1 -1
- package/dist/execution/context-factory.js +18 -1
- package/dist/execution/context-factory.js.map +1 -1
- package/dist/execution/index.d.ts +4 -0
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js +2 -0
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/invocation-emit-scope.d.ts +11 -0
- package/dist/execution/invocation-emit-scope.d.ts.map +1 -0
- package/dist/execution/invocation-emit-scope.js +8 -0
- package/dist/execution/invocation-emit-scope.js.map +1 -0
- package/dist/flows/engine.d.ts +7 -1
- package/dist/flows/engine.d.ts.map +1 -1
- package/dist/flows/engine.js +75 -10
- package/dist/flows/engine.js.map +1 -1
- package/dist/flows/flow-delayed.d.ts +34 -0
- package/dist/flows/flow-delayed.d.ts.map +1 -0
- package/dist/flows/flow-delayed.js +60 -0
- package/dist/flows/flow-delayed.js.map +1 -0
- package/dist/flows/flow-queue.d.ts +10 -0
- package/dist/flows/flow-queue.d.ts.map +1 -0
- package/dist/flows/flow-queue.js +25 -0
- package/dist/flows/flow-queue.js.map +1 -0
- package/dist/flows/scheduler.d.ts +0 -12
- package/dist/flows/scheduler.d.ts.map +1 -1
- package/dist/flows/scheduler.js +15 -0
- package/dist/flows/scheduler.js.map +1 -1
- package/dist/flows/schema.d.ts +17 -0
- package/dist/flows/schema.d.ts.map +1 -1
- package/dist/flows/schema.js +2 -0
- package/dist/flows/schema.js.map +1 -1
- package/dist/flows/step-consumer.d.ts +24 -0
- package/dist/flows/step-consumer.d.ts.map +1 -0
- package/dist/flows/step-consumer.js +72 -0
- package/dist/flows/step-consumer.js.map +1 -0
- package/dist/flows/triggers.d.ts +1 -1
- package/dist/flows/triggers.d.ts.map +1 -1
- package/dist/flows/triggers.js +5 -7
- package/dist/flows/triggers.js.map +1 -1
- package/dist/governance/capability-source-scan.d.ts +7 -0
- package/dist/governance/capability-source-scan.d.ts.map +1 -0
- package/dist/governance/capability-source-scan.js +80 -0
- package/dist/governance/capability-source-scan.js.map +1 -0
- package/dist/governance/rules/architecture.d.ts.map +1 -1
- package/dist/governance/rules/architecture.js +2 -0
- package/dist/governance/rules/architecture.js.map +1 -1
- package/dist/governance/rules/capability-dependencies.d.ts +8 -0
- package/dist/governance/rules/capability-dependencies.d.ts.map +1 -0
- package/dist/governance/rules/capability-dependencies.js +195 -0
- package/dist/governance/rules/capability-dependencies.js.map +1 -0
- package/dist/governance/rules/index.d.ts +2 -0
- package/dist/governance/rules/index.d.ts.map +1 -1
- package/dist/governance/rules/index.js +2 -0
- package/dist/governance/rules/index.js.map +1 -1
- package/dist/governance/rules/worker.d.ts +9 -0
- package/dist/governance/rules/worker.d.ts.map +1 -0
- package/dist/governance/rules/worker.js +89 -0
- package/dist/governance/rules/worker.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/jobs/dispatch.d.ts +18 -0
- package/dist/jobs/dispatch.d.ts.map +1 -0
- package/dist/jobs/dispatch.js +50 -0
- package/dist/jobs/dispatch.js.map +1 -0
- package/dist/jobs/index.d.ts +9 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +8 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/routes.d.ts +10 -0
- package/dist/jobs/routes.d.ts.map +1 -0
- package/dist/jobs/routes.js +44 -0
- package/dist/jobs/routes.js.map +1 -0
- package/dist/jobs/schema.d.ts +264 -0
- package/dist/jobs/schema.d.ts.map +1 -0
- package/dist/jobs/schema.js +34 -0
- package/dist/jobs/schema.js.map +1 -0
- package/dist/jobs/service.d.ts +52 -0
- package/dist/jobs/service.d.ts.map +1 -0
- package/dist/jobs/service.js +168 -0
- package/dist/jobs/service.js.map +1 -0
- package/dist/jobs/types.d.ts +30 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +4 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/mcp/manifest-generator.d.ts.map +1 -1
- package/dist/mcp/manifest-generator.js +3 -2
- package/dist/mcp/manifest-generator.js.map +1 -1
- package/dist/observability/metrics.d.ts +9 -1
- package/dist/observability/metrics.d.ts.map +1 -1
- package/dist/observability/metrics.js +28 -1
- package/dist/observability/metrics.js.map +1 -1
- package/dist/runtime/bootstrap.d.ts +51 -0
- package/dist/runtime/bootstrap.d.ts.map +1 -0
- package/dist/runtime/bootstrap.js +140 -0
- package/dist/runtime/bootstrap.js.map +1 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/load-extensions.d.ts +4 -0
- package/dist/runtime/load-extensions.d.ts.map +1 -0
- package/dist/runtime/load-extensions.js +41 -0
- package/dist/runtime/load-extensions.js.map +1 -0
- package/dist/runtime/queue-factory.d.ts +44 -0
- package/dist/runtime/queue-factory.d.ts.map +1 -0
- package/dist/runtime/queue-factory.js +156 -0
- package/dist/runtime/queue-factory.js.map +1 -0
- package/dist/runtime/register-consumers.d.ts +29 -0
- package/dist/runtime/register-consumers.d.ts.map +1 -0
- package/dist/runtime/register-consumers.js +233 -0
- package/dist/runtime/register-consumers.js.map +1 -0
- package/dist/runtime/start-worker-pool.d.ts +32 -0
- package/dist/runtime/start-worker-pool.d.ts.map +1 -0
- package/dist/runtime/start-worker-pool.js +91 -0
- package/dist/runtime/start-worker-pool.js.map +1 -0
- package/dist/runtime/worker-health.d.ts +19 -0
- package/dist/runtime/worker-health.d.ts.map +1 -0
- package/dist/runtime/worker-health.js +41 -0
- package/dist/runtime/worker-health.js.map +1 -0
- package/dist/server/bootstrap.d.ts +6 -0
- package/dist/server/bootstrap.d.ts.map +1 -1
- package/dist/server/bootstrap.js +24 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/testing/context.d.ts +3 -0
- package/dist/testing/context.d.ts.map +1 -1
- package/dist/testing/context.js +12 -0
- package/dist/testing/context.js.map +1 -1
- package/dist/testing/e2e.d.ts +6 -0
- package/dist/testing/e2e.d.ts.map +1 -1
- package/dist/testing/e2e.js +2 -0
- package/dist/testing/e2e.js.map +1 -1
- package/dist/testing/simulate-flow.d.ts.map +1 -1
- package/dist/testing/simulate-flow.js +10 -0
- package/dist/testing/simulate-flow.js.map +1 -1
- package/dist/types/capability.d.ts +8 -0
- package/dist/types/capability.d.ts.map +1 -1
- package/dist/types/capability.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/context.d.ts +49 -1
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/enums.d.ts +1 -0
- package/dist/types/enums.d.ts.map +1 -1
- package/dist/types/enums.js +1 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/errors.d.ts +1 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/event.d.ts +10 -0
- package/dist/types/event.d.ts.map +1 -1
- package/dist/types/event.js +5 -1
- package/dist/types/event.js.map +1 -1
- package/dist/worker/bootstrap.d.ts +32 -1
- package/dist/worker/bootstrap.d.ts.map +1 -1
- package/dist/worker/bootstrap.js +166 -2
- package/dist/worker/bootstrap.js.map +1 -1
- package/instructions/capabilities.md +36 -1
- package/instructions/deployment.md +96 -11
- package/instructions/events.md +11 -0
- package/instructions/flows.md +12 -4
- package/instructions/governance.md +6 -0
- package/instructions/mcp.md +1 -1
- package/instructions/patterns.md +1 -0
- package/instructions/security.md +9 -0
- package/instructions/testing.md +12 -1
- package/instructions/upgrading-0.5-capabilities.md +181 -0
- package/package.json +16 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/worker/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ export const getUser = defineCapability({
|
|
|
23
23
|
data: ["User"],
|
|
24
24
|
events: [],
|
|
25
25
|
external: [],
|
|
26
|
+
capabilities: [], // canonical invoke targets: ["billing.getInvoice"]
|
|
26
27
|
ai: false,
|
|
27
28
|
},
|
|
28
29
|
|
|
@@ -106,11 +107,35 @@ Every capability must declare its side effects in the `effects` field:
|
|
|
106
107
|
- `data` — entity names this capability reads from or writes to
|
|
107
108
|
- `events` — event types this capability may emit
|
|
108
109
|
- `external` — external integrations this capability calls (APIs, services)
|
|
110
|
+
- `capabilities` — canonical names (`<domain>.<name>`) this handler may invoke via `ctx.capabilities.invoke`
|
|
109
111
|
- `flows` — flow names this capability may start (optional)
|
|
110
112
|
- `ai` — whether this capability uses AI operations
|
|
111
113
|
|
|
112
114
|
Effects are used by governance rules to analyze the system.
|
|
113
115
|
|
|
116
|
+
## Capability-to-capability invocation
|
|
117
|
+
|
|
118
|
+
The only sanctioned path for synchronous composition is `ctx.capabilities.invoke`:
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
handler: async (ctx, input) => {
|
|
122
|
+
const invoice = await ctx.capabilities.invoke("billing.getInvoice", {
|
|
123
|
+
invoiceId: input.invoiceId,
|
|
124
|
+
});
|
|
125
|
+
return { invoice };
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Rules:
|
|
130
|
+
|
|
131
|
+
- Declare every invoke target in `effects.capabilities` using **canonical names** (`billing.getInvoice`, not `getInvoice`).
|
|
132
|
+
- Undeclared calls, cycles, missing targets, and synchronous job invokes fail at runtime with `dependencyViolation`.
|
|
133
|
+
- Do **not** import other capability handlers or call `.handler` directly — `plumbus verify` flags direct handler imports.
|
|
134
|
+
- Handler-visible `ctx.__runtime` does not expose internal invokers; use `ctx.capabilities.invoke` only.
|
|
135
|
+
- Prefer flows for multi-step orchestration; use invoke when you need a callee's result in the same execution path.
|
|
136
|
+
|
|
137
|
+
The local `name` field in `defineCapability` stays short (`getInvoice`); the framework derives the canonical registry key from `domain` + `name`. Run `plumbus generate` after changes so `RegisteredCapabilityName` and manifests stay in sync.
|
|
138
|
+
|
|
114
139
|
## Explanation Tracking
|
|
115
140
|
|
|
116
141
|
Capabilities that use AI (`effects.ai: true`) should enable explanation tracking:
|
|
@@ -208,4 +233,14 @@ export const generateReport = defineCapability({
|
|
|
208
233
|
});
|
|
209
234
|
```
|
|
210
235
|
|
|
211
|
-
Job capabilities are exposed as `POST` endpoints
|
|
236
|
+
Job capabilities are exposed as `POST` endpoints. From **0.5.0**, when the API wires `jobQueue` (any job capability on `plumbus dev` / `plumbus start` — including in-memory queues), routes return **`202 Accepted`** with `{ data: { jobId, status: "accepted" } }` and enqueue via the jobs queue. This is **not** gated on whether a worker pool runs in the same process; `PLUMBUS_RUNTIME_ROLE=api` still returns **202** but needs a separate `plumbus worker` to execute jobs.
|
|
237
|
+
|
|
238
|
+
Poll completion with:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
GET /api/jobs/:jobId
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Response: `{ data: { jobId, status, output, error, … } }`. Status values include `queued`, `running`, `completed`, `failed`, and `dead_lettered` from `job_executions`. Run `plumbus migrate generate && plumbus migrate apply` **before** job traffic — routes fail at the DB layer if the table is missing.
|
|
245
|
+
|
|
246
|
+
**Pre-0.5.0 note:** job routes often returned **200** with the handler output synchronously because the server did not wire a job queue. Update HTTP clients that assumed synchronous job responses. See `deployment.md` (Upgrading to 0.5) for the full checklist.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Deployment
|
|
2
2
|
|
|
3
|
-
Plumbus applications deploy as up to
|
|
3
|
+
Plumbus applications deploy as up to four services — a **backend** (Fastify API server), an optional **worker** (background queues), a **frontend** (Next.js), and optionally an **admin dashboard** (Next.js) — backed by PostgreSQL and Redis.
|
|
4
4
|
|
|
5
5
|
## Service Topology
|
|
6
6
|
|
|
@@ -11,16 +11,18 @@ Plumbus applications deploy as up to three services — a **backend** (Fastify A
|
|
|
11
11
|
| :3001 |---->| :3002 |---->| :3000 |
|
|
12
12
|
+-----------+ +-----------+ +-----+-----+
|
|
13
13
|
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
+---------------------------+---------------------------+
|
|
15
|
+
| | |
|
|
16
|
+
+-----v-----+ +-----v-----+ +-----v-----+
|
|
17
|
+
| worker | | PG | | Redis |
|
|
18
|
+
| (optional)| | :5432 | | :6379 |
|
|
19
|
+
| :3001 | +-----------+ +-----------+
|
|
20
|
+
+-----------+
|
|
20
21
|
```
|
|
21
22
|
|
|
22
23
|
- **Frontend** and **admin** proxy API calls to the backend server-side. Browsers never connect directly to the backend.
|
|
23
|
-
- **Backend** connects to PostgreSQL (data) and Redis (
|
|
24
|
+
- **Backend** connects to PostgreSQL (data) and Redis (shared event/flow/job queues).
|
|
25
|
+
- **Worker** (optional) runs `plumbus worker` for background processing. Omit when using colocated mode (`plumbus start` with default `PLUMBUS_RUNTIME_ROLE=all`). Required for horizontal scaling with `PLUMBUS_RUNTIME_ROLE=api`.
|
|
24
26
|
|
|
25
27
|
---
|
|
26
28
|
|
|
@@ -181,6 +183,74 @@ npx plumbus migrate apply
|
|
|
181
183
|
|
|
182
184
|
Use `/ready` for container health checks and load balancer probes.
|
|
183
185
|
|
|
186
|
+
### Split API + Worker Deployment
|
|
187
|
+
|
|
188
|
+
For production deployments that scale API and background work independently:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# API container — no worker pool
|
|
192
|
+
PLUMBUS_RUNTIME_ROLE=api npx plumbus start --port 3000
|
|
193
|
+
|
|
194
|
+
# Worker container — no public API routes
|
|
195
|
+
npx plumbus worker start --health-port 3001
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Redis is required** when API and worker run as separate replicas. Set `QUEUE_URL` or `REDIS_URL` on both containers.
|
|
199
|
+
|
|
200
|
+
### Upgrading to 0.5 (workers, queues, and capability invocation)
|
|
201
|
+
|
|
202
|
+
When upgrading `@plumbus/core` to **0.5.x** from 0.4.x:
|
|
203
|
+
|
|
204
|
+
**Capability invocation (canonical names, invoke policy, flow auth):** read `node_modules/@plumbus/core/instructions/upgrading-0.5-capabilities.md` for the agent-facing migration playbook. Summary:
|
|
205
|
+
|
|
206
|
+
1. **Canonical names** — update flow `step.capability`, `effects.capabilities`, `ctx.capabilities.invoke`, tests, and MCP references to `<domain>.<name>`.
|
|
207
|
+
2. **Invoke policy** — declare `effects.capabilities`; replace direct handler imports with `ctx.capabilities.invoke`.
|
|
208
|
+
3. **Flow auth snapshot** — user-triggered flow steps run under the caller's stored roles (no auto-`system`); fix `access.roles` on step targets.
|
|
209
|
+
4. **Regenerate and verify** — `plumbus generate` then `plumbus verify`.
|
|
210
|
+
|
|
211
|
+
**Workers and queues:**
|
|
212
|
+
|
|
213
|
+
1. **Migrate** — `plumbus migrate generate && plumbus migrate apply` (adds `job_executions` and `auth_snapshot_json` on `flow_executions`). Apply **before** job routes and new flow executions receive traffic.
|
|
214
|
+
2. **HTTP job clients** — `kind: 'job'` `POST` routes return **202** with `{ data: { jobId, status: "accepted" } }` when job capabilities exist; poll `GET /api/jobs/:jobId`. Pre-0.5.0 often returned **200** synchronously.
|
|
215
|
+
3. **Optional peers** — `pnpm add redis` for multi-replica production; `pnpm add cron-parser` if flows use schedule triggers.
|
|
216
|
+
4. **Split deploy** — `PLUMBUS_RUNTIME_ROLE=api` on API containers plus `plumbus worker start` on worker containers; API-only without a worker enqueues but never executes.
|
|
217
|
+
5. **`eventHandler`** — add `trigger: { event: "…" }` for auto-registration, or keep manual `ConsumerRegistry` wiring.
|
|
218
|
+
|
|
219
|
+
Full monorepo checklists: `docs/upgrading-workers.md` and `docs/upgrading-capability-names.md` (framework repo; not in the npm package).
|
|
220
|
+
|
|
221
|
+
| Container | Command | Probes | Notes |
|
|
222
|
+
|-----------|---------|--------|-------|
|
|
223
|
+
| API | `plumbus start` | `GET /health`, `GET /ready` on port 3000 | Set `PLUMBUS_RUNTIME_ROLE=api` |
|
|
224
|
+
| Worker | `plumbus worker start` | `GET /health`, `GET /ready` on `--health-port` (default 3001) | Exposes `/metrics` for Prometheus |
|
|
225
|
+
|
|
226
|
+
Install optional peers in both images when needed:
|
|
227
|
+
|
|
228
|
+
```dockerfile
|
|
229
|
+
RUN npm install redis cron-parser
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
- `redis` — durable shared queues (required for split/multi-replica)
|
|
233
|
+
- `cron-parser` — only if flows use `schedule` triggers
|
|
234
|
+
|
|
235
|
+
Worker entrypoint example:
|
|
236
|
+
|
|
237
|
+
```sh
|
|
238
|
+
#!/bin/sh
|
|
239
|
+
set -e
|
|
240
|
+
exec npx plumbus worker start --health-port 3001
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
Worker health probes (Kubernetes):
|
|
244
|
+
|
|
245
|
+
```yaml
|
|
246
|
+
livenessProbe:
|
|
247
|
+
httpGet: { path: /health, port: 3001 }
|
|
248
|
+
readinessProbe:
|
|
249
|
+
httpGet: { path: /ready, port: 3001 }
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Colocated mode (single `plumbus start` process, no separate worker container) remains the default and requires no `PLUMBUS_RUNTIME_ROLE` override. See `docs/architecture/workers-and-queues.md` for runtime mode details.
|
|
253
|
+
|
|
184
254
|
---
|
|
185
255
|
|
|
186
256
|
## Frontend Deployment
|
|
@@ -243,6 +313,10 @@ After a standalone build, copy static files alongside the server:
|
|
|
243
313
|
| `AI_OPENAI_MODEL` | No | `gpt-4o-mini` | Default OpenAI model |
|
|
244
314
|
| `AI_DEFAULT_MODEL` | No | `gpt-4o` | Fallback model |
|
|
245
315
|
| `TRUST_PROXY` | No | — | Set to `true` behind a reverse proxy so `request.ip` reflects `X-Forwarded-For` |
|
|
316
|
+
| `PLUMBUS_RUNTIME_ROLE` | No | `all` | `api` for API-only replicas; use `plumbus worker` separately |
|
|
317
|
+
| `QUEUE_URL` | No | — | Redis connection URL (preferred over host/port) |
|
|
318
|
+
| `REDIS_URL` | No | — | Alias for `QUEUE_URL` |
|
|
319
|
+
| `QUEUE_BACKEND` | No | auto | Force `memory` or `redis` queue backend |
|
|
246
320
|
|
|
247
321
|
### Frontend / Admin
|
|
248
322
|
|
|
@@ -264,6 +338,7 @@ After a standalone build, copy static files alongside the server:
|
|
|
264
338
|
| Frontend | ~150-200 MB | > 400 MB |
|
|
265
339
|
| Admin | ~150-200 MB | > 400 MB |
|
|
266
340
|
| Backend | ~500-700 MB | > 1 GB |
|
|
341
|
+
| Worker | ~500-700 MB | > 1 GB |
|
|
267
342
|
|
|
268
343
|
If images exceed these sizes, you are likely not using `pnpm deploy` (Rule 5) or not stripping backend deps (Rule 7, Rule 14).
|
|
269
344
|
|
|
@@ -402,8 +477,13 @@ services:
|
|
|
402
477
|
image: redis:7-alpine
|
|
403
478
|
backend:
|
|
404
479
|
build: { dockerfile: Dockerfile.backend }
|
|
480
|
+
environment: { PLUMBUS_RUNTIME_ROLE: api }
|
|
405
481
|
depends_on: [postgres, redis]
|
|
406
482
|
volumes: [uploads_data:/app/uploads]
|
|
483
|
+
worker:
|
|
484
|
+
build: { dockerfile: Dockerfile.backend }
|
|
485
|
+
command: ['npx', 'plumbus', 'worker', 'start', '--health-port', '3001']
|
|
486
|
+
depends_on: [postgres, redis]
|
|
407
487
|
frontend:
|
|
408
488
|
build: { dockerfile: Dockerfile.frontend }
|
|
409
489
|
depends_on: [backend]
|
|
@@ -477,7 +557,8 @@ cookies().set("auth_token", token, {
|
|
|
477
557
|
|
|
478
558
|
| Resource | Purpose |
|
|
479
559
|
|----------|---------|
|
|
480
|
-
| `Deployment` (backend) + `Service` | Plumbus API server — stateless, scales horizontally |
|
|
560
|
+
| `Deployment` (backend) + `Service` | Plumbus API server — stateless, scales horizontally (`PLUMBUS_RUNTIME_ROLE=api`) |
|
|
561
|
+
| `Deployment` (worker) + `Service` | Background worker pool — scales independently (`plumbus worker`) |
|
|
481
562
|
| `Deployment` (frontend) + `Service` | Next.js user-facing app — stateless |
|
|
482
563
|
| `Deployment` (admin) + `Service` | Next.js admin dashboard — stateless |
|
|
483
564
|
| `Ingress` | Routes traffic: `/api` -> backend, `/` -> frontend, `/admin` -> admin |
|
|
@@ -521,7 +602,8 @@ readinessProbe:
|
|
|
521
602
|
|
|
522
603
|
### Scaling
|
|
523
604
|
|
|
524
|
-
- **Backend**: Stateless — safe to scale. All replicas must share the same `AUTH_SECRET`.
|
|
605
|
+
- **Backend**: Stateless — safe to scale. All replicas must share the same `AUTH_SECRET`. Set `PLUMBUS_RUNTIME_ROLE=api` and run separate worker replicas.
|
|
606
|
+
- **Workers**: Stateless — scale independently. Require shared Redis (`QUEUE_URL`). Probe `/ready` on the worker health port.
|
|
525
607
|
- **Frontends**: Stateless — scale freely behind a load balancer.
|
|
526
608
|
- **Uploads**: Replace local `uploads/` with object storage (S3, GCS) or a `ReadWriteMany` PVC.
|
|
527
609
|
- **PostgreSQL / Redis**: Use managed services (RDS, ElastiCache) — not the Docker Compose images.
|
|
@@ -539,7 +621,10 @@ readinessProbe:
|
|
|
539
621
|
- [ ] Health checks on `/ready`
|
|
540
622
|
- [ ] `config/app.config.ts` uses dynamic environment detection
|
|
541
623
|
- [ ] AI provider API keys configured
|
|
542
|
-
- [ ] Redis available for
|
|
624
|
+
- [ ] Redis available for shared queues (required for split API + worker)
|
|
625
|
+
- [ ] `redis` npm package installed when using Redis backend
|
|
626
|
+
- [ ] `cron-parser` installed if flows use schedule triggers
|
|
627
|
+
- [ ] Worker health probes configured when running `plumbus worker` separately
|
|
543
628
|
|
|
544
629
|
### Docker — Image Size
|
|
545
630
|
|
package/instructions/events.md
CHANGED
|
@@ -76,6 +76,7 @@ export const onOrderPlaced = defineCapability({
|
|
|
76
76
|
name: "onOrderPlaced",
|
|
77
77
|
kind: "eventHandler",
|
|
78
78
|
domain: "fulfillment",
|
|
79
|
+
trigger: { event: "order.placed" }, // auto-registers at worker startup (0.5+)
|
|
79
80
|
// ...
|
|
80
81
|
handler: async (ctx, event) => {
|
|
81
82
|
// event is the typed payload
|
|
@@ -84,6 +85,16 @@ export const onOrderPlaced = defineCapability({
|
|
|
84
85
|
});
|
|
85
86
|
```
|
|
86
87
|
|
|
88
|
+
### Auto-registration (`trigger.event`)
|
|
89
|
+
|
|
90
|
+
From **0.5.0**, set `trigger: { event: "<event.name>", versionConstraint?: "..." }` on `eventHandler` capabilities. The worker pool registers a queue consumer automatically — no manual `ConsumerRegistry` entry required.
|
|
91
|
+
|
|
92
|
+
- **Manual registration still works** and takes precedence when the consumer id equals the capability name.
|
|
93
|
+
- **`plumbus verify`** and **`plumbus doctor`** warn when `eventHandler` capabilities omit `trigger.event` (advisory).
|
|
94
|
+
- **`trigger` is only valid on `kind: "eventHandler"`** — other kinds throw at define time.
|
|
95
|
+
|
|
96
|
+
Dequeue uses tenant binding from the `event_outbox` row (fail-closed). Do not push forged messages to Redis; use `plumbus events replay` or `plumbus events dead-letter retry` for operational recovery.
|
|
97
|
+
|
|
87
98
|
## Idempotency
|
|
88
99
|
|
|
89
100
|
Consumers should be idempotent — processing the same event twice must produce the same result. The framework tracks delivered event+consumer pairs to support this.
|
package/instructions/flows.md
CHANGED
|
@@ -16,11 +16,11 @@ export const refundApproval = defineFlow({
|
|
|
16
16
|
state: z.object({ approved: z.boolean().default(false) }),
|
|
17
17
|
|
|
18
18
|
steps: [
|
|
19
|
-
{ type: "capability", name: "validateRefund" },
|
|
19
|
+
{ type: "capability", name: "validateRefund", capability: "billing.validateRefund" },
|
|
20
20
|
{ type: "conditional", name: "checkAmount", if: "amount > 100", then: "managerApproval", else: "autoApprove" },
|
|
21
21
|
{ type: "wait", name: "managerApproval", event: "refund.approved" },
|
|
22
|
-
{ type: "capability", name: "autoApprove" },
|
|
23
|
-
{ type: "capability", name: "processRefund" },
|
|
22
|
+
{ type: "capability", name: "autoApprove", capability: "billing.autoApprove" },
|
|
23
|
+
{ type: "capability", name: "processRefund", capability: "billing.processRefund" },
|
|
24
24
|
{ type: "eventEmit", name: "notifyCustomer", event: "refund.completed" },
|
|
25
25
|
],
|
|
26
26
|
|
|
@@ -33,7 +33,7 @@ export const refundApproval = defineFlow({
|
|
|
33
33
|
|
|
34
34
|
| Type | Purpose | Key Fields |
|
|
35
35
|
|------|---------|-----------|
|
|
36
|
-
| `capability` | Execute a named capability | `name` (capability name) |
|
|
36
|
+
| `capability` | Execute a named capability | `name` (step id), `capability` (canonical `<domain>.<name>`) |
|
|
37
37
|
| `conditional` | Branch based on condition | `if`, `then`, `else` |
|
|
38
38
|
| `wait` | Pause until event or timeout | `event` |
|
|
39
39
|
| `delay` | Pause for a fixed duration | `duration` (e.g., `"24h"`, `"5m"`) |
|
|
@@ -63,6 +63,14 @@ The `then` and `else` values reference step **names** within the same flow. Exec
|
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
All branches execute concurrently. The flow waits for **all** branches to complete before advancing. If any branch fails, the entire parallel step fails.
|
|
66
|
+
## Flow step auth and job blocking
|
|
67
|
+
|
|
68
|
+
Flow capability steps run under the **caller's auth snapshot** stored in `flow_executions.auth_snapshot_json` — not auto-`system` on user-triggered flows. Capabilities must allow the original caller's roles/scopes (or `public`). Scheduled flows still run under explicit `system` auth from the scheduler.
|
|
69
|
+
|
|
70
|
+
**Job capabilities** cannot run synchronously inside a flow step. Use job dispatch, events, or async consumers instead — the step executor returns `dependencyViolation` when a step references `kind: 'job'`.
|
|
71
|
+
|
|
72
|
+
Flow steps are **not** subject to a parent capability's `effects.capabilities`; only handler-to-handler `ctx.capabilities.invoke` requires declared dependencies.
|
|
73
|
+
|
|
66
74
|
## State Management
|
|
67
75
|
|
|
68
76
|
Flows maintain a `state` object persisted across steps. Each step can read and modify state through the flow execution context.
|
|
@@ -32,6 +32,12 @@ Plumbus governance is **advisory, not blocking** — "guardrails, not gates." Ru
|
|
|
32
32
|
- Capabilities with too many side effects
|
|
33
33
|
- Flows with excessive branching depth
|
|
34
34
|
- Large handler implementations (complexity warning)
|
|
35
|
+
- **`architecture.non-canonical-capability-reference`** — flow `step.capability` or `effects.capabilities` entries missing `<domain>.<name>` prefix
|
|
36
|
+
- **`architecture.missing-capability-dependency`** — declared invoke target not registered
|
|
37
|
+
- **`architecture.circular-capability-dependency`** — cycle in `effects.capabilities` graph
|
|
38
|
+
- **`architecture.deep-capability-chain`** — deep nested invoke chains (info; consider a flow)
|
|
39
|
+
- **`architecture.job-capability-dependency`** — `kind: 'job'` declared as synchronous invoke target
|
|
40
|
+
- **`architecture.direct-capability-handler-import`** — capability module imports another handler (source scan under `app/capabilities/`)
|
|
35
41
|
|
|
36
42
|
### AI
|
|
37
43
|
- Prompts receiving sensitive classified data
|
package/instructions/mcp.md
CHANGED
|
@@ -17,4 +17,4 @@ Plumbus capabilities can be exposed to external AI agents as MCP tools. **Contra
|
|
|
17
17
|
- **`plumbus generate`** — MCP manifest + skill files (no `@plumbus/mcp` install required).
|
|
18
18
|
- **`plumbus mcp serve` / `list-tools` / `mcp generate`** — CLI entry points; `mcp.agents` in `plumbus.config.ts`.
|
|
19
19
|
|
|
20
|
-
Install the runtime when serving agents: `pnpm add @plumbus/mcp` (optional peer of `@plumbus/core`, version-locked `0.
|
|
20
|
+
Install the runtime when serving agents: `pnpm add @plumbus/mcp` (optional peer of `@plumbus/core`, version-locked `0.5.x`).
|
package/instructions/patterns.md
CHANGED
|
@@ -56,6 +56,7 @@ app/prompts/<name>.prompt.ts
|
|
|
56
56
|
- **Don't** emit events outside of capabilities — the outbox pattern requires a capability transaction.
|
|
57
57
|
- **Don't** bypass `ctx.auth` checks — the framework evaluates access policies before your handler runs.
|
|
58
58
|
- **Don't** bypass `ctx.*` subsystems with custom infrastructure layers unless the framework explicitly documents that extension point.
|
|
59
|
+
- **Don't** import another capability module and call its `.handler` or `executeCapability` directly — declare the dependency in `effects.capabilities` and use `ctx.capabilities.invoke('<domain>.<name>', input)`.
|
|
59
60
|
- **Don't** mutate the `ctx` object — it is scoped and controlled by the framework.
|
|
60
61
|
- **Don't** import framework internals — use only the public SDK surface (`defineCapability`, `defineFlow`, etc.).
|
|
61
62
|
- **Don't** store secrets in code — use `ctx.config` and environment variables.
|
package/instructions/security.md
CHANGED
|
@@ -24,6 +24,15 @@ access: {
|
|
|
24
24
|
|
|
25
25
|
If any check fails → **403 Forbidden** with audit record.
|
|
26
26
|
|
|
27
|
+
## Flow auth snapshot (0.5+)
|
|
28
|
+
|
|
29
|
+
Flow capability steps run under the **caller's stored auth snapshot**, not the worker's `system` identity. When a flow starts, the framework persists the full `AuthContext` in `flow_executions.auth_snapshot_json` and restores it on each step (with `actor` / `tenant_id` from the execution row).
|
|
30
|
+
|
|
31
|
+
- **User-triggered flows** (HTTP, API, manual `ctx.flows.start`) — steps enforce the original caller's roles and scopes. Capabilities must list those roles in `access.roles` (or `public: true`). There is no implicit `system` elevation on every step.
|
|
32
|
+
- **Scheduled / worker-owned flows** — still run under explicit `system` auth from the scheduler or worker bootstrap.
|
|
33
|
+
|
|
34
|
+
If flow steps return **403** after upgrading to 0.5.x, audit `access.roles` on step target capabilities. See `upgrading-0.5-capabilities.md` for the migration checklist.
|
|
35
|
+
|
|
27
36
|
## Auth Context (`ctx.auth`)
|
|
28
37
|
|
|
29
38
|
| Property | Type | Description |
|
package/instructions/testing.md
CHANGED
|
@@ -15,7 +15,7 @@ import { runCapability, simulateFlow, mockAI, createTestContext } from "@plumbus
|
|
|
15
15
|
Execute a capability in an isolated test environment:
|
|
16
16
|
|
|
17
17
|
```ts
|
|
18
|
-
const result = await runCapability(
|
|
18
|
+
const result = await runCapability(getUser, {
|
|
19
19
|
input: { userId: "usr_123" },
|
|
20
20
|
auth: { userId: "admin_1", roles: ["admin"], scopes: [], provider: "test" },
|
|
21
21
|
data: {
|
|
@@ -69,6 +69,17 @@ const ctx = createTestContext({
|
|
|
69
69
|
User: [{ id: "usr_1", name: "Alice" }],
|
|
70
70
|
Order: [],
|
|
71
71
|
},
|
|
72
|
+
// Register capabilities for ctx.capabilities.invoke (canonical names)
|
|
73
|
+
capabilities: [getInvoice, chargeCard],
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use **canonical names** (`users.getUser`, `billing.getInvoice`) in flow `capabilityResults` keys and invoke calls. Pass `capabilities` to `simulateFlow` when you need production-like step execution (including job blocking for `kind: 'job'` steps):
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
const execution = await simulateFlow(myFlow, input, {
|
|
81
|
+
capabilities: [validateOrder, processPayment],
|
|
82
|
+
auth: { roles: ["admin"], tenantId: "t-1" },
|
|
72
83
|
});
|
|
73
84
|
```
|
|
74
85
|
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
# Upgrading to 0.5 — Capability Invocation
|
|
2
|
+
|
|
3
|
+
Use this playbook when upgrading `@plumbus/core` to **0.5.x** and fixing existing app code. For workers, queues, and job HTTP behavior, also read `node_modules/@plumbus/core/instructions/deployment.md` (Upgrading to 0.5).
|
|
4
|
+
|
|
5
|
+
## What changed
|
|
6
|
+
|
|
7
|
+
Plumbus **0.5.0** enforces:
|
|
8
|
+
|
|
9
|
+
- **Canonical capability names** — `<domain>.<name>` everywhere except the short `name` field inside `defineCapability`.
|
|
10
|
+
- **Declared invoke dependencies** — `effects.capabilities` + `ctx.capabilities.invoke` (no direct handler imports).
|
|
11
|
+
- **Flow step auth snapshot** — user-triggered flows keep the caller's roles; no implicit `system` elevation on every step.
|
|
12
|
+
- **Job blocking** — `kind: 'job'` capabilities cannot run synchronously in flow steps or via `ctx.capabilities.invoke`.
|
|
13
|
+
|
|
14
|
+
The local `name` in `defineCapability` stays short (`approveRefund`). The framework derives `billing.approveRefund` from `domain: "billing"` + `name: "approveRefund"`.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 1. Canonical capability names
|
|
19
|
+
|
|
20
|
+
Update every **reference** string (not the `name` field in `defineCapability`):
|
|
21
|
+
|
|
22
|
+
| Location | Before | After |
|
|
23
|
+
|----------|--------|-------|
|
|
24
|
+
| Flow step | `capability: "validateOrder"` | `capability: "orders.validateOrder"` |
|
|
25
|
+
| `effects.capabilities` | `["getInvoice"]` | `["billing.getInvoice"]` |
|
|
26
|
+
| `ctx.capabilities.invoke` | `"chargeCard"` | `"billing.chargeCard"` |
|
|
27
|
+
| Tests / mocks | short names | canonical names |
|
|
28
|
+
| MCP tool names (manifest) | short names | canonical names (after `plumbus generate`) |
|
|
29
|
+
|
|
30
|
+
Search the codebase for hard-coded capability strings in:
|
|
31
|
+
|
|
32
|
+
- `app/flows/**` — `step.capability`
|
|
33
|
+
- `app/capabilities/**` — `effects.capabilities`, `ctx.capabilities.invoke`
|
|
34
|
+
- Tests — registries, `simulateFlow`, `runCapability`, mocks
|
|
35
|
+
- Generated artifacts — refresh with `plumbus generate` (see step 5)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. `effects.capabilities` + `ctx.capabilities.invoke`
|
|
40
|
+
|
|
41
|
+
Replace direct handler imports and `.handler` calls with the sanctioned invoke path:
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
// Before — forbidden
|
|
45
|
+
import { getInvoice } from "../billing/get-invoice/index.js";
|
|
46
|
+
await getInvoice.handler(ctx, { invoiceId });
|
|
47
|
+
|
|
48
|
+
// After
|
|
49
|
+
effects: {
|
|
50
|
+
data: ["Invoice"],
|
|
51
|
+
events: [],
|
|
52
|
+
external: [],
|
|
53
|
+
capabilities: ["billing.getInvoice"],
|
|
54
|
+
ai: false,
|
|
55
|
+
},
|
|
56
|
+
handler: async (ctx, input) => {
|
|
57
|
+
const invoice = await ctx.capabilities.invoke("billing.getInvoice", {
|
|
58
|
+
invoiceId: input.invoiceId,
|
|
59
|
+
});
|
|
60
|
+
return { invoice };
|
|
61
|
+
},
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Rules:
|
|
65
|
+
|
|
66
|
+
- Every `ctx.capabilities.invoke` target must appear in `effects.capabilities` (canonical names).
|
|
67
|
+
- Undeclared calls, cycles, missing targets → runtime `dependencyViolation` (`400`).
|
|
68
|
+
- `plumbus verify` flags direct handler imports (`architecture.direct-capability-handler-import`).
|
|
69
|
+
- Handler-visible `ctx.__runtime` no longer exposes internal invokers — use `ctx.capabilities.invoke` only.
|
|
70
|
+
- `executeCapability` is for framework wiring and tests, not app handlers.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 3. Flow `step.capability` format
|
|
75
|
+
|
|
76
|
+
Flow steps must use canonical names:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
steps: [
|
|
80
|
+
{ type: "capability", name: "validate", capability: "orders.validateOrder" },
|
|
81
|
+
{ type: "capability", name: "charge", capability: "billing.chargeCard" },
|
|
82
|
+
]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Flow steps are **not** subject to a parent capability's `effects.capabilities` — only handler-to-handler `invoke` requires declared dependencies.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 4. Flow auth snapshot
|
|
90
|
+
|
|
91
|
+
**Breaking:** user-triggered flows no longer auto-inject the `system` role on every step.
|
|
92
|
+
|
|
93
|
+
When a flow starts, the framework stores the caller's full `AuthContext` in `flow_executions.auth_snapshot_json` and restores it on each step. Step capabilities must allow the **original caller's** roles/scopes (or `public`) — not rely on implicit `system` elevation.
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
// Fix access policies on capabilities called from user-triggered flows
|
|
97
|
+
access: {
|
|
98
|
+
roles: ["admin", "billing"], // include roles the HTTP/API caller actually has
|
|
99
|
+
tenantScoped: true,
|
|
100
|
+
},
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Scheduled and worker-owned flows still run under explicit `system` auth from the scheduler/worker bootstrap.
|
|
104
|
+
|
|
105
|
+
If steps suddenly return **403** after upgrade, check `access.roles` on step targets — add the caller's roles or mark `public: true` where appropriate.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 5. Job capabilities blocked in flows and invoke
|
|
110
|
+
|
|
111
|
+
`kind: 'job'` capabilities cannot run synchronously:
|
|
112
|
+
|
|
113
|
+
- **Flow steps** — step executor returns `dependencyViolation`.
|
|
114
|
+
- **`ctx.capabilities.invoke`** — same error at runtime.
|
|
115
|
+
|
|
116
|
+
Use job dispatch (`POST` → **202** + poll `GET /api/jobs/:jobId`), events, or async `eventHandler` consumers instead.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 6. MCP tool names
|
|
121
|
+
|
|
122
|
+
After renaming references, run `plumbus generate` so `mcp-manifest.json` and skill files use canonical tool names (`billing.approveRefund`, not `approveRefund`). Update any agent configs or integration tests that assert tool names.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Migration commands
|
|
127
|
+
|
|
128
|
+
Run from the project root in this order:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
# 1. Fix source strings (canonical names, effects, invoke, access.roles) — see checklist below
|
|
132
|
+
|
|
133
|
+
# 2. Regenerate types and manifests
|
|
134
|
+
plumbus generate
|
|
135
|
+
|
|
136
|
+
# 3. Verify architecture rules
|
|
137
|
+
plumbus verify
|
|
138
|
+
|
|
139
|
+
# 4. Database — job_executions + flow auth_snapshot_json (if upgrading from pre-0.5)
|
|
140
|
+
plumbus migrate generate && plumbus migrate apply
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Apply migrations **before** production traffic. The migration adds `auth_snapshot_json` on `flow_executions` (and `job_executions` for job queue auth). Rows created before the column exists fall back to worker auth for roles until migrated.
|
|
144
|
+
|
|
145
|
+
Refresh agent wiring after framework upgrade:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
plumbus init --patch
|
|
149
|
+
plumbus doctor
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Agent checklist
|
|
155
|
+
|
|
156
|
+
Work through this list when upgrading an existing Plumbus app to 0.5.x:
|
|
157
|
+
|
|
158
|
+
- [ ] **Flow steps** — every `step.capability` uses `<domain>.<name>`
|
|
159
|
+
- [ ] **`effects.capabilities`** — every invoke target listed with canonical names
|
|
160
|
+
- [ ] **Handlers** — replace direct handler imports with `ctx.capabilities.invoke`
|
|
161
|
+
- [ ] **Tests** — update capability name strings in fixtures, mocks, and `simulateFlow` options
|
|
162
|
+
- [ ] **Flow access** — step target capabilities allow caller roles (not only `system`) for user-triggered flows
|
|
163
|
+
- [ ] **Job flows** — remove `kind: 'job'` from flow steps; use async dispatch instead
|
|
164
|
+
- [ ] **MCP** — run `plumbus generate`; update tool name references if exposed via MCP
|
|
165
|
+
- [ ] **`plumbus generate`** — refresh `RegisteredCapabilityName`, `capability-graph.md`, MCP manifest
|
|
166
|
+
- [ ] **`plumbus verify`** — zero `non-canonical-capability-reference` and `direct-capability-handler-import` warnings
|
|
167
|
+
- [ ] **`plumbus migrate generate && apply`** — `auth_snapshot_json` on `flow_executions` (+ `job_executions`)
|
|
168
|
+
- [ ] **Job HTTP clients** — expect **202** + poll `GET /api/jobs/:jobId` (see `deployment.md`)
|
|
169
|
+
- [ ] **`plumbus init --patch`** — refresh agent wiring to pick up this playbook
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Further reading
|
|
174
|
+
|
|
175
|
+
| Topic | Location |
|
|
176
|
+
|-------|----------|
|
|
177
|
+
| Invoke policy and effects | `node_modules/@plumbus/core/instructions/capabilities.md` |
|
|
178
|
+
| Flow step auth and job blocking | `node_modules/@plumbus/core/instructions/flows.md` |
|
|
179
|
+
| Security model (auth snapshot) | `node_modules/@plumbus/core/instructions/security.md` |
|
|
180
|
+
| Production deploy + workers | `node_modules/@plumbus/core/instructions/deployment.md` |
|
|
181
|
+
| MCP exposure | `node_modules/@plumbus/core/instructions/mcp.md` |
|