@plumbus/core 0.2.9 → 0.3.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.
Files changed (176) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ai/__tests__/ai-service.test.js +704 -1
  3. package/dist/ai/__tests__/ai-service.test.js.map +1 -1
  4. package/dist/ai/__tests__/chunking.test.js +34 -0
  5. package/dist/ai/__tests__/chunking.test.js.map +1 -1
  6. package/dist/ai/__tests__/provider.test.d.ts.map +1 -1
  7. package/dist/ai/__tests__/provider.test.js +425 -0
  8. package/dist/ai/__tests__/provider.test.js.map +1 -1
  9. package/dist/ai/__tests__/validation.test.js +200 -1
  10. package/dist/ai/__tests__/validation.test.js.map +1 -1
  11. package/dist/ai/__tests__/zod-to-provider-schema.test.d.ts +2 -0
  12. package/dist/ai/__tests__/zod-to-provider-schema.test.d.ts.map +1 -0
  13. package/dist/ai/__tests__/zod-to-provider-schema.test.js +60 -0
  14. package/dist/ai/__tests__/zod-to-provider-schema.test.js.map +1 -0
  15. package/dist/ai/ai-service.d.ts +19 -2
  16. package/dist/ai/ai-service.d.ts.map +1 -1
  17. package/dist/ai/ai-service.js +544 -110
  18. package/dist/ai/ai-service.js.map +1 -1
  19. package/dist/ai/cost-tracker.d.ts +26 -1
  20. package/dist/ai/cost-tracker.d.ts.map +1 -1
  21. package/dist/ai/cost-tracker.js +1 -0
  22. package/dist/ai/cost-tracker.js.map +1 -1
  23. package/dist/ai/index.d.ts +5 -3
  24. package/dist/ai/index.d.ts.map +1 -1
  25. package/dist/ai/index.js +5 -1
  26. package/dist/ai/index.js.map +1 -1
  27. package/dist/ai/provider.d.ts +45 -1
  28. package/dist/ai/provider.d.ts.map +1 -1
  29. package/dist/ai/provider.js +226 -32
  30. package/dist/ai/provider.js.map +1 -1
  31. package/dist/ai/rag/chunking.js +53 -3
  32. package/dist/ai/rag/chunking.js.map +1 -1
  33. package/dist/ai/refusal.d.ts +28 -0
  34. package/dist/ai/refusal.d.ts.map +1 -0
  35. package/dist/ai/refusal.js +36 -0
  36. package/dist/ai/refusal.js.map +1 -0
  37. package/dist/ai/validation.d.ts +40 -8
  38. package/dist/ai/validation.d.ts.map +1 -1
  39. package/dist/ai/validation.js +97 -6
  40. package/dist/ai/validation.js.map +1 -1
  41. package/dist/ai/zod-to-provider-schema.d.ts +15 -0
  42. package/dist/ai/zod-to-provider-schema.d.ts.map +1 -0
  43. package/dist/ai/zod-to-provider-schema.js +200 -0
  44. package/dist/ai/zod-to-provider-schema.js.map +1 -0
  45. package/dist/cli/__tests__/doctor.test.js +104 -2
  46. package/dist/cli/__tests__/doctor.test.js.map +1 -1
  47. package/dist/cli/__tests__/init.test.js +127 -7
  48. package/dist/cli/__tests__/init.test.js.map +1 -1
  49. package/dist/cli/__tests__/migrate.test.js +159 -2
  50. package/dist/cli/__tests__/migrate.test.js.map +1 -1
  51. package/dist/cli/commands/__tests__/commands.test.js +5 -0
  52. package/dist/cli/commands/__tests__/commands.test.js.map +1 -1
  53. package/dist/cli/commands/dev.d.ts.map +1 -1
  54. package/dist/cli/commands/dev.js +21 -1
  55. package/dist/cli/commands/dev.js.map +1 -1
  56. package/dist/cli/commands/doctor.d.ts +2 -0
  57. package/dist/cli/commands/doctor.d.ts.map +1 -1
  58. package/dist/cli/commands/doctor.js +78 -0
  59. package/dist/cli/commands/doctor.js.map +1 -1
  60. package/dist/cli/commands/generate.d.ts.map +1 -1
  61. package/dist/cli/commands/generate.js +7 -2
  62. package/dist/cli/commands/generate.js.map +1 -1
  63. package/dist/cli/commands/init.d.ts +16 -2
  64. package/dist/cli/commands/init.d.ts.map +1 -1
  65. package/dist/cli/commands/init.js +226 -25
  66. package/dist/cli/commands/init.js.map +1 -1
  67. package/dist/cli/commands/migrate.d.ts.map +1 -1
  68. package/dist/cli/commands/migrate.js +258 -8
  69. package/dist/cli/commands/migrate.js.map +1 -1
  70. package/dist/cli/commands/start.d.ts.map +1 -1
  71. package/dist/cli/commands/start.js +21 -1
  72. package/dist/cli/commands/start.js.map +1 -1
  73. package/dist/data/__tests__/drift-inspector.test.d.ts +2 -0
  74. package/dist/data/__tests__/drift-inspector.test.d.ts.map +1 -0
  75. package/dist/data/__tests__/drift-inspector.test.js +170 -0
  76. package/dist/data/__tests__/drift-inspector.test.js.map +1 -0
  77. package/dist/data/__tests__/framework-migration-rewriter.test.d.ts +2 -0
  78. package/dist/data/__tests__/framework-migration-rewriter.test.d.ts.map +1 -0
  79. package/dist/data/__tests__/framework-migration-rewriter.test.js +329 -0
  80. package/dist/data/__tests__/framework-migration-rewriter.test.js.map +1 -0
  81. package/dist/data/__tests__/migration.test.js +93 -2
  82. package/dist/data/__tests__/migration.test.js.map +1 -1
  83. package/dist/data/__tests__/repository.test.js +126 -0
  84. package/dist/data/__tests__/repository.test.js.map +1 -1
  85. package/dist/data/drift-inspector.d.ts +41 -0
  86. package/dist/data/drift-inspector.d.ts.map +1 -0
  87. package/dist/data/drift-inspector.js +197 -0
  88. package/dist/data/drift-inspector.js.map +1 -0
  89. package/dist/data/framework-migration-rewriter.d.ts +61 -0
  90. package/dist/data/framework-migration-rewriter.d.ts.map +1 -0
  91. package/dist/data/framework-migration-rewriter.js +357 -0
  92. package/dist/data/framework-migration-rewriter.js.map +1 -0
  93. package/dist/data/index.d.ts +2 -1
  94. package/dist/data/index.d.ts.map +1 -1
  95. package/dist/data/index.js +2 -1
  96. package/dist/data/index.js.map +1 -1
  97. package/dist/data/migration.d.ts +31 -1
  98. package/dist/data/migration.d.ts.map +1 -1
  99. package/dist/data/migration.js +113 -3
  100. package/dist/data/migration.js.map +1 -1
  101. package/dist/data/repository.d.ts.map +1 -1
  102. package/dist/data/repository.js +21 -0
  103. package/dist/data/repository.js.map +1 -1
  104. package/dist/define/__tests__/definePrompt.test.js +37 -0
  105. package/dist/define/__tests__/definePrompt.test.js.map +1 -1
  106. package/dist/define/definePrompt.d.ts +13 -0
  107. package/dist/define/definePrompt.d.ts.map +1 -1
  108. package/dist/define/definePrompt.js +3 -0
  109. package/dist/define/definePrompt.js.map +1 -1
  110. package/dist/errors/http.d.ts.map +1 -1
  111. package/dist/errors/http.js +2 -0
  112. package/dist/errors/http.js.map +1 -1
  113. package/dist/errors/index.d.ts +12 -0
  114. package/dist/errors/index.d.ts.map +1 -1
  115. package/dist/errors/index.js +21 -0
  116. package/dist/errors/index.js.map +1 -1
  117. package/dist/events/__tests__/event-emitter.test.js +72 -0
  118. package/dist/events/__tests__/event-emitter.test.js.map +1 -1
  119. package/dist/events/emitter.d.ts.map +1 -1
  120. package/dist/events/emitter.js +51 -0
  121. package/dist/events/emitter.js.map +1 -1
  122. package/dist/execution/__tests__/context-factory.test.js +1 -0
  123. package/dist/execution/__tests__/context-factory.test.js.map +1 -1
  124. package/dist/execution/context-factory.d.ts.map +1 -1
  125. package/dist/execution/context-factory.js +2 -0
  126. package/dist/execution/context-factory.js.map +1 -1
  127. package/dist/flows/__tests__/flow-engine.test.js +451 -4
  128. package/dist/flows/__tests__/flow-engine.test.js.map +1 -1
  129. package/dist/flows/__tests__/flow-service.test.js +8 -0
  130. package/dist/flows/__tests__/flow-service.test.js.map +1 -1
  131. package/dist/flows/__tests__/step-executor.test.js +8 -2
  132. package/dist/flows/__tests__/step-executor.test.js.map +1 -1
  133. package/dist/flows/engine.d.ts +50 -1
  134. package/dist/flows/engine.d.ts.map +1 -1
  135. package/dist/flows/engine.js +427 -23
  136. package/dist/flows/engine.js.map +1 -1
  137. package/dist/flows/flow-service.d.ts.map +1 -1
  138. package/dist/flows/flow-service.js +4 -0
  139. package/dist/flows/flow-service.js.map +1 -1
  140. package/dist/flows/index.d.ts +1 -1
  141. package/dist/flows/index.d.ts.map +1 -1
  142. package/dist/flows/index.js +1 -1
  143. package/dist/flows/index.js.map +1 -1
  144. package/dist/flows/schema.d.ts +34 -0
  145. package/dist/flows/schema.d.ts.map +1 -1
  146. package/dist/flows/schema.js +3 -0
  147. package/dist/flows/schema.js.map +1 -1
  148. package/dist/index.d.ts +4 -4
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +3 -3
  151. package/dist/index.js.map +1 -1
  152. package/dist/server/bootstrap.d.ts +14 -0
  153. package/dist/server/bootstrap.d.ts.map +1 -1
  154. package/dist/server/bootstrap.js +23 -4
  155. package/dist/server/bootstrap.js.map +1 -1
  156. package/dist/testing/context.d.ts.map +1 -1
  157. package/dist/testing/context.js +37 -1
  158. package/dist/testing/context.js.map +1 -1
  159. package/dist/types/context.d.ts +110 -0
  160. package/dist/types/context.d.ts.map +1 -1
  161. package/dist/types/enums.d.ts +2 -0
  162. package/dist/types/enums.d.ts.map +1 -1
  163. package/dist/types/enums.js +2 -0
  164. package/dist/types/enums.js.map +1 -1
  165. package/dist/types/prompt.d.ts +64 -0
  166. package/dist/types/prompt.d.ts.map +1 -1
  167. package/dist/worker/__tests__/bootstrap.test.js +36 -2
  168. package/dist/worker/__tests__/bootstrap.test.js.map +1 -1
  169. package/dist/worker/bootstrap.d.ts +7 -0
  170. package/dist/worker/bootstrap.d.ts.map +1 -1
  171. package/dist/worker/bootstrap.js +153 -12
  172. package/dist/worker/bootstrap.js.map +1 -1
  173. package/instructions/framework.md +7 -0
  174. package/instructions/guardrails.md +39 -0
  175. package/instructions/patterns.md +10 -0
  176. package/package.json +3 -2
@@ -2,15 +2,90 @@
2
2
  // Separate process that starts background workers:
3
3
  // outbox dispatcher, event delivery worker, flow step executor,
4
4
  // flow scheduler. Handles graceful shutdown.
5
+ import { sql } from 'drizzle-orm';
5
6
  import { createAuditService } from '../audit/service.js';
6
7
  import { createOutboxDispatcher } from '../events/dispatcher.js';
7
8
  import { createEventEmitter } from '../events/emitter.js';
8
9
  import { createIdempotencyService } from '../events/idempotency.js';
9
10
  import { createEventWorker } from '../events/worker.js';
10
11
  import { createExecutionContext } from '../execution/context-factory.js';
11
- import { createFlowEngine } from '../flows/engine.js';
12
+ import { createFlowEngine, generateWorkerId } from '../flows/engine.js';
13
+ import { FlowStatus } from '../flows/state-machine.js';
12
14
  import { createFlowScheduler } from '../flows/scheduler.js';
13
15
  import { createFlowTriggerHandler } from '../flows/triggers.js';
16
+ // ── Error description helper ──
17
+ // Drizzle wraps the underlying driver error in `cause`, and its own `message`
18
+ // is just the literal SQL with a "Failed query:" prefix. Without the cause
19
+ // the worker logs hide the actual Postgres failure (missing column, broken
20
+ // constraint, etc.), which makes operational issues — especially schema drift
21
+ // after an `@plumbus/core` upgrade — extremely hard to diagnose.
22
+ //
23
+ // We pull out fields that postgres-js exposes on its error objects (code,
24
+ // detail, hint, position, where, schema, table, column, constraint, routine)
25
+ // in addition to the cause's own message, and surface them as a structured
26
+ // log payload alongside the original error message.
27
+ function describeError(err) {
28
+ if (!(err instanceof Error)) {
29
+ return { error: String(err) };
30
+ }
31
+ const out = { error: err.message };
32
+ const cause = err.cause;
33
+ if (cause instanceof Error) {
34
+ out.causeMessage = cause.message;
35
+ const pgFields = [
36
+ 'code',
37
+ 'detail',
38
+ 'hint',
39
+ 'position',
40
+ 'where',
41
+ 'schema',
42
+ 'table',
43
+ 'column',
44
+ 'constraint',
45
+ 'routine',
46
+ 'severity',
47
+ ];
48
+ const pg = {};
49
+ for (const k of pgFields) {
50
+ const v = cause[k];
51
+ if (v !== undefined && v !== null && v !== '')
52
+ pg[k] = v;
53
+ }
54
+ if (Object.keys(pg).length > 0)
55
+ out.pg = pg;
56
+ }
57
+ else if (cause !== undefined) {
58
+ out.cause = String(cause);
59
+ }
60
+ return out;
61
+ }
62
+ // ── Lease-column preflight ──
63
+ //
64
+ // 0.3.0 added `lease_owner` and `lease_expires_at` columns to flow_executions
65
+ // to support lease-based claiming across workers. If a consumer upgrades
66
+ // `@plumbus/core` but forgets to run `plumbus migrate generate` +
67
+ // `plumbus migrate apply`, the first claim-cycle UPDATE fails with PG error
68
+ // 42703 (undefined_column) deep inside drizzle, producing logs that don't
69
+ // point at the real fix. This probe runs one cheap `LIMIT 0` SELECT against
70
+ // those columns and rethrows a clear, actionable error when they're missing.
71
+ //
72
+ // Exported for direct testing.
73
+ export async function assertFlowLeaseColumns(db) {
74
+ try {
75
+ await db.execute(sql `SELECT lease_owner, lease_expires_at FROM flow_executions LIMIT 0`);
76
+ }
77
+ catch (err) {
78
+ const cause = err instanceof Error ? err.cause : undefined;
79
+ const pgCode = cause && typeof cause === 'object' && 'code' in cause
80
+ ? cause.code
81
+ : undefined;
82
+ if (pgCode === '42703') {
83
+ throw new Error('Plumbus 0.3.0 requires new columns on flow_executions (lease_owner, lease_expires_at).\n' +
84
+ 'Run `plumbus migrate generate` then `plumbus migrate apply` before starting workers.');
85
+ }
86
+ throw err;
87
+ }
88
+ }
14
89
  /** Create and configure a worker pool with all background processes */
15
90
  export function createWorkerPool(poolConfig) {
16
91
  const { db, queue, consumers, flows, stepDeps, audit, outboxPollIntervalMs = 1000, schedulerPollIntervalMs = 60_000, flowPollIntervalMs = 1000, enableDispatcher = true, enableEventWorker = true, enableScheduler = true, enableFlowRunner = true, } = poolConfig;
@@ -42,6 +117,11 @@ export function createWorkerPool(poolConfig) {
42
117
  audit,
43
118
  queue,
44
119
  onFlowError: poolConfig.onFlowError,
120
+ workerId: generateWorkerId(),
121
+ flowLeaseDurationMs: poolConfig.flowLeaseDurationMs,
122
+ flowHeartbeatIntervalMs: poolConfig.flowHeartbeatIntervalMs,
123
+ flowClaimBatchSize: poolConfig.flowClaimBatchSize,
124
+ logger,
45
125
  createDataService: createDataService ? (auth) => createDataService(auth) : undefined,
46
126
  createEventService: eventRegistry
47
127
  ? (auth) => createEventEmitter({
@@ -79,14 +159,12 @@ export function createWorkerPool(poolConfig) {
79
159
  };
80
160
  const scheduler = enableScheduler ? createFlowScheduler(schedulerConfig) : null;
81
161
  let flowRunnerTimer = null;
82
- let flowRunnerPolling = false;
83
162
  async function runFlowCycle() {
84
- if (!enableFlowRunner || flowRunnerPolling)
163
+ if (!enableFlowRunner)
85
164
  return;
86
- flowRunnerPolling = true;
87
165
  try {
88
- const runnable = await flowEngine.listRunnable(50);
89
- if (runnable.length === 0)
166
+ const claimed = await flowEngine.claimNext();
167
+ if (claimed.length === 0)
90
168
  return;
91
169
  const systemAuth = {
92
170
  userId: 'system-flow-runner',
@@ -115,20 +193,75 @@ export function createWorkerPool(poolConfig) {
115
193
  logger,
116
194
  config: poolConfig.config,
117
195
  });
118
- for (const executionId of runnable) {
196
+ for (const row of claimed) {
119
197
  try {
120
- await flowEngine.runNext(executionId, baseCtx);
198
+ // Drain consecutive in-flow steps in a single tick.
199
+ //
200
+ // Why: claimNext() acquires a lease (status='running',
201
+ // lease_expires_at = now()+leaseDurationMs) for the whole flow
202
+ // execution row. runNext() runs ONE step and, on normal
203
+ // advancement (next sequential step, parallel completion, or
204
+ // conditional branch), updates currentStep but intentionally
205
+ // leaves status='running' and the lease intact. If we returned
206
+ // here after a single step, the row would sit idle until the
207
+ // lease expired (default 5 min) before claimNext() picked it up
208
+ // again — producing multi-minute "no errors, no progress" gaps
209
+ // between successive steps of the same flow execution.
210
+ //
211
+ // Looping while status === Running means the worker that holds
212
+ // the lease keeps running steps until the flow either Waits
213
+ // (event/delay), Completes, Fails, or is Cancelled. Heartbeats
214
+ // inside runNext extend the lease while a step is executing;
215
+ // between steps the lease is still valid because we never
216
+ // released it. A hard cap (`maxStepsPerCycle`) bounds the loop
217
+ // so a runaway conditional/loop in a flow can't monopolise the
218
+ // worker forever — when the cap is hit we break, the lease will
219
+ // expire normally and another claim cycle (or the same worker)
220
+ // will pick the row up.
221
+ const maxStepsPerCycle = 1000;
222
+ let stepsRun = 0;
223
+ while (stepsRun < maxStepsPerCycle) {
224
+ const result = await flowEngine.runNext(row.id, baseCtx);
225
+ stepsRun += 1;
226
+ if (result.status !== FlowStatus.Running) {
227
+ break;
228
+ }
229
+ }
230
+ if (stepsRun >= maxStepsPerCycle) {
231
+ logger.warn('Flow drain hit maxStepsPerCycle; releasing for next cycle', {
232
+ executionId: row.id,
233
+ workerId: flowEngine.workerId,
234
+ stepsRun,
235
+ maxStepsPerCycle,
236
+ });
237
+ }
121
238
  }
122
239
  catch (err) {
123
240
  logger.error('Flow execution run failed', {
124
- executionId,
125
- error: err instanceof Error ? err.message : String(err),
241
+ executionId: row.id,
242
+ workerId: flowEngine.workerId,
243
+ ...describeError(err),
126
244
  });
245
+ // Finalize the row as failed so the next poll cycle doesn't re-claim
246
+ // it via the `status='running' AND lease_expires_at < now()`
247
+ // crash-recovery branch in claimNext and spin forever. The engine
248
+ // method is idempotent and guards on status, so this is safe even
249
+ // if the row was concurrently finalized by cancel() or a peer worker.
250
+ try {
251
+ await flowEngine.markFailedFromRunner(row.id, err);
252
+ }
253
+ catch (finalizeErr) {
254
+ logger.error('Failed to finalize flow execution after run error', {
255
+ executionId: row.id,
256
+ workerId: flowEngine.workerId,
257
+ ...describeError(finalizeErr),
258
+ });
259
+ }
127
260
  }
128
261
  }
129
262
  }
130
- finally {
131
- flowRunnerPolling = false;
263
+ catch (err) {
264
+ logger.error('Flow claim cycle failed', describeError(err));
132
265
  }
133
266
  }
134
267
  let running = false;
@@ -136,6 +269,14 @@ export function createWorkerPool(poolConfig) {
136
269
  async start() {
137
270
  if (running)
138
271
  return;
272
+ // Schema preflight: 0.3.0 added `lease_owner` and `lease_expires_at`
273
+ // to flow_executions. Consumers who upgrade `@plumbus/core` but skip
274
+ // `plumbus migrate apply` would otherwise hit a cryptic UPDATE error
275
+ // on the first claim cycle. Probe the columns once at startup and
276
+ // emit an actionable error instead.
277
+ if (enableFlowRunner) {
278
+ await assertFlowLeaseColumns(db);
279
+ }
139
280
  running = true;
140
281
  // Sync flow schedules to DB
141
282
  if (scheduler) {
@@ -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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"}
@@ -2,6 +2,13 @@
2
2
 
3
3
  Plumbus is an AI-native, contract-driven TypeScript application framework. You build applications by composing five primitives — **Entities**, **Capabilities**, **Flows**, **Events**, and **Prompts** — through a controlled execution context (`ctx`).
4
4
 
5
+ ## Non-Negotiable Guardrails
6
+
7
+ - Plumbus primitives are the application architecture, not optional helpers.
8
+ - **Capabilities are the only entry point for business logic.** If behavior does not belong in a capability directly, it should be orchestrated by a flow, emitted as an event, modeled as an entity, or wrapped in a prompt.
9
+ - Use framework extension points and `ctx.*` subsystems before inventing custom controllers, service layers, job runners, event buses, or direct infrastructure integrations.
10
+ - If the correct primitive is unclear, stop and ask which Plumbus extension point should own the behavior.
11
+
5
12
  ## Core Abstractions
6
13
 
7
14
  | Primitive | Purpose | Defined with |
@@ -0,0 +1,39 @@
1
+ # Agent Guardrails
2
+
3
+ These rules are mandatory when an AI agent works on a Plumbus application.
4
+
5
+ ## Framework-First Architecture
6
+
7
+ - Plumbus is the application architecture, not a helper library.
8
+ - All business logic must be implemented through Plumbus primitives: `defineCapability()`, `defineFlow()`, `defineEntity()`, `defineEvent()`, `definePrompt()`, and translations where relevant.
9
+ - If a task seems to require code outside those primitives, stop and ask which Plumbus extension point should be used.
10
+
11
+ ## Non-Negotiable Boundaries
12
+
13
+ - **Do not** implement business logic in ad hoc API routes, controllers, services, cron files, queues, or background workers when the behavior belongs in a capability, flow, event handler, or prompt.
14
+ - **Do not** bypass `ctx.*` subsystems with direct database clients, custom event buses, raw auth checks, or bespoke AI integration layers unless the framework explicitly documents that extension point.
15
+ - **Do not** import framework internals. Use the public SDK surface only.
16
+ - **Do not** edit generated files in `.plumbus/generated/`.
17
+ - **Do not** install framework-provided dependencies directly in the consumer app.
18
+
19
+ ## Escalation Rule
20
+
21
+ - When the requirements are unclear, ask which primitive should own the behavior instead of inventing a clean-room architecture.
22
+ - Prefer asking for clarification over adding code that works technically but does not follow the framework contract.
23
+
24
+ ## Git Safety
25
+
26
+ Read-only git inspection is allowed: `git status`, `git diff`, `git log`, `git show`.
27
+
28
+ The following actions require explicit user approval because they can discard work or rewrite history:
29
+
30
+ - `git checkout` when used to restore or overwrite files
31
+ - `git restore`
32
+ - `git reset` of any kind
33
+ - `git clean`
34
+ - `git revert` across user work you did not author
35
+ - `git push --force` or `git push --force-with-lease`
36
+ - deleting branches or tags
37
+ - any command that overwrites, discards, or rewrites existing work
38
+
39
+ If there is any doubt about whether a git command is destructive, stop and ask first.
@@ -1,5 +1,13 @@
1
1
  # Patterns & Conventions
2
2
 
3
+ ## Framework Boundaries
4
+
5
+ These rules are non-negotiable. They are architecture constraints, not style preferences.
6
+
7
+ - **Business logic belongs in Plumbus primitives.** Start with a capability, then compose flows, events, prompts, and entities around it.
8
+ - **Ask before bypassing the framework.** If the task appears to need custom routes, services, jobs, or infrastructure layers, stop and clarify the intended extension point.
9
+ - **Generated code is not an edit surface.** Treat `.plumbus/generated/` as read-only.
10
+
3
11
  ## Naming Conventions
4
12
 
5
13
  | Element | Convention | Example |
@@ -44,8 +52,10 @@ app/prompts/<name>.prompt.ts
44
52
  ## Don'ts
45
53
 
46
54
  - **Don't** access the database directly — always use `ctx.data.<Entity>`.
55
+ - **Don't** implement business logic in ad hoc controllers, service classes, raw API routes, cron scripts, or queue handlers when a capability or flow should own it.
47
56
  - **Don't** emit events outside of capabilities — the outbox pattern requires a capability transaction.
48
57
  - **Don't** bypass `ctx.auth` checks — the framework evaluates access policies before your handler runs.
58
+ - **Don't** bypass `ctx.*` subsystems with custom infrastructure layers unless the framework explicitly documents that extension point.
49
59
  - **Don't** mutate the `ctx` object — it is scoped and controlled by the framework.
50
60
  - **Don't** import framework internals — use only the public SDK surface (`defineCapability`, `defineFlow`, etc.).
51
61
  - **Don't** store secrets in code — use `ctx.config` and environment variables.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumbus/core",
3
- "version": "0.2.9",
3
+ "version": "0.3.0",
4
4
  "description": "Plumbus framework core — types, SDK, runtime, CLI, test utilities",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -55,7 +55,8 @@
55
55
  "postgres": "^3.4.8",
56
56
  "tsx": "^4.19.0",
57
57
  "vitest": "^3.0.0",
58
- "zod": "^3.24.0"
58
+ "zod": "^3.24.0",
59
+ "zod-to-json-schema": "^3.25.2"
59
60
  },
60
61
  "devDependencies": {
61
62
  "@biomejs/biome": "^2.4.6",