@vimhead.dev/norn-cli 0.1.0-tip.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 (171) hide show
  1. package/README.md +13 -0
  2. package/assets/README.md +157 -0
  3. package/assets/docs/README.md +23 -0
  4. package/assets/docs/agents.md +64 -0
  5. package/assets/docs/cli.md +183 -0
  6. package/assets/docs/composition.md +76 -0
  7. package/assets/docs/persistence.md +56 -0
  8. package/assets/docs/projects.md +75 -0
  9. package/assets/docs/recovery.md +56 -0
  10. package/assets/docs/resources.md +61 -0
  11. package/assets/docs/workflows.md +57 -0
  12. package/assets/examples/agent-then-analysis/README.md +103 -0
  13. package/assets/examples/agent-then-analysis/input.json +5 -0
  14. package/assets/examples/agent-then-analysis/norn.project.json +4 -0
  15. package/assets/examples/agent-then-analysis/plugin.ts +89 -0
  16. package/assets/examples/coordinating-multiple-agents/README.md +56 -0
  17. package/assets/examples/coordinating-multiple-agents/input.json +10 -0
  18. package/assets/examples/coordinating-multiple-agents/norn.project.json +4 -0
  19. package/assets/examples/coordinating-multiple-agents/plugin.ts +102 -0
  20. package/assets/examples/coordinating-multiple-agents/queue-adapter.ts +52 -0
  21. package/assets/examples/coordinating-multiple-agents/work-queue.ts +153 -0
  22. package/assets/examples/minimal-workflow/README.md +71 -0
  23. package/assets/examples/minimal-workflow/norn.project.json +4 -0
  24. package/assets/examples/minimal-workflow/plugin.ts +29 -0
  25. package/assets/examples/shared-state/README.md +19 -0
  26. package/assets/examples/shared-state/input.json +1 -0
  27. package/assets/examples/shared-state/norn.project.json +4 -0
  28. package/assets/examples/shared-state/plugin.ts +47 -0
  29. package/assets/examples/worktree-development-loop/README.md +66 -0
  30. package/assets/examples/worktree-development-loop/index.ts +1 -0
  31. package/assets/examples/worktree-development-loop/manifest.ts +26 -0
  32. package/assets/examples/worktree-development-loop/norn.project.json +9 -0
  33. package/assets/examples/worktree-development-loop/plugin.ts +27 -0
  34. package/assets/examples/worktree-development-loop/shared/commands.ts +6 -0
  35. package/assets/examples/worktree-development-loop/state.ts +23 -0
  36. package/assets/examples/worktree-development-loop/workflows/development-loop/declaration.ts +8 -0
  37. package/assets/examples/worktree-development-loop/workflows/development-loop/execute.ts +18 -0
  38. package/assets/examples/worktree-development-loop/workflows/development-loop/index.ts +4 -0
  39. package/assets/examples/worktree-development-loop/workflows/development-loop/repository.ts +22 -0
  40. package/assets/examples/worktree-development-loop/workflows/development-loop/schema.ts +14 -0
  41. package/assets/examples/worktree-development-loop/workflows/implementation/declaration.ts +8 -0
  42. package/assets/examples/worktree-development-loop/workflows/implementation/execute.ts +54 -0
  43. package/assets/examples/worktree-development-loop/workflows/implementation/index.ts +3 -0
  44. package/assets/examples/worktree-development-loop/workflows/implementation/schema.ts +12 -0
  45. package/assets/examples/worktree-development-loop/workflows/planning/declaration.ts +8 -0
  46. package/assets/examples/worktree-development-loop/workflows/planning/execute.ts +28 -0
  47. package/assets/examples/worktree-development-loop/workflows/planning/index.ts +3 -0
  48. package/assets/examples/worktree-development-loop/workflows/planning/schema.ts +12 -0
  49. package/assets/examples/worktree-development-loop/workflows/review/declaration.ts +8 -0
  50. package/assets/examples/worktree-development-loop/workflows/review/execute.ts +53 -0
  51. package/assets/examples/worktree-development-loop/workflows/review/index.ts +10 -0
  52. package/assets/examples/worktree-development-loop/workflows/review/schema.ts +23 -0
  53. package/assets/examples/worktree-development-loop/workflows/review-router/declaration.ts +12 -0
  54. package/assets/examples/worktree-development-loop/workflows/review-router/execute.ts +51 -0
  55. package/assets/examples/worktree-development-loop/workflows/review-router/index.ts +3 -0
  56. package/assets/examples/worktree-development-loop/workflows/review-router/schema.ts +12 -0
  57. package/assets/package.json +1 -0
  58. package/assets/packages/cli/src/build-info.ts +36 -0
  59. package/assets/packages/cli/src/bun/cli.ts +16 -0
  60. package/assets/packages/cli/src/cli.ts +1135 -0
  61. package/assets/packages/cli/src/client.ts +167 -0
  62. package/assets/packages/cli/src/documentation-intro.ts +30 -0
  63. package/assets/packages/cli/src/documentation.ts +149 -0
  64. package/assets/packages/cli/src/generated-build-info.ts +12 -0
  65. package/assets/packages/cli/src/internal/agent-directory.ts +5 -0
  66. package/assets/packages/cli/src/internal/agent-response-tool.ts +96 -0
  67. package/assets/packages/cli/src/internal/agents.ts +365 -0
  68. package/assets/packages/cli/src/internal/artifacts.ts +26 -0
  69. package/assets/packages/cli/src/internal/commands.ts +180 -0
  70. package/assets/packages/cli/src/internal/documentation-bundle.ts +49 -0
  71. package/assets/packages/cli/src/internal/engine.ts +501 -0
  72. package/assets/packages/cli/src/internal/errors.ts +39 -0
  73. package/assets/packages/cli/src/internal/file-names.ts +3 -0
  74. package/assets/packages/cli/src/internal/launch-request.ts +94 -0
  75. package/assets/packages/cli/src/internal/logs.ts +41 -0
  76. package/assets/packages/cli/src/internal/metrics.ts +356 -0
  77. package/assets/packages/cli/src/internal/pi-assets.ts +95 -0
  78. package/assets/packages/cli/src/internal/resource-bindings.ts +35 -0
  79. package/assets/packages/cli/src/internal/run-lease.ts +158 -0
  80. package/assets/packages/cli/src/internal/run-log.ts +59 -0
  81. package/assets/packages/cli/src/internal/run-names.ts +36 -0
  82. package/assets/packages/cli/src/internal/run-resources.ts +23 -0
  83. package/assets/packages/cli/src/internal/run-state.ts +380 -0
  84. package/assets/packages/cli/src/internal/run-store.ts +323 -0
  85. package/assets/packages/cli/src/internal/run.ts +133 -0
  86. package/assets/packages/cli/src/internal/state-store.ts +75 -0
  87. package/assets/packages/cli/src/internal/usage.ts +70 -0
  88. package/assets/packages/cli/src/internal/workflow-registry.ts +176 -0
  89. package/assets/packages/cli/src/plugin-loader.ts +412 -0
  90. package/assets/packages/cli/src/resources.ts +67 -0
  91. package/assets/packages/core/src/agent-protocol.ts +1 -0
  92. package/assets/packages/core/src/atomic-files.ts +24 -0
  93. package/assets/packages/core/src/errors.ts +3 -0
  94. package/assets/packages/sdk/src/agent-resource-adapter.ts +11 -0
  95. package/assets/packages/sdk/src/api.ts +821 -0
  96. package/assets/packages/sdk/src/files.ts +136 -0
  97. package/assets/packages/sdk/src/index.ts +6 -0
  98. package/assets/packages/sdk/src/resources.ts +20 -0
  99. package/assets/packages/sdk/src/schema.ts +48 -0
  100. package/assets/packages/sdk/src/seer/config.ts +62 -0
  101. package/assets/packages/sdk/src/seer/index.ts +7 -0
  102. package/assets/packages/sdk/src/state-adapter.ts +75 -0
  103. package/assets/setup/providers.md +128 -0
  104. package/assets/setup/releases.md +76 -0
  105. package/assets/tests/workflow-ref.test.ts +113 -0
  106. package/bin/norn.mjs +10 -0
  107. package/dist/build-info.d.ts +30 -0
  108. package/dist/build-info.js +6 -0
  109. package/dist/cli.d.ts +2 -0
  110. package/dist/cli.js +1032 -0
  111. package/dist/client.d.ts +48 -0
  112. package/dist/client.js +118 -0
  113. package/dist/documentation-intro.d.ts +5 -0
  114. package/dist/documentation-intro.js +29 -0
  115. package/dist/documentation.d.ts +33 -0
  116. package/dist/documentation.js +132 -0
  117. package/dist/generated-build-info.d.ts +10 -0
  118. package/dist/generated-build-info.js +14 -0
  119. package/dist/internal/agent-directory.d.ts +4 -0
  120. package/dist/internal/agent-directory.js +8 -0
  121. package/dist/internal/agent-response-tool.d.ts +21 -0
  122. package/dist/internal/agent-response-tool.js +79 -0
  123. package/dist/internal/agents.d.ts +29 -0
  124. package/dist/internal/agents.js +336 -0
  125. package/dist/internal/artifacts.d.ts +10 -0
  126. package/dist/internal/artifacts.js +29 -0
  127. package/dist/internal/commands.d.ts +18 -0
  128. package/dist/internal/commands.js +147 -0
  129. package/dist/internal/documentation-bundle.d.ts +16 -0
  130. package/dist/internal/documentation-bundle.js +42 -0
  131. package/dist/internal/engine.d.ts +44 -0
  132. package/dist/internal/engine.js +399 -0
  133. package/dist/internal/errors.d.ts +14 -0
  134. package/dist/internal/errors.js +38 -0
  135. package/dist/internal/file-names.d.ts +1 -0
  136. package/dist/internal/file-names.js +7 -0
  137. package/dist/internal/launch-request.d.ts +33 -0
  138. package/dist/internal/launch-request.js +110 -0
  139. package/dist/internal/logs.d.ts +16 -0
  140. package/dist/internal/logs.js +38 -0
  141. package/dist/internal/metrics.d.ts +19 -0
  142. package/dist/internal/metrics.js +282 -0
  143. package/dist/internal/pi-assets.d.ts +13 -0
  144. package/dist/internal/pi-assets.js +94 -0
  145. package/dist/internal/resource-bindings.d.ts +13 -0
  146. package/dist/internal/resource-bindings.js +34 -0
  147. package/dist/internal/run-lease.d.ts +32 -0
  148. package/dist/internal/run-lease.js +166 -0
  149. package/dist/internal/run-log.d.ts +30 -0
  150. package/dist/internal/run-log.js +71 -0
  151. package/dist/internal/run-names.d.ts +1 -0
  152. package/dist/internal/run-names.js +144 -0
  153. package/dist/internal/run-resources.d.ts +6 -0
  154. package/dist/internal/run-resources.js +26 -0
  155. package/dist/internal/run-state.d.ts +95 -0
  156. package/dist/internal/run-state.js +323 -0
  157. package/dist/internal/run-store.d.ts +35 -0
  158. package/dist/internal/run-store.js +314 -0
  159. package/dist/internal/run.d.ts +51 -0
  160. package/dist/internal/run.js +101 -0
  161. package/dist/internal/state-store.d.ts +22 -0
  162. package/dist/internal/state-store.js +97 -0
  163. package/dist/internal/usage.d.ts +5 -0
  164. package/dist/internal/usage.js +70 -0
  165. package/dist/internal/workflow-registry.d.ts +35 -0
  166. package/dist/internal/workflow-registry.js +129 -0
  167. package/dist/plugin-loader.d.ts +55 -0
  168. package/dist/plugin-loader.js +353 -0
  169. package/dist/resources.d.ts +11 -0
  170. package/dist/resources.js +98 -0
  171. package/package.json +52 -0
@@ -0,0 +1,30 @@
1
+ import type { NornFileCoordinator } from "@vimhead.dev/norn/files";
2
+ export type NornRunManifestEvent = {
3
+ readonly at: string;
4
+ readonly type: string;
5
+ readonly [key: string]: unknown;
6
+ };
7
+ export type NornRunManifest = {
8
+ readonly id: string;
9
+ readonly name: string;
10
+ readonly workflowId: string;
11
+ readonly runRoot: string;
12
+ readonly workspace: string;
13
+ readonly initialCwd: string;
14
+ readonly startedAt: string;
15
+ readonly events: readonly NornRunManifestEvent[];
16
+ };
17
+ export declare class NornRunLogger {
18
+ private readonly input;
19
+ private isInitialized;
20
+ constructor(input: {
21
+ readonly manifestPath: string;
22
+ readonly manifest: Omit<NornRunManifest, "events">;
23
+ readonly files: NornFileCoordinator;
24
+ });
25
+ static load(manifestPath: string, files: NornFileCoordinator): Promise<NornRunLogger>;
26
+ record(event: {
27
+ readonly type: string;
28
+ readonly [key: string]: unknown;
29
+ }): Promise<void>;
30
+ }
@@ -0,0 +1,71 @@
1
+ // src/internal/run-log.ts
2
+ import { readFile } from "node:fs/promises";
3
+
4
+ // ../core/src/errors.ts
5
+ function isNodeError(error) {
6
+ return error instanceof Error && "code" in error;
7
+ }
8
+
9
+ // ../core/src/atomic-files.ts
10
+ import { randomUUID } from "node:crypto";
11
+ import { chmod, mkdir, rename, rm, stat, writeFile } from "node:fs/promises";
12
+ import { dirname } from "node:path";
13
+ async function writeJsonAtomically(path, value) {
14
+ await writeTextAtomically(path, `${JSON.stringify(value, null, 2)}
15
+ `);
16
+ }
17
+ async function writeTextAtomically(path, content) {
18
+ await mkdir(dirname(path), { recursive: true });
19
+ let existingMode;
20
+ try {
21
+ existingMode = (await stat(path)).mode & 511;
22
+ } catch (error) {
23
+ if (!isNodeError(error) || error.code !== "ENOENT") throw error;
24
+ }
25
+ const tmpPath = `${path}.${randomUUID()}.tmp`;
26
+ try {
27
+ await writeFile(tmpPath, content, { encoding: "utf8", mode: existingMode });
28
+ if (existingMode !== void 0) await chmod(tmpPath, existingMode);
29
+ await rename(tmpPath, path);
30
+ } catch (error) {
31
+ await rm(tmpPath, { force: true }).catch(() => void 0);
32
+ throw error;
33
+ }
34
+ }
35
+
36
+ // src/internal/run-log.ts
37
+ var NornRunLogger = class _NornRunLogger {
38
+ constructor(input) {
39
+ this.input = input;
40
+ }
41
+ input;
42
+ isInitialized = false;
43
+ static async load(manifestPath, files) {
44
+ const manifest = parseManifest(await files.readText(manifestPath));
45
+ const logger = new _NornRunLogger({ manifestPath, manifest, files });
46
+ logger.isInitialized = true;
47
+ return logger;
48
+ }
49
+ async record(event) {
50
+ await this.input.files.withExclusiveLock(this.input.manifestPath, async (path) => {
51
+ let manifest;
52
+ try {
53
+ manifest = parseManifest(await readFile(path, "utf8"));
54
+ } catch (error) {
55
+ if (this.isInitialized || !isNodeError(error) || error.code !== "ENOENT") throw error;
56
+ manifest = { ...this.input.manifest, events: [] };
57
+ }
58
+ if (manifest.id !== this.input.manifest.id) throw new Error("Run manifest identity changed");
59
+ await writeJsonAtomically(path, { ...manifest, events: [...manifest.events, { ...event, at: (/* @__PURE__ */ new Date()).toISOString() }] });
60
+ this.isInitialized = true;
61
+ });
62
+ }
63
+ };
64
+ function parseManifest(content) {
65
+ const manifest = JSON.parse(content);
66
+ if (!manifest || typeof manifest !== "object" || typeof manifest.id !== "string" || !Array.isArray(manifest.events)) throw new Error("Invalid run manifest");
67
+ return manifest;
68
+ }
69
+ export {
70
+ NornRunLogger
71
+ };
@@ -0,0 +1 @@
1
+ export declare function generateRunName(existingNames: ReadonlySet<string>): string;
@@ -0,0 +1,144 @@
1
+ // src/internal/run-names.ts
2
+ var ADJECTIVES = [
3
+ "able",
4
+ "amber",
5
+ "brave",
6
+ "bright",
7
+ "calm",
8
+ "clever",
9
+ "crisp",
10
+ "daring",
11
+ "eager",
12
+ "fair",
13
+ "fast",
14
+ "fresh",
15
+ "gentle",
16
+ "golden",
17
+ "grand",
18
+ "happy",
19
+ "honest",
20
+ "jolly",
21
+ "kind",
22
+ "lively",
23
+ "lucky",
24
+ "merry",
25
+ "nimble",
26
+ "noble",
27
+ "patient",
28
+ "peaceful",
29
+ "proud",
30
+ "quiet",
31
+ "rapid",
32
+ "ready",
33
+ "royal",
34
+ "sharp",
35
+ "silent",
36
+ "silver",
37
+ "simple",
38
+ "steady",
39
+ "sunny",
40
+ "swift",
41
+ "tidy",
42
+ "vivid"
43
+ ];
44
+ var MODIFIERS = [
45
+ "anchor",
46
+ "autumn",
47
+ "brook",
48
+ "cedar",
49
+ "cloud",
50
+ "copper",
51
+ "dawn",
52
+ "ember",
53
+ "field",
54
+ "forest",
55
+ "harbor",
56
+ "hazel",
57
+ "hill",
58
+ "island",
59
+ "ivory",
60
+ "jade",
61
+ "lake",
62
+ "maple",
63
+ "meadow",
64
+ "moon",
65
+ "north",
66
+ "ocean",
67
+ "olive",
68
+ "pearl",
69
+ "pine",
70
+ "rain",
71
+ "river",
72
+ "rose",
73
+ "shadow",
74
+ "snow",
75
+ "solar",
76
+ "spring",
77
+ "stone",
78
+ "summer",
79
+ "thunder",
80
+ "timber",
81
+ "valley",
82
+ "violet",
83
+ "willow",
84
+ "winter"
85
+ ];
86
+ var NOUNS = [
87
+ "badger",
88
+ "beacon",
89
+ "bison",
90
+ "canvas",
91
+ "comet",
92
+ "falcon",
93
+ "fjord",
94
+ "fox",
95
+ "garden",
96
+ "glade",
97
+ "grove",
98
+ "heron",
99
+ "lantern",
100
+ "lynx",
101
+ "marker",
102
+ "otter",
103
+ "panda",
104
+ "planet",
105
+ "prairie",
106
+ "raven",
107
+ "rocket",
108
+ "sail",
109
+ "signal",
110
+ "sparrow",
111
+ "summit",
112
+ "tiger",
113
+ "trail",
114
+ "voyage",
115
+ "whale",
116
+ "wolf",
117
+ "zephyr",
118
+ "orchid",
119
+ "bridge",
120
+ "castle",
121
+ "harvest",
122
+ "mirror",
123
+ "needle",
124
+ "quartz",
125
+ "ripple",
126
+ "signal"
127
+ ];
128
+ function generateRunName(existingNames) {
129
+ for (let attempt = 0; attempt < 100; attempt++) {
130
+ const name = `${pick(ADJECTIVES)}-${pick(MODIFIERS)}-${pick(NOUNS)}`;
131
+ if (!existingNames.has(name)) return name;
132
+ }
133
+ while (true) {
134
+ const suffix = Math.random().toString(36).slice(2, 6);
135
+ const name = `${pick(ADJECTIVES)}-${pick(MODIFIERS)}-${pick(NOUNS)}-${suffix}`;
136
+ if (!existingNames.has(name)) return name;
137
+ }
138
+ }
139
+ function pick(values) {
140
+ return values[Math.floor(Math.random() * values.length)] ?? values[0];
141
+ }
142
+ export {
143
+ generateRunName
144
+ };
@@ -0,0 +1,6 @@
1
+ import { NornRunResources } from "../resources.ts";
2
+ import { NornJsonWorkflowState } from "./state-store.ts";
3
+ export declare function initializeRunResources(runRoot: string): Promise<{
4
+ readonly resources: NornRunResources;
5
+ readonly state: NornJsonWorkflowState;
6
+ }>;
@@ -0,0 +1,26 @@
1
+ // src/internal/run-resources.ts
2
+ import { join, resolve } from "node:path";
3
+ import { withFileMutationQueue } from "@earendil-works/pi-coding-agent";
4
+ import { NornRunResources } from "../resources.js";
5
+ import { NornJsonWorkflowState } from "./state-store.js";
6
+ async function initializeRunResources(runRoot) {
7
+ const resources = await NornRunResources.initialize(runRoot);
8
+ const state = await resources.ensure({
9
+ name: "workflow-state",
10
+ kind: "norn.state",
11
+ configuration: { format: 1, path: "state.json" },
12
+ async initialize({ files, mode }) {
13
+ const state2 = new NornJsonWorkflowState({
14
+ stateFile: join(resolve(runRoot), "current", "state.json"),
15
+ files,
16
+ coordinateMutation: withFileMutationQueue
17
+ });
18
+ await state2.initialize(mode);
19
+ return state2;
20
+ }
21
+ });
22
+ return { resources, state };
23
+ }
24
+ export {
25
+ initializeRunResources
26
+ };
@@ -0,0 +1,95 @@
1
+ import type { NornRunStatus, NornRunOutcomeMetadata, NornRunInfo } from "@vimhead.dev/norn";
2
+ export declare const RUN_STATE_FILE_NAME = "run-state.json";
3
+ export declare function mergeInterruptedWorkflowParams(currentParams: unknown, params: unknown, fields: readonly string[] | undefined): unknown;
4
+ declare const RUN_STATE_VERSION = 1;
5
+ type NornRunWorkflowStep = {
6
+ readonly workflowId: string;
7
+ readonly params: unknown;
8
+ readonly cwd: string;
9
+ readonly env: Record<string, string>;
10
+ readonly interruption?: RuntimeInterruption;
11
+ };
12
+ type RuntimeInterruption = {
13
+ readonly status: "pending" | "satisfied";
14
+ readonly description?: string;
15
+ readonly fields?: readonly string[];
16
+ };
17
+ type NornRunWorkflowCompletion = {
18
+ readonly workflowId: string;
19
+ readonly completedAt: string;
20
+ readonly outcome: {
21
+ readonly type: "next";
22
+ readonly workflowId: string;
23
+ } | {
24
+ readonly type: "complete";
25
+ } | {
26
+ readonly type: "fail";
27
+ };
28
+ };
29
+ type NornRunWorkflowFailure = {
30
+ readonly workflowId: string;
31
+ readonly error: string;
32
+ readonly metadata?: NornRunOutcomeMetadata;
33
+ readonly failedAt: string;
34
+ };
35
+ type NornRunWorkflowOutcome = {
36
+ readonly workflowId: string;
37
+ readonly completedAt: string;
38
+ readonly status: "completed" | "failed";
39
+ readonly metadata?: NornRunOutcomeMetadata;
40
+ };
41
+ export type NornRunState = {
42
+ readonly version: typeof RUN_STATE_VERSION;
43
+ readonly id: string;
44
+ readonly name: string;
45
+ readonly entrypointWorkflowId: string;
46
+ readonly workspace: string;
47
+ readonly configOverride?: unknown;
48
+ readonly status: NornRunStatus;
49
+ readonly current: NornRunWorkflowStep | null;
50
+ readonly lastCompleted: NornRunWorkflowCompletion | null;
51
+ readonly outcome: NornRunWorkflowOutcome | null;
52
+ readonly failed: NornRunWorkflowFailure | null;
53
+ readonly startedAt: string;
54
+ readonly updatedAt: string;
55
+ };
56
+ type CreateNornRunStateInput = {
57
+ readonly id: string;
58
+ readonly name: string;
59
+ readonly entrypointWorkflowId: string;
60
+ readonly workspace: string;
61
+ readonly configOverride?: unknown;
62
+ readonly current: NornRunWorkflowStep;
63
+ readonly startedAt: string;
64
+ };
65
+ export declare class NornRunStateStore {
66
+ private readonly path;
67
+ private state;
68
+ private readonly files;
69
+ private constructor();
70
+ static create(runRoot: string, input: CreateNornRunStateInput): Promise<NornRunStateStore>;
71
+ static load(runRoot: string): Promise<NornRunStateStore>;
72
+ currentState(): NornRunState;
73
+ startStep(step: NornRunWorkflowStep): Promise<void>;
74
+ completeWithNext(completedWorkflowId: string, next: NornRunWorkflowStep): Promise<void>;
75
+ completeRun(workflowId: string, metadata: NornRunOutcomeMetadata | undefined): Promise<void>;
76
+ failRun(workflowId: string, metadata: NornRunOutcomeMetadata & {
77
+ readonly summary: string;
78
+ }): Promise<void>;
79
+ interruptCurrent(params: unknown, interruption: {
80
+ readonly description: string;
81
+ readonly fields?: readonly string[];
82
+ }): Promise<void>;
83
+ prepareForResumeAfterRollback(): Promise<void>;
84
+ stopCurrent(): Promise<void>;
85
+ replaceCurrentParams(params: unknown): Promise<void>;
86
+ failCurrent(errorOrMetadata: string | NornRunOutcomeMetadata & {
87
+ readonly summary: string;
88
+ }): Promise<void>;
89
+ private update;
90
+ private write;
91
+ }
92
+ export declare function listRuns(sessionCwd: string): Promise<NornRunInfo[]>;
93
+ export declare function getRunInfo(runRoot: string): Promise<NornRunInfo>;
94
+ export declare function resolveRunRoot(sessionCwd: string, run: string): Promise<string>;
95
+ export {};