@aeolus-fleet/common 0.26.1 → 0.27.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 (51) hide show
  1. package/dist/fleet/core-version.d.ts +20 -0
  2. package/dist/fleet/core-version.js +59 -0
  3. package/dist/fleet/core-version.js.map +1 -0
  4. package/dist/fleet/index.d.ts +70 -9
  5. package/dist/fleet/index.js +90 -7
  6. package/dist/fleet/index.js.map +1 -1
  7. package/dist/fleet/no-terminal-questions.d.ts +1 -1
  8. package/dist/fleet/no-terminal-questions.js +1 -1
  9. package/dist/fleet/no-terminal-questions.js.map +1 -1
  10. package/dist/rules/index.d.ts +1 -0
  11. package/dist/rules/index.js +1 -0
  12. package/dist/rules/index.js.map +1 -1
  13. package/dist/rules/read-reach.d.ts +4 -0
  14. package/dist/rules/read-reach.js +5 -0
  15. package/dist/rules/read-reach.js.map +1 -0
  16. package/dist/schemas/console.d.ts +6 -0
  17. package/dist/schemas/crew-request.d.ts +2 -0
  18. package/dist/schemas/crew-request.js +3 -0
  19. package/dist/schemas/crew-request.js.map +1 -1
  20. package/dist/schemas/delivery.d.ts +79 -4
  21. package/dist/schemas/delivery.js +43 -5
  22. package/dist/schemas/delivery.js.map +1 -1
  23. package/dist/schemas/fleet.d.ts +72 -37
  24. package/dist/schemas/fleet.js +31 -9
  25. package/dist/schemas/fleet.js.map +1 -1
  26. package/dist/schemas/follow.d.ts +8 -0
  27. package/dist/schemas/history.d.ts +232 -19
  28. package/dist/schemas/history.js +20 -3
  29. package/dist/schemas/history.js.map +1 -1
  30. package/dist/schemas/index.d.ts +2 -0
  31. package/dist/schemas/index.js +2 -0
  32. package/dist/schemas/index.js.map +1 -1
  33. package/dist/schemas/message.d.ts +1 -0
  34. package/dist/schemas/message.js +2 -0
  35. package/dist/schemas/message.js.map +1 -1
  36. package/dist/schemas/needs-attention.d.ts +0 -150
  37. package/dist/schemas/needs-attention.js +1 -33
  38. package/dist/schemas/needs-attention.js.map +1 -1
  39. package/dist/schemas/network.d.ts +319 -12
  40. package/dist/schemas/network.js +84 -15
  41. package/dist/schemas/network.js.map +1 -1
  42. package/dist/schemas/scopes.d.ts +56 -0
  43. package/dist/schemas/scopes.js +35 -0
  44. package/dist/schemas/scopes.js.map +1 -0
  45. package/dist/schemas/ship.d.ts +2 -0
  46. package/dist/schemas/ship.js +7 -0
  47. package/dist/schemas/ship.js.map +1 -1
  48. package/dist/schemas/statement.d.ts +182 -0
  49. package/dist/schemas/statement.js +114 -0
  50. package/dist/schemas/statement.js.map +1 -0
  51. package/package.json +1 -1
@@ -0,0 +1,20 @@
1
+ /** Where core says its version, without authentication. */
2
+ export declare const CORE_VERSION_PATH = "/api/version";
3
+ /** The part of `fetch` the check uses, so a test hands in its own core. */
4
+ export type VersionFetch = (url: string, init: {
5
+ signal: AbortSignal;
6
+ }) => Promise<{
7
+ status: number;
8
+ json(): Promise<unknown>;
9
+ }>;
10
+ /**
11
+ * Why the package may not start against the fleet's core, or none when it
12
+ * may: core is at least `minimum`, or is `0.0.0`.
13
+ */
14
+ export declare function coreVersionRefusal(input: {
15
+ packageName: string;
16
+ version: string;
17
+ minimum: string;
18
+ fleetUrl: string;
19
+ fetch: VersionFetch;
20
+ }): Promise<string | undefined>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The minimum core version check (decision 0049, docs/compatibility.md): a
3
+ * package of another release train reads core's version at start and refuses
4
+ * to run against an older core, saying both versions.
5
+ */
6
+ import { z } from 'zod';
7
+ /** Where core says its version, without authentication. */
8
+ export const CORE_VERSION_PATH = '/api/version';
9
+ /** How long a package waits for core's version before it counts the fleet as not answering. */
10
+ const CORE_VERSION_TIMEOUT_MS = 10_000;
11
+ /** The HTTP statuses that answer a version. */
12
+ const HTTP_OK_FIRST = 200;
13
+ const HTTP_OK_LAST = 299;
14
+ /** A plain release version; core `0.0.0` is a build from main. */
15
+ const VERSION_PATTERN = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/;
16
+ /** Core's version as `/api/version` answers it. */
17
+ const coreVersionAnswerSchema = z.object({ server: z.string() });
18
+ function versionOf(text) {
19
+ const match = VERSION_PATTERN.exec(text);
20
+ return match === null ? undefined : [Number(match[1]), Number(match[2]), Number(match[3])];
21
+ }
22
+ function isOlder(version, than) {
23
+ const differing = version.findIndex((part, index) => part !== than[index]);
24
+ return differing !== -1 && (version[differing] ?? 0) < (than[differing] ?? 0);
25
+ }
26
+ /** Core's version, or why it could not be read. */
27
+ async function readCoreVersion(fleetUrl, fetch) {
28
+ try {
29
+ const response = await fetch(`${fleetUrl.replace(/\/+$/, '')}${CORE_VERSION_PATH}`, { signal: AbortSignal.timeout(CORE_VERSION_TIMEOUT_MS) });
30
+ if (response.status < HTTP_OK_FIRST || response.status > HTTP_OK_LAST) {
31
+ return { unread: `HTTP ${String(response.status)}` };
32
+ }
33
+ const answer = coreVersionAnswerSchema.safeParse(await response.json());
34
+ const parsed = answer.success ? versionOf(answer.data.server) : undefined;
35
+ return answer.success && parsed !== undefined ? { core: answer.data.server, parsed } : { unread: `its ${CORE_VERSION_PATH} answered no core version` };
36
+ }
37
+ catch (error) {
38
+ return { unread: error instanceof Error ? error.message : String(error) };
39
+ }
40
+ }
41
+ /**
42
+ * Why the package may not start against the fleet's core, or none when it
43
+ * may: core is at least `minimum`, or is `0.0.0`.
44
+ */
45
+ export async function coreVersionRefusal(input) {
46
+ const { packageName, version, minimum, fleetUrl, fetch } = input;
47
+ const needs = `${packageName} ${version} needs core ${minimum} or later`;
48
+ const minimumVersion = versionOf(minimum);
49
+ if (minimumVersion === undefined) {
50
+ throw new Error(`${packageName}'s minimum core version ${minimum} is not MAJOR.MINOR.PATCH`);
51
+ }
52
+ const read = await readCoreVersion(fleetUrl, fetch);
53
+ if ('unread' in read) {
54
+ return `${needs}, and could not read the version of the fleet at ${fleetUrl}: ${read.unread}`;
55
+ }
56
+ const isMainBuild = read.parsed.every((part) => part === 0);
57
+ return isMainBuild || !isOlder(read.parsed, minimumVersion) ? undefined : `${needs}; the fleet at ${fleetUrl} runs core ${read.core}: upgrade core first`;
58
+ }
59
+ //# sourceMappingURL=core-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-version.js","sourceRoot":"","sources":["../../src/fleet/core-version.ts"],"names":[],"mappings":"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"}
@@ -4,48 +4,100 @@ import { z } from 'zod';
4
4
  * scopes, ship kinds, ship statuses, lease locations, selector kinds, delivery
5
5
  * states and event types. Core and console use the same words.
6
6
  */
7
- /** A permission of a ship, stored on the server with the ship and checked before every call. */
8
- export declare const SCOPES: readonly ["messages:send", "messages:receive", "fleet:read", "fleet:manage", "crew:assign", "crew:run", "labels:define", "labels:assign", "fleet:network"];
7
+ /**
8
+ * A core scope: a permission of a ship, stored on the server with the ship
9
+ * and checked by core before every call. `messages:force` sends a forced
10
+ * message, one that comes first (decision 0040); `fleet:on-behalf` reads on
11
+ * behalf of a named ship (decision 0034); `scopes:declare` takes up a
12
+ * plugin namespace and `scopes:grant` grants and revokes on a live ship
13
+ * (decision 0046).
14
+ */
15
+ export declare const SCOPES: readonly ["messages:send", "messages:receive", "messages:force", "messages:resend", "fleet:read", "fleet:commission", "fleet:manage", "crew:assign", "crew:run", "labels:define", "labels:assign", "fleet:network", "fleet:on-behalf", "scopes:declare", "scopes:grant"];
9
16
  export declare const scopeSchema: z.ZodEnum<{
10
17
  "messages:send": "messages:send";
11
18
  "messages:receive": "messages:receive";
19
+ "messages:force": "messages:force";
20
+ "messages:resend": "messages:resend";
12
21
  "fleet:read": "fleet:read";
22
+ "fleet:commission": "fleet:commission";
13
23
  "fleet:manage": "fleet:manage";
14
24
  "crew:assign": "crew:assign";
15
25
  "crew:run": "crew:run";
16
26
  "labels:define": "labels:define";
17
27
  "labels:assign": "labels:assign";
18
28
  "fleet:network": "fleet:network";
29
+ "fleet:on-behalf": "fleet:on-behalf";
30
+ "scopes:declare": "scopes:declare";
31
+ "scopes:grant": "scopes:grant";
19
32
  }>;
20
33
  export type Scope = z.infer<typeof scopeSchema>;
34
+ /** What each core scope allows, on one line (decision 0046). */
35
+ export declare const CORE_SCOPE_DESCRIPTIONS: Readonly<Record<Scope, string>>;
36
+ /** The namespaces core reserves and enforces; every other one is a plugin's (decision 0046). */
37
+ export declare const CORE_NAMESPACES: readonly ["messages", "fleet", "crew", "labels", "scopes"];
38
+ export declare const SCOPE_NAMESPACE_PATTERN: RegExp;
39
+ export declare const SCOPE_NAME_PATTERN: RegExp;
40
+ /** The most scopes a plugin declares in its namespace (decision 0046). */
41
+ export declare const NAMESPACE_SCOPES_MAX = 20;
42
+ /** The longest one-line description of a declared scope. */
43
+ export declare const SCOPE_DESCRIPTION_MAX_LENGTH = 200;
44
+ /** Whether the namespace is one core reserves. */
45
+ export declare function isCoreNamespace(namespace: string): boolean;
46
+ /**
47
+ * Any scope a ship may hold (decision 0046): `<namespace>:<action>`, a core
48
+ * scope when its namespace is a core one, else a plugin's.
49
+ */
50
+ export declare const scopeNameSchema: z.ZodString;
51
+ export type ScopeName = z.infer<typeof scopeNameSchema>;
21
52
  /**
22
53
  * The scopes commissioning may add to an agent ship, beside sending and
23
- * receiving, which every agent ship has (ADR 0002). `crew:assign` writes crew
54
+ * receiving, which every agent ship has (ADR 0002). `messages:resend`
55
+ * resends or dismisses a stuck delivery; `fleet:commission` commissions
56
+ * agent ships; `fleet:manage` manages the ships in its manage reach (decision
57
+ * 0046). `crew:assign` writes crew
24
58
  * request assignments; `crew:run` crews the ships whose requests are assigned
25
59
  * to its ship (decision 0029). `labels:define` defines labels and changes
26
60
  * their values; `labels:assign` assigns and unassigns the labels its ship owns
27
61
  * (decision 0031). `fleet:network` sets the fleet's network rules (decision
28
- * 0034).
62
+ * 0034). `fleet:on-behalf` reads on behalf of a named ship (decision 0034).
29
63
  */
30
- export declare const FLEET_SCOPES: readonly ["fleet:read", "fleet:manage", "crew:assign", "crew:run", "labels:define", "labels:assign", "fleet:network"];
64
+ export declare const FLEET_SCOPES: readonly ["messages:resend", "fleet:read", "fleet:commission", "fleet:manage", "crew:assign", "crew:run", "labels:define", "labels:assign", "fleet:network", "fleet:on-behalf"];
31
65
  export declare const fleetScopeSchema: z.ZodEnum<{
66
+ "messages:resend": "messages:resend";
32
67
  "fleet:read": "fleet:read";
68
+ "fleet:commission": "fleet:commission";
33
69
  "fleet:manage": "fleet:manage";
34
70
  "crew:assign": "crew:assign";
35
71
  "crew:run": "crew:run";
36
72
  "labels:define": "labels:define";
37
73
  "labels:assign": "labels:assign";
38
74
  "fleet:network": "fleet:network";
75
+ "fleet:on-behalf": "fleet:on-behalf";
39
76
  }>;
40
77
  export type FleetScope = z.infer<typeof fleetScopeSchema>;
41
- /** `argo` is the one ship of kind `operator` in a fleet; every other ship is an `agent`. */
42
- export declare const SHIP_KINDS: readonly ["operator", "agent", "viewer"];
78
+ /**
79
+ * What a ship is (decision 0044): `argo` is the one `operator`, the console's
80
+ * door is the `viewer`, an `agent` is a session, a `person` a human's ship
81
+ * crewed by their own app or a chat, and an `app` an application or an
82
+ * outside party, crewed by its adapter.
83
+ */
84
+ export declare const SHIP_KINDS: readonly ["operator", "agent", "viewer", "person", "app"];
43
85
  export declare const shipKindSchema: z.ZodEnum<{
44
86
  operator: "operator";
45
87
  agent: "agent";
46
88
  viewer: "viewer";
89
+ person: "person";
90
+ app: "app";
47
91
  }>;
48
92
  export type ShipKind = z.infer<typeof shipKindSchema>;
93
+ /** The kinds a commission makes; argo and the viewer ship come with the fleet. */
94
+ export declare const COMMISSIONED_SHIP_KINDS: readonly ["agent", "person", "app"];
95
+ export declare const commissionedShipKindSchema: z.ZodEnum<{
96
+ agent: "agent";
97
+ person: "person";
98
+ app: "app";
99
+ }>;
100
+ export type CommissionedShipKind = z.infer<typeof commissionedShipKindSchema>;
49
101
  /** Where the session crewing a ship runs. `OTHER` carries a short description. */
50
102
  export declare const LOCATION_KINDS: readonly ["DEVICE", "CLOUD", "SERVER", "OTHER"];
51
103
  export declare const locationKindSchema: z.ZodEnum<{
@@ -69,8 +121,8 @@ export type ShipStatus = z.infer<typeof shipStatusSchema>;
69
121
  /** Who a message is for: one ship (by id or by name) or any ship of a type. Group and fleet come later. */
70
122
  export declare const SELECTOR_KINDS: readonly ["ship", "type"];
71
123
  export declare const selectorKindSchema: z.ZodEnum<{
72
- ship: "ship";
73
124
  type: "type";
125
+ ship: "ship";
74
126
  }>;
75
127
  export type SelectorKind = z.infer<typeof selectorKindSchema>;
76
128
  /**
@@ -96,10 +148,12 @@ export declare const deliveryStateSchema: z.ZodEnum<{
96
148
  }>;
97
149
  export type DeliveryState = z.infer<typeof deliveryStateSchema>;
98
150
  /** The event types written so far. Each later slice adds the ones it writes. */
99
- export declare const EVENT_TYPES: readonly ["FleetInitialised", "ShipCommissioned", "ShipClaimed", "LeaseRevoked", "CredentialRevoked", "StartingPromptIssued", "OperatorPasswordReset", "MessageAccepted", "LeasePushed", "DeliveryReceived", "DeliveryHanded", "DeliveryAcknowledged", "DeliveryHandled", "DeliveryNotHandled", "DeliveryOverdue", "DeliveryUndeliverable", "DeliveryReturned", "ShipRetired", "DeliveryAbandoned", "DeliveryDismissed", "ShipRenamed", "ShipReported", "TurnReported", "SignInTicketIssued", "FleetLimitsChanged", "ViewerSessionStarted", "CrewRequested", "CrewRequestRemoved", "CrewAssigned", "CrewStatusChanged", "CrewRequestExplained", "CrewRequestGivenBack", "LabelDefined", "LabelValuesChanged", "LabelRetired", "LabelAssigned", "LabelUnassigned", "LabelDeleted", "WorktreeClearRequested", "WorktreeCleared", "WorktreeClearRemoved", "NetworkRulesSet", "NetworkRulesDeclared", "NetworkPluginRegistered", "NetworkPluginUnregistered"];
151
+ export declare const EVENT_TYPES: readonly ["FleetInitialised", "ShipCommissioned", "OwnerSet", "OwnerChanged", "ShipClaimed", "LeaseRevoked", "CredentialRevoked", "StartingPromptIssued", "OperatorPasswordReset", "MessageAccepted", "LeasePushed", "DeliveryReceived", "DeliveryHanded", "DeliveryAcknowledged", "DeliveryHandled", "DeliveryNotHandled", "DeliveryOverdue", "DeliveryUndeliverable", "DeliveryReturned", "ShipRetired", "DeliveryAbandoned", "DeliveryDismissed", "ShipRenamed", "ShipReported", "StatementSet", "TurnReported", "SignInTicketIssued", "FleetLimitsChanged", "ViewerSessionStarted", "CrewRequested", "CrewRequestRemoved", "CrewAssigned", "CrewStatusChanged", "CrewRequestExplained", "CrewRequestGivenBack", "LabelDefined", "LabelValuesChanged", "LabelRetired", "LabelAssigned", "LabelUnassigned", "LabelDeleted", "WorktreeClearRequested", "WorktreeCleared", "WorktreeClearRemoved", "NetworkRulesSet", "NetworkRulesDeclared", "NetworkPluginRegistered", "NetworkPluginUnregistered", "BuiltInRuleChanged", "ScopesDeclared", "ScopesChanged", "PluginConnected", "PluginDisconnected"];
100
152
  export declare const eventTypeSchema: z.ZodEnum<{
101
153
  FleetInitialised: "FleetInitialised";
102
154
  ShipCommissioned: "ShipCommissioned";
155
+ OwnerSet: "OwnerSet";
156
+ OwnerChanged: "OwnerChanged";
103
157
  ShipClaimed: "ShipClaimed";
104
158
  LeaseRevoked: "LeaseRevoked";
105
159
  CredentialRevoked: "CredentialRevoked";
@@ -120,6 +174,7 @@ export declare const eventTypeSchema: z.ZodEnum<{
120
174
  DeliveryDismissed: "DeliveryDismissed";
121
175
  ShipRenamed: "ShipRenamed";
122
176
  ShipReported: "ShipReported";
177
+ StatementSet: "StatementSet";
123
178
  TurnReported: "TurnReported";
124
179
  SignInTicketIssued: "SignInTicketIssued";
125
180
  FleetLimitsChanged: "FleetLimitsChanged";
@@ -143,10 +198,16 @@ export declare const eventTypeSchema: z.ZodEnum<{
143
198
  NetworkRulesDeclared: "NetworkRulesDeclared";
144
199
  NetworkPluginRegistered: "NetworkPluginRegistered";
145
200
  NetworkPluginUnregistered: "NetworkPluginUnregistered";
201
+ BuiltInRuleChanged: "BuiltInRuleChanged";
202
+ ScopesDeclared: "ScopesDeclared";
203
+ ScopesChanged: "ScopesChanged";
204
+ PluginConnected: "PluginConnected";
205
+ PluginDisconnected: "PluginDisconnected";
146
206
  }>;
147
207
  export type EventType = z.infer<typeof eventTypeSchema>;
148
208
  export * from './argo-message.js';
149
209
  export * from './busy-wait.js';
210
+ export * from './core-version.js';
150
211
  export * from './mcp-url.js';
151
212
  export * from './no-terminal-questions.js';
152
213
  /**
@@ -4,23 +4,97 @@ import { z } from 'zod';
4
4
  * scopes, ship kinds, ship statuses, lease locations, selector kinds, delivery
5
5
  * states and event types. Core and console use the same words.
6
6
  */
7
- /** A permission of a ship, stored on the server with the ship and checked before every call. */
8
- export const SCOPES = ['messages:send', 'messages:receive', 'fleet:read', 'fleet:manage', 'crew:assign', 'crew:run', 'labels:define', 'labels:assign', 'fleet:network'];
7
+ /**
8
+ * A core scope: a permission of a ship, stored on the server with the ship
9
+ * and checked by core before every call. `messages:force` sends a forced
10
+ * message, one that comes first (decision 0040); `fleet:on-behalf` reads on
11
+ * behalf of a named ship (decision 0034); `scopes:declare` takes up a
12
+ * plugin namespace and `scopes:grant` grants and revokes on a live ship
13
+ * (decision 0046).
14
+ */
15
+ export const SCOPES = [
16
+ 'messages:send',
17
+ 'messages:receive',
18
+ 'messages:force',
19
+ 'messages:resend',
20
+ 'fleet:read',
21
+ 'fleet:commission',
22
+ 'fleet:manage',
23
+ 'crew:assign',
24
+ 'crew:run',
25
+ 'labels:define',
26
+ 'labels:assign',
27
+ 'fleet:network',
28
+ 'fleet:on-behalf',
29
+ 'scopes:declare',
30
+ 'scopes:grant',
31
+ ];
9
32
  export const scopeSchema = z.enum(SCOPES);
33
+ /** What each core scope allows, on one line (decision 0046). */
34
+ export const CORE_SCOPE_DESCRIPTIONS = {
35
+ 'messages:send': 'Send, answer and ask other ships',
36
+ 'messages:receive': 'Receive and confirm the deliveries to its own ship',
37
+ 'messages:force': 'Send a forced message, which comes first',
38
+ 'messages:resend': 'Resend or dismiss a stuck delivery of a message its ship reads',
39
+ 'fleet:read': 'Read ships, timelines, messages, labels, events and fleet-wide views',
40
+ 'fleet:commission': 'Commission agent ships, granting only what its ship may grant',
41
+ 'fleet:manage': 'Rename, release, recrew and retire the ships it manages; starting prompts, pings, crew requests and worktree clears',
42
+ 'crew:assign': 'Assign crew requests to trierarchs and explain why none fits',
43
+ 'crew:run': 'Crew the ships whose crew requests are assigned to its ship',
44
+ 'labels:define': 'Define labels, change their values and declare network rules on them',
45
+ 'labels:assign': 'Assign and unassign the values of labels its ship owns',
46
+ 'fleet:network': "The networking plugin's calls: the fleet's network rules",
47
+ 'fleet:on-behalf': "Read on behalf of a named ship, with that ship's read reach",
48
+ 'scopes:declare': 'Take up one plugin namespace and declare its scopes',
49
+ 'scopes:grant': 'Grant and revoke scopes on a live ship, within what its ship may grant',
50
+ };
51
+ /** The namespaces core reserves and enforces; every other one is a plugin's (decision 0046). */
52
+ export const CORE_NAMESPACES = ['messages', 'fleet', 'crew', 'labels', 'scopes'];
53
+ /** A namespace or an action: lowercase letters, digits and hyphens, starting with a letter, 1 to 32 characters (decision 0046). */
54
+ const SCOPE_PART = '[a-z][a-z0-9-]{0,31}';
55
+ export const SCOPE_NAMESPACE_PATTERN = new RegExp(`^${SCOPE_PART}$`);
56
+ export const SCOPE_NAME_PATTERN = new RegExp(`^${SCOPE_PART}:${SCOPE_PART}$`);
57
+ /** The most scopes a plugin declares in its namespace (decision 0046). */
58
+ export const NAMESPACE_SCOPES_MAX = 20;
59
+ /** The longest one-line description of a declared scope. */
60
+ export const SCOPE_DESCRIPTION_MAX_LENGTH = 200;
61
+ /** Whether the namespace is one core reserves. */
62
+ export function isCoreNamespace(namespace) {
63
+ return CORE_NAMESPACES.some((core) => core === namespace);
64
+ }
65
+ /**
66
+ * Any scope a ship may hold (decision 0046): `<namespace>:<action>`, a core
67
+ * scope when its namespace is a core one, else a plugin's.
68
+ */
69
+ export const scopeNameSchema = z
70
+ .string()
71
+ .regex(SCOPE_NAME_PATTERN, 'A scope is <namespace>:<action>')
72
+ .refine((scope) => !isCoreNamespace(scope.slice(0, scope.indexOf(':'))) || scopeSchema.safeParse(scope).success, 'No such core scope');
10
73
  /**
11
74
  * The scopes commissioning may add to an agent ship, beside sending and
12
- * receiving, which every agent ship has (ADR 0002). `crew:assign` writes crew
75
+ * receiving, which every agent ship has (ADR 0002). `messages:resend`
76
+ * resends or dismisses a stuck delivery; `fleet:commission` commissions
77
+ * agent ships; `fleet:manage` manages the ships in its manage reach (decision
78
+ * 0046). `crew:assign` writes crew
13
79
  * request assignments; `crew:run` crews the ships whose requests are assigned
14
80
  * to its ship (decision 0029). `labels:define` defines labels and changes
15
81
  * their values; `labels:assign` assigns and unassigns the labels its ship owns
16
82
  * (decision 0031). `fleet:network` sets the fleet's network rules (decision
17
- * 0034).
83
+ * 0034). `fleet:on-behalf` reads on behalf of a named ship (decision 0034).
18
84
  */
19
- export const FLEET_SCOPES = ['fleet:read', 'fleet:manage', 'crew:assign', 'crew:run', 'labels:define', 'labels:assign', 'fleet:network'];
85
+ export const FLEET_SCOPES = ['messages:resend', 'fleet:read', 'fleet:commission', 'fleet:manage', 'crew:assign', 'crew:run', 'labels:define', 'labels:assign', 'fleet:network', 'fleet:on-behalf'];
20
86
  export const fleetScopeSchema = z.enum(FLEET_SCOPES);
21
- /** `argo` is the one ship of kind `operator` in a fleet; every other ship is an `agent`. */
22
- export const SHIP_KINDS = ['operator', 'agent', 'viewer'];
87
+ /**
88
+ * What a ship is (decision 0044): `argo` is the one `operator`, the console's
89
+ * door is the `viewer`, an `agent` is a session, a `person` a human's ship
90
+ * crewed by their own app or a chat, and an `app` an application or an
91
+ * outside party, crewed by its adapter.
92
+ */
93
+ export const SHIP_KINDS = ['operator', 'agent', 'viewer', 'person', 'app'];
23
94
  export const shipKindSchema = z.enum(SHIP_KINDS);
95
+ /** The kinds a commission makes; argo and the viewer ship come with the fleet. */
96
+ export const COMMISSIONED_SHIP_KINDS = ['agent', 'person', 'app'];
97
+ export const commissionedShipKindSchema = z.enum(COMMISSIONED_SHIP_KINDS);
24
98
  /** Where the session crewing a ship runs. `OTHER` carries a short description. */
25
99
  export const LOCATION_KINDS = ['DEVICE', 'CLOUD', 'SERVER', 'OTHER'];
26
100
  export const locationKindSchema = z.enum(LOCATION_KINDS);
@@ -58,6 +132,8 @@ export const deliveryStateSchema = z.enum(DELIVERY_STATES);
58
132
  export const EVENT_TYPES = [
59
133
  'FleetInitialised',
60
134
  'ShipCommissioned',
135
+ 'OwnerSet',
136
+ 'OwnerChanged',
61
137
  'ShipClaimed',
62
138
  'LeaseRevoked',
63
139
  'CredentialRevoked',
@@ -78,6 +154,7 @@ export const EVENT_TYPES = [
78
154
  'DeliveryDismissed',
79
155
  'ShipRenamed',
80
156
  'ShipReported',
157
+ 'StatementSet',
81
158
  'TurnReported',
82
159
  'SignInTicketIssued',
83
160
  'FleetLimitsChanged',
@@ -101,10 +178,16 @@ export const EVENT_TYPES = [
101
178
  'NetworkRulesDeclared',
102
179
  'NetworkPluginRegistered',
103
180
  'NetworkPluginUnregistered',
181
+ 'BuiltInRuleChanged',
182
+ 'ScopesDeclared',
183
+ 'ScopesChanged',
184
+ 'PluginConnected',
185
+ 'PluginDisconnected',
104
186
  ];
105
187
  export const eventTypeSchema = z.enum(EVENT_TYPES);
106
188
  export * from './argo-message.js';
107
189
  export * from './busy-wait.js';
190
+ export * from './core-version.js';
108
191
  export * from './mcp-url.js';
109
192
  export * from './no-terminal-questions.js';
110
193
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fleet/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fleet/index.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,4 @@
4
4
  * trierarch adds it to its first and every wake prompt, and the aeolus
5
5
  * plugin's crew skills say the same.
6
6
  */
7
- export declare const NO_TERMINAL_QUESTIONS = "No human reads this terminal. Never ask here; ask over the fleet. A question only the operator can answer goes to argo.";
7
+ export declare const NO_TERMINAL_QUESTIONS = "No human reads this terminal. Never ask here; ask over the fleet. A question only a human can answer goes to your ship's owner (argo when argo owns your ship).";
@@ -4,5 +4,5 @@
4
4
  * trierarch adds it to its first and every wake prompt, and the aeolus
5
5
  * plugin's crew skills say the same.
6
6
  */
7
- export const NO_TERMINAL_QUESTIONS = 'No human reads this terminal. Never ask here; ask over the fleet. A question only the operator can answer goes to argo.';
7
+ export const NO_TERMINAL_QUESTIONS = "No human reads this terminal. Never ask here; ask over the fleet. A question only a human can answer goes to your ship's owner (argo when argo owns your ship).";
8
8
  //# sourceMappingURL=no-terminal-questions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-terminal-questions.js","sourceRoot":"","sources":["../../src/fleet/no-terminal-questions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,yHAAyH,CAAC"}
1
+ {"version":3,"file":"no-terminal-questions.js","sourceRoot":"","sources":["../../src/fleet/no-terminal-questions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,iKAAiK,CAAC"}
@@ -7,5 +7,6 @@
7
7
  export * from './label-handle.js';
8
8
  export * from './payload.js';
9
9
  export * from './plain-http.js';
10
+ export * from './read-reach.js';
10
11
  export * from './ship-handle.js';
11
12
  export * from './sign-in.js';
@@ -7,6 +7,7 @@
7
7
  export * from './label-handle.js';
8
8
  export * from './payload.js';
9
9
  export * from './plain-http.js';
10
+ export * from './read-reach.js';
10
11
  export * from './ship-handle.js';
11
12
  export * from './sign-in.js';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Whether the caller reads the ship whole, rather than its name, type and status only (decision 0034). */
2
+ export declare function isInReadReach<Ship extends object>(ship: Ship): ship is Exclude<Ship, {
3
+ isInReadReach: false;
4
+ }>;
@@ -0,0 +1,5 @@
1
+ /** Whether the caller reads the ship whole, rather than its name, type and status only (decision 0034). */
2
+ export function isInReadReach(ship) {
3
+ return !('isInReadReach' in ship);
4
+ }
5
+ //# sourceMappingURL=read-reach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-reach.js","sourceRoot":"","sources":["../../src/rules/read-reach.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,MAAM,UAAU,aAAa,CAAsB,IAAU;IAC3D,OAAO,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -50,13 +50,19 @@ export declare const consoleSessionOutputSchema: z.ZodObject<{
50
50
  scopes: z.ZodArray<z.ZodEnum<{
51
51
  "messages:send": "messages:send";
52
52
  "messages:receive": "messages:receive";
53
+ "messages:force": "messages:force";
54
+ "messages:resend": "messages:resend";
53
55
  "fleet:read": "fleet:read";
56
+ "fleet:commission": "fleet:commission";
54
57
  "fleet:manage": "fleet:manage";
55
58
  "crew:assign": "crew:assign";
56
59
  "crew:run": "crew:run";
57
60
  "labels:define": "labels:define";
58
61
  "labels:assign": "labels:assign";
59
62
  "fleet:network": "fleet:network";
63
+ "fleet:on-behalf": "fleet:on-behalf";
64
+ "scopes:declare": "scopes:declare";
65
+ "scopes:grant": "scopes:grant";
60
66
  }>>;
61
67
  }, z.core.$strip>;
62
68
  export type ConsoleSessionOutput = z.infer<typeof consoleSessionOutputSchema>;
@@ -165,6 +165,8 @@ export declare const assignedCrewRequestsOutputSchema: z.ZodArray<z.ZodObject<{
165
165
  releasing: "releasing";
166
166
  }>>;
167
167
  isFinal: z.ZodBoolean;
168
+ ownerShipId: z.ZodNullable<z.ZodType<`shp_${string}`, unknown, z.core.$ZodTypeInternals<`shp_${string}`, unknown>>>;
169
+ ownerName: z.ZodNullable<z.ZodString>;
168
170
  }, z.core.$strip>>;
169
171
  /**
170
172
  * Input of `fleet.explainCrewRequest` (crew:assign): why no trierarch can
@@ -99,6 +99,9 @@ export const assignedCrewRequestsOutputSchema = z.array(z.object({
99
99
  status: crewStatusSchema.nullable(),
100
100
  /** Whether its crew is final (decision 0029): kept whatever status follows, cleared on every new settings version. */
101
101
  isFinal: z.boolean(),
102
+ /** Its ship's owner as it is now, by id and name, where the trierarch sends its trouble (decision 0045); both null for a ship with none. */
103
+ ownerShipId: idSchema('ship').nullable(),
104
+ ownerName: z.string().nullable(),
102
105
  }));
103
106
  /**
104
107
  * Input of `fleet.explainCrewRequest` (crew:assign): why no trierarch can
@@ -1 +1 @@
1
- {"version":3,"file":"crew-request.js","sourceRoot":"","sources":["../../src/schemas/crew-request.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crew-request.js","sourceRoot":"","sources":["../../src/schemas/crew-request.ts"],"names":[],"mappings":"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"}