@caupulican/pi-adaptative 0.94.0 → 0.94.1
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/CHANGELOG.md +16 -0
- package/dist/core/agent-paths.d.ts +2 -0
- package/dist/core/agent-paths.d.ts.map +1 -1
- package/dist/core/agent-paths.js +7 -0
- package/dist/core/agent-paths.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +5 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/background-lane-controller.d.ts +8 -0
- package/dist/core/background-lane-controller.d.ts.map +1 -1
- package/dist/core/background-lane-controller.js +75 -5
- package/dist/core/background-lane-controller.js.map +1 -1
- package/dist/core/background-tool-task-controller.d.ts +15 -0
- package/dist/core/background-tool-task-controller.d.ts.map +1 -1
- package/dist/core/background-tool-task-controller.js +122 -15
- package/dist/core/background-tool-task-controller.js.map +1 -1
- package/dist/core/context/long-term-memory-trigger.d.ts +3 -1
- package/dist/core/context/long-term-memory-trigger.d.ts.map +1 -1
- package/dist/core/context/long-term-memory-trigger.js +1 -1
- package/dist/core/context/long-term-memory-trigger.js.map +1 -1
- package/dist/core/context/okf-memory-provider.d.ts +3 -0
- package/dist/core/context/okf-memory-provider.d.ts.map +1 -1
- package/dist/core/context/okf-memory-provider.js +66 -31
- package/dist/core/context/okf-memory-provider.js.map +1 -1
- package/dist/core/context/okf-memory.d.ts +18 -1
- package/dist/core/context/okf-memory.d.ts.map +1 -1
- package/dist/core/context/okf-memory.js +48 -0
- package/dist/core/context/okf-memory.js.map +1 -1
- package/dist/core/delegation/worker-agent-control.d.ts +4 -0
- package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
- package/dist/core/delegation/worker-agent-control.js.map +1 -1
- package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
- package/dist/core/delegation/worker-execution-policy.js +1 -1
- package/dist/core/delegation/worker-execution-policy.js.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.d.ts +10 -0
- package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
- package/dist/core/delegation/worker-notification-coordinator.js +69 -3
- package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.d.ts +17 -0
- package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
- package/dist/core/foreground-terminal-handoff-controller.js +78 -10
- package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
- package/dist/core/learning/learning-audit.d.ts +5 -1
- package/dist/core/learning/learning-audit.d.ts.map +1 -1
- package/dist/core/learning/learning-audit.js +32 -1
- package/dist/core/learning/learning-audit.js.map +1 -1
- package/dist/core/learning/reflection-engine.d.ts +20 -0
- package/dist/core/learning/reflection-engine.d.ts.map +1 -1
- package/dist/core/learning/reflection-engine.js +58 -0
- package/dist/core/learning/reflection-engine.js.map +1 -1
- package/dist/core/memory/okf-project-memory-store.d.ts +28 -0
- package/dist/core/memory/okf-project-memory-store.d.ts.map +1 -0
- package/dist/core/memory/okf-project-memory-store.js +111 -0
- package/dist/core/memory/okf-project-memory-store.js.map +1 -0
- package/dist/core/memory/providers/file-store.d.ts +42 -1
- package/dist/core/memory/providers/file-store.d.ts.map +1 -1
- package/dist/core/memory/providers/file-store.js +274 -13
- package/dist/core/memory/providers/file-store.js.map +1 -1
- package/dist/core/memory-controller.d.ts +10 -1
- package/dist/core/memory-controller.d.ts.map +1 -1
- package/dist/core/memory-controller.js +72 -8
- package/dist/core/memory-controller.js.map +1 -1
- package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
- package/dist/core/provider-prompt-contracts.js +9 -19
- package/dist/core/provider-prompt-contracts.js.map +1 -1
- package/dist/core/reflection-controller.d.ts +7 -0
- package/dist/core/reflection-controller.d.ts.map +1 -1
- package/dist/core/reflection-controller.js +94 -15
- package/dist/core/reflection-controller.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +2 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +4 -0
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +2 -0
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +83 -21
- package/dist/core/tools/delegate.js.map +1 -1
- package/dist/core/tools/tool-task.d.ts +1 -0
- package/dist/core/tools/tool-task.d.ts.map +1 -1
- package/dist/core/tools/tool-task.js +13 -8
- package/dist/core/tools/tool-task.js.map +1 -1
- package/dist/core/util/atomic-file.d.ts +2 -0
- package/dist/core/util/atomic-file.d.ts.map +1 -1
- package/dist/core/util/atomic-file.js +4 -0
- package/dist/core/util/atomic-file.js.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
- package/dist/modes/interactive/auto-learn-controller.js +2 -0
- package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
- package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
- package/dist/modes/interactive/components/activity-lane.js +12 -23
- package/dist/modes/interactive/components/activity-lane.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +125 -1
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { lstatSync, opendirSync } from "node:fs";
|
|
2
2
|
import { join, relative } from "node:path";
|
|
3
|
+
import { isPathWithinScope } from "../autonomy/path-scope.js";
|
|
4
|
+
import { readBoundedTextFileSync } from "../util/bounded-file.js";
|
|
3
5
|
import { fetchLocalMemoryItem, searchLocalMemoryItems, tokenOverlapScore } from "./local-memory-search.js";
|
|
4
6
|
import { PI_OKF_PROVIDER_ID, parseOkfMemoryDocument, } from "./okf-memory.js";
|
|
5
7
|
const DEFAULT_MAX_FILE_BYTES = 512_000;
|
|
6
8
|
const DEFAULT_MAX_DOCUMENTS = 1_000;
|
|
9
|
+
const MAX_DIRECTORY_ENTRIES = 4_096;
|
|
10
|
+
const MAX_DIRECTORIES = 256;
|
|
7
11
|
const OKF_EXTENSIONS = [".okf.md", ".okf", ".md"];
|
|
8
12
|
const OKF_PROVIDER_CAPABILITIES = {
|
|
9
13
|
search: true,
|
|
@@ -23,38 +27,77 @@ function isOkfPath(path) {
|
|
|
23
27
|
function walkFiles(rootDir, maxDocuments) {
|
|
24
28
|
const files = [];
|
|
25
29
|
const pending = [rootDir];
|
|
26
|
-
|
|
30
|
+
let visitedDirectories = 0;
|
|
31
|
+
try {
|
|
32
|
+
const root = lstatSync(rootDir);
|
|
33
|
+
if (!root.isDirectory() || root.isSymbolicLink())
|
|
34
|
+
return files;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return files;
|
|
38
|
+
}
|
|
39
|
+
while (pending.length > 0 && files.length < maxDocuments && visitedDirectories < MAX_DIRECTORIES) {
|
|
27
40
|
const dir = pending.pop();
|
|
28
41
|
if (dir === undefined)
|
|
29
42
|
continue;
|
|
30
|
-
|
|
43
|
+
visitedDirectories += 1;
|
|
44
|
+
let directory;
|
|
31
45
|
try {
|
|
32
|
-
|
|
46
|
+
directory = opendirSync(dir);
|
|
33
47
|
}
|
|
34
48
|
catch {
|
|
35
49
|
continue;
|
|
36
50
|
}
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
stat = statSync(path);
|
|
42
|
-
}
|
|
43
|
-
catch {
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
if (stat.isDirectory()) {
|
|
47
|
-
pending.push(path);
|
|
48
|
-
}
|
|
49
|
-
else if (stat.isFile() && isOkfPath(path)) {
|
|
50
|
-
files.push(path);
|
|
51
|
-
if (files.length >= maxDocuments)
|
|
51
|
+
try {
|
|
52
|
+
const entries = [];
|
|
53
|
+
for (let entry = directory.readSync(); entry; entry = directory.readSync()) {
|
|
54
|
+
if (entries.length >= MAX_DIRECTORY_ENTRIES)
|
|
52
55
|
break;
|
|
56
|
+
if (entry.isSymbolicLink())
|
|
57
|
+
continue;
|
|
58
|
+
entries.push({ name: entry.name, directory: entry.isDirectory(), file: entry.isFile() });
|
|
53
59
|
}
|
|
60
|
+
entries.sort((left, right) => left.name.localeCompare(right.name));
|
|
61
|
+
for (const entry of entries) {
|
|
62
|
+
const path = join(dir, entry.name);
|
|
63
|
+
if (entry.directory)
|
|
64
|
+
pending.push(path);
|
|
65
|
+
else if (entry.file && isOkfPath(path)) {
|
|
66
|
+
files.push(path);
|
|
67
|
+
if (files.length >= maxDocuments)
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
directory.closeSync();
|
|
54
74
|
}
|
|
55
75
|
}
|
|
56
76
|
return files;
|
|
57
77
|
}
|
|
78
|
+
function isPortableAbsolutePath(value) {
|
|
79
|
+
return value.startsWith("/") || /^[a-zA-Z]:[\\/]/.test(value) || value.startsWith("\\\\");
|
|
80
|
+
}
|
|
81
|
+
function belongsToSelectedProject(entry, options) {
|
|
82
|
+
const item = entry.parsed.item;
|
|
83
|
+
if (item === undefined)
|
|
84
|
+
return false;
|
|
85
|
+
if (options.projectId === undefined)
|
|
86
|
+
return true;
|
|
87
|
+
if (item.scope === "user" || item.scope === "global")
|
|
88
|
+
return true;
|
|
89
|
+
if (item.scope !== "project")
|
|
90
|
+
return false;
|
|
91
|
+
if (entry.parsed.projectId !== undefined)
|
|
92
|
+
return entry.parsed.projectId === options.projectId.toLowerCase();
|
|
93
|
+
const normalizedRelativePath = entry.relativePath.replaceAll("\\", "/");
|
|
94
|
+
if (normalizedRelativePath.startsWith(`projects/${options.projectId.toLowerCase()}/`))
|
|
95
|
+
return true;
|
|
96
|
+
const projectRoot = options.projectRoot;
|
|
97
|
+
if (projectRoot === undefined)
|
|
98
|
+
return false;
|
|
99
|
+
return item.evidenceRefs.some((ref) => ref.type === "external" && isPortableAbsolutePath(ref.id) && isPathWithinScope(ref.id, projectRoot));
|
|
100
|
+
}
|
|
58
101
|
function scoreItem(queryTokens, item) {
|
|
59
102
|
return tokenOverlapScore(queryTokens, [item.title, item.summary, item.content]);
|
|
60
103
|
}
|
|
@@ -68,18 +111,9 @@ export function loadOkfMemoryBundle(options) {
|
|
|
68
111
|
const entries = [];
|
|
69
112
|
const diagnostics = [];
|
|
70
113
|
for (const path of walkFiles(options.rootDir, maxDocuments)) {
|
|
71
|
-
let stat;
|
|
72
|
-
try {
|
|
73
|
-
stat = statSync(path);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (stat.size > maxFileBytes)
|
|
79
|
-
continue;
|
|
80
114
|
let content;
|
|
81
115
|
try {
|
|
82
|
-
content =
|
|
116
|
+
content = readBoundedTextFileSync(path, maxFileBytes, "OKF memory document");
|
|
83
117
|
}
|
|
84
118
|
catch {
|
|
85
119
|
continue;
|
|
@@ -92,8 +126,9 @@ export function loadOkfMemoryBundle(options) {
|
|
|
92
126
|
});
|
|
93
127
|
if (parsed.diagnostics.length > 0)
|
|
94
128
|
diagnostics.push({ path, diagnostics: parsed.diagnostics });
|
|
95
|
-
|
|
96
|
-
|
|
129
|
+
const entry = { path, relativePath, parsed };
|
|
130
|
+
if (parsed.item !== undefined && belongsToSelectedProject(entry, options))
|
|
131
|
+
entries.push(entry);
|
|
97
132
|
}
|
|
98
133
|
return { entries, diagnostics };
|
|
99
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okf-memory-provider.js","sourceRoot":"","sources":["../../../src/core/context/okf-memory-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { readdirSync, readFileSync, type Stats, statSync } from \"node:fs\";\nimport { join, relative } from \"node:path\";\nimport type { MemoryScope } from \"./context-item.ts\";\nimport { fetchLocalMemoryItem, searchLocalMemoryItems, tokenOverlapScore } from \"./local-memory-search.ts\";\nimport type {\n\tMemoryItem,\n\tMemoryItemKind,\n\tMemoryProvider,\n\tMemoryProviderCapabilities,\n\tMemoryRef,\n\tMemorySearchRequest,\n\tMemorySearchResult,\n} from \"./memory-provider-contract.ts\";\nimport {\n\ttype OkfMemoryDiagnostic,\n\ttype ParsedOkfMemoryDocument,\n\tPI_OKF_PROVIDER_ID,\n\tparseOkfMemoryDocument,\n} from \"./okf-memory.ts\";\n\nexport interface OkfMemoryProviderOptions {\n\trootDir: string;\n\tproviderId?: string;\n\tmaxFileBytes?: number;\n\tmaxDocuments?: number;\n}\n\nexport interface OkfMemoryLoadEntry {\n\tpath: string;\n\trelativePath: string;\n\tparsed: ParsedOkfMemoryDocument;\n}\n\nexport interface OkfMemoryLoadReport {\n\tentries: OkfMemoryLoadEntry[];\n\tdiagnostics: Array<{ path: string; diagnostics: OkfMemoryDiagnostic[] }>;\n}\n\nconst DEFAULT_MAX_FILE_BYTES = 512_000;\nconst DEFAULT_MAX_DOCUMENTS = 1_000;\nconst OKF_EXTENSIONS = [\".okf.md\", \".okf\", \".md\"];\n\nconst OKF_PROVIDER_CAPABILITIES: MemoryProviderCapabilities = {\n\tsearch: true,\n\tfetch: true,\n\twrite: false,\n\tdelete: false,\n\tshortTerm: false,\n\tlongTerm: true,\n\tgraph: false,\n\tcitations: true,\n\tscopes: [\"session\", \"project\", \"user\", \"global\"],\n\tlocalOnly: true,\n};\n\nfunction isOkfPath(path: string): boolean {\n\treturn OKF_EXTENSIONS.some((extension) => path.endsWith(extension));\n}\n\nfunction walkFiles(rootDir: string, maxDocuments: number): string[] {\n\tconst files: string[] = [];\n\tconst pending = [rootDir];\n\twhile (pending.length > 0 && files.length < maxDocuments) {\n\t\tconst dir = pending.pop();\n\t\tif (dir === undefined) continue;\n\t\tlet entries: string[];\n\t\ttry {\n\t\t\tentries = readdirSync(dir).sort();\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tfor (const entry of entries) {\n\t\t\tconst path = join(dir, entry);\n\t\t\tlet stat: Stats;\n\t\t\ttry {\n\t\t\t\tstat = statSync(path);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (stat.isDirectory()) {\n\t\t\t\tpending.push(path);\n\t\t\t} else if (stat.isFile() && isOkfPath(path)) {\n\t\t\t\tfiles.push(path);\n\t\t\t\tif (files.length >= maxDocuments) break;\n\t\t\t}\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction scoreItem(queryTokens: ReadonlySet<string>, item: MemoryItem): number {\n\treturn tokenOverlapScore(queryTokens, [item.title, item.summary, item.content]);\n}\n\nfunction reasonForMatch(score: number, item: MemoryItem): string {\n\treturn `local OKF match score ${score.toFixed(3)} for ${item.providerId}/${item.scope}/${item.kind}`;\n}\n\nexport function loadOkfMemoryBundle(options: OkfMemoryProviderOptions): OkfMemoryLoadReport {\n\tconst providerId = options.providerId ?? PI_OKF_PROVIDER_ID;\n\tconst maxFileBytes = options.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES;\n\tconst maxDocuments = options.maxDocuments ?? DEFAULT_MAX_DOCUMENTS;\n\tconst entries: OkfMemoryLoadEntry[] = [];\n\tconst diagnostics: Array<{ path: string; diagnostics: OkfMemoryDiagnostic[] }> = [];\n\n\tfor (const path of walkFiles(options.rootDir, maxDocuments)) {\n\t\tlet stat: Stats;\n\t\ttry {\n\t\t\tstat = statSync(path);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\tif (stat.size > maxFileBytes) continue;\n\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = readFileSync(path, \"utf8\");\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst relativePath = relative(options.rootDir, path);\n\t\tconst parsed = parseOkfMemoryDocument(content, {\n\t\t\tproviderId,\n\t\t\turi: `okf:${relativePath}`,\n\t\t\tfallbackId: relativePath,\n\t\t});\n\t\tif (parsed.diagnostics.length > 0) diagnostics.push({ path, diagnostics: parsed.diagnostics });\n\t\tif (parsed.item !== undefined) entries.push({ path, relativePath, parsed });\n\t}\n\n\treturn { entries, diagnostics };\n}\n\nexport function createOkfMemoryProvider(options: OkfMemoryProviderOptions): MemoryProvider {\n\tlet cachedReport: OkfMemoryLoadReport | undefined;\n\n\tfunction report(): OkfMemoryLoadReport {\n\t\tcachedReport ??= loadOkfMemoryBundle(options);\n\t\treturn cachedReport;\n\t}\n\n\tfunction items(): MemoryItem[] {\n\t\treturn report().entries.flatMap((entry) => (entry.parsed.item === undefined ? [] : [entry.parsed.item]));\n\t}\n\n\treturn {\n\t\tid: options.providerId ?? PI_OKF_PROVIDER_ID,\n\t\tlabel: \"Pi OKF Memory\",\n\t\tsource: \"pi_native\",\n\t\tcapabilities: OKF_PROVIDER_CAPABILITIES,\n\n\t\tasync search(request: MemorySearchRequest): Promise<MemorySearchResult[]> {\n\t\t\treturn searchLocalMemoryItems(items(), request, { score: scoreItem, reason: reasonForMatch });\n\t\t},\n\n\t\tasync fetch(ref: MemoryRef): Promise<MemoryItem | undefined> {\n\t\t\treturn fetchLocalMemoryItem(items(), options.providerId ?? PI_OKF_PROVIDER_ID, ref);\n\t\t},\n\t};\n}\n\nexport function listOkfMemoryScopes(report: OkfMemoryLoadReport): MemoryScope[] {\n\treturn Array.from(\n\t\tnew Set(report.entries.flatMap((entry) => (entry.parsed.item ? [entry.parsed.item.scope] : []))),\n\t).sort();\n}\n\nexport function listOkfMemoryKinds(report: OkfMemoryLoadReport): MemoryItemKind[] {\n\treturn Array.from(\n\t\tnew Set(report.entries.flatMap((entry) => (entry.parsed.item ? [entry.parsed.item.kind] : []))),\n\t).sort();\n}\n"]}
|
|
1
|
+
{"version":3,"file":"okf-memory-provider.js","sourceRoot":"","sources":["../../../src/core/context/okf-memory-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { lstatSync, opendirSync } from \"node:fs\";\nimport { join, relative } from \"node:path\";\nimport { isPathWithinScope } from \"../autonomy/path-scope.ts\";\nimport { readBoundedTextFileSync } from \"../util/bounded-file.ts\";\nimport type { MemoryScope } from \"./context-item.ts\";\nimport { fetchLocalMemoryItem, searchLocalMemoryItems, tokenOverlapScore } from \"./local-memory-search.ts\";\nimport type {\n\tMemoryItem,\n\tMemoryItemKind,\n\tMemoryProvider,\n\tMemoryProviderCapabilities,\n\tMemoryRef,\n\tMemorySearchRequest,\n\tMemorySearchResult,\n} from \"./memory-provider-contract.ts\";\nimport {\n\ttype OkfMemoryDiagnostic,\n\ttype ParsedOkfMemoryDocument,\n\tPI_OKF_PROVIDER_ID,\n\tparseOkfMemoryDocument,\n} from \"./okf-memory.ts\";\n\nexport interface OkfMemoryProviderOptions {\n\trootDir: string;\n\tproviderId?: string;\n\tmaxFileBytes?: number;\n\tmaxDocuments?: number;\n\t/** Current workspace identity. When set, foreign project-scoped records are excluded. */\n\tprojectId?: string;\n\tprojectRoot?: string;\n}\n\nexport interface OkfMemoryLoadEntry {\n\tpath: string;\n\trelativePath: string;\n\tparsed: ParsedOkfMemoryDocument;\n}\n\nexport interface OkfMemoryLoadReport {\n\tentries: OkfMemoryLoadEntry[];\n\tdiagnostics: Array<{ path: string; diagnostics: OkfMemoryDiagnostic[] }>;\n}\n\nconst DEFAULT_MAX_FILE_BYTES = 512_000;\nconst DEFAULT_MAX_DOCUMENTS = 1_000;\nconst MAX_DIRECTORY_ENTRIES = 4_096;\nconst MAX_DIRECTORIES = 256;\nconst OKF_EXTENSIONS = [\".okf.md\", \".okf\", \".md\"];\n\nconst OKF_PROVIDER_CAPABILITIES: MemoryProviderCapabilities = {\n\tsearch: true,\n\tfetch: true,\n\twrite: false,\n\tdelete: false,\n\tshortTerm: false,\n\tlongTerm: true,\n\tgraph: false,\n\tcitations: true,\n\tscopes: [\"session\", \"project\", \"user\", \"global\"],\n\tlocalOnly: true,\n};\n\nfunction isOkfPath(path: string): boolean {\n\treturn OKF_EXTENSIONS.some((extension) => path.endsWith(extension));\n}\n\nfunction walkFiles(rootDir: string, maxDocuments: number): string[] {\n\tconst files: string[] = [];\n\tconst pending = [rootDir];\n\tlet visitedDirectories = 0;\n\ttry {\n\t\tconst root = lstatSync(rootDir);\n\t\tif (!root.isDirectory() || root.isSymbolicLink()) return files;\n\t} catch {\n\t\treturn files;\n\t}\n\twhile (pending.length > 0 && files.length < maxDocuments && visitedDirectories < MAX_DIRECTORIES) {\n\t\tconst dir = pending.pop();\n\t\tif (dir === undefined) continue;\n\t\tvisitedDirectories += 1;\n\t\tlet directory: ReturnType<typeof opendirSync>;\n\t\ttry {\n\t\t\tdirectory = opendirSync(dir);\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst entries: Array<{ name: string; directory: boolean; file: boolean }> = [];\n\t\t\tfor (let entry = directory.readSync(); entry; entry = directory.readSync()) {\n\t\t\t\tif (entries.length >= MAX_DIRECTORY_ENTRIES) break;\n\t\t\t\tif (entry.isSymbolicLink()) continue;\n\t\t\t\tentries.push({ name: entry.name, directory: entry.isDirectory(), file: entry.isFile() });\n\t\t\t}\n\t\t\tentries.sort((left, right) => left.name.localeCompare(right.name));\n\t\t\tfor (const entry of entries) {\n\t\t\t\tconst path = join(dir, entry.name);\n\t\t\t\tif (entry.directory) pending.push(path);\n\t\t\t\telse if (entry.file && isOkfPath(path)) {\n\t\t\t\t\tfiles.push(path);\n\t\t\t\t\tif (files.length >= maxDocuments) break;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tdirectory.closeSync();\n\t\t}\n\t}\n\treturn files;\n}\n\nfunction isPortableAbsolutePath(value: string): boolean {\n\treturn value.startsWith(\"/\") || /^[a-zA-Z]:[\\\\/]/.test(value) || value.startsWith(\"\\\\\\\\\");\n}\n\nfunction belongsToSelectedProject(\n\tentry: OkfMemoryLoadEntry,\n\toptions: Pick<OkfMemoryProviderOptions, \"projectId\" | \"projectRoot\">,\n): boolean {\n\tconst item = entry.parsed.item;\n\tif (item === undefined) return false;\n\tif (options.projectId === undefined) return true;\n\tif (item.scope === \"user\" || item.scope === \"global\") return true;\n\tif (item.scope !== \"project\") return false;\n\tif (entry.parsed.projectId !== undefined) return entry.parsed.projectId === options.projectId.toLowerCase();\n\tconst normalizedRelativePath = entry.relativePath.replaceAll(\"\\\\\", \"/\");\n\tif (normalizedRelativePath.startsWith(`projects/${options.projectId.toLowerCase()}/`)) return true;\n\tconst projectRoot = options.projectRoot;\n\tif (projectRoot === undefined) return false;\n\treturn item.evidenceRefs.some(\n\t\t(ref) => ref.type === \"external\" && isPortableAbsolutePath(ref.id) && isPathWithinScope(ref.id, projectRoot),\n\t);\n}\n\nfunction scoreItem(queryTokens: ReadonlySet<string>, item: MemoryItem): number {\n\treturn tokenOverlapScore(queryTokens, [item.title, item.summary, item.content]);\n}\n\nfunction reasonForMatch(score: number, item: MemoryItem): string {\n\treturn `local OKF match score ${score.toFixed(3)} for ${item.providerId}/${item.scope}/${item.kind}`;\n}\n\nexport function loadOkfMemoryBundle(options: OkfMemoryProviderOptions): OkfMemoryLoadReport {\n\tconst providerId = options.providerId ?? PI_OKF_PROVIDER_ID;\n\tconst maxFileBytes = options.maxFileBytes ?? DEFAULT_MAX_FILE_BYTES;\n\tconst maxDocuments = options.maxDocuments ?? DEFAULT_MAX_DOCUMENTS;\n\tconst entries: OkfMemoryLoadEntry[] = [];\n\tconst diagnostics: Array<{ path: string; diagnostics: OkfMemoryDiagnostic[] }> = [];\n\n\tfor (const path of walkFiles(options.rootDir, maxDocuments)) {\n\t\tlet content: string;\n\t\ttry {\n\t\t\tcontent = readBoundedTextFileSync(path, maxFileBytes, \"OKF memory document\");\n\t\t} catch {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst relativePath = relative(options.rootDir, path);\n\t\tconst parsed = parseOkfMemoryDocument(content, {\n\t\t\tproviderId,\n\t\t\turi: `okf:${relativePath}`,\n\t\t\tfallbackId: relativePath,\n\t\t});\n\t\tif (parsed.diagnostics.length > 0) diagnostics.push({ path, diagnostics: parsed.diagnostics });\n\t\tconst entry = { path, relativePath, parsed };\n\t\tif (parsed.item !== undefined && belongsToSelectedProject(entry, options)) entries.push(entry);\n\t}\n\n\treturn { entries, diagnostics };\n}\n\nexport function createOkfMemoryProvider(options: OkfMemoryProviderOptions): MemoryProvider {\n\tlet cachedReport: OkfMemoryLoadReport | undefined;\n\n\tfunction report(): OkfMemoryLoadReport {\n\t\tcachedReport ??= loadOkfMemoryBundle(options);\n\t\treturn cachedReport;\n\t}\n\n\tfunction items(): MemoryItem[] {\n\t\treturn report().entries.flatMap((entry) => (entry.parsed.item === undefined ? [] : [entry.parsed.item]));\n\t}\n\n\treturn {\n\t\tid: options.providerId ?? PI_OKF_PROVIDER_ID,\n\t\tlabel: \"Pi OKF Memory\",\n\t\tsource: \"pi_native\",\n\t\tcapabilities: OKF_PROVIDER_CAPABILITIES,\n\n\t\tasync search(request: MemorySearchRequest): Promise<MemorySearchResult[]> {\n\t\t\treturn searchLocalMemoryItems(items(), request, { score: scoreItem, reason: reasonForMatch });\n\t\t},\n\n\t\tasync fetch(ref: MemoryRef): Promise<MemoryItem | undefined> {\n\t\t\treturn fetchLocalMemoryItem(items(), options.providerId ?? PI_OKF_PROVIDER_ID, ref);\n\t\t},\n\t};\n}\n\nexport function listOkfMemoryScopes(report: OkfMemoryLoadReport): MemoryScope[] {\n\treturn Array.from(\n\t\tnew Set(report.entries.flatMap((entry) => (entry.parsed.item ? [entry.parsed.item.scope] : []))),\n\t).sort();\n}\n\nexport function listOkfMemoryKinds(report: OkfMemoryLoadReport): MemoryItemKind[] {\n\treturn Array.from(\n\t\tnew Set(report.entries.flatMap((entry) => (entry.parsed.item ? [entry.parsed.item.kind] : []))),\n\t).sort();\n}\n"]}
|
|
@@ -4,7 +4,16 @@ export declare const PI_OKF_PROVIDER_ID = "pi-okf";
|
|
|
4
4
|
export declare const PI_OKF_AUTHORITY = "durable_memory";
|
|
5
5
|
export declare const PI_OKF_TYPES: readonly ["Design Decision", "Architecture Concept", "Project Rule Candidate", "Implementation Note", "Debugging Finding", "Invalidated Assumption", "Tooling Playbook", "External Reference", "User Preference", "Capability Doc"];
|
|
6
6
|
export type PiOkfType = (typeof PI_OKF_TYPES)[number];
|
|
7
|
-
export
|
|
7
|
+
export declare const OKF_MEMORY_LIMITS: Readonly<{
|
|
8
|
+
titleChars: 160;
|
|
9
|
+
descriptionChars: 600;
|
|
10
|
+
bodyChars: 8000;
|
|
11
|
+
tagCount: 16;
|
|
12
|
+
tagChars: 80;
|
|
13
|
+
evidenceRefCount: 24;
|
|
14
|
+
evidenceRefChars: 600;
|
|
15
|
+
}>;
|
|
16
|
+
export type OkfMemoryDiagnosticCode = "missing_frontmatter" | "invalid_frontmatter" | "invalid_yaml" | "missing_type" | "unknown_type" | "missing_title" | "missing_description" | "missing_pi" | "invalid_scope" | "invalid_authority" | "invalid_project_id" | "invalid_evidence_refs";
|
|
8
17
|
export interface OkfMemoryDiagnostic {
|
|
9
18
|
code: OkfMemoryDiagnosticCode;
|
|
10
19
|
message: string;
|
|
@@ -18,6 +27,7 @@ export interface ParsedOkfMemoryDocument {
|
|
|
18
27
|
item?: MemoryItem;
|
|
19
28
|
body: string;
|
|
20
29
|
diagnostics: OkfMemoryDiagnostic[];
|
|
30
|
+
projectId?: string;
|
|
21
31
|
}
|
|
22
32
|
export interface OkfMemoryDocumentInput {
|
|
23
33
|
type: PiOkfType;
|
|
@@ -28,7 +38,14 @@ export interface OkfMemoryDocumentInput {
|
|
|
28
38
|
tags?: string[];
|
|
29
39
|
timestamp?: string;
|
|
30
40
|
evidenceRefs?: string[];
|
|
41
|
+
/** Stable project identity for project-scoped managed records. */
|
|
42
|
+
projectId?: string;
|
|
31
43
|
}
|
|
44
|
+
/** One bounded validation path shared by reflection parsing and the durable OKF writer. */
|
|
45
|
+
export declare function validateOkfMemoryDocumentInput(input: OkfMemoryDocumentInput, options?: {
|
|
46
|
+
projectOnly?: boolean;
|
|
47
|
+
requireEvidence?: boolean;
|
|
48
|
+
}): string[];
|
|
32
49
|
export interface OkfProjectRulePromotionRequest {
|
|
33
50
|
item: MemoryItem;
|
|
34
51
|
approvalId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okf-memory.d.ts","sourceRoot":"","sources":["../../../src/core/context/okf-memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAEX,UAAU,EAGV,kBAAkB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,eAAO,MAAM,YAAY,YACxB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,CACP,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,uBAAuB,GAChC,qBAAqB,GACrB,qBAAqB,GACrB,cAAc,GACd,cAAc,GACd,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,uBAAuB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"okf-memory.d.ts","sourceRoot":"","sources":["../../../src/core/context/okf-memory.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAEX,UAAU,EAGV,kBAAkB,EAClB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,eAAO,MAAM,YAAY,YACxB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,CACP,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtD,eAAO,MAAM,iBAAiB;;;;;;;;EAQ5B,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAChC,qBAAqB,GACrB,qBAAqB,GACrB,cAAc,GACd,cAAc,GACd,cAAc,GACd,eAAe,GACf,qBAAqB,GACrB,YAAY,GACZ,eAAe,GACf,mBAAmB,GACnB,oBAAoB,GACpB,uBAAuB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACvC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2FAA2F;AAC3F,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,sBAAsB,EAC7B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAO,GAChE,MAAM,EAAE,CAuBV;AAED,MAAM,WAAW,8BAA8B;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,gCAAgC,GACzC,4BAA4B,GAC5B,sCAAsC,GACtC,6BAA6B,CAAC;AA8DjC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,uBAAuB,CAkFpH;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAe7E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAYhG;AAED,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,8BAA8B,GACrC,gCAAgC,EAAE,CAQpC"}
|
|
@@ -16,6 +16,48 @@ export const PI_OKF_TYPES = [
|
|
|
16
16
|
"User Preference",
|
|
17
17
|
"Capability Doc",
|
|
18
18
|
];
|
|
19
|
+
export const OKF_MEMORY_LIMITS = Object.freeze({
|
|
20
|
+
titleChars: 160,
|
|
21
|
+
descriptionChars: 600,
|
|
22
|
+
bodyChars: 8_000,
|
|
23
|
+
tagCount: 16,
|
|
24
|
+
tagChars: 80,
|
|
25
|
+
evidenceRefCount: 24,
|
|
26
|
+
evidenceRefChars: 600,
|
|
27
|
+
});
|
|
28
|
+
/** One bounded validation path shared by reflection parsing and the durable OKF writer. */
|
|
29
|
+
export function validateOkfMemoryDocumentInput(input, options = {}) {
|
|
30
|
+
const errors = [];
|
|
31
|
+
const boundedText = (value, maxChars, field) => {
|
|
32
|
+
if (value.trim().length === 0)
|
|
33
|
+
errors.push(`${field} must not be empty`);
|
|
34
|
+
else if (value.length > maxChars)
|
|
35
|
+
errors.push(`${field} exceeds ${maxChars} characters`);
|
|
36
|
+
};
|
|
37
|
+
boundedText(input.title, OKF_MEMORY_LIMITS.titleChars, "title");
|
|
38
|
+
boundedText(input.description, OKF_MEMORY_LIMITS.descriptionChars, "description");
|
|
39
|
+
boundedText(input.body, OKF_MEMORY_LIMITS.bodyChars, "body");
|
|
40
|
+
if (options.projectOnly && input.scope !== "project")
|
|
41
|
+
errors.push("scope must be project");
|
|
42
|
+
if ((input.tags?.length ?? 0) > OKF_MEMORY_LIMITS.tagCount) {
|
|
43
|
+
errors.push(`tags exceeds ${OKF_MEMORY_LIMITS.tagCount} items`);
|
|
44
|
+
}
|
|
45
|
+
for (const tag of input.tags ?? [])
|
|
46
|
+
boundedText(tag, OKF_MEMORY_LIMITS.tagChars, "tag");
|
|
47
|
+
const evidenceRefs = input.evidenceRefs ?? [];
|
|
48
|
+
if (options.requireEvidence && evidenceRefs.length === 0)
|
|
49
|
+
errors.push("evidenceRefs must not be empty");
|
|
50
|
+
if (evidenceRefs.length > OKF_MEMORY_LIMITS.evidenceRefCount) {
|
|
51
|
+
errors.push(`evidenceRefs exceeds ${OKF_MEMORY_LIMITS.evidenceRefCount} items`);
|
|
52
|
+
}
|
|
53
|
+
for (const ref of evidenceRefs)
|
|
54
|
+
boundedText(ref, OKF_MEMORY_LIMITS.evidenceRefChars, "evidenceRef");
|
|
55
|
+
if (new Set(input.tags ?? []).size !== (input.tags?.length ?? 0))
|
|
56
|
+
errors.push("tags must be unique");
|
|
57
|
+
if (new Set(evidenceRefs).size !== evidenceRefs.length)
|
|
58
|
+
errors.push("evidenceRefs must be unique");
|
|
59
|
+
return errors;
|
|
60
|
+
}
|
|
19
61
|
const OKF_TYPE_TO_MEMORY_KIND = new Map([
|
|
20
62
|
["Design Decision", "design_decision"],
|
|
21
63
|
["Architecture Concept", "architecture_concept"],
|
|
@@ -101,6 +143,10 @@ export function parseOkfMemoryDocument(content, options = {}) {
|
|
|
101
143
|
if (isRecordObject(pi) && pi.evidence_refs !== undefined && evidenceRefs === undefined) {
|
|
102
144
|
diagnostics.push({ code: "invalid_evidence_refs", message: "pi.evidence_refs must be a string array." });
|
|
103
145
|
}
|
|
146
|
+
const projectId = isRecordObject(pi) ? stringField(pi, "project_id") : undefined;
|
|
147
|
+
if (projectId !== undefined && !/^[a-f0-9]{16}$/i.test(projectId)) {
|
|
148
|
+
diagnostics.push({ code: "invalid_project_id", message: "pi.project_id must be a 16-character hex digest." });
|
|
149
|
+
}
|
|
104
150
|
if (diagnostics.length > 0 ||
|
|
105
151
|
kind === undefined ||
|
|
106
152
|
title === undefined ||
|
|
@@ -115,6 +161,7 @@ export function parseOkfMemoryDocument(content, options = {}) {
|
|
|
115
161
|
return {
|
|
116
162
|
body,
|
|
117
163
|
diagnostics,
|
|
164
|
+
...(projectId ? { projectId: projectId.toLowerCase() } : {}),
|
|
118
165
|
item: {
|
|
119
166
|
id,
|
|
120
167
|
providerId,
|
|
@@ -141,6 +188,7 @@ export function formatOkfMemoryDocument(input) {
|
|
|
141
188
|
pi: {
|
|
142
189
|
scope: input.scope,
|
|
143
190
|
authority: PI_OKF_AUTHORITY,
|
|
191
|
+
project_id: input.projectId,
|
|
144
192
|
evidence_refs: input.evidenceRefs ?? [],
|
|
145
193
|
},
|
|
146
194
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"okf-memory.js","sourceRoot":"","sources":["../../../src/core/context/okf-memory.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { stringify } from \"yaml\";\nimport { parseFrontmatter } from \"../../utils/frontmatter.ts\";\nimport { isRecordObject } from \"../util/value-guards.ts\";\nimport type { MemoryScope } from \"./context-item.ts\";\nimport type {\n\tMemoryEvidenceRef,\n\tMemoryItem,\n\tMemoryItemKind,\n\tMemoryRef,\n\tMemoryWriteRequest,\n} from \"./memory-provider-contract.ts\";\n\nexport const PI_OKF_PROVIDER_ID = \"pi-okf\";\n\nexport const PI_OKF_AUTHORITY = \"durable_memory\";\n\nexport const PI_OKF_TYPES = [\n\t\"Design Decision\",\n\t\"Architecture Concept\",\n\t\"Project Rule Candidate\",\n\t\"Implementation Note\",\n\t\"Debugging Finding\",\n\t\"Invalidated Assumption\",\n\t\"Tooling Playbook\",\n\t\"External Reference\",\n\t\"User Preference\",\n\t\"Capability Doc\",\n] as const;\n\nexport type PiOkfType = (typeof PI_OKF_TYPES)[number];\n\nexport type OkfMemoryDiagnosticCode =\n\t| \"missing_frontmatter\"\n\t| \"invalid_frontmatter\"\n\t| \"invalid_yaml\"\n\t| \"missing_type\"\n\t| \"unknown_type\"\n\t| \"missing_title\"\n\t| \"missing_description\"\n\t| \"missing_pi\"\n\t| \"invalid_scope\"\n\t| \"invalid_authority\"\n\t| \"invalid_evidence_refs\";\n\nexport interface OkfMemoryDiagnostic {\n\tcode: OkfMemoryDiagnosticCode;\n\tmessage: string;\n}\n\nexport interface ParseOkfMemoryOptions {\n\tproviderId?: string;\n\turi?: string;\n\tfallbackId?: string;\n}\n\nexport interface ParsedOkfMemoryDocument {\n\titem?: MemoryItem;\n\tbody: string;\n\tdiagnostics: OkfMemoryDiagnostic[];\n}\n\nexport interface OkfMemoryDocumentInput {\n\ttype: PiOkfType;\n\ttitle: string;\n\tdescription: string;\n\tscope: MemoryScope;\n\tbody: string;\n\ttags?: string[];\n\ttimestamp?: string;\n\tevidenceRefs?: string[];\n}\n\nexport interface OkfProjectRulePromotionRequest {\n\titem: MemoryItem;\n\tapprovalId?: string;\n\ttrustedConfigPath?: string;\n}\n\nexport type OkfProjectRulePromotionRejection =\n\t| \"not_project_rule_candidate\"\n\t| \"missing_explicit_promotion_authority\"\n\t| \"stale_or_conflicting_memory\";\n\nconst OKF_TYPE_TO_MEMORY_KIND = new Map<PiOkfType, MemoryItemKind>([\n\t[\"Design Decision\", \"design_decision\"],\n\t[\"Architecture Concept\", \"architecture_concept\"],\n\t[\"Project Rule Candidate\", \"project_rule_candidate\"],\n\t[\"Implementation Note\", \"fact\"],\n\t[\"Debugging Finding\", \"debugging_finding\"],\n\t[\"Invalidated Assumption\", \"invalidated_assumption\"],\n\t[\"Tooling Playbook\", \"procedure\"],\n\t[\"External Reference\", \"reference\"],\n\t[\"User Preference\", \"user_preference\"],\n\t[\"Capability Doc\", \"reference\"],\n]);\n\nconst VALID_SCOPES: readonly MemoryScope[] = [\"session\", \"project\", \"user\", \"global\"];\n\nfunction stringField(record: Record<string, unknown>, key: string): string | undefined {\n\tconst value = record[key];\n\treturn typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n}\n\nfunction stringArrayField(record: Record<string, unknown>, key: string): string[] | undefined {\n\tconst value = record[key];\n\tif (value === undefined) return undefined;\n\treturn Array.isArray(value) && value.every((entry) => typeof entry === \"string\") ? value : undefined;\n}\n\nfunction memoryItemKindForOkfType(type: string): MemoryItemKind | undefined {\n\treturn OKF_TYPE_TO_MEMORY_KIND.get(type as PiOkfType);\n}\n\nfunction memoryIdForDocument(\n\tproviderId: string,\n\turi: string | undefined,\n\ttitle: string,\n\ttimestamp: string | undefined,\n): string {\n\treturn createHash(\"sha256\")\n\t\t.update([providerId, uri ?? \"\", title, timestamp ?? \"\"].join(\"\\0\"))\n\t\t.digest(\"hex\")\n\t\t.slice(0, 24);\n}\n\nfunction evidenceRefsFromOkf(providerId: string, refs: string[] | undefined): MemoryEvidenceRef[] {\n\treturn (refs ?? []).map((ref) => ({ type: \"external\", id: ref, providerId, description: \"OKF evidence_ref\" }));\n}\n\nfunction buildMemoryRef(\n\tproviderId: string,\n\tid: string,\n\tscope: MemoryScope,\n\tkind: MemoryItemKind,\n\turi?: string,\n): MemoryRef {\n\treturn { providerId, itemId: id, scope, kind, uri };\n}\n\nfunction validScope(value: string | undefined): MemoryScope | undefined {\n\treturn value !== undefined && VALID_SCOPES.includes(value as MemoryScope) ? (value as MemoryScope) : undefined;\n}\n\nexport function parseOkfMemoryDocument(content: string, options: ParseOkfMemoryOptions = {}): ParsedOkfMemoryDocument {\n\tlet frontmatter: Record<string, unknown>;\n\tlet body: string;\n\ttry {\n\t\tconst parsed = parseFrontmatter(content);\n\t\tfrontmatter = parsed.frontmatter;\n\t\tbody = parsed.body;\n\t} catch (error) {\n\t\treturn {\n\t\t\tbody: content,\n\t\t\tdiagnostics: [{ code: \"invalid_yaml\", message: error instanceof Error ? error.message : String(error) }],\n\t\t};\n\t}\n\n\tconst diagnostics: OkfMemoryDiagnostic[] = [];\n\tif (!isRecordObject(frontmatter) || Object.keys(frontmatter).length === 0) {\n\t\treturn { body, diagnostics: [{ code: \"missing_frontmatter\", message: \"OKF memory requires YAML frontmatter.\" }] };\n\t}\n\n\tconst type = stringField(frontmatter, \"type\");\n\tif (type === undefined) diagnostics.push({ code: \"missing_type\", message: \"OKF memory requires a type.\" });\n\tconst kind = type === undefined ? undefined : memoryItemKindForOkfType(type);\n\tif (type !== undefined && kind === undefined)\n\t\tdiagnostics.push({ code: \"unknown_type\", message: `Unknown Pi OKF type: ${type}` });\n\n\tconst title = stringField(frontmatter, \"title\");\n\tif (title === undefined) diagnostics.push({ code: \"missing_title\", message: \"OKF memory requires a title.\" });\n\tconst description = stringField(frontmatter, \"description\");\n\tif (description === undefined)\n\t\tdiagnostics.push({ code: \"missing_description\", message: \"OKF memory requires a description.\" });\n\n\tconst pi = frontmatter.pi;\n\tif (!isRecordObject(pi)) diagnostics.push({ code: \"missing_pi\", message: \"OKF memory requires a pi block.\" });\n\tconst scope = isRecordObject(pi) ? validScope(stringField(pi, \"scope\")) : undefined;\n\tif (isRecordObject(pi) && scope === undefined)\n\t\tdiagnostics.push({ code: \"invalid_scope\", message: \"pi.scope must be session, project, user, or global.\" });\n\tconst authority = isRecordObject(pi) ? stringField(pi, \"authority\") : undefined;\n\tif (isRecordObject(pi) && authority !== PI_OKF_AUTHORITY) {\n\t\tdiagnostics.push({ code: \"invalid_authority\", message: `pi.authority must be ${PI_OKF_AUTHORITY}.` });\n\t}\n\tconst evidenceRefs = isRecordObject(pi) ? stringArrayField(pi, \"evidence_refs\") : undefined;\n\tif (isRecordObject(pi) && pi.evidence_refs !== undefined && evidenceRefs === undefined) {\n\t\tdiagnostics.push({ code: \"invalid_evidence_refs\", message: \"pi.evidence_refs must be a string array.\" });\n\t}\n\n\tif (\n\t\tdiagnostics.length > 0 ||\n\t\tkind === undefined ||\n\t\ttitle === undefined ||\n\t\tdescription === undefined ||\n\t\tscope === undefined\n\t) {\n\t\treturn { body, diagnostics };\n\t}\n\n\tconst providerId = options.providerId ?? PI_OKF_PROVIDER_ID;\n\tconst timestamp = stringField(frontmatter, \"timestamp\");\n\tconst id = options.fallbackId ?? memoryIdForDocument(providerId, options.uri, title, timestamp);\n\tconst ref = buildMemoryRef(providerId, id, scope, kind, options.uri);\n\treturn {\n\t\tbody,\n\t\tdiagnostics,\n\t\titem: {\n\t\t\tid,\n\t\t\tproviderId,\n\t\t\tsource: \"pi_native\",\n\t\t\tkind,\n\t\t\tscope,\n\t\t\tdurability: \"durable\",\n\t\t\ttitle,\n\t\t\tsummary: description,\n\t\t\tcontent: body.length > 0 ? body : undefined,\n\t\t\trefs: [ref],\n\t\t\tevidenceRefs: evidenceRefsFromOkf(providerId, evidenceRefs),\n\t\t\ttimestamp,\n\t\t},\n\t};\n}\n\nexport function formatOkfMemoryDocument(input: OkfMemoryDocumentInput): string {\n\tconst frontmatter = {\n\t\ttype: input.type,\n\t\ttitle: input.title,\n\t\tdescription: input.description,\n\t\ttags: input.tags,\n\t\ttimestamp: input.timestamp,\n\t\tpi: {\n\t\t\tscope: input.scope,\n\t\t\tauthority: PI_OKF_AUTHORITY,\n\t\t\tevidence_refs: input.evidenceRefs ?? [],\n\t\t},\n\t};\n\treturn `---\\n${stringify(frontmatter).trim()}\\n---\\n\\n${input.body.trim()}\\n`;\n}\n\nexport function okfMemoryItemToWriteRequest(item: MemoryItem, reason: string): MemoryWriteRequest {\n\treturn {\n\t\tproviderId: item.providerId,\n\t\tscope: item.scope,\n\t\tkind: item.kind,\n\t\ttitle: item.title,\n\t\tsummary: item.summary,\n\t\tcontent: item.content,\n\t\tevidenceRefs: item.evidenceRefs,\n\t\tsensitivity: \"normal\",\n\t\treason,\n\t};\n}\n\nexport function validateOkfProjectRulePromotion(\n\trequest: OkfProjectRulePromotionRequest,\n): OkfProjectRulePromotionRejection[] {\n\tconst rejections: OkfProjectRulePromotionRejection[] = [];\n\tif (request.item.kind !== \"project_rule_candidate\") rejections.push(\"not_project_rule_candidate\");\n\tif (request.approvalId === undefined && request.trustedConfigPath === undefined) {\n\t\trejections.push(\"missing_explicit_promotion_authority\");\n\t}\n\tif (request.item.stale || request.item.conflict !== undefined) rejections.push(\"stale_or_conflicting_memory\");\n\treturn rejections;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"okf-memory.js","sourceRoot":"","sources":["../../../src/core/context/okf-memory.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { stringify } from \"yaml\";\nimport { parseFrontmatter } from \"../../utils/frontmatter.ts\";\nimport { isRecordObject } from \"../util/value-guards.ts\";\nimport type { MemoryScope } from \"./context-item.ts\";\nimport type {\n\tMemoryEvidenceRef,\n\tMemoryItem,\n\tMemoryItemKind,\n\tMemoryRef,\n\tMemoryWriteRequest,\n} from \"./memory-provider-contract.ts\";\n\nexport const PI_OKF_PROVIDER_ID = \"pi-okf\";\n\nexport const PI_OKF_AUTHORITY = \"durable_memory\";\n\nexport const PI_OKF_TYPES = [\n\t\"Design Decision\",\n\t\"Architecture Concept\",\n\t\"Project Rule Candidate\",\n\t\"Implementation Note\",\n\t\"Debugging Finding\",\n\t\"Invalidated Assumption\",\n\t\"Tooling Playbook\",\n\t\"External Reference\",\n\t\"User Preference\",\n\t\"Capability Doc\",\n] as const;\n\nexport type PiOkfType = (typeof PI_OKF_TYPES)[number];\n\nexport const OKF_MEMORY_LIMITS = Object.freeze({\n\ttitleChars: 160,\n\tdescriptionChars: 600,\n\tbodyChars: 8_000,\n\ttagCount: 16,\n\ttagChars: 80,\n\tevidenceRefCount: 24,\n\tevidenceRefChars: 600,\n});\n\nexport type OkfMemoryDiagnosticCode =\n\t| \"missing_frontmatter\"\n\t| \"invalid_frontmatter\"\n\t| \"invalid_yaml\"\n\t| \"missing_type\"\n\t| \"unknown_type\"\n\t| \"missing_title\"\n\t| \"missing_description\"\n\t| \"missing_pi\"\n\t| \"invalid_scope\"\n\t| \"invalid_authority\"\n\t| \"invalid_project_id\"\n\t| \"invalid_evidence_refs\";\n\nexport interface OkfMemoryDiagnostic {\n\tcode: OkfMemoryDiagnosticCode;\n\tmessage: string;\n}\n\nexport interface ParseOkfMemoryOptions {\n\tproviderId?: string;\n\turi?: string;\n\tfallbackId?: string;\n}\n\nexport interface ParsedOkfMemoryDocument {\n\titem?: MemoryItem;\n\tbody: string;\n\tdiagnostics: OkfMemoryDiagnostic[];\n\tprojectId?: string;\n}\n\nexport interface OkfMemoryDocumentInput {\n\ttype: PiOkfType;\n\ttitle: string;\n\tdescription: string;\n\tscope: MemoryScope;\n\tbody: string;\n\ttags?: string[];\n\ttimestamp?: string;\n\tevidenceRefs?: string[];\n\t/** Stable project identity for project-scoped managed records. */\n\tprojectId?: string;\n}\n\n/** One bounded validation path shared by reflection parsing and the durable OKF writer. */\nexport function validateOkfMemoryDocumentInput(\n\tinput: OkfMemoryDocumentInput,\n\toptions: { projectOnly?: boolean; requireEvidence?: boolean } = {},\n): string[] {\n\tconst errors: string[] = [];\n\tconst boundedText = (value: string, maxChars: number, field: string) => {\n\t\tif (value.trim().length === 0) errors.push(`${field} must not be empty`);\n\t\telse if (value.length > maxChars) errors.push(`${field} exceeds ${maxChars} characters`);\n\t};\n\tboundedText(input.title, OKF_MEMORY_LIMITS.titleChars, \"title\");\n\tboundedText(input.description, OKF_MEMORY_LIMITS.descriptionChars, \"description\");\n\tboundedText(input.body, OKF_MEMORY_LIMITS.bodyChars, \"body\");\n\tif (options.projectOnly && input.scope !== \"project\") errors.push(\"scope must be project\");\n\tif ((input.tags?.length ?? 0) > OKF_MEMORY_LIMITS.tagCount) {\n\t\terrors.push(`tags exceeds ${OKF_MEMORY_LIMITS.tagCount} items`);\n\t}\n\tfor (const tag of input.tags ?? []) boundedText(tag, OKF_MEMORY_LIMITS.tagChars, \"tag\");\n\tconst evidenceRefs = input.evidenceRefs ?? [];\n\tif (options.requireEvidence && evidenceRefs.length === 0) errors.push(\"evidenceRefs must not be empty\");\n\tif (evidenceRefs.length > OKF_MEMORY_LIMITS.evidenceRefCount) {\n\t\terrors.push(`evidenceRefs exceeds ${OKF_MEMORY_LIMITS.evidenceRefCount} items`);\n\t}\n\tfor (const ref of evidenceRefs) boundedText(ref, OKF_MEMORY_LIMITS.evidenceRefChars, \"evidenceRef\");\n\tif (new Set(input.tags ?? []).size !== (input.tags?.length ?? 0)) errors.push(\"tags must be unique\");\n\tif (new Set(evidenceRefs).size !== evidenceRefs.length) errors.push(\"evidenceRefs must be unique\");\n\treturn errors;\n}\n\nexport interface OkfProjectRulePromotionRequest {\n\titem: MemoryItem;\n\tapprovalId?: string;\n\ttrustedConfigPath?: string;\n}\n\nexport type OkfProjectRulePromotionRejection =\n\t| \"not_project_rule_candidate\"\n\t| \"missing_explicit_promotion_authority\"\n\t| \"stale_or_conflicting_memory\";\n\nconst OKF_TYPE_TO_MEMORY_KIND = new Map<PiOkfType, MemoryItemKind>([\n\t[\"Design Decision\", \"design_decision\"],\n\t[\"Architecture Concept\", \"architecture_concept\"],\n\t[\"Project Rule Candidate\", \"project_rule_candidate\"],\n\t[\"Implementation Note\", \"fact\"],\n\t[\"Debugging Finding\", \"debugging_finding\"],\n\t[\"Invalidated Assumption\", \"invalidated_assumption\"],\n\t[\"Tooling Playbook\", \"procedure\"],\n\t[\"External Reference\", \"reference\"],\n\t[\"User Preference\", \"user_preference\"],\n\t[\"Capability Doc\", \"reference\"],\n]);\n\nconst VALID_SCOPES: readonly MemoryScope[] = [\"session\", \"project\", \"user\", \"global\"];\n\nfunction stringField(record: Record<string, unknown>, key: string): string | undefined {\n\tconst value = record[key];\n\treturn typeof value === \"string\" && value.trim().length > 0 ? value : undefined;\n}\n\nfunction stringArrayField(record: Record<string, unknown>, key: string): string[] | undefined {\n\tconst value = record[key];\n\tif (value === undefined) return undefined;\n\treturn Array.isArray(value) && value.every((entry) => typeof entry === \"string\") ? value : undefined;\n}\n\nfunction memoryItemKindForOkfType(type: string): MemoryItemKind | undefined {\n\treturn OKF_TYPE_TO_MEMORY_KIND.get(type as PiOkfType);\n}\n\nfunction memoryIdForDocument(\n\tproviderId: string,\n\turi: string | undefined,\n\ttitle: string,\n\ttimestamp: string | undefined,\n): string {\n\treturn createHash(\"sha256\")\n\t\t.update([providerId, uri ?? \"\", title, timestamp ?? \"\"].join(\"\\0\"))\n\t\t.digest(\"hex\")\n\t\t.slice(0, 24);\n}\n\nfunction evidenceRefsFromOkf(providerId: string, refs: string[] | undefined): MemoryEvidenceRef[] {\n\treturn (refs ?? []).map((ref) => ({ type: \"external\", id: ref, providerId, description: \"OKF evidence_ref\" }));\n}\n\nfunction buildMemoryRef(\n\tproviderId: string,\n\tid: string,\n\tscope: MemoryScope,\n\tkind: MemoryItemKind,\n\turi?: string,\n): MemoryRef {\n\treturn { providerId, itemId: id, scope, kind, uri };\n}\n\nfunction validScope(value: string | undefined): MemoryScope | undefined {\n\treturn value !== undefined && VALID_SCOPES.includes(value as MemoryScope) ? (value as MemoryScope) : undefined;\n}\n\nexport function parseOkfMemoryDocument(content: string, options: ParseOkfMemoryOptions = {}): ParsedOkfMemoryDocument {\n\tlet frontmatter: Record<string, unknown>;\n\tlet body: string;\n\ttry {\n\t\tconst parsed = parseFrontmatter(content);\n\t\tfrontmatter = parsed.frontmatter;\n\t\tbody = parsed.body;\n\t} catch (error) {\n\t\treturn {\n\t\t\tbody: content,\n\t\t\tdiagnostics: [{ code: \"invalid_yaml\", message: error instanceof Error ? error.message : String(error) }],\n\t\t};\n\t}\n\n\tconst diagnostics: OkfMemoryDiagnostic[] = [];\n\tif (!isRecordObject(frontmatter) || Object.keys(frontmatter).length === 0) {\n\t\treturn { body, diagnostics: [{ code: \"missing_frontmatter\", message: \"OKF memory requires YAML frontmatter.\" }] };\n\t}\n\n\tconst type = stringField(frontmatter, \"type\");\n\tif (type === undefined) diagnostics.push({ code: \"missing_type\", message: \"OKF memory requires a type.\" });\n\tconst kind = type === undefined ? undefined : memoryItemKindForOkfType(type);\n\tif (type !== undefined && kind === undefined)\n\t\tdiagnostics.push({ code: \"unknown_type\", message: `Unknown Pi OKF type: ${type}` });\n\n\tconst title = stringField(frontmatter, \"title\");\n\tif (title === undefined) diagnostics.push({ code: \"missing_title\", message: \"OKF memory requires a title.\" });\n\tconst description = stringField(frontmatter, \"description\");\n\tif (description === undefined)\n\t\tdiagnostics.push({ code: \"missing_description\", message: \"OKF memory requires a description.\" });\n\n\tconst pi = frontmatter.pi;\n\tif (!isRecordObject(pi)) diagnostics.push({ code: \"missing_pi\", message: \"OKF memory requires a pi block.\" });\n\tconst scope = isRecordObject(pi) ? validScope(stringField(pi, \"scope\")) : undefined;\n\tif (isRecordObject(pi) && scope === undefined)\n\t\tdiagnostics.push({ code: \"invalid_scope\", message: \"pi.scope must be session, project, user, or global.\" });\n\tconst authority = isRecordObject(pi) ? stringField(pi, \"authority\") : undefined;\n\tif (isRecordObject(pi) && authority !== PI_OKF_AUTHORITY) {\n\t\tdiagnostics.push({ code: \"invalid_authority\", message: `pi.authority must be ${PI_OKF_AUTHORITY}.` });\n\t}\n\tconst evidenceRefs = isRecordObject(pi) ? stringArrayField(pi, \"evidence_refs\") : undefined;\n\tif (isRecordObject(pi) && pi.evidence_refs !== undefined && evidenceRefs === undefined) {\n\t\tdiagnostics.push({ code: \"invalid_evidence_refs\", message: \"pi.evidence_refs must be a string array.\" });\n\t}\n\tconst projectId = isRecordObject(pi) ? stringField(pi, \"project_id\") : undefined;\n\tif (projectId !== undefined && !/^[a-f0-9]{16}$/i.test(projectId)) {\n\t\tdiagnostics.push({ code: \"invalid_project_id\", message: \"pi.project_id must be a 16-character hex digest.\" });\n\t}\n\n\tif (\n\t\tdiagnostics.length > 0 ||\n\t\tkind === undefined ||\n\t\ttitle === undefined ||\n\t\tdescription === undefined ||\n\t\tscope === undefined\n\t) {\n\t\treturn { body, diagnostics };\n\t}\n\n\tconst providerId = options.providerId ?? PI_OKF_PROVIDER_ID;\n\tconst timestamp = stringField(frontmatter, \"timestamp\");\n\tconst id = options.fallbackId ?? memoryIdForDocument(providerId, options.uri, title, timestamp);\n\tconst ref = buildMemoryRef(providerId, id, scope, kind, options.uri);\n\treturn {\n\t\tbody,\n\t\tdiagnostics,\n\t\t...(projectId ? { projectId: projectId.toLowerCase() } : {}),\n\t\titem: {\n\t\t\tid,\n\t\t\tproviderId,\n\t\t\tsource: \"pi_native\",\n\t\t\tkind,\n\t\t\tscope,\n\t\t\tdurability: \"durable\",\n\t\t\ttitle,\n\t\t\tsummary: description,\n\t\t\tcontent: body.length > 0 ? body : undefined,\n\t\t\trefs: [ref],\n\t\t\tevidenceRefs: evidenceRefsFromOkf(providerId, evidenceRefs),\n\t\t\ttimestamp,\n\t\t},\n\t};\n}\n\nexport function formatOkfMemoryDocument(input: OkfMemoryDocumentInput): string {\n\tconst frontmatter = {\n\t\ttype: input.type,\n\t\ttitle: input.title,\n\t\tdescription: input.description,\n\t\ttags: input.tags,\n\t\ttimestamp: input.timestamp,\n\t\tpi: {\n\t\t\tscope: input.scope,\n\t\t\tauthority: PI_OKF_AUTHORITY,\n\t\t\tproject_id: input.projectId,\n\t\t\tevidence_refs: input.evidenceRefs ?? [],\n\t\t},\n\t};\n\treturn `---\\n${stringify(frontmatter).trim()}\\n---\\n\\n${input.body.trim()}\\n`;\n}\n\nexport function okfMemoryItemToWriteRequest(item: MemoryItem, reason: string): MemoryWriteRequest {\n\treturn {\n\t\tproviderId: item.providerId,\n\t\tscope: item.scope,\n\t\tkind: item.kind,\n\t\ttitle: item.title,\n\t\tsummary: item.summary,\n\t\tcontent: item.content,\n\t\tevidenceRefs: item.evidenceRefs,\n\t\tsensitivity: \"normal\",\n\t\treason,\n\t};\n}\n\nexport function validateOkfProjectRulePromotion(\n\trequest: OkfProjectRulePromotionRequest,\n): OkfProjectRulePromotionRejection[] {\n\tconst rejections: OkfProjectRulePromotionRejection[] = [];\n\tif (request.item.kind !== \"project_rule_candidate\") rejections.push(\"not_project_rule_candidate\");\n\tif (request.approvalId === undefined && request.trustedConfigPath === undefined) {\n\t\trejections.push(\"missing_explicit_promotion_authority\");\n\t}\n\tif (request.item.stale || request.item.conflict !== undefined) rejections.push(\"stale_or_conflicting_memory\");\n\treturn rejections;\n}\n"]}
|
|
@@ -154,6 +154,10 @@ export interface WorkerAgentRetireResult {
|
|
|
154
154
|
}
|
|
155
155
|
/** One canonical host port for model-facing logical-agent controls. */
|
|
156
156
|
export interface WorkerAgentControlPort {
|
|
157
|
+
/** Session-root read receipt for exact terminal generations; distinct from mutation review. */
|
|
158
|
+
observeWorkerTerminalRecords?(records: readonly LaneRecord[]): void;
|
|
159
|
+
/** Observe only the bounded logical-agent identities exposed by a model-facing control result. */
|
|
160
|
+
observeWorkerAgentTerminals?(agentIds: readonly string[]): void;
|
|
157
161
|
listWorkerAgents(scope?: WorkerAgentControlScope): WorkerAgentView[];
|
|
158
162
|
getWorkerTaskSessionView(): WorkerTaskSessionView;
|
|
159
163
|
getWorkerAgentActivity(agentId: string, scope?: WorkerAgentControlScope): WorkerAgentActivity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-agent-control.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-agent-control.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-agent-control.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-agent-control.ts"],"names":[],"mappings":"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"}
|