@amodalai/core 0.1.9 → 0.1.11
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/dist/src/amodal-config.d.ts +1 -5
- package/dist/src/amodal-config.js +3 -5
- package/dist/src/amodal-config.js.map +1 -1
- package/dist/src/eval/eval-runner.d.ts +1 -1
- package/dist/src/eval/eval-runner.js +1 -1
- package/dist/src/eval/eval-runner.js.map +1 -1
- package/dist/src/eval/eval-session-provider.d.ts +1 -1
- package/dist/src/eval/eval-session-provider.js +1 -1
- package/dist/src/eval/eval-session-provider.js.map +1 -1
- package/dist/src/knowledge/kb-formatter.d.ts +1 -1
- package/dist/src/knowledge/kb-formatter.js +2 -11
- package/dist/src/knowledge/kb-formatter.js.map +1 -1
- package/dist/src/knowledge/kb-index.d.ts +2 -2
- package/dist/src/knowledge/kb-index.js +2 -5
- package/dist/src/knowledge/kb-index.js.map +1 -1
- package/dist/src/knowledge/kb-types.d.ts +5 -7
- package/dist/src/knowledge/knowledge-store.d.ts +1 -4
- package/dist/src/knowledge/knowledge-store.js +6 -16
- package/dist/src/knowledge/knowledge-store.js.map +1 -1
- package/dist/src/knowledge/propose-kb-update.d.ts +1 -1
- package/dist/src/knowledge/propose-kb-update.js +3 -7
- package/dist/src/knowledge/propose-kb-update.js.map +1 -1
- package/dist/src/knowledge/propose-knowledge.d.ts +1 -1
- package/dist/src/knowledge/propose-knowledge.js +3 -7
- package/dist/src/knowledge/propose-knowledge.js.map +1 -1
- package/dist/src/packages/config-deps.d.ts +4 -4
- package/dist/src/packages/config-deps.js +6 -8
- package/dist/src/packages/config-deps.js.map +1 -1
- package/dist/src/packages/lock-file.d.ts +19 -13
- package/dist/src/packages/lock-file.js +27 -26
- package/dist/src/packages/lock-file.js.map +1 -1
- package/dist/src/packages/npm-context.d.ts +12 -11
- package/dist/src/packages/npm-context.js +36 -73
- package/dist/src/packages/npm-context.js.map +1 -1
- package/dist/src/packages/package-types.d.ts +85 -293
- package/dist/src/packages/package-types.js +63 -103
- package/dist/src/packages/package-types.js.map +1 -1
- package/dist/src/packages/resolver.d.ts +8 -19
- package/dist/src/packages/resolver.js +182 -284
- package/dist/src/packages/resolver.js.map +1 -1
- package/dist/src/platform/config-builder.js +1 -4
- package/dist/src/platform/config-builder.js.map +1 -1
- package/dist/src/platform/platform-client.d.ts +8 -8
- package/dist/src/platform/platform-client.js +13 -16
- package/dist/src/platform/platform-client.js.map +1 -1
- package/dist/src/platform/platform-types.d.ts +0 -2
- package/dist/src/repo/config-schema.d.ts +31 -31
- package/dist/src/repo/connection-schemas.d.ts +31 -6
- package/dist/src/repo/connection-schemas.js +13 -2
- package/dist/src/repo/connection-schemas.js.map +1 -1
- package/dist/src/repo/local-reader.js +12 -121
- package/dist/src/repo/local-reader.js.map +1 -1
- package/dist/src/repo/parsers.js +2 -2
- package/dist/src/repo/parsers.js.map +1 -1
- package/dist/src/repo/repo-types.d.ts +1 -1
- package/dist/src/repo/tool-types.d.ts +2 -2
- package/dist/src/runtime/connection-bridge.js +4 -1
- package/dist/src/runtime/connection-bridge.js.map +1 -1
- package/dist/src/runtime/explore-tool.js +1 -1
- package/dist/src/runtime/explore-tool.js.map +1 -1
- package/dist/src/sdk.js +6 -17
- package/dist/src/sdk.js.map +1 -1
- package/dist/src/snapshot/snapshot-types.d.ts +186 -90
- package/dist/src/stores/store-backend.d.ts +8 -8
- package/dist/src/tool-context.d.ts +2 -2
- package/dist/src/tool-registration.js +3 -3
- package/dist/src/tool-registration.js.map +1 -1
- package/dist/src/tools/definitions/amodal-tools.js +5 -5
- package/dist/src/tools/definitions/amodal-tools.js.map +1 -1
- package/dist/src/tools/request-tool.js +1 -1
- package/dist/src/tools/store-query-tool.d.ts +2 -2
- package/dist/src/tools/store-query-tool.js +9 -9
- package/dist/src/tools/store-query-tool.js.map +1 -1
- package/dist/src/tools/store-write-tool.d.ts +2 -2
- package/dist/src/tools/store-write-tool.js +8 -8
- package/dist/src/tools/store-write-tool.js.map +1 -1
- package/dist/src/versions/version-bundle-types.d.ts +18 -18
- package/dist/src/versions/version-bundle-types.js +2 -2
- package/dist/src/versions/version-bundle-types.js.map +1 -1
- package/dist/src/widgets/present-tool.js +2 -2
- package/dist/src/widgets/present-tool.js.map +1 -1
- package/dist/src/widgets/widget-types.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2025 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import type { LockEntry, LockFile
|
|
6
|
+
import type { LockEntry, LockFile } from './package-types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Read the lock file. Returns null if it doesn't exist (first install).
|
|
9
9
|
*/
|
|
@@ -13,23 +13,29 @@ export declare function readLockFile(repoPath: string): Promise<LockFile | null>
|
|
|
13
13
|
*/
|
|
14
14
|
export declare function writeLockFile(repoPath: string, lock: LockFile): Promise<void>;
|
|
15
15
|
/**
|
|
16
|
-
* Add or update a lock entry
|
|
16
|
+
* Add or update a lock entry by npm package name.
|
|
17
17
|
*/
|
|
18
|
-
export declare function addLockEntry(repoPath: string,
|
|
18
|
+
export declare function addLockEntry(repoPath: string, npmName: string, entry: LockEntry): Promise<LockFile>;
|
|
19
19
|
/**
|
|
20
|
-
* Remove a lock entry
|
|
20
|
+
* Remove a lock entry by npm package name.
|
|
21
21
|
*/
|
|
22
|
-
export declare function removeLockEntry(repoPath: string,
|
|
22
|
+
export declare function removeLockEntry(repoPath: string, npmName: string): Promise<LockFile>;
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* Build a lock file from a list of discovered packages.
|
|
25
25
|
*/
|
|
26
|
-
export declare function
|
|
26
|
+
export declare function buildLockFile(repoPath: string, packages: Array<{
|
|
27
|
+
npmName: string;
|
|
28
|
+
version: string;
|
|
29
|
+
integrity: string;
|
|
30
|
+
}>): Promise<LockFile>;
|
|
27
31
|
/**
|
|
28
|
-
*
|
|
32
|
+
* Get a single lock entry by npm name. Returns null if not found.
|
|
29
33
|
*/
|
|
30
|
-
export declare function
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
export declare function getLockEntry(repoPath: string, npmName: string): Promise<LockEntry | null>;
|
|
35
|
+
/**
|
|
36
|
+
* List all lock entries.
|
|
37
|
+
*/
|
|
38
|
+
export declare function listLockEntries(repoPath: string): Promise<Array<{
|
|
39
|
+
npmName: string;
|
|
34
40
|
entry: LockEntry;
|
|
35
41
|
}>>;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2025 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { readFile, rename, writeFile, mkdir } from 'node:fs/promises';
|
|
7
7
|
import * as path from 'node:path';
|
|
8
8
|
import { PackageError } from './package-error.js';
|
|
9
|
-
import { LockFileSchema
|
|
9
|
+
import { LockFileSchema } from './package-types.js';
|
|
10
10
|
const LOCK_FILENAME = 'amodal.lock';
|
|
11
11
|
/**
|
|
12
12
|
* Get the full path to the lock file for a repo.
|
|
@@ -69,49 +69,50 @@ export async function writeLockFile(repoPath, lock) {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* Add or update a lock entry
|
|
72
|
+
* Add or update a lock entry by npm package name.
|
|
73
73
|
*/
|
|
74
|
-
export async function addLockEntry(repoPath,
|
|
75
|
-
const lock = (await readLockFile(repoPath)) ?? { lockVersion:
|
|
76
|
-
|
|
77
|
-
lock.packages[key] = entry;
|
|
74
|
+
export async function addLockEntry(repoPath, npmName, entry) {
|
|
75
|
+
const lock = (await readLockFile(repoPath)) ?? { lockVersion: 2, packages: {} };
|
|
76
|
+
lock.packages[npmName] = entry;
|
|
78
77
|
await writeLockFile(repoPath, lock);
|
|
79
78
|
return lock;
|
|
80
79
|
}
|
|
81
80
|
/**
|
|
82
|
-
* Remove a lock entry
|
|
81
|
+
* Remove a lock entry by npm package name.
|
|
83
82
|
*/
|
|
84
|
-
export async function removeLockEntry(repoPath,
|
|
85
|
-
const lock = (await readLockFile(repoPath)) ?? { lockVersion:
|
|
86
|
-
|
|
87
|
-
delete lock.packages[key];
|
|
83
|
+
export async function removeLockEntry(repoPath, npmName) {
|
|
84
|
+
const lock = (await readLockFile(repoPath)) ?? { lockVersion: 2, packages: {} };
|
|
85
|
+
delete lock.packages[npmName];
|
|
88
86
|
await writeLockFile(repoPath, lock);
|
|
89
87
|
return lock;
|
|
90
88
|
}
|
|
91
89
|
/**
|
|
92
|
-
*
|
|
90
|
+
* Build a lock file from a list of discovered packages.
|
|
93
91
|
*/
|
|
94
|
-
export async function
|
|
92
|
+
export async function buildLockFile(repoPath, packages) {
|
|
93
|
+
const lock = { lockVersion: 2, packages: {} };
|
|
94
|
+
for (const pkg of packages) {
|
|
95
|
+
lock.packages[pkg.npmName] = { version: pkg.version, integrity: pkg.integrity };
|
|
96
|
+
}
|
|
97
|
+
await writeLockFile(repoPath, lock);
|
|
98
|
+
return lock;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get a single lock entry by npm name. Returns null if not found.
|
|
102
|
+
*/
|
|
103
|
+
export async function getLockEntry(repoPath, npmName) {
|
|
95
104
|
const lock = await readLockFile(repoPath);
|
|
96
105
|
if (!lock)
|
|
97
106
|
return null;
|
|
98
|
-
|
|
99
|
-
return lock.packages[key] ?? null;
|
|
107
|
+
return lock.packages[npmName] ?? null;
|
|
100
108
|
}
|
|
101
109
|
/**
|
|
102
|
-
* List lock entries
|
|
110
|
+
* List all lock entries.
|
|
103
111
|
*/
|
|
104
|
-
export async function listLockEntries(repoPath
|
|
112
|
+
export async function listLockEntries(repoPath) {
|
|
105
113
|
const lock = await readLockFile(repoPath);
|
|
106
114
|
if (!lock)
|
|
107
115
|
return [];
|
|
108
|
-
|
|
109
|
-
for (const [key, entry] of Object.entries(lock.packages)) {
|
|
110
|
-
const parsed = parsePackageKey(key);
|
|
111
|
-
if (type && parsed.type !== type)
|
|
112
|
-
continue;
|
|
113
|
-
results.push({ key, type: parsed.type, name: parsed.name, entry });
|
|
114
|
-
}
|
|
115
|
-
return results;
|
|
116
|
+
return Object.entries(lock.packages).map(([npmName, entry]) => ({ npmName, entry }));
|
|
116
117
|
}
|
|
117
118
|
//# sourceMappingURL=lock-file.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-file.js","sourceRoot":"","sources":["../../../src/packages/lock-file.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"lock-file.js","sourceRoot":"","sources":["../../../src/packages/lock-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2025 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
|
-
import type { LockFile
|
|
6
|
+
import type { LockFile } from './package-types.js';
|
|
7
7
|
/**
|
|
8
8
|
* Paths for the hidden npm context.
|
|
9
9
|
*/
|
|
@@ -42,15 +42,16 @@ export declare function npmUninstall(paths: NpmContextPaths, npmName: string, ti
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function generatePackageJson(lockFile: LockFile): Record<string, unknown>;
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
45
|
+
* Discovered package from node_modules scan.
|
|
46
46
|
*/
|
|
47
|
-
export
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
export interface DiscoveredPackage {
|
|
48
|
+
npmName: string;
|
|
49
|
+
version: string;
|
|
50
|
+
integrity: string;
|
|
51
|
+
packageDir: string;
|
|
52
|
+
}
|
|
52
53
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
54
|
+
* Scan node_modules/@amodalai/* to discover all installed amodal packages.
|
|
55
|
+
* Used after npm install to rebuild the lock file from what's actually installed.
|
|
55
56
|
*/
|
|
56
|
-
export declare function
|
|
57
|
+
export declare function discoverInstalledPackages(paths: NpmContextPaths): Promise<DiscoveredPackage[]>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright
|
|
3
|
+
* Copyright 2025 Amodal Labs, Inc.
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { execFile } from 'node:child_process';
|
|
7
|
-
import { mkdir,
|
|
7
|
+
import { mkdir, readdir, stat, writeFile } from 'node:fs/promises';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { promisify } from 'node:util';
|
|
10
10
|
import { PackageError } from './package-error.js';
|
|
11
|
-
import { makePackageRef, parsePackageKey, toSymlinkName, } from './package-types.js';
|
|
12
11
|
const execFileAsync = promisify(execFile);
|
|
13
12
|
const DEFAULT_REGISTRY_URL = 'https://registry.amodalai.com';
|
|
14
13
|
const DEFAULT_TIMEOUT = 30_000;
|
|
@@ -113,8 +112,8 @@ export async function npmUninstall(paths, npmName, timeout) {
|
|
|
113
112
|
*/
|
|
114
113
|
export function generatePackageJson(lockFile) {
|
|
115
114
|
const dependencies = {};
|
|
116
|
-
for (const [, entry] of Object.entries(lockFile.packages)) {
|
|
117
|
-
dependencies[
|
|
115
|
+
for (const [npmName, entry] of Object.entries(lockFile.packages)) {
|
|
116
|
+
dependencies[npmName] = entry.version;
|
|
118
117
|
}
|
|
119
118
|
return {
|
|
120
119
|
name: 'amodal-packages',
|
|
@@ -122,74 +121,6 @@ export function generatePackageJson(lockFile) {
|
|
|
122
121
|
dependencies,
|
|
123
122
|
};
|
|
124
123
|
}
|
|
125
|
-
/**
|
|
126
|
-
* Create or repair a symlink from the clean path to the npm node_modules path.
|
|
127
|
-
*/
|
|
128
|
-
export async function ensureSymlink(paths, ref) {
|
|
129
|
-
const symlinkDir = path.join(paths.root, toSymlinkName(ref.type, ref.name));
|
|
130
|
-
const target = path.join(paths.nodeModules, ref.npmName);
|
|
131
|
-
// Verify target exists
|
|
132
|
-
try {
|
|
133
|
-
await stat(target);
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
throw new PackageError('SYMLINK_FAILED', `Package not installed: ${ref.npmName}`);
|
|
137
|
-
}
|
|
138
|
-
// Remove existing symlink if broken or wrong target
|
|
139
|
-
try {
|
|
140
|
-
const existingTarget = await readlink(symlinkDir);
|
|
141
|
-
if (existingTarget === target)
|
|
142
|
-
return symlinkDir;
|
|
143
|
-
await unlink(symlinkDir);
|
|
144
|
-
}
|
|
145
|
-
catch (err) {
|
|
146
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
147
|
-
if (err.code !== 'ENOENT') {
|
|
148
|
-
// Try to remove it anyway
|
|
149
|
-
try {
|
|
150
|
-
await unlink(symlinkDir);
|
|
151
|
-
}
|
|
152
|
-
catch {
|
|
153
|
-
// Ignore cleanup errors
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
try {
|
|
158
|
-
await symlink(target, symlinkDir, 'dir');
|
|
159
|
-
}
|
|
160
|
-
catch (err) {
|
|
161
|
-
throw new PackageError('SYMLINK_FAILED', `Failed to create symlink: ${symlinkDir}`, err);
|
|
162
|
-
}
|
|
163
|
-
return symlinkDir;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Create symlinks for all packages in a lock file.
|
|
167
|
-
*/
|
|
168
|
-
export async function ensureAllSymlinks(paths, lockFile) {
|
|
169
|
-
const tasks = Object.keys(lockFile.packages).map((key) => {
|
|
170
|
-
const parsed = parsePackageKey(key);
|
|
171
|
-
const ref = makePackageRef(parsed.type, parsed.name);
|
|
172
|
-
return ensureSymlink(paths, ref);
|
|
173
|
-
});
|
|
174
|
-
await Promise.all(tasks);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Get the resolved package directory for an installed package.
|
|
178
|
-
* Returns null if the package is not installed or the symlink is broken.
|
|
179
|
-
*/
|
|
180
|
-
export async function getPackageDir(repoPath, ref) {
|
|
181
|
-
const paths = getNpmContextPaths(repoPath);
|
|
182
|
-
const symlinkDir = path.join(paths.root, toSymlinkName(ref.type, ref.name));
|
|
183
|
-
try {
|
|
184
|
-
const targetStat = await stat(symlinkDir);
|
|
185
|
-
if (targetStat.isDirectory())
|
|
186
|
-
return symlinkDir;
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
return null;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
124
|
/**
|
|
194
125
|
* Read version info from an installed package's package.json.
|
|
195
126
|
* Falls back to package-lock.json for integrity if _integrity is missing
|
|
@@ -232,4 +163,36 @@ async function readInstalledVersion(paths, npmName) {
|
|
|
232
163
|
}
|
|
233
164
|
return { version, integrity };
|
|
234
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Scan node_modules/@amodalai/* to discover all installed amodal packages.
|
|
168
|
+
* Used after npm install to rebuild the lock file from what's actually installed.
|
|
169
|
+
*/
|
|
170
|
+
export async function discoverInstalledPackages(paths) {
|
|
171
|
+
const scopeDir = path.join(paths.nodeModules, '@amodalai');
|
|
172
|
+
let entries;
|
|
173
|
+
try {
|
|
174
|
+
entries = await readdir(scopeDir);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
const results = [];
|
|
180
|
+
for (const entry of entries) {
|
|
181
|
+
const packageDir = path.join(scopeDir, entry);
|
|
182
|
+
const npmName = `@amodalai/${entry}`;
|
|
183
|
+
try {
|
|
184
|
+
const s = await stat(packageDir);
|
|
185
|
+
if (!s.isDirectory())
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const { version, integrity } = await readInstalledVersion(paths, npmName);
|
|
192
|
+
if (!version)
|
|
193
|
+
continue;
|
|
194
|
+
results.push({ npmName, version, integrity, packageDir });
|
|
195
|
+
}
|
|
196
|
+
return results;
|
|
197
|
+
}
|
|
235
198
|
//# sourceMappingURL=npm-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-context.js","sourceRoot":"","sources":["../../../src/packages/npm-context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"npm-context.js","sourceRoot":"","sources":["../../../src/packages/npm-context.ts"],"names":[],"mappings":"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"}
|