@phyzess/pappra 0.1.0-beta.12 → 0.1.0-beta.13

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.
@@ -6,8 +6,8 @@ var __export = (target, all) => {
6
6
 
7
7
  // dist/hosts/integration/hook.js
8
8
  import { randomUUID as randomUUID3 } from "node:crypto";
9
- import { link as link2, mkdir as mkdir3, open as open5, rm as rm2 } from "node:fs/promises";
10
- import { isAbsolute as isAbsolute4, join as join8, relative as relative3, resolve as resolve6, sep as sep3 } from "node:path";
9
+ import { link as link2, mkdir as mkdir4, open as open5, rm as rm2 } from "node:fs/promises";
10
+ import { isAbsolute as isAbsolute4, join as join9, relative as relative3, resolve as resolve6, sep as sep3 } from "node:path";
11
11
 
12
12
  // dist/schemas/diagnostics.js
13
13
  function createDiagnostic(input2) {
@@ -20662,6 +20662,9 @@ var workspaceValidationSchema = external_exports.strictObject({
20662
20662
  executable: executableSchema,
20663
20663
  args: external_exports.array(argumentSchema).max(256)
20664
20664
  });
20665
+ var workspaceContinuitySchema = external_exports.strictObject({
20666
+ autoResume: external_exports.boolean()
20667
+ });
20665
20668
  var workspaceConfigSchema = external_exports.strictObject({
20666
20669
  schema: external_exports.literal(WORKSPACE_SCHEMA),
20667
20670
  workspaceId: external_exports.uuid(),
@@ -20672,7 +20675,8 @@ var workspaceConfigSchema = external_exports.strictObject({
20672
20675
  code: workspaceCodeSchema,
20673
20676
  validation: external_exports.array(workspaceValidationSchema).max(128),
20674
20677
  excludes: external_exports.array(portablePathSchema).max(128),
20675
- extensions: external_exports.record(external_exports.string().min(1).max(128), external_exports.unknown())
20678
+ extensions: external_exports.record(external_exports.string().min(1).max(128), external_exports.unknown()),
20679
+ continuity: workspaceContinuitySchema.optional()
20676
20680
  });
20677
20681
  function pathDiagnostic(value, source, fieldPointer, label) {
20678
20682
  const hint = 'Use a workspace-relative path such as "docs" or "repos/app".';
@@ -23928,6 +23932,42 @@ async function ensureStatePathBoundary(root, path) {
23928
23932
  }
23929
23933
  }
23930
23934
 
23935
+ // dist/app/task-pin.js
23936
+ import { mkdir as mkdir3, readFile, rename as rename2, writeFile } from "node:fs/promises";
23937
+ import { dirname as dirname5, join as join8 } from "node:path";
23938
+ var TASK_PIN_SCHEMA = "pappra/task-pin/1";
23939
+ var TASK_ID2 = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
23940
+ function pinPath(root) {
23941
+ return join8(root, ".pappra", "local", "current-task");
23942
+ }
23943
+ async function readTaskPin(root) {
23944
+ const read = await readTextFileBounded(pinPath(root), 64 * 1024);
23945
+ if (!read.ok)
23946
+ return null;
23947
+ try {
23948
+ const value = JSON.parse(read.value.text);
23949
+ if (typeof value !== "object" || value === null || !("schema" in value) || value.schema !== TASK_PIN_SCHEMA || !("taskId" in value) || typeof value.taskId !== "string" || !TASK_ID2.test(value.taskId)) {
23950
+ return null;
23951
+ }
23952
+ return value;
23953
+ } catch {
23954
+ return null;
23955
+ }
23956
+ }
23957
+ async function readAutoResume(root) {
23958
+ const read = await readFile(join8(root, ".pappra", "workspace.json"), "utf8");
23959
+ try {
23960
+ const raw = JSON.parse(read);
23961
+ if (typeof raw !== "object" || raw === null || !("continuity" in raw)) {
23962
+ return false;
23963
+ }
23964
+ const continuity = raw.continuity;
23965
+ return typeof continuity === "object" && continuity !== null && "autoResume" in continuity && continuity.autoResume === true;
23966
+ } catch {
23967
+ return false;
23968
+ }
23969
+ }
23970
+
23931
23971
  // dist/hosts/integration/support.js
23932
23972
  var HOST_SUPPORT = {
23933
23973
  pi: {
@@ -24015,7 +24055,7 @@ async function privateSegmentsSafe(root, directory) {
24015
24055
  }
24016
24056
  let current = root;
24017
24057
  for (const segment of rel.split(sep3)) {
24018
- current = join8(current, segment);
24058
+ current = join9(current, segment);
24019
24059
  const observed = await observePath(current);
24020
24060
  if (observed.kind === "missing")
24021
24061
  return true;
@@ -24256,7 +24296,7 @@ async function runHostHook(input2, options = {}) {
24256
24296
  });
24257
24297
  }
24258
24298
  const eventKey = value.eventId === null ? null : sha256Digest([value.host, value.event, value.sessionId ?? "", value.eventId].join("\0"));
24259
- const directory = join8(root, ".pappra", "local", "host-events", value.host);
24299
+ const directory = join9(root, ".pappra", "local", "host-events", value.host);
24260
24300
  if (!await privateSegmentsSafe(root, directory)) {
24261
24301
  return result2({
24262
24302
  ok: false,
@@ -24301,7 +24341,7 @@ async function runHostHook(input2, options = {}) {
24301
24341
  ]
24302
24342
  });
24303
24343
  }
24304
- await mkdir3(directory, { recursive: true, mode: 448 });
24344
+ await mkdir4(directory, { recursive: true, mode: 448 });
24305
24345
  const directoryAfter = await observePath(directory);
24306
24346
  const realDirectory = await resolveRealpath(directory);
24307
24347
  const privateAfter = await privateSegmentsSafe(root, directory);
@@ -24326,7 +24366,9 @@ async function runHostHook(input2, options = {}) {
24326
24366
  dev: directoryAfter.stats.dev,
24327
24367
  ino: directoryAfter.stats.ino
24328
24368
  };
24329
- const context = await boundedAdvisory(root, value.event, value.taskId, workspaceRead.value.name);
24369
+ const pinnedTask = await readTaskPin(root);
24370
+ const autoResume = pinnedTask !== null && await readAutoResume(root);
24371
+ const context = await boundedAdvisory(root, value.event, value.taskId ?? (autoResume ? pinnedTask.taskId : null), workspaceRead.value.name);
24330
24372
  if (clock() - started > deadline) {
24331
24373
  return result2({
24332
24374
  ok: false,
@@ -24342,7 +24384,7 @@ async function runHostHook(input2, options = {}) {
24342
24384
  });
24343
24385
  }
24344
24386
  const fileName = eventKey === null ? `${sha256Digest(`${value.observedAt}\0${randomUUID3()}`).slice(7)}.json` : `${eventKey.slice(7)}.json`;
24345
- const path = join8(directory, fileName);
24387
+ const path = join9(directory, fileName);
24346
24388
  const record2 = Buffer.from(`${JSON.stringify({
24347
24389
  schema: "pappra/host-event/1",
24348
24390
  host: value.host,
@@ -6,8 +6,8 @@ var __export = (target, all) => {
6
6
 
7
7
  // dist/hosts/integration/hook.js
8
8
  import { randomUUID as randomUUID3 } from "node:crypto";
9
- import { link as link2, mkdir as mkdir3, open as open5, rm as rm2 } from "node:fs/promises";
10
- import { isAbsolute as isAbsolute4, join as join8, relative as relative3, resolve as resolve6, sep as sep3 } from "node:path";
9
+ import { link as link2, mkdir as mkdir4, open as open5, rm as rm2 } from "node:fs/promises";
10
+ import { isAbsolute as isAbsolute4, join as join9, relative as relative3, resolve as resolve6, sep as sep3 } from "node:path";
11
11
 
12
12
  // dist/schemas/diagnostics.js
13
13
  function createDiagnostic(input2) {
@@ -20667,6 +20667,9 @@ var workspaceValidationSchema = external_exports.strictObject({
20667
20667
  executable: executableSchema,
20668
20668
  args: external_exports.array(argumentSchema).max(256)
20669
20669
  });
20670
+ var workspaceContinuitySchema = external_exports.strictObject({
20671
+ autoResume: external_exports.boolean()
20672
+ });
20670
20673
  var workspaceConfigSchema = external_exports.strictObject({
20671
20674
  schema: external_exports.literal(WORKSPACE_SCHEMA),
20672
20675
  workspaceId: external_exports.uuid(),
@@ -20677,7 +20680,8 @@ var workspaceConfigSchema = external_exports.strictObject({
20677
20680
  code: workspaceCodeSchema,
20678
20681
  validation: external_exports.array(workspaceValidationSchema).max(128),
20679
20682
  excludes: external_exports.array(portablePathSchema).max(128),
20680
- extensions: external_exports.record(external_exports.string().min(1).max(128), external_exports.unknown())
20683
+ extensions: external_exports.record(external_exports.string().min(1).max(128), external_exports.unknown()),
20684
+ continuity: workspaceContinuitySchema.optional()
20681
20685
  });
20682
20686
  function pathDiagnostic(value, source, fieldPointer, label) {
20683
20687
  const hint = 'Use a workspace-relative path such as "docs" or "repos/app".';
@@ -23933,6 +23937,42 @@ async function ensureStatePathBoundary(root, path) {
23933
23937
  }
23934
23938
  }
23935
23939
 
23940
+ // dist/app/task-pin.js
23941
+ import { mkdir as mkdir3, readFile, rename as rename2, writeFile } from "node:fs/promises";
23942
+ import { dirname as dirname5, join as join8 } from "node:path";
23943
+ var TASK_PIN_SCHEMA = "pappra/task-pin/1";
23944
+ var TASK_ID2 = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
23945
+ function pinPath(root) {
23946
+ return join8(root, ".pappra", "local", "current-task");
23947
+ }
23948
+ async function readTaskPin(root) {
23949
+ const read = await readTextFileBounded(pinPath(root), 64 * 1024);
23950
+ if (!read.ok)
23951
+ return null;
23952
+ try {
23953
+ const value = JSON.parse(read.value.text);
23954
+ if (typeof value !== "object" || value === null || !("schema" in value) || value.schema !== TASK_PIN_SCHEMA || !("taskId" in value) || typeof value.taskId !== "string" || !TASK_ID2.test(value.taskId)) {
23955
+ return null;
23956
+ }
23957
+ return value;
23958
+ } catch {
23959
+ return null;
23960
+ }
23961
+ }
23962
+ async function readAutoResume(root) {
23963
+ const read = await readFile(join8(root, ".pappra", "workspace.json"), "utf8");
23964
+ try {
23965
+ const raw = JSON.parse(read);
23966
+ if (typeof raw !== "object" || raw === null || !("continuity" in raw)) {
23967
+ return false;
23968
+ }
23969
+ const continuity = raw.continuity;
23970
+ return typeof continuity === "object" && continuity !== null && "autoResume" in continuity && continuity.autoResume === true;
23971
+ } catch {
23972
+ return false;
23973
+ }
23974
+ }
23975
+
23936
23976
  // dist/hosts/integration/support.js
23937
23977
  var HOST_SUPPORT = {
23938
23978
  pi: {
@@ -24038,7 +24078,7 @@ async function privateSegmentsSafe(root, directory) {
24038
24078
  }
24039
24079
  let current = root;
24040
24080
  for (const segment of rel.split(sep3)) {
24041
- current = join8(current, segment);
24081
+ current = join9(current, segment);
24042
24082
  const observed = await observePath(current);
24043
24083
  if (observed.kind === "missing")
24044
24084
  return true;
@@ -24337,7 +24377,7 @@ async function runHostHook(input2, options = {}) {
24337
24377
  });
24338
24378
  }
24339
24379
  const eventKey = value.eventId === null ? null : sha256Digest([value.host, value.event, value.sessionId ?? "", value.eventId].join("\0"));
24340
- const directory = join8(root, ".pappra", "local", "host-events", value.host);
24380
+ const directory = join9(root, ".pappra", "local", "host-events", value.host);
24341
24381
  if (!await privateSegmentsSafe(root, directory)) {
24342
24382
  return result2({
24343
24383
  ok: false,
@@ -24382,7 +24422,7 @@ async function runHostHook(input2, options = {}) {
24382
24422
  ]
24383
24423
  });
24384
24424
  }
24385
- await mkdir3(directory, { recursive: true, mode: 448 });
24425
+ await mkdir4(directory, { recursive: true, mode: 448 });
24386
24426
  const directoryAfter = await observePath(directory);
24387
24427
  const realDirectory = await resolveRealpath(directory);
24388
24428
  const privateAfter = await privateSegmentsSafe(root, directory);
@@ -24407,7 +24447,9 @@ async function runHostHook(input2, options = {}) {
24407
24447
  dev: directoryAfter.stats.dev,
24408
24448
  ino: directoryAfter.stats.ino
24409
24449
  };
24410
- const context = await boundedAdvisory(root, value.event, value.taskId, workspaceRead.value.name);
24450
+ const pinnedTask = await readTaskPin(root);
24451
+ const autoResume = pinnedTask !== null && await readAutoResume(root);
24452
+ const context = await boundedAdvisory(root, value.event, value.taskId ?? (autoResume ? pinnedTask.taskId : null), workspaceRead.value.name);
24411
24453
  if (clock() - started > deadline) {
24412
24454
  return result2({
24413
24455
  ok: false,
@@ -24423,7 +24465,7 @@ async function runHostHook(input2, options = {}) {
24423
24465
  });
24424
24466
  }
24425
24467
  const fileName = eventKey === null ? `${sha256Digest(`${value.observedAt}\0${randomUUID3()}`).slice(7)}.json` : `${eventKey.slice(7)}.json`;
24426
- const path = join8(directory, fileName);
24468
+ const path = join9(directory, fileName);
24427
24469
  const record2 = Buffer.from(`${JSON.stringify({
24428
24470
  schema: "pappra/host-event/1",
24429
24471
  host: value.host,
@@ -26,13 +26,8 @@ export declare function readClaudeSessionId(file: string): string | null;
26
26
  export declare function readPiSessionId(file: string): string | null;
27
27
  export declare function runNativePilot({ harness, profile, cwd, promptFile, evidenceDir, sessionId, resume, timeoutMs, maxBudgetUsd, outputName, phase, trustProject, extraDirs, clock, assignmentFile, capabilitiesFile, taskRoot, maxAgeMinutes, launchKind, discovery, }: PilotOptions): Promise<{
28
28
  reservation?: never;
29
- settlement?: never;
30
- reservation_id?: never;
31
29
  refused: boolean;
32
30
  admission: {
33
- owner_epoch?: never;
34
- detail?: never;
35
- state?: never;
36
31
  ok: false;
37
32
  reason: string;
38
33
  checks: Record<string, unknown>[];
@@ -41,6 +36,10 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
41
36
  required_skills?: never;
42
37
  required_tools?: never;
43
38
  preflight?: never;
39
+ state?: never;
40
+ detail?: never;
41
+ state_revision?: never;
42
+ owner_epoch?: never;
44
43
  attempt_state?: never;
45
44
  resources?: never;
46
45
  mode?: never;
@@ -51,12 +50,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
51
50
  capability_evidence?: never;
52
51
  assignment_digest?: never;
53
52
  input_revision?: never;
54
- state_revision?: never;
55
53
  } | {
56
- expected?: never;
57
- actual?: never;
58
- owner_epoch?: never;
59
- state?: never;
60
54
  ok: false;
61
55
  reason: string;
62
56
  checks: Record<string, unknown>[];
@@ -64,6 +58,11 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
64
58
  required_skills?: never;
65
59
  required_tools?: never;
66
60
  preflight?: never;
61
+ state?: never;
62
+ expected?: never;
63
+ actual?: never;
64
+ state_revision?: never;
65
+ owner_epoch?: never;
67
66
  attempt_state?: never;
68
67
  resources?: never;
69
68
  mode?: never;
@@ -74,19 +73,19 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
74
73
  capability_evidence?: never;
75
74
  assignment_digest?: never;
76
75
  input_revision?: never;
77
- state_revision?: never;
78
76
  } | {
79
- expected?: never;
80
- actual?: never;
81
- owner_epoch?: never;
82
- detail?: never;
83
- state?: never;
84
77
  ok: false;
85
78
  reason: string;
86
79
  checks: Record<string, unknown>[];
87
80
  required_skills?: never;
88
81
  required_tools?: never;
89
82
  preflight?: never;
83
+ state?: never;
84
+ detail?: never;
85
+ expected?: never;
86
+ actual?: never;
87
+ state_revision?: never;
88
+ owner_epoch?: never;
90
89
  attempt_state?: never;
91
90
  resources?: never;
92
91
  mode?: never;
@@ -97,11 +96,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
97
96
  capability_evidence?: never;
98
97
  assignment_digest?: never;
99
98
  input_revision?: never;
100
- state_revision?: never;
101
99
  } | {
102
- owner_epoch?: never;
103
- detail?: never;
104
- state?: never;
105
100
  ok: false;
106
101
  reason: string;
107
102
  checks: Record<string, unknown>[];
@@ -110,6 +105,10 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
110
105
  required_skills?: never;
111
106
  required_tools?: never;
112
107
  preflight?: never;
108
+ state?: never;
109
+ detail?: never;
110
+ state_revision?: never;
111
+ owner_epoch?: never;
113
112
  attempt_state?: never;
114
113
  resources?: never;
115
114
  mode?: never;
@@ -120,11 +119,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
120
119
  capability_evidence?: never;
121
120
  assignment_digest?: never;
122
121
  input_revision?: never;
123
- state_revision?: never;
124
122
  } | {
125
- owner_epoch?: never;
126
- detail?: never;
127
- state?: never;
128
123
  ok: false;
129
124
  reason: string;
130
125
  checks: Record<string, unknown>[];
@@ -138,6 +133,10 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
138
133
  required_skills?: never;
139
134
  required_tools?: never;
140
135
  preflight?: never;
136
+ state?: never;
137
+ detail?: never;
138
+ state_revision?: never;
139
+ owner_epoch?: never;
141
140
  attempt_state?: never;
142
141
  resources?: never;
143
142
  mode?: never;
@@ -148,10 +147,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
148
147
  capability_evidence?: never;
149
148
  assignment_digest?: never;
150
149
  input_revision?: never;
151
- state_revision?: never;
152
150
  } | {
153
- owner_epoch?: never;
154
- state?: never;
155
151
  ok: false;
156
152
  reason: string;
157
153
  checks: Record<string, unknown>[];
@@ -161,6 +157,9 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
161
157
  required_skills?: never;
162
158
  required_tools?: never;
163
159
  preflight?: never;
160
+ state?: never;
161
+ state_revision?: never;
162
+ owner_epoch?: never;
164
163
  attempt_state?: never;
165
164
  resources?: never;
166
165
  mode?: never;
@@ -171,19 +170,19 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
171
170
  capability_evidence?: never;
172
171
  assignment_digest?: never;
173
172
  input_revision?: never;
174
- state_revision?: never;
175
173
  } | {
176
- expected?: never;
177
- actual?: never;
178
- owner_epoch?: never;
179
- detail?: never;
180
- state?: never;
181
174
  ok: false;
182
175
  reason: string;
183
176
  checks: Record<string, unknown>[];
184
177
  required_skills: number;
185
178
  required_tools: number;
186
179
  preflight?: never;
180
+ state?: never;
181
+ detail?: never;
182
+ expected?: never;
183
+ actual?: never;
184
+ state_revision?: never;
185
+ owner_epoch?: never;
187
186
  attempt_state?: never;
188
187
  resources?: never;
189
188
  mode?: never;
@@ -194,13 +193,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
194
193
  capability_evidence?: never;
195
194
  assignment_digest?: never;
196
195
  input_revision?: never;
197
- state_revision?: never;
198
196
  } | {
199
- expected?: never;
200
- actual?: never;
201
- owner_epoch?: never;
202
- detail?: never;
203
- state?: never;
204
197
  required_skills?: never;
205
198
  required_tools?: never;
206
199
  ok: false;
@@ -213,9 +206,9 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
213
206
  warnings: never[];
214
207
  task_id?: never;
215
208
  assignment_id?: never;
209
+ attempt?: never;
216
210
  checked_at?: never;
217
211
  limits?: never;
218
- attempt?: never;
219
212
  } | {
220
213
  status: string;
221
214
  task_id: string;
@@ -227,6 +220,12 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
227
220
  warnings: import("../collab/preflight.js").Check[];
228
221
  limits: string[];
229
222
  };
223
+ state?: never;
224
+ detail?: never;
225
+ expected?: never;
226
+ actual?: never;
227
+ state_revision?: never;
228
+ owner_epoch?: never;
230
229
  attempt_state?: never;
231
230
  resources?: never;
232
231
  mode?: never;
@@ -237,12 +236,7 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
237
236
  capability_evidence?: never;
238
237
  assignment_digest?: never;
239
238
  input_revision?: never;
240
- state_revision?: never;
241
239
  } | {
242
- expected?: never;
243
- actual?: never;
244
- owner_epoch?: never;
245
- detail?: never;
246
240
  required_skills?: never;
247
241
  required_tools?: never;
248
242
  preflight?: never;
@@ -250,6 +244,11 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
250
244
  reason: string;
251
245
  checks: Record<string, unknown>[];
252
246
  state: string;
247
+ detail?: never;
248
+ expected?: never;
249
+ actual?: never;
250
+ state_revision?: never;
251
+ owner_epoch?: never;
253
252
  attempt_state?: never;
254
253
  resources?: never;
255
254
  mode?: never;
@@ -260,19 +259,19 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
260
259
  capability_evidence?: never;
261
260
  assignment_digest?: never;
262
261
  input_revision?: never;
263
- state_revision?: never;
264
262
  } | {
265
- owner_epoch?: never;
266
- detail?: never;
267
- state?: never;
268
263
  required_skills?: never;
269
264
  required_tools?: never;
270
265
  preflight?: never;
266
+ state?: never;
271
267
  ok: false;
272
268
  reason: string;
273
269
  checks: Record<string, unknown>[];
274
270
  expected: (string | null)[];
275
271
  actual: string;
272
+ detail?: never;
273
+ state_revision?: never;
274
+ owner_epoch?: never;
276
275
  attempt_state?: never;
277
276
  resources?: never;
278
277
  mode?: never;
@@ -283,20 +282,20 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
283
282
  capability_evidence?: never;
284
283
  assignment_digest?: never;
285
284
  input_revision?: never;
286
- state_revision?: never;
287
285
  } | {
288
- expected?: never;
289
- actual?: never;
290
- owner_epoch?: never;
291
- state?: never;
292
286
  required_skills?: never;
293
287
  required_tools?: never;
294
288
  preflight?: never;
289
+ state?: never;
295
290
  ok: false;
296
291
  reason: string;
297
292
  checks: Record<string, unknown>[];
298
293
  resources: Record<string, unknown>[];
299
294
  detail: string;
295
+ expected?: never;
296
+ actual?: never;
297
+ state_revision?: never;
298
+ owner_epoch?: never;
300
299
  attempt_state?: never;
301
300
  mode?: never;
302
301
  launch_kind?: never;
@@ -306,20 +305,20 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
306
305
  capability_evidence?: never;
307
306
  assignment_digest?: never;
308
307
  input_revision?: never;
309
- state_revision?: never;
310
308
  } | {
311
- owner_epoch?: never;
312
- detail?: never;
313
- state?: never;
314
309
  required_skills?: never;
315
310
  required_tools?: never;
316
311
  preflight?: never;
312
+ state?: never;
313
+ detail?: never;
317
314
  ok: false;
318
315
  reason: string;
319
316
  checks: Record<string, unknown>[];
320
317
  resources: Record<string, unknown>[];
321
318
  expected: number | undefined;
322
319
  actual: number;
320
+ state_revision?: never;
321
+ owner_epoch?: never;
323
322
  attempt_state?: never;
324
323
  mode?: never;
325
324
  launch_kind?: never;
@@ -329,20 +328,20 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
329
328
  capability_evidence?: never;
330
329
  assignment_digest?: never;
331
330
  input_revision?: never;
332
- state_revision?: never;
333
331
  } | {
334
- expected?: never;
335
- actual?: never;
336
- owner_epoch?: never;
337
- detail?: never;
338
- state?: never;
339
332
  required_skills?: never;
340
333
  required_tools?: never;
341
334
  preflight?: never;
335
+ state?: never;
336
+ detail?: never;
337
+ expected?: never;
338
+ actual?: never;
342
339
  ok: false;
343
340
  reason: string;
344
341
  checks: Record<string, unknown>[];
345
342
  resources: Record<string, unknown>[];
343
+ state_revision?: never;
344
+ owner_epoch?: never;
346
345
  attempt_state?: never;
347
346
  mode?: never;
348
347
  launch_kind?: never;
@@ -352,7 +351,6 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
352
351
  capability_evidence?: never;
353
352
  assignment_digest?: never;
354
353
  input_revision?: never;
355
- state_revision?: never;
356
354
  };
357
355
  reason: string;
358
356
  process?: never;
@@ -363,19 +361,19 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
363
361
  stdoutFile?: never;
364
362
  stderrFile?: never;
365
363
  nativeEvidence?: never;
366
- } | {
367
- settlement?: never;
368
364
  reservation_id?: never;
365
+ settlement?: never;
366
+ } | {
369
367
  refused: boolean;
370
368
  admission: {
371
- reason?: never;
372
- expected?: never;
373
- actual?: never;
374
- detail?: never;
375
- state?: never;
376
369
  required_skills?: never;
377
370
  required_tools?: never;
378
371
  preflight?: never;
372
+ state?: never;
373
+ detail?: never;
374
+ expected?: never;
375
+ actual?: never;
376
+ reason?: never;
379
377
  ok: true;
380
378
  checks: Record<string, unknown>[];
381
379
  state_revision: number;
@@ -405,12 +403,13 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
405
403
  stdoutFile?: never;
406
404
  stderrFile?: never;
407
405
  nativeEvidence?: never;
406
+ reservation_id?: never;
407
+ settlement?: never;
408
408
  } | {
409
409
  reason?: never;
410
410
  reservation?: never;
411
- admission?: never;
412
411
  refused?: never;
413
- reservation_id?: never;
412
+ admission?: never;
414
413
  execution: null;
415
414
  evidenceError: string;
416
415
  settlement: {
@@ -436,12 +435,12 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
436
435
  stdoutFile?: never;
437
436
  stderrFile?: never;
438
437
  nativeEvidence?: never;
438
+ reservation_id?: never;
439
439
  } | {
440
440
  reason?: never;
441
441
  reservation?: never;
442
- admission?: never;
443
442
  refused?: never;
444
- reservation_id?: never;
443
+ admission?: never;
445
444
  process?: never;
446
445
  execution: Record<string, unknown> | null;
447
446
  evidenceError: string;
@@ -459,11 +458,12 @@ export declare function runNativePilot({ harness, profile, cwd, promptFile, evid
459
458
  stdoutFile?: never;
460
459
  stderrFile?: never;
461
460
  nativeEvidence?: never;
461
+ reservation_id?: never;
462
462
  } | {
463
463
  reason?: never;
464
464
  reservation?: never;
465
- admission?: never;
466
465
  refused?: never;
466
+ admission?: never;
467
467
  process?: never;
468
468
  evidenceError?: never;
469
469
  execution: Record<string, unknown>;
@@ -0,0 +1,30 @@
1
+ import type { Diagnostic } from '../schemas/diagnostics.js';
2
+ import type { DocumentKind } from '../schemas/document.js';
3
+ export interface DocumentScanCandidate {
4
+ readonly path: string;
5
+ readonly kind: DocumentKind;
6
+ readonly visibility: 'private' | 'shareable';
7
+ }
8
+ export interface DocumentScanResult {
9
+ readonly ok: boolean;
10
+ readonly schema: 'pappra/docs-scan/1';
11
+ readonly mode: 'plan' | 'apply';
12
+ readonly workspaceRoot: string;
13
+ readonly candidates: readonly DocumentScanCandidate[];
14
+ readonly registered: readonly unknown[];
15
+ readonly skipped: number;
16
+ readonly nextActions: readonly string[];
17
+ readonly diagnostics: readonly Diagnostic[];
18
+ }
19
+ export type DocumentScanFailure = {
20
+ readonly ok: false;
21
+ readonly message: string;
22
+ } | DocumentScanResult;
23
+ export declare function classifyScannedDocumentKind(path: string): DocumentKind;
24
+ /**
25
+ * Registers documents discovered under the configured knowledge sources.
26
+ * Without apply this is read-only and reports the candidates.
27
+ */
28
+ export declare function scanDiscoveredDocuments(root: string, options: {
29
+ readonly apply: boolean;
30
+ }): Promise<DocumentScanFailure>;