@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.
Files changed (110) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +19 -48
  3. package/dist/artifacts/engine.d.ts +3 -7
  4. package/dist/artifacts/engine.js +39 -23
  5. package/dist/artifacts/engine.js.map +1 -1
  6. package/dist/artifacts/storage.d.ts +3 -2
  7. package/dist/artifacts/storage.js +42 -7
  8. package/dist/artifacts/storage.js.map +1 -1
  9. package/dist/artifacts/validation.js +1 -1
  10. package/dist/artifacts/validation.js.map +1 -1
  11. package/dist/cli/body-input.js +12 -2
  12. package/dist/cli/body-input.js.map +1 -1
  13. package/dist/cli/commands/artifact.js +53 -12
  14. package/dist/cli/commands/artifact.js.map +1 -1
  15. package/dist/cli/commands/meta.js +1 -1
  16. package/dist/cli/commands/meta.js.map +1 -1
  17. package/dist/cli/commands/skills.js +0 -2
  18. package/dist/cli/commands/skills.js.map +1 -1
  19. package/dist/cli/commands/view.js +29 -27
  20. package/dist/cli/commands/view.js.map +1 -1
  21. package/dist/cli/runtime.d.ts +2 -0
  22. package/dist/cli/runtime.js +2 -1
  23. package/dist/cli/runtime.js.map +1 -1
  24. package/dist/cli.js +0 -2
  25. package/dist/cli.js.map +1 -1
  26. package/dist/{commands → command-meta}/registry.js +0 -12
  27. package/dist/command-meta/registry.js.map +1 -0
  28. package/dist/errors.d.ts +1 -1
  29. package/dist/errors.js.map +1 -1
  30. package/dist/generator/claude.d.ts +1 -0
  31. package/dist/generator/claude.js +17 -2
  32. package/dist/generator/claude.js.map +1 -1
  33. package/dist/generator/index.js +2 -0
  34. package/dist/generator/index.js.map +1 -1
  35. package/dist/generator/opencode.d.ts +5 -0
  36. package/dist/generator/opencode.js +207 -0
  37. package/dist/generator/opencode.js.map +1 -0
  38. package/dist/generator/write.d.ts +1 -0
  39. package/dist/generator/write.js +14 -0
  40. package/dist/generator/write.js.map +1 -1
  41. package/dist/index/indexer.js +37 -8
  42. package/dist/index/indexer.js.map +1 -1
  43. package/dist/index/revisions.d.ts +2 -2
  44. package/dist/index/revisions.js +18 -3
  45. package/dist/index/revisions.js.map +1 -1
  46. package/dist/workspace/config.d.ts +0 -69
  47. package/dist/workspace/config.js +4 -21
  48. package/dist/workspace/config.js.map +1 -1
  49. package/dist/workspace/init.js +16 -4
  50. package/dist/workspace/init.js.map +1 -1
  51. package/dist/workspace/paths.d.ts +12 -0
  52. package/dist/workspace/paths.js +69 -0
  53. package/dist/workspace/paths.js.map +1 -1
  54. package/package.json +3 -5
  55. package/dist/cli/commands/orchestrate.d.ts +0 -6
  56. package/dist/cli/commands/orchestrate.js +0 -51
  57. package/dist/cli/commands/orchestrate.js.map +0 -1
  58. package/dist/commands/registry.js.map +0 -1
  59. package/dist/index.d.ts +0 -33
  60. package/dist/index.js +0 -20
  61. package/dist/index.js.map +0 -1
  62. package/dist/orchestration/agents.d.ts +0 -15
  63. package/dist/orchestration/agents.js +0 -156
  64. package/dist/orchestration/agents.js.map +0 -1
  65. package/dist/orchestration/artifacts.d.ts +0 -8
  66. package/dist/orchestration/artifacts.js +0 -20
  67. package/dist/orchestration/artifacts.js.map +0 -1
  68. package/dist/orchestration/client.d.ts +0 -59
  69. package/dist/orchestration/client.js +0 -107
  70. package/dist/orchestration/client.js.map +0 -1
  71. package/dist/orchestration/config.d.ts +0 -14
  72. package/dist/orchestration/config.js +0 -45
  73. package/dist/orchestration/config.js.map +0 -1
  74. package/dist/orchestration/emit.d.ts +0 -7
  75. package/dist/orchestration/emit.js +0 -19
  76. package/dist/orchestration/emit.js.map +0 -1
  77. package/dist/orchestration/engine.d.ts +0 -23
  78. package/dist/orchestration/engine.js +0 -136
  79. package/dist/orchestration/engine.js.map +0 -1
  80. package/dist/orchestration/file-gate.d.ts +0 -19
  81. package/dist/orchestration/file-gate.js +0 -25
  82. package/dist/orchestration/file-gate.js.map +0 -1
  83. package/dist/orchestration/index.d.ts +0 -18
  84. package/dist/orchestration/index.js +0 -12
  85. package/dist/orchestration/index.js.map +0 -1
  86. package/dist/orchestration/manager.d.ts +0 -13
  87. package/dist/orchestration/manager.js +0 -26
  88. package/dist/orchestration/manager.js.map +0 -1
  89. package/dist/orchestration/prompts.d.ts +0 -10
  90. package/dist/orchestration/prompts.js +0 -71
  91. package/dist/orchestration/prompts.js.map +0 -1
  92. package/dist/orchestration/scheduler.d.ts +0 -18
  93. package/dist/orchestration/scheduler.js +0 -49
  94. package/dist/orchestration/scheduler.js.map +0 -1
  95. package/dist/orchestration/schema.d.ts +0 -12
  96. package/dist/orchestration/schema.js +0 -78
  97. package/dist/orchestration/schema.js.map +0 -1
  98. package/dist/orchestration/tiers.d.ts +0 -14
  99. package/dist/orchestration/tiers.js +0 -57
  100. package/dist/orchestration/tiers.js.map +0 -1
  101. package/dist/orchestration/types.d.ts +0 -74
  102. package/dist/orchestration/types.js +0 -8
  103. package/dist/orchestration/types.js.map +0 -1
  104. package/dist/orchestration/verifier.d.ts +0 -14
  105. package/dist/orchestration/verifier.js +0 -66
  106. package/dist/orchestration/verifier.js.map +0 -1
  107. package/dist/orchestration/worker.d.ts +0 -16
  108. package/dist/orchestration/worker.js +0 -80
  109. package/dist/orchestration/worker.js.map +0 -1
  110. /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":"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"}
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>;
@@ -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.10.1",
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
- }