@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.
- package/README.md +2 -1
- package/assets/integrations/skills/pappra/references/operations.md +2 -0
- package/dist/app/collab-from.d.ts +35 -0
- package/dist/app/collab-from.js +84 -0
- package/dist/app/host-mcp.d.ts +25 -0
- package/dist/app/host-mcp.js +227 -0
- package/dist/app/host-probe.d.ts +16 -0
- package/dist/app/host-probe.js +125 -0
- package/dist/app/task-pin.d.ts +23 -0
- package/dist/app/task-pin.js +113 -0
- package/dist/cli/commands/docs.js +12 -76
- package/dist/cli/commands/host.d.ts +3 -1
- package/dist/cli/commands/host.js +55 -1
- package/dist/cli/commands/mcp.d.ts +8 -0
- package/dist/cli/commands/mcp.js +13 -0
- package/dist/cli/commands/task.d.ts +10 -0
- package/dist/cli/commands/task.js +76 -0
- package/dist/cli/run.js +134 -4
- package/dist/hosts/integration/hook.js +4 -1
- package/dist/hosts/integration/pappra-extension-runtime.mjs +50 -8
- package/dist/hosts/integration/pappra-hook.mjs +50 -8
- package/dist/hosts/pilot.d.ts +77 -77
- package/dist/knowledge/scan.d.ts +30 -0
- package/dist/knowledge/scan.js +91 -0
- package/dist/mcp/server.d.ts +11 -0
- package/dist/mcp/server.js +518 -0
- package/dist/schemas/workspace.d.ts +6 -0
- package/dist/schemas/workspace.js +4 -0
- package/package.json +2 -1
- package/skills/pappra/references/operations.md +2 -0
|
@@ -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
|
|
10
|
-
import { isAbsolute as isAbsolute4, join as
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
10
|
-
import { isAbsolute as isAbsolute4, join as
|
|
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 =
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
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,
|
package/dist/hosts/pilot.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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>;
|