@aeolus-fleet/core 0.20.3 → 0.20.4

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 (108) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/http/server.d.ts +0 -2
  3. package/dist/adapters/http/server.js +4 -12
  4. package/dist/adapters/http/server.js.map +1 -1
  5. package/dist/adapters/prisma/client.d.ts +0 -2
  6. package/dist/adapters/prisma/client.js +0 -9
  7. package/dist/adapters/prisma/client.js.map +1 -1
  8. package/dist/adapters/prisma/generated/browser.d.ts +18 -0
  9. package/dist/adapters/prisma/generated/client.d.ts +18 -0
  10. package/dist/adapters/prisma/generated/internal/class.d.ts +22 -0
  11. package/dist/adapters/prisma/generated/internal/class.js +4 -4
  12. package/dist/adapters/prisma/generated/internal/class.js.map +1 -1
  13. package/dist/adapters/prisma/generated/internal/prismaNamespace.d.ts +169 -1
  14. package/dist/adapters/prisma/generated/internal/prismaNamespace.js +16 -0
  15. package/dist/adapters/prisma/generated/internal/prismaNamespace.js.map +1 -1
  16. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.d.ts +18 -0
  17. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js +16 -0
  18. package/dist/adapters/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  19. package/dist/adapters/prisma/generated/models/Delivery.d.ts +68 -1
  20. package/dist/adapters/prisma/generated/models/Fleet.d.ts +481 -0
  21. package/dist/adapters/prisma/generated/models/NetworkSettings.d.ts +1101 -0
  22. package/dist/adapters/prisma/generated/models/NetworkSettings.js +2 -0
  23. package/dist/adapters/prisma/generated/models/NetworkSettings.js.map +1 -0
  24. package/dist/adapters/prisma/generated/models/ReachRefusal.d.ts +1239 -0
  25. package/dist/adapters/prisma/generated/models/ReachRefusal.js +2 -0
  26. package/dist/adapters/prisma/generated/models/ReachRefusal.js.map +1 -0
  27. package/dist/adapters/prisma/generated/models.d.ts +2 -0
  28. package/dist/adapters/prisma/messaging.js +16 -2
  29. package/dist/adapters/prisma/messaging.js.map +1 -1
  30. package/dist/adapters/prisma/network.d.ts +4 -0
  31. package/dist/adapters/prisma/network.js +69 -0
  32. package/dist/adapters/prisma/network.js.map +1 -0
  33. package/dist/adapters/prisma/registry.js +3 -0
  34. package/dist/adapters/prisma/registry.js.map +1 -1
  35. package/dist/adapters/prisma/unit-of-work.d.ts +3 -1
  36. package/dist/adapters/prisma/unit-of-work.js +3 -0
  37. package/dist/adapters/prisma/unit-of-work.js.map +1 -1
  38. package/dist/adapters/trpc/console.d.ts +1 -1
  39. package/dist/adapters/trpc/context.d.ts +4 -0
  40. package/dist/adapters/trpc/fleet.d.ts +68 -6
  41. package/dist/adapters/trpc/fleet.js +25 -1
  42. package/dist/adapters/trpc/fleet.js.map +1 -1
  43. package/dist/adapters/trpc/router.d.ts +67 -7
  44. package/dist/adapters/trpc/ship-contract.js +1 -0
  45. package/dist/adapters/trpc/ship-contract.js.map +1 -1
  46. package/dist/adapters/trpc/ship-protocol.js +9 -8
  47. package/dist/adapters/trpc/ship-protocol.js.map +1 -1
  48. package/dist/adapters/trpc/trpc.js +2 -0
  49. package/dist/adapters/trpc/trpc.js.map +1 -1
  50. package/dist/app.js +1 -2
  51. package/dist/app.js.map +1 -1
  52. package/dist/domain/messaging/answer.d.ts +17 -0
  53. package/dist/domain/messaging/answer.js +16 -0
  54. package/dist/domain/messaging/answer.js.map +1 -0
  55. package/dist/domain/messaging/message.d.ts +10 -1
  56. package/dist/domain/messaging/message.js +4 -2
  57. package/dist/domain/messaging/message.js.map +1 -1
  58. package/dist/domain/messaging/ports.d.ts +2 -0
  59. package/dist/domain/messaging/resend-delivery.d.ts +11 -4
  60. package/dist/domain/messaging/resend-delivery.js +87 -62
  61. package/dist/domain/messaging/resend-delivery.js.map +1 -1
  62. package/dist/domain/messaging/send-message.d.ts +11 -4
  63. package/dist/domain/messaging/send-message.js +32 -6
  64. package/dist/domain/messaging/send-message.js.map +1 -1
  65. package/dist/domain/registry/check-reach.d.ts +44 -0
  66. package/dist/domain/registry/check-reach.js +75 -0
  67. package/dist/domain/registry/check-reach.js.map +1 -0
  68. package/dist/domain/registry/get-ship.d.ts +3 -3
  69. package/dist/domain/registry/get-ship.js +2 -1
  70. package/dist/domain/registry/get-ship.js.map +1 -1
  71. package/dist/domain/registry/network-settings.d.ts +58 -0
  72. package/dist/domain/registry/network-settings.js +81 -0
  73. package/dist/domain/registry/network-settings.js.map +1 -0
  74. package/dist/domain/registry/ports.d.ts +22 -0
  75. package/dist/domain/registry/public.d.ts +1 -0
  76. package/dist/domain/registry/public.js +1 -0
  77. package/dist/domain/registry/public.js.map +1 -1
  78. package/dist/domain/registry/reach-refusal.d.ts +30 -0
  79. package/dist/domain/registry/reach-refusal.js +2 -0
  80. package/dist/domain/registry/reach-refusal.js.map +1 -0
  81. package/dist/domain/registry/read-reach-refusals.d.ts +14 -0
  82. package/dist/domain/registry/read-reach-refusals.js +17 -0
  83. package/dist/domain/registry/read-reach-refusals.js.map +1 -0
  84. package/dist/domain/registry/set-network-rules.d.ts +29 -0
  85. package/dist/domain/registry/set-network-rules.js +25 -0
  86. package/dist/domain/registry/set-network-rules.js.map +1 -0
  87. package/dist/domain/registry/ship-report.d.ts +5 -0
  88. package/dist/domain/registry/ship-report.js +3 -0
  89. package/dist/domain/registry/ship-report.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/domain/shared/history.d.ts +17 -0
  93. package/dist/domain/shared/history.js +4 -1
  94. package/dist/domain/shared/history.js.map +1 -1
  95. package/dist/domain/shared/read-needs-attention.d.ts +4 -4
  96. package/dist/domain/shared/read-needs-attention.js +4 -3
  97. package/dist/domain/shared/read-needs-attention.js.map +1 -1
  98. package/dist/domain/shared/read-ship-timeline.d.ts +5 -4
  99. package/dist/domain/shared/read-ship-timeline.js +7 -3
  100. package/dist/domain/shared/read-ship-timeline.js.map +1 -1
  101. package/dist/wiring.d.ts +4 -0
  102. package/dist/wiring.js +5 -0
  103. package/dist/wiring.js.map +1 -1
  104. package/package.json +2 -2
  105. package/src/adapters/prisma/migrations/20261009200000_network_scope/migration.sql +8 -0
  106. package/src/adapters/prisma/migrations/20261009210000_network_rules/migration.sql +31 -0
  107. package/src/adapters/prisma/migrations/20261009220000_type_delivery_reachable_ships/migration.sql +5 -0
  108. package/src/adapters/prisma/schema.prisma +38 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/core",
3
- "version": "0.20.3",
3
+ "version": "0.20.4",
4
4
  "description": "Aeolus server: the tRPC API and the fleet domain on Postgres.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -42,7 +42,7 @@
42
42
  "postpack": "rm LICENSE"
43
43
  },
44
44
  "dependencies": {
45
- "@aeolus-fleet/common": "0.20.3",
45
+ "@aeolus-fleet/common": "0.20.4",
46
46
  "@fastify/websocket": "^11.3.1",
47
47
  "@modelcontextprotocol/server": "^2.3.0",
48
48
  "@prisma/adapter-pg": "^7.10.0",
@@ -0,0 +1,8 @@
1
+ -- fleet:network (decision 0034): setting the fleet's network rules. argo
2
+ -- holds every scope, so each fleet's argo gets it too.
3
+ ALTER TABLE "ships" DROP CONSTRAINT "ships_scopes_known";
4
+ ALTER TABLE "ships" ADD CONSTRAINT "ships_scopes_known" CHECK (
5
+ "scopes" IS NOT NULL AND "scopes" <@ ARRAY['messages:send', 'messages:receive', 'fleet:read', 'fleet:manage', 'crew:assign', 'crew:run', 'labels:define', 'labels:assign', 'fleet:network']::TEXT[]
6
+ );
7
+
8
+ UPDATE "ships" SET "scopes" = array_append("scopes", 'fleet:network') WHERE "kind" = 'operator' AND NOT ('fleet:network' = ANY("scopes"));
@@ -0,0 +1,31 @@
1
+ -- The fleet's network settings and the records of the sends they refused
2
+ -- (decision 0034).
3
+ -- CreateTable
4
+ CREATE TABLE "network_settings" (
5
+ "fleet_id" TEXT NOT NULL,
6
+ "rules" JSONB,
7
+ "version" INTEGER NOT NULL,
8
+
9
+ CONSTRAINT "network_settings_pkey" PRIMARY KEY ("fleet_id")
10
+ );
11
+
12
+ -- CreateTable
13
+ CREATE TABLE "reach_refusals" (
14
+ "id" TEXT NOT NULL,
15
+ "fleet_id" TEXT NOT NULL,
16
+ "at" TIMESTAMPTZ(3) NOT NULL,
17
+ "sender" JSONB NOT NULL,
18
+ "recipient" JSONB NOT NULL,
19
+ "settings_version" INTEGER NOT NULL,
20
+
21
+ CONSTRAINT "reach_refusals_pkey" PRIMARY KEY ("id")
22
+ );
23
+
24
+ -- CreateIndex
25
+ CREATE INDEX "reach_refusals_fleet_id_at_idx" ON "reach_refusals"("fleet_id", "at");
26
+
27
+ -- AddForeignKey
28
+ ALTER TABLE "network_settings" ADD CONSTRAINT "network_settings_fleet_id_fkey" FOREIGN KEY ("fleet_id") REFERENCES "fleets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
29
+
30
+ -- AddForeignKey
31
+ ALTER TABLE "reach_refusals" ADD CONSTRAINT "reach_refusals_fleet_id_fkey" FOREIGN KEY ("fleet_id") REFERENCES "fleets"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
@@ -0,0 +1,5 @@
1
+ -- A type delivery under network rules keeps the ships of the type its sender
2
+ -- may reach, fixed at send time (decision 0034); empty for any ship of the type,
3
+ -- as every delivery stored before had.
4
+ -- AlterTable
5
+ ALTER TABLE "deliveries" ADD COLUMN "reachable_ship_ids" TEXT[] DEFAULT ARRAY[]::TEXT[];
@@ -51,6 +51,8 @@ model Fleet {
51
51
  labels Label[]
52
52
  labelValues LabelValue[]
53
53
  shipLabels ShipLabel[]
54
+ networkSettings NetworkSettings?
55
+ reachRefusals ReachRefusal[]
54
56
  credentials Credential[]
55
57
  messages Message[]
56
58
  deliveries Delivery[]
@@ -322,6 +324,38 @@ model ShipLabel {
322
324
  @@map("ship_labels")
323
325
  }
324
326
 
327
+ /// A fleet's network settings (decision 0034), once it first set rules: its
328
+ /// rules as JSON, none (null) for all-to-all, and their version. A send and a
329
+ /// set take turns on an advisory lock on them (network.ts).
330
+ model NetworkSettings {
331
+ fleetId String @id @map("fleet_id")
332
+ rules Json?
333
+ version Int
334
+
335
+ fleet Fleet @relation(fields: [fleetId], references: [id])
336
+
337
+ @@map("network_settings")
338
+ }
339
+
340
+ /// A send the network rules refused (decision 0034), recorded in the
341
+ /// transaction that refused it. Ids start with rfs_. Sender and recipient are
342
+ /// as they were then: ids, names and the label values they carried, as JSON,
343
+ /// so a later rename or relabelling keeps the record true. Only argo reads it.
344
+ model ReachRefusal {
345
+ id String @id
346
+ fleetId String @map("fleet_id")
347
+ at DateTime @db.Timestamptz(3)
348
+ sender Json
349
+ recipient Json
350
+ settingsVersion Int @map("settings_version")
351
+
352
+ fleet Fleet @relation(fields: [fleetId], references: [id])
353
+
354
+ /// argo reads the latest first.
355
+ @@index([fleetId, at])
356
+ @@map("reach_refusals")
357
+ }
358
+
325
359
  /// A ship secret, stored only as its hash. Ids start with crd_.
326
360
  /// The hash is unique across all fleets: finding a ship by its secret is one of the
327
361
  /// lookups not scoped by fleet (ADR 0007).
@@ -414,6 +448,9 @@ enum DeliveryState {
414
448
  /// is in flight, kept once acknowledged, none while it is pending. Attempts count the
415
449
  /// claims; the fifth makes it undeliverable.
416
450
  /// The read date is set when the operator opens a message to argo.
451
+ /// For a type under network rules, the ships of the type its sender may reach,
452
+ /// fixed at send time: only they claim it (decision 0034). Empty: any ship of
453
+ /// the type, as a send no ship of the type may take is refused.
417
454
  model Delivery {
418
455
  id String @id
419
456
  fleetId String @map("fleet_id")
@@ -424,6 +461,7 @@ model Delivery {
424
461
  claimedByShipId String? @map("claimed_by_ship_id")
425
462
  claimedByLeaseId String? @map("claimed_by_lease_id")
426
463
  attempts Int @default(0)
464
+ reachableShipIds String[] @default([]) @map("reachable_ship_ids")
427
465
  readAt DateTime? @map("read_at") @db.Timestamptz(3)
428
466
  createdAt DateTime @map("created_at") @db.Timestamptz(3)
429
467