@zhuk/spego 0.11.0 → 0.12.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.
- package/CHANGELOG.md +12 -1
- package/README.md +1 -2
- package/dist/artifacts/engine.d.ts +3 -7
- package/dist/artifacts/engine.js +39 -23
- package/dist/artifacts/engine.js.map +1 -1
- package/dist/artifacts/storage.d.ts +3 -2
- package/dist/artifacts/storage.js +42 -7
- package/dist/artifacts/storage.js.map +1 -1
- package/dist/artifacts/validation.js +1 -1
- package/dist/artifacts/validation.js.map +1 -1
- package/dist/cli/body-input.js +12 -2
- package/dist/cli/body-input.js.map +1 -1
- package/dist/cli/commands/artifact.js +53 -12
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/meta.js +1 -1
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/view.js +29 -27
- package/dist/cli/commands/view.js.map +1 -1
- package/dist/cli/runtime.d.ts +2 -0
- package/dist/cli/runtime.js +2 -1
- package/dist/cli/runtime.js.map +1 -1
- package/dist/command-meta/registry.js.map +1 -0
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/generator/claude.js +1 -1
- package/dist/generator/claude.js.map +1 -1
- package/dist/index/indexer.js +37 -8
- package/dist/index/indexer.js.map +1 -1
- package/dist/index/revisions.d.ts +2 -2
- package/dist/index/revisions.js +18 -3
- package/dist/index/revisions.js.map +1 -1
- package/dist/workspace/config.d.ts +0 -66
- package/dist/workspace/config.js +4 -13
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/init.js +16 -2
- package/dist/workspace/init.js.map +1 -1
- package/dist/workspace/paths.d.ts +12 -0
- package/dist/workspace/paths.js +69 -0
- package/dist/workspace/paths.js.map +1 -1
- package/package.json +2 -4
- package/dist/commands/registry.js.map +0 -1
- package/dist/index.d.ts +0 -32
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- /package/dist/{commands → command-meta}/registry.d.ts +0 -0
- /package/dist/{commands → command-meta}/registry.js +0 -0
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
* Honors the deprecated `--format` flag during the deprecation window in
|
|
5
5
|
* addition to the global `--json` flag.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { SpegoError } from '../../errors.js';
|
|
8
9
|
import { viewArtifacts } from '../../export/view.js';
|
|
9
10
|
import { intersperseBundleDividers, renderHeader } from '../render.js';
|
|
10
|
-
import { deprecate
|
|
11
|
-
import {
|
|
12
|
-
import { getJsonMode } from '../runtime.js';
|
|
11
|
+
import { deprecate } from '../output.js';
|
|
12
|
+
import { getJsonMode, runEngineCommand } from '../runtime.js';
|
|
13
13
|
export function registerView(program) {
|
|
14
14
|
program
|
|
15
15
|
.command('view')
|
|
@@ -26,34 +26,36 @@ export function registerView(program) {
|
|
|
26
26
|
deprecate(globalJson, '--format is deprecated; use the global --json flag');
|
|
27
27
|
}
|
|
28
28
|
const wantJson = globalJson || opts.format === 'json';
|
|
29
|
-
let
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
29
|
+
let revision;
|
|
30
|
+
await runEngineCommand({
|
|
31
|
+
program,
|
|
32
|
+
cwd: opts.cwd,
|
|
33
|
+
jsonOverride: wantJson,
|
|
34
|
+
validate: () => {
|
|
35
|
+
if (opts.revision === undefined)
|
|
36
|
+
return;
|
|
37
|
+
const result = z.coerce.number().int().positive().safeParse(opts.revision);
|
|
38
|
+
if (result.success) {
|
|
39
|
+
revision = result.data;
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
throw new SpegoError('VALIDATION_FAILED', 'Invalid --revision; expected a positive integer', {
|
|
43
|
+
option: '--revision',
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
}, async (engine) => {
|
|
37
47
|
const view = await viewArtifacts(engine, {
|
|
38
48
|
type: opts.type,
|
|
39
49
|
id: opts.id,
|
|
40
|
-
revision
|
|
50
|
+
revision,
|
|
41
51
|
includeDeleted: opts.includeDeleted,
|
|
42
52
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
fail(err, wantJson);
|
|
53
|
-
}
|
|
54
|
-
finally {
|
|
55
|
-
engine.close();
|
|
56
|
-
}
|
|
53
|
+
const body = intersperseBundleDividers(view.markdown.content);
|
|
54
|
+
return {
|
|
55
|
+
payload: view.json,
|
|
56
|
+
human: () => `${renderHeader('📦', 'Artifact bundle')}\n${body}`,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
57
59
|
});
|
|
58
60
|
}
|
|
59
61
|
//# sourceMappingURL=view.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/cli/commands/view.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,OAAO;SACL,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,WAAW,EAAE,4BAA4B,CAAC;SACjD,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,gCAAgC,EAAE,KAAK,CAAC;SACpE,MAAM,CAAC,gBAAgB,EAAE,mEAAmE,CAAC;SAC7F,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,SAAS,CAAC,UAAU,EAAE,oDAAoD,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;QAEtD,IAAI,QAA4B,CAAC;QACjC,MAAM,gBAAgB,CACrB;YACC,OAAO;YACP,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;oBAAE,OAAO;gBACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,OAAO;gBACR,CAAC;gBACD,MAAM,IAAI,UAAU,CAAC,mBAAmB,EAAE,iDAAiD,EAAE;oBAC5F,MAAM,EAAE,YAAY;iBACpB,CAAC,CAAC;YACJ,CAAC;SACD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ;gBACR,cAAc,EAAE,IAAI,CAAC,cAAc;aACnC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO;gBACN,OAAO,EAAE,IAAI,CAAC,IAAI;gBAClB,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,IAAI,EAAE;aAChE,CAAC;QACH,CAAC,CACD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/cli/runtime.d.ts
CHANGED
|
@@ -22,5 +22,7 @@ export declare function runCommand<T>(ctx: RuntimeContext, fn: (json: boolean) =
|
|
|
22
22
|
/** Run a command body that needs an `ArtifactEngine`; the engine is closed on every exit path. */
|
|
23
23
|
export declare function runEngineCommand<T>(ctx: RuntimeContext & {
|
|
24
24
|
cwd?: string;
|
|
25
|
+
jsonOverride?: boolean;
|
|
26
|
+
validate?: () => Promise<void> | void;
|
|
25
27
|
}, fn: (engine: ArtifactEngine, json: boolean) => Promise<CommandResult<T>>): Promise<void>;
|
|
26
28
|
export {};
|
package/dist/cli/runtime.js
CHANGED
|
@@ -26,9 +26,10 @@ export async function runCommand(ctx, fn) {
|
|
|
26
26
|
}
|
|
27
27
|
/** Run a command body that needs an `ArtifactEngine`; the engine is closed on every exit path. */
|
|
28
28
|
export async function runEngineCommand(ctx, fn) {
|
|
29
|
-
const json = getJsonMode(ctx.program);
|
|
29
|
+
const json = ctx.jsonOverride ?? getJsonMode(ctx.program);
|
|
30
30
|
let engine;
|
|
31
31
|
try {
|
|
32
|
+
await ctx.validate?.();
|
|
32
33
|
engine = await ArtifactEngine.open({ projectRoot: ctx.cwd });
|
|
33
34
|
}
|
|
34
35
|
catch (err) {
|
package/dist/cli/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAWnC,MAAM,UAAU,WAAW,CAAC,OAAgB;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/cli/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAWnC,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC3C,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,IAAe,CAAC;AACvC,CAAC;AAED,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,GAAmB,EACnB,EAAgD;IAEhD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC;QACJ,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,GAAqG,EACrG,EAAwE;IAExE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,MAAsB,CAAC;IAC3B,IAAI,CAAC;QACJ,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QACvB,MAAM,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,CAAC;QACJ,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,MAAM,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/command-meta/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Structured error codes returned by the spego artifact engine.
|
|
3
3
|
* Stable across CLI/JSON outputs so agents can branch on them.
|
|
4
4
|
*/
|
|
5
|
-
export type SpegoErrorCode = 'WORKSPACE_NOT_FOUND' | 'WORKSPACE_ALREADY_EXISTS' | 'INVALID_ARTIFACT_TYPE' | 'VALIDATION_FAILED' | 'ARTIFACT_NOT_FOUND' | 'REVISION_CONFLICT' | 'REVISION_NOT_FOUND' | 'WRITE_FAILED' | 'INDEX_REBUILD_FAILED' | 'DELIVERY_ADAPTER_NOT_FOUND' | 'DELIVERY_ADAPTER_ERROR' | 'DELIVERY_READ_ONLY' | 'CHANGE_NOT_FOUND';
|
|
5
|
+
export type SpegoErrorCode = 'WORKSPACE_NOT_FOUND' | 'WORKSPACE_ALREADY_EXISTS' | 'INVALID_ARTIFACT_TYPE' | 'VALIDATION_FAILED' | 'ARTIFACT_NOT_FOUND' | 'WORKSPACE_CONTAINMENT' | 'REVISION_CONFLICT' | 'REVISION_NOT_FOUND' | 'WRITE_FAILED' | 'INDEX_REBUILD_FAILED' | 'DELIVERY_ADAPTER_NOT_FOUND' | 'DELIVERY_ADAPTER_ERROR' | 'DELIVERY_READ_ONLY' | 'CHANGE_NOT_FOUND';
|
|
6
6
|
export interface SpegoErrorDetails {
|
|
7
7
|
[key: string]: unknown;
|
|
8
8
|
}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAwBA,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnB,IAAI,CAAiB;IACrB,OAAO,CAAoB;IAE3C,YAAY,IAAoB,EAAE,OAAe,EAAE,UAA6B,EAAE;QAChF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;CACF"}
|
package/dist/generator/claude.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
|
-
import { COMMAND_REGISTRY } from '../
|
|
3
|
+
import { COMMAND_REGISTRY } from '../command-meta/registry.js';
|
|
4
4
|
import { WORKFLOW_REGISTRY } from '../workflows/registry.js';
|
|
5
5
|
import { writeGeneratedFile, removeGeneratedFile } from './write.js';
|
|
6
6
|
import { GENERATOR_VERSION } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/generator/claude.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/generator/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/index/indexer.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { artifactFilePath
|
|
4
|
-
import { parseArtifactFile
|
|
3
|
+
import { artifactFilePath } from '../workspace/paths.js';
|
|
4
|
+
import { parseArtifactFile } from '../artifacts/storage.js';
|
|
5
5
|
import { ensureIndexSchema, transaction } from './db.js';
|
|
6
6
|
import { SpegoError } from '../errors.js';
|
|
7
|
+
function formatIndexError(err) {
|
|
8
|
+
return err instanceof SpegoError ? `${err.code}: ${err.message}` : err.message;
|
|
9
|
+
}
|
|
7
10
|
function rowToArtifact(row) {
|
|
8
11
|
return {
|
|
9
12
|
id: row.id,
|
|
@@ -86,9 +89,7 @@ export function getArtifactById(db, id) {
|
|
|
86
89
|
return row ? rowToArtifact(row) : null;
|
|
87
90
|
}
|
|
88
91
|
export function getArtifactByTypeSlug(db, type, slug) {
|
|
89
|
-
const row = db
|
|
90
|
-
.prepare(`SELECT * FROM artifacts WHERE type = ? AND slug = ?`)
|
|
91
|
-
.get(type, slug);
|
|
92
|
+
const row = db.prepare(`SELECT * FROM artifacts WHERE type = ? AND slug = ?`).get(type, slug);
|
|
92
93
|
return row ? rowToArtifact(row) : null;
|
|
93
94
|
}
|
|
94
95
|
export function listRevisions(db, artifactId) {
|
|
@@ -128,11 +129,15 @@ export async function rebuildIndex(db, paths, knownTypes) {
|
|
|
128
129
|
const typeDir = path.join(paths.artifactsRoot, type);
|
|
129
130
|
let stat;
|
|
130
131
|
try {
|
|
131
|
-
stat = await fs.
|
|
132
|
+
stat = await fs.lstat(typeDir);
|
|
132
133
|
}
|
|
133
134
|
catch {
|
|
134
135
|
continue;
|
|
135
136
|
}
|
|
137
|
+
if (stat.isSymbolicLink()) {
|
|
138
|
+
report.invalidFiles.push({ path: typeDir, error: 'SYMLINK: type directory is a symlink' });
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
136
141
|
if (!stat.isDirectory())
|
|
137
142
|
continue;
|
|
138
143
|
const entries = await fs.readdir(typeDir);
|
|
@@ -141,6 +146,18 @@ export async function rebuildIndex(db, paths, knownTypes) {
|
|
|
141
146
|
continue;
|
|
142
147
|
const file = path.join(typeDir, entry);
|
|
143
148
|
report.scannedFiles += 1;
|
|
149
|
+
let entryStat;
|
|
150
|
+
try {
|
|
151
|
+
entryStat = await fs.lstat(file);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
report.invalidFiles.push({ path: file, error: 'STAT_FAILED: cannot stat file' });
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (entryStat.isSymbolicLink()) {
|
|
158
|
+
report.invalidFiles.push({ path: file, error: 'SYMLINK: artifact file is a symlink' });
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
144
161
|
try {
|
|
145
162
|
const text = await fs.readFile(file, 'utf8');
|
|
146
163
|
const { frontmatter } = parseArtifactFile(text, file);
|
|
@@ -162,7 +179,7 @@ export async function rebuildIndex(db, paths, knownTypes) {
|
|
|
162
179
|
report.indexedArtifacts += 1;
|
|
163
180
|
}
|
|
164
181
|
catch (err) {
|
|
165
|
-
const message = err
|
|
182
|
+
const message = formatIndexError(err);
|
|
166
183
|
report.invalidFiles.push({ path: file, error: message });
|
|
167
184
|
}
|
|
168
185
|
}
|
|
@@ -188,6 +205,18 @@ async function reindexRevisions(db, paths, fm, report) {
|
|
|
188
205
|
continue;
|
|
189
206
|
const file = path.join(revDir, entry);
|
|
190
207
|
try {
|
|
208
|
+
let entryStat;
|
|
209
|
+
try {
|
|
210
|
+
entryStat = await fs.lstat(file);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
report.invalidFiles.push({ path: file, error: 'STAT_FAILED: cannot stat revision' });
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
if (entryStat.isSymbolicLink()) {
|
|
217
|
+
report.invalidFiles.push({ path: file, error: 'SYMLINK: revision file is a symlink' });
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
191
220
|
const text = await fs.readFile(file, 'utf8');
|
|
192
221
|
const { frontmatter } = parseArtifactFile(text, file);
|
|
193
222
|
if (frontmatter.id !== fm.id)
|
|
@@ -211,7 +240,7 @@ async function reindexRevisions(db, paths, fm, report) {
|
|
|
211
240
|
});
|
|
212
241
|
}
|
|
213
242
|
catch (err) {
|
|
214
|
-
const message = err
|
|
243
|
+
const message = formatIndexError(err);
|
|
215
244
|
report.invalidFiles.push({ path: file, error: message });
|
|
216
245
|
}
|
|
217
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/index/indexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,
|
|
1
|
+
{"version":3,"file":"indexer.js","sourceRoot":"","sources":["../../src/index/indexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@ import type { ArtifactFrontmatter } from '../artifacts/types.js';
|
|
|
4
4
|
* Persist a snapshot of an artifact at the given revision under
|
|
5
5
|
* `.spego/revisions/<type>/<slug>.r<n>.md`.
|
|
6
6
|
*/
|
|
7
|
-
export declare function writeRevisionSnapshot(paths: WorkspacePaths, frontmatter: ArtifactFrontmatter, body: string): Promise<string>;
|
|
8
|
-
/** Read a previously snapshotted revision. */
|
|
7
|
+
export declare function writeRevisionSnapshot(paths: WorkspacePaths, frontmatter: ArtifactFrontmatter, body: string, resolvedRoot?: string): Promise<string>;
|
|
8
|
+
/** Read a previously snapshotted revision, rejecting symlinked files. */
|
|
9
9
|
export declare function readRevisionSnapshot(paths: WorkspacePaths, type: string, slug: string, revision: number): Promise<{
|
|
10
10
|
frontmatter: ArtifactFrontmatter;
|
|
11
11
|
body: string;
|
package/dist/index/revisions.js
CHANGED
|
@@ -6,14 +6,29 @@ import { SpegoError } from '../errors.js';
|
|
|
6
6
|
* Persist a snapshot of an artifact at the given revision under
|
|
7
7
|
* `.spego/revisions/<type>/<slug>.r<n>.md`.
|
|
8
8
|
*/
|
|
9
|
-
export async function writeRevisionSnapshot(paths, frontmatter, body) {
|
|
9
|
+
export async function writeRevisionSnapshot(paths, frontmatter, body, resolvedRoot) {
|
|
10
10
|
const dest = revisionFilePath(paths, frontmatter.type, frontmatter.slug, frontmatter.revision);
|
|
11
|
-
await atomicWriteFile(dest, renderArtifactFile(frontmatter, body));
|
|
11
|
+
await atomicWriteFile(dest, renderArtifactFile(frontmatter, body), resolvedRoot);
|
|
12
12
|
return dest;
|
|
13
13
|
}
|
|
14
|
-
/** Read a previously snapshotted revision. */
|
|
14
|
+
/** Read a previously snapshotted revision, rejecting symlinked files. */
|
|
15
15
|
export async function readRevisionSnapshot(paths, type, slug, revision) {
|
|
16
16
|
const file = revisionFilePath(paths, type, slug, revision);
|
|
17
|
+
let stat;
|
|
18
|
+
try {
|
|
19
|
+
stat = await fs.lstat(file);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
if (err.code === 'ENOENT') {
|
|
23
|
+
throw new SpegoError('REVISION_NOT_FOUND', `Revision ${revision} not found for ${type}/${slug}`, { type, slug, revision, path: file });
|
|
24
|
+
}
|
|
25
|
+
throw err;
|
|
26
|
+
}
|
|
27
|
+
if (stat.isSymbolicLink()) {
|
|
28
|
+
throw new SpegoError('WORKSPACE_CONTAINMENT', `Symlinked revision file at ${file}`, {
|
|
29
|
+
path: file,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
17
32
|
let raw;
|
|
18
33
|
try {
|
|
19
34
|
raw = await fs.readFile(file, 'utf8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revisions.js","sourceRoot":"","sources":["../../src/index/revisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAqB,EACrB,WAAgC,EAChC,IAAY;
|
|
1
|
+
{"version":3,"file":"revisions.js","sourceRoot":"","sources":["../../src/index/revisions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAuB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEjG,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAqB,EACrB,WAAgC,EAChC,IAAY,EACZ,YAAqB;IAErB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/F,MAAM,eAAe,CAAC,IAAI,EAAE,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;IACjF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAqB,EACrB,IAAY,EACZ,IAAY,EACZ,QAAgB;IAEhB,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,UAAU,CAClB,oBAAoB,EACpB,YAAY,QAAQ,kBAAkB,IAAI,IAAI,IAAI,EAAE,EACpD,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CACrC,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAAC,uBAAuB,EAAE,8BAA8B,IAAI,EAAE,EAAE;YAClF,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,IAAI,UAAU,CAClB,oBAAoB,EACpB,YAAY,QAAQ,kBAAkB,IAAI,IAAI,IAAI,EAAE,EACpD,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CACrC,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
export declare const SUPPORTED_AGENTS: readonly ["claude", "cursor", "opencode", "amp"];
|
|
3
|
-
export type SupportedAgent = (typeof SUPPORTED_AGENTS)[number];
|
|
4
2
|
export declare const workspaceConfigSchema: z.ZodObject<{
|
|
5
3
|
/** Schema version. Bump when config layout changes. */
|
|
6
4
|
version: z.ZodDefault<z.ZodLiteral<1>>;
|
|
@@ -20,48 +18,6 @@ export declare const workspaceConfigSchema: z.ZodObject<{
|
|
|
20
18
|
options?: Record<string, unknown> | undefined;
|
|
21
19
|
name?: string | undefined;
|
|
22
20
|
}>>;
|
|
23
|
-
/** Legacy block accepted for old workspaces; new configs do not write it. */
|
|
24
|
-
orchestration: z.ZodOptional<z.ZodObject<{
|
|
25
|
-
serverUrl: z.ZodOptional<z.ZodString>;
|
|
26
|
-
models: z.ZodOptional<z.ZodObject<{
|
|
27
|
-
manager: z.ZodOptional<z.ZodString>;
|
|
28
|
-
worker: z.ZodOptional<z.ZodString>;
|
|
29
|
-
verifier: z.ZodOptional<z.ZodString>;
|
|
30
|
-
fallback: z.ZodOptional<z.ZodString>;
|
|
31
|
-
}, "strip", z.ZodTypeAny, {
|
|
32
|
-
manager?: string | undefined;
|
|
33
|
-
worker?: string | undefined;
|
|
34
|
-
verifier?: string | undefined;
|
|
35
|
-
fallback?: string | undefined;
|
|
36
|
-
}, {
|
|
37
|
-
manager?: string | undefined;
|
|
38
|
-
worker?: string | undefined;
|
|
39
|
-
verifier?: string | undefined;
|
|
40
|
-
fallback?: string | undefined;
|
|
41
|
-
}>>;
|
|
42
|
-
maxParallel: z.ZodOptional<z.ZodNumber>;
|
|
43
|
-
workDir: z.ZodOptional<z.ZodString>;
|
|
44
|
-
}, "strip", z.ZodTypeAny, {
|
|
45
|
-
serverUrl?: string | undefined;
|
|
46
|
-
models?: {
|
|
47
|
-
manager?: string | undefined;
|
|
48
|
-
worker?: string | undefined;
|
|
49
|
-
verifier?: string | undefined;
|
|
50
|
-
fallback?: string | undefined;
|
|
51
|
-
} | undefined;
|
|
52
|
-
maxParallel?: number | undefined;
|
|
53
|
-
workDir?: string | undefined;
|
|
54
|
-
}, {
|
|
55
|
-
serverUrl?: string | undefined;
|
|
56
|
-
models?: {
|
|
57
|
-
manager?: string | undefined;
|
|
58
|
-
worker?: string | undefined;
|
|
59
|
-
verifier?: string | undefined;
|
|
60
|
-
fallback?: string | undefined;
|
|
61
|
-
} | undefined;
|
|
62
|
-
maxParallel?: number | undefined;
|
|
63
|
-
workDir?: string | undefined;
|
|
64
|
-
}>>;
|
|
65
21
|
}, "strict", z.ZodTypeAny, {
|
|
66
22
|
agents: string[];
|
|
67
23
|
demo: boolean;
|
|
@@ -71,17 +27,6 @@ export declare const workspaceConfigSchema: z.ZodObject<{
|
|
|
71
27
|
options: Record<string, unknown>;
|
|
72
28
|
name: string;
|
|
73
29
|
};
|
|
74
|
-
orchestration?: {
|
|
75
|
-
serverUrl?: string | undefined;
|
|
76
|
-
models?: {
|
|
77
|
-
manager?: string | undefined;
|
|
78
|
-
worker?: string | undefined;
|
|
79
|
-
verifier?: string | undefined;
|
|
80
|
-
fallback?: string | undefined;
|
|
81
|
-
} | undefined;
|
|
82
|
-
maxParallel?: number | undefined;
|
|
83
|
-
workDir?: string | undefined;
|
|
84
|
-
} | undefined;
|
|
85
30
|
}, {
|
|
86
31
|
agents?: string[] | undefined;
|
|
87
32
|
demo?: boolean | undefined;
|
|
@@ -91,17 +36,6 @@ export declare const workspaceConfigSchema: z.ZodObject<{
|
|
|
91
36
|
options?: Record<string, unknown> | undefined;
|
|
92
37
|
name?: string | undefined;
|
|
93
38
|
} | undefined;
|
|
94
|
-
orchestration?: {
|
|
95
|
-
serverUrl?: string | undefined;
|
|
96
|
-
models?: {
|
|
97
|
-
manager?: string | undefined;
|
|
98
|
-
worker?: string | undefined;
|
|
99
|
-
verifier?: string | undefined;
|
|
100
|
-
fallback?: string | undefined;
|
|
101
|
-
} | undefined;
|
|
102
|
-
maxParallel?: number | undefined;
|
|
103
|
-
workDir?: string | undefined;
|
|
104
|
-
} | undefined;
|
|
105
39
|
}>;
|
|
106
40
|
export type WorkspaceConfig = z.infer<typeof workspaceConfigSchema>;
|
|
107
41
|
export declare function defaultConfig(overrides?: Partial<WorkspaceConfig>): WorkspaceConfig;
|
package/dist/workspace/config.js
CHANGED
|
@@ -3,7 +3,6 @@ import YAML from 'yaml';
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { SpegoError } from '../errors.js';
|
|
5
5
|
import { BUILTIN_ARTIFACT_TYPES } from '../artifacts/types.js';
|
|
6
|
-
export const SUPPORTED_AGENTS = ['claude', 'cursor', 'opencode', 'amp'];
|
|
7
6
|
export const workspaceConfigSchema = z
|
|
8
7
|
.object({
|
|
9
8
|
/** Schema version. Bump when config layout changes. */
|
|
@@ -20,18 +19,6 @@ export const workspaceConfigSchema = z
|
|
|
20
19
|
name: z.string().default('openspec'),
|
|
21
20
|
options: z.record(z.string(), z.unknown()).default({}),
|
|
22
21
|
}).default({ name: 'openspec', options: {} }),
|
|
23
|
-
/** Legacy block accepted for old workspaces; new configs do not write it. */
|
|
24
|
-
orchestration: z.object({
|
|
25
|
-
serverUrl: z.string().optional(),
|
|
26
|
-
models: z.object({
|
|
27
|
-
manager: z.string().optional(),
|
|
28
|
-
worker: z.string().optional(),
|
|
29
|
-
verifier: z.string().optional(),
|
|
30
|
-
fallback: z.string().optional(),
|
|
31
|
-
}).optional(),
|
|
32
|
-
maxParallel: z.number().int().positive().optional(),
|
|
33
|
-
workDir: z.string().optional(),
|
|
34
|
-
}).optional(),
|
|
35
22
|
})
|
|
36
23
|
.strict();
|
|
37
24
|
export function defaultConfig(overrides = {}) {
|
|
@@ -66,6 +53,10 @@ export async function readConfig(configPath) {
|
|
|
66
53
|
cause: err.message,
|
|
67
54
|
});
|
|
68
55
|
}
|
|
56
|
+
// Reject legacy orchestration block that users must delete from config.
|
|
57
|
+
if (typeof data === 'object' && data !== null && 'orchestration' in data) {
|
|
58
|
+
throw new SpegoError('VALIDATION_FAILED', `Legacy orchestration block found in workspace config at ${configPath}. Delete the orchestration property from the config file.`, { path: configPath });
|
|
59
|
+
}
|
|
69
60
|
const parsed = workspaceConfigSchema.safeParse(data);
|
|
70
61
|
if (!parsed.success) {
|
|
71
62
|
throw new SpegoError('VALIDATION_FAILED', 'Invalid workspace config', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/workspace/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/workspace/config.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import { resolveWorkspacePaths } from './paths.js';
|
|
3
|
+
import { resolveWorkspacePaths, rejectIfSymlink } from './paths.js';
|
|
4
4
|
import { defaultConfig, readConfig, writeConfig } from './config.js';
|
|
5
5
|
import { BUILTIN_ARTIFACT_TYPES } from '../artifacts/types.js';
|
|
6
6
|
import { SpegoError } from '../errors.js';
|
|
@@ -27,6 +27,18 @@ export async function initWorkspace(options = {}) {
|
|
|
27
27
|
const projectRoot = path.resolve(options.projectRoot ?? process.cwd());
|
|
28
28
|
const paths = resolveWorkspacePaths(projectRoot);
|
|
29
29
|
const created = [];
|
|
30
|
+
// Reject symlinked existing owned components before any I/O.
|
|
31
|
+
await rejectIfSymlink(paths.workspaceRoot);
|
|
32
|
+
await rejectIfSymlink(paths.artifactsRoot);
|
|
33
|
+
await rejectIfSymlink(paths.revisionsRoot);
|
|
34
|
+
await rejectIfSymlink(paths.indexRoot);
|
|
35
|
+
await rejectIfSymlink(paths.configPath);
|
|
36
|
+
await rejectIfSymlink(paths.indexDbPath);
|
|
37
|
+
// Reject symlinked built-in type dirs that already exist.
|
|
38
|
+
for (const t of BUILTIN_ARTIFACT_TYPES) {
|
|
39
|
+
await rejectIfSymlink(path.join(paths.artifactsRoot, t));
|
|
40
|
+
await rejectIfSymlink(path.join(paths.revisionsRoot, t));
|
|
41
|
+
}
|
|
30
42
|
// Detect prior workspace state before any side effects.
|
|
31
43
|
let existingConfig;
|
|
32
44
|
try {
|
|
@@ -108,7 +120,9 @@ export async function workspaceStatus(projectRoot = process.cwd()) {
|
|
|
108
120
|
agents: config.agents,
|
|
109
121
|
};
|
|
110
122
|
}
|
|
111
|
-
catch {
|
|
123
|
+
catch (err) {
|
|
124
|
+
if (err instanceof SpegoError && err.code !== 'WORKSPACE_NOT_FOUND')
|
|
125
|
+
throw err;
|
|
112
126
|
return {
|
|
113
127
|
initialized: false,
|
|
114
128
|
projectRoot: paths.projectRoot,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workspace/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAuB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workspace/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,3 +28,15 @@ export declare function resolveWorkspacePaths(projectRoot: string): WorkspacePat
|
|
|
28
28
|
export declare function artifactTypeDir(paths: WorkspacePaths, type: string): string;
|
|
29
29
|
export declare function artifactFilePath(paths: WorkspacePaths, type: string, slug: string): string;
|
|
30
30
|
export declare function revisionFilePath(paths: WorkspacePaths, type: string, slug: string, revision: number): string;
|
|
31
|
+
/** Lstat-guard .spego then resolve realpath for containment root. */
|
|
32
|
+
export declare function resolveContainmentRoot(workspaceRoot: string): Promise<string>;
|
|
33
|
+
/** Reject if target path exists and is a symbolic link; no-op if missing. */
|
|
34
|
+
export declare function rejectIfSymlink(targetPath: string): Promise<void>;
|
|
35
|
+
/** Assert a resolved path is strictly inside the workspace root. */
|
|
36
|
+
export declare function assertContained(resolvedRoot: string, targetPath: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Realpath-verify that targetPath's parent is strictly within resolvedRoot.
|
|
39
|
+
* For non-existent parents, walk up to the nearest existing ancestor and
|
|
40
|
+
* check containment — never reject a valid symlink alias before realpath.
|
|
41
|
+
*/
|
|
42
|
+
export declare function assertParentContained(resolvedRoot: string, targetPath: string): Promise<void>;
|