@aeolus-fleet/core 0.20.5 → 0.22.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 (99) hide show
  1. package/dist/adapters/http/server.d.ts +2 -0
  2. package/dist/adapters/http/server.js +11 -0
  3. package/dist/adapters/http/server.js.map +1 -1
  4. package/dist/adapters/prisma/client.d.ts +2 -0
  5. package/dist/adapters/prisma/client.js +19 -1
  6. package/dist/adapters/prisma/client.js.map +1 -1
  7. package/dist/adapters/prisma/fleet-busy.d.ts +2 -0
  8. package/dist/adapters/prisma/fleet-busy.js +26 -0
  9. package/dist/adapters/prisma/fleet-busy.js.map +1 -0
  10. package/dist/adapters/prisma/generated/browser.d.ts +7 -0
  11. package/dist/adapters/prisma/generated/client.d.ts +7 -0
  12. package/dist/adapters/prisma/generated/internal/class.d.ts +11 -0
  13. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  14. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  15. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +83 -1
  16. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +6 -0
  17. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  18. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +7 -0
  19. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +6 -0
  20. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  21. package/dist/adapters/prisma/generated/models/DeclaredNetworkRules.d.ts +1195 -0
  22. package/dist/adapters/prisma/generated/models/DeclaredNetworkRules.js +2 -0
  23. package/dist/adapters/prisma/generated/models/DeclaredNetworkRules.js.map +1 -0
  24. package/dist/adapters/prisma/generated/models/Fleet.d.ts +259 -0
  25. package/dist/adapters/prisma/generated/models/Ship.d.ts +263 -0
  26. package/dist/adapters/prisma/generated/models.d.ts +1 -0
  27. package/dist/adapters/prisma/migrate.js +17 -4
  28. package/dist/adapters/prisma/migrate.js.map +1 -1
  29. package/dist/adapters/prisma/network.d.ts +3 -1
  30. package/dist/adapters/prisma/network.js +23 -0
  31. package/dist/adapters/prisma/network.js.map +1 -1
  32. package/dist/adapters/prisma/registry.js +2 -0
  33. package/dist/adapters/prisma/registry.js.map +1 -1
  34. package/dist/adapters/prisma/unit-of-work.d.ts +2 -1
  35. package/dist/adapters/prisma/unit-of-work.js +2 -1
  36. package/dist/adapters/prisma/unit-of-work.js.map +1 -1
  37. package/dist/adapters/trpc/console.d.ts +2 -1
  38. package/dist/adapters/trpc/console.js +6 -2
  39. package/dist/adapters/trpc/console.js.map +1 -1
  40. package/dist/adapters/trpc/context.d.ts +9 -1
  41. package/dist/adapters/trpc/fleet.d.ts +46 -3
  42. package/dist/adapters/trpc/fleet.js +34 -6
  43. package/dist/adapters/trpc/fleet.js.map +1 -1
  44. package/dist/adapters/trpc/router.d.ts +52 -3
  45. package/dist/adapters/trpc/ship-contract.js +2 -0
  46. package/dist/adapters/trpc/ship-contract.js.map +1 -1
  47. package/dist/adapters/trpc/ship-protocol.js +2 -2
  48. package/dist/adapters/trpc/ship-protocol.js.map +1 -1
  49. package/dist/adapters/trpc/system.d.ts +15 -0
  50. package/dist/adapters/trpc/system.js +10 -1
  51. package/dist/adapters/trpc/system.js.map +1 -1
  52. package/dist/adapters/trpc/trpc.d.ts +11 -0
  53. package/dist/adapters/trpc/trpc.js +26 -10
  54. package/dist/adapters/trpc/trpc.js.map +1 -1
  55. package/dist/app.js +2 -1
  56. package/dist/app.js.map +1 -1
  57. package/dist/domain/registry/check-reach.d.ts +15 -0
  58. package/dist/domain/registry/check-reach.js +4 -4
  59. package/dist/domain/registry/check-reach.js.map +1 -1
  60. package/dist/domain/registry/declare-network-rules.d.ts +33 -0
  61. package/dist/domain/registry/declare-network-rules.js +30 -0
  62. package/dist/domain/registry/declare-network-rules.js.map +1 -0
  63. package/dist/domain/registry/declared-network-rules.d.ts +60 -0
  64. package/dist/domain/registry/declared-network-rules.js +70 -0
  65. package/dist/domain/registry/declared-network-rules.js.map +1 -0
  66. package/dist/domain/registry/explain-reach.d.ts +34 -0
  67. package/dist/domain/registry/explain-reach.js +42 -0
  68. package/dist/domain/registry/explain-reach.js.map +1 -0
  69. package/dist/domain/registry/label.d.ts +8 -10
  70. package/dist/domain/registry/label.js +4 -16
  71. package/dist/domain/registry/label.js.map +1 -1
  72. package/dist/domain/registry/network-settings.d.ts +26 -13
  73. package/dist/domain/registry/network-settings.js +68 -31
  74. package/dist/domain/registry/network-settings.js.map +1 -1
  75. package/dist/domain/registry/ports.d.ts +12 -0
  76. package/dist/domain/registry/read-assigned-crew-requests.d.ts +2 -2
  77. package/dist/domain/registry/read-assigned-crew-requests.js +2 -1
  78. package/dist/domain/registry/read-assigned-crew-requests.js.map +1 -1
  79. package/dist/domain/registry/read-declared-network-rules.d.ts +16 -0
  80. package/dist/domain/registry/read-declared-network-rules.js +9 -0
  81. package/dist/domain/registry/read-declared-network-rules.js.map +1 -0
  82. package/dist/domain/registry/retire-ship.d.ts +4 -2
  83. package/dist/domain/registry/retire-ship.js +10 -1
  84. package/dist/domain/registry/retire-ship.js.map +1 -1
  85. package/dist/domain/registry/set-network-rules.d.ts +4 -2
  86. package/dist/domain/registry/set-network-rules.js +4 -2
  87. package/dist/domain/registry/set-network-rules.js.map +1 -1
  88. package/dist/domain/registry/unassign-label.js +1 -1
  89. package/dist/domain/registry/unassign-label.js.map +1 -1
  90. package/dist/domain/shared/errors.d.ts +1 -1
  91. package/dist/domain/shared/errors.js.map +1 -1
  92. package/dist/wiring.d.ts +6 -0
  93. package/dist/wiring.js +7 -1
  94. package/dist/wiring.js.map +1 -1
  95. package/package.json +3 -2
  96. package/src/adapters/prisma/migrations/20261010110000_network_rules_through_plugin/migration.sql +4 -0
  97. package/src/adapters/prisma/migrations/20261010130000_cleared_network_rules_on_record/migration.sql +57 -0
  98. package/src/adapters/prisma/migrations/20261010210000_declared_network_rules/migration.sql +16 -0
  99. package/src/adapters/prisma/schema.prisma +17 -0
@@ -0,0 +1,4 @@
1
+ -- Rules exist only through a registered networking plugin (decision 0035):
2
+ -- rules argo set before then go, all-to-all. The version stays, as it names
3
+ -- the settings past refusals were checked against.
4
+ UPDATE "network_settings" SET "rules" = NULL WHERE "plugin_ship_id" IS NULL;
@@ -0,0 +1,57 @@
1
+ -- Every state change writes its event: the rules the migration before this
2
+ -- one cleared get theirs. A fleet it cleared has no plugin and no rules, yet
3
+ -- the change at its current version is a NetworkRulesSet that gave rules.
4
+ -- Each such fleet moves to the next version with NetworkRulesSet for none,
5
+ -- by the system, taking the next number of the fleet's stream. Its id is an
6
+ -- evt_ id as common/src/ids makes them: the time in milliseconds, then 80
7
+ -- random bits, in lowercase Crockford base32.
8
+ DO $$
9
+ DECLARE
10
+ alphabet CONSTANT text := '0123456789abcdefghjkmnpqrstvwxyz';
11
+ cleared record;
12
+ at timestamptz;
13
+ millis bigint;
14
+ body text;
15
+ next_version integer;
16
+ next_seq bigint;
17
+ BEGIN
18
+ FOR cleared IN
19
+ SELECT settings."fleet_id", settings."version"
20
+ FROM "network_settings" settings
21
+ WHERE settings."plugin_ship_id" IS NULL
22
+ AND settings."rules" IS NULL
23
+ AND EXISTS (
24
+ SELECT 1 FROM "events" event
25
+ WHERE event."fleet_id" = settings."fleet_id"
26
+ AND event."type" = 'NetworkRulesSet'
27
+ AND event."details" -> 'version' = to_jsonb(settings."version")
28
+ AND event."details" -> 'rules' <> 'null'::jsonb
29
+ )
30
+ ORDER BY settings."fleet_id"
31
+ LOOP
32
+ at := clock_timestamp();
33
+ millis := floor(extract(epoch FROM at) * 1000)::bigint;
34
+ body := '';
35
+ FOR position IN REVERSE 9..0 LOOP
36
+ body := body || substr(alphabet, ((millis >> (position * 5)) & 31)::integer + 1, 1);
37
+ END LOOP;
38
+ FOR position IN 1..16 LOOP
39
+ body := body || substr(alphabet, floor(random() * 32)::integer + 1, 1);
40
+ END LOOP;
41
+
42
+ next_version := cleared."version" + 1;
43
+ UPDATE "network_settings" SET "version" = next_version WHERE "fleet_id" = cleared."fleet_id";
44
+ UPDATE "fleets" SET "last_event_seq" = "last_event_seq" + 1 WHERE "id" = cleared."fleet_id"
45
+ RETURNING "last_event_seq" INTO next_seq;
46
+ INSERT INTO "events" ("id", "fleet_id", "type", "occurred_at", "details", "seq")
47
+ VALUES (
48
+ 'evt_' || body,
49
+ cleared."fleet_id",
50
+ 'NetworkRulesSet',
51
+ at,
52
+ jsonb_build_object('version', next_version, 'rules', NULL),
53
+ next_seq
54
+ );
55
+ END LOOP;
56
+ END;
57
+ $$;
@@ -0,0 +1,16 @@
1
+ -- The network rules each ship declared on the labels it owns (decision 0037):
2
+ -- one row per declaring ship, none while it declares none.
3
+ -- CreateTable
4
+ CREATE TABLE "declared_network_rules" (
5
+ "fleet_id" TEXT NOT NULL,
6
+ "ship_id" TEXT NOT NULL,
7
+ "rules" JSONB NOT NULL,
8
+
9
+ CONSTRAINT "declared_network_rules_pkey" PRIMARY KEY ("fleet_id","ship_id")
10
+ );
11
+
12
+ -- AddForeignKey
13
+ ALTER TABLE "declared_network_rules" ADD CONSTRAINT "declared_network_rules_fleet_id_fkey" FOREIGN KEY ("fleet_id") REFERENCES "fleets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
14
+
15
+ -- AddForeignKey
16
+ ALTER TABLE "declared_network_rules" ADD CONSTRAINT "declared_network_rules_fleet_id_ship_id_fkey" FOREIGN KEY ("fleet_id", "ship_id") REFERENCES "ships"("fleet_id", "id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -52,6 +52,7 @@ model Fleet {
52
52
  labelValues LabelValue[]
53
53
  shipLabels ShipLabel[]
54
54
  networkSettings NetworkSettings?
55
+ declaredNetworkRules DeclaredNetworkRules[]
55
56
  reachRefusals ReachRefusal[]
56
57
  credentials Credential[]
57
58
  messages Message[]
@@ -110,6 +111,7 @@ model Ship {
110
111
  requestedClears WorktreeClearRequest[] @relation("WorktreeClearRequestRequester")
111
112
  ownedLabels Label[] @relation("LabelOwner")
112
113
  labels ShipLabel[] @relation("ShipLabelShip")
114
+ declaredNetworkRules DeclaredNetworkRules[]
113
115
 
114
116
  @@unique([fleetId, id])
115
117
  /// An idempotency key is used once per commissioning ship.
@@ -344,6 +346,21 @@ model NetworkSettings {
344
346
  @@map("network_settings")
345
347
  }
346
348
 
349
+ /// The network rules a ship declared on the labels it owns (decision 0037),
350
+ /// its whole list as JSON, at most 20. No row while it declares none; a retire
351
+ /// removes its row.
352
+ model DeclaredNetworkRules {
353
+ fleetId String @map("fleet_id")
354
+ shipId String @map("ship_id")
355
+ rules Json
356
+
357
+ fleet Fleet @relation(fields: [fleetId], references: [id])
358
+ ship Ship @relation(fields: [fleetId, shipId], references: [fleetId, id])
359
+
360
+ @@id([fleetId, shipId])
361
+ @@map("declared_network_rules")
362
+ }
363
+
347
364
  /// A send the network rules refused (decision 0034), recorded in the
348
365
  /// transaction that refused it. Ids start with rfs_. Sender and recipient are
349
366
  /// as they were then: ids, names and the label values they carried, as JSON,