@creatornader/agent-bridge 0.4.0 → 0.5.1

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 (77) hide show
  1. package/CHANGELOG.md +85 -1
  2. package/README.md +76 -7
  3. package/ROADMAP.md +29 -0
  4. package/SECURITY.md +30 -0
  5. package/SKILL.md +5 -1
  6. package/dist/archive.d.ts +2 -2
  7. package/dist/{bridge-service-YTjGr91A.d.ts → bridge-service-CNBKdYXh.d.ts} +2 -1
  8. package/dist/{bridge-store-Boaj-ZbO.d.ts → bridge-store-ByJ6CaJk.d.ts} +1 -0
  9. package/dist/bridge.d.ts +15 -8
  10. package/dist/bridge.js +10 -8
  11. package/dist/{chunk-PDIHDBP3.js → chunk-7VJI2MXI.js} +116 -26
  12. package/dist/chunk-7VJI2MXI.js.map +1 -0
  13. package/dist/{chunk-4VB44KJU.js → chunk-AWE3DFZV.js} +3 -2
  14. package/dist/chunk-AWE3DFZV.js.map +1 -0
  15. package/dist/{chunk-IHZFI7TH.js → chunk-E4OWHGUE.js} +5 -2
  16. package/dist/chunk-E4OWHGUE.js.map +1 -0
  17. package/dist/{chunk-SYGONYMM.js → chunk-HUHG7XTB.js} +6 -5
  18. package/dist/chunk-HUHG7XTB.js.map +1 -0
  19. package/dist/{chunk-DQOZJJZ2.js → chunk-IVG4XWWS.js} +5 -5
  20. package/dist/{chunk-DQOZJJZ2.js.map → chunk-IVG4XWWS.js.map} +1 -1
  21. package/dist/{chunk-3YHVUPU2.js → chunk-P635FAN4.js} +4 -4
  22. package/dist/chunk-P635FAN4.js.map +1 -0
  23. package/dist/{chunk-6BTJE6D4.js → chunk-QNXHDOJ5.js} +56 -23
  24. package/dist/chunk-QNXHDOJ5.js.map +1 -0
  25. package/dist/{chunk-MCKKVNCE.js → chunk-QPC6JHA3.js} +5 -5
  26. package/dist/{chunk-SV3SVBYS.js → chunk-SN7PIVDF.js} +2 -2
  27. package/dist/{chunk-2DFNOLMO.js → chunk-XDNT6ZNZ.js} +9 -6
  28. package/dist/chunk-XDNT6ZNZ.js.map +1 -0
  29. package/dist/{chunk-LAHNQZDN.js → chunk-Z6JP6MYD.js} +2 -2
  30. package/dist/cli.js +9 -9
  31. package/dist/cli.js.map +1 -1
  32. package/dist/client-runtime.d.ts +3 -3
  33. package/dist/client-runtime.js +6 -6
  34. package/dist/contracts/generate.js +1 -1
  35. package/dist/dr.js +3 -3
  36. package/dist/{gateway-BQHpV-MZ.d.ts → gateway-CW-61lvs.d.ts} +2 -2
  37. package/dist/gateway-main.js +71 -7
  38. package/dist/gateway-main.js.map +1 -1
  39. package/dist/gateway.d.ts +3 -3
  40. package/dist/gateway.js +3 -3
  41. package/dist/index.js +7 -7
  42. package/dist/{postgres-bridge-store-WASumj26.d.ts → postgres-bridge-store-C9KG9Z69.d.ts} +1 -1
  43. package/dist/postgres-production-preflight.d.ts +32 -0
  44. package/dist/postgres-production-preflight.js +249 -0
  45. package/dist/postgres-production-preflight.js.map +1 -0
  46. package/dist/server.js +7 -7
  47. package/dist/{sqlite-edge-store-Bc15DvpX.d.ts → sqlite-edge-store-CdMIOrho.d.ts} +1 -1
  48. package/dist/sqlite.d.ts +3 -3
  49. package/dist/sqlite.js +2 -2
  50. package/docs/architecture-v2.md +36 -5
  51. package/docs/deployment.md +157 -0
  52. package/llms.txt +2 -1
  53. package/openapi/agent-bridge-v2.openapi.json +5 -1
  54. package/package.json +5 -1
  55. package/schemas/agent-bridge-v2.capabilities.json +2 -1
  56. package/schemas/agent-bridge-v2.mcp.json +5 -1
  57. package/schemas/agent-bridge-v2.schema.json +4 -0
  58. package/sql/migrations/007_runtime_role.sql +8 -4
  59. package/sql/migrations/013_row_isolation.sql +71 -8
  60. package/sql/migrations/014_owner_control_plane.sql +124 -31
  61. package/sql/migrations/015_portable_archives.sql +143 -41
  62. package/sql/migrations/016_native_dr_fence.sql +102 -35
  63. package/sql/migrations/018_endpoint_migration_challenges.sql +36 -10
  64. package/sql/migrations/019_endpoint_migration_same_successor.sql +34 -10
  65. package/sql/migrations/020_managed_authority_compat.sql +698 -0
  66. package/sql/migrations/021_native_backup_reader.sql +421 -0
  67. package/sql/setup.sql +1 -3
  68. package/dist/chunk-2DFNOLMO.js.map +0 -1
  69. package/dist/chunk-3YHVUPU2.js.map +0 -1
  70. package/dist/chunk-4VB44KJU.js.map +0 -1
  71. package/dist/chunk-6BTJE6D4.js.map +0 -1
  72. package/dist/chunk-IHZFI7TH.js.map +0 -1
  73. package/dist/chunk-PDIHDBP3.js.map +0 -1
  74. package/dist/chunk-SYGONYMM.js.map +0 -1
  75. /package/dist/{chunk-MCKKVNCE.js.map → chunk-QPC6JHA3.js.map} +0 -0
  76. /package/dist/{chunk-SV3SVBYS.js.map → chunk-SN7PIVDF.js.map} +0 -0
  77. /package/dist/{chunk-LAHNQZDN.js.map → chunk-Z6JP6MYD.js.map} +0 -0
@@ -251,19 +251,37 @@ returns boolean language sql stable security definer set search_path = '' as $$
251
251
  ), active_registry as (
252
252
  select member_role,control_role from latest_registry where action='register'
253
253
  ), expected_memberships as (
254
- select names.owner_role granted_role,names.schema_owner member_role,true admin_option from names
255
- union all select names.operator_role,names.schema_owner,true from names
256
- union all select names.auditor_role,names.schema_owner,true from names
254
+ select names.owner_role granted_role,names.schema_owner member_role,
255
+ true admin_option,true inherit_option,true set_option from names
256
+ union all select names.operator_role,names.schema_owner,true,true,true from names
257
+ union all select names.auditor_role,names.schema_owner,true,true,true from names
257
258
  union all select case registry.control_role when 'operator' then names.operator_role else names.auditor_role end,
258
- registry.member_role,false from active_registry registry cross join names
259
- ), actual_memberships as (
260
- select granted.rolname::name granted_role,member.rolname::name member_role,membership.admin_option,
259
+ registry.member_role,false,true,true from active_registry registry cross join names
260
+ ), raw_memberships as (
261
+ select granted.rolname::name granted_role,member.rolname::name member_role,
262
+ membership.admin_option,
261
263
  coalesce((to_jsonb(membership)->>'inherit_option')::boolean,true) inherit_option,
262
- coalesce((to_jsonb(membership)->>'set_option')::boolean,true) set_option
264
+ coalesce((to_jsonb(membership)->>'set_option')::boolean,true) set_option,
265
+ membership.grantor,member.oid member_oid
263
266
  from pg_catalog.pg_auth_members membership
264
267
  join pg_catalog.pg_roles granted on granted.oid=membership.roleid
265
268
  join pg_catalog.pg_roles member on member.oid=membership.member
266
269
  where granted.rolname in ((select owner_role from names),(select operator_role from names),(select auditor_role from names))
270
+ ), actual_memberships as (
271
+ select membership.granted_role,membership.member_role,
272
+ bool_or(membership.admin_option) admin_option,
273
+ bool_or(membership.inherit_option) inherit_option,
274
+ bool_or(membership.set_option) set_option,
275
+ bool_and(case when membership.member_role=names.schema_owner then
276
+ (membership.grantor=10 and membership.admin_option
277
+ and membership.inherit_option=membership.set_option)
278
+ or (membership.grantor=membership.member_oid
279
+ and membership.inherit_option and membership.set_option)
280
+ else membership.grantor=(select oid from pg_catalog.pg_roles where rolname=names.schema_owner)
281
+ and not membership.admin_option
282
+ and membership.inherit_option and membership.set_option end) grants_valid
283
+ from raw_memberships membership cross join names
284
+ group by membership.granted_role,membership.member_role
267
285
  ), authority_closure as (
268
286
  select control_role.granted_role,candidate.rolname::name member_role
269
287
  from names cross join lateral(values(names.owner_role),(names.operator_role),(names.auditor_role)) control_role(granted_role)
@@ -276,10 +294,12 @@ returns boolean language sql stable security definer set search_path = '' as $$
276
294
  and(select count(*)=1 and bool_and(catalog_definition=agent_bridge.owner_control_attestation_definition())
277
295
  from agent_bridge.owner_control_attestations where name='owner-control-v6')
278
296
  and not exists(
279
- (select granted_role,member_role,admin_option from actual_memberships except select granted_role,member_role,admin_option from expected_memberships)
280
- union all(select granted_role,member_role,admin_option from expected_memberships except select granted_role,member_role,admin_option from actual_memberships)
297
+ (select granted_role,member_role,admin_option,inherit_option,set_option from actual_memberships
298
+ except select granted_role,member_role,admin_option,inherit_option,set_option from expected_memberships)
299
+ union all(select granted_role,member_role,admin_option,inherit_option,set_option from expected_memberships
300
+ except select granted_role,member_role,admin_option,inherit_option,set_option from actual_memberships)
281
301
  )
282
- and not exists(select 1 from actual_memberships where not inherit_option or not set_option)
302
+ and not exists(select 1 from actual_memberships where not grants_valid)
283
303
  and not exists(select 1 from active_registry registry left join pg_catalog.pg_roles role_record on role_record.rolname=registry.member_role
284
304
  where role_record.oid is null or not role_record.rolcanlogin or role_record.rolsuper or role_record.rolcreaterole
285
305
  or role_record.rolcreatedb or role_record.rolreplication or role_record.rolbypassrls)
@@ -299,8 +319,12 @@ $$;
299
319
 
300
320
  insert into agent_bridge.endpoint_migration_challenge_attestations(name,catalog_definition)
301
321
  values('endpoint-migration-v2',agent_bridge.endpoint_migration_challenge_catalog_definition());
322
+ select set_config(
323
+ 'role','agent_bridge_control_owner_'||substr(md5(current_database()),1,16),false
324
+ );
302
325
  insert into agent_bridge.owner_control_attestations(name,catalog_definition)
303
326
  values('owner-control-v6',agent_bridge.owner_control_attestation_definition());
327
+ reset role;
304
328
 
305
329
  do $final_readiness$
306
330
  begin