@ceyhunbilir/synaphex 1.0.5 → 1.0.8

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.
@@ -0,0 +1,2 @@
1
+ export declare function handleConfigure(projectName: string): Promise<void>;
2
+ //# sourceMappingURL=configure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxE"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleConfigure = handleConfigure;
4
+ const settings_js_1 = require("../lib/settings.js");
5
+ async function handleConfigure(projectName) {
6
+ try {
7
+ await (0, settings_js_1.runSettingsCLI)(projectName);
8
+ }
9
+ catch (err) {
10
+ console.error(`Error: ${err instanceof Error ? err.message : String(err)}`);
11
+ process.exit(1);
12
+ }
13
+ }
14
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":";;AAEA,0CAOC;AATD,oDAAoD;AAE7C,KAAK,UAAU,eAAe,CAAC,WAAmB;IACvD,IAAI,CAAC;QACH,MAAM,IAAA,4BAAc,EAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function handleLoadConfig(projectName: string): Promise<void>;
2
+ //# sourceMappingURL=load-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../src/commands/load-config.ts"],"names":[],"mappings":"AA+FA,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCzE"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.handleLoadConfig = handleLoadConfig;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const paths_js_1 = require("../lib/paths.js");
39
+ function parseConfigFile(content) {
40
+ var _a, _b;
41
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
42
+ if (!match) {
43
+ throw new Error('Invalid config file format');
44
+ }
45
+ const frontmatterText = match[1];
46
+ const frontmatter = {
47
+ project: '',
48
+ provider: 'claude',
49
+ model: 'claude-opus-4-5',
50
+ created_at: new Date().toISOString(),
51
+ };
52
+ const lines = frontmatterText.split('\n');
53
+ let inAgents = false;
54
+ let currentAgent = null;
55
+ const agents = {};
56
+ for (const line of lines) {
57
+ if (line.startsWith('agents:')) {
58
+ inAgents = true;
59
+ continue;
60
+ }
61
+ if (inAgents && line.match(/^ \w+:/)) {
62
+ currentAgent = (_b = (_a = line.match(/^\s*(\w+):/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : null;
63
+ if (currentAgent) {
64
+ agents[currentAgent] = {
65
+ focus: '',
66
+ depth: 'standard',
67
+ custom_instructions: '',
68
+ };
69
+ }
70
+ continue;
71
+ }
72
+ if (inAgents && currentAgent && line.includes(':')) {
73
+ const [key, ...valueParts] = line.split(':');
74
+ const trimmedKey = key.trim();
75
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
76
+ if (trimmedKey === 'focus' || trimmedKey === 'custom_instructions') {
77
+ agents[currentAgent][trimmedKey] = value;
78
+ }
79
+ else if (trimmedKey === 'depth') {
80
+ agents[currentAgent][trimmedKey] = value;
81
+ }
82
+ continue;
83
+ }
84
+ if (!inAgents && line.includes(':')) {
85
+ const [key, ...valueParts] = line.split(':');
86
+ const trimmedKey = key.trim();
87
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
88
+ if (trimmedKey === 'project')
89
+ frontmatter.project = value;
90
+ if (trimmedKey === 'provider')
91
+ frontmatter.provider = value;
92
+ if (trimmedKey === 'model')
93
+ frontmatter.model = value;
94
+ if (trimmedKey === 'created_at')
95
+ frontmatter.created_at = value;
96
+ }
97
+ }
98
+ if (Object.keys(agents).length > 0) {
99
+ frontmatter.agents = {
100
+ examiner: agents.examiner || { focus: '', depth: 'standard', custom_instructions: '' },
101
+ researcher: agents.researcher || { focus: '', depth: 'standard', custom_instructions: '' },
102
+ coder: agents.coder || { focus: '', depth: 'standard', custom_instructions: '' },
103
+ questioner: agents.questioner || { focus: '', depth: 'standard', custom_instructions: '' },
104
+ reviewer: agents.reviewer || { focus: '', depth: 'standard', custom_instructions: '' },
105
+ };
106
+ }
107
+ return frontmatter;
108
+ }
109
+ async function handleLoadConfig(projectName) {
110
+ const configPath = paths_js_1.Paths.config(projectName);
111
+ if (!fs.existsSync(configPath)) {
112
+ console.error(`Error: Project '${projectName}' not found.`);
113
+ process.exit(1);
114
+ }
115
+ try {
116
+ const content = fs.readFileSync(configPath, 'utf-8');
117
+ const config = parseConfigFile(content);
118
+ console.log(`=== Agent Customizations for ${projectName} ===\n`);
119
+ if (!config.agents || Object.keys(config.agents).length === 0) {
120
+ console.log('No agent customizations configured.\n');
121
+ return;
122
+ }
123
+ const agentNames = ['examiner', 'researcher', 'coder', 'questioner', 'reviewer'];
124
+ for (const agentName of agentNames) {
125
+ const agent = config.agents[agentName];
126
+ if (!agent)
127
+ continue;
128
+ const displayName = agentName.charAt(0).toUpperCase() + agentName.slice(1);
129
+ console.log(`${displayName}:`);
130
+ console.log(` Focus: ${agent.focus || '(none)'}`);
131
+ console.log(` Depth: ${agent.depth}`);
132
+ console.log(` Custom instructions: ${agent.custom_instructions ? agent.custom_instructions : '(none)'}`);
133
+ console.log();
134
+ }
135
+ }
136
+ catch (err) {
137
+ console.error(`Error reading config: ${err instanceof Error ? err.message : String(err)}`);
138
+ process.exit(1);
139
+ }
140
+ }
141
+ //# sourceMappingURL=load-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../src/commands/load-config.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ const init_1 = require("./commands/init");
6
6
  const save_output_1 = require("./commands/save-output");
7
7
  const load_memory_1 = require("./commands/load-memory");
8
8
  const list_outputs_1 = require("./commands/list-outputs");
9
+ const configure_1 = require("./commands/configure");
10
+ const load_config_1 = require("./commands/load-config");
9
11
  const program = new commander_1.Command();
10
12
  program
11
13
  .name('synaphex')
@@ -27,6 +29,14 @@ program
27
29
  .command('list-outputs <project>')
28
30
  .description('List all pipeline outputs for a project')
29
31
  .action(list_outputs_1.handleListOutputs);
32
+ program
33
+ .command('configure <project>')
34
+ .description('Interactive CLI to configure provider and model settings')
35
+ .action(configure_1.handleConfigure);
36
+ program
37
+ .command('load-config <project>')
38
+ .description('Load and output project agent customizations')
39
+ .action(load_config_1.handleLoadConfig);
30
40
  program.parse(process.argv);
31
41
  if (!process.argv.slice(2).length) {
32
42
  program.outputHelp();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAAuC;AACvC,wDAA0D;AAC1D,wDAA0D;AAC1D,0DAA4D;AAE5D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wEAAwE,CAAC;KACrF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,8BAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,8BAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,gCAAiB,CAAC,CAAC;AAE7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAAuC;AACvC,wDAA0D;AAC1D,wDAA0D;AAC1D,0DAA4D;AAC5D,oDAAuD;AACvD,wDAA0D;AAE1D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wEAAwE,CAAC;KACrF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,WAAI,CAAC,CAAC;AAEhB,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,8BAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,8BAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,gCAAiB,CAAC,CAAC;AAE7B,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,0DAA0D,CAAC;KACvE,MAAM,CAAC,2BAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,uBAAuB,CAAC;KAChC,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,8BAAgB,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA2E1E"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAIA,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgG1E"}
@@ -23,6 +23,27 @@ project: ${projectName}
23
23
  provider: claude
24
24
  model: claude-opus-4-5
25
25
  created_at: ${now}
26
+ agents:
27
+ examiner:
28
+ focus: ""
29
+ depth: standard
30
+ custom_instructions: ""
31
+ researcher:
32
+ focus: ""
33
+ depth: standard
34
+ custom_instructions: ""
35
+ coder:
36
+ focus: ""
37
+ depth: standard
38
+ custom_instructions: ""
39
+ questioner:
40
+ focus: ""
41
+ depth: standard
42
+ custom_instructions: ""
43
+ reviewer:
44
+ focus: ""
45
+ depth: standard
46
+ custom_instructions: ""
26
47
  ---
27
48
 
28
49
  # Project Configuration
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":";;;;;AAIA,8CA2EC;AA/ED,wDAA0B;AAC1B,gDAAwB;AACxB,mCAAgC;AAEzB,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,WAAW,GAAG,aAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,aAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,aAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAEvD,qBAAqB;IACrB,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,kBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhC,0CAA0C;IAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG;WACb,WAAW;;;cAGR,GAAG;;;;;;;;;;;;;;;;;WAiBN,GAAG;CACb,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEvD,gCAAgC;IAChC,MAAM,kBAAkB,GAAG,2BAA2B,WAAW;;;;;;;CAOlE,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAEjE,4BAA4B;IAC5B,MAAM,eAAe,GAAG;;;;;;IAMtB,WAAW;;yBAEU,GAAG;;;;;;CAM3B,CAAC;IAEA,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":";;;;;AAIA,8CAgGC;AApGD,wDAA0B;AAC1B,gDAAwB;AACxB,mCAAgC;AAEzB,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,WAAW,GAAG,aAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,aAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,aAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,eAAe,GAAG,aAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAEvD,qBAAqB;IACrB,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/B,MAAM,kBAAE,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEhC,0CAA0C;IAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG;WACb,WAAW;;;cAGR,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAsCN,GAAG;CACb,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAEvD,gCAAgC;IAChC,MAAM,kBAAkB,GAAG,2BAA2B,WAAW;;;;;;;CAOlE,CAAC;IAEA,MAAM,kBAAE,CAAC,SAAS,CAAC,eAAe,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAEjE,4BAA4B;IAC5B,MAAM,eAAe,GAAG;;;;;;IAMtB,WAAW;;yBAEU,GAAG;;;;;;CAM3B,CAAC;IAEA,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runSettingsCLI(projectName: string): Promise<void>;
2
+ //# sourceMappingURL=settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"AA8XA,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EvE"}
@@ -0,0 +1,406 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.runSettingsCLI = runSettingsCLI;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const readline = __importStar(require("readline"));
40
+ const paths_js_1 = require("./paths.js");
41
+ const PROVIDERS = {
42
+ claude: {
43
+ name: 'claude',
44
+ description: 'Anthropic Claude (requires ANTHROPIC_API_KEY)',
45
+ models: ['claude-opus-4-5', 'claude-sonnet-4-5', 'claude-haiku-4-5'],
46
+ },
47
+ openai: {
48
+ name: 'openai',
49
+ description: 'OpenAI / Copilot (requires OPENAI_API_KEY)',
50
+ models: ['gpt-4o', 'gpt-4-turbo', 'gpt-4'],
51
+ },
52
+ gemini: {
53
+ name: 'gemini',
54
+ description: 'Google Gemini (requires GEMINI_API_KEY)',
55
+ models: ['gemini-1.5-pro', 'gemini-1.5-flash', 'gemini-pro'],
56
+ },
57
+ };
58
+ const AGENT_NAMES = ['examiner', 'researcher', 'coder', 'questioner', 'reviewer'];
59
+ function parseConfigFile(content) {
60
+ var _a, _b;
61
+ const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
62
+ if (!match) {
63
+ throw new Error('Invalid config file format');
64
+ }
65
+ const frontmatterText = match[1];
66
+ const body = match[2];
67
+ // Simple YAML parser for our specific structure
68
+ const frontmatter = {
69
+ project: '',
70
+ provider: 'claude',
71
+ model: 'claude-opus-4-5',
72
+ created_at: new Date().toISOString(),
73
+ };
74
+ const lines = frontmatterText.split('\n');
75
+ let inAgents = false;
76
+ let currentAgent = null;
77
+ const agents = {};
78
+ for (const line of lines) {
79
+ if (line.startsWith('agents:')) {
80
+ inAgents = true;
81
+ continue;
82
+ }
83
+ if (inAgents && line.match(/^ \w+:/)) {
84
+ currentAgent = (_b = (_a = line.match(/^\s*(\w+):/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : null;
85
+ if (currentAgent) {
86
+ agents[currentAgent] = {
87
+ focus: '',
88
+ depth: 'standard',
89
+ custom_instructions: '',
90
+ };
91
+ }
92
+ continue;
93
+ }
94
+ if (inAgents && currentAgent && line.includes(':')) {
95
+ const [key, ...valueParts] = line.split(':');
96
+ const trimmedKey = key.trim();
97
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
98
+ if (trimmedKey === 'focus' || trimmedKey === 'custom_instructions') {
99
+ agents[currentAgent][trimmedKey] = value;
100
+ }
101
+ else if (trimmedKey === 'depth') {
102
+ agents[currentAgent][trimmedKey] = value;
103
+ }
104
+ continue;
105
+ }
106
+ if (!inAgents && line.includes(':')) {
107
+ const [key, ...valueParts] = line.split(':');
108
+ const trimmedKey = key.trim();
109
+ const value = valueParts.join(':').trim().replace(/^["']|["']$/g, '');
110
+ if (trimmedKey === 'project')
111
+ frontmatter.project = value;
112
+ if (trimmedKey === 'provider')
113
+ frontmatter.provider = value;
114
+ if (trimmedKey === 'model')
115
+ frontmatter.model = value;
116
+ if (trimmedKey === 'created_at')
117
+ frontmatter.created_at = value;
118
+ }
119
+ }
120
+ if (Object.keys(agents).length > 0) {
121
+ frontmatter.agents = {
122
+ examiner: agents.examiner || { focus: '', depth: 'standard', custom_instructions: '' },
123
+ researcher: agents.researcher || { focus: '', depth: 'standard', custom_instructions: '' },
124
+ coder: agents.coder || { focus: '', depth: 'standard', custom_instructions: '' },
125
+ questioner: agents.questioner || { focus: '', depth: 'standard', custom_instructions: '' },
126
+ reviewer: agents.reviewer || { focus: '', depth: 'standard', custom_instructions: '' },
127
+ };
128
+ }
129
+ return { frontmatter, body };
130
+ }
131
+ function buildConfigFile(frontmatter, body) {
132
+ let agentsYaml = '';
133
+ if (frontmatter.agents) {
134
+ agentsYaml = `
135
+ agents:
136
+ examiner:
137
+ focus: "${frontmatter.agents.examiner.focus}"
138
+ depth: ${frontmatter.agents.examiner.depth}
139
+ custom_instructions: "${frontmatter.agents.examiner.custom_instructions}"
140
+ researcher:
141
+ focus: "${frontmatter.agents.researcher.focus}"
142
+ depth: ${frontmatter.agents.researcher.depth}
143
+ custom_instructions: "${frontmatter.agents.researcher.custom_instructions}"
144
+ coder:
145
+ focus: "${frontmatter.agents.coder.focus}"
146
+ depth: ${frontmatter.agents.coder.depth}
147
+ custom_instructions: "${frontmatter.agents.coder.custom_instructions}"
148
+ questioner:
149
+ focus: "${frontmatter.agents.questioner.focus}"
150
+ depth: ${frontmatter.agents.questioner.depth}
151
+ custom_instructions: "${frontmatter.agents.questioner.custom_instructions}"
152
+ reviewer:
153
+ focus: "${frontmatter.agents.reviewer.focus}"
154
+ depth: ${frontmatter.agents.reviewer.depth}
155
+ custom_instructions: "${frontmatter.agents.reviewer.custom_instructions}"`;
156
+ }
157
+ const fm = `---
158
+ project: ${frontmatter.project}
159
+ provider: ${frontmatter.provider}
160
+ model: ${frontmatter.model}
161
+ created_at: ${frontmatter.created_at}${agentsYaml}
162
+ ---
163
+
164
+ ${body}`;
165
+ return fm;
166
+ }
167
+ function question(rl, prompt) {
168
+ return new Promise((resolve) => {
169
+ rl.question(prompt, (answer) => {
170
+ resolve(answer.trim());
171
+ });
172
+ });
173
+ }
174
+ async function selectProvider(rl, currentProvider) {
175
+ console.log('\n=== Select Provider ===\n');
176
+ const providerList = Object.entries(PROVIDERS).map(([_, config], idx) => ` ${idx + 1}) ${config.name.padEnd(10)} (${config.description})`);
177
+ console.log(providerList.join('\n'));
178
+ const answer = await question(rl, `\nEnter number [1-3] (press Enter to keep '${currentProvider}'): `);
179
+ if (!answer) {
180
+ return currentProvider;
181
+ }
182
+ const idx = parseInt(answer, 10) - 1;
183
+ const providers = Object.keys(PROVIDERS);
184
+ if (idx >= 0 && idx < providers.length) {
185
+ return providers[idx];
186
+ }
187
+ console.log('Invalid choice. Keeping current provider.');
188
+ return currentProvider;
189
+ }
190
+ async function selectModel(rl, provider, currentModel) {
191
+ console.log('\n=== Select Model ===\n');
192
+ const providerConfig = PROVIDERS[provider];
193
+ if (!providerConfig) {
194
+ return currentModel;
195
+ }
196
+ const modelList = providerConfig.models.map((m, idx) => {
197
+ const isRecommended = idx === 0 ? ' (recommended)' : '';
198
+ return ` ${idx + 1}) ${m}${isRecommended}`;
199
+ });
200
+ const customIdx = providerConfig.models.length + 1;
201
+ modelList.push(` ${customIdx}) Enter custom model...`);
202
+ console.log(modelList.join('\n'));
203
+ const answer = await question(rl, `\nEnter number [1-${customIdx}] (press Enter to keep '${currentModel}'): `);
204
+ if (!answer) {
205
+ return currentModel;
206
+ }
207
+ const idx = parseInt(answer, 10) - 1;
208
+ if (idx >= 0 && idx < providerConfig.models.length) {
209
+ return providerConfig.models[idx];
210
+ }
211
+ if (idx === providerConfig.models.length) {
212
+ // Custom model
213
+ const customModel = await question(rl, 'Enter custom model name: ');
214
+ if (customModel) {
215
+ return customModel;
216
+ }
217
+ return currentModel;
218
+ }
219
+ console.log('Invalid choice. Keeping current model.');
220
+ return currentModel;
221
+ }
222
+ async function selectAgent(rl) {
223
+ console.log('\n=== Select Agent ===\n');
224
+ const agents = [
225
+ ' 1) EXAMINER — analyzes context and requirements',
226
+ ' 2) RESEARCHER — researches best practices',
227
+ ' 3) CODER — implements the solution',
228
+ ' 4) QUESTIONER — critically reviews',
229
+ ' 5) REVIEWER — final quality gate',
230
+ ' 6) Back',
231
+ ];
232
+ console.log(agents.join('\n'));
233
+ const answer = await question(rl, '\nEnter number [1-6]: ');
234
+ const idx = parseInt(answer, 10) - 1;
235
+ if (idx >= 0 && idx < AGENT_NAMES.length) {
236
+ return AGENT_NAMES[idx];
237
+ }
238
+ if (idx === AGENT_NAMES.length) {
239
+ return null; // Back
240
+ }
241
+ console.log('Invalid choice.');
242
+ return await selectAgent(rl);
243
+ }
244
+ async function configureAgent(rl, agentName, config) {
245
+ const agentDisplayName = agentName.charAt(0).toUpperCase() + agentName.slice(1);
246
+ console.log(`\n=== ${agentDisplayName} Settings ===\n`);
247
+ console.log(`Current settings:`);
248
+ console.log(` Focus : ${config.focus || '(none)'}`);
249
+ console.log(` Depth : ${config.depth}`);
250
+ console.log(` Instructions: ${config.custom_instructions ? '(set)' : '(none)'}\n`);
251
+ const options = [
252
+ ' 1) Set focus',
253
+ ' 2) Set depth (quick / standard / deep)',
254
+ ' 3) Set custom instructions',
255
+ ' 4) Reset to defaults',
256
+ ' 5) Back',
257
+ ];
258
+ console.log(options.join('\n'));
259
+ const answer = await question(rl, '\nEnter number [1-5]: ');
260
+ const choice = parseInt(answer, 10);
261
+ switch (choice) {
262
+ case 1: {
263
+ const focus = await question(rl, '\nEnter focus (e.g. "security", "performance"): ');
264
+ config.focus = focus;
265
+ return await configureAgent(rl, agentName, config);
266
+ }
267
+ case 2: {
268
+ console.log('\nDepth options:');
269
+ console.log(' 1) quick — fast, shallow analysis');
270
+ console.log(' 2) standard — balanced (default)');
271
+ console.log(' 3) deep — thorough, comprehensive\n');
272
+ const depthChoice = await question(rl, 'Enter number [1-3]: ');
273
+ const depthIdx = parseInt(depthChoice, 10);
274
+ if (depthIdx === 1)
275
+ config.depth = 'quick';
276
+ else if (depthIdx === 3)
277
+ config.depth = 'deep';
278
+ else
279
+ config.depth = 'standard';
280
+ return await configureAgent(rl, agentName, config);
281
+ }
282
+ case 3: {
283
+ const instructions = await question(rl, '\nEnter custom instructions: ');
284
+ config.custom_instructions = instructions;
285
+ return await configureAgent(rl, agentName, config);
286
+ }
287
+ case 4: {
288
+ config = { focus: '', depth: 'standard', custom_instructions: '' };
289
+ console.log('\n✓ Reset to defaults.');
290
+ return await configureAgent(rl, agentName, config);
291
+ }
292
+ case 5: {
293
+ return config; // Back
294
+ }
295
+ default:
296
+ console.log('Invalid choice.');
297
+ return await configureAgent(rl, agentName, config);
298
+ }
299
+ }
300
+ async function configureLLM(rl, config) {
301
+ console.log('\n=== LLM Settings ===\n');
302
+ console.log(`Current settings:`);
303
+ console.log(` Provider: ${config.provider}`);
304
+ console.log(` Model : ${config.model}`);
305
+ const newProvider = await selectProvider(rl, config.provider);
306
+ config.provider = newProvider;
307
+ const newModel = await selectModel(rl, newProvider, config.model);
308
+ config.model = newModel;
309
+ return config;
310
+ }
311
+ async function configureAgents(rl, config) {
312
+ if (!config.agents) {
313
+ config.agents = {
314
+ examiner: { focus: '', depth: 'standard', custom_instructions: '' },
315
+ researcher: { focus: '', depth: 'standard', custom_instructions: '' },
316
+ coder: { focus: '', depth: 'standard', custom_instructions: '' },
317
+ questioner: { focus: '', depth: 'standard', custom_instructions: '' },
318
+ reviewer: { focus: '', depth: 'standard', custom_instructions: '' },
319
+ };
320
+ }
321
+ let selecting = true;
322
+ while (selecting) {
323
+ const agent = await selectAgent(rl);
324
+ if (agent === null) {
325
+ selecting = false;
326
+ }
327
+ else {
328
+ const updated = await configureAgent(rl, agent, config.agents[agent]);
329
+ if (updated) {
330
+ config.agents[agent] = updated;
331
+ }
332
+ }
333
+ }
334
+ return config;
335
+ }
336
+ async function runSettingsCLI(projectName) {
337
+ const configPath = paths_js_1.Paths.config(projectName);
338
+ // Verify project exists
339
+ if (!fs.existsSync(configPath)) {
340
+ console.error(`Error: Project '${projectName}' not found.`);
341
+ console.error(`Create it first with: /synaphex/init ${projectName}`);
342
+ process.exit(1);
343
+ }
344
+ // Read current config
345
+ let config;
346
+ let body;
347
+ try {
348
+ const content = fs.readFileSync(configPath, 'utf-8');
349
+ const parsed = parseConfigFile(content);
350
+ config = parsed.frontmatter;
351
+ body = parsed.body;
352
+ }
353
+ catch (err) {
354
+ console.error(`Error reading config: ${err instanceof Error ? err.message : String(err)}`);
355
+ process.exit(1);
356
+ }
357
+ // Open readline interface
358
+ const rl = readline.createInterface({
359
+ input: process.stdin,
360
+ output: process.stdout,
361
+ });
362
+ try {
363
+ console.log(`\n=== Synaphex Settings: ${projectName} ===\n`);
364
+ let configuring = true;
365
+ while (configuring) {
366
+ console.log('\nMain Menu:');
367
+ console.log(' 1) LLM Settings (provider, model)');
368
+ console.log(' 2) Agent Settings');
369
+ console.log(' 3) Exit\n');
370
+ const menuChoice = await question(rl, 'Enter number [1-3]: ');
371
+ switch (parseInt(menuChoice, 10)) {
372
+ case 1:
373
+ config = await configureLLM(rl, config);
374
+ break;
375
+ case 2:
376
+ config = await configureAgents(rl, config);
377
+ break;
378
+ case 3:
379
+ configuring = false;
380
+ break;
381
+ default:
382
+ console.log('Invalid choice.');
383
+ }
384
+ }
385
+ // Confirmation
386
+ console.log(`\n=== Updated Settings ===`);
387
+ console.log(` Provider: ${config.provider}`);
388
+ console.log(` Model : ${config.model}`);
389
+ if (config.agents) {
390
+ console.log('\nAgent customizations enabled.');
391
+ }
392
+ const confirm = await question(rl, '\nSave changes? (y/n): ');
393
+ if (confirm.toLowerCase() === 'y' || confirm.toLowerCase() === 'yes') {
394
+ const updatedContent = buildConfigFile(config, body);
395
+ fs.writeFileSync(configPath, updatedContent, 'utf-8');
396
+ console.log(`\n✓ Settings saved to ${path.relative(process.cwd(), configPath)}`);
397
+ }
398
+ else {
399
+ console.log('\n✗ Changes discarded.');
400
+ }
401
+ }
402
+ finally {
403
+ rl.close();
404
+ }
405
+ }
406
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/lib/settings.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,8 +1,21 @@
1
+ export interface AgentConfig {
2
+ focus: string;
3
+ depth: 'quick' | 'standard' | 'deep';
4
+ custom_instructions: string;
5
+ }
6
+ export interface AgentsConfig {
7
+ examiner: AgentConfig;
8
+ researcher: AgentConfig;
9
+ coder: AgentConfig;
10
+ questioner: AgentConfig;
11
+ reviewer: AgentConfig;
12
+ }
1
13
  export interface ProjectConfig {
2
14
  project: string;
3
15
  provider: 'claude' | 'openai' | 'gemini';
4
16
  model: string;
5
17
  created_at: string;
18
+ agents?: AgentsConfig;
6
19
  }
7
20
  export interface PipelineStages {
8
21
  examiner?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,WAAW,CAAC;IACxB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,WAAW,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ceyhunbilir/synaphex",
3
- "version": "1.0.5",
3
+ "version": "1.0.8",
4
4
  "description": "Multi-agent AI pipeline as a Claude Code skill — Examiner → Researcher → Coder → Questioner → Reviewer",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/skills/fix.md CHANGED
@@ -10,6 +10,21 @@ You are running the Synaphex fix pipeline. This is tailored for targeted bug fix
10
10
 
11
11
  ---
12
12
 
13
+ ## Step 0: Load Agent Customizations
14
+
15
+ Before asking about research, load any agent customizations for this project. Run:
16
+
17
+ ```bash
18
+ synaphex load-config $ARGUMENTS
19
+ ```
20
+
21
+ Read the output. If customizations are present, apply them throughout each agent stage:
22
+ - **Focus** — prioritize that area
23
+ - **Depth** — adjust thoroughness (quick = surface-level, standard = balanced, deep = comprehensive)
24
+ - **Custom instructions** — follow any extra guidance provided
25
+
26
+ ---
27
+
13
28
  ## Step 1: Ask About Research Phase
14
29
 
15
30
  Before starting, I need your input on whether to include the Researcher stage:
package/skills/query.md CHANGED
@@ -10,6 +10,23 @@ You are running the complete Synaphex multi-agent pipeline. This will take you t
10
10
 
11
11
  ---
12
12
 
13
+ ## Load Agent Customizations
14
+
15
+ Before starting, I need to load any agent customizations configured for this project. Run this in your terminal:
16
+
17
+ ```bash
18
+ synaphex load-config $ARGUMENTS
19
+ ```
20
+
21
+ Read the output. If customizations are present, apply them throughout each agent stage below:
22
+ - **Focus** — prioritize that area
23
+ - **Depth** — adjust thoroughness (quick = surface-level, standard = balanced, deep = comprehensive)
24
+ - **Custom instructions** — follow any extra guidance provided
25
+
26
+ If no customizations are shown, proceed with standard agent behavior for each stage.
27
+
28
+ ---
29
+
13
30
  ## Stage 1: EXAMINER — Context Analysis
14
31
 
15
32
  **Role:** You are a project context analyst. Your job is to understand the current state and what needs to be done.
@@ -0,0 +1,66 @@
1
+ ---
2
+ description: "Configure LLM provider and model for a Synaphex project via interactive CLI"
3
+ ---
4
+
5
+ # Synaphex Settings
6
+
7
+ I'll open the interactive settings CLI for project: **$ARGUMENTS**
8
+
9
+ Run this command in your terminal:
10
+
11
+ ```bash
12
+ synaphex configure $ARGUMENTS
13
+ ```
14
+
15
+ This opens an interactive prompt where you can select:
16
+ - **Provider** — claude, openai, or gemini
17
+ - **Model** — preset choices or enter a custom model name
18
+
19
+ Your settings are saved to `~/.claude/projects/$ARGUMENTS/config.md`.
20
+
21
+ ## Supported Providers
22
+
23
+ ### Claude (Anthropic)
24
+ - **Claude Opus 4.5** — Most capable, recommended for complex tasks
25
+ - **Claude Sonnet 4.5** — Balanced speed and capability
26
+ - **Claude Haiku 4.5** — Fast and efficient for simple tasks
27
+
28
+ Requires: `ANTHROPIC_API_KEY` environment variable
29
+
30
+ ### OpenAI
31
+ - **GPT-4o** — Latest OpenAI model
32
+ - **GPT-4 Turbo** — High-performance reasoning
33
+ - **GPT-4** — Stable, widely-used model
34
+
35
+ Requires: `OPENAI_API_KEY` environment variable
36
+
37
+ ### Google Gemini
38
+ - **Gemini 1.5 Pro** — Best performance
39
+ - **Gemini 1.5 Flash** — Fast responses
40
+ - **Gemini Pro** — Balanced capability
41
+
42
+ Requires: `GEMINI_API_KEY` environment variable
43
+
44
+ ## Custom Models
45
+
46
+ If the preset models don't include your preferred model, you can enter a custom model name. This is useful if:
47
+ - You have access to a fine-tuned version of a model
48
+ - A new model was released that isn't in the presets
49
+ - You want to use a local model via an API-compatible service
50
+
51
+ ## After Configuration
52
+
53
+ Your project is now configured with your chosen provider and model. You can now run:
54
+
55
+ - **`/synaphex/query <task>`** — Full 5-stage pipeline
56
+ - **`/synaphex/fix <task>`** — Fast pipeline with optional research skip
57
+
58
+ ## Updating Settings
59
+
60
+ Run this command anytime to reconfigure your provider or model:
61
+
62
+ ```bash
63
+ synaphex configure <project>
64
+ ```
65
+
66
+ The interactive CLI preserves your current settings as defaults, so you only need to enter a new value if you want to change it.