@shapeshift-labs/loom 0.1.0

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +248 -0
  3. package/dist/args.d.ts +9 -0
  4. package/dist/args.d.ts.map +1 -0
  5. package/dist/args.js +52 -0
  6. package/dist/args.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +83 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/common.d.ts +15 -0
  12. package/dist/common.d.ts.map +1 -0
  13. package/dist/common.js +82 -0
  14. package/dist/common.js.map +1 -0
  15. package/dist/config.d.ts +9 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +79 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/diff.d.ts +5 -0
  20. package/dist/diff.d.ts.map +1 -0
  21. package/dist/diff.js +24 -0
  22. package/dist/diff.js.map +1 -0
  23. package/dist/glob.d.ts +3 -0
  24. package/dist/glob.d.ts.map +1 -0
  25. package/dist/glob.js +58 -0
  26. package/dist/glob.js.map +1 -0
  27. package/dist/graph.d.ts +5 -0
  28. package/dist/graph.d.ts.map +1 -0
  29. package/dist/graph.js +11 -0
  30. package/dist/graph.js.map +1 -0
  31. package/dist/help.d.ts +2 -0
  32. package/dist/help.d.ts.map +1 -0
  33. package/dist/help.js +25 -0
  34. package/dist/help.js.map +1 -0
  35. package/dist/index.d.ts +13 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +12 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/init.d.ts +3 -0
  40. package/dist/init.d.ts.map +1 -0
  41. package/dist/init.js +43 -0
  42. package/dist/init.js.map +1 -0
  43. package/dist/output.d.ts +2 -0
  44. package/dist/output.d.ts.map +1 -0
  45. package/dist/output.js +45 -0
  46. package/dist/output.js.map +1 -0
  47. package/dist/project.d.ts +7 -0
  48. package/dist/project.d.ts.map +1 -0
  49. package/dist/project.js +33 -0
  50. package/dist/project.js.map +1 -0
  51. package/dist/scan.d.ts +8 -0
  52. package/dist/scan.d.ts.map +1 -0
  53. package/dist/scan.js +174 -0
  54. package/dist/scan.js.map +1 -0
  55. package/dist/snapshot.d.ts +7 -0
  56. package/dist/snapshot.d.ts.map +1 -0
  57. package/dist/snapshot.js +59 -0
  58. package/dist/snapshot.js.map +1 -0
  59. package/dist/status.d.ts +8 -0
  60. package/dist/status.d.ts.map +1 -0
  61. package/dist/status.js +51 -0
  62. package/dist/status.js.map +1 -0
  63. package/dist/store.d.ts +14 -0
  64. package/dist/store.d.ts.map +1 -0
  65. package/dist/store.js +66 -0
  66. package/dist/store.js.map +1 -0
  67. package/dist/swarm.d.ts +2 -0
  68. package/dist/swarm.d.ts.map +1 -0
  69. package/dist/swarm.js +14 -0
  70. package/dist/swarm.js.map +1 -0
  71. package/dist/types.d.ts +101 -0
  72. package/dist/types.d.ts.map +1 -0
  73. package/dist/types.js +2 -0
  74. package/dist/types.js.map +1 -0
  75. package/frontier.source-policy.json +6 -0
  76. package/package.json +76 -0
package/dist/scan.js ADDED
@@ -0,0 +1,174 @@
1
+ import fs from 'node:fs/promises';
2
+ import { rel, gitHead, nowIso, resolveRoot, sha256, writeJson } from './common.js';
3
+ import { readLoomConfig, readLoomIgnore } from './config.js';
4
+ import { listFiles, matchesAny } from './glob.js';
5
+ import { updateRef, writeLoomObject } from './store.js';
6
+ export async function scanLoomProject(options = {}) {
7
+ const root = resolveRoot(options.root);
8
+ const config = await readLoomConfig(root);
9
+ const ignored = await readLoomIgnore(root);
10
+ const files = await collectSourceFiles(root);
11
+ const compiler = config.frontier.semanticImport ? await loadCompiler() : undefined;
12
+ let semanticFiles = 0;
13
+ let semanticBytes = 0;
14
+ const records = [];
15
+ for (const file of files) {
16
+ const relative = rel(root, file);
17
+ if (!matchesAny(relative, config.source.include))
18
+ continue;
19
+ if (matchesAny(relative, [...config.source.exclude, ...ignored]))
20
+ continue;
21
+ const bytes = await fs.readFile(file);
22
+ if (bytes.byteLength > config.source.maxFileBytes)
23
+ continue;
24
+ const sourceText = bytes.toString('utf8');
25
+ const language = languageForPath(relative);
26
+ const record = {
27
+ path: relative,
28
+ language,
29
+ bytes: bytes.byteLength,
30
+ sha256: sha256(bytes)
31
+ };
32
+ if (shouldImportSemantic(language, config, semanticFiles, semanticBytes, bytes.byteLength)) {
33
+ record.semantic = await importSemantic(compiler, language, relative, sourceText);
34
+ semanticFiles += 1;
35
+ semanticBytes += bytes.byteLength;
36
+ }
37
+ records.push(record);
38
+ }
39
+ const graph = createGraph(root, records, await gitHead(root));
40
+ if (options.write !== false) {
41
+ const graphObject = await writeLoomObject(root, 'graph', graph);
42
+ graph.objectId = graphObject.id;
43
+ await writeJson(`${root}/${config.generated.graph}/current.json`, graph);
44
+ await writeJson(`${root}/.loom/index.json`, {
45
+ kind: 'loom.index',
46
+ version: 1,
47
+ generatedAt: graph.generatedAt,
48
+ graphObjectId: graphObject.id,
49
+ entries: records
50
+ });
51
+ await writeJson(`${root}/${config.generated.objects}/source-index.json`, {
52
+ kind: 'loom.sourceIndex',
53
+ version: 1,
54
+ generatedAt: graph.generatedAt,
55
+ graphObjectId: graphObject.id,
56
+ files: records
57
+ });
58
+ await updateRef(root, 'refs/graphs/current', graphObject.id, 'scan');
59
+ }
60
+ return { ok: true, graph };
61
+ }
62
+ export async function collectSourceFiles(root) {
63
+ return listFiles(root);
64
+ }
65
+ function createGraph(root, files, head) {
66
+ const languages = {};
67
+ for (const file of files)
68
+ languages[file.language] = (languages[file.language] ?? 0) + 1;
69
+ return {
70
+ kind: 'loom.graph',
71
+ version: 1,
72
+ generatedAt: nowIso(),
73
+ root,
74
+ gitHead: head,
75
+ configPath: 'loom.json',
76
+ summary: {
77
+ files: files.length,
78
+ bytes: files.reduce((sum, file) => sum + file.bytes, 0),
79
+ languages,
80
+ semanticImports: files.filter((file) => file.semantic?.ok).length,
81
+ semanticSymbols: files.reduce((sum, file) => sum + (file.semantic?.symbols ?? 0), 0),
82
+ semanticOwnershipRegions: files.reduce((sum, file) => sum + (file.semantic?.ownershipRegions ?? 0), 0),
83
+ semanticPatchHints: files.reduce((sum, file) => sum + (file.semantic?.patchHints ?? 0), 0),
84
+ semanticFailures: files.filter((file) => file.semantic && !file.semantic.ok).length
85
+ },
86
+ files
87
+ };
88
+ }
89
+ function shouldImportSemantic(language, config, files, bytes, nextBytes) {
90
+ if (!config.frontier.semanticImport || language === 'unknown')
91
+ return false;
92
+ if (!config.source.languages.includes(language))
93
+ return false;
94
+ if (files >= config.frontier.semanticImportMaxFiles)
95
+ return false;
96
+ return bytes + nextBytes <= config.frontier.semanticImportMaxBytes;
97
+ }
98
+ async function loadCompiler() {
99
+ try {
100
+ return await import('@shapeshift-labs/frontier-lang-compiler');
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
106
+ async function importSemantic(compiler, language, sourcePath, sourceText) {
107
+ if (!compiler?.importNativeSource)
108
+ return emptySemantic(false, 'frontier-lang-compiler unavailable');
109
+ try {
110
+ const result = compiler.importNativeSource({ language, sourcePath, sourceText });
111
+ const index = objectRecord(result.semanticIndex);
112
+ const metadata = objectRecord(result.metadata);
113
+ const universalAst = objectRecord(result.universalAst);
114
+ return {
115
+ ok: true,
116
+ importId: stringValue(result.id),
117
+ readiness: stringValue(result.readiness) ?? stringValue(metadata.readiness),
118
+ symbols: countRecords(index.symbols),
119
+ ownershipRegions: countRecords(index.ownershipRegions ?? index.regions),
120
+ patchHints: countRecords(index.patchHints ?? index.patchRecords),
121
+ losses: countRecords(result.losses),
122
+ sourceMapMappings: countSourceMapMappings(result.sourceMaps),
123
+ universalAstId: stringValue(universalAst.id)
124
+ };
125
+ }
126
+ catch (error) {
127
+ return emptySemantic(false, error instanceof Error ? error.message : String(error));
128
+ }
129
+ }
130
+ function emptySemantic(ok, message) {
131
+ return { ok, symbols: 0, ownershipRegions: 0, patchHints: 0, losses: 0, sourceMapMappings: 0, message };
132
+ }
133
+ function countSourceMapMappings(value) {
134
+ if (!Array.isArray(value))
135
+ return 0;
136
+ return value.reduce((sum, map) => sum + countRecords(objectRecord(map).mappings), 0);
137
+ }
138
+ function countRecords(value) {
139
+ if (Array.isArray(value))
140
+ return value.length;
141
+ if (value && typeof value === 'object')
142
+ return Object.keys(value).length;
143
+ return 0;
144
+ }
145
+ function objectRecord(value) {
146
+ return value && typeof value === 'object' ? value : {};
147
+ }
148
+ function stringValue(value) {
149
+ return typeof value === 'string' && value ? value : undefined;
150
+ }
151
+ export function languageForPath(file) {
152
+ if (/\.[cm]?js$/.test(file))
153
+ return 'javascript';
154
+ if (/\.tsx?$/.test(file))
155
+ return 'typescript';
156
+ if (/\.py$/.test(file))
157
+ return 'python';
158
+ if (/\.rs$/.test(file))
159
+ return 'rust';
160
+ if (/\.[ch]$/.test(file))
161
+ return 'c';
162
+ if (/\.cs$/.test(file))
163
+ return 'csharp';
164
+ if (/\.go$/.test(file))
165
+ return 'go';
166
+ if (/\.java$/.test(file))
167
+ return 'java';
168
+ if (/\.kt$/.test(file))
169
+ return 'kotlin';
170
+ if (/\.swift$/.test(file))
171
+ return 'swift';
172
+ return 'unknown';
173
+ }
174
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { LoomCommandResult, LoomSnapshotOptions } from './types.js';
2
+ export declare function snapshotLoomProject(options?: LoomSnapshotOptions): Promise<LoomCommandResult>;
3
+ export declare function catLoomObject(options: {
4
+ root?: string;
5
+ id: string;
6
+ }): Promise<unknown>;
7
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAkB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUzF,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkDvG;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5F"}
@@ -0,0 +1,59 @@
1
+ import { gitHead, nowIso, readJson, resolveRoot, writeJson } from './common.js';
2
+ import { readLoomConfig } from './config.js';
3
+ import { scanLoomProject } from './scan.js';
4
+ import { readHeadRef, readLoomObject, readRef, updateRef, writeLoomObject } from './store.js';
5
+ export async function snapshotLoomProject(options = {}) {
6
+ const root = resolveRoot(options.root);
7
+ const config = await readLoomConfig(root);
8
+ await scanLoomProject({ root, write: true });
9
+ const index = await readJson(`${root}/.loom/index.json`);
10
+ const tree = await writeLoomObject(root, 'tree', {
11
+ kind: 'loom.tree',
12
+ version: 1,
13
+ generatedAt: nowIso(),
14
+ entries: index.entries.map((entry) => ({
15
+ path: entry.path,
16
+ language: entry.language,
17
+ bytes: entry.bytes,
18
+ sha256: entry.sha256,
19
+ semantic: entry.semantic
20
+ }))
21
+ });
22
+ const headRef = await readHeadRef(root);
23
+ const parent = headRef === 'HEAD' ? await readRef(root, 'HEAD') : await readRef(root, headRef);
24
+ const snapshot = await writeLoomObject(root, 'snapshot', {
25
+ kind: 'loom.snapshot',
26
+ version: 1,
27
+ createdAt: nowIso(),
28
+ message: options.message ?? 'loom snapshot',
29
+ tree: tree.id,
30
+ parent: parent ? [parent] : [],
31
+ graph: index.graphObjectId,
32
+ gitHead: await gitHead(root),
33
+ summary: {
34
+ files: index.entries.length,
35
+ semanticImports: index.entries.filter((entry) => entry.semantic?.ok).length
36
+ }
37
+ });
38
+ await updateRef(root, headRef, snapshot.id, options.message ?? 'snapshot');
39
+ await writeJson(`${root}/${config.generated.graph}/HEAD.json`, {
40
+ kind: 'loom.head',
41
+ version: 1,
42
+ ref: headRef,
43
+ snapshot: snapshot.id,
44
+ tree: tree.id,
45
+ graph: index.graphObjectId
46
+ });
47
+ return {
48
+ ok: true,
49
+ message: `snapshot ${snapshot.id.slice(0, 12)}`,
50
+ objectId: snapshot.id,
51
+ tree: tree.id,
52
+ ref: headRef,
53
+ parent
54
+ };
55
+ }
56
+ export async function catLoomObject(options) {
57
+ return readLoomObject(resolveRoot(options.root), options.id);
58
+ }
59
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { LoomCommandResult } from './types.js';
2
+ export declare function readLoomStatus(options?: {
3
+ root?: string;
4
+ }): Promise<LoomCommandResult>;
5
+ export declare function doctorLoomProject(options?: {
6
+ root?: string;
7
+ }): Promise<LoomCommandResult>;
8
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAa,MAAM,YAAY,CAAC;AAU/D,wBAAsB,cAAc,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsBhG;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAUnG"}
package/dist/status.js ADDED
@@ -0,0 +1,51 @@
1
+ import { abs, gitDirtyCount, packageVersion, pathExists, readJson, resolveRoot } from './common.js';
2
+ import { readLoomConfig } from './config.js';
3
+ import { readHeadRef, readRef } from './store.js';
4
+ const frontierPackages = [
5
+ '@shapeshift-labs/frontier',
6
+ '@shapeshift-labs/frontier-lang',
7
+ '@shapeshift-labs/frontier-lang-compiler',
8
+ '@shapeshift-labs/frontier-swarm',
9
+ '@shapeshift-labs/frontier-swarm-codex'
10
+ ];
11
+ export async function readLoomStatus(options = {}) {
12
+ const root = resolveRoot(options.root);
13
+ const configExists = await pathExists(abs(root, 'loom.json'));
14
+ const config = configExists ? await readLoomConfig(root) : undefined;
15
+ const graphPath = config ? abs(root, `${config.generated.graph}/current.json`) : undefined;
16
+ const graph = graphPath && await pathExists(graphPath) ? await readJson(graphPath) : undefined;
17
+ const headRef = configExists ? await readHeadRef(root).catch(() => undefined) : undefined;
18
+ const headObject = headRef ? await readRef(root, headRef).catch(() => undefined) : undefined;
19
+ const packages = await readPackageVersions();
20
+ return {
21
+ ok: configExists,
22
+ ready: Boolean(config && graph),
23
+ message: configExists ? 'loom project detected' : 'missing loom.json',
24
+ root,
25
+ configPath: configExists ? abs(root, 'loom.json') : undefined,
26
+ graphPath,
27
+ gitDirtyCount: await gitDirtyCount(root),
28
+ headRef,
29
+ headObject,
30
+ graphSummary: graph?.summary,
31
+ packages
32
+ };
33
+ }
34
+ export async function doctorLoomProject(options = {}) {
35
+ const status = await readLoomStatus(options);
36
+ const packages = status.packages;
37
+ const missing = Object.entries(packages).filter(([, version]) => !version).map(([name]) => name);
38
+ return {
39
+ ok: missing.length === 0,
40
+ message: missing.length ? `missing packages: ${missing.join(', ')}` : 'frontier package resolution ok',
41
+ status,
42
+ missing
43
+ };
44
+ }
45
+ async function readPackageVersions() {
46
+ const out = {};
47
+ for (const name of frontierPackages)
48
+ out[name] = await packageVersion(name);
49
+ return out;
50
+ }
51
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface LoomStoredObject<T = unknown> {
2
+ kind: 'loom.object';
3
+ type: string;
4
+ id: string;
5
+ payload: T;
6
+ }
7
+ export declare function writeLoomObject<T>(root: string, type: string, payload: T): Promise<LoomStoredObject<T>>;
8
+ export declare function readLoomObject<T = unknown>(root: string, id: string): Promise<LoomStoredObject<T>>;
9
+ export declare function readHeadRef(root: string): Promise<string>;
10
+ export declare function readRef(root: string, ref: string): Promise<string | undefined>;
11
+ export declare function updateRef(root: string, ref: string, objectId: string, message: string): Promise<void>;
12
+ export declare function writeSymbolicHead(root: string, ref?: string): Promise<void>;
13
+ export declare function objectPath(root: string, id: string): string;
14
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,wBAAsB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAS7G;AAED,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAExG;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK/D;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAKpF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3G;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE3D"}
package/dist/store.js ADDED
@@ -0,0 +1,66 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { ensureDir, pathExists, readJson, sha256 } from './common.js';
4
+ export async function writeLoomObject(root, type, payload) {
5
+ const body = stableStringify(payload);
6
+ const id = sha256(`loom ${type}\0${body}`);
7
+ const file = objectPath(root, id);
8
+ if (!(await pathExists(file))) {
9
+ await ensureDir(path.dirname(file));
10
+ await fs.writeFile(file, `${JSON.stringify({ kind: 'loom.object', type, id, payload }, null, 2)}\n`);
11
+ }
12
+ return { kind: 'loom.object', type, id, payload };
13
+ }
14
+ export async function readLoomObject(root, id) {
15
+ return readJson(objectPath(root, id));
16
+ }
17
+ export async function readHeadRef(root) {
18
+ const text = await fs.readFile(path.join(root, '.loom', 'HEAD'), 'utf8');
19
+ const trimmed = text.trim();
20
+ if (trimmed.startsWith('ref: '))
21
+ return trimmed.slice(5);
22
+ return 'HEAD';
23
+ }
24
+ export async function readRef(root, ref) {
25
+ const file = refPath(root, ref);
26
+ if (!(await pathExists(file)))
27
+ return undefined;
28
+ const text = await fs.readFile(file, 'utf8');
29
+ return text.trim() || undefined;
30
+ }
31
+ export async function updateRef(root, ref, objectId, message) {
32
+ const file = refPath(root, ref);
33
+ const previous = await readRef(root, ref) ?? '0'.repeat(64);
34
+ await ensureDir(path.dirname(file));
35
+ await fs.writeFile(file, `${objectId}\n`);
36
+ await appendRefLog(root, ref, previous, objectId, message);
37
+ }
38
+ export async function writeSymbolicHead(root, ref = 'refs/heads/main') {
39
+ await ensureDir(path.join(root, '.loom'));
40
+ await fs.writeFile(path.join(root, '.loom', 'HEAD'), `ref: ${ref}\n`);
41
+ }
42
+ export function objectPath(root, id) {
43
+ return path.join(root, '.loom', 'objects', id.slice(0, 2), `${id.slice(2)}.json`);
44
+ }
45
+ function refPath(root, ref) {
46
+ if (ref === 'HEAD')
47
+ return path.join(root, '.loom', 'HEAD');
48
+ return path.join(root, '.loom', ref);
49
+ }
50
+ async function appendRefLog(root, ref, previous, next, message) {
51
+ const file = path.join(root, '.loom', 'logs', ref);
52
+ await ensureDir(path.dirname(file));
53
+ const line = `${new Date().toISOString()} ${previous} ${next} ${message.replace(/\s+/g, ' ').trim()}\n`;
54
+ await fs.appendFile(file, line);
55
+ }
56
+ function stableStringify(value) {
57
+ if (value === null || typeof value !== 'object')
58
+ return JSON.stringify(value);
59
+ if (Array.isArray(value))
60
+ return `[${value.map((item) => stableStringify(item)).join(',')}]`;
61
+ const entries = Object.entries(value)
62
+ .filter(([, item]) => item !== undefined)
63
+ .sort(([left], [right]) => left.localeCompare(right));
64
+ return `{${entries.map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`).join(',')}}`;
65
+ }
66
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runSwarmCommand(args: string[]): Promise<number>;
2
+ //# sourceMappingURL=swarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../src/swarm.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAQrE"}
package/dist/swarm.js ADDED
@@ -0,0 +1,14 @@
1
+ import { spawn } from 'node:child_process';
2
+ import path from 'node:path';
3
+ import { createRequire } from 'node:module';
4
+ const require = createRequire(import.meta.url);
5
+ export async function runSwarmCommand(args) {
6
+ const pkgPath = require.resolve('@shapeshift-labs/frontier-swarm-codex/package.json');
7
+ const cli = path.join(path.dirname(pkgPath), 'dist', 'cli.js');
8
+ return new Promise((resolve, reject) => {
9
+ const child = spawn(process.execPath, [cli, ...args], { stdio: 'inherit' });
10
+ child.on('error', reject);
11
+ child.on('close', (code) => resolve(code ?? 1));
12
+ });
13
+ }
14
+ //# sourceMappingURL=swarm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarm.js","sourceRoot":"","sources":["../src/swarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAc;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,101 @@
1
+ export type JsonValue = null | boolean | number | string | JsonValue[] | {
2
+ [key: string]: JsonValue;
3
+ };
4
+ export type LoomLanguage = 'javascript' | 'typescript' | 'python' | 'rust' | 'c' | 'csharp' | 'go' | 'java' | 'kotlin' | 'swift' | 'unknown';
5
+ export interface LoomConfig {
6
+ kind: 'loom.config';
7
+ version: 1;
8
+ name: string;
9
+ root: string;
10
+ source: LoomSourceConfig;
11
+ generated: LoomGeneratedConfig;
12
+ frontier: LoomFrontierConfig;
13
+ }
14
+ export interface LoomSourceConfig {
15
+ include: string[];
16
+ exclude: string[];
17
+ languages: LoomLanguage[];
18
+ maxFileBytes: number;
19
+ }
20
+ export interface LoomGeneratedConfig {
21
+ dir: string;
22
+ graph: string;
23
+ objects: string;
24
+ refs: string;
25
+ logs: string;
26
+ info: string;
27
+ hooks: string;
28
+ runs: string;
29
+ queues: string;
30
+ evidence: string;
31
+ projections: string;
32
+ locks: string;
33
+ }
34
+ export interface LoomFrontierConfig {
35
+ semanticImport: boolean;
36
+ semanticImportMaxFiles: number;
37
+ semanticImportMaxBytes: number;
38
+ }
39
+ export interface LoomFileRecord {
40
+ path: string;
41
+ language: LoomLanguage;
42
+ bytes: number;
43
+ sha256: string;
44
+ semantic?: LoomSemanticSummary;
45
+ }
46
+ export interface LoomSemanticSummary {
47
+ ok: boolean;
48
+ importId?: string;
49
+ readiness?: string;
50
+ symbols: number;
51
+ ownershipRegions: number;
52
+ patchHints: number;
53
+ losses: number;
54
+ sourceMapMappings: number;
55
+ universalAstId?: string;
56
+ message?: string;
57
+ }
58
+ export interface LoomGraph {
59
+ kind: 'loom.graph';
60
+ version: 1;
61
+ generatedAt: string;
62
+ root: string;
63
+ gitHead?: string;
64
+ configPath: string;
65
+ summary: LoomGraphSummary;
66
+ objectId?: string;
67
+ files: LoomFileRecord[];
68
+ }
69
+ export interface LoomGraphSummary {
70
+ files: number;
71
+ bytes: number;
72
+ languages: Record<string, number>;
73
+ semanticImports: number;
74
+ semanticSymbols: number;
75
+ semanticOwnershipRegions: number;
76
+ semanticPatchHints: number;
77
+ semanticFailures: number;
78
+ }
79
+ export interface LoomInitOptions {
80
+ root?: string;
81
+ name?: string;
82
+ include?: string[];
83
+ exclude?: string[];
84
+ languages?: LoomLanguage[];
85
+ force?: boolean;
86
+ }
87
+ export interface LoomScanOptions {
88
+ root?: string;
89
+ write?: boolean;
90
+ }
91
+ export interface LoomCommandResult {
92
+ ok: boolean;
93
+ message: string;
94
+ path?: string;
95
+ [key: string]: unknown;
96
+ }
97
+ export interface LoomSnapshotOptions {
98
+ root?: string;
99
+ message?: string;
100
+ }
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ {
2
+ "maxLines": 320,
3
+ "maxCharacters": 18000,
4
+ "sourceGlobs": ["src/**/*.ts", "test/**/*.mjs", "scripts/**/*.mjs"],
5
+ "ignoreGlobs": ["dist/**", "node_modules/**"]
6
+ }