@elaraai/e3-cli 1.0.79 → 1.0.80

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/README.md +99 -25
  2. package/dist/src/cli.js +49 -9
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/commands/budget.d.ts +32 -0
  5. package/dist/src/commands/budget.d.ts.map +1 -0
  6. package/dist/src/commands/budget.js +46 -0
  7. package/dist/src/commands/budget.js.map +1 -0
  8. package/dist/src/commands/call.d.ts +2 -1
  9. package/dist/src/commands/call.d.ts.map +1 -1
  10. package/dist/src/commands/call.js +5 -3
  11. package/dist/src/commands/call.js.map +1 -1
  12. package/dist/src/commands/compact.spec.js +7 -6
  13. package/dist/src/commands/compact.spec.js.map +1 -1
  14. package/dist/src/commands/history.d.ts +1 -0
  15. package/dist/src/commands/history.d.ts.map +1 -1
  16. package/dist/src/commands/history.js +30 -9
  17. package/dist/src/commands/history.js.map +1 -1
  18. package/dist/src/commands/logs.d.ts +2 -2
  19. package/dist/src/commands/logs.d.ts.map +1 -1
  20. package/dist/src/commands/logs.js +28 -28
  21. package/dist/src/commands/logs.js.map +1 -1
  22. package/dist/src/commands/logs.spec.js +4 -1
  23. package/dist/src/commands/logs.spec.js.map +1 -1
  24. package/dist/src/commands/mutate.d.ts +2 -1
  25. package/dist/src/commands/mutate.d.ts.map +1 -1
  26. package/dist/src/commands/mutate.js +42 -19
  27. package/dist/src/commands/mutate.js.map +1 -1
  28. package/dist/src/commands/reindex.d.ts +12 -0
  29. package/dist/src/commands/reindex.d.ts.map +1 -0
  30. package/dist/src/commands/reindex.js +67 -0
  31. package/dist/src/commands/reindex.js.map +1 -0
  32. package/dist/src/commands/repo.d.ts +4 -1
  33. package/dist/src/commands/repo.d.ts.map +1 -1
  34. package/dist/src/commands/repo.js +32 -16
  35. package/dist/src/commands/repo.js.map +1 -1
  36. package/dist/src/commands/run.d.ts +2 -1
  37. package/dist/src/commands/run.d.ts.map +1 -1
  38. package/dist/src/commands/run.js +15 -21
  39. package/dist/src/commands/run.js.map +1 -1
  40. package/dist/src/commands/set.d.ts.map +1 -1
  41. package/dist/src/commands/set.js +15 -15
  42. package/dist/src/commands/set.js.map +1 -1
  43. package/dist/src/commands/start.d.ts +2 -2
  44. package/dist/src/commands/start.d.ts.map +1 -1
  45. package/dist/src/commands/start.js +33 -27
  46. package/dist/src/commands/start.js.map +1 -1
  47. package/dist/src/commands/watch.d.ts +4 -2
  48. package/dist/src/commands/watch.d.ts.map +1 -1
  49. package/dist/src/commands/watch.js +35 -9
  50. package/dist/src/commands/watch.js.map +1 -1
  51. package/dist/src/commands/workspace.d.ts +25 -2
  52. package/dist/src/commands/workspace.d.ts.map +1 -1
  53. package/dist/src/commands/workspace.js +173 -21
  54. package/dist/src/commands/workspace.js.map +1 -1
  55. package/dist/src/format.d.ts +12 -0
  56. package/dist/src/format.d.ts.map +1 -1
  57. package/dist/src/format.js +19 -3
  58. package/dist/src/format.js.map +1 -1
  59. package/dist/src/path-resolver.d.ts.map +1 -1
  60. package/dist/src/path-resolver.js +3 -2
  61. package/dist/src/path-resolver.js.map +1 -1
  62. package/dist/src/utils.d.ts +15 -2
  63. package/dist/src/utils.d.ts.map +1 -1
  64. package/dist/src/utils.js +25 -7
  65. package/dist/src/utils.js.map +1 -1
  66. package/package.json +7 -7
  67. package/dist/src/commands/jobs.d.ts +0 -25
  68. package/dist/src/commands/jobs.d.ts.map +0 -1
  69. package/dist/src/commands/jobs.js +0 -39
  70. package/dist/src/commands/jobs.js.map +0 -1
@@ -8,8 +8,9 @@
8
8
  * Usage:
9
9
  * e3 mutate <repo> -w <ws> <record>.<mutation> [args...]
10
10
  *
11
- * A mutation is the only write door into a record: it runs a pure East reducer
12
- * server-side under optimistic concurrency and appends an audited commit. Each
11
+ * A mutation is the only write door into a record: it runs the mutation's pure
12
+ * East program server-side under optimistic concurrency and appends an audited
13
+ * commit. Each
13
14
  * positional argument is an .east literal or a .beast2/.json/.east file path,
14
15
  * parsed against the mutation's declared parameter type. Records are
15
16
  * workspace-scoped, so --workspace is required.
@@ -19,6 +20,7 @@ import { recordMutate, recordDescribe, LocalStorage, LocalTaskRunner, } from '@e
19
20
  import { workspaceRecordDescribe, workspaceRecordMutate, } from '@elaraai/e3-api-client';
20
21
  import { parseRepoLocation, formatError, exitError } from '../utils.js';
21
22
  import { encodeArg } from './call.js';
23
+ import { commandBudget, refuseRemoteBudget } from './budget.js';
22
24
  /** Split a `<record>.<mutation>` spec on its final dot. */
23
25
  function parseMutationSpec(spec) {
24
26
  const dot = spec.lastIndexOf('.');
@@ -32,7 +34,8 @@ function actor() {
32
34
  }
33
35
  /**
34
36
  * Render a terminal mutation outcome. Both the local `MutationOutcome` and the
35
- * remote `MutationResult.outcome` share these tags and payload field names.
37
+ * remote `MutationResult.outcome` share these tags and payload field names;
38
+ * a conflict's `detail` is the local optional string.
36
39
  */
37
40
  function renderOutcome(outcome) {
38
41
  const kind = outcome.kind;
@@ -40,8 +43,8 @@ function renderOutcome(outcome) {
40
43
  console.log(`Committed ${String(outcome.commitHash)}`);
41
44
  return;
42
45
  }
43
- // Forward any captured reducer stderr (present on failed/timed_out/too_large)
44
- // so its diagnostics reach the operator before we exit non-zero.
46
+ // Forward the program's stderr (present on failed and timed_out) so its
47
+ // diagnostics reach the operator before we exit non-zero.
45
48
  const stderr = String(outcome.stderr ?? '');
46
49
  if (stderr.trim()) {
47
50
  process.stderr.write(stderr);
@@ -49,18 +52,34 @@ function renderOutcome(outcome) {
49
52
  process.stderr.write('\n');
50
53
  }
51
54
  if (kind === 'failed')
52
- exitError(`Mutation reducer failed (exit code ${String(outcome.exitCode)})`);
55
+ exitError(`Mutation failed (exit code ${String(outcome.exitCode)})`);
53
56
  if (kind === 'invalid')
54
57
  exitError(String(outcome.message));
55
- if (kind === 'too_large')
56
- exitError(`New state too large (${String(outcome.bytes)} bytes > ${String(outcome.limit)} limit)`);
57
58
  if (kind === 'timed_out')
58
59
  exitError(`Mutation timed out after ${String(outcome.ms)}ms`);
59
- if (kind === 'conflict')
60
+ if (kind === 'conflict') {
61
+ // A lost compare-and-swap race is worth another try: another writer got
62
+ // there first. A write that disagreed with the state is not — it names
63
+ // the key, and the same write lands on the same state and disagrees again.
64
+ if (typeof outcome.detail === 'string') {
65
+ exitError(`Mutation conflicted: ${outcome.detail} — the write no longer matches the record; re-read it and resubmit`);
66
+ }
60
67
  exitError(`Mutation conflicted after ${String(outcome.attempts)} attempts; try again`);
68
+ }
61
69
  exitError(`Unknown mutation outcome '${kind}'`);
62
70
  }
63
- async function mutateLocal(repoPath, ws, record, mutation, rawArgs, verbose) {
71
+ /** Refuses the wrong number of arguments, saying what the one argument of a
72
+ * `patch` mutation is — the state's patch, which is the thing people reach
73
+ * for a row instead. */
74
+ function checkArity(mutation, mut, got) {
75
+ if (got === mut.argTypes.length)
76
+ return;
77
+ const what = mut.form === 'patch'
78
+ ? " — a patch mutation takes one argument, the record's patch (a .beast2/.json/.east file, or an .east literal)"
79
+ : '';
80
+ exitError(`Mutation '${mutation}' expects ${mut.argTypes.length} argument(s), got ${got}${what}`);
81
+ }
82
+ async function mutateLocal(repoPath, ws, record, mutation, rawArgs, budget, verbose) {
64
83
  const storage = new LocalStorage();
65
84
  const sig = await recordDescribe(storage, repoPath, ws, record);
66
85
  if (!sig)
@@ -69,14 +88,12 @@ async function mutateLocal(repoPath, ws, record, mutation, rawArgs, verbose) {
69
88
  if (!mut) {
70
89
  exitError(`Mutation '${mutation}' not found on record '${record}'. Available: ${sig.mutations.map((m) => m.name).join(', ') || '(none)'}`);
71
90
  }
72
- if (rawArgs.length !== mut.argTypes.length) {
73
- exitError(`Mutation '${mutation}' expects ${mut.argTypes.length} argument(s), got ${rawArgs.length}`);
74
- }
91
+ checkArity(mutation, mut, rawArgs.length);
75
92
  const args = [];
76
93
  for (let i = 0; i < rawArgs.length; i++) {
77
94
  args.push(await encodeArg(rawArgs[i], mut.argTypes[i], i));
78
95
  }
79
- const outcome = await recordMutate(storage, new LocalTaskRunner(repoPath), repoPath, ws, record, mutation, args, { actor: actor(), verbose });
96
+ const outcome = await recordMutate(storage, new LocalTaskRunner(repoPath, budget), repoPath, ws, record, mutation, args, { actor: actor(), verbose });
80
97
  renderOutcome(outcome);
81
98
  }
82
99
  async function mutateRemote(baseUrl, repo, token, ws, record, mutation, rawArgs, verbose) {
@@ -86,15 +103,20 @@ async function mutateRemote(baseUrl, repo, token, ws, record, mutation, rawArgs,
86
103
  if (!mut) {
87
104
  exitError(`Mutation '${mutation}' not found on record '${record}'. Available: ${sig.mutations.map((m) => m.name).join(', ') || '(none)'}`);
88
105
  }
89
- if (rawArgs.length !== mut.argTypes.length) {
90
- exitError(`Mutation '${mutation}' expects ${mut.argTypes.length} argument(s), got ${rawArgs.length}`);
91
- }
106
+ checkArity(mutation, mut, rawArgs.length);
92
107
  const args = [];
93
108
  for (let i = 0; i < rawArgs.length; i++) {
94
109
  args.push(await encodeArg(rawArgs[i], mut.argTypes[i], i));
95
110
  }
96
111
  const result = await workspaceRecordMutate(baseUrl, repo, ws, record, mutation, { args, actor: some(actor()), limits: none }, opts);
97
- renderOutcome({ kind: result.outcome.type, ...result.outcome.value });
112
+ const outcome = result.outcome;
113
+ renderOutcome(outcome.type === 'conflict'
114
+ ? {
115
+ kind: 'conflict',
116
+ attempts: outcome.value.attempts,
117
+ ...(outcome.value.detail.type === 'some' && { detail: outcome.value.detail.value }),
118
+ }
119
+ : { kind: outcome.type, ...outcome.value });
98
120
  }
99
121
  /** `e3 mutate` entry point. */
100
122
  export async function mutateCommand(repoArg, spec, args, options) {
@@ -105,9 +127,10 @@ export async function mutateCommand(repoArg, spec, args, options) {
105
127
  const { record, mutation } = parseMutationSpec(spec);
106
128
  const location = await parseRepoLocation(repoArg);
107
129
  if (location.type === 'local') {
108
- await mutateLocal(location.path, options.workspace, record, mutation, args, options.verbose);
130
+ await mutateLocal(location.path, options.workspace, record, mutation, args, commandBudget(options), options.verbose);
109
131
  }
110
132
  else {
133
+ refuseRemoteBudget(options);
111
134
  await mutateRemote(location.baseUrl, location.repo, location.token, options.workspace, record, mutation, args, options.verbose);
112
135
  }
113
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/commands/mutate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/commands/mutate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,GAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAoB,MAAM,aAAa,CAAC;AAElF,2DAA2D;AAC3D,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,oCAAoC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,KAAK;IACZ,OAAO,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAmD;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ;QAAE,SAAS,CAAC,8BAA8B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5F,IAAI,IAAI,KAAK,SAAS;QAAE,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,IAAI,IAAI,KAAK,WAAW;QAAE,SAAS,CAAC,4BAA4B,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACxF,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,wEAAwE;QACxE,uEAAuE;QACvE,2EAA2E;QAC3E,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACvC,SAAS,CAAC,wBAAwB,OAAO,CAAC,MAAM,oEAAoE,CAAC,CAAC;QACxH,CAAC;QACD,SAAS,CAAC,6BAA6B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACzF,CAAC;IACD,SAAS,CAAC,6BAA6B,IAAI,GAAG,CAAC,CAAC;AAClD,CAAC;AAED;;yBAEyB;AACzB,SAAS,UAAU,CAAC,QAAgB,EAAE,GAA0C,EAAE,GAAW;IAC3F,IAAI,GAAG,KAAK,GAAG,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO;IACxC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,KAAK,OAAO;QAC/B,CAAC,CAAC,8GAA8G;QAChH,CAAC,CAAC,EAAE,CAAC;IACP,SAAS,CAAC,aAAa,QAAQ,aAAa,GAAG,CAAC,QAAQ,CAAC,MAAM,qBAAqB,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,EAAU,EAAE,MAAc,EAAE,QAAgB,EAAE,OAAiB,EAAE,MAAc,EAAE,OAAiB;IAC7I,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC,GAAG;QAAE,SAAS,CAAC,WAAW,MAAM,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,SAAS,CAAC,aAAa,QAAQ,0BAA0B,MAAM,iBAAiB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC7I,CAAC;IACD,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAoB,MAAM,YAAY,CACjD,OAAO,EAAE,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAClH,CAAC;IACF,aAAa,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,IAAY,EAAE,KAAa,EAAE,EAAU,EAAE,MAAc,EAAE,QAAgB,EAAE,OAAiB,EAAE,OAAiB;IAC1J,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAChC,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC3D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,SAAS,CAAC,aAAa,QAAQ,0BAA0B,MAAM,iBAAiB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC7I,CAAC;IACD,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAmB,MAAM,qBAAqB,CACxD,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,CACxF,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,aAAa,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU;QACvC,CAAC,CAAC;YACA,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;YAChC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACpF;QACD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,+BAA+B;AAC/B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,IAAY,EACZ,IAAc,EACd,OAAgE;IAEhE,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,SAAS,CAAC,oEAAoE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvH,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ import { type BudgetFlags } from './budget.js';
6
+ /** `e3 reindex` entry point. */
7
+ export declare function reindexCommand(repoArg: string, record: string, options: BudgetFlags & {
8
+ workspace?: string;
9
+ index?: string;
10
+ verbose?: boolean;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=reindex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../src/commands/reindex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoBH,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAM9D,gCAAgC;AAChC,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/E,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Licensed under BSL 1.1. See LICENSE for details.
4
+ */
5
+ /**
6
+ * e3 reindex command — rebuild a record's secondary indexes from its primary.
7
+ *
8
+ * Usage:
9
+ * e3 reindex <repo> -w <ws> <record> [--index <name>]
10
+ *
11
+ * An index is derived state, so this never loses anything and is always
12
+ * available: it is the exit when an index function turns out to be wrong (fix
13
+ * the function, redeploy, and the deploy plan rebuilds it), and it is what
14
+ * proves a maintained index is the one a rebuild writes — the two must agree
15
+ * byte for byte. The record's primary is untouched; only the index manifests
16
+ * move, under a `$reindex` commit so the audit chain records that they did.
17
+ *
18
+ * Records are workspace-scoped, so --workspace is required.
19
+ */
20
+ import { LocalStorage, LocalTaskRunner, recordReindex } from '@elaraai/e3-core';
21
+ import { parseRepoLocation, formatError, exitError } from '../utils.js';
22
+ import { commandBudget } from './budget.js';
23
+ function actor() {
24
+ return `cli:${process.env.USER ?? process.env.USERNAME ?? 'unknown'}`;
25
+ }
26
+ /** `e3 reindex` entry point. */
27
+ export async function reindexCommand(repoArg, record, options) {
28
+ try {
29
+ if (!options.workspace) {
30
+ exitError('e3 reindex requires --workspace (records hold live workspace state)');
31
+ }
32
+ const location = await parseRepoLocation(repoArg);
33
+ if (location.type !== 'local') {
34
+ exitError('e3 reindex runs where the record is: point it at the repository path on the server, '
35
+ + 'or redeploy the package, which rebuilds every index whose declaration changed.');
36
+ return;
37
+ }
38
+ const storage = new LocalStorage();
39
+ const outcome = await recordReindex(storage, new LocalTaskRunner(location.path, commandBudget(options)), location.path, options.workspace, record, {
40
+ actor: actor(),
41
+ ...(options.index !== undefined && { index: options.index }),
42
+ ...(options.verbose !== undefined && { verbose: options.verbose }),
43
+ });
44
+ const what = options.index === undefined ? "every index of" : `index '${options.index}' of`;
45
+ switch (outcome.kind) {
46
+ case 'committed':
47
+ console.log(`Rebuilt ${what} '${record}' → ${outcome.commitHash}`);
48
+ return;
49
+ case 'invalid':
50
+ exitError(outcome.message);
51
+ return;
52
+ case 'conflict':
53
+ exitError(`Reindex conflicted after ${outcome.attempts} attempts; try again`);
54
+ return;
55
+ case 'failed':
56
+ exitError(`An index build failed (exit ${outcome.exitCode})\n${outcome.stderr}`);
57
+ return;
58
+ case 'timed_out':
59
+ exitError(`An index build exceeded ${outcome.ms} ms\n${outcome.stderr}`);
60
+ return;
61
+ }
62
+ }
63
+ catch (err) {
64
+ exitError(formatError(err));
65
+ }
66
+ }
67
+ //# sourceMappingURL=reindex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/commands/reindex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,aAAa,EAAoB,MAAM,aAAa,CAAC;AAE9D,SAAS,KAAK;IACZ,OAAO,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;AACxE,CAAC;AAED,gCAAgC;AAChC,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,MAAc,EACd,OAAgF;IAEhF,IAAI,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,SAAS,CAAC,qEAAqE,CAAC,CAAC;QACnF,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,SAAS,CACP,sFAAsF;kBACpF,gFAAgF,CACnF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,OAAO,EAAE,IAAI,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAC7G;YACE,KAAK,EAAE,KAAK,EAAE;YACd,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5D,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SACnE,CACF,CAAC;QAEF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,OAAO,CAAC,KAAK,MAAM,CAAC;QAC5F,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW;gBACd,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,MAAM,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;gBACnE,OAAO;YACT,KAAK,SAAS;gBACZ,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO;YACT,KAAK,UAAU;gBACb,SAAS,CAAC,4BAA4B,OAAO,CAAC,QAAQ,sBAAsB,CAAC,CAAC;gBAC9E,OAAO;YACT,KAAK,QAAQ;gBACX,SAAS,CAAC,+BAA+B,OAAO,CAAC,QAAQ,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACjF,OAAO;YACT,KAAK,WAAW;gBACd,SAAS,CAAC,2BAA2B,OAAO,CAAC,EAAE,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBACzE,OAAO;QACX,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -30,11 +30,14 @@ export declare const repoCommand: {
30
30
  */
31
31
  status(locationArg: string): Promise<void>;
32
32
  /**
33
- * Run garbage collection.
33
+ * Run garbage collection: the runs and executions the repository no longer
34
+ * keeps go first, and then the objects nothing kept names.
34
35
  */
35
36
  gc(locationArg: string, options: {
36
37
  dryRun?: boolean;
37
38
  minAge?: string;
39
+ keepRuns?: string;
40
+ keepDays?: string;
38
41
  }): Promise<void>;
39
42
  /**
40
43
  * List repositories on a server.
@@ -1 +1 @@
1
- {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/commands/repo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+CH,eAAO,MAAM,WAAW;IACtB;;;;;OAKG;oBACmB,MAAM,YAAW;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAQ,OAAO,CAAC,IAAI,CAAC;IAqCjF;;;;;;;;;OASG;wBACuB,MAAM,WAAW;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDlF;;OAEG;wBACuB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhD;;OAEG;oBACmB,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAmF5F;;;;OAIG;oBACmB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB7C,CAAC"}
1
+ {"version":3,"file":"repo.d.ts","sourceRoot":"","sources":["../../../src/commands/repo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiDH,eAAO,MAAM,WAAW;IACtB;;;;;OAKG;oBACmB,MAAM,YAAW;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAQ,OAAO,CAAC,IAAI,CAAC;IAqCjF;;;;;;;;;OASG;wBACuB,MAAM,WAAW;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDlF;;OAEG;wBACuB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhD;;;OAGG;oBACmB,MAAM,WAAW;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgGlI;;;;OAIG;oBACmB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB7C,CAAC"}
@@ -5,9 +5,9 @@
5
5
  /**
6
6
  * e3 repo commands - Repository management
7
7
  */
8
- import { dirname, resolve } from 'path';
8
+ import { resolve } from 'path';
9
9
  import { rmSync } from 'fs';
10
- import { repoInit, repoGc, packageList, workspaceList, workspaceRemove, workspaceGetState, LocalStorage, } from '@elaraai/e3-core';
10
+ import { repoInit, repoGc, DEFAULT_KEEP_DAYS, DEFAULT_KEEP_RUNS, packageList, workspaceList, workspaceRemove, workspaceGetState, LocalStorage, } from '@elaraai/e3-core';
11
11
  import { repoStatus as repoStatusRemote, repoGcStart as repoGcStartRemote, repoGcStatus as repoGcStatusRemote, repoCreate as repoCreateRemote, repoRemove as repoRemoveRemote, repoList as repoListRemote, workspaceList as workspaceListRemote, workspaceRemove as workspaceRemoveRemote, } from '@elaraai/e3-api-client';
12
12
  import { some, none } from '@elaraai/east';
13
13
  import { parseRepoLocation, formatError, exitError } from '../utils.js';
@@ -183,33 +183,45 @@ export const repoCommand = {
183
183
  }
184
184
  },
185
185
  /**
186
- * Run garbage collection.
186
+ * Run garbage collection: the runs and executions the repository no longer
187
+ * keeps go first, and then the objects nothing kept names.
187
188
  */
188
189
  async gc(locationArg, options) {
189
190
  try {
190
191
  const location = await parseRepoLocation(locationArg);
191
192
  const minAge = options.minAge ? parseInt(options.minAge, 10) : 60000;
193
+ const keep = {};
194
+ for (const [key, flag] of [['keepRuns', '--keep-runs'], ['keepDays', '--keep-days']]) {
195
+ const value = options[key];
196
+ if (value === undefined)
197
+ continue;
198
+ if (!/^\d+$/.test(value))
199
+ exitError(`${flag} takes a whole number of zero or more, got '${value}'`);
200
+ keep[key] = Number(value);
201
+ }
192
202
  if (options.dryRun) {
193
203
  console.log('Dry run - no files will be deleted');
194
204
  }
195
205
  console.log(`Minimum age: ${minAge}ms`);
206
+ console.log(`History kept: the last ${keep.keepRuns ?? DEFAULT_KEEP_RUNS} runs of each workspace, and ${keep.keepDays ?? DEFAULT_KEEP_DAYS} days of runs and executions`);
196
207
  console.log('');
197
208
  if (location.type === 'local') {
198
- // gc runs repository-level operations (storage.repos), which need the
199
- // directory holding the repository — as e3-api-server configures it.
200
- const storage = new LocalStorage(dirname(resolve(location.path)));
209
+ const storage = new LocalStorage();
201
210
  const result = await repoGc(storage, location.path, {
202
211
  dryRun: options.dryRun,
203
212
  minAge,
213
+ ...keep,
204
214
  });
205
215
  console.log('Garbage collection complete:');
206
- console.log(` Objects retained: ${result.retainedObjects}`);
207
- console.log(` Objects deleted: ${result.deletedObjects}`);
208
- console.log(` Partials deleted: ${result.deletedPartials}`);
209
- console.log(` Skipped (young): ${result.skippedYoung}`);
216
+ console.log(` Runs deleted: ${result.deletedRuns}`);
217
+ console.log(` Executions deleted: ${result.deletedExecutions}`);
218
+ console.log(` Objects retained: ${result.retainedObjects}`);
219
+ console.log(` Objects deleted: ${result.deletedObjects}`);
220
+ console.log(` Partials deleted: ${result.deletedPartials}`);
221
+ console.log(` Skipped (young): ${result.skippedYoung}`);
210
222
  if (result.bytesFreed > 0) {
211
223
  const mb = (result.bytesFreed / 1024 / 1024).toFixed(2);
212
- console.log(` Space reclaimed: ${mb} MB`);
224
+ console.log(` Space reclaimed: ${mb} MB`);
213
225
  }
214
226
  }
215
227
  else {
@@ -217,6 +229,8 @@ export const repoCommand = {
217
229
  const { executionId } = await repoGcStartRemote(location.baseUrl, location.repo, {
218
230
  dryRun: options.dryRun ?? false,
219
231
  minAge: minAge ? some(BigInt(minAge)) : none,
232
+ keepRuns: keep.keepRuns === undefined ? none : some(BigInt(keep.keepRuns)),
233
+ keepDays: keep.keepDays === undefined ? none : some(BigInt(keep.keepDays)),
220
234
  }, { token: location.token });
221
235
  console.log('Running garbage collection...');
222
236
  // Poll for completion
@@ -230,13 +244,15 @@ export const repoCommand = {
230
244
  const result = status.stats.value;
231
245
  console.log('');
232
246
  console.log('Garbage collection complete:');
233
- console.log(` Objects retained: ${result.retainedObjects}`);
234
- console.log(` Objects deleted: ${result.deletedObjects}`);
235
- console.log(` Partials deleted: ${result.deletedPartials}`);
236
- console.log(` Skipped (young): ${result.skippedYoung}`);
247
+ console.log(` Runs deleted: ${result.deletedRuns}`);
248
+ console.log(` Executions deleted: ${result.deletedExecutions}`);
249
+ console.log(` Objects retained: ${result.retainedObjects}`);
250
+ console.log(` Objects deleted: ${result.deletedObjects}`);
251
+ console.log(` Partials deleted: ${result.deletedPartials}`);
252
+ console.log(` Skipped (young): ${result.skippedYoung}`);
237
253
  if (result.bytesFreed > 0n) {
238
254
  const mb = (Number(result.bytesFreed) / 1024 / 1024).toFixed(2);
239
- console.log(` Space reclaimed: ${mb} MB`);
255
+ console.log(` Space reclaimed: ${mb} MB`);
240
256
  }
241
257
  break;
242
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/commands/repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/commands/repo.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2025 Elara AI Pty Ltd
3
3
  * Licensed under BSL 1.1. See LICENSE for details.
4
4
  */
5
+ import { type BudgetFlags } from './budget.js';
5
6
  /**
6
7
  * Parse task specifier: `pkg.task` or `pkg@version.task`.
7
8
  *
@@ -17,7 +18,7 @@ export declare function parseTaskSpec(spec: string): {
17
18
  /**
18
19
  * Run a task ad-hoc with file inputs and output.
19
20
  */
20
- export declare function runCommand(repoArg: string, taskSpec: string, inputs: string[], options: {
21
+ export declare function runCommand(repoArg: string, taskSpec: string, inputs: string[], options: BudgetFlags & {
21
22
  output?: string;
22
23
  force?: boolean;
23
24
  verbose?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoB3F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC/D,OAAO,CAAC,IAAI,CAAC,CAoFf"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAoB3F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,EAAE,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7E,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
@@ -11,9 +11,10 @@
11
11
  * e3 run . my-pkg/task ./data.beast2 -o ./out.beast2 --force
12
12
  */
13
13
  import { readFile, writeFile } from 'fs/promises';
14
- import { packageRead, objectWrite, objectRead, taskExecute, LocalStorage, TASKS_LOCK, } from '@elaraai/e3-core';
15
- import { decodeBeast2, variant } from '@elaraai/east';
16
- import { resolveRepo, parsePackageSpec, formatError, exitError, shortHash } from '../utils.js';
14
+ import { packageRead, objectWrite, objectRead, taskExecute, withRunningWork, LocalStorage, } from '@elaraai/e3-core';
15
+ import { decodeBeast2 } from '@elaraai/east';
16
+ import { openRepo, parsePackageSpec, formatError, exitError, shortHash } from '../utils.js';
17
+ import { commandBudget } from './budget.js';
17
18
  /**
18
19
  * Parse task specifier: `pkg.task` or `pkg@version.task`.
19
20
  *
@@ -42,8 +43,10 @@ export function parseTaskSpec(spec) {
42
43
  */
43
44
  export async function runCommand(repoArg, taskSpec, inputs, options) {
44
45
  try {
45
- const repoPath = resolveRepo(repoArg);
46
+ const repoPath = await openRepo(repoArg);
46
47
  const storage = new LocalStorage();
48
+ // The budget a split task's units take from.
49
+ const budget = commandBudget(options);
47
50
  // Parse task specifier
48
51
  const { name, version, task } = parseTaskSpec(taskSpec);
49
52
  // Validate output is provided
@@ -73,24 +76,15 @@ export async function runCommand(repoArg, taskSpec, inputs, options) {
73
76
  inputHashes.push(hash);
74
77
  console.log(` Input: ${inputPath} -> ${shortHash(hash)}`);
75
78
  }
76
- // Execute the task, holding the repository's task lock shared for the
77
- // duration: gc takes it exclusively, so a sweep never runs while this
78
- // execution's unrooted objects (carved slices, unit outputs) exist.
79
- const lock = await storage.locks.acquire(repoPath, TASKS_LOCK, variant('dataflow', null), { mode: 'shared' });
80
- if (lock === null) {
81
- exitError('run: a garbage collection is running in this repository — retry when it finishes');
82
- }
79
+ // Execute the task as running work: gc takes the repository exclusively,
80
+ // so a sweep never runs while this execution's unrooted objects (carved
81
+ // slices, unit outputs) exist.
83
82
  const startTime = Date.now();
84
- let result;
85
- try {
86
- result = await taskExecute(storage, repoPath, taskHash, inputHashes, {
87
- force: options.force,
88
- verbose: options.verbose,
89
- });
90
- }
91
- finally {
92
- await lock.release();
93
- }
83
+ const result = await withRunningWork(storage, repoPath, () => taskExecute(storage, repoPath, taskHash, inputHashes, {
84
+ force: options.force,
85
+ verbose: options.verbose,
86
+ budget,
87
+ }));
94
88
  const elapsed = Date.now() - startTime;
95
89
  if (result.cached) {
96
90
  console.log(`Cached (${elapsed}ms)`);
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoFH;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpE,OAAO,CAAC,IAAI,CAAC,CA4If"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/commands/set.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoFH;;GAEG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACpE,OAAO,CAAC,IAAI,CAAC,CA2If"}
@@ -19,10 +19,11 @@
19
19
  * The positional form DECODES the file and re-encodes the value — a `.beast2`
20
20
  * file's header type is checked against the declared type first, by ranged
21
21
  * reads, so a drifted file is refused before it is read whole; `--from-file`
22
- * ADOPTS a `.beast2` file as it stands — hashing it by streaming, checking its
23
- * header against the declared type by ranged reads, and taking it into the
24
- * object store by link or one kernel copy. That is the form for a delivery too
25
- * big to decode, and the file is never modified.
22
+ * ADOPTS a `.beast2` file without ever holding it — hashing it by streaming,
23
+ * checking its header against the declared type, and taking it into the
24
+ * object store: a collection split into segment objects a segment at a time,
25
+ * any other value by link or one kernel copy. That is the form for a delivery
26
+ * too big to decode at once, and the file is never modified.
26
27
  */
27
28
  import { readFile } from 'fs/promises';
28
29
  import { extname } from 'path';
@@ -30,8 +31,8 @@ import { stat } from 'node:fs/promises';
30
31
  import { datasetAdoptFile, workspaceResolveDataset, workspaceSetDataset, LocalStorage } from '@elaraai/e3-core';
31
32
  import { readDatasetFileHeader, readDatasetFileType, sha256File } from '@elaraai/e3';
32
33
  import { datasetGetStatus as datasetGetStatusRemote, datasetSet as datasetSetRemote, datasetSetStream, } from '@elaraai/e3-api-client';
33
- import { decodeBeast2, parseFor, fromJSONFor, decodeCsvFor, encodeBeast2For, EastTypeType, parseInferred, toEastTypeValue, } from '@elaraai/east';
34
- import { checkDatasetType } from '@elaraai/e3-types';
34
+ import { decodeBeast2, parseFor, fromJSONFor, decodeCsvFor, EastTypeType, parseInferred, toEastTypeValue, } from '@elaraai/east';
35
+ import { checkDatasetType, encodeDatasetBlob } from '@elaraai/e3-types';
35
36
  import { parseRepoLocation, formatError, exitError } from '../utils.js';
36
37
  import { resolveDatasetPath } from '../path-resolver.js';
37
38
  import { formatSize } from '../format.js';
@@ -68,19 +69,18 @@ export async function setCommand(repoArg, pathSpec, filePath, options = {}) {
68
69
  exitError('Specify either --type or --type-file, not both');
69
70
  }
70
71
  if (options.fromFile) {
71
- // --from-file adopts the bytes as they stand: re-encoding under another
72
- // type would mean decoding the file, which is exactly what this form
73
- // exists to avoid.
72
+ // --from-file takes the file in under the type its header declares: a
73
+ // file read as another type is a delivery silently re-typed.
74
74
  if (filePath)
75
75
  exitError('Specify either a file argument or --from-file, not both');
76
76
  if (options.type || options.typeFile) {
77
- exitError('--from-file adopts the file as it stands — --type / --type-file would require decoding and re-encoding it');
77
+ exitError('--from-file adopts the file under the type its header declares — --type / --type-file would re-type it');
78
78
  }
79
79
  // Awaited, so a refusal lands in the catch below and prints as one line.
80
80
  return await setFromFile(repoArg, pathSpec, options.fromFile);
81
81
  }
82
82
  if (!filePath) {
83
- exitError('Provide a file to read the value from, or --from-file to adopt a .beast2 file by hash');
83
+ exitError('Provide a file to read the value from, or --from-file to take in a .beast2 file without holding it');
84
84
  }
85
85
  const location = await parseRepoLocation(repoArg);
86
86
  const { ws, path } = await resolveDatasetPath(location, pathSpec);
@@ -175,9 +175,9 @@ export async function setCommand(repoArg, pathSpec, filePath, options = {}) {
175
175
  await workspaceSetDataset(storage, location.path, ws, path, value, type);
176
176
  }
177
177
  else {
178
- const encoder = encodeBeast2For(type);
179
- const beast2Data = encoder(value);
180
- await datasetSetRemote(location.baseUrl, location.repo, ws, path, beast2Data, { token: location.token });
178
+ // The dataset's own encoding — a collection segmented, as the server's
179
+ // door reads it a segment at a time.
180
+ await datasetSetRemote(location.baseUrl, location.repo, ws, path, encodeDatasetBlob(type, value), { token: location.token });
181
181
  }
182
182
  console.log(`Set ${pathSpec} from ${filePath}`);
183
183
  }
@@ -186,7 +186,7 @@ export async function setCommand(repoArg, pathSpec, filePath, options = {}) {
186
186
  }
187
187
  }
188
188
  /**
189
- * Point a dataset at an existing `.beast2` file, by hash.
189
+ * Point a dataset at an existing `.beast2` file, adopted without holding it.
190
190
  *
191
191
  * Locally the file is adopted straight into the object store; against a remote
192
192
  * repository it is streamed through the transfer protocol, whose commit runs