@aeolus-fleet/trierarch 0.18.0 → 0.19.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 (70) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -11
  3. package/dist/adapters/claude-code.d.ts +3 -3
  4. package/dist/adapters/claude-code.js.map +1 -1
  5. package/dist/adapters/codex.d.ts +3 -3
  6. package/dist/adapters/codex.js.map +1 -1
  7. package/dist/adapters/flags.d.ts +2 -2
  8. package/dist/adapters/flags.js +2 -2
  9. package/dist/adapters/git-workspace.js +1 -1
  10. package/dist/adapters/harnesses.d.ts +4 -4
  11. package/dist/adapters/harnesses.js +2 -2
  12. package/dist/adapters/harnesses.js.map +1 -1
  13. package/dist/adapters/json-state.d.ts +6 -4
  14. package/dist/adapters/json-state.js +21 -21
  15. package/dist/adapters/json-state.js.map +1 -1
  16. package/dist/adapters/rest-fleet.d.ts +4 -3
  17. package/dist/adapters/rest-fleet.js +20 -13
  18. package/dist/adapters/rest-fleet.js.map +1 -1
  19. package/dist/adapters/service.js +1 -1
  20. package/dist/adapters/style.d.ts +3 -3
  21. package/dist/adapters/style.js +1 -2
  22. package/dist/adapters/style.js.map +1 -1
  23. package/dist/cli/config-check.d.ts +3 -3
  24. package/dist/cli/config-check.js +1 -1
  25. package/dist/cli/config-check.js.map +1 -1
  26. package/dist/cli/init.d.ts +2 -2
  27. package/dist/cli/init.js +1 -1
  28. package/dist/cli/init.js.map +1 -1
  29. package/dist/cli/list.d.ts +4 -3
  30. package/dist/cli/list.js +1 -1
  31. package/dist/cli/list.js.map +1 -1
  32. package/dist/cli/main.js +2 -2
  33. package/dist/cli/main.js.map +1 -1
  34. package/dist/cli/run.d.ts +12 -7
  35. package/dist/cli/run.js +44 -24
  36. package/dist/cli/run.js.map +1 -1
  37. package/dist/cli/status.d.ts +3 -2
  38. package/dist/cli/status.js +5 -4
  39. package/dist/cli/status.js.map +1 -1
  40. package/dist/core/check-settings.d.ts +25 -0
  41. package/dist/core/check-settings.js +52 -0
  42. package/dist/core/check-settings.js.map +1 -0
  43. package/dist/core/entry.d.ts +18 -30
  44. package/dist/core/entry.js +3 -1
  45. package/dist/core/entry.js.map +1 -1
  46. package/dist/core/handle-delivery.d.ts +9 -14
  47. package/dist/core/handle-delivery.js +4 -133
  48. package/dist/core/handle-delivery.js.map +1 -1
  49. package/dist/core/options-schema.d.ts +7 -0
  50. package/dist/core/options-schema.js +10 -0
  51. package/dist/core/options-schema.js.map +1 -0
  52. package/dist/core/ports.d.ts +48 -8
  53. package/dist/core/reconciler.d.ts +32 -12
  54. package/dist/core/reconciler.js +107 -23
  55. package/dist/core/reconciler.js.map +1 -1
  56. package/dist/core/report-self.d.ts +16 -0
  57. package/dist/core/report-self.js +41 -0
  58. package/dist/core/report-self.js.map +1 -0
  59. package/dist/core/run-pass.d.ts +8 -7
  60. package/dist/core/run-pass.js +113 -69
  61. package/dist/core/run-pass.js.map +1 -1
  62. package/dist/index.d.ts +2 -2
  63. package/dist/index.js.map +1 -1
  64. package/package.json +7 -5
  65. package/dist/core/answers.d.ts +0 -4
  66. package/dist/core/answers.js +0 -32
  67. package/dist/core/answers.js.map +0 -1
  68. package/dist/core/check-want.d.ts +0 -32
  69. package/dist/core/check-want.js +0 -80
  70. package/dist/core/check-want.js.map +0 -1
@@ -1,25 +1,27 @@
1
1
  import { putEntry, removeEntry, withState } from './entry.js';
2
2
  import { reconcile } from './reconciler.js';
3
+ const NEXT_AFTER_FAILURE = 'the next pass tries again; aeolus-trierarch status and list show where it stands';
3
4
  export function createRunPass(deps) {
4
5
  return async () => {
5
- const loaded = await deps.state.load();
6
- const observed = await observe(loaded, deps);
7
- const reconciled = reconcile(loaded, { observed, now: deps.clock.now(), configuration: deps.setup.configuration });
8
- let state = reconciled.state;
9
- await deps.state.save(state);
10
- for (const action of reconciled.actions) {
11
- try {
6
+ let state = await deps.state.load();
7
+ let action;
8
+ try {
9
+ const requests = await deps.fleet.assignedRequests();
10
+ const observed = await observe(state, deps);
11
+ const reconciled = reconcile(state, { requests, observed, now: deps.clock.now(), configuration: deps.setup.configuration });
12
+ state = reconciled.state;
13
+ await deps.state.save(state);
14
+ for (action of reconciled.actions) {
12
15
  state = await carryOut(state, { action, deps });
13
16
  }
14
- catch (error) {
15
- const reason = error instanceof Error ? error.message : String(error);
16
- if (action.kind === 'notify') {
17
- deps.logger.warn(`A notice to ${action.message.to} failed: ${reason}; ${NEXT_AFTER_FAILURE}`);
18
- }
19
- else {
20
- log(deps, { ...about(state, { shipId: action.shipId, action: action.kind }), outcome: `failed: ${reason}`, next: NEXT_AFTER_FAILURE });
21
- }
22
- return;
17
+ }
18
+ catch (error) {
19
+ const reason = error instanceof Error ? error.message : String(error);
20
+ if (action === undefined || action.kind === 'argo' || action.kind === 'status' || action.kind === 'refuse') {
21
+ deps.logger.warn(`The pass failed${action === undefined ? '' : ` at ${action.kind}`}: ${reason}; ${NEXT_AFTER_FAILURE}`);
22
+ }
23
+ else {
24
+ log(deps, { ...about(state, { shipId: action.shipId, action: action.kind }), outcome: `failed: ${reason}`, next: NEXT_AFTER_FAILURE });
23
25
  }
24
26
  }
25
27
  };
@@ -48,7 +50,6 @@ async function observe(state, deps) {
48
50
  }
49
51
  return { sessions, worktrees, ships };
50
52
  }
51
- const NEXT_AFTER_FAILURE = 'the next pass tries again; aeolus-trierarch status and list show where it stands';
52
53
  function log(deps, logged) {
53
54
  deps.logger.action({ time: deps.clock.now(), ...logged });
54
55
  }
@@ -59,15 +60,36 @@ function about(state, of) {
59
60
  }
60
61
  async function carryOut(state, at) {
61
62
  const { action, deps } = at;
62
- if (action.kind === 'notify') {
63
- await deps.fleet.send(action.message);
64
- return state;
65
- }
66
- if (action.kind === 'stop') {
67
- await deps.processes.stop(action.shipId);
68
- log(deps, { ...about(state, { shipId: action.shipId, action: 'stop' }), outcome: 'its session stopped' });
69
- return state;
63
+ switch (action.kind) {
64
+ case 'argo':
65
+ await deps.fleet.reportToArgo(action.report);
66
+ return state;
67
+ case 'status':
68
+ await deps.fleet.writeStatus(action.shipId, action.status);
69
+ return state;
70
+ case 'refuse':
71
+ return refuse(state, { action, deps });
72
+ case 'confirm':
73
+ await deps.fleet.confirmRelease(action.shipId);
74
+ log(deps, { shipId: action.shipId, action: 'confirm', outcome: 'its request removed; this trierarch did not crew it' });
75
+ return state;
76
+ case 'stop':
77
+ await deps.processes.stop(action.shipId);
78
+ log(deps, { ...about(state, { shipId: action.shipId, action: 'stop' }), outcome: 'its session stopped' });
79
+ return state;
80
+ case 'forget':
81
+ return forget(state, { entry: action.entry, deps });
82
+ case 'release':
83
+ return release(state, { shipId: action.shipId, deps });
84
+ case 'crew':
85
+ case 'launch':
86
+ case 'wake':
87
+ case 'report':
88
+ return carryOutForEntry(state, { action, deps });
70
89
  }
90
+ }
91
+ async function carryOutForEntry(state, at) {
92
+ const { action, deps } = at;
71
93
  const entry = state.entries[action.shipId];
72
94
  if (entry === undefined) {
73
95
  return state;
@@ -104,19 +126,16 @@ async function carryOut(state, at) {
104
126
  }
105
127
  return state;
106
128
  }
107
- case 'release':
108
- return release(state, { entry, deps });
109
- case 'drop':
110
- return drop(state, { entry, deps });
111
129
  }
112
130
  }
113
131
  /**
114
- * Crews the ship: gets its starting prompt (fleet:crew) and registers with the
115
- * secret, so the session never sees it; makes the workspace, writes the
116
- * folder's identity (with its squadron) and starts the harness. A resumed crew
117
- * whose ship is crewed lost its register reply: the trierarch releases the
118
- * ship and crews it again. A ship crewed by another session meanwhile, or gone,
119
- * is dropped.
132
+ * Crews the ship (crew:run): gets its starting prompt and registers with the
133
+ * secret, so the session never sees it; makes the workspace (or uses the one
134
+ * it has), writes the folder's identity (with its squadron) and starts the
135
+ * harness, writing status crewing, then running. A resumed crew whose ship is
136
+ * crewed holds the ship by its own lease, or lost its register reply: the
137
+ * trierarch releases the ship and crews it again. A ship another session
138
+ * crews before its crew is left; a ship gone is forgotten.
120
139
  */
121
140
  async function crew(state, at) {
122
141
  const { entry, isResumed, deps } = at;
@@ -125,12 +144,19 @@ async function crew(state, at) {
125
144
  return state;
126
145
  }
127
146
  const ship = await deps.fleet.ship(entry.shipId);
128
- if (ship.kind === 'notFound' || ship.kind === 'retired' || (ship.kind === 'crewed' && !isResumed)) {
129
- return drop(state, { entry, deps });
147
+ if (ship.kind === 'notFound' || ship.kind === 'retired') {
148
+ return forget(state, { entry, deps });
149
+ }
150
+ if (ship.kind === 'crewed' && !isResumed) {
151
+ const next = removeEntry(state, entry.shipId);
152
+ await deps.state.save(next);
153
+ log(deps, { shipId: entry.shipId, shipName: ship.name, action: 'leave', outcome: 'crewed by another session, so the trierarch leaves it' });
154
+ return next;
130
155
  }
131
156
  if (ship.kind === 'crewed') {
132
157
  await deps.fleet.release(entry.shipId);
133
158
  }
159
+ await deps.fleet.writeStatus(entry.shipId, 'crewing');
134
160
  const { secret } = await deps.fleet.getStartingPrompt(entry.shipId);
135
161
  const { crewToken } = await deps.fleet.register({ shipId: entry.shipId, secret });
136
162
  const { folder } = await deps.workspace.prepare({ shipId: entry.shipId, shipName: ship.name, workspace: entry.workspace });
@@ -151,49 +177,70 @@ async function crew(state, at) {
151
177
  const now = deps.clock.now();
152
178
  const next = putEntry(state, { ...withState(entry, { state: 'running', now }), shipName: ship.name, folder, hasStarted: true });
153
179
  await deps.state.save(next);
180
+ await deps.fleet.writeStatus(entry.shipId, 'running');
154
181
  log(deps, { shipId: entry.shipId, shipName: ship.name, action: 'crew', outcome: `crewed, ${entry.harness} started in ${folder}` });
155
- await deps.fleet.send(notice(entry, { name: 'running', now }));
156
182
  return next;
157
183
  }
158
- /** Release asked by a message: the lease ends whatever the worktree holds, then the workspace, then the answer. */
184
+ /**
185
+ * Its request was removed (row 7): the session stops, the lease ends
186
+ * whatever the worktree holds, then the workspace; only then does the
187
+ * trierarch confirm, and the request goes.
188
+ */
159
189
  async function release(state, at) {
160
- const { entry, deps } = at;
161
- await deps.processes.stop(entry.shipId);
162
- await deps.fleet.release(entry.shipId);
163
- const finished = await finishWorkspace(state, { entry, deps, isForced: entry.release?.isForced ?? false });
164
- const next = removeEntry(finished.state, entry.shipId);
165
- await deps.state.save(next);
166
- log(deps, { ...about(state, { shipId: entry.shipId, action: 'release' }), outcome: `released, ${describeWorkspace(entry, finished)}` });
167
- if (entry.release !== undefined) {
168
- const { messageId, sender } = entry.release;
169
- await deps.fleet.send({
170
- to: sender,
171
- inReplyTo: messageId,
172
- name: 'released',
173
- payload: { shipId: entry.shipId, workspace: finished.workspace, ...(finished.path !== undefined && { path: finished.path }) },
174
- idempotencyKey: `trierarch:${messageId}:released`,
175
- });
190
+ const { shipId, deps } = at;
191
+ const entry = state.entries[shipId];
192
+ if (entry === undefined) {
193
+ return state;
194
+ }
195
+ await deps.processes.stop(shipId);
196
+ if ((await deps.fleet.ship(shipId)).kind === 'crewed') {
197
+ await deps.fleet.release(shipId);
176
198
  }
199
+ const finished = await finishWorkspace(state, { entry, deps });
200
+ const next = removeEntry(finished.state, shipId);
201
+ await deps.state.save(next);
202
+ await deps.fleet.confirmRelease(shipId);
203
+ log(deps, { ...about(state, { shipId, action: 'release' }), outcome: `released, ${describeWorkspace(entry, finished)}` });
177
204
  return next;
178
205
  }
179
- /** The lease ended elsewhere (released, re-crewed or retired): never crewed again, its requester told. */
180
- async function drop(state, at) {
206
+ /**
207
+ * Its request is no longer assigned here, as when its ship is retired (gap
208
+ * rule 2): the session stops and its identity goes, but nothing the trierarch
209
+ * cannot tell is clean goes: its worktree stays, reported as an orphan.
210
+ */
211
+ async function forget(state, at) {
181
212
  const { entry, deps } = at;
182
213
  await deps.processes.stop(entry.shipId);
183
- const finished = await finishWorkspace(state, { entry, deps, isForced: false });
184
- const next = removeEntry(finished.state, entry.shipId);
214
+ if (entry.folder !== undefined) {
215
+ await harnessOf(entry, deps)?.removeIdentity(entry.folder);
216
+ }
217
+ const next = removeEntry(state, entry.shipId);
185
218
  await deps.state.save(next);
186
- log(deps, { ...about(state, { shipId: entry.shipId, action: 'drop' }), outcome: 'its lease ended elsewhere, so it is no longer crewed here' });
187
- await deps.fleet.send(notice(entry, { name: 'leaseEnded', now: deps.clock.now() }));
219
+ log(deps, { shipId: entry.shipId, ...(entry.shipName !== undefined && { shipName: entry.shipName }), action: 'forget', outcome: 'its request is no longer assigned here, so its session stopped' });
220
+ return next;
221
+ }
222
+ /** Tells argo, once per settings version, that this trierarch cannot crew them. */
223
+ async function refuse(state, at) {
224
+ const { action, deps } = at;
225
+ const ship = await deps.fleet.ship(action.shipId);
226
+ const name = ship.kind === 'awaitingCrew' || ship.kind === 'crewed' ? ship.name : action.shipId;
227
+ const { field, reason } = action.refusal;
228
+ await deps.fleet.reportToArgo({
229
+ text: `${name} (${action.shipId}): this trierarch cannot crew settings version ${String(action.settingsVersion)}: ${field === undefined ? reason : `${field}: ${reason}`}`,
230
+ idempotencyKey: `trierarch:refused:${action.shipId}:${String(action.settingsVersion)}`,
231
+ });
232
+ const next = { ...state, refused: { ...state.refused, [action.shipId]: action.settingsVersion } };
233
+ await deps.state.save(next);
234
+ deps.logger.warn(`Cannot crew ${name} (${action.shipId}), settings version ${String(action.settingsVersion)}: ${reason}`);
188
235
  return next;
189
236
  }
190
237
  /**
191
238
  * The workspace of an entry that ends: a worktree the trierarch made is
192
- * removed when clean (or forced), and kept and reported when not; a
193
- * configured folder is never removed. The identity goes either way.
239
+ * removed when clean, and kept and reported when not; a configured folder is
240
+ * never removed. The identity goes either way.
194
241
  */
195
242
  async function finishWorkspace(state, at) {
196
- const { entry, deps, isForced } = at;
243
+ const { entry, deps } = at;
197
244
  const { folder } = entry;
198
245
  if (folder === undefined) {
199
246
  return { state, workspace: 'removed' };
@@ -202,7 +249,7 @@ async function finishWorkspace(state, at) {
202
249
  if (entry.workspace.kind === 'folder') {
203
250
  return { state, workspace: 'kept', path: folder };
204
251
  }
205
- if (isForced || (await deps.workspace.isClean(folder))) {
252
+ if (await deps.workspace.isClean(folder)) {
206
253
  await deps.workspace.remove(folder);
207
254
  return { state, workspace: 'removed' };
208
255
  }
@@ -217,7 +264,7 @@ function describeWorkspace(entry, finished) {
217
264
  return entry.workspace.kind === 'folder' ? `its folder kept: ${finished.path ?? ''}` : `its worktree kept with changes: ${finished.path ?? ''}`;
218
265
  }
219
266
  /**
220
- * The adapter of the entry's harness. A want names only a harness the
267
+ * The adapter of the entry's harness. Settings name only a harness the
221
268
  * configuration offers, and the trierarch starts with an adapter for each, so
222
269
  * none missing is a setup gone wrong: logged, and the entry left as it is.
223
270
  */
@@ -228,7 +275,4 @@ function harnessOf(entry, deps) {
228
275
  }
229
276
  return harness;
230
277
  }
231
- function notice(entry, at) {
232
- return { to: entry.requester, name: at.name, payload: { shipId: entry.shipId }, idempotencyKey: `trierarch:${at.name}:${entry.shipId}:${at.now.toISOString()}` };
233
- }
234
278
  //# sourceMappingURL=run-pass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-pass.js","sourceRoot":"","sources":["../../src/core/run-pass.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-pass.js","sourceRoot":"","sources":["../../src/core/run-pass.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** The trierarch package's entry: its core, for the command and for whoever tests it. */
2
- export { createHandleDelivery, type HandleDelivery, type HandleDeliveryDeps } from './core/handle-delivery.js';
2
+ export { createHandleDelivery, type HandleDelivery } from './core/handle-delivery.js';
3
3
  export { createRunPass, type RunPass, type RunPassDeps } from './core/run-pass.js';
4
4
  export { createUninstall, type Uninstall } from './core/uninstall.js';
5
- export { EMPTY_STATE, type Entry, type KeptWorktree, type Outgoing, type TrierarchState } from './core/entry.js';
5
+ export { EMPTY_STATE, type Entry, type EntryState, type KeptWorktree, type TrierarchState } from './core/entry.js';
6
6
  export type * from './core/ports.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,oBAAoB,EAAgD,MAAM,2BAA2B,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAkC,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAqE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,oBAAoB,EAAuB,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,aAAa,EAAkC,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAuE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aeolus-fleet/trierarch",
3
- "version": "0.18.0",
4
- "description": "Aeolus trierarch: keeps the ships on its wanted list crewed on its machine, as a ship of the fleet with fleet:crew.",
3
+ "version": "0.19.0",
4
+ "description": "Aeolus trierarch: keeps the ships whose crew requests are assigned to it crewed on its machine, as a ship of the fleet with crew:run.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "repository": {
@@ -27,13 +27,15 @@
27
27
  ],
28
28
  "scripts": {
29
29
  "build": "tsc --project tsconfig.build.json",
30
- "typecheck": "tsc --project tsconfig.json"
30
+ "typecheck": "tsc --project tsconfig.json",
31
+ "prepack": "cp ../../LICENSE LICENSE",
32
+ "postpack": "rm LICENSE"
31
33
  },
32
34
  "dependencies": {
33
- "@aeolus-fleet/common": "0.18.0",
35
+ "@aeolus-fleet/common": "0.19.0",
34
36
  "zod": "^4.6.5"
35
37
  },
36
38
  "devDependencies": {
37
- "@aeolus-fleet/core": "0.18.0"
39
+ "@aeolus-fleet/core": "0.19.0"
38
40
  }
39
41
  }
@@ -1,4 +0,0 @@
1
- import type { TrierarchState } from './entry.js';
2
- import type { TrierarchSetup } from './ports.js';
3
- export declare function describedOf(setup: TrierarchSetup, state: TrierarchState): Record<string, unknown>;
4
- export declare function listedOf(state: TrierarchState): Record<string, unknown>;
@@ -1,32 +0,0 @@
1
- /**
2
- * What describe and list answer (docs/trierarch.md, "The protocol"), from the
3
- * configuration and the saved state.
4
- */
5
- /** A harness's options as a JSON Schema: each option one of its value names, with its default when it has one. */
6
- function optionsSchemaOf(harness) {
7
- const properties = Object.fromEntries(Object.entries(harness.options).map(([name, option]) => [name, { enum: Object.keys(option.values), ...(option.default !== undefined && { default: option.default }) }]));
8
- return { type: 'object', properties, additionalProperties: false };
9
- }
10
- export function describedOf(setup, state) {
11
- const { configuration, version, adapterFlags } = setup;
12
- return {
13
- harnesses: Object.entries(configuration.harnesses).map(([harness, settings]) => ({
14
- harness,
15
- options: optionsSchemaOf(settings),
16
- flags: settings.flags,
17
- adapterFlags: adapterFlags[harness] ?? [],
18
- })),
19
- workspaces: { repositories: Object.keys(configuration.repositories), folders: Object.keys(configuration.folders) },
20
- caps: configuration.caps,
21
- kept: state.kept,
22
- version,
23
- };
24
- }
25
- export function listedOf(state) {
26
- return {
27
- ships: Object.values(state.entries).map((entry) => ({ shipId: entry.shipId, harness: entry.harness, state: entry.state, since: entry.since, restarts: entry.exits.length })),
28
- kept: state.kept,
29
- orphans: state.orphans.map((path) => ({ path })),
30
- };
31
- }
32
- //# sourceMappingURL=answers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"answers.js","sourceRoot":"","sources":["../../src/core/answers.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH,kHAAkH;AAClH,SAAS,eAAe,CAAC,OAAoD;IAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACnC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CACxK,CAAC;IACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAqB,EAAE,KAAqB;IACtE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACvD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/E,OAAO;YACP,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE;SAC1C,CAAC,CAAC;QACH,UAAU,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;QAClH,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAqB;IAC5C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5K,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;KACjD,CAAC;AACJ,CAAC"}
@@ -1,32 +0,0 @@
1
- import { type ShipId, type TrierarchConfiguration, type WantCommand } from '@aeolus-fleet/common';
2
- import type { Entry, TrierarchState } from './entry.js';
3
- import { type Result } from './shared/result.js';
4
- /** Why a want was refused: the field, when one is at fault, and a reason a requester can read. */
5
- export interface Refusal {
6
- readonly field?: string;
7
- readonly reason: string;
8
- }
9
- /** A want that parses and fits what the configuration offers, before the fleet is asked about its ship. */
10
- export interface CheckedWant {
11
- readonly want: WantCommand;
12
- readonly options: Readonly<Record<string, string>>;
13
- }
14
- /**
15
- * Checks a want against the protocol schema, the configuration (harness,
16
- * repository or folder, each option and its value) and the wanted list (the
17
- * ships cap, one ship per folder), naming the
18
- * field at fault. Anything unknown is refused (decision 0027).
19
- */
20
- export declare function checkWant(payload: unknown, context: {
21
- configuration: TrierarchConfiguration;
22
- state: TrierarchState;
23
- }): Result<CheckedWant, Refusal>;
24
- /** The field an issue names, as `options.model`, when it names one. */
25
- export declare function fieldOf(path: readonly PropertyKey[] | undefined): {
26
- field?: string;
27
- };
28
- /** A new entry for a checked want, wanted since now, for the ship that sent it. */
29
- export declare function newEntry(checked: CheckedWant, context: {
30
- requester: ShipId;
31
- now: Date;
32
- }): Entry;
@@ -1,80 +0,0 @@
1
- import { wantCommandSchema } from '@aeolus-fleet/common';
2
- import { err, ok } from './shared/result.js';
3
- /**
4
- * Checks a want against the protocol schema, the configuration (harness,
5
- * repository or folder, each option and its value) and the wanted list (the
6
- * ships cap, one ship per folder), naming the
7
- * field at fault. Anything unknown is refused (decision 0027).
8
- */
9
- export function checkWant(payload, context) {
10
- const parsed = wantCommandSchema.safeParse(payload);
11
- if (!parsed.success) {
12
- const [issue] = parsed.error.issues;
13
- return err({ ...fieldOf(issue?.path), reason: issue?.message ?? 'The want does not parse' });
14
- }
15
- const want = parsed.data;
16
- const { configuration, state } = context;
17
- const harness = configuration.harnesses[want.harness];
18
- if (harness === undefined) {
19
- return err({ field: 'harness', reason: `This trierarch offers no harness ${want.harness}` });
20
- }
21
- const workspaceRefusal = refusalOfWorkspace(want, context);
22
- if (workspaceRefusal !== undefined) {
23
- return err(workspaceRefusal);
24
- }
25
- const options = {};
26
- for (const [name, value] of Object.entries(want.options)) {
27
- const option = harness.options[name];
28
- if (option === undefined) {
29
- return err({ field: `options.${name}`, reason: `${want.harness} has no option ${name}` });
30
- }
31
- if (typeof value !== 'string' || !(value in option.values)) {
32
- return err({ field: `options.${name}`, reason: `${name} must be one of ${Object.keys(option.values).join(', ')}` });
33
- }
34
- options[name] = value;
35
- }
36
- if (Object.keys(state.entries).length >= configuration.caps.ships) {
37
- return err({ reason: `This trierarch keeps at most ${String(configuration.caps.ships)} ships` });
38
- }
39
- return ok({ want, options });
40
- }
41
- function refusalOfWorkspace(want, context) {
42
- const { configuration, state } = context;
43
- const { workspace } = want;
44
- switch (workspace.kind) {
45
- case 'worktree':
46
- return workspace.repository in configuration.repositories
47
- ? undefined
48
- : { field: 'workspace.repository', reason: `This trierarch offers no repository ${workspace.repository}` };
49
- case 'folder': {
50
- if (!(workspace.name in configuration.folders)) {
51
- return { field: 'workspace.name', reason: `This trierarch offers no folder ${workspace.name}` };
52
- }
53
- const crewing = Object.values(state.entries).find((entry) => entry.workspace.kind === 'folder' && entry.workspace.name === workspace.name);
54
- return crewing === undefined ? undefined : { field: 'workspace.name', reason: `The folder ${workspace.name} crews ${crewing.shipId} already: one folder crews one ship` };
55
- }
56
- }
57
- }
58
- /** The field an issue names, as `options.model`, when it names one. */
59
- export function fieldOf(path) {
60
- return path === undefined || path.length === 0 ? {} : { field: path.map(String).join('.') };
61
- }
62
- /** A new entry for a checked want, wanted since now, for the ship that sent it. */
63
- export function newEntry(checked, context) {
64
- const { want, options } = checked;
65
- return {
66
- shipId: want.shipId,
67
- harness: want.harness,
68
- workspace: want.workspace,
69
- ...(want.squadron !== undefined && { squadron: want.squadron }),
70
- ...(want.firstPrompt !== undefined && { firstPrompt: want.firstPrompt }),
71
- options,
72
- requester: context.requester,
73
- state: 'wanted',
74
- since: context.now.toISOString(),
75
- exits: [],
76
- hasStarted: false,
77
- wake: { waiting: 0, isPending: false },
78
- };
79
- }
80
- //# sourceMappingURL=check-want.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-want.js","sourceRoot":"","sources":["../../src/core/check-want.ts"],"names":[],"mappings":"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"}