@cluesmith/codev 3.0.0-rc.5 → 3.0.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/dashboard/dist/assets/{index-1OFuumc_.js → index-CTrlY11L.js} +13 -13
- package/dashboard/dist/assets/{index-1OFuumc_.js.map → index-CTrlY11L.js.map} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dist/agent-farm/commands/architect.js +1 -1
- package/dist/agent-farm/commands/architect.js.map +1 -1
- package/dist/agent-farm/commands/send.d.ts +4 -1
- package/dist/agent-farm/commands/send.d.ts.map +1 -1
- package/dist/agent-farm/commands/send.js +5 -2
- package/dist/agent-farm/commands/send.js.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.d.ts.map +1 -1
- package/dist/agent-farm/commands/spawn-worktree.js +26 -10
- package/dist/agent-farm/commands/spawn-worktree.js.map +1 -1
- package/dist/agent-farm/servers/overview.d.ts.map +1 -1
- package/dist/agent-farm/servers/overview.js +8 -0
- package/dist/agent-farm/servers/overview.js.map +1 -1
- package/dist/agent-farm/servers/tower-instances.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-instances.js +12 -10
- package/dist/agent-farm/servers/tower-instances.js.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.d.ts.map +1 -1
- package/dist/agent-farm/servers/tower-terminals.js +17 -18
- package/dist/agent-farm/servers/tower-terminals.js.map +1 -1
- package/dist/agent-farm/servers/tower-utils.js +1 -1
- package/dist/agent-farm/servers/tower-utils.js.map +1 -1
- package/dist/agent-farm/utils/config.d.ts.map +1 -1
- package/dist/agent-farm/utils/config.js +18 -17
- package/dist/agent-farm/utils/config.js.map +1 -1
- package/dist/agent-farm/utils/roles.d.ts +11 -4
- package/dist/agent-farm/utils/roles.d.ts.map +1 -1
- package/dist/agent-farm/utils/roles.js +21 -6
- package/dist/agent-farm/utils/roles.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +21 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/adopt.d.ts.map +1 -1
- package/dist/commands/adopt.js +14 -43
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +12 -42
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/porch/config.d.ts +6 -9
- package/dist/commands/porch/config.d.ts.map +1 -1
- package/dist/commands/porch/config.js +12 -37
- package/dist/commands/porch/config.js.map +1 -1
- package/dist/commands/porch/index.d.ts.map +1 -1
- package/dist/commands/porch/index.js +57 -21
- package/dist/commands/porch/index.js.map +1 -1
- package/dist/commands/porch/next.d.ts.map +1 -1
- package/dist/commands/porch/next.js +70 -8
- package/dist/commands/porch/next.js.map +1 -1
- package/dist/commands/porch/prompts.d.ts.map +1 -1
- package/dist/commands/porch/prompts.js +13 -29
- package/dist/commands/porch/prompts.js.map +1 -1
- package/dist/commands/porch/protocol.d.ts +4 -3
- package/dist/commands/porch/protocol.d.ts.map +1 -1
- package/dist/commands/porch/protocol.js +21 -21
- package/dist/commands/porch/protocol.js.map +1 -1
- package/dist/commands/porch/types.d.ts +2 -2
- package/dist/commands/porch/types.d.ts.map +1 -1
- package/dist/commands/sync.d.ts +26 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +207 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/update.d.ts +15 -2
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +159 -202
- package/dist/commands/update.js.map +1 -1
- package/dist/lib/config.d.ts +82 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +158 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/forge.d.ts +6 -6
- package/dist/lib/forge.d.ts.map +1 -1
- package/dist/lib/forge.js +7 -15
- package/dist/lib/forge.js.map +1 -1
- package/dist/lib/github.d.ts +1 -1
- package/dist/lib/github.js +2 -2
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/skeleton.d.ts +15 -5
- package/dist/lib/skeleton.d.ts.map +1 -1
- package/dist/lib/skeleton.js +82 -7
- package/dist/lib/skeleton.js.map +1 -1
- package/dist/lib/team-github.js +1 -1
- package/dist/lib/team-github.js.map +1 -1
- package/package.json +1 -1
- package/scripts/forge/gitea/repo-archive.sh +11 -0
- package/scripts/forge/github/repo-archive.sh +10 -0
- package/scripts/forge/gitlab/repo-archive.sh +12 -0
package/dist/commands/adopt.js
CHANGED
|
@@ -10,7 +10,7 @@ import { spawn } from 'node:child_process';
|
|
|
10
10
|
import chalk from 'chalk';
|
|
11
11
|
import { getTemplatesDir } from '../lib/templates.js';
|
|
12
12
|
import { confirm } from '../lib/cli-prompts.js';
|
|
13
|
-
import { createUserDirs, createProjectsDir,
|
|
13
|
+
import { createUserDirs, createProjectsDir, copySkills, copyRootFiles, updateGitignore, } from '../lib/scaffold.js';
|
|
14
14
|
// confirm imported from ../lib/cli-prompts.js
|
|
15
15
|
/**
|
|
16
16
|
* Detect conflicts with existing files
|
|
@@ -90,42 +90,9 @@ export async function adopt(options = {}) {
|
|
|
90
90
|
console.log(chalk.green(' +'), 'codev/projects/');
|
|
91
91
|
fileCount++;
|
|
92
92
|
}
|
|
93
|
-
//
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
console.log(chalk.green(' +'), `codev/resources/${file}`);
|
|
97
|
-
fileCount++;
|
|
98
|
-
}
|
|
99
|
-
// Copy consult-types - skip existing
|
|
100
|
-
const consultTypesResult = copyConsultTypes(targetDir, skeletonDir, { skipExisting: true });
|
|
101
|
-
if (consultTypesResult.directoryCreated) {
|
|
102
|
-
console.log(chalk.green(' +'), 'codev/consult-types/');
|
|
103
|
-
fileCount++;
|
|
104
|
-
}
|
|
105
|
-
for (const file of consultTypesResult.copied) {
|
|
106
|
-
console.log(chalk.green(' +'), `codev/consult-types/${file}`);
|
|
107
|
-
fileCount++;
|
|
108
|
-
}
|
|
109
|
-
// Copy role definitions - skip existing (preserve user customizations)
|
|
110
|
-
const rolesResult = copyRoles(targetDir, skeletonDir, { skipExisting: true });
|
|
111
|
-
if (rolesResult.directoryCreated) {
|
|
112
|
-
console.log(chalk.green(' +'), 'codev/roles/');
|
|
113
|
-
fileCount++;
|
|
114
|
-
}
|
|
115
|
-
for (const file of rolesResult.copied) {
|
|
116
|
-
console.log(chalk.green(' +'), `codev/roles/${file}`);
|
|
117
|
-
fileCount++;
|
|
118
|
-
}
|
|
119
|
-
// Copy protocol definitions (required for porch orchestration) - skip existing
|
|
120
|
-
const protocolsResult = copyProtocols(targetDir, skeletonDir, { skipExisting: true });
|
|
121
|
-
if (protocolsResult.directoryCreated) {
|
|
122
|
-
console.log(chalk.green(' +'), 'codev/protocols/');
|
|
123
|
-
fileCount++;
|
|
124
|
-
}
|
|
125
|
-
for (const protocol of protocolsResult.copied) {
|
|
126
|
-
console.log(chalk.green(' +'), `codev/protocols/${protocol}`);
|
|
127
|
-
fileCount++;
|
|
128
|
-
}
|
|
93
|
+
// Framework files (protocols, roles, consult-types, templates) are NOT copied.
|
|
94
|
+
// They resolve at runtime from the installed npm package via the unified file resolver.
|
|
95
|
+
// Existing local copies in codev/ are left in place — they take precedence via the resolution chain.
|
|
129
96
|
// Copy .claude/skills/ - skip existing (preserve user customizations)
|
|
130
97
|
const skillsResult = copySkills(targetDir, skeletonDir, { skipExisting: true });
|
|
131
98
|
if (skillsResult.directoryCreated) {
|
|
@@ -146,18 +113,22 @@ export async function adopt(options = {}) {
|
|
|
146
113
|
console.log(chalk.yellow(' !'), file, chalk.dim('(conflict - .codev-new created)'));
|
|
147
114
|
skippedCount++;
|
|
148
115
|
}
|
|
149
|
-
// Create
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
|
|
116
|
+
// Create .codev/config.json if it doesn't exist
|
|
117
|
+
const codevConfigDir = path.join(targetDir, '.codev');
|
|
118
|
+
const codevConfigPath = path.join(codevConfigDir, 'config.json');
|
|
119
|
+
if (!fs.existsSync(codevConfigPath)) {
|
|
120
|
+
if (!fs.existsSync(codevConfigDir)) {
|
|
121
|
+
fs.mkdirSync(codevConfigDir, { recursive: true });
|
|
122
|
+
}
|
|
123
|
+
const codevConfig = {
|
|
153
124
|
shell: {
|
|
154
125
|
architect: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
|
|
155
126
|
builder: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
|
|
156
127
|
shell: 'bash',
|
|
157
128
|
},
|
|
158
129
|
};
|
|
159
|
-
fs.writeFileSync(
|
|
160
|
-
console.log(chalk.green(' +'), '
|
|
130
|
+
fs.writeFileSync(codevConfigPath, JSON.stringify(codevConfig, null, 2) + '\n');
|
|
131
|
+
console.log(chalk.green(' +'), '.codev/config.json');
|
|
161
132
|
fileCount++;
|
|
162
133
|
}
|
|
163
134
|
// Update or create .gitignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID;;GAEG;AACH,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4IzF"}
|
package/dist/commands/init.js
CHANGED
|
@@ -9,7 +9,7 @@ import * as path from 'node:path';
|
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
import { getTemplatesDir } from '../lib/templates.js';
|
|
11
11
|
import { prompt, confirm } from '../lib/cli-prompts.js';
|
|
12
|
-
import { createUserDirs, createProjectsDir,
|
|
12
|
+
import { createUserDirs, createProjectsDir, copySkills, copyRootFiles, createGitignore, } from '../lib/scaffold.js';
|
|
13
13
|
// prompt and confirm imported from ../lib/cli-prompts.js
|
|
14
14
|
/**
|
|
15
15
|
* Initialize a new codev project
|
|
@@ -65,43 +65,9 @@ export async function init(projectName, options = {}) {
|
|
|
65
65
|
console.log(chalk.green(' +'), 'codev/projects/');
|
|
66
66
|
fileCount++;
|
|
67
67
|
}
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
console.log(chalk.green(' +'), `codev/resources/${file}`);
|
|
72
|
-
fileCount++;
|
|
73
|
-
}
|
|
74
|
-
// Copy consult-types (review type prompts)
|
|
75
|
-
const consultTypesResult = copyConsultTypes(targetDir, skeletonDir);
|
|
76
|
-
if (consultTypesResult.directoryCreated) {
|
|
77
|
-
console.log(chalk.green(' +'), 'codev/consult-types/');
|
|
78
|
-
fileCount++;
|
|
79
|
-
}
|
|
80
|
-
for (const file of consultTypesResult.copied) {
|
|
81
|
-
console.log(chalk.green(' +'), `codev/consult-types/${file}`);
|
|
82
|
-
fileCount++;
|
|
83
|
-
}
|
|
84
|
-
// Copy role definitions (architect, builder, consultant prompts)
|
|
85
|
-
const rolesResult = copyRoles(targetDir, skeletonDir);
|
|
86
|
-
if (rolesResult.directoryCreated) {
|
|
87
|
-
console.log(chalk.green(' +'), 'codev/roles/');
|
|
88
|
-
fileCount++;
|
|
89
|
-
}
|
|
90
|
-
for (const file of rolesResult.copied) {
|
|
91
|
-
console.log(chalk.green(' +'), `codev/roles/${file}`);
|
|
92
|
-
fileCount++;
|
|
93
|
-
}
|
|
94
|
-
// Copy protocol definitions (required for porch orchestration)
|
|
95
|
-
const protocolsResult = copyProtocols(targetDir, skeletonDir);
|
|
96
|
-
if (protocolsResult.directoryCreated) {
|
|
97
|
-
console.log(chalk.green(' +'), 'codev/protocols/');
|
|
98
|
-
fileCount++;
|
|
99
|
-
}
|
|
100
|
-
for (const protocol of protocolsResult.copied) {
|
|
101
|
-
console.log(chalk.green(' +'), `codev/protocols/${protocol}`);
|
|
102
|
-
fileCount++;
|
|
103
|
-
}
|
|
104
|
-
// Copy .claude/skills/ (Claude Code slash commands)
|
|
68
|
+
// Framework files (protocols, roles, consult-types, templates) are NOT copied.
|
|
69
|
+
// They resolve at runtime from the installed npm package via the unified file resolver.
|
|
70
|
+
// Copy .claude/skills/ (Claude Code slash commands — must exist on disk)
|
|
105
71
|
const skillsResult = copySkills(targetDir, skeletonDir);
|
|
106
72
|
if (skillsResult.directoryCreated) {
|
|
107
73
|
console.log(chalk.green(' +'), '.claude/skills/');
|
|
@@ -121,16 +87,20 @@ export async function init(projectName, options = {}) {
|
|
|
121
87
|
createGitignore(targetDir);
|
|
122
88
|
console.log(chalk.green(' +'), '.gitignore');
|
|
123
89
|
fileCount++;
|
|
124
|
-
// Create
|
|
125
|
-
const
|
|
90
|
+
// Create .codev/config.json
|
|
91
|
+
const codevConfigDir = path.join(targetDir, '.codev');
|
|
92
|
+
if (!fs.existsSync(codevConfigDir)) {
|
|
93
|
+
fs.mkdirSync(codevConfigDir, { recursive: true });
|
|
94
|
+
}
|
|
95
|
+
const codevConfig = {
|
|
126
96
|
shell: {
|
|
127
97
|
architect: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
|
|
128
98
|
builder: skipPermissions ? 'claude --dangerously-skip-permissions' : 'claude',
|
|
129
99
|
shell: 'bash',
|
|
130
100
|
},
|
|
131
101
|
};
|
|
132
|
-
fs.writeFileSync(path.join(
|
|
133
|
-
console.log(chalk.green(' +'), '
|
|
102
|
+
fs.writeFileSync(path.join(codevConfigDir, 'config.json'), JSON.stringify(codevConfig, null, 2) + '\n');
|
|
103
|
+
console.log(chalk.green(' +'), '.codev/config.json');
|
|
134
104
|
fileCount++;
|
|
135
105
|
// Initialize git if requested
|
|
136
106
|
if (initGit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Porch config reader — loads porch.checks from
|
|
2
|
+
* Porch config reader — loads porch.checks from .codev/config.json.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* module, keeping porch independent of the af dependency tree.
|
|
4
|
+
* Delegates to the unified config loader in lib/config.ts.
|
|
6
5
|
*/
|
|
7
6
|
import type { CheckOverrides } from './types.js';
|
|
8
7
|
/**
|
|
9
|
-
* Load check overrides from
|
|
8
|
+
* Load check overrides from the unified config (.codev/config.json).
|
|
10
9
|
*
|
|
11
10
|
* Reads only the `porch.checks` section; all other keys are ignored.
|
|
12
|
-
* Returns null when
|
|
13
|
-
* - af-config.json does not exist
|
|
14
|
-
* - af-config.json has no `porch` key
|
|
15
|
-
* - af-config.json has no `porch.checks` key
|
|
11
|
+
* Returns null when no `porch.checks` key is configured.
|
|
16
12
|
*
|
|
17
|
-
* Throws when
|
|
13
|
+
* Throws when config exists but cannot be parsed as JSON,
|
|
14
|
+
* or when the legacy af-config.json is found.
|
|
18
15
|
*/
|
|
19
16
|
export declare function loadCheckOverrides(workspaceRoot: string): CheckOverrides | null;
|
|
20
17
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAa/E"}
|
|
@@ -1,52 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Porch config reader — loads porch.checks from
|
|
2
|
+
* Porch config reader — loads porch.checks from .codev/config.json.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* module, keeping porch independent of the af dependency tree.
|
|
4
|
+
* Delegates to the unified config loader in lib/config.ts.
|
|
6
5
|
*/
|
|
7
|
-
import
|
|
8
|
-
import * as path from 'node:path';
|
|
6
|
+
import { loadConfig } from '../../lib/config.js';
|
|
9
7
|
/**
|
|
10
|
-
* Load check overrides from
|
|
8
|
+
* Load check overrides from the unified config (.codev/config.json).
|
|
11
9
|
*
|
|
12
10
|
* Reads only the `porch.checks` section; all other keys are ignored.
|
|
13
|
-
* Returns null when
|
|
14
|
-
* - af-config.json does not exist
|
|
15
|
-
* - af-config.json has no `porch` key
|
|
16
|
-
* - af-config.json has no `porch.checks` key
|
|
11
|
+
* Returns null when no `porch.checks` key is configured.
|
|
17
12
|
*
|
|
18
|
-
* Throws when
|
|
13
|
+
* Throws when config exists but cannot be parsed as JSON,
|
|
14
|
+
* or when the legacy af-config.json is found.
|
|
19
15
|
*/
|
|
20
16
|
export function loadCheckOverrides(workspaceRoot) {
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
17
|
+
const config = loadConfig(workspaceRoot);
|
|
18
|
+
if (typeof config.porch !== 'object' || config.porch === null) {
|
|
23
19
|
return null;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
raw = fs.readFileSync(configPath, 'utf-8');
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
let config;
|
|
33
|
-
try {
|
|
34
|
-
config = JSON.parse(raw);
|
|
35
|
-
}
|
|
36
|
-
catch (err) {
|
|
37
|
-
throw new Error(`Failed to parse af-config.json: ${err.message}`);
|
|
38
|
-
}
|
|
39
|
-
if (typeof config !== 'object' || config === null) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
const obj = config;
|
|
43
|
-
if (typeof obj.porch !== 'object' || obj.porch === null) {
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
const porch = obj.porch;
|
|
47
|
-
if (typeof porch.checks !== 'object' || porch.checks === null || Array.isArray(porch.checks)) {
|
|
21
|
+
const checks = config.porch.checks;
|
|
22
|
+
if (typeof checks !== 'object' || checks === null || Array.isArray(checks)) {
|
|
48
23
|
return null;
|
|
49
24
|
}
|
|
50
|
-
return
|
|
25
|
+
return checks;
|
|
51
26
|
}
|
|
52
27
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/porch/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/porch/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEzC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;IACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAwB,CAAC;AAClC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2FH;;;GAGG;AACH,wBAAsB,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FpF;AAED;;;GAGG;AACH,wBAAsB,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8CnF;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyIlF;AAqED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDlF;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA0Ef;AAED;;;;;;;GAOG;AACH,wBAAsB,IAAI,CACxB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AA4DD,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqFvD"}
|
|
@@ -13,6 +13,7 @@ import { loadProtocol, getPhaseConfig, getNextPhase, getPhaseChecks, getPhaseGat
|
|
|
13
13
|
import { findPlanFile, extractPhasesFromFile, getCurrentPlanPhase, getPhaseContent, allPlanPhasesComplete, } from './plan.js';
|
|
14
14
|
import { runPhaseChecks, formatCheckResults, allChecksPassed, } from './checks.js';
|
|
15
15
|
import { loadCheckOverrides } from './config.js';
|
|
16
|
+
import { loadConfig } from '../../lib/config.js';
|
|
16
17
|
// ============================================================================
|
|
17
18
|
// Output Helpers
|
|
18
19
|
// ============================================================================
|
|
@@ -28,7 +29,7 @@ function section(title, content) {
|
|
|
28
29
|
* Only emits output when overrides are actually in use.
|
|
29
30
|
* @param phaseCheckNames - original check names from the protocol phase
|
|
30
31
|
* @param resolvedChecks - checks after applying overrides (skipped ones absent)
|
|
31
|
-
* @param overrides - raw override map from
|
|
32
|
+
* @param overrides - raw override map from .codev/config.json (null if not configured)
|
|
32
33
|
*/
|
|
33
34
|
function logCheckOverrides(phaseCheckNames, resolvedChecks, overrides) {
|
|
34
35
|
if (!overrides)
|
|
@@ -38,7 +39,7 @@ function logCheckOverrides(phaseCheckNames, resolvedChecks, overrides) {
|
|
|
38
39
|
if (!override)
|
|
39
40
|
continue;
|
|
40
41
|
if (override.skip) {
|
|
41
|
-
console.log(chalk.yellow(` ⚠ Check "${name}" skipped (
|
|
42
|
+
console.log(chalk.yellow(` ⚠ Check "${name}" skipped (.codev/config.json)`));
|
|
42
43
|
}
|
|
43
44
|
else if (override.command || override.cwd) {
|
|
44
45
|
const parts = [];
|
|
@@ -166,7 +167,7 @@ export async function check(workspaceRoot, projectId) {
|
|
|
166
167
|
logCheckOverrides(phaseCheckNames, checks, overrides);
|
|
167
168
|
console.log('');
|
|
168
169
|
if (Object.keys(checks).length === 0) {
|
|
169
|
-
console.log(chalk.dim(' (all checks skipped via
|
|
170
|
+
console.log(chalk.dim(' (all checks skipped via .codev/config.json)'));
|
|
170
171
|
console.log('');
|
|
171
172
|
console.log(chalk.green('RESULT: ALL CHECKS PASSED'));
|
|
172
173
|
console.log(`\n Run: porch done ${state.id} (to advance)`);
|
|
@@ -227,7 +228,7 @@ export async function done(workspaceRoot, projectId) {
|
|
|
227
228
|
}
|
|
228
229
|
}
|
|
229
230
|
else {
|
|
230
|
-
console.log(chalk.dim(' (all checks skipped via
|
|
231
|
+
console.log(chalk.dim(' (all checks skipped via .codev/config.json)'));
|
|
231
232
|
}
|
|
232
233
|
}
|
|
233
234
|
}
|
|
@@ -240,26 +241,61 @@ export async function done(workspaceRoot, projectId) {
|
|
|
240
241
|
console.log(`\n Run: porch next ${state.id} (to get verification tasks)`);
|
|
241
242
|
return;
|
|
242
243
|
}
|
|
243
|
-
// Enforce
|
|
244
|
+
// Enforce verification for build_verify phases (config-aware)
|
|
244
245
|
const verifyConfig = getVerifyConfig(protocol, state.phase);
|
|
245
246
|
if (verifyConfig) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
247
|
+
// Resolve effective models from config (overrides protocol defaults)
|
|
248
|
+
let effectiveModels = verifyConfig.models;
|
|
249
|
+
let consultMode = 'normal';
|
|
250
|
+
try {
|
|
251
|
+
const config = loadConfig(workspaceRoot);
|
|
252
|
+
const configModels = config.porch?.consultation?.models;
|
|
253
|
+
if (configModels !== undefined) {
|
|
254
|
+
if (configModels === 'none') {
|
|
255
|
+
consultMode = 'none';
|
|
256
|
+
}
|
|
257
|
+
else if (configModels === 'parent') {
|
|
258
|
+
consultMode = 'parent';
|
|
259
|
+
}
|
|
260
|
+
else if (Array.isArray(configModels)) {
|
|
261
|
+
effectiveModels = configModels;
|
|
262
|
+
}
|
|
263
|
+
else if (typeof configModels === 'string') {
|
|
264
|
+
effectiveModels = [configModels];
|
|
265
|
+
}
|
|
255
266
|
}
|
|
256
267
|
}
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
268
|
+
catch {
|
|
269
|
+
// Config load failed — use protocol defaults
|
|
270
|
+
}
|
|
271
|
+
// "none" mode: skip verification
|
|
272
|
+
if (consultMode === 'none') {
|
|
273
|
+
console.log(chalk.dim(' (consultation skipped — configured: none)'));
|
|
274
|
+
}
|
|
275
|
+
else if (consultMode === 'parent') {
|
|
276
|
+
// "parent" mode: verification is handled by architect gate, not review files
|
|
277
|
+
console.log(chalk.dim(' (consultation delegated to architect — configured: parent)'));
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Normal mode: check for review files from effective models
|
|
281
|
+
const projectDir = getProjectDir(workspaceRoot, state.id, state.title);
|
|
282
|
+
const phase = state.current_plan_phase || state.phase;
|
|
283
|
+
const missingModels = [];
|
|
284
|
+
for (const model of effectiveModels) {
|
|
285
|
+
// Look for any review file for this model+phase (any iteration)
|
|
286
|
+
const pattern = path.join(projectDir, `${state.id}-${phase}-iter*-${model}.txt`);
|
|
287
|
+
const matches = globSync(pattern);
|
|
288
|
+
if (matches.length === 0) {
|
|
289
|
+
missingModels.push(model);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (missingModels.length > 0) {
|
|
293
|
+
console.log('');
|
|
294
|
+
console.log(chalk.red('VERIFICATION REQUIRED'));
|
|
295
|
+
console.log(`\n ${effectiveModels.length}-way review not completed. Missing: ${missingModels.join(', ')}`);
|
|
296
|
+
console.log(`\n Run: porch next ${state.id} (to trigger verification)`);
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
263
299
|
}
|
|
264
300
|
}
|
|
265
301
|
// Check for gate
|
|
@@ -447,7 +483,7 @@ export async function approve(workspaceRoot, projectId, gateName, hasHumanFlag)
|
|
|
447
483
|
}
|
|
448
484
|
}
|
|
449
485
|
else {
|
|
450
|
-
console.log(chalk.dim(' (all checks skipped via
|
|
486
|
+
console.log(chalk.dim(' (all checks skipped via .codev/config.json)'));
|
|
451
487
|
}
|
|
452
488
|
}
|
|
453
489
|
state.gates[gateName].status = 'approved';
|