@zhuk/spego 0.10.1 → 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 +27 -0
- package/README.md +19 -48
- 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/skills.js +0 -2
- package/dist/cli/commands/skills.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/cli.js +0 -2
- package/dist/cli.js.map +1 -1
- package/dist/{commands → command-meta}/registry.js +0 -12
- 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.d.ts +1 -0
- package/dist/generator/claude.js +17 -2
- package/dist/generator/claude.js.map +1 -1
- package/dist/generator/index.js +2 -0
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/opencode.d.ts +5 -0
- package/dist/generator/opencode.js +207 -0
- package/dist/generator/opencode.js.map +1 -0
- package/dist/generator/write.d.ts +1 -0
- package/dist/generator/write.js +14 -0
- package/dist/generator/write.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 -69
- package/dist/workspace/config.js +4 -21
- package/dist/workspace/config.js.map +1 -1
- package/dist/workspace/init.js +16 -4
- 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 +3 -5
- package/dist/cli/commands/orchestrate.d.ts +0 -6
- package/dist/cli/commands/orchestrate.js +0 -51
- package/dist/cli/commands/orchestrate.js.map +0 -1
- package/dist/commands/registry.js.map +0 -1
- package/dist/index.d.ts +0 -33
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/orchestration/agents.d.ts +0 -15
- package/dist/orchestration/agents.js +0 -156
- package/dist/orchestration/agents.js.map +0 -1
- package/dist/orchestration/artifacts.d.ts +0 -8
- package/dist/orchestration/artifacts.js +0 -20
- package/dist/orchestration/artifacts.js.map +0 -1
- package/dist/orchestration/client.d.ts +0 -59
- package/dist/orchestration/client.js +0 -107
- package/dist/orchestration/client.js.map +0 -1
- package/dist/orchestration/config.d.ts +0 -14
- package/dist/orchestration/config.js +0 -45
- package/dist/orchestration/config.js.map +0 -1
- package/dist/orchestration/emit.d.ts +0 -7
- package/dist/orchestration/emit.js +0 -19
- package/dist/orchestration/emit.js.map +0 -1
- package/dist/orchestration/engine.d.ts +0 -23
- package/dist/orchestration/engine.js +0 -136
- package/dist/orchestration/engine.js.map +0 -1
- package/dist/orchestration/file-gate.d.ts +0 -19
- package/dist/orchestration/file-gate.js +0 -25
- package/dist/orchestration/file-gate.js.map +0 -1
- package/dist/orchestration/index.d.ts +0 -18
- package/dist/orchestration/index.js +0 -12
- package/dist/orchestration/index.js.map +0 -1
- package/dist/orchestration/manager.d.ts +0 -13
- package/dist/orchestration/manager.js +0 -26
- package/dist/orchestration/manager.js.map +0 -1
- package/dist/orchestration/prompts.d.ts +0 -10
- package/dist/orchestration/prompts.js +0 -71
- package/dist/orchestration/prompts.js.map +0 -1
- package/dist/orchestration/scheduler.d.ts +0 -18
- package/dist/orchestration/scheduler.js +0 -49
- package/dist/orchestration/scheduler.js.map +0 -1
- package/dist/orchestration/schema.d.ts +0 -12
- package/dist/orchestration/schema.js +0 -78
- package/dist/orchestration/schema.js.map +0 -1
- package/dist/orchestration/tiers.d.ts +0 -14
- package/dist/orchestration/tiers.js +0 -57
- package/dist/orchestration/tiers.js.map +0 -1
- package/dist/orchestration/types.d.ts +0 -74
- package/dist/orchestration/types.js +0 -8
- package/dist/orchestration/types.js.map +0 -1
- package/dist/orchestration/verifier.d.ts +0 -14
- package/dist/orchestration/verifier.js +0 -66
- package/dist/orchestration/verifier.js.map +0 -1
- package/dist/orchestration/worker.d.ts +0 -16
- package/dist/orchestration/worker.js +0 -80
- package/dist/orchestration/worker.js.map +0 -1
- /package/dist/{commands → command-meta}/registry.d.ts +0 -0
|
@@ -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>;
|
package/dist/workspace/paths.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import { SpegoError } from '../errors.js';
|
|
1
3
|
import path from 'node:path';
|
|
2
4
|
/**
|
|
3
5
|
* `.spego/` workspace layout. Markdown files are the source of truth;
|
|
@@ -31,4 +33,71 @@ export function artifactFilePath(paths, type, slug) {
|
|
|
31
33
|
export function revisionFilePath(paths, type, slug, revision) {
|
|
32
34
|
return path.join(paths.revisionsRoot, type, `${slug}.r${revision}.md`);
|
|
33
35
|
}
|
|
36
|
+
/** Lstat-guard .spego then resolve realpath for containment root. */
|
|
37
|
+
export async function resolveContainmentRoot(workspaceRoot) {
|
|
38
|
+
await rejectIfSymlink(workspaceRoot);
|
|
39
|
+
return fs.realpath(workspaceRoot);
|
|
40
|
+
}
|
|
41
|
+
/** Reject if target path exists and is a symbolic link; no-op if missing. */
|
|
42
|
+
export async function rejectIfSymlink(targetPath) {
|
|
43
|
+
let stat;
|
|
44
|
+
try {
|
|
45
|
+
stat = await fs.lstat(targetPath);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
if (err.code === 'ENOENT')
|
|
49
|
+
return;
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
52
|
+
if (stat.isSymbolicLink()) {
|
|
53
|
+
throw new SpegoError('WORKSPACE_CONTAINMENT', `Symlink detected at ${targetPath}`, {
|
|
54
|
+
path: targetPath,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Assert a resolved path is strictly inside the workspace root. */
|
|
59
|
+
export function assertContained(resolvedRoot, targetPath) {
|
|
60
|
+
const target = path.resolve(targetPath);
|
|
61
|
+
const root = resolvedRoot.endsWith(path.sep) ? resolvedRoot : resolvedRoot + path.sep;
|
|
62
|
+
if (target !== resolvedRoot && !target.startsWith(root)) {
|
|
63
|
+
throw new SpegoError('WORKSPACE_CONTAINMENT', `Path escapes workspace: ${targetPath}`, {
|
|
64
|
+
path: targetPath,
|
|
65
|
+
resolvedRoot,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Realpath-verify that targetPath's parent is strictly within resolvedRoot.
|
|
71
|
+
* For non-existent parents, walk up to the nearest existing ancestor and
|
|
72
|
+
* check containment — never reject a valid symlink alias before realpath.
|
|
73
|
+
*/
|
|
74
|
+
export async function assertParentContained(resolvedRoot, targetPath) {
|
|
75
|
+
const parent = path.dirname(targetPath);
|
|
76
|
+
try {
|
|
77
|
+
const real = await fs.realpath(parent);
|
|
78
|
+
assertContained(resolvedRoot, real);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (err.code !== 'ENOENT')
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
// Parent doesn't exist yet. Walk up to nearest existing ancestor.
|
|
86
|
+
let ancestor = parent;
|
|
87
|
+
for (;;) {
|
|
88
|
+
const grandparent = path.dirname(ancestor);
|
|
89
|
+
if (grandparent === ancestor)
|
|
90
|
+
break;
|
|
91
|
+
try {
|
|
92
|
+
const realAncestor = await fs.realpath(ancestor);
|
|
93
|
+
assertContained(resolvedRoot, realAncestor);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
if (e.code !== 'ENOENT')
|
|
98
|
+
throw e;
|
|
99
|
+
}
|
|
100
|
+
ancestor = grandparent;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
34
103
|
//# sourceMappingURL=paths.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/workspace/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAmB7C,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC1D,OAAO;QACL,WAAW,EAAE,IAAI;QACjB,aAAa;QACb,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC;QACtD,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC3D,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC3D,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC;QACnD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,kBAAkB,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,IAAY;IACjE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAqB,EAAE,IAAY,EAAE,IAAY;IAChF,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,KAAqB,EACrB,IAAY,EACZ,IAAY,EACZ,QAAgB;IAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,QAAQ,KAAK,CAAC,CAAC;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/workspace/paths.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhuk/spego",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Agent-first product orchestration: markdown-first artifact engine with SQLite indexing.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"spego": "dist/cli.js"
|
|
8
8
|
},
|
|
9
|
-
"main": "./dist/index.js",
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
9
|
"files": [
|
|
12
10
|
"dist",
|
|
13
11
|
"README.md",
|
|
14
12
|
"CHANGELOG.md"
|
|
15
13
|
],
|
|
16
14
|
"scripts": {
|
|
17
|
-
"build": "tsc -p tsconfig.json && node scripts/make-cli-executable.mjs",
|
|
15
|
+
"build": "node scripts/clean-dist.mjs && tsc -p tsconfig.json && node scripts/make-cli-executable.mjs",
|
|
18
16
|
"spego": "tsx src/cli.ts",
|
|
19
17
|
"pretest": "npm run build",
|
|
20
18
|
"test": "vitest run",
|
|
21
19
|
"test:watch": "vitest",
|
|
22
20
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
23
|
-
"lint": "eslint src test"
|
|
21
|
+
"lint": "eslint src test --max-warnings 0"
|
|
24
22
|
},
|
|
25
23
|
"dependencies": {
|
|
26
24
|
"commander": "^12.1.0",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `spego orchestrate` — run the multi-agent orchestration pipeline over an
|
|
3
|
-
* OpenSpec change and emit a structured verdict in human or `--json` mode.
|
|
4
|
-
*/
|
|
5
|
-
import type { Command } from 'commander';
|
|
6
|
-
export declare function registerOrchestrate(program: Command): void;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `spego orchestrate` — run the multi-agent orchestration pipeline over an
|
|
3
|
-
* OpenSpec change and emit a structured verdict in human or `--json` mode.
|
|
4
|
-
*/
|
|
5
|
-
import path from 'node:path';
|
|
6
|
-
import { orchestrateChange } from '../../orchestration/index.js';
|
|
7
|
-
import { renderHeader, renderTable } from '../render.js';
|
|
8
|
-
import { runCommand } from '../runtime.js';
|
|
9
|
-
const VALID_MODES = new Set(['sequential', 'parallel', 'adaptive']);
|
|
10
|
-
export function registerOrchestrate(program) {
|
|
11
|
-
program
|
|
12
|
-
.command('orchestrate')
|
|
13
|
-
.description('Run the multi-agent orchestration pipeline for an OpenSpec change')
|
|
14
|
-
.requiredOption('--change <name>', 'OpenSpec change name to orchestrate')
|
|
15
|
-
.option('--mode <mode>', 'sequential | parallel | adaptive (default: from breakdown)')
|
|
16
|
-
.option('--skip-verify', 'skip the verifier step', false)
|
|
17
|
-
.option('--cwd <dir>', 'project root')
|
|
18
|
-
.action(async (opts) => {
|
|
19
|
-
await runCommand({ program }, async () => {
|
|
20
|
-
const mode = opts.mode && VALID_MODES.has(opts.mode) ? opts.mode : undefined;
|
|
21
|
-
const outcome = await orchestrateChange({
|
|
22
|
-
projectRoot: path.resolve(opts.cwd ?? process.cwd()),
|
|
23
|
-
changeName: opts.change,
|
|
24
|
-
mode,
|
|
25
|
-
skipVerify: Boolean(opts.skipVerify),
|
|
26
|
-
});
|
|
27
|
-
return {
|
|
28
|
-
payload: outcome,
|
|
29
|
-
human: () => {
|
|
30
|
-
const verdict = outcome.verdict.passed ? 'PASS' : 'FAIL';
|
|
31
|
-
const rows = outcome.results.map((r) => [
|
|
32
|
-
r.success ? '[x]' : '[ ]',
|
|
33
|
-
r.subtaskId,
|
|
34
|
-
r.error ?? '',
|
|
35
|
-
]);
|
|
36
|
-
const table = renderTable(['ok', 'subtask', 'error'], rows);
|
|
37
|
-
return [
|
|
38
|
-
renderHeader('🧭', `Orchestrate: ${outcome.changeName}`),
|
|
39
|
-
`goal ${outcome.goal}`,
|
|
40
|
-
`mode ${outcome.executionMode}`,
|
|
41
|
-
`tasks ${outcome.tasksSucceeded}/${outcome.tasksTotal} succeeded`,
|
|
42
|
-
`verdict ${verdict}`,
|
|
43
|
-
'',
|
|
44
|
-
table,
|
|
45
|
-
].join('\n');
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=orchestrate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../../../src/cli/commands/orchestrate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAEnF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,mEAAmE,CAAC;SAChF,cAAc,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,4DAA4D,CAAC;SACrF,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,KAAK,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,UAAU,CAAuB,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,IAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;YAChG,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC;gBACtC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;gBACpD,UAAU,EAAE,IAAI,CAAC,MAAM;gBACvB,IAAI;gBACJ,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;aACrC,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,OAAO;gBAChB,KAAK,EAAE,GAAG,EAAE;oBACV,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBACzD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;wBACtC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;wBACzB,CAAC,CAAC,SAAS;wBACX,CAAC,CAAC,KAAK,IAAI,EAAE;qBACd,CAAC,CAAC;oBACH,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC5D,OAAO;wBACL,YAAY,CAAC,IAAI,EAAE,gBAAgB,OAAO,CAAC,UAAU,EAAE,CAAC;wBACxD,YAAY,OAAO,CAAC,IAAI,EAAE;wBAC1B,YAAY,OAAO,CAAC,aAAa,EAAE;wBACnC,YAAY,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,UAAU,YAAY;wBACpE,YAAY,OAAO,EAAE;wBACrB,EAAE;wBACF,KAAK;qBACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACf,CAAC;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/commands/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public API for embedding the spego artifact engine in other tools.
|
|
3
|
-
* The CLI in `cli.ts` is built on top of these exports.
|
|
4
|
-
*/
|
|
5
|
-
export { ArtifactEngine } from './artifacts/engine.js';
|
|
6
|
-
export type { EngineOptions } from './artifacts/engine.js';
|
|
7
|
-
export { artifactFrontmatterSchema, BUILTIN_ARTIFACT_TYPES, } from './artifacts/types.js';
|
|
8
|
-
export type { ArtifactFrontmatter, ArtifactRecord, ArtifactType, BuiltinArtifactType, } from './artifacts/types.js';
|
|
9
|
-
export { initWorkspace, workspaceStatus, } from './workspace/init.js';
|
|
10
|
-
export type { InitOptions, InitSummary, WorkspaceStatus } from './workspace/init.js';
|
|
11
|
-
export { resolveWorkspacePaths, artifactFilePath, artifactTypeDir, revisionFilePath, WORKSPACE_DIR_NAME, ARTIFACTS_DIR_NAME, REVISIONS_DIR_NAME, INDEX_DIR_NAME, CONFIG_FILE_NAME, INDEX_DB_FILE_NAME, } from './workspace/paths.js';
|
|
12
|
-
export type { WorkspacePaths } from './workspace/paths.js';
|
|
13
|
-
export { defaultConfig, knownArtifactTypes, readConfig, writeConfig, workspaceConfigSchema, } from './workspace/config.js';
|
|
14
|
-
export type { WorkspaceConfig, SupportedAgent } from './workspace/config.js';
|
|
15
|
-
export type { CreateArtifactInput, UpdateArtifactInput } from './artifacts/validation.js';
|
|
16
|
-
export type { IndexedArtifact, RebuildReport } from './index/indexer.js';
|
|
17
|
-
export { viewArtifacts, renderMarkdownBundle, renderJsonBundle } from './export/view.js';
|
|
18
|
-
export type { ViewOptions, ViewResult, MarkdownBundle, JsonBundle, JsonArtifact, } from './export/view.js';
|
|
19
|
-
export { SpegoError } from './errors.js';
|
|
20
|
-
export type { SpegoErrorCode } from './errors.js';
|
|
21
|
-
export { validateMetaForType, hasTypeSchema, ARTIFACT_META_SCHEMAS } from './artifacts/schemas.js';
|
|
22
|
-
export { COMMAND_REGISTRY, getCommandByName } from './commands/registry.js';
|
|
23
|
-
export type { CommandMeta, InputField } from './commands/registry.js';
|
|
24
|
-
export { generateAll, registerGenerator, getGenerator, availableTargets } from './generator/index.js';
|
|
25
|
-
export { ClaudeGenerator } from './generator/claude.js';
|
|
26
|
-
export type { TargetGenerator, GenerationReport, GeneratedFile, FileAction } from './generator/types.js';
|
|
27
|
-
export { SPEGO_GENERATED_YAML_KEY, isSpegoGenerated, isLegacySpegoGenerated, wrapWithMarker } from './generator/markers.js';
|
|
28
|
-
export { resolveAdapter } from './delivery/index.js';
|
|
29
|
-
export type { DeliveryAdapter, DeliveryEpicLink, DeliveryItemStatus, DeliveryStatus, DeliveryTaskSummary, } from './delivery/index.js';
|
|
30
|
-
export { WORKFLOW_REGISTRY, getWorkflowByName, listWorkflowNames } from './workflows/index.js';
|
|
31
|
-
export type { WorkflowMeta, PersonaSpec, PhaseSpec, WorkflowInput, WorkflowOutput } from './workflows/index.js';
|
|
32
|
-
export { orchestrateChange, OpenCodeClient, parseBreakdown, buildDependencyTiers, runSwarm, detectFileGateViolations, enforceFileGate, resolveOrchestrationConfig, assertModelsConfigured, } from './orchestration/index.js';
|
|
33
|
-
export type { OrchestrateOptions, OpenCodeApi, ExecutionMode, SubTask, TaskBreakdown, SubtaskResult, Verdict, OrchestrationOutcome, OrchestrationRuntimeConfig, } from './orchestration/index.js';
|
package/dist/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Public API for embedding the spego artifact engine in other tools.
|
|
3
|
-
* The CLI in `cli.ts` is built on top of these exports.
|
|
4
|
-
*/
|
|
5
|
-
export { ArtifactEngine } from './artifacts/engine.js';
|
|
6
|
-
export { artifactFrontmatterSchema, BUILTIN_ARTIFACT_TYPES, } from './artifacts/types.js';
|
|
7
|
-
export { initWorkspace, workspaceStatus, } from './workspace/init.js';
|
|
8
|
-
export { resolveWorkspacePaths, artifactFilePath, artifactTypeDir, revisionFilePath, WORKSPACE_DIR_NAME, ARTIFACTS_DIR_NAME, REVISIONS_DIR_NAME, INDEX_DIR_NAME, CONFIG_FILE_NAME, INDEX_DB_FILE_NAME, } from './workspace/paths.js';
|
|
9
|
-
export { defaultConfig, knownArtifactTypes, readConfig, writeConfig, workspaceConfigSchema, } from './workspace/config.js';
|
|
10
|
-
export { viewArtifacts, renderMarkdownBundle, renderJsonBundle } from './export/view.js';
|
|
11
|
-
export { SpegoError } from './errors.js';
|
|
12
|
-
export { validateMetaForType, hasTypeSchema, ARTIFACT_META_SCHEMAS } from './artifacts/schemas.js';
|
|
13
|
-
export { COMMAND_REGISTRY, getCommandByName } from './commands/registry.js';
|
|
14
|
-
export { generateAll, registerGenerator, getGenerator, availableTargets } from './generator/index.js';
|
|
15
|
-
export { ClaudeGenerator } from './generator/claude.js';
|
|
16
|
-
export { SPEGO_GENERATED_YAML_KEY, isSpegoGenerated, isLegacySpegoGenerated, wrapWithMarker } from './generator/markers.js';
|
|
17
|
-
export { resolveAdapter } from './delivery/index.js';
|
|
18
|
-
export { WORKFLOW_REGISTRY, getWorkflowByName, listWorkflowNames } from './workflows/index.js';
|
|
19
|
-
export { orchestrateChange, OpenCodeClient, parseBreakdown, buildDependencyTiers, runSwarm, detectFileGateViolations, enforceFileGate, resolveOrchestrationConfig, assertModelsConfigured, } from './orchestration/index.js';
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,aAAa,EACb,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE5E,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC5H,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/F,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,QAAQ,EACR,wBAAwB,EACxB,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode agent and command assets for the orchestration capability,
|
|
3
|
-
* ported from the ultracode reference implementation.
|
|
4
|
-
*
|
|
5
|
-
* These are emitted under `.opencode/` by `spego init` / `spego skills`.
|
|
6
|
-
* Agent files intentionally omit a `model:` line — the spego orchestrator
|
|
7
|
-
* supplies the model per request from `.spego/config.yaml`, so no provider or
|
|
8
|
-
* model identifier is committed here.
|
|
9
|
-
*/
|
|
10
|
-
export interface OrchestrationAsset {
|
|
11
|
-
/** Path relative to the project root. */
|
|
12
|
-
relPath: string;
|
|
13
|
-
content: string;
|
|
14
|
-
}
|
|
15
|
-
export declare const ORCHESTRATION_AGENT_ASSETS: OrchestrationAsset[];
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode agent and command assets for the orchestration capability,
|
|
3
|
-
* ported from the ultracode reference implementation.
|
|
4
|
-
*
|
|
5
|
-
* These are emitted under `.opencode/` by `spego init` / `spego skills`.
|
|
6
|
-
* Agent files intentionally omit a `model:` line — the spego orchestrator
|
|
7
|
-
* supplies the model per request from `.spego/config.yaml`, so no provider or
|
|
8
|
-
* model identifier is committed here.
|
|
9
|
-
*/
|
|
10
|
-
const ULTRAMANAGER = `---
|
|
11
|
-
mode: primary
|
|
12
|
-
temperature: 0.1
|
|
13
|
-
permission:
|
|
14
|
-
read: allow
|
|
15
|
-
edit: deny
|
|
16
|
-
glob: allow
|
|
17
|
-
grep: allow
|
|
18
|
-
task:
|
|
19
|
-
"*": deny
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# UltraManager — Task Decomposition Agent
|
|
23
|
-
|
|
24
|
-
You are **UltraManager**, a senior software architect. Your sole responsibility is to parse a coding task, explore the relevant codebase, and emit a machine-readable **TaskBreakdown JSON**.
|
|
25
|
-
|
|
26
|
-
## Workflow
|
|
27
|
-
|
|
28
|
-
1. Read the repository structure to understand the codebase.
|
|
29
|
-
2. Identify affected modules — map the requirement to specific files.
|
|
30
|
-
3. Decompose the work into the smallest independently implementable sub-tasks.
|
|
31
|
-
4. Assign an execution mode: \`sequential\`, \`parallel\`, or \`adaptive\`.
|
|
32
|
-
5. Emit ONLY the JSON object — no prose, no markdown fences.
|
|
33
|
-
|
|
34
|
-
## Rules
|
|
35
|
-
|
|
36
|
-
- \`files\` lists must be mutually exclusive across parallel tasks.
|
|
37
|
-
- Tasks that share files must be ordered via \`depends_on\`.
|
|
38
|
-
- \`acceptance_criteria\` must be executable, not vague.
|
|
39
|
-
- Keep sub-tasks small enough to fit in a single agent session.
|
|
40
|
-
`;
|
|
41
|
-
const ULTRAWORKER = `---
|
|
42
|
-
mode: subagent
|
|
43
|
-
temperature: 0.15
|
|
44
|
-
permission:
|
|
45
|
-
read: allow
|
|
46
|
-
edit: allow
|
|
47
|
-
glob: allow
|
|
48
|
-
grep: allow
|
|
49
|
-
bash:
|
|
50
|
-
"*": deny
|
|
51
|
-
"pytest *": allow
|
|
52
|
-
"python -m pytest *": allow
|
|
53
|
-
"go test *": allow
|
|
54
|
-
"cargo test *": allow
|
|
55
|
-
"npm test *": allow
|
|
56
|
-
"npx vitest *": allow
|
|
57
|
-
"ruff *": allow
|
|
58
|
-
"black *": allow
|
|
59
|
-
"mypy *": allow
|
|
60
|
-
"gofmt *": allow
|
|
61
|
-
"golangci-lint *": allow
|
|
62
|
-
task: deny
|
|
63
|
-
webfetch: deny
|
|
64
|
-
websearch: deny
|
|
65
|
-
todowrite: allow
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
# UltraWorker — Single Sub-Task Implementation Agent
|
|
69
|
-
|
|
70
|
-
You are **UltraWorker**. You receive a single, precisely scoped sub-task and implement it completely.
|
|
71
|
-
|
|
72
|
-
## Operating Contract
|
|
73
|
-
|
|
74
|
-
- Touch ONLY the files listed in the task's \`files\` array.
|
|
75
|
-
- After implementing, run the provided test command.
|
|
76
|
-
- If tests fail, diagnose and fix (maximum 3 attempts).
|
|
77
|
-
- Do NOT run git commands or install new dependencies.
|
|
78
|
-
|
|
79
|
-
## Response Format
|
|
80
|
-
|
|
81
|
-
End your FINAL message with exactly one of:
|
|
82
|
-
|
|
83
|
-
ULTRAWORKER_STATUS: SUCCESS
|
|
84
|
-
|
|
85
|
-
or
|
|
86
|
-
|
|
87
|
-
ULTRAWORKER_STATUS: FAILED - <concise reason>
|
|
88
|
-
`;
|
|
89
|
-
const ULTRAVERIFIER = `---
|
|
90
|
-
mode: primary
|
|
91
|
-
temperature: 0.0
|
|
92
|
-
permission:
|
|
93
|
-
read: allow
|
|
94
|
-
edit: deny
|
|
95
|
-
glob: allow
|
|
96
|
-
grep: allow
|
|
97
|
-
bash:
|
|
98
|
-
"*": deny
|
|
99
|
-
"pytest *": allow
|
|
100
|
-
"python -m pytest *": allow
|
|
101
|
-
"go test *": allow
|
|
102
|
-
"cargo test *": allow
|
|
103
|
-
"npm test *": allow
|
|
104
|
-
"npx vitest *": allow
|
|
105
|
-
"git diff": allow
|
|
106
|
-
"git status": allow
|
|
107
|
-
task: deny
|
|
108
|
-
webfetch: deny
|
|
109
|
-
websearch: deny
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
# UltraVerifier — Aggregation and Verification Agent
|
|
113
|
-
|
|
114
|
-
You are **UltraVerifier**. You run after all worker agents complete and provide the authoritative pass/fail verdict.
|
|
115
|
-
|
|
116
|
-
## Steps
|
|
117
|
-
|
|
118
|
-
1. Review the execution summary provided in the user message.
|
|
119
|
-
2. Run the full test suite using the provided test command.
|
|
120
|
-
3. Verify each sub-task's acceptance criteria are satisfied.
|
|
121
|
-
4. Identify any regressions introduced by the parallel changes.
|
|
122
|
-
5. Emit ONLY the verdict JSON (no prose before or after).
|
|
123
|
-
|
|
124
|
-
## Rules
|
|
125
|
-
|
|
126
|
-
- \`passed\` is true only if all tests pass AND all acceptance criteria are met AND no regressions are detected.
|
|
127
|
-
- Do NOT modify any files.
|
|
128
|
-
- Do NOT invoke git operations beyond read-only.
|
|
129
|
-
`;
|
|
130
|
-
const WORKFLOW_COMMAND = `---
|
|
131
|
-
name: orchestrate
|
|
132
|
-
description: Run the spego multi-agent orchestration pipeline for an OpenSpec change.
|
|
133
|
-
arguments:
|
|
134
|
-
change: { type: string, required: true, description: "OpenSpec change name to orchestrate" }
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
$ARGUMENTS
|
|
138
|
-
|
|
139
|
-
Run the spego orchestrator for the named OpenSpec change. It decomposes the
|
|
140
|
-
change requirement, executes sub-tasks through the OpenCode worker swarm under a
|
|
141
|
-
per-task file gate, runs the verifier, and writes a verdict.
|
|
142
|
-
|
|
143
|
-
\`\`\`bash
|
|
144
|
-
spego orchestrate --change $ARGUMENTS --json
|
|
145
|
-
\`\`\`
|
|
146
|
-
|
|
147
|
-
Prerequisites: an \`opencode serve\` server must be reachable and orchestration
|
|
148
|
-
models must be configured in \`.spego/config.yaml\` (or \`SPEGO_ORCHESTRATION_MODEL_*\`).
|
|
149
|
-
`;
|
|
150
|
-
export const ORCHESTRATION_AGENT_ASSETS = [
|
|
151
|
-
{ relPath: '.opencode/agents/ultramanager.md', content: ULTRAMANAGER },
|
|
152
|
-
{ relPath: '.opencode/agents/ultraworker.md', content: ULTRAWORKER },
|
|
153
|
-
{ relPath: '.opencode/agents/ultraverifier.md', content: ULTRAVERIFIER },
|
|
154
|
-
{ relPath: '.opencode/commands/orchestrate.md', content: WORKFLOW_COMMAND },
|
|
155
|
-
];
|
|
156
|
-
//# sourceMappingURL=agents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/orchestration/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BpB,CAAC;AAEF,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CnB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCrB,CAAC;AAEF,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;CAmBxB,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAyB;IAC9D,EAAE,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,YAAY,EAAE;IACtE,EAAE,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,WAAW,EAAE;IACpE,EAAE,OAAO,EAAE,mCAAmC,EAAE,OAAO,EAAE,aAAa,EAAE;IACxE,EAAE,OAAO,EAAE,mCAAmC,EAAE,OAAO,EAAE,gBAAgB,EAAE;CAC5E,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Run-artifact persistence. The breakdown, per-sub-task results, swarm log,
|
|
3
|
-
* and final verdict are written under the configured work dir so a run can be
|
|
4
|
-
* inspected after completion.
|
|
5
|
-
*/
|
|
6
|
-
export declare function ensureWorkDir(projectRoot: string, workDir: string): Promise<string>;
|
|
7
|
-
export declare function saveArtifact(workDirAbs: string, name: string, data: unknown): Promise<void>;
|
|
8
|
-
export declare function appendLog(workDirAbs: string, line: string): Promise<void>;
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Run-artifact persistence. The breakdown, per-sub-task results, swarm log,
|
|
3
|
-
* and final verdict are written under the configured work dir so a run can be
|
|
4
|
-
* inspected after completion.
|
|
5
|
-
*/
|
|
6
|
-
import fs from 'node:fs/promises';
|
|
7
|
-
import path from 'node:path';
|
|
8
|
-
export async function ensureWorkDir(projectRoot, workDir) {
|
|
9
|
-
const abs = path.isAbsolute(workDir) ? workDir : path.join(projectRoot, workDir);
|
|
10
|
-
await fs.mkdir(abs, { recursive: true });
|
|
11
|
-
return abs;
|
|
12
|
-
}
|
|
13
|
-
export async function saveArtifact(workDirAbs, name, data) {
|
|
14
|
-
const payload = typeof data === 'string' ? data : JSON.stringify(data, null, 2);
|
|
15
|
-
await fs.writeFile(path.join(workDirAbs, name), payload, 'utf8');
|
|
16
|
-
}
|
|
17
|
-
export async function appendLog(workDirAbs, line) {
|
|
18
|
-
await fs.appendFile(path.join(workDirAbs, 'swarm.log'), `${line}\n`, 'utf8');
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=artifacts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/orchestration/artifacts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAe;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACjF,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,IAAY,EAAE,IAAa;IAChF,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAkB,EAAE,IAAY;IAC9D,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thin async client for the OpenCode REST API (`opencode serve`).
|
|
3
|
-
*
|
|
4
|
-
* Uses the Node global `fetch` and `AbortController` for per-request timeouts,
|
|
5
|
-
* with exponential backoff and jitter on 429/503. The {@link OpenCodeApi}
|
|
6
|
-
* interface is the seam used by the manager, worker, and verifier so the
|
|
7
|
-
* pipeline can be exercised in tests with a fake backend.
|
|
8
|
-
*/
|
|
9
|
-
import type { DiffEntry } from './types.js';
|
|
10
|
-
export interface OpenCodeMessagePart {
|
|
11
|
-
type?: string;
|
|
12
|
-
text?: string;
|
|
13
|
-
}
|
|
14
|
-
export interface OpenCodeMessageResponse {
|
|
15
|
-
parts?: OpenCodeMessagePart[];
|
|
16
|
-
}
|
|
17
|
-
export interface SendMessageInput {
|
|
18
|
-
text: string;
|
|
19
|
-
model?: string;
|
|
20
|
-
agent?: string;
|
|
21
|
-
system?: string;
|
|
22
|
-
}
|
|
23
|
-
export interface OpenCodeApi {
|
|
24
|
-
health(): Promise<{
|
|
25
|
-
version?: string;
|
|
26
|
-
}>;
|
|
27
|
-
createSession(title?: string): Promise<{
|
|
28
|
-
id: string;
|
|
29
|
-
}>;
|
|
30
|
-
sendMessage(sessionId: string, input: SendMessageInput): Promise<OpenCodeMessageResponse>;
|
|
31
|
-
getSessionDiff(sessionId: string): Promise<DiffEntry[]>;
|
|
32
|
-
deleteSession(sessionId: string): Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
export interface OpenCodeClientOptions {
|
|
35
|
-
baseUrl: string;
|
|
36
|
-
username?: string;
|
|
37
|
-
password?: string;
|
|
38
|
-
timeoutMs?: number;
|
|
39
|
-
maxRetries?: number;
|
|
40
|
-
}
|
|
41
|
-
/** Extract the concatenated text parts from a message response. */
|
|
42
|
-
export declare function extractText(response: OpenCodeMessageResponse): string;
|
|
43
|
-
export declare class OpenCodeClient implements OpenCodeApi {
|
|
44
|
-
private readonly baseUrl;
|
|
45
|
-
private readonly authHeader?;
|
|
46
|
-
private readonly timeoutMs;
|
|
47
|
-
private readonly maxRetries;
|
|
48
|
-
constructor(opts: OpenCodeClientOptions);
|
|
49
|
-
health(): Promise<{
|
|
50
|
-
version?: string;
|
|
51
|
-
}>;
|
|
52
|
-
createSession(title?: string): Promise<{
|
|
53
|
-
id: string;
|
|
54
|
-
}>;
|
|
55
|
-
sendMessage(sessionId: string, input: SendMessageInput): Promise<OpenCodeMessageResponse>;
|
|
56
|
-
getSessionDiff(sessionId: string): Promise<DiffEntry[]>;
|
|
57
|
-
deleteSession(sessionId: string): Promise<void>;
|
|
58
|
-
private request;
|
|
59
|
-
}
|