@galaxy-stack/ai-coder-core 0.1.0 → 0.3.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/CHANGELOG.d/2026-09-19-advisory-guard-policy.md +25 -0
  2. package/CHANGELOG.d/2026-09-19-research-citation-parsing.md +16 -0
  3. package/CHANGELOG.d/2026-09-19-research-rejection-evidence.md +15 -0
  4. package/CHANGELOG.d/2026-09-19-test-journal-reporter.md +8 -0
  5. package/CHANGELOG.d/2026-09-21-evidence-missing-remediation.md +15 -0
  6. package/CHANGELOG.d/2026-09-21-observation-nudge-context.md +12 -0
  7. package/CHANGELOG.d/2026-09-22-model-retry-budget.md +18 -0
  8. package/CHANGELOG.d/2026-09-22-no-progress-recovery-turn.md +19 -0
  9. package/CHANGELOG.d/2026-09-23-agent-platform.md +5 -0
  10. package/CHANGELOG.d/2026-09-23-conservative-output-reserve.md +16 -0
  11. package/CHANGELOG.d/2026-09-24-approval-workspace-review.md +7 -0
  12. package/CHANGELOG.d/2026-09-24-incremental-ollama.md +5 -0
  13. package/CHANGELOG.d/README.md +16 -0
  14. package/CHANGELOG.md +166 -0
  15. package/README.md +119 -8
  16. package/dist/adapters/node/config/manual-provider-config.d.ts +19 -0
  17. package/dist/adapters/node/config/manual-provider-config.d.ts.map +1 -0
  18. package/dist/adapters/node/config/manual-provider-config.js +91 -0
  19. package/dist/adapters/node/config/manual-provider-config.js.map +1 -0
  20. package/dist/adapters/node/host/command-containment.d.ts +45 -0
  21. package/dist/adapters/node/host/command-containment.d.ts.map +1 -0
  22. package/dist/adapters/node/host/command-containment.js +580 -0
  23. package/dist/adapters/node/host/command-containment.js.map +1 -0
  24. package/dist/adapters/node/host/content-hash.d.ts +2 -0
  25. package/dist/adapters/node/host/content-hash.d.ts.map +1 -0
  26. package/dist/adapters/node/host/content-hash.js +5 -0
  27. package/dist/adapters/node/host/content-hash.js.map +1 -0
  28. package/dist/adapters/node/host/file-run-store.d.ts +29 -0
  29. package/dist/adapters/node/host/file-run-store.d.ts.map +1 -0
  30. package/dist/adapters/node/host/file-run-store.js +94 -0
  31. package/dist/adapters/node/host/file-run-store.js.map +1 -0
  32. package/dist/adapters/node/host/host-environment.d.ts +9 -0
  33. package/dist/adapters/node/host/host-environment.d.ts.map +1 -0
  34. package/dist/adapters/node/host/host-environment.js +29 -0
  35. package/dist/adapters/node/host/host-environment.js.map +1 -0
  36. package/dist/adapters/node/host/node-command-port.d.ts +21 -0
  37. package/dist/adapters/node/host/node-command-port.d.ts.map +1 -0
  38. package/dist/adapters/node/host/node-command-port.js +281 -0
  39. package/dist/adapters/node/host/node-command-port.js.map +1 -0
  40. package/dist/adapters/node/host/node-workspace-evidence-verifier.d.ts +22 -0
  41. package/dist/adapters/node/host/node-workspace-evidence-verifier.d.ts.map +1 -0
  42. package/dist/adapters/node/host/node-workspace-evidence-verifier.js +384 -0
  43. package/dist/adapters/node/host/node-workspace-evidence-verifier.js.map +1 -0
  44. package/dist/adapters/node/host/node-workspace-port.d.ts +87 -0
  45. package/dist/adapters/node/host/node-workspace-port.d.ts.map +1 -0
  46. package/dist/adapters/node/host/node-workspace-port.js +860 -0
  47. package/dist/adapters/node/host/node-workspace-port.js.map +1 -0
  48. package/dist/adapters/node/host/node-workspace-snapshot.d.ts +61 -0
  49. package/dist/adapters/node/host/node-workspace-snapshot.d.ts.map +1 -0
  50. package/dist/adapters/node/host/node-workspace-snapshot.js +281 -0
  51. package/dist/adapters/node/host/node-workspace-snapshot.js.map +1 -0
  52. package/dist/adapters/node/host/path-scope.d.ts +17 -0
  53. package/dist/adapters/node/host/path-scope.d.ts.map +1 -0
  54. package/dist/adapters/node/host/path-scope.js +89 -0
  55. package/dist/adapters/node/host/path-scope.js.map +1 -0
  56. package/dist/adapters/node/host/project-tools.d.ts +42 -0
  57. package/dist/adapters/node/host/project-tools.d.ts.map +1 -0
  58. package/dist/adapters/node/host/project-tools.js +362 -0
  59. package/dist/adapters/node/host/project-tools.js.map +1 -0
  60. package/dist/adapters/node/mcp/mcp-client.d.ts +206 -0
  61. package/dist/adapters/node/mcp/mcp-client.d.ts.map +1 -0
  62. package/dist/adapters/node/mcp/mcp-client.js +123 -0
  63. package/dist/adapters/node/mcp/mcp-client.js.map +1 -0
  64. package/dist/adapters/node/mcp/oauth-provider.d.ts +39 -0
  65. package/dist/adapters/node/mcp/oauth-provider.d.ts.map +1 -0
  66. package/dist/adapters/node/mcp/oauth-provider.js +168 -0
  67. package/dist/adapters/node/mcp/oauth-provider.js.map +1 -0
  68. package/dist/adapters/node/memory/sqlite-memory.d.ts +22 -0
  69. package/dist/adapters/node/memory/sqlite-memory.d.ts.map +1 -0
  70. package/dist/adapters/node/memory/sqlite-memory.js +83 -0
  71. package/dist/adapters/node/memory/sqlite-memory.js.map +1 -0
  72. package/dist/adapters/node/provider/ollama-chat-stream.d.ts +17 -0
  73. package/dist/adapters/node/provider/ollama-chat-stream.d.ts.map +1 -0
  74. package/dist/adapters/node/provider/ollama-chat-stream.js +176 -0
  75. package/dist/adapters/node/provider/ollama-chat-stream.js.map +1 -0
  76. package/dist/adapters/node/provider/ollama-coding-model.d.ts +89 -0
  77. package/dist/adapters/node/provider/ollama-coding-model.d.ts.map +1 -0
  78. package/dist/adapters/node/provider/ollama-coding-model.js +464 -0
  79. package/dist/adapters/node/provider/ollama-coding-model.js.map +1 -0
  80. package/dist/adapters/node/provider/ollama-research-port.d.ts +32 -0
  81. package/dist/adapters/node/provider/ollama-research-port.d.ts.map +1 -0
  82. package/dist/adapters/node/provider/ollama-research-port.js +346 -0
  83. package/dist/adapters/node/provider/ollama-research-port.js.map +1 -0
  84. package/dist/adapters/node/skills/directory-skills.d.ts +12 -0
  85. package/dist/adapters/node/skills/directory-skills.d.ts.map +1 -0
  86. package/dist/adapters/node/skills/directory-skills.js +90 -0
  87. package/dist/adapters/node/skills/directory-skills.js.map +1 -0
  88. package/dist/adapters/node/tools/tool-executor.d.ts +91 -0
  89. package/dist/adapters/node/tools/tool-executor.d.ts.map +1 -0
  90. package/dist/adapters/node/tools/tool-executor.js +948 -0
  91. package/dist/adapters/node/tools/tool-executor.js.map +1 -0
  92. package/dist/adapters/node/tools/workspace-review.d.ts +13 -0
  93. package/dist/adapters/node/tools/workspace-review.d.ts.map +1 -0
  94. package/dist/adapters/node/tools/workspace-review.js +81 -0
  95. package/dist/adapters/node/tools/workspace-review.js.map +1 -0
  96. package/dist/agent/index.d.ts +79 -0
  97. package/dist/agent/index.d.ts.map +1 -0
  98. package/dist/agent/index.js +97 -0
  99. package/dist/agent/index.js.map +1 -0
  100. package/dist/approval/approval-policy.d.ts.map +1 -1
  101. package/dist/approval/approval-policy.js +4 -1
  102. package/dist/approval/approval-policy.js.map +1 -1
  103. package/dist/context/checkpoint.d.ts +3 -0
  104. package/dist/context/checkpoint.d.ts.map +1 -1
  105. package/dist/context/checkpoint.js +30 -1
  106. package/dist/context/checkpoint.js.map +1 -1
  107. package/dist/context/context-profile.d.ts +1 -1
  108. package/dist/context/context-profile.js +2 -2
  109. package/dist/prompt/prompt-assembler.d.ts +2 -1
  110. package/dist/prompt/prompt-assembler.d.ts.map +1 -1
  111. package/dist/prompt/prompt-assembler.js +40 -3
  112. package/dist/prompt/prompt-assembler.js.map +1 -1
  113. package/dist/runtime/completion-gate.d.ts +1 -1
  114. package/dist/runtime/completion-gate.d.ts.map +1 -1
  115. package/dist/runtime/completion-gate.js +12 -0
  116. package/dist/runtime/completion-gate.js.map +1 -1
  117. package/dist/runtime/index.d.ts +1 -0
  118. package/dist/runtime/index.d.ts.map +1 -1
  119. package/dist/runtime/index.js +1 -0
  120. package/dist/runtime/index.js.map +1 -1
  121. package/dist/runtime/research-citations.d.ts +15 -0
  122. package/dist/runtime/research-citations.d.ts.map +1 -0
  123. package/dist/runtime/research-citations.js +49 -0
  124. package/dist/runtime/research-citations.js.map +1 -0
  125. package/dist/runtime/run-controller.d.ts +6 -0
  126. package/dist/runtime/run-controller.d.ts.map +1 -1
  127. package/dist/runtime/run-controller.js +267 -62
  128. package/dist/runtime/run-controller.js.map +1 -1
  129. package/dist/runtime/runtime-types.d.ts +29 -0
  130. package/dist/runtime/runtime-types.d.ts.map +1 -1
  131. package/docs/AGENT_PLATFORM.md +91 -0
  132. package/docs/ARCHITECTURE.md +13 -2
  133. package/docs/GALAXY_AGENT_PLATFORM_PLAN.md +318 -0
  134. package/docs/GALAXY_AGENT_PLATFORM_TODO.md +158 -0
  135. package/docs/HOST_CONFORMANCE.md +38 -0
  136. package/docs/PROMPT_CONTRACT.md +9 -0
  137. package/package.json +25 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-workspace-port.js","sourceRoot":"","sources":["../../../../src/adapters/node/host/node-workspace-port.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { AiCoderWorkspaceEntryKind, RunExecutionContext } from "../../../index.js";
2
+ export type NodeWorkspaceSnapshotEntry = Readonly<{
3
+ /** Opaque value used only to compare two snapshots captured by this host. */
4
+ comparisonFingerprint: string;
5
+ /** Only durable entries may cross the core evidence boundary as writes. */
6
+ evidenceClass: "derived" | "durable";
7
+ kind: "directory" | "file" | "other" | "symlink";
8
+ path: string;
9
+ }>;
10
+ export type NodeWorkspaceSnapshot = Readonly<{
11
+ entries: readonly NodeWorkspaceSnapshotEntry[];
12
+ stateVersion: string;
13
+ }>;
14
+ export type NodeWorkspaceSnapshotOptions = Readonly<{
15
+ /**
16
+ * Entries under these workspace-relative directories are generated state.
17
+ * The snapshotter detects their mutations using stable identity/metadata,
18
+ * but never presents those opaque fingerprints as durable content hashes.
19
+ */
20
+ derivedDirectories?: readonly string[];
21
+ /** Defaults to the production 512 MiB content-hash budget. */
22
+ maxHashedBytes?: number;
23
+ }>;
24
+ /**
25
+ * Shared policy for repositories whose installed dependency tree and generated
26
+ * build caches are much larger than authored sources. Derived entries keep
27
+ * stable fingerprint coverage without consuming the durable content-hash
28
+ * budget, and their mutations never enter authored oracle evidence.
29
+ */
30
+ export declare const DEPENDENCY_AWARE_WORKSPACE_SNAPSHOT_OPTIONS: NodeWorkspaceSnapshotOptions;
31
+ export type NodeWorkspaceObservedMutation = Readonly<{
32
+ afterFingerprint: string | null;
33
+ afterKind: AiCoderWorkspaceEntryKind;
34
+ beforeFingerprint: string | null;
35
+ beforeKind: AiCoderWorkspaceEntryKind;
36
+ evidenceClass: "derived" | "durable";
37
+ path: string;
38
+ }>;
39
+ export type NodeWorkspaceMutationDiff = Readonly<{
40
+ /** All independently observed mutations, including generated dependency state. */
41
+ observedMutations: readonly NodeWorkspaceObservedMutation[];
42
+ stateVersion: string;
43
+ /** Byte-verifiable authored mutations safe to pass to AI Coder core. */
44
+ writes: readonly Readonly<{
45
+ afterHash: string | null;
46
+ afterKind: AiCoderWorkspaceEntryKind;
47
+ beforeHash: string | null;
48
+ beforeKind: AiCoderWorkspaceEntryKind;
49
+ path: string;
50
+ }>[];
51
+ }>;
52
+ export declare class NodeWorkspaceSnapshotter {
53
+ private readonly scope;
54
+ private readonly derivedDirectories;
55
+ private readonly maxHashedBytes;
56
+ private constructor();
57
+ static create(workspaceRoot: string, options?: NodeWorkspaceSnapshotOptions): Promise<NodeWorkspaceSnapshotter>;
58
+ capture(context: RunExecutionContext): Promise<NodeWorkspaceSnapshot>;
59
+ }
60
+ export declare function diffNodeWorkspaceSnapshots(before: NodeWorkspaceSnapshot, after: NodeWorkspaceSnapshot): NodeWorkspaceMutationDiff;
61
+ //# sourceMappingURL=node-workspace-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-workspace-snapshot.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/host/node-workspace-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAcxF,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,OAAO,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAEH,MAAM,MAAM,4BAA4B,GAAG,QAAQ,CAAC;IAClD;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2CAA2C,EAAE,4BAcxD,CAAC;AAEH,MAAM,MAAM,6BAA6B,GAAG,QAAQ,CAAC;IACnD,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,yBAAyB,CAAC;IACrC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,yBAAyB,CAAC;IACtC,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,kFAAkF;IAClF,iBAAiB,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,MAAM,EAAE,SAAS,QAAQ,CAAC;QACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,SAAS,EAAE,yBAAyB,CAAC;QACrC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,UAAU,EAAE,yBAAyB,CAAC;QACtC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,EAAE,CAAC;CACN,CAAC,CAAC;AA+DH,qBAAa,wBAAwB;IAIf,OAAO,CAAC,QAAQ,CAAC,KAAK;IAH1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO;WAKM,MAAM,CACjB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,wBAAwB,CAAC;IAa9B,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0J5E;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,qBAAqB,GAC3B,yBAAyB,CA8C3B"}
@@ -0,0 +1,281 @@
1
+ import { createHash } from "node:crypto";
2
+ import { constants as fileConstants } from "node:fs";
3
+ import { lstat, open, readdir, readlink } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import { WorkspaceScope } from "./path-scope.js";
6
+ const MAX_ENTRIES = 100_000;
7
+ const MAX_BYTES = 512 * 1024 * 1024;
8
+ const MAX_DURABLE_MUTATIONS = 10_000;
9
+ const READ_BUFFER_BYTES = 64 * 1024;
10
+ const DIRECTORY_HASH = createHash("sha256").update("directory\0", "utf8").digest("hex");
11
+ /**
12
+ * Shared policy for repositories whose installed dependency tree and generated
13
+ * build caches are much larger than authored sources. Derived entries keep
14
+ * stable fingerprint coverage without consuming the durable content-hash
15
+ * budget, and their mutations never enter authored oracle evidence.
16
+ */
17
+ export const DEPENDENCY_AWARE_WORKSPACE_SNAPSHOT_OPTIONS = Object.freeze({
18
+ derivedDirectories: Object.freeze([
19
+ ".cache",
20
+ ".gradle",
21
+ ".mypy_cache",
22
+ ".next",
23
+ ".parcel-cache",
24
+ ".pytest_cache",
25
+ ".turbo",
26
+ ".vite",
27
+ "__pycache__",
28
+ "node_modules",
29
+ "target",
30
+ ]),
31
+ });
32
+ function compareCodeUnits(left, right) {
33
+ return left < right ? -1 : left > right ? 1 : 0;
34
+ }
35
+ function codedError(code, message) {
36
+ return Object.assign(new Error(message), { code });
37
+ }
38
+ function checkContext(context) {
39
+ if (context.signal.aborted) {
40
+ throw codedError("CANCELED", "Workspace mutation snapshot was canceled.");
41
+ }
42
+ if (Date.now() >= context.deadline) {
43
+ throw codedError("DEADLINE_EXCEEDED", "Workspace mutation snapshot exceeded the run deadline.");
44
+ }
45
+ }
46
+ function isExcludedName(name) {
47
+ return name === ".git" || name.endsWith(".galaxy-code.lock");
48
+ }
49
+ function sameIdentity(left, right) {
50
+ return left.dev === right.dev && left.ino === right.ino;
51
+ }
52
+ function stableMetadata(left, right) {
53
+ return left.ctimeMs === right.ctimeMs && left.mtimeMs === right.mtimeMs && left.size === right.size;
54
+ }
55
+ function metadataHash(info) {
56
+ return createHash("sha256").update(JSON.stringify([
57
+ "file-metadata-v1", info.dev, info.ino, info.mode, info.size, info.mtimeMs, info.ctimeMs,
58
+ ])).digest("hex");
59
+ }
60
+ function workspacePath(segments) {
61
+ return segments.join("/");
62
+ }
63
+ function snapshotVersion(entries) {
64
+ const hash = createHash("sha256");
65
+ for (const entry of entries) {
66
+ hash.update(JSON.stringify([entry.path, entry.kind, entry.evidenceClass, entry.comparisonFingerprint]));
67
+ hash.update("\n");
68
+ }
69
+ return `sha256:${hash.digest("hex")}`;
70
+ }
71
+ export class NodeWorkspaceSnapshotter {
72
+ scope;
73
+ derivedDirectories;
74
+ maxHashedBytes;
75
+ constructor(scope, options) {
76
+ this.scope = scope;
77
+ this.derivedDirectories = new Set(options.derivedDirectories ?? []);
78
+ this.maxHashedBytes = options.maxHashedBytes ?? MAX_BYTES;
79
+ }
80
+ static async create(workspaceRoot, options = {}) {
81
+ for (const path of options.derivedDirectories ?? []) {
82
+ if (!path || path === "." || path.includes("\\") || path.startsWith("/")
83
+ || path.split("/").some((part) => !part || part === "." || part === "..")) {
84
+ throw new Error(`Invalid derived workspace directory: ${path || "<empty>"}.`);
85
+ }
86
+ }
87
+ if (!Number.isSafeInteger(options.maxHashedBytes ?? MAX_BYTES) || (options.maxHashedBytes ?? MAX_BYTES) < 1) {
88
+ throw new Error("Workspace snapshot maxHashedBytes must be a positive safe integer.");
89
+ }
90
+ return new NodeWorkspaceSnapshotter(await WorkspaceScope.create(workspaceRoot), options);
91
+ }
92
+ async capture(context) {
93
+ const entries = [];
94
+ let entryCount = 0;
95
+ let byteCount = 0;
96
+ const accountEntry = () => {
97
+ entryCount += 1;
98
+ if (entryCount > MAX_ENTRIES) {
99
+ throw codedError("LIMIT_EXCEEDED", "Workspace mutation snapshot exceeded its entry limit.");
100
+ }
101
+ };
102
+ const readStableFileHash = async (absolutePath, relativePath, derived) => {
103
+ checkContext(context);
104
+ const before = await lstat(absolutePath);
105
+ if (!before.isFile() || before.isSymbolicLink()) {
106
+ throw codedError("CONFLICT", `Workspace path changed while taking a mutation snapshot: ${relativePath}.`);
107
+ }
108
+ const canonicalPath = await this.scope.resolveExisting(relativePath);
109
+ if (canonicalPath !== absolutePath) {
110
+ throw codedError("PERMISSION_DENIED", `Workspace snapshot cannot follow a symlink: ${relativePath}.`);
111
+ }
112
+ if (derived) {
113
+ const after = await lstat(absolutePath);
114
+ if (!after.isFile() || !sameIdentity(before, after) || !stableMetadata(before, after)) {
115
+ throw codedError("CONFLICT", `Workspace file changed while taking a mutation snapshot: ${relativePath}.`);
116
+ }
117
+ return metadataHash(after);
118
+ }
119
+ byteCount += before.size;
120
+ if (byteCount > this.maxHashedBytes) {
121
+ throw codedError("LIMIT_EXCEEDED", "Workspace mutation snapshot exceeded its byte limit.");
122
+ }
123
+ const noFollow = process.platform === "win32" ? 0 : fileConstants.O_NOFOLLOW;
124
+ const handle = await open(absolutePath, fileConstants.O_RDONLY | noFollow);
125
+ try {
126
+ const opened = await handle.stat();
127
+ if (!opened.isFile() || !sameIdentity(before, opened)) {
128
+ throw codedError("CONFLICT", `Workspace file changed while taking a mutation snapshot: ${relativePath}.`);
129
+ }
130
+ const hash = createHash("sha256");
131
+ const buffer = Buffer.allocUnsafe(READ_BUFFER_BYTES);
132
+ let position = 0;
133
+ while (position < opened.size) {
134
+ checkContext(context);
135
+ const length = Math.min(buffer.byteLength, opened.size - position);
136
+ const { bytesRead } = await handle.read(buffer, 0, length, position);
137
+ if (bytesRead === 0) {
138
+ throw codedError("CONFLICT", `Workspace file changed while taking a mutation snapshot: ${relativePath}.`);
139
+ }
140
+ hash.update(buffer.subarray(0, bytesRead));
141
+ position += bytesRead;
142
+ }
143
+ const after = await handle.stat();
144
+ if (!after.isFile() || !sameIdentity(opened, after) || !stableMetadata(opened, after)) {
145
+ throw codedError("CONFLICT", `Workspace file changed while taking a mutation snapshot: ${relativePath}.`);
146
+ }
147
+ return hash.digest("hex");
148
+ }
149
+ finally {
150
+ await handle.close();
151
+ }
152
+ };
153
+ const visitDirectory = async (absoluteDirectory, segments, inheritedDerived = false) => {
154
+ checkContext(context);
155
+ const relativeDirectory = workspacePath(segments) || ".";
156
+ const before = await lstat(absoluteDirectory);
157
+ if (!before.isDirectory() || before.isSymbolicLink()) {
158
+ throw codedError("CONFLICT", `Workspace directory changed while taking a mutation snapshot: ${relativeDirectory}.`);
159
+ }
160
+ if (segments.length > 0) {
161
+ const canonicalDirectory = await this.scope.resolveExisting(relativeDirectory);
162
+ if (canonicalDirectory !== absoluteDirectory) {
163
+ throw codedError("PERMISSION_DENIED", `Workspace snapshot cannot follow a directory symlink: ${relativeDirectory}.`);
164
+ }
165
+ }
166
+ const names = await readdir(absoluteDirectory);
167
+ names.sort(compareCodeUnits);
168
+ for (const name of names) {
169
+ checkContext(context);
170
+ if (isExcludedName(name))
171
+ continue;
172
+ accountEntry();
173
+ const childSegments = Object.freeze([...segments, name]);
174
+ const relativePath = workspacePath(childSegments);
175
+ const derived = inheritedDerived || this.derivedDirectories.has(relativePath);
176
+ const absolutePath = join(absoluteDirectory, name);
177
+ const info = await lstat(absolutePath);
178
+ if (info.isDirectory() && !info.isSymbolicLink()) {
179
+ entries.push(Object.freeze({
180
+ comparisonFingerprint: DIRECTORY_HASH,
181
+ evidenceClass: derived ? "derived" : "durable",
182
+ kind: "directory",
183
+ path: relativePath,
184
+ }));
185
+ await visitDirectory(absolutePath, childSegments, derived);
186
+ continue;
187
+ }
188
+ if (info.isSymbolicLink()) {
189
+ const target = await readlink(absolutePath);
190
+ const after = await lstat(absolutePath);
191
+ if (!after.isSymbolicLink() || !sameIdentity(info, after) || !stableMetadata(info, after)) {
192
+ throw codedError("CONFLICT", `Workspace symlink changed while taking a mutation snapshot: ${relativePath}.`);
193
+ }
194
+ entries.push(Object.freeze({
195
+ comparisonFingerprint: createHash("sha256").update(`symlink\0${target}`, "utf8").digest("hex"),
196
+ evidenceClass: derived ? "derived" : "durable",
197
+ kind: "symlink",
198
+ path: relativePath,
199
+ }));
200
+ continue;
201
+ }
202
+ if (info.isFile()) {
203
+ entries.push(Object.freeze({
204
+ comparisonFingerprint: await readStableFileHash(absolutePath, relativePath, derived),
205
+ evidenceClass: derived ? "derived" : "durable",
206
+ kind: "file",
207
+ path: relativePath,
208
+ }));
209
+ continue;
210
+ }
211
+ const after = await lstat(absolutePath);
212
+ if (!sameIdentity(info, after) || !stableMetadata(info, after)) {
213
+ throw codedError("CONFLICT", `Workspace entry changed while taking a mutation snapshot: ${relativePath}.`);
214
+ }
215
+ entries.push(Object.freeze({
216
+ comparisonFingerprint: createHash("sha256").update(`other\0${String(info.mode)}`, "utf8").digest("hex"),
217
+ evidenceClass: derived ? "derived" : "durable",
218
+ kind: "other",
219
+ path: relativePath,
220
+ }));
221
+ }
222
+ const after = await lstat(absoluteDirectory);
223
+ if (!after.isDirectory() || !sameIdentity(before, after) || !stableMetadata(before, after)) {
224
+ throw codedError("CONFLICT", `Workspace directory changed while taking a mutation snapshot: ${relativeDirectory}.`);
225
+ }
226
+ };
227
+ await visitDirectory(this.scope.root, Object.freeze([]));
228
+ entries.sort((left, right) => compareCodeUnits(left.path, right.path));
229
+ const frozenEntries = Object.freeze(entries);
230
+ return Object.freeze({
231
+ entries: frozenEntries,
232
+ stateVersion: snapshotVersion(frozenEntries),
233
+ });
234
+ }
235
+ }
236
+ export function diffNodeWorkspaceSnapshots(before, after) {
237
+ const beforeByPath = new Map(before.entries.map((entry) => [entry.path, entry]));
238
+ const afterByPath = new Map(after.entries.map((entry) => [entry.path, entry]));
239
+ const paths = [...new Set([...beforeByPath.keys(), ...afterByPath.keys()])].sort(compareCodeUnits);
240
+ const observedMutations = paths.flatMap((path) => {
241
+ const beforeEntry = beforeByPath.get(path);
242
+ const afterEntry = afterByPath.get(path);
243
+ if (beforeEntry?.kind === afterEntry?.kind
244
+ && beforeEntry?.comparisonFingerprint === afterEntry?.comparisonFingerprint)
245
+ return [];
246
+ if (beforeEntry !== undefined && afterEntry !== undefined
247
+ && beforeEntry.evidenceClass !== afterEntry.evidenceClass) {
248
+ throw codedError("INVALID_INPUT", `Workspace snapshot evidence class changed for: ${path}.`);
249
+ }
250
+ const beforeKind = beforeEntry?.kind ?? "missing";
251
+ const afterKind = afterEntry?.kind ?? "missing";
252
+ return [Object.freeze({
253
+ afterFingerprint: afterKind === "missing" ? null : afterEntry?.comparisonFingerprint ?? null,
254
+ afterKind,
255
+ beforeFingerprint: beforeKind === "missing" ? null : beforeEntry?.comparisonFingerprint ?? null,
256
+ beforeKind,
257
+ evidenceClass: beforeEntry?.evidenceClass ?? afterEntry?.evidenceClass ?? "durable",
258
+ path,
259
+ })];
260
+ });
261
+ const writes = observedMutations.flatMap((mutation) => mutation.evidenceClass === "derived" ? [] : [Object.freeze({
262
+ afterHash: mutation.afterKind === "directory" || mutation.afterKind === "missing"
263
+ ? null
264
+ : mutation.afterFingerprint,
265
+ afterKind: mutation.afterKind,
266
+ beforeHash: mutation.beforeKind === "directory" || mutation.beforeKind === "missing"
267
+ ? null
268
+ : mutation.beforeFingerprint,
269
+ beforeKind: mutation.beforeKind,
270
+ path: mutation.path,
271
+ })]);
272
+ if (writes.length > MAX_DURABLE_MUTATIONS) {
273
+ throw codedError("LIMIT_EXCEEDED", `Workspace mutation diff exceeded ${MAX_DURABLE_MUTATIONS} durable changed paths.`);
274
+ }
275
+ return Object.freeze({
276
+ observedMutations: Object.freeze(observedMutations),
277
+ stateVersion: after.stateVersion,
278
+ writes: Object.freeze(writes),
279
+ });
280
+ }
281
+ //# sourceMappingURL=node-workspace-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-workspace-snapshot.js","sourceRoot":"","sources":["../../../../src/adapters/node/host/node-workspace-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export declare class WorkspaceScope {
2
+ readonly root: string;
3
+ private constructor();
4
+ static create(rootPath: string): Promise<WorkspaceScope>;
5
+ resolveLexical(relativePath: string): string;
6
+ resolveExisting(relativePath: string): Promise<string>;
7
+ /**
8
+ * Resolve a mutation target without following symlinks. Existing symlink
9
+ * components are rejected so copy/write cannot be redirected after lexical
10
+ * scope validation. Call this again immediately before committing a write.
11
+ */
12
+ resolveForWrite(relativePath: string): Promise<string>;
13
+ /** Resolve an existing removal/move source while permitting the final link itself. */
14
+ resolveForDelete(relativePath: string): Promise<string>;
15
+ private resolveMutationPath;
16
+ }
17
+ //# sourceMappingURL=path-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-scope.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/host/path-scope.ts"],"names":[],"mappings":"AAmBA,qBAAa,cAAc;IACL,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAzC,OAAO;WAEM,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAS9D,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAUtC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5D;;;;OAIG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,sFAAsF;IAChF,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAI/C,mBAAmB;CAqClC"}
@@ -0,0 +1,89 @@
1
+ import { lstat, realpath } from "node:fs/promises";
2
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
3
+ function isInside(root, candidate) {
4
+ const distance = relative(root, candidate);
5
+ return distance === "" || (!distance.startsWith(`..${sep}`) && distance !== ".." && !isAbsolute(distance));
6
+ }
7
+ function scopeError(code, message) {
8
+ return Object.assign(new Error(message), { code });
9
+ }
10
+ function isMissing(error) {
11
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
12
+ }
13
+ export class WorkspaceScope {
14
+ root;
15
+ constructor(root) {
16
+ this.root = root;
17
+ }
18
+ static async create(rootPath) {
19
+ const absoluteRoot = await realpath(resolve(rootPath));
20
+ const rootInfo = await lstat(absoluteRoot);
21
+ if (!rootInfo.isDirectory()) {
22
+ throw new Error(`Workspace root '${absoluteRoot}' is not a directory.`);
23
+ }
24
+ return new WorkspaceScope(absoluteRoot);
25
+ }
26
+ resolveLexical(relativePath) {
27
+ if (relativePath.includes("\0"))
28
+ throw scopeError("INVALID_INPUT", "Workspace path contains a null byte.");
29
+ if (isAbsolute(relativePath))
30
+ throw scopeError("PERMISSION_DENIED", "Workspace paths must be relative.");
31
+ const candidate = resolve(this.root, relativePath || ".");
32
+ if (!isInside(this.root, candidate)) {
33
+ throw scopeError("PERMISSION_DENIED", `Workspace path escapes the configured root: '${relativePath}'.`);
34
+ }
35
+ return candidate;
36
+ }
37
+ async resolveExisting(relativePath) {
38
+ const candidate = this.resolveLexical(relativePath);
39
+ const canonical = await realpath(candidate);
40
+ if (!isInside(this.root, canonical)) {
41
+ throw scopeError("PERMISSION_DENIED", `Workspace symlink escapes the configured root: '${relativePath}'.`);
42
+ }
43
+ return canonical;
44
+ }
45
+ /**
46
+ * Resolve a mutation target without following symlinks. Existing symlink
47
+ * components are rejected so copy/write cannot be redirected after lexical
48
+ * scope validation. Call this again immediately before committing a write.
49
+ */
50
+ async resolveForWrite(relativePath) {
51
+ return this.resolveMutationPath(relativePath, false);
52
+ }
53
+ /** Resolve an existing removal/move source while permitting the final link itself. */
54
+ async resolveForDelete(relativePath) {
55
+ return this.resolveMutationPath(relativePath, true);
56
+ }
57
+ async resolveMutationPath(relativePath, allowFinalSymlink) {
58
+ const candidate = this.resolveLexical(relativePath);
59
+ if (candidate === this.root) {
60
+ throw scopeError("PERMISSION_DENIED", "Mutating the workspace root is not allowed.");
61
+ }
62
+ const distance = relative(this.root, candidate);
63
+ const segments = distance.split(sep).filter((segment) => segment.length > 0);
64
+ let current = this.root;
65
+ for (let index = 0; index < segments.length; index += 1) {
66
+ const segment = segments[index];
67
+ if (segment === undefined)
68
+ continue;
69
+ current = join(current, segment);
70
+ try {
71
+ const info = await lstat(current);
72
+ const isFinal = index === segments.length - 1;
73
+ if (info.isSymbolicLink() && !(allowFinalSymlink && isFinal)) {
74
+ throw scopeError("PERMISSION_DENIED", `Workspace mutation cannot follow symlink '${relativePath}'.`);
75
+ }
76
+ if (!isFinal && !info.isDirectory()) {
77
+ throw scopeError("INVALID_INPUT", `Workspace mutation parent is not a directory: '${relativePath}'.`);
78
+ }
79
+ }
80
+ catch (error) {
81
+ if (isMissing(error))
82
+ return candidate;
83
+ throw error;
84
+ }
85
+ }
86
+ return candidate;
87
+ }
88
+ }
89
+ //# sourceMappingURL=path-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-scope.js","sourceRoot":"","sources":["../../../../src/adapters/node/host/path-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { CommandRunnerPort, ToolExecutionContext, WorkspaceReaderPort } from "../../../ports/index.js";
2
+ export declare const PROJECT_DETECTION_LIMITS: Readonly<{
3
+ maxDepth: 20;
4
+ maxEntries: 20000;
5
+ maxPages: 25000;
6
+ pageSize: 1000;
7
+ rootManifestMaxBytes: 128000;
8
+ reportedManifests: 64;
9
+ }>;
10
+ export type ProjectCheck = "test" | "typecheck" | "lint" | "build";
11
+ export interface DetectedProject {
12
+ readonly projectRoot: string;
13
+ readonly languages: readonly string[];
14
+ readonly packageManager?: "npm" | "pnpm" | "yarn" | "bun";
15
+ readonly manifests: readonly string[];
16
+ readonly commands: Readonly<Record<string, string>>;
17
+ readonly scan: Readonly<{
18
+ readonly complete: boolean;
19
+ readonly deepestDepth: number;
20
+ readonly entriesScanned: number;
21
+ readonly maxDepth: number;
22
+ }>;
23
+ readonly warnings: readonly string[];
24
+ }
25
+ export interface ProjectValidationResult {
26
+ readonly check: ProjectCheck;
27
+ readonly command?: string;
28
+ readonly status: "passed" | "failed" | "timed_out" | "cancelled" | "skipped";
29
+ readonly exitCode?: number | null;
30
+ readonly summary: string;
31
+ }
32
+ export declare function detectProject(workspace: WorkspaceReaderPort, path: string, context: ToolExecutionContext): Promise<DetectedProject>;
33
+ export declare function validateProject(workspace: WorkspaceReaderPort, commandPort: CommandRunnerPort, input: Readonly<{
34
+ checks: readonly ProjectCheck[];
35
+ path: string;
36
+ timeoutMs?: number;
37
+ }>, context: ToolExecutionContext): Promise<Readonly<{
38
+ cancelled: boolean;
39
+ passed: boolean;
40
+ results: readonly ProjectValidationResult[];
41
+ }>>;
42
+ //# sourceMappingURL=project-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-tools.d.ts","sourceRoot":"","sources":["../../../../src/adapters/node/host/project-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EAEpB,mBAAmB,EACpB,MAAM,yBAAyB,CAAC;AAwCjC,eAAO,MAAM,wBAAwB;;;;;;;EAOnC,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA+LD,wBAAsB,aAAa,CACjC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAoCD,wBAAsB,eAAe,CACnC,SAAS,EAAE,mBAAmB,EAC9B,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAE,QAAQ,CAAC;IAAE,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACtF,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,QAAQ,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAA;CAAE,CAAC,CAAC,CAwEzG"}