@empire-builder-kit/nx 1.0.0-rc.40 → 1.0.0-rc.42

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 (58) hide show
  1. package/README.md +26 -10
  2. package/package.json +3 -3
  3. package/src/blueprints/external-sandbox.d.ts +1 -1
  4. package/src/cli/deploy-runtime.d.ts +25 -1
  5. package/src/cli/deploy-runtime.js +120 -4
  6. package/src/cli/dev-command.d.ts +2 -0
  7. package/src/cli/dev-command.js +8 -0
  8. package/src/cli/main.js +20 -6
  9. package/src/cli/personal-secret-runtime.d.ts +12 -0
  10. package/src/cli/personal-secret-runtime.js +18 -3
  11. package/src/cli/secret-terminal.js +1 -1
  12. package/src/container-images.d.ts +1 -1
  13. package/src/container-images.js +1 -1
  14. package/src/developer-agent/operation-registry.d.ts +10 -0
  15. package/src/developer-agent/operation-registry.js +60 -13
  16. package/src/developer-agent/planning.d.ts +8 -1
  17. package/src/developer-agent/planning.js +23 -3
  18. package/src/executors/local-deploy/local-approval.js +1 -1
  19. package/src/executors/sst-lifecycle/governed-native-operation.js +3 -2
  20. package/src/executors/sst-lifecycle/run-sst-command.d.ts +6 -0
  21. package/src/executors/sst-lifecycle/run-sst-command.js +3 -33
  22. package/src/foundation/cost-estimate.d.ts +170 -0
  23. package/src/foundation/cost-estimate.js +683 -0
  24. package/src/generators/preset/tool-versions.d.ts +0 -2
  25. package/src/generators/preset/tool-versions.js +1 -3
  26. package/src/generators/preset/workspace-files-adopter-skills.js +39 -18
  27. package/src/generators/preset/workspace-files-developer-agent.js +83 -27
  28. package/src/generators/preset/workspace-files-shared-operation-claims.d.ts +10 -0
  29. package/src/generators/preset/workspace-files-shared-operation-claims.js +59 -0
  30. package/src/generators/preset/workspace-files-stage-authority.js +13 -2
  31. package/src/generators/preset/workspace-files-thin-deploy.d.ts +10 -0
  32. package/src/generators/preset/workspace-files-thin-deploy.js +54 -20
  33. package/src/generators/preset/workspace-files-thin-docs.js +32 -14
  34. package/src/generators/preset/workspace-files.js +28 -8
  35. package/src/generators/slice/built-in-plan-api-contract-files.js +7 -4
  36. package/src/generators/slice/built-in-plan-authorization-files.js +10 -5
  37. package/src/generators/slice/built-in-plan-authorization-infrastructure-files.js +933 -249
  38. package/src/generators/slice/built-in-plan-data-files.js +17 -8
  39. package/src/generators/slice/built-in-plan-database-retirement-rehearsal-files.js +5 -1
  40. package/src/generators/slice/built-in-plan-frontend-files.js +7 -0
  41. package/src/generators/slice/built-in-plan-infrastructure-files.js +0 -1
  42. package/src/generators/slice/built-in-plan-infrastructure-safety-files.js +8 -3
  43. package/src/generators/slice/built-in-plan-metadata-files.js +2 -1
  44. package/src/generators/slice/built-in-plan-reliability-files.js +4 -1
  45. package/src/generators/slice/built-in-plan-shared.d.ts +2 -2
  46. package/src/generators/slice/built-in-plan-shared.js +2 -2
  47. package/src/generators/slice/built-in-plan-testing-persistence-event-files.d.ts +7 -0
  48. package/src/generators/slice/built-in-plan-testing-persistence-event-files.js +487 -0
  49. package/src/generators/slice/built-in-plan-testing-persistence-files.js +2 -0
  50. package/src/generators/slice/built-in-plan.js +3 -1
  51. package/src/generators/workload/frozen-container.d.ts +1 -1
  52. package/src/git-policy/github-bootstrap.d.ts +9 -0
  53. package/src/git-policy/github-bootstrap.js +16 -2
  54. package/src/local-dev/fleet-inventory.js +18 -10
  55. package/src/local-dev/fleet-launcher.js +2 -2
  56. package/src/secrets/personal-command.d.ts +18 -2
  57. package/src/secrets/personal-command.js +66 -12
  58. package/src/secrets/verification.js +6 -1
@@ -292,8 +292,8 @@ human-supplied—controls cleanup.
292
292
 
293
293
  ## Personal human-supplied development value
294
294
 
295
- Only a human at a local interactive terminal may set or remove a
296
- human-supplied operator-declared personal value:
295
+ Setting a human-supplied operator-declared personal value is a human-only
296
+ step. Removing one carries no value and may be started by an agent:
297
297
 
298
298
  \`\`\`bash
299
299
  ebk secret set ${name} <logical-name>
@@ -303,10 +303,15 @@ ebk secret remove ${name} <logical-name>
303
303
  The CLI derives the personal stage, reads the profile and Region saved by
304
304
  \`ebk dev configure\`, proves the current AWS account is the development
305
305
  Foundation account, and invokes the workspace-pinned SST CLI. Set accepts the
306
- value only through a hidden TTY prompt; remove requires a hidden confirmation.
306
+ value only through a hidden TTY prompt and refuses agent and CI environments,
307
+ because a hidden prompt does not hide the value from the process that owns the
308
+ terminal: a human runs it in a terminal no agent spawned. An agent prepares
309
+ that step by naming the exact logical name and command, then resumes without
310
+ reading the value. Remove may be started by an agent; the human types the
311
+ hidden \`REMOVE <logical-name>\` confirmation in that interactive terminal.
307
312
  Neither command accepts a stage, profile, Region, value argument, environment
308
- value, file, fallback, or placeholder. Do not ask or permit an agent or CI job
309
- to invoke either command.
313
+ value, file, fallback, or placeholder. Never ask an agent or CI job to run
314
+ \`ebk secret set\`.
310
315
 
311
316
  ## Development metadata
312
317
 
@@ -357,9 +362,13 @@ Account-level role materialization remains an adopter responsibility.
357
362
 
358
363
  After an empty human-supplied container exists, a human secret operator enters
359
364
  or rotates the value through the approved hidden-input or provider-owned
360
- ceremony. Do not delegate that human-supplied ceremony to an agent and do not
361
- pass a value through argv, source, a file, a ticket, a work marker, GitHub,
362
- logs, or evidence. Routine operator authority is write-only for exact approved
365
+ ceremony. Only the value entry is human-only: an agent may confirm the empty
366
+ container through the value-blind \`secret-metadata\` report, tell the operator
367
+ the exact container name and stage, and verify afterwards with the same report
368
+ and the deployment; it never enters, reads, or relays the value. Do not
369
+ delegate that human-supplied ceremony to an agent and do not pass a value
370
+ through argv, source, a file, a ticket, a work marker, GitHub, logs, or
371
+ evidence. Routine operator authority is write-only for exact approved
363
372
  paths and has no application or Foundation deployment authority. Value reads
364
373
  require a separate audited break-glass path. Machine-generated declarations
365
374
  instead use \`secret-initialize\`; they never accept a human value.
@@ -428,7 +428,11 @@ The command accepts no arguments, so an operator cannot supply a stage, Slice,
428
428
  database, state machine, task, role, network, image, or command override.
429
429
 
430
430
  Run the generated \`db-retirement-rehearsal\` target only through the protected
431
- workflow. The deployment role needs
431
+ workflow: the run binds the reviewed candidate image digest and a deployment role
432
+ scoped to the one registered state machine, and those exist only there. Locally,
433
+ an agent may complete the registration and binding edits above, prepare them
434
+ for review, and propose the workflow run; it does not start the state machine
435
+ from a workstation. The deployment role needs
432
436
  \`states:StartExecution\` on the exact registered state machine and
433
437
  \`states:DescribeExecution\` on its exact execution namespace. It receives no
434
438
  database credential, secret-value, SQL, \`rds-db:connect\`, or arbitrary ECS
@@ -309,6 +309,13 @@ looks reusable.
309
309
 
310
310
  ## Manual review
311
311
 
312
+ An agent driving a real browser may perform and record the keyboard, focus,
313
+ zoom/reflow, reduced-motion, and announcement checks below and attach them to
314
+ the visual report. A human using actual assistive technology (screen reader,
315
+ switch access, or magnifier) completes the assistive-technology pass and is
316
+ recorded as the reviewer for that pass; the quarantine approver must still be
317
+ distinct from the owner.
318
+
312
319
  Confirm, at minimum:
313
320
 
314
321
  1. landmark and heading order, names, roles, descriptions, and state;
@@ -976,7 +976,6 @@ ${sql
976
976
  },
977
977
  handler: 'authorization/machine-client-provisioner.handler',
978
978
  link: secretLinksFor('machine-client-provisioner'),
979
- runtime: 'python3.12',
980
979
  timeout: '2 minutes',
981
980
  ...lambdaLogging(machineClientProvisionerLogs.logGroup.name),
982
981
  },
@@ -332,7 +332,9 @@ apply; it is never promoted to \`no-drift\`. The exact SST/provider call
332
332
  inventory still requires protected CloudTrail calibration evidence.
333
333
 
334
334
  When a plan requires human review, commit
335
- the workspace-level \`operations/infrastructure-approval.json\` batch. It binds
335
+ the workspace-level \`operations/infrastructure-approval.json\` batch. An agent
336
+ may draft that batch from the sanitized plan; a CODEOWNER other than its author
337
+ reviews and approves it before it is committed. It binds
336
338
  the exact ordered project set, action, stage, and one sanitized planned
337
339
  plan/digest-bound decision per project. The resume run permits only that one
338
340
  aggregate file to differ from the planned source commit and recomputes every
@@ -343,8 +345,11 @@ import, and cutover/data/collision/rollback/recovery proof for every
343
345
  replacement. Their canonical digests are retained in both authorization and
344
346
  the immediate pre-mutation binding; changing one after review fails closed.
345
347
 
346
- State edit, import operations inside a deploy preview, remove, repair, and
347
- authoritative refresh are governed recovery operations. Retain a state backup,
348
+ In staging and production, state edit, import operations inside a deploy
349
+ preview, remove, repair, and authoritative refresh are governed recovery
350
+ operations. In the development stage, refresh, unlock, and remove run locally
351
+ through their explicit Nx targets without non-author approval. For the
352
+ protected stages, retain a state backup,
348
353
  exact physical target inventory, non-author approval, command/result evidence,
349
354
  and a finalized post-repair convergence record. Remove additionally requires
350
355
  the complete deletion inventory, drained dependents, retained Foundation,
@@ -194,7 +194,8 @@ Service or Job recovery procedures as those capabilities are added.
194
194
  ## Operator secrets
195
195
 
196
196
  Use \`docs/runbooks/operator-secret-management.md\` for value-free metadata
197
- convergence and the separate, human-only personal-stage value ceremony.
197
+ convergence, which agents may run, and the separate personal-stage value
198
+ ceremony, whose value entry is human-only.
198
199
 
199
200
  ## Performance, capacity, and cost
200
201
 
@@ -1621,7 +1621,10 @@ binding; callers cannot label it.
1621
1621
 
1622
1622
  A bounded log query requires a human approval naming the approver, invoking
1623
1623
  human, incident, reason, account, region, stage, Slice, exact log groups, query
1624
- class, time window, and expiry. The approved query window is at most one hour.
1624
+ class, time window, and expiry. The invoking human is the person whose session
1625
+ runs the query; an agent may prepare the request and run the query inside that
1626
+ human's session, and the approver must be a different human. Unmasking remains
1627
+ a separate break-glass authority. The approved query window is at most one hour.
1625
1628
  The script returns an authorization plan; the existing protected query runner
1626
1629
  retains attributable evidence. Empty results never prove recovery.
1627
1630
  `,
@@ -15,9 +15,9 @@ export declare const PRODUCT_VERSIONS: {
15
15
  readonly awsSqs: "^3.700.0";
16
16
  readonly awsSsm: "^3.700.0";
17
17
  readonly awsSts: "^3.700.0";
18
- readonly drizzle: "^0.45.1";
18
+ readonly drizzle: "^0.45.2";
19
19
  readonly drizzleKit: "^0.31.4";
20
- readonly next: "16.3.4";
20
+ readonly next: "16.3.6";
21
21
  readonly pg: "^8.22.0";
22
22
  readonly playwright: "^1.59.1";
23
23
  readonly react: "19.2.8";
@@ -25,9 +25,9 @@ exports.PRODUCT_VERSIONS = {
25
25
  awsSqs: '^3.700.0',
26
26
  awsSsm: '^3.700.0',
27
27
  awsSts: '^3.700.0',
28
- drizzle: '^0.45.1',
28
+ drizzle: '^0.45.2',
29
29
  drizzleKit: '^0.31.4',
30
- next: '16.3.4',
30
+ next: '16.3.6',
31
31
  pg: '^8.22.0',
32
32
  playwright: '^1.59.1',
33
33
  react: '19.2.8',
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Seeded behavioral integration specs that drive the seeded event consumer
3
+ * against the disposable worker stores. They never write DynamoDB outbox rows
4
+ * (integration/record.spec.ts owns the exactly-one-outbox assertion on the
5
+ * shared worker table), assert by seed-scoped key, and never wait in real time.
6
+ */
7
+ export declare function renderTestingPersistenceEventFiles(name: string, pascalName: string, sql: boolean): Readonly<Record<string, string>>;