specrails-core 5.2.3 → 5.3.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/README.md +3 -0
- package/bin/specrails-core.mjs +5 -0
- package/dist/agent-runtime/cli-executor.d.ts +34 -0
- package/dist/agent-runtime/cli-executor.js +335 -0
- package/dist/agent-runtime/cli-executor.js.map +1 -0
- package/dist/agent-runtime/cli-process.d.ts +32 -0
- package/dist/agent-runtime/cli-process.js +159 -0
- package/dist/agent-runtime/cli-process.js.map +1 -0
- package/dist/agent-runtime/cli.d.ts +38 -0
- package/dist/agent-runtime/cli.js +168 -0
- package/dist/agent-runtime/cli.js.map +1 -0
- package/dist/agent-runtime/config.d.ts +7 -0
- package/dist/agent-runtime/config.js +162 -0
- package/dist/agent-runtime/config.js.map +1 -0
- package/dist/agent-runtime/core-host.d.ts +33 -0
- package/dist/agent-runtime/core-host.js +97 -0
- package/dist/agent-runtime/core-host.js.map +1 -0
- package/dist/agent-runtime/durable-store.d.ts +22 -0
- package/dist/agent-runtime/durable-store.js +205 -0
- package/dist/agent-runtime/durable-store.js.map +1 -0
- package/dist/agent-runtime/executor-types.d.ts +92 -0
- package/dist/agent-runtime/executor-types.js +29 -0
- package/dist/agent-runtime/executor-types.js.map +1 -0
- package/dist/agent-runtime/executors.d.ts +22 -0
- package/dist/agent-runtime/executors.js +44 -0
- package/dist/agent-runtime/executors.js.map +1 -0
- package/dist/agent-runtime/gemini-policy.d.ts +8 -0
- package/dist/agent-runtime/gemini-policy.js +36 -0
- package/dist/agent-runtime/gemini-policy.js.map +1 -0
- package/dist/agent-runtime/graph/artifacts.d.ts +40 -0
- package/dist/agent-runtime/graph/artifacts.js +179 -0
- package/dist/agent-runtime/graph/artifacts.js.map +1 -0
- package/dist/agent-runtime/graph/nodes.d.ts +36 -0
- package/dist/agent-runtime/graph/nodes.js +274 -0
- package/dist/agent-runtime/graph/nodes.js.map +1 -0
- package/dist/agent-runtime/graph/review-policy.d.ts +18 -0
- package/dist/agent-runtime/graph/review-policy.js +32 -0
- package/dist/agent-runtime/graph/review-policy.js.map +1 -0
- package/dist/agent-runtime/graph/roles.d.ts +44 -0
- package/dist/agent-runtime/graph/roles.js +126 -0
- package/dist/agent-runtime/graph/roles.js.map +1 -0
- package/dist/agent-runtime/graph/state.d.ts +75 -0
- package/dist/agent-runtime/graph/state.js +23 -0
- package/dist/agent-runtime/graph/state.js.map +1 -0
- package/dist/agent-runtime/graph-checkpointer.d.ts +61 -0
- package/dist/agent-runtime/graph-checkpointer.js +137 -0
- package/dist/agent-runtime/graph-checkpointer.js.map +1 -0
- package/dist/agent-runtime/index.d.ts +14 -0
- package/dist/agent-runtime/index.js +15 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/agent-runtime/kimi-acp.d.ts +7 -0
- package/dist/agent-runtime/kimi-acp.js +179 -0
- package/dist/agent-runtime/kimi-acp.js.map +1 -0
- package/dist/agent-runtime/openai-executor.d.ts +18 -0
- package/dist/agent-runtime/openai-executor.js +174 -0
- package/dist/agent-runtime/openai-executor.js.map +1 -0
- package/dist/agent-runtime/prompts.d.ts +40 -0
- package/dist/agent-runtime/prompts.js +291 -0
- package/dist/agent-runtime/prompts.js.map +1 -0
- package/dist/agent-runtime/workflow-types.d.ts +210 -0
- package/dist/agent-runtime/workflow-types.js +2 -0
- package/dist/agent-runtime/workflow-types.js.map +1 -0
- package/dist/agent-runtime/workflow.d.ts +17 -0
- package/dist/agent-runtime/workflow.js +609 -0
- package/dist/agent-runtime/workflow.js.map +1 -0
- package/dist/agent-runtime/workspace-tools.d.ts +25 -0
- package/dist/agent-runtime/workspace-tools.js +120 -0
- package/dist/agent-runtime/workspace-tools.js.map +1 -0
- package/dist/installer/cli.d.ts +35 -0
- package/dist/installer/cli.js +3 -0
- package/dist/installer/cli.js.map +1 -1
- package/dist/installer/commands/doctor.d.ts +27 -0
- package/dist/installer/commands/framework.d.ts +85 -0
- package/dist/installer/commands/init.d.ts +147 -0
- package/dist/installer/commands/update.d.ts +56 -0
- package/dist/installer/commands/v5-migration.d.ts +32 -0
- package/dist/installer/phases/framework-lifecycle.d.ts +53 -0
- package/dist/installer/phases/install-config.d.ts +64 -0
- package/dist/installer/phases/manifest.d.ts +45 -0
- package/dist/installer/phases/prereqs.d.ts +51 -0
- package/dist/installer/phases/provider-detect.d.ts +89 -0
- package/dist/installer/phases/scaffold.d.ts +211 -0
- package/dist/installer/runtime/kimi.d.ts +84 -0
- package/dist/installer/runtime/pipeline-state.d.ts +210 -0
- package/dist/installer/runtime/pipeline-state.js +46 -22
- package/dist/installer/runtime/pipeline-state.js.map +1 -1
- package/dist/installer/util/errors.d.ts +46 -0
- package/dist/installer/util/exec.d.ts +41 -0
- package/dist/installer/util/fs.d.ts +153 -0
- package/dist/installer/util/git.d.ts +44 -0
- package/dist/installer/util/install-transaction.d.ts +29 -0
- package/dist/installer/util/logger.d.ts +31 -0
- package/dist/installer/util/paths.d.ts +34 -0
- package/dist/installer/util/prompts.d.ts +23 -0
- package/dist/installer/util/registry.d.ts +174 -0
- package/dist/installer/util/template.d.ts +23 -0
- package/docs/README.md +1 -0
- package/docs/agent-runtime.md +268 -0
- package/integration-contract.json +79 -7
- package/package.json +16 -1
- package/schemas/agent-runtime.schema.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/agent-runtime/workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentRole } from './executor-types.js';
|
|
2
|
+
export interface WorkspaceToolDefinition {
|
|
3
|
+
type: 'function';
|
|
4
|
+
function: {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
parameters: Record<string, unknown>;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function isWithinRoot(root: string, file: string): boolean;
|
|
11
|
+
export declare function canonicalWorkspace(cwd: string, allowedRoots: string[]): {
|
|
12
|
+
cwd: string;
|
|
13
|
+
roots: string[];
|
|
14
|
+
};
|
|
15
|
+
/** Application tool boundary, not an OS sandbox for concurrent external processes. */
|
|
16
|
+
export declare class WorkspaceTools {
|
|
17
|
+
private readonly role;
|
|
18
|
+
readonly cwd: string;
|
|
19
|
+
readonly roots: string[];
|
|
20
|
+
private readonly rootAliases;
|
|
21
|
+
constructor(cwd: string, roots: string[], role: AgentRole);
|
|
22
|
+
definitions(): WorkspaceToolDefinition[];
|
|
23
|
+
private resolve;
|
|
24
|
+
execute(name: string, input: unknown): string;
|
|
25
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { constants, closeSync, existsSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
const MAX_READ = 128 * 1024;
|
|
5
|
+
const MAX_WRITE = 256 * 1024;
|
|
6
|
+
const HIDDEN_STATE = new Set(['.git', '.specrails', '.claude', '.codex', '.gemini', '.kimi-code', '.agents']);
|
|
7
|
+
function definition(name, description, properties, required) {
|
|
8
|
+
return { type: 'function', function: { name, description, parameters: { type: 'object', properties, required, additionalProperties: false } } };
|
|
9
|
+
}
|
|
10
|
+
export function isWithinRoot(root, file) {
|
|
11
|
+
const relative = path.relative(root, file);
|
|
12
|
+
return relative === '' || (!path.isAbsolute(relative) && relative !== '..' && !relative.startsWith('..' + path.sep));
|
|
13
|
+
}
|
|
14
|
+
export function canonicalWorkspace(cwd, allowedRoots) {
|
|
15
|
+
if (!path.isAbsolute(cwd) || !allowedRoots.length || allowedRoots.some(root => !path.isAbsolute(root)))
|
|
16
|
+
throw new Error('Workspace and allowed roots must be absolute paths');
|
|
17
|
+
const roots = [...new Set(allowedRoots.map(root => realpathSync(root)))];
|
|
18
|
+
const directory = realpathSync(cwd);
|
|
19
|
+
if (roots.some(root => !lstatSync(root).isDirectory()) || !lstatSync(directory).isDirectory() || !roots.some(root => isWithinRoot(root, directory)))
|
|
20
|
+
throw new Error('Workspace must be a directory inside the allowed roots');
|
|
21
|
+
return { cwd: directory, roots };
|
|
22
|
+
}
|
|
23
|
+
/** Application tool boundary, not an OS sandbox for concurrent external processes. */
|
|
24
|
+
export class WorkspaceTools {
|
|
25
|
+
role;
|
|
26
|
+
cwd;
|
|
27
|
+
roots;
|
|
28
|
+
rootAliases;
|
|
29
|
+
constructor(cwd, roots, role) {
|
|
30
|
+
this.role = role;
|
|
31
|
+
const scope = canonicalWorkspace(cwd, roots);
|
|
32
|
+
this.cwd = scope.cwd;
|
|
33
|
+
this.roots = scope.roots;
|
|
34
|
+
this.rootAliases = roots.map(root => ({ lexical: path.resolve(root), canonical: realpathSync(root) })).sort((a, b) => b.lexical.length - a.lexical.length);
|
|
35
|
+
}
|
|
36
|
+
definitions() {
|
|
37
|
+
const file = { path: { type: 'string', description: 'Relative to the workspace, or an absolute path within an allowed root.' } };
|
|
38
|
+
return [
|
|
39
|
+
definition('list_files', 'List a directory, up to 500 entries. Runtime metadata and dependencies are omitted.', file, ['path']),
|
|
40
|
+
definition('read_file', 'Read a UTF-8 source file up to 128 KiB. Binary files are rejected.', file, ['path']),
|
|
41
|
+
...(this.role === 'developer' ? [definition('write_file', 'Create or replace a UTF-8 source file (max 256 KiB). Parent directories are created. Runtime metadata cannot be changed.', { ...file, content: { type: 'string' } }, ['path', 'content'])] : []),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
resolve(raw, write) {
|
|
45
|
+
if (!raw || raw.includes('\0') || (process.platform !== 'win32' && (raw.includes('\\') || /^[A-Za-z]:/.test(raw))))
|
|
46
|
+
throw new Error('Invalid workspace path');
|
|
47
|
+
let target = path.resolve(this.cwd, raw);
|
|
48
|
+
const alias = this.rootAliases.find(root => isWithinRoot(root.lexical, target));
|
|
49
|
+
if (alias)
|
|
50
|
+
target = path.resolve(alias.canonical, path.relative(alias.lexical, target));
|
|
51
|
+
const root = this.roots.filter(candidate => isWithinRoot(candidate, target)).sort((a, b) => b.length - a.length)[0];
|
|
52
|
+
if (!root)
|
|
53
|
+
throw new Error('Path escapes the allowed workspace roots');
|
|
54
|
+
const parts = path.relative(root, target).split(path.sep).filter(Boolean);
|
|
55
|
+
if (parts.some(part => HIDDEN_STATE.has(part)))
|
|
56
|
+
throw new Error('Access to runtime or provider metadata is not permitted');
|
|
57
|
+
if (write && target === root)
|
|
58
|
+
throw new Error('Cannot overwrite a workspace root');
|
|
59
|
+
let current = root;
|
|
60
|
+
for (const part of parts) {
|
|
61
|
+
current = path.join(current, part);
|
|
62
|
+
try {
|
|
63
|
+
if (lstatSync(current).isSymbolicLink())
|
|
64
|
+
throw new Error('Symlink paths are not permitted');
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (error.code !== 'ENOENT')
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (existsSync(target) && !this.roots.some(candidate => isWithinRoot(candidate, realpathSync(target))))
|
|
72
|
+
throw new Error('Canonical path escapes the allowed workspace roots');
|
|
73
|
+
return target;
|
|
74
|
+
}
|
|
75
|
+
execute(name, input) {
|
|
76
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
77
|
+
throw new Error('Tool input must be a JSON object');
|
|
78
|
+
const args = input;
|
|
79
|
+
if (!this.definitions().some(tool => tool.function.name === name))
|
|
80
|
+
throw new Error(`Tool '${name}' is unavailable for the ${this.role} role`);
|
|
81
|
+
const allowed = name === 'write_file' ? ['path', 'content'] : ['path'];
|
|
82
|
+
if (Object.keys(args).some(key => !allowed.includes(key)) || typeof args.path !== 'string')
|
|
83
|
+
throw new Error('Invalid tool arguments');
|
|
84
|
+
const target = this.resolve(args.path, name === 'write_file');
|
|
85
|
+
if (name === 'list_files') {
|
|
86
|
+
const entries = readdirSync(target, { withFileTypes: true }).filter(entry => !HIDDEN_STATE.has(entry.name) && entry.name !== 'node_modules' && !entry.isSymbolicLink());
|
|
87
|
+
return JSON.stringify({ entries: entries.slice(0, 500).map(entry => ({ name: entry.name, type: entry.isDirectory() ? 'directory' : 'file' })), truncated: entries.length > 500 });
|
|
88
|
+
}
|
|
89
|
+
if (name === 'read_file') {
|
|
90
|
+
const fd = openSync(target, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
|
|
91
|
+
try {
|
|
92
|
+
const stat = fstatSync(fd);
|
|
93
|
+
if (!stat.isFile() || stat.size > MAX_READ)
|
|
94
|
+
throw new Error('Read requires a regular file no larger than 128 KiB');
|
|
95
|
+
const bytes = readFileSync(fd);
|
|
96
|
+
if (bytes.length > MAX_READ || bytes.includes(0))
|
|
97
|
+
throw new Error('File is too large or binary');
|
|
98
|
+
return bytes.toString('utf8');
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
closeSync(fd);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (typeof args.content !== 'string' || Buffer.byteLength(args.content, 'utf8') > MAX_WRITE || args.content.includes('\0'))
|
|
105
|
+
throw new Error('Write requires UTF-8 content no larger than 256 KiB');
|
|
106
|
+
mkdirSync(path.dirname(target), { recursive: true });
|
|
107
|
+
this.resolve(args.path, true);
|
|
108
|
+
const temporary = path.join(path.dirname(target), `.specrails-edit-${randomUUID()}.tmp`);
|
|
109
|
+
try {
|
|
110
|
+
const mode = existsSync(target) ? lstatSync(target).mode & 0o777 : 0o644;
|
|
111
|
+
writeFileSync(temporary, args.content, { flag: 'wx', mode });
|
|
112
|
+
renameSync(temporary, target);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
rmSync(temporary, { force: true });
|
|
116
|
+
}
|
|
117
|
+
return JSON.stringify({ written: args.path, bytes: Buffer.byteLength(args.content, 'utf8') });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=workspace-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-tools.js","sourceRoot":"","sources":["../../src/agent-runtime/workspace-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* specrails-core CLI entry point (Node / TypeScript).
|
|
3
|
+
*
|
|
4
|
+
* Replaces the legacy bash-dispatch path in `bin/specrails-core.js`.
|
|
5
|
+
* During the port, `bin/specrails-core.js` keeps shelling out to the
|
|
6
|
+
* shell scripts while this module carries the in-progress Node
|
|
7
|
+
* implementation. Once Phases 2–4 ship the command handlers and
|
|
8
|
+
* Phase 5 deletes the shell scripts, the `bin/` dispatcher collapses
|
|
9
|
+
* to a single `import { main } from './dist/installer/cli.js'` call.
|
|
10
|
+
*/
|
|
11
|
+
export interface ParsedArgs {
|
|
12
|
+
subcommand: string | null;
|
|
13
|
+
flags: Record<string, string | boolean>;
|
|
14
|
+
positionals: string[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Minimal arg parser, no external dep. Handles:
|
|
18
|
+
* subcommand (first bare positional)
|
|
19
|
+
* --flag (boolean true)
|
|
20
|
+
* --flag=value (string)
|
|
21
|
+
* --flag value (string, consumes next token)
|
|
22
|
+
* -h / --help (help alias)
|
|
23
|
+
* -v / --version (version alias)
|
|
24
|
+
* positionals (everything else)
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
27
|
+
/**
|
|
28
|
+
* Sentinel exit code used during the port: when a Node command is not
|
|
29
|
+
* yet implemented, the CLI exits with this code and the outer bash
|
|
30
|
+
* dispatcher (bin/specrails-core.js) may choose to fall through to
|
|
31
|
+
* the shell path. Removed entirely in Phase 5 when no shell scripts
|
|
32
|
+
* remain.
|
|
33
|
+
*/
|
|
34
|
+
export declare const NOT_IMPLEMENTED = 2;
|
|
35
|
+
export declare function main(argv?: string[]): Promise<number>;
|
package/dist/installer/cli.js
CHANGED
|
@@ -83,6 +83,7 @@ function usageText() {
|
|
|
83
83
|
' init Install specrails into a repository',
|
|
84
84
|
' update Update an existing specrails installation',
|
|
85
85
|
' pipeline Inspect and execute durable implementation phases',
|
|
86
|
+
' runtime Run, inspect and resume programmatic agents',
|
|
86
87
|
' doctor Diagnose the health of an existing installation',
|
|
87
88
|
' install-framework Materialize the versioned framework (offline)',
|
|
88
89
|
' swap-current Point framework/current at a version (offline)',
|
|
@@ -130,6 +131,8 @@ async function dispatch(subcommand, flags, _positionals) {
|
|
|
130
131
|
return 0;
|
|
131
132
|
case 'pipeline':
|
|
132
133
|
return runPipelineCommand(flags, _positionals);
|
|
134
|
+
case 'runtime':
|
|
135
|
+
return (await import('../agent-runtime/cli.js')).runRuntimeCommand(flags, _positionals);
|
|
133
136
|
case 'doctor': {
|
|
134
137
|
const result = await runDoctor(flags);
|
|
135
138
|
return result.failed === 0 ? 0 : 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/installer/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every canonical SpecRails command is materialized as a direct-child Kimi
|
|
3
|
+
* skill. Discover the list from the packaged source of truth so doctor cannot
|
|
4
|
+
* silently fall behind when the command catalog grows.
|
|
5
|
+
*/
|
|
6
|
+
export declare const KIMI_MANAGED_WORKFLOW_SKILLS: string[];
|
|
7
|
+
/**
|
|
8
|
+
* `npx specrails-core doctor` — health check for a specrails install.
|
|
9
|
+
* Ports bin/doctor.sh to Node with identical exit semantics:
|
|
10
|
+
* - exit 0 when every check passes
|
|
11
|
+
* - exit 1 when any check fails
|
|
12
|
+
* Appends a single line to ~/.specrails/doctor.log after every run.
|
|
13
|
+
*/
|
|
14
|
+
export interface DoctorFlags {
|
|
15
|
+
'root-dir'?: string | boolean;
|
|
16
|
+
provider?: string | boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface DoctorResult {
|
|
19
|
+
passed: number;
|
|
20
|
+
failed: number;
|
|
21
|
+
results: Array<{
|
|
22
|
+
kind: 'pass' | 'fail';
|
|
23
|
+
message: string;
|
|
24
|
+
fix?: string;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
export declare function runDoctor(flags?: DoctorFlags): Promise<DoctorResult>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { type Provider } from '../phases/provider-detect.js';
|
|
2
|
+
/**
|
|
3
|
+
* Offline framework subcommands consumed by specrails-desktop's bundled-core
|
|
4
|
+
* path. They expose the already-built `ensureFramework` (installFramework +
|
|
5
|
+
* ensureCurrentSymlink) and `assembleProjectWorkspace` as thin CLI handlers so
|
|
6
|
+
* the desktop app can materialize + assemble WITHOUT npx or any network.
|
|
7
|
+
*
|
|
8
|
+
* specrails-core install-framework --framework-dir <dir> --provider <p> --version <v>
|
|
9
|
+
* specrails-core assemble --workspace <ws> --framework-dir <dir> --provider <p> --version <v> --code-root <repo>
|
|
10
|
+
*
|
|
11
|
+
* Both are idempotent and perform NO network I/O and NO openspec init.
|
|
12
|
+
*/
|
|
13
|
+
export interface InstallFrameworkFlags {
|
|
14
|
+
'framework-dir'?: string | boolean;
|
|
15
|
+
provider?: string | boolean;
|
|
16
|
+
version?: string | boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Materialize the provider subtree but do NOT swap `current`. The caller
|
|
19
|
+
* materializes EVERY provider first (each with `--no-swap`), then issues ONE
|
|
20
|
+
* `swap-current` so a later provider's failure never leaves `current` pointed
|
|
21
|
+
* at a version dir missing that provider.
|
|
22
|
+
*/
|
|
23
|
+
'no-swap'?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SwapCurrentFlags {
|
|
26
|
+
'framework-dir'?: string | boolean;
|
|
27
|
+
version?: string | boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Comma-separated provider set the caller materialized for this transition.
|
|
30
|
+
* The swap validator unions it with globally registered/current providers.
|
|
31
|
+
*/
|
|
32
|
+
providers?: string | boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface AssembleFlags {
|
|
35
|
+
workspace?: string | boolean;
|
|
36
|
+
'framework-dir'?: string | boolean;
|
|
37
|
+
provider?: string | boolean;
|
|
38
|
+
version?: string | boolean;
|
|
39
|
+
'code-root'?: string | boolean;
|
|
40
|
+
/** Comma-separated per-project agent allow-list (links a subset of the superset). */
|
|
41
|
+
'selected-agents'?: string | boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface InstallFrameworkOutcome {
|
|
44
|
+
frameworkDir: string;
|
|
45
|
+
provider: Provider;
|
|
46
|
+
version: string;
|
|
47
|
+
providerDir: string;
|
|
48
|
+
/** True when `current` was swapped to `<version>` this call. */
|
|
49
|
+
swapped: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface SwapCurrentOutcome {
|
|
52
|
+
frameworkDir: string;
|
|
53
|
+
version: string;
|
|
54
|
+
/** Complete provider set validated before the pointer was moved. */
|
|
55
|
+
providers: Provider[];
|
|
56
|
+
}
|
|
57
|
+
export interface AssembleOutcome {
|
|
58
|
+
workspace: string;
|
|
59
|
+
frameworkDir: string;
|
|
60
|
+
provider: Provider;
|
|
61
|
+
version: string;
|
|
62
|
+
codeRoot: string;
|
|
63
|
+
providerDir: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* `specrails-core install-framework` — materialize the provider-invariant
|
|
67
|
+
* framework subtree ONCE under `<framework-dir>/<version>/<providerDir>/` and
|
|
68
|
+
* point `<framework-dir>/current` at it. Idempotent + offline.
|
|
69
|
+
*/
|
|
70
|
+
export declare function runInstallFramework(flags: InstallFrameworkFlags): Promise<InstallFrameworkOutcome>;
|
|
71
|
+
/**
|
|
72
|
+
* `specrails-core swap-current` — atomically point `<framework-dir>/current` at
|
|
73
|
+
* `<version>`. The multi-provider "materialize-all-then-swap-once" finaliser:
|
|
74
|
+
* after EVERY provider was materialized with `--no-swap`, this single call makes
|
|
75
|
+
* the version visible. Idempotent + offline.
|
|
76
|
+
*/
|
|
77
|
+
export declare function runSwapCurrent(flags: SwapCurrentFlags): Promise<SwapCurrentOutcome>;
|
|
78
|
+
/**
|
|
79
|
+
* `specrails-core assemble` — SYMLINK the materialized framework subtrees into a
|
|
80
|
+
* project workspace and seed the per-project layer (agent-memory, manifest,
|
|
81
|
+
* instruction/settings files, gemini acks). NO network, NO openspec init.
|
|
82
|
+
*/
|
|
83
|
+
export declare function runAssemble(flags: AssembleFlags): Promise<AssembleOutcome>;
|
|
84
|
+
/** Read the package version (the version the desktop should materialize). */
|
|
85
|
+
export declare function readPackageVersion(scriptDir?: string): string;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { type Provider } from '../phases/install-config.js';
|
|
2
|
+
/**
|
|
3
|
+
* `npx specrails-core init` entry point.
|
|
4
|
+
*
|
|
5
|
+
* Flags consumed (must remain in sync with ALLOWED_FLAGS in
|
|
6
|
+
* bin/specrails-core.cjs until Phase 5):
|
|
7
|
+
* --root-dir <path> Target repo (default: cwd)
|
|
8
|
+
* --yes / -y Non-interactive; auto-init git + accept defaults
|
|
9
|
+
* --provider <name> Force provider (claude, codex, gemini, or kimi)
|
|
10
|
+
* --from-config [<p>] Read provider + agents from install-config.yaml
|
|
11
|
+
* --relocate Relocate artifacts to the $HOME workspace (symlinked
|
|
12
|
+
* from the bundled framework) instead of installing them
|
|
13
|
+
* IN-REPO. Default is in-repo so a standalone user's
|
|
14
|
+
* `claude`/`codex`/`gemini`/`kimi` finds its artifacts in
|
|
15
|
+
* their own repo. specrails-desktop pre-creates a registry
|
|
16
|
+
* entry (so it always relocates regardless of this flag);
|
|
17
|
+
* standalone users opt in with `--relocate` or
|
|
18
|
+
* `SPECRAILS_RELOCATE=1`.
|
|
19
|
+
*/
|
|
20
|
+
export interface InitFlags {
|
|
21
|
+
'root-dir'?: string | boolean;
|
|
22
|
+
yes?: boolean;
|
|
23
|
+
y?: boolean;
|
|
24
|
+
provider?: string | boolean;
|
|
25
|
+
'from-config'?: string | boolean;
|
|
26
|
+
relocate?: boolean;
|
|
27
|
+
'hub-json'?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface InitResult {
|
|
30
|
+
repoRoot: string;
|
|
31
|
+
provider: Provider;
|
|
32
|
+
}
|
|
33
|
+
export type WorkspaceProviderSelections = Partial<Record<Provider, string[]>>;
|
|
34
|
+
/**
|
|
35
|
+
* Snapshot the provider/role inventory exposed by one live workspace before a
|
|
36
|
+
* global framework version swap. This matters on Windows: directory junctions
|
|
37
|
+
* resolve their target when they are created, so a workspace link made through
|
|
38
|
+
* `framework/current` must be recreated after `current` moves. Keeping the
|
|
39
|
+
* exact visible `sr-*` set also avoids widening or narrowing a project's
|
|
40
|
+
* optional role selection during that refresh.
|
|
41
|
+
*/
|
|
42
|
+
export declare function snapshotWorkspaceProviderSelections(workspace: string): WorkspaceProviderSelections;
|
|
43
|
+
interface ReassembleWorkspaceProvidersInput {
|
|
44
|
+
workspace: string;
|
|
45
|
+
frameworkDir: string;
|
|
46
|
+
version: string;
|
|
47
|
+
codeRoot: string;
|
|
48
|
+
scriptDir: string;
|
|
49
|
+
selectedProvider: Provider;
|
|
50
|
+
selectedAgents?: string[];
|
|
51
|
+
previousSelections: WorkspaceProviderSelections;
|
|
52
|
+
copyStatics: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Refresh every provider already represented in the project plus the provider
|
|
56
|
+
* selected by the current operation. POSIX symlinks continue to follow
|
|
57
|
+
* `framework/current`; Windows junctions do not reliably preserve that
|
|
58
|
+
* indirection, so rebuilding all live links is required for true
|
|
59
|
+
* multi-provider version parity.
|
|
60
|
+
*/
|
|
61
|
+
export declare function reassembleWorkspaceProviders(input: ReassembleWorkspaceProvidersInput): Provider[];
|
|
62
|
+
/**
|
|
63
|
+
* Entry called by cli.ts. Returns a {@link InitResult} on success;
|
|
64
|
+
* throws a typed error (translated to an exit code by the outer CLI)
|
|
65
|
+
* on failure.
|
|
66
|
+
*/
|
|
67
|
+
export declare function runInit(flags: InitFlags): Promise<InitResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Warn (once per id) about `agents.selected` entries that have no shipped
|
|
70
|
+
* template — typically a pre-v5 install-config.yaml still listing removed
|
|
71
|
+
* agents. They are skipped at placement; the warning tells the user why and
|
|
72
|
+
* points at the v5 extension path.
|
|
73
|
+
*/
|
|
74
|
+
export declare function warnUnknownSelectedAgents(selected: string[] | undefined): void;
|
|
75
|
+
export interface EnsureFrameworkInput {
|
|
76
|
+
scriptDir: string;
|
|
77
|
+
frameworkDir: string;
|
|
78
|
+
provider: Provider;
|
|
79
|
+
providerDir: string;
|
|
80
|
+
version: string;
|
|
81
|
+
selectedAgents?: string[];
|
|
82
|
+
/**
|
|
83
|
+
* Additional providers that must remain available through the global
|
|
84
|
+
* `framework/current` pointer after this version transition.
|
|
85
|
+
*/
|
|
86
|
+
requiredProviders?: Provider[];
|
|
87
|
+
/** Registry home override used while computing the global provider union. */
|
|
88
|
+
registryHome?: string;
|
|
89
|
+
/**
|
|
90
|
+
* When false, MATERIALIZE the provider subtree but do NOT swap
|
|
91
|
+
* `<frameworkDir>/current` to point at `<version>`. The caller is responsible
|
|
92
|
+
* for the single `ensureCurrentSymlink(frameworkDir, version)` swap AFTER all
|
|
93
|
+
* providers have been materialized. This prevents a multi-provider install
|
|
94
|
+
* from leaving `current` pointed at a version dir that is missing a provider
|
|
95
|
+
* whose materialization later failed. Defaults to true (swap — the standalone
|
|
96
|
+
* single-provider `init` path is byte-identical to before).
|
|
97
|
+
*/
|
|
98
|
+
swapCurrent?: boolean;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Materialize the framework for `(version, provider)` if absent and (by default)
|
|
102
|
+
* point `<frameworkDir>/current` at that version. Idempotent — `installFramework`
|
|
103
|
+
* skips re-materialization when the providerDir already exists with a matching
|
|
104
|
+
* stamp, so a second project (or a repeat init) reuses the SAME framework copy.
|
|
105
|
+
* Shared by `runInit` and `runUpdate`.
|
|
106
|
+
*
|
|
107
|
+
* Pass `swapCurrent: false` to materialize WITHOUT swapping `current` — the
|
|
108
|
+
* multi-provider "materialize-all-then-swap-once" pattern desktop consumes:
|
|
109
|
+
* for (const p of providers) ensureFramework({ ..., provider: p, swapCurrent: false })
|
|
110
|
+
* ensureCurrentSymlink(frameworkDir, version) // single atomic swap at the end
|
|
111
|
+
*/
|
|
112
|
+
export declare function ensureFramework(input: EnsureFrameworkInput): void;
|
|
113
|
+
/**
|
|
114
|
+
* Resolve the `{bin, args}` to invoke `openspec init` for a project, honouring
|
|
115
|
+
* two optional env overrides (both default unset → `npx @fission-ai/openspec`):
|
|
116
|
+
*
|
|
117
|
+
* - `SPECRAILS_OPENSPEC_BIN` — path to the openspec CLI entry (a `.js` node
|
|
118
|
+
* script when bundled by the desktop app, OR a real executable in tests).
|
|
119
|
+
* - `SPECRAILS_OPENSPEC_NODE` — path to a node executable. Set ONLY by the
|
|
120
|
+
* desktop bundled-offline path: Tauri strips exec bits from bundled
|
|
121
|
+
* resources and the bundled openspec is a node CLI (not a runnable binary),
|
|
122
|
+
* so it must be invoked as `node <cli> init …` rather than executed directly.
|
|
123
|
+
*
|
|
124
|
+
* Three invocation forms:
|
|
125
|
+
* 1. NODE + BIN set → `runCommand(node, [cli, 'init', '--tools', provider, repoRoot])`
|
|
126
|
+
* (bundled offline — Tauri-stripped node CLI).
|
|
127
|
+
* 2. BIN set only → `runCommand(cli, ['init', '--tools', provider, repoRoot])`
|
|
128
|
+
* (a real executable: legacy override / test fake binary on PATH).
|
|
129
|
+
* 3. neither set → `runCommand('npx', ['--yes', '-p', '@fission-ai/openspec@<pinned>', '--', 'openspec', 'init', …])`
|
|
130
|
+
* (default online path — users never need a global install).
|
|
131
|
+
*/
|
|
132
|
+
export declare function buildOpenSpecInvocation(repoRoot: string, provider: Provider, env?: NodeJS.ProcessEnv, pinnedVersion?: string): {
|
|
133
|
+
bin: string;
|
|
134
|
+
args: string[];
|
|
135
|
+
};
|
|
136
|
+
export declare const KIMI_REQUIRED_OPENSPEC_SKILLS: readonly ["openspec-propose", "openspec-explore", "openspec-new-change", "openspec-continue-change", "openspec-apply-change", "openspec-ff-change", "openspec-sync-specs", "openspec-archive-change", "openspec-bulk-archive-change", "openspec-verify-change", "openspec-onboard"];
|
|
137
|
+
/**
|
|
138
|
+
* Move only OpenSpec-owned Kimi workflow directories from either upstream
|
|
139
|
+
* location into the artifact workspace. Every destination is copied to a
|
|
140
|
+
* sibling temporary directory and renamed, so readers never observe a partial
|
|
141
|
+
* skill. A distinct newly generated source refreshes the managed destination;
|
|
142
|
+
* an in-place corrected destination is retained as-is.
|
|
143
|
+
*/
|
|
144
|
+
export declare function normalizeKimiOpenSpecSkills(repoRoot: string, artifactRoot: string): string[];
|
|
145
|
+
export declare function normalizeGeminiOpenSpecSkills(repoRoot: string, artifactRoot: string): string[];
|
|
146
|
+
export declare function installOpenSpecProject(repoRoot: string, provider: Provider, artifactRoot?: string): Promise<void>;
|
|
147
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type Provider } from '../phases/provider-detect.js';
|
|
2
|
+
/**
|
|
3
|
+
* Components recognised by the `--only <component>` flag. Mirrors the
|
|
4
|
+
* retired bash installer's accepted values plus an explicit map of
|
|
5
|
+
* what each one actually does in the Node port.
|
|
6
|
+
*/
|
|
7
|
+
export type OnlyComponent = 'all' | 'core' | 'rules' | 'agents' | 'web-manager';
|
|
8
|
+
/**
|
|
9
|
+
* `npx specrails-core update` entry point.
|
|
10
|
+
*
|
|
11
|
+
* Re-runs the scaffolding layer so fresh templates overwrite the
|
|
12
|
+
* bundled commands and .specrails/setup-templates/ content. Reserved
|
|
13
|
+
* paths are respected by the shared isReservedPath gate inside
|
|
14
|
+
* fs utilities and scaffolding; the update never touches the user's
|
|
15
|
+
* profile JSON or custom-* agents.
|
|
16
|
+
*
|
|
17
|
+
* The retired update.sh computed a template-diff against the manifest
|
|
18
|
+
* and regenerated only changed files. We ship a simpler, stricter
|
|
19
|
+
* contract: always re-scaffold every specrails-managed artefact, then
|
|
20
|
+
* rewrite the manifest. The outcome is identical for the common case
|
|
21
|
+
* (upgrade bumps the core version → nearly every template changes)
|
|
22
|
+
* and is far easier to reason about than a bespoke diff algorithm.
|
|
23
|
+
*/
|
|
24
|
+
export interface UpdateFlags {
|
|
25
|
+
'root-dir'?: string | boolean;
|
|
26
|
+
only?: string | boolean;
|
|
27
|
+
'dry-run'?: boolean;
|
|
28
|
+
yes?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Force the provider to update. Without it, the provider is auto-detected
|
|
31
|
+
* from the existing install (`.claude` > `.codex` > `.gemini` > `.kimi-code`), which on a
|
|
32
|
+
* MULTI-PROVIDER workspace always picks `.claude` first — so codex/gemini/kimi
|
|
33
|
+
* could never be updated. specrails-desktop (and standalone users) pass
|
|
34
|
+
* `--provider <name>` to update one specific provider. Mirrors `init`.
|
|
35
|
+
*/
|
|
36
|
+
provider?: string | boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Relocate artifacts to the $HOME workspace (symlinked) instead of in-repo.
|
|
39
|
+
* Mirrors `init --relocate`: standalone updates resolve in-repo by default,
|
|
40
|
+
* desktop relocates (its registry entry already exists, so `allocate:false`
|
|
41
|
+
* still resolves the relocated entry). Also honoured via `SPECRAILS_RELOCATE=1`.
|
|
42
|
+
*/
|
|
43
|
+
relocate?: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface UpdateResult {
|
|
46
|
+
repoRoot: string;
|
|
47
|
+
previousVersion: string | null;
|
|
48
|
+
currentVersion: string;
|
|
49
|
+
provider: Provider;
|
|
50
|
+
dryRun: boolean;
|
|
51
|
+
/** Resolved scope of the update — what was actually re-applied. */
|
|
52
|
+
scope: OnlyComponent;
|
|
53
|
+
/** Framework version actually installed; partial updates retain the old version. */
|
|
54
|
+
installedVersion?: string | null;
|
|
55
|
+
}
|
|
56
|
+
export declare function runUpdate(flags: UpdateFlags): Promise<UpdateResult>;
|