@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.
- package/dist/fleet/core-version.d.ts +20 -0
- package/dist/fleet/core-version.js +59 -0
- package/dist/fleet/core-version.js.map +1 -0
- package/dist/fleet/index.d.ts +70 -9
- package/dist/fleet/index.js +90 -7
- package/dist/fleet/index.js.map +1 -1
- package/dist/fleet/no-terminal-questions.d.ts +1 -1
- package/dist/fleet/no-terminal-questions.js +1 -1
- package/dist/fleet/no-terminal-questions.js.map +1 -1
- package/dist/rules/index.d.ts +1 -0
- package/dist/rules/index.js +1 -0
- package/dist/rules/index.js.map +1 -1
- package/dist/rules/read-reach.d.ts +4 -0
- package/dist/rules/read-reach.js +5 -0
- package/dist/rules/read-reach.js.map +1 -0
- package/dist/schemas/console.d.ts +6 -0
- package/dist/schemas/crew-request.d.ts +2 -0
- package/dist/schemas/crew-request.js +3 -0
- package/dist/schemas/crew-request.js.map +1 -1
- package/dist/schemas/delivery.d.ts +79 -4
- package/dist/schemas/delivery.js +43 -5
- package/dist/schemas/delivery.js.map +1 -1
- package/dist/schemas/fleet.d.ts +72 -37
- package/dist/schemas/fleet.js +31 -9
- package/dist/schemas/fleet.js.map +1 -1
- package/dist/schemas/follow.d.ts +8 -0
- package/dist/schemas/history.d.ts +232 -19
- package/dist/schemas/history.js +20 -3
- package/dist/schemas/history.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -0
- package/dist/schemas/index.js +2 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/message.d.ts +1 -0
- package/dist/schemas/message.js +2 -0
- package/dist/schemas/message.js.map +1 -1
- package/dist/schemas/needs-attention.d.ts +0 -150
- package/dist/schemas/needs-attention.js +1 -33
- package/dist/schemas/needs-attention.js.map +1 -1
- package/dist/schemas/network.d.ts +319 -12
- package/dist/schemas/network.js +84 -15
- package/dist/schemas/network.js.map +1 -1
- package/dist/schemas/scopes.d.ts +56 -0
- package/dist/schemas/scopes.js +35 -0
- package/dist/schemas/scopes.js.map +1 -0
- package/dist/schemas/ship.d.ts +2 -0
- package/dist/schemas/ship.js +7 -0
- package/dist/schemas/ship.js.map +1 -1
- package/dist/schemas/statement.d.ts +182 -0
- package/dist/schemas/statement.js +114 -0
- package/dist/schemas/statement.js.map +1 -0
- 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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"}
|
package/dist/fleet/index.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
8
|
-
|
|
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). `
|
|
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
|
-
/**
|
|
42
|
-
|
|
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
|
/**
|
package/dist/fleet/index.js
CHANGED
|
@@ -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
|
-
/**
|
|
8
|
-
|
|
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). `
|
|
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
|
-
/**
|
|
22
|
-
|
|
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
|
/**
|
package/dist/fleet/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fleet/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH
|
|
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
|
|
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 =
|
|
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,
|
|
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"}
|
package/dist/rules/index.d.ts
CHANGED
package/dist/rules/index.js
CHANGED
package/dist/rules/index.js.map
CHANGED
|
@@ -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 @@
|
|
|
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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"}
|