jfl 0.8.1 → 0.9.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/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +30 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/ide.d.ts +2 -1
- package/dist/commands/ide.d.ts.map +1 -1
- package/dist/commands/ide.js +60 -1
- package/dist/commands/ide.js.map +1 -1
- package/dist/commands/init-from-service.d.ts +15 -0
- package/dist/commands/init-from-service.d.ts.map +1 -0
- package/dist/commands/init-from-service.js +541 -0
- package/dist/commands/init-from-service.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/kanban.d.ts.map +1 -1
- package/dist/commands/kanban.js +13 -4
- package/dist/commands/kanban.js.map +1 -1
- package/dist/commands/linear.d.ts +41 -0
- package/dist/commands/linear.d.ts.map +1 -0
- package/dist/commands/linear.js +715 -0
- package/dist/commands/linear.js.map +1 -0
- package/dist/commands/peter.d.ts.map +1 -1
- package/dist/commands/peter.js +232 -25
- package/dist/commands/peter.js.map +1 -1
- package/dist/commands/services.d.ts.map +1 -1
- package/dist/commands/services.js +146 -0
- package/dist/commands/services.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +173 -13
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/telemetry-monitor.d.ts +11 -0
- package/dist/commands/telemetry-monitor.d.ts.map +1 -0
- package/dist/commands/telemetry-monitor.js +224 -0
- package/dist/commands/telemetry-monitor.js.map +1 -0
- package/dist/commands/telemetry-test.d.ts +11 -0
- package/dist/commands/telemetry-test.d.ts.map +1 -0
- package/dist/commands/telemetry-test.js +67 -0
- package/dist/commands/telemetry-test.js.map +1 -0
- package/dist/commands/tenet-agents.d.ts +13 -0
- package/dist/commands/tenet-agents.d.ts.map +1 -0
- package/dist/commands/tenet-agents.js +191 -0
- package/dist/commands/tenet-agents.js.map +1 -0
- package/dist/commands/tenet-setup.d.ts +19 -0
- package/dist/commands/tenet-setup.d.ts.map +1 -0
- package/dist/commands/tenet-setup.js +131 -0
- package/dist/commands/tenet-setup.js.map +1 -0
- package/dist/commands/train.d.ts +18 -0
- package/dist/commands/train.d.ts.map +1 -1
- package/dist/commands/train.js +182 -0
- package/dist/commands/train.js.map +1 -1
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +24 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +159 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/advanced-setup.d.ts +78 -0
- package/dist/lib/advanced-setup.d.ts.map +1 -0
- package/dist/lib/advanced-setup.js +433 -0
- package/dist/lib/advanced-setup.js.map +1 -0
- package/dist/lib/agent-config.d.ts +33 -0
- package/dist/lib/agent-config.d.ts.map +1 -1
- package/dist/lib/agent-config.js +26 -0
- package/dist/lib/agent-config.js.map +1 -1
- package/dist/lib/counterfactual-training-bridge.d.ts +114 -0
- package/dist/lib/counterfactual-training-bridge.d.ts.map +1 -0
- package/dist/lib/counterfactual-training-bridge.js +322 -0
- package/dist/lib/counterfactual-training-bridge.js.map +1 -0
- package/dist/lib/discovery-agent.d.ts +48 -0
- package/dist/lib/discovery-agent.d.ts.map +1 -0
- package/dist/lib/discovery-agent.js +111 -0
- package/dist/lib/discovery-agent.js.map +1 -0
- package/dist/lib/flow-engine.d.ts.map +1 -1
- package/dist/lib/flow-engine.js +46 -8
- package/dist/lib/flow-engine.js.map +1 -1
- package/dist/lib/gtm-generator.d.ts +29 -0
- package/dist/lib/gtm-generator.d.ts.map +1 -0
- package/dist/lib/gtm-generator.js +252 -0
- package/dist/lib/gtm-generator.js.map +1 -0
- package/dist/lib/hub-health.d.ts +40 -0
- package/dist/lib/hub-health.d.ts.map +1 -0
- package/dist/lib/hub-health.js +89 -0
- package/dist/lib/hub-health.js.map +1 -0
- package/dist/lib/invariant-monitor.d.ts +6 -2
- package/dist/lib/invariant-monitor.d.ts.map +1 -1
- package/dist/lib/invariant-monitor.js +89 -2
- package/dist/lib/invariant-monitor.js.map +1 -1
- package/dist/lib/journal-analyzer.d.ts +71 -0
- package/dist/lib/journal-analyzer.d.ts.map +1 -0
- package/dist/lib/journal-analyzer.js +306 -0
- package/dist/lib/journal-analyzer.js.map +1 -0
- package/dist/lib/linear-client.d.ts +73 -0
- package/dist/lib/linear-client.d.ts.map +1 -0
- package/dist/lib/linear-client.js +112 -0
- package/dist/lib/linear-client.js.map +1 -0
- package/dist/lib/linear-id-map.d.ts +20 -0
- package/dist/lib/linear-id-map.d.ts.map +1 -0
- package/dist/lib/linear-id-map.js +57 -0
- package/dist/lib/linear-id-map.js.map +1 -0
- package/dist/lib/linear-kanban.d.ts +66 -0
- package/dist/lib/linear-kanban.d.ts.map +1 -0
- package/dist/lib/linear-kanban.js +175 -0
- package/dist/lib/linear-kanban.js.map +1 -0
- package/dist/lib/onboarding.d.ts +40 -0
- package/dist/lib/onboarding.d.ts.map +1 -0
- package/dist/lib/onboarding.js +213 -0
- package/dist/lib/onboarding.js.map +1 -0
- package/dist/lib/physical-world-model.d.ts +50 -0
- package/dist/lib/physical-world-model.d.ts.map +1 -0
- package/dist/lib/physical-world-model.js +251 -0
- package/dist/lib/physical-world-model.js.map +1 -0
- package/dist/lib/planning-loop.d.ts +157 -0
- package/dist/lib/planning-loop.d.ts.map +1 -0
- package/dist/lib/planning-loop.js +537 -0
- package/dist/lib/planning-loop.js.map +1 -0
- package/dist/lib/policy-head.d.ts +13 -0
- package/dist/lib/policy-head.d.ts.map +1 -1
- package/dist/lib/policy-head.js +168 -2
- package/dist/lib/policy-head.js.map +1 -1
- package/dist/lib/resource-optimizer-middleware.d.ts +39 -0
- package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -0
- package/dist/lib/resource-optimizer-middleware.js +222 -0
- package/dist/lib/resource-optimizer-middleware.js.map +1 -0
- package/dist/lib/resource-optimizer.d.ts +71 -0
- package/dist/lib/resource-optimizer.d.ts.map +1 -0
- package/dist/lib/resource-optimizer.js +228 -0
- package/dist/lib/resource-optimizer.js.map +1 -0
- package/dist/lib/rl-manager.d.ts +74 -0
- package/dist/lib/rl-manager.d.ts.map +1 -0
- package/dist/lib/rl-manager.js +244 -0
- package/dist/lib/rl-manager.js.map +1 -0
- package/dist/lib/service-analyzer.d.ts +76 -0
- package/dist/lib/service-analyzer.d.ts.map +1 -0
- package/dist/lib/service-analyzer.js +704 -0
- package/dist/lib/service-analyzer.js.map +1 -0
- package/dist/lib/service-gtm.js +2 -2
- package/dist/lib/service-gtm.js.map +1 -1
- package/dist/lib/service-questionnaire.d.ts +11 -0
- package/dist/lib/service-questionnaire.d.ts.map +1 -0
- package/dist/lib/service-questionnaire.js +89 -0
- package/dist/lib/service-questionnaire.js.map +1 -0
- package/dist/lib/setup/agent-generator.d.ts +2 -0
- package/dist/lib/setup/agent-generator.d.ts.map +1 -1
- package/dist/lib/setup/agent-generator.js +128 -4
- package/dist/lib/setup/agent-generator.js.map +1 -1
- package/dist/lib/setup/flow-generator.d.ts +10 -0
- package/dist/lib/setup/flow-generator.d.ts.map +1 -0
- package/dist/lib/setup/flow-generator.js +113 -0
- package/dist/lib/setup/flow-generator.js.map +1 -0
- package/dist/lib/setup/invariant-bridge.d.ts +91 -0
- package/dist/lib/setup/invariant-bridge.d.ts.map +1 -0
- package/dist/lib/setup/invariant-bridge.js +384 -0
- package/dist/lib/setup/invariant-bridge.js.map +1 -0
- package/dist/lib/setup/spec-generator.d.ts +41 -5
- package/dist/lib/setup/spec-generator.d.ts.map +1 -1
- package/dist/lib/setup/spec-generator.js +503 -29
- package/dist/lib/setup/spec-generator.js.map +1 -1
- package/dist/lib/stratus-client.js +1 -1
- package/dist/lib/stratus-client.js.map +1 -1
- package/dist/lib/surface-agent.d.ts +78 -0
- package/dist/lib/surface-agent.d.ts.map +1 -0
- package/dist/lib/surface-agent.js +105 -0
- package/dist/lib/surface-agent.js.map +1 -0
- package/dist/lib/surface-coordination-example.d.ts +30 -0
- package/dist/lib/surface-coordination-example.d.ts.map +1 -0
- package/dist/lib/surface-coordination-example.js +164 -0
- package/dist/lib/surface-coordination-example.js.map +1 -0
- package/dist/lib/telemetry/physical-world-collector.d.ts +15 -0
- package/dist/lib/telemetry/physical-world-collector.d.ts.map +1 -0
- package/dist/lib/telemetry/physical-world-collector.js +177 -0
- package/dist/lib/telemetry/physical-world-collector.js.map +1 -0
- package/dist/lib/telemetry/training-bridge.d.ts +51 -0
- package/dist/lib/telemetry/training-bridge.d.ts.map +1 -0
- package/dist/lib/telemetry/training-bridge.js +185 -0
- package/dist/lib/telemetry/training-bridge.js.map +1 -0
- package/dist/lib/telemetry.d.ts +2 -1
- package/dist/lib/telemetry.d.ts.map +1 -1
- package/dist/lib/telemetry.js +23 -2
- package/dist/lib/telemetry.js.map +1 -1
- package/dist/lib/tenet-board-agent.d.ts +52 -0
- package/dist/lib/tenet-board-agent.d.ts.map +1 -0
- package/dist/lib/tenet-board-agent.js +226 -0
- package/dist/lib/tenet-board-agent.js.map +1 -0
- package/dist/lib/tenet-ide-agent.d.ts +40 -0
- package/dist/lib/tenet-ide-agent.d.ts.map +1 -0
- package/dist/lib/tenet-ide-agent.js +199 -0
- package/dist/lib/tenet-ide-agent.js.map +1 -0
- package/dist/lib/workspace/data-pipeline.d.ts.map +1 -1
- package/dist/lib/workspace/data-pipeline.js +27 -5
- package/dist/lib/workspace/data-pipeline.js.map +1 -1
- package/dist/lib/workspace/sidebar-runner.d.ts +13 -0
- package/dist/lib/workspace/sidebar-runner.d.ts.map +1 -0
- package/dist/lib/workspace/sidebar-runner.js +419 -0
- package/dist/lib/workspace/sidebar-runner.js.map +1 -0
- package/dist/lib/workspace/surface-registry.d.ts.map +1 -1
- package/dist/lib/workspace/surface-registry.js +4 -1
- package/dist/lib/workspace/surface-registry.js.map +1 -1
- package/dist/lib/workspace/surfaces/agent-overview.d.ts +3 -3
- package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -1
- package/dist/lib/workspace/surfaces/agent-overview.js +3 -3
- package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -1
- package/dist/lib/workspace/surfaces/index.d.ts +3 -0
- package/dist/lib/workspace/surfaces/index.d.ts.map +1 -1
- package/dist/lib/workspace/surfaces/index.js +3 -0
- package/dist/lib/workspace/surfaces/index.js.map +1 -1
- package/dist/lib/workspace/surfaces/kanban.d.ts +15 -0
- package/dist/lib/workspace/surfaces/kanban.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/kanban.js +43 -0
- package/dist/lib/workspace/surfaces/kanban.js.map +1 -0
- package/dist/lib/workspace/surfaces/physical-world.d.ts +15 -0
- package/dist/lib/workspace/surfaces/physical-world.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/physical-world.js +37 -0
- package/dist/lib/workspace/surfaces/physical-world.js.map +1 -0
- package/dist/lib/workspace/surfaces/sidebar.d.ts +22 -0
- package/dist/lib/workspace/surfaces/sidebar.d.ts.map +1 -0
- package/dist/lib/workspace/surfaces/sidebar.js +90 -0
- package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
- package/dist/types/flows.d.ts +2 -1
- package/dist/types/flows.d.ts.map +1 -1
- package/dist/types/physical-world-model.d.ts +65 -0
- package/dist/types/physical-world-model.d.ts.map +1 -0
- package/dist/types/physical-world-model.js +43 -0
- package/dist/types/physical-world-model.js.map +1 -0
- package/dist/types/telemetry.d.ts +37 -0
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/types/world-model.d.ts.map +1 -1
- package/dist/types/world-model.js +14 -7
- package/dist/types/world-model.js.map +1 -1
- package/dist/utils/context-hub-port.d.ts.map +1 -1
- package/dist/utils/context-hub-port.js +6 -1
- package/dist/utils/context-hub-port.js.map +1 -1
- package/package.json +3 -2
- package/packages/pi/extensions/index.ts +34 -6
- package/scripts/telemetry-dashboard.sh +44 -0
- package/scripts/test-planning-loop-e2e.ts +181 -0
- package/scripts/test-server-inference.ts +49 -0
- package/scripts/test-state-sensitivity.ts +32 -0
- package/scripts/train/v2/benchmark.py +661 -0
- package/scripts/train/v2/generate_balanced.py +439 -0
- package/scripts/train/v2/generate_hard_negatives.py +219 -0
- package/scripts/train/v2/infer.py +149 -36
- package/scripts/train/v2/infer_server.py +224 -0
- package/scripts/train/v2/online_train.py +576 -0
- package/scripts/train/v2/precompute.py +24 -6
- package/template/CLAUDE.md +74 -132
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Tenet agents command - manage and monitor RL learning agents
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
import { RLManager } from '../lib/rl-manager.js';
|
|
7
|
+
import { getProjectRoot } from '../lib/ide-panes.js';
|
|
8
|
+
import { existsSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
export function createTenetAgentsCommand() {
|
|
11
|
+
const command = new Command('agents');
|
|
12
|
+
command
|
|
13
|
+
.description('Manage and monitor your RL learning agents')
|
|
14
|
+
.argument('[action]', 'status, dashboard, train, tune, feedback, or explain')
|
|
15
|
+
.option('--agent <name>', 'Target specific agent')
|
|
16
|
+
.option('--insight-id <id>', 'Insight ID for feedback')
|
|
17
|
+
.option('--feedback <type>', 'Feedback type: helpful, not_helpful, needs_adjustment')
|
|
18
|
+
.action(async (action, options) => {
|
|
19
|
+
await tenentAgentsCommand(action, options);
|
|
20
|
+
});
|
|
21
|
+
return command;
|
|
22
|
+
}
|
|
23
|
+
export async function tenentAgentsCommand(action, options = {}) {
|
|
24
|
+
const root = getProjectRoot();
|
|
25
|
+
const tenentDir = join(root, '.tenet');
|
|
26
|
+
// Check if advanced setup exists
|
|
27
|
+
if (!existsSync(tenentDir) || !existsSync(join(tenentDir, 'agents'))) {
|
|
28
|
+
console.log();
|
|
29
|
+
console.log(chalk.yellow('⚠️ RL agents not found'));
|
|
30
|
+
console.log();
|
|
31
|
+
console.log(chalk.bold('To set up RL agents:'));
|
|
32
|
+
console.log(chalk.cyan(' tenet setup --agents') + chalk.gray(' RL optimization agents only'));
|
|
33
|
+
console.log(chalk.cyan(' tenet setup --advanced') + chalk.gray(' Full platform with RL agents'));
|
|
34
|
+
console.log();
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const manager = new RLManager(root);
|
|
38
|
+
switch (action) {
|
|
39
|
+
case 'status':
|
|
40
|
+
await showAgentStatus(manager, options);
|
|
41
|
+
break;
|
|
42
|
+
case 'dashboard':
|
|
43
|
+
await manager.showDashboard();
|
|
44
|
+
break;
|
|
45
|
+
case 'train':
|
|
46
|
+
await triggerTraining(manager, options);
|
|
47
|
+
break;
|
|
48
|
+
case 'tune':
|
|
49
|
+
await tuneAgents(manager, options);
|
|
50
|
+
break;
|
|
51
|
+
case 'feedback':
|
|
52
|
+
await provideFeedback(manager, options);
|
|
53
|
+
break;
|
|
54
|
+
case 'explain':
|
|
55
|
+
await manager.explainLearning();
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
await manager.showDashboard();
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Show detailed agent status
|
|
64
|
+
*/
|
|
65
|
+
async function showAgentStatus(manager, options) {
|
|
66
|
+
console.log();
|
|
67
|
+
console.log(chalk.bold.cyan('🤖 Detailed Agent Status'));
|
|
68
|
+
console.log();
|
|
69
|
+
const agents = await manager.getAgentStatus();
|
|
70
|
+
if (options.agent) {
|
|
71
|
+
const agent = agents.find(a => a.name === options.agent);
|
|
72
|
+
if (agent) {
|
|
73
|
+
showDetailedAgentInfo(agent);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(chalk.yellow(`⚠️ Agent '${options.agent}' not found`));
|
|
77
|
+
console.log(chalk.gray('Available agents: ' + agents.map(a => a.name).join(', ')));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
for (const agent of agents) {
|
|
82
|
+
showDetailedAgentInfo(agent);
|
|
83
|
+
console.log();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Show detailed information for a single agent
|
|
89
|
+
*/
|
|
90
|
+
function showDetailedAgentInfo(agent) {
|
|
91
|
+
const statusIcon = getStatusIcon(agent.status);
|
|
92
|
+
const improvementColor = agent.improvement > 0 ? chalk.green : agent.improvement < 0 ? chalk.red : chalk.yellow;
|
|
93
|
+
console.log(`${statusIcon} ${chalk.bold(agent.name)}`);
|
|
94
|
+
console.log(chalk.gray(' ') + chalk.bold('Performance:'));
|
|
95
|
+
console.log(chalk.gray(` Current Score: ${agent.current_score.toFixed(3)}`));
|
|
96
|
+
console.log(chalk.gray(` Baseline: ${agent.baseline_score.toFixed(3)}`));
|
|
97
|
+
console.log(chalk.gray(` Improvement: `) + improvementColor(`${agent.improvement > 0 ? '+' : ''}${agent.improvement.toFixed(1)}%`));
|
|
98
|
+
console.log(chalk.gray(' ') + chalk.bold('Learning Status:'));
|
|
99
|
+
console.log(chalk.gray(` Status: ${agent.status}`));
|
|
100
|
+
console.log(chalk.gray(` Episodes: ${agent.training_episodes}`));
|
|
101
|
+
console.log(chalk.gray(` Confidence: ${(agent.confidence * 100).toFixed(1)}%`));
|
|
102
|
+
console.log(chalk.gray(` Learning Rate: ${agent.learning_rate.toFixed(4)}`));
|
|
103
|
+
if (agent.focus_areas.length > 0) {
|
|
104
|
+
console.log(chalk.gray(' ') + chalk.bold('Focus Areas:'));
|
|
105
|
+
for (const area of agent.focus_areas) {
|
|
106
|
+
console.log(chalk.gray(` • ${area}`));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (agent.recent_insights.length > 0) {
|
|
110
|
+
console.log(chalk.gray(' ') + chalk.bold('Recent Insights:'));
|
|
111
|
+
for (const insight of agent.recent_insights) {
|
|
112
|
+
console.log(chalk.cyan(` 💡 ${insight}`));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
console.log(chalk.gray(` Last Updated: ${new Date(agent.last_update).toLocaleString()}`));
|
|
116
|
+
console.log(chalk.gray(` Next Training: ${new Date(agent.next_training).toLocaleString()}`));
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Trigger agent training
|
|
120
|
+
*/
|
|
121
|
+
async function triggerTraining(manager, options) {
|
|
122
|
+
console.log();
|
|
123
|
+
console.log(chalk.cyan('🏋️ ') + 'Triggering agent training...');
|
|
124
|
+
if (options.agent) {
|
|
125
|
+
console.log(chalk.gray(` Training specific agent: ${options.agent}`));
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
console.log(chalk.gray(' Training all agents'));
|
|
129
|
+
}
|
|
130
|
+
// Simulate training process
|
|
131
|
+
console.log(chalk.yellow('⏳ Training in progress...'));
|
|
132
|
+
// This would trigger actual RL training
|
|
133
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
134
|
+
console.log(chalk.green('✅ Training complete!'));
|
|
135
|
+
console.log(chalk.gray(' Agents have been updated with latest patterns'));
|
|
136
|
+
console.log();
|
|
137
|
+
console.log(chalk.cyan(' View results: tenet agents status'));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Tune agent parameters
|
|
141
|
+
*/
|
|
142
|
+
async function tuneAgents(manager, options) {
|
|
143
|
+
console.log();
|
|
144
|
+
console.log(chalk.cyan('🎛️ ') + 'Agent Parameter Tuning');
|
|
145
|
+
console.log();
|
|
146
|
+
if (options.agent) {
|
|
147
|
+
console.log(chalk.bold(`Tuning ${options.agent}:`));
|
|
148
|
+
console.log(chalk.gray(' Learning rate: 0.001 → 0.0015 (increase exploration)'));
|
|
149
|
+
console.log(chalk.gray(' Batch size: 32 → 64 (improve stability)'));
|
|
150
|
+
console.log(chalk.gray(' Reward discount: 0.95 → 0.98 (longer-term focus)'));
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
console.log(chalk.bold('Auto-tuning all agents based on performance:'));
|
|
154
|
+
console.log(chalk.gray(' • Increasing learning rate for low-confidence agents'));
|
|
155
|
+
console.log(chalk.gray(' • Adjusting exploration for stuck agents'));
|
|
156
|
+
console.log(chalk.gray(' • Optimizing reward functions based on user patterns'));
|
|
157
|
+
}
|
|
158
|
+
console.log();
|
|
159
|
+
console.log(chalk.green('✅ Parameter tuning complete'));
|
|
160
|
+
console.log(chalk.gray(' Changes will take effect in next training cycle'));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Provide feedback on agent insights
|
|
164
|
+
*/
|
|
165
|
+
async function provideFeedback(manager, options) {
|
|
166
|
+
if (!options.insightId || !options.feedback) {
|
|
167
|
+
console.log();
|
|
168
|
+
console.log(chalk.yellow('⚠️ Feedback requires --insight-id and --feedback'));
|
|
169
|
+
console.log();
|
|
170
|
+
console.log(chalk.bold('Usage:'));
|
|
171
|
+
console.log(chalk.cyan(' tenet agents feedback --insight-id <id> --feedback helpful'));
|
|
172
|
+
console.log(chalk.cyan(' tenet agents feedback --insight-id <id> --feedback not_helpful'));
|
|
173
|
+
console.log(chalk.cyan(' tenet agents feedback --insight-id <id> --feedback needs_adjustment'));
|
|
174
|
+
console.log();
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
await manager.provideFeedback(options.insightId, options.feedback);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get status icon for agent display
|
|
181
|
+
*/
|
|
182
|
+
function getStatusIcon(status) {
|
|
183
|
+
const icons = {
|
|
184
|
+
'training': '🏋️',
|
|
185
|
+
'active': '🚀',
|
|
186
|
+
'improving': '📈',
|
|
187
|
+
'stable': '✅'
|
|
188
|
+
};
|
|
189
|
+
return icons[status] || '🤖';
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=tenet-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenet-agents.js","sourceRoot":"","sources":["../../src/commands/tenet-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Tenet setup command - progressive disclosure of advanced platform features
|
|
3
|
+
*
|
|
4
|
+
* Revealed through Discovery Agent after users are ready for advanced capabilities
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
export declare function createTenetSetupCommand(): Command;
|
|
8
|
+
interface SetupOptions {
|
|
9
|
+
basic?: boolean;
|
|
10
|
+
advanced?: boolean;
|
|
11
|
+
full?: boolean;
|
|
12
|
+
verification?: boolean;
|
|
13
|
+
agents?: boolean;
|
|
14
|
+
ci?: boolean;
|
|
15
|
+
monitoring?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function tenentSetupCommand(options: SetupOptions): Promise<void>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=tenet-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenet-setup.d.ts","sourceRoot":"","sources":["../../src/commands/tenet-setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,uBAAuB,IAAI,OAAO,CAiBjD;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,EAAE,CAAC,EAAE,OAAO,CAAA;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7E"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Tenet setup command - progressive disclosure of advanced platform features
|
|
3
|
+
*
|
|
4
|
+
* Revealed through Discovery Agent after users are ready for advanced capabilities
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { AdvancedSetup } from '../lib/advanced-setup.js';
|
|
9
|
+
import { Onboarding } from '../lib/onboarding.js';
|
|
10
|
+
import { getProjectRoot } from '../lib/ide-panes.js';
|
|
11
|
+
import { existsSync } from 'fs';
|
|
12
|
+
import { join } from 'path';
|
|
13
|
+
export function createTenetSetupCommand() {
|
|
14
|
+
const command = new Command('setup');
|
|
15
|
+
command
|
|
16
|
+
.description('Set up intelligent development platform features')
|
|
17
|
+
.option('--basic', 'Run basic onboarding only')
|
|
18
|
+
.option('--advanced', 'Set up RL agents, TLA+ verification, and CI automation')
|
|
19
|
+
.option('--full', 'Complete platform setup with all features')
|
|
20
|
+
.option('--verification', 'Include TLA+ formal verification')
|
|
21
|
+
.option('--agents', 'Include RL optimization agents')
|
|
22
|
+
.option('--ci', 'Include CI pipeline automation')
|
|
23
|
+
.option('--monitoring', 'Include advanced monitoring')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
await tenentSetupCommand(options);
|
|
26
|
+
});
|
|
27
|
+
return command;
|
|
28
|
+
}
|
|
29
|
+
export async function tenentSetupCommand(options) {
|
|
30
|
+
const root = getProjectRoot();
|
|
31
|
+
const tenentDir = join(root, '.tenet');
|
|
32
|
+
console.log();
|
|
33
|
+
console.log(chalk.bold.cyan('🚀 Tenet Platform Setup'));
|
|
34
|
+
console.log();
|
|
35
|
+
// Check what level of setup to perform
|
|
36
|
+
if (options.basic || (!options.advanced && !options.full && !options.verification && !options.agents && !options.ci && !options.monitoring && !existsSync(tenentDir))) {
|
|
37
|
+
await runBasicSetup(root);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (options.advanced || options.full || options.verification || options.agents || options.ci || options.monitoring) {
|
|
41
|
+
await runAdvancedSetup(root, options);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
// Default: show setup options
|
|
45
|
+
await showSetupOptions(root);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Run basic onboarding setup
|
|
49
|
+
*/
|
|
50
|
+
async function runBasicSetup(projectRoot) {
|
|
51
|
+
console.log(chalk.cyan('📋 ') + 'Running basic intelligent development setup...');
|
|
52
|
+
console.log();
|
|
53
|
+
const onboarding = new Onboarding(projectRoot);
|
|
54
|
+
const success = await onboarding.createWorkspace();
|
|
55
|
+
if (success) {
|
|
56
|
+
console.log(chalk.green('✅ ') + 'Basic setup complete!');
|
|
57
|
+
console.log(chalk.gray(' AI assistants are now learning your project patterns'));
|
|
58
|
+
console.log();
|
|
59
|
+
console.log(chalk.bold('Next steps:'));
|
|
60
|
+
console.log(chalk.cyan(' jfl ide launch') + chalk.gray(' - Open intelligent development environment'));
|
|
61
|
+
console.log(chalk.cyan(' tenet setup --advanced') + chalk.gray(' - Unlock more features when ready'));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log(chalk.yellow('⚠️ ') + 'Setup encountered issues');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Run advanced platform setup
|
|
69
|
+
*/
|
|
70
|
+
async function runAdvancedSetup(projectRoot, options) {
|
|
71
|
+
const tenentDir = join(projectRoot, '.tenet');
|
|
72
|
+
// Ensure basic setup exists
|
|
73
|
+
if (!existsSync(tenentDir)) {
|
|
74
|
+
console.log(chalk.yellow('⚠️ ') + 'Basic setup not found. Running basic setup first...');
|
|
75
|
+
console.log();
|
|
76
|
+
await runBasicSetup(projectRoot);
|
|
77
|
+
console.log();
|
|
78
|
+
}
|
|
79
|
+
// Configure advanced features
|
|
80
|
+
const advancedOptions = {
|
|
81
|
+
includeVerification: options.full || options.verification,
|
|
82
|
+
includeRLAgents: options.full || options.agents,
|
|
83
|
+
includeCIPipeline: options.full || options.ci,
|
|
84
|
+
includeMonitoring: options.full || options.monitoring
|
|
85
|
+
};
|
|
86
|
+
// If no specific features chosen for --advanced, enable all
|
|
87
|
+
if (options.advanced && !Object.values(advancedOptions).some(Boolean)) {
|
|
88
|
+
advancedOptions.includeVerification = true;
|
|
89
|
+
advancedOptions.includeRLAgents = true;
|
|
90
|
+
advancedOptions.includeCIPipeline = true;
|
|
91
|
+
advancedOptions.includeMonitoring = true;
|
|
92
|
+
}
|
|
93
|
+
const setup = new AdvancedSetup(projectRoot);
|
|
94
|
+
await setup.run(advancedOptions);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Show available setup options
|
|
98
|
+
*/
|
|
99
|
+
async function showSetupOptions(projectRoot) {
|
|
100
|
+
const tenentDir = join(projectRoot, '.tenet');
|
|
101
|
+
const hasBasicSetup = existsSync(tenentDir);
|
|
102
|
+
if (!hasBasicSetup) {
|
|
103
|
+
console.log(chalk.cyan('📋 ') + 'Available setup options:');
|
|
104
|
+
console.log();
|
|
105
|
+
console.log(chalk.bold('Basic Setup (recommended first):'));
|
|
106
|
+
console.log(chalk.cyan(' tenet setup --basic') + chalk.gray(' Smart IDE with AI assistants'));
|
|
107
|
+
console.log();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(chalk.green('✅ ') + 'Basic setup already complete');
|
|
111
|
+
console.log();
|
|
112
|
+
}
|
|
113
|
+
console.log(chalk.bold('Advanced Features:'));
|
|
114
|
+
console.log(chalk.cyan(' tenet setup --advanced') + chalk.gray(' Full platform with RL agents, TLA+, CI'));
|
|
115
|
+
console.log(chalk.cyan(' tenet setup --verification') + chalk.gray(' TLA+ formal verification only'));
|
|
116
|
+
console.log(chalk.cyan(' tenet setup --agents') + chalk.gray(' RL optimization agents only'));
|
|
117
|
+
console.log(chalk.cyan(' tenet setup --ci') + chalk.gray(' CI automation pipeline only'));
|
|
118
|
+
console.log(chalk.cyan(' tenet setup --full') + chalk.gray(' Everything (same as --advanced)'));
|
|
119
|
+
console.log();
|
|
120
|
+
if (hasBasicSetup) {
|
|
121
|
+
console.log(chalk.bold('Progressive Disclosure:'));
|
|
122
|
+
console.log(chalk.gray(' These features will be suggested automatically as you use the system'));
|
|
123
|
+
console.log(chalk.gray(' The Discovery Agent learns when you\'re ready for more capabilities'));
|
|
124
|
+
}
|
|
125
|
+
console.log();
|
|
126
|
+
console.log(chalk.bold('Get started:'));
|
|
127
|
+
console.log(chalk.cyan(' tenet setup --basic') + chalk.gray(' (if you haven\'t already)'));
|
|
128
|
+
console.log(chalk.cyan(' jfl ide launch') + chalk.gray(' (start developing)'));
|
|
129
|
+
console.log(chalk.cyan(' tenet setup --advanced') + chalk.gray(' (when ready for full power)'));
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=tenet-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenet-setup.js","sourceRoot":"","sources":["../../src/commands/tenet-setup.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/train.d.ts
CHANGED
|
@@ -29,5 +29,23 @@ export declare function trainExport(options: {
|
|
|
29
29
|
export declare function trainThresholdCheck(options: {
|
|
30
30
|
quiet?: boolean;
|
|
31
31
|
}): Promise<boolean>;
|
|
32
|
+
export declare function trainOnline(options: {
|
|
33
|
+
newData?: string;
|
|
34
|
+
epochs?: string;
|
|
35
|
+
lr?: string;
|
|
36
|
+
replayRatio?: string;
|
|
37
|
+
degradationThreshold?: string;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
export declare function trainCounterfactual(options: {
|
|
40
|
+
since?: string;
|
|
41
|
+
ratio?: string;
|
|
42
|
+
dryRun?: boolean;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
export declare function trainBenchmark(options: {
|
|
45
|
+
generate?: boolean;
|
|
46
|
+
difficulty?: string;
|
|
47
|
+
category?: string;
|
|
48
|
+
json?: boolean;
|
|
49
|
+
}): Promise<void>;
|
|
32
50
|
export declare function registerTrainCommands(parent: Command): void;
|
|
33
51
|
//# sourceMappingURL=train.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/commands/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoIxC,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/commands/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoIxC,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,OAAO,CAAA;CACb,GAAG,OAAO,CAAC,IAAI,CAAC,CAgJhB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqD9E;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B7G;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC1E;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CA2EjD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B7E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAaxF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAuG3D"}
|
package/dist/commands/train.js
CHANGED
|
@@ -189,13 +189,36 @@ export async function trainPolicyHead(options) {
|
|
|
189
189
|
console.log(chalk.yellow("\n No v2 training data found. Running transform first..."));
|
|
190
190
|
await trainTransform({});
|
|
191
191
|
}
|
|
192
|
+
// Auto-precompute embeddings if cache is missing or stale
|
|
193
|
+
const embeddingCache = join(dataDir, "embeddings_cache.npz");
|
|
194
|
+
const precomputeScript = join(__dirname, "..", "..", "scripts", "train", "v2", "precompute.py");
|
|
195
|
+
if (existsSync(precomputeScript)) {
|
|
196
|
+
const needsPrecompute = !existsSync(embeddingCache);
|
|
197
|
+
if (needsPrecompute) {
|
|
198
|
+
console.log(chalk.gray(" Precomputing embeddings (Stratus)..."));
|
|
199
|
+
const pcResult = spawnSync(pythonBin, [precomputeScript, "--data-dir", dataDir], {
|
|
200
|
+
cwd: projectRoot,
|
|
201
|
+
encoding: "utf-8",
|
|
202
|
+
stdio: "inherit",
|
|
203
|
+
timeout: 10 * 60 * 1000,
|
|
204
|
+
env: { ...process.env },
|
|
205
|
+
});
|
|
206
|
+
if (pcResult.status !== 0) {
|
|
207
|
+
console.log(chalk.red(" Embedding precompute failed — training may use zero vectors"));
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
192
211
|
const trainScript = join(__dirname, "..", "..", "scripts", "train", "v2", "train.py");
|
|
193
212
|
if (!existsSync(trainScript)) {
|
|
194
213
|
console.log(chalk.red(`\n v2 training script not found: ${trainScript}`));
|
|
195
214
|
return;
|
|
196
215
|
}
|
|
216
|
+
// Pass domain.json path if it exists (for tool definitions)
|
|
217
|
+
const domainPath = join(__dirname, "..", "..", "scripts", "train", "v2", "domain.json");
|
|
197
218
|
const outputDir = join(projectRoot, ".jfl", "checkpoints");
|
|
198
219
|
const args = [trainScript, "--data-dir", dataDir, "--output-dir", outputDir];
|
|
220
|
+
if (existsSync(domainPath))
|
|
221
|
+
args.push("--domain", domainPath);
|
|
199
222
|
if (options.epochs)
|
|
200
223
|
args.push("--epochs", options.epochs);
|
|
201
224
|
if (options.lr)
|
|
@@ -443,6 +466,135 @@ export async function trainThresholdCheck(options) {
|
|
|
443
466
|
}
|
|
444
467
|
return threshold.ready;
|
|
445
468
|
}
|
|
469
|
+
export async function trainOnline(options) {
|
|
470
|
+
const projectRoot = findProjectRoot();
|
|
471
|
+
const v2Dir = join(projectRoot, "scripts", "train", "v2");
|
|
472
|
+
const onlineScript = join(v2Dir, "online_train.py");
|
|
473
|
+
if (!existsSync(onlineScript)) {
|
|
474
|
+
console.log(chalk.red(` Online training script not found: ${onlineScript}`));
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
// Find checkpoint
|
|
478
|
+
const checkpointDir = join(projectRoot, ".jfl", "checkpoints");
|
|
479
|
+
const checkpointPath = join(checkpointDir, "best_policy_head.pt");
|
|
480
|
+
if (!existsSync(checkpointPath)) {
|
|
481
|
+
console.log(chalk.yellow(" No pre-trained checkpoint found."));
|
|
482
|
+
console.log(chalk.gray(" Run offline training first: jfl train policy-head"));
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
const dataDir = join(projectRoot, ".jfl", "v2-data");
|
|
486
|
+
console.log(chalk.bold("\n Online Fine-Tuning (Experience Replay)\n"));
|
|
487
|
+
console.log(chalk.gray(" Drew's architecture: 70% historical + 30% new, lr=1e-5, rollback on degradation\n"));
|
|
488
|
+
const args = [
|
|
489
|
+
onlineScript,
|
|
490
|
+
"--checkpoint", checkpointPath,
|
|
491
|
+
"--data-dir", dataDir,
|
|
492
|
+
"--output-dir", checkpointDir,
|
|
493
|
+
];
|
|
494
|
+
if (options.newData)
|
|
495
|
+
args.push("--new-data", options.newData);
|
|
496
|
+
if (options.epochs)
|
|
497
|
+
args.push("--epochs", options.epochs);
|
|
498
|
+
if (options.lr)
|
|
499
|
+
args.push("--lr", options.lr);
|
|
500
|
+
if (options.replayRatio)
|
|
501
|
+
args.push("--replay-ratio", options.replayRatio);
|
|
502
|
+
if (options.degradationThreshold)
|
|
503
|
+
args.push("--degradation-threshold", options.degradationThreshold);
|
|
504
|
+
const pythonBin = findPython();
|
|
505
|
+
const result = spawnSync(pythonBin, args, {
|
|
506
|
+
cwd: v2Dir,
|
|
507
|
+
stdio: "inherit",
|
|
508
|
+
env: {
|
|
509
|
+
...process.env,
|
|
510
|
+
PYTHONPATH: v2Dir,
|
|
511
|
+
},
|
|
512
|
+
});
|
|
513
|
+
if (result.status !== 0) {
|
|
514
|
+
console.log(chalk.red(`\n Online training failed (exit ${result.status})`));
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
export async function trainCounterfactual(options) {
|
|
518
|
+
const { createCounterfactualBridge } = await import("../lib/counterfactual-training-bridge.js");
|
|
519
|
+
const projectRoot = findProjectRoot();
|
|
520
|
+
const ratio = options.ratio ? parseFloat(options.ratio) : 0.3;
|
|
521
|
+
const bridge = createCounterfactualBridge(projectRoot, {
|
|
522
|
+
syntheticRatio: ratio,
|
|
523
|
+
});
|
|
524
|
+
// Show current stats
|
|
525
|
+
const stats = bridge.getBufferStats();
|
|
526
|
+
console.log(chalk.bold("\n Counterfactual → Training Buffer Bridge\n"));
|
|
527
|
+
console.log(chalk.gray(` Current buffer: ${stats.total} entries (${stats.real} real, ${stats.synthetic} synthetic)`));
|
|
528
|
+
console.log(chalk.gray(` Current ratio: ${(stats.ratio * 100).toFixed(1)}% synthetic (target: ${(stats.targetRatio * 100).toFixed(1)}%)`));
|
|
529
|
+
console.log(chalk.gray(` Needs more synthetic: ${stats.needsMore ? "YES" : "no"}`));
|
|
530
|
+
console.log();
|
|
531
|
+
if (options.dryRun) {
|
|
532
|
+
console.log(chalk.yellow(" Dry run — no data will be written\n"));
|
|
533
|
+
return;
|
|
534
|
+
}
|
|
535
|
+
const since = options.since ? Date.now() - (parseFloat(options.since) * 3600000) : undefined;
|
|
536
|
+
console.log(chalk.gray(" Processing counterfactuals..."));
|
|
537
|
+
const result = await bridge.run(since);
|
|
538
|
+
console.log(chalk.bold("\n Results:\n"));
|
|
539
|
+
console.log(` Counterfactuals processed: ${result.counterfactualsProcessed}`);
|
|
540
|
+
console.log(` Passed quality filters: ${result.passedFilters}`);
|
|
541
|
+
console.log(` Tuples added to buffer: ${chalk.green(String(result.tuplesAdded))}`);
|
|
542
|
+
console.log(` Duplicates skipped: ${result.duplicatesSkipped}`);
|
|
543
|
+
console.log();
|
|
544
|
+
console.log(chalk.bold(" Buffer composition:"));
|
|
545
|
+
console.log(` Total: ${result.bufferComposition.totalEntries}`);
|
|
546
|
+
console.log(` Real: ${result.bufferComposition.realEntries}`);
|
|
547
|
+
console.log(` Synthetic: ${result.bufferComposition.syntheticEntries}`);
|
|
548
|
+
console.log(` Ratio: ${(result.bufferComposition.syntheticRatio * 100).toFixed(1)}% synthetic (target: ${(result.bufferComposition.targetRatio * 100).toFixed(1)}%)`);
|
|
549
|
+
if (result.v2FilesGenerated.length > 0) {
|
|
550
|
+
console.log();
|
|
551
|
+
console.log(chalk.bold(" V2 format files:"));
|
|
552
|
+
for (const f of result.v2FilesGenerated) {
|
|
553
|
+
console.log(` ${f}`);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
console.log();
|
|
557
|
+
}
|
|
558
|
+
export async function trainBenchmark(options) {
|
|
559
|
+
const projectRoot = findProjectRoot();
|
|
560
|
+
const v2Dir = join(projectRoot, "scripts", "train", "v2");
|
|
561
|
+
const benchmarkScript = join(v2Dir, "benchmark.py");
|
|
562
|
+
if (!existsSync(benchmarkScript)) {
|
|
563
|
+
console.log(chalk.red(` Benchmark script not found: ${benchmarkScript}`));
|
|
564
|
+
return;
|
|
565
|
+
}
|
|
566
|
+
console.log(chalk.bold("\n PolicyHead Benchmark Scenarios\n"));
|
|
567
|
+
const args = [benchmarkScript];
|
|
568
|
+
if (options.generate) {
|
|
569
|
+
const outputPath = join(projectRoot, ".jfl", "v2-data", "benchmark.jsonl");
|
|
570
|
+
args.push("--generate", "--output", outputPath);
|
|
571
|
+
console.log(chalk.gray(" Generating benchmark.jsonl for offline eval...\n"));
|
|
572
|
+
}
|
|
573
|
+
else {
|
|
574
|
+
const checkpointPath = join(projectRoot, ".jfl", "checkpoints", "best_policy_head.pt");
|
|
575
|
+
if (existsSync(checkpointPath)) {
|
|
576
|
+
args.push("--checkpoint", checkpointPath);
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
if (options.difficulty)
|
|
580
|
+
args.push("--difficulty", options.difficulty);
|
|
581
|
+
if (options.category)
|
|
582
|
+
args.push("--category", options.category);
|
|
583
|
+
if (options.json)
|
|
584
|
+
args.push("--json");
|
|
585
|
+
const pythonBin = findPython();
|
|
586
|
+
const result = spawnSync(pythonBin, args, {
|
|
587
|
+
cwd: v2Dir,
|
|
588
|
+
stdio: "inherit",
|
|
589
|
+
env: {
|
|
590
|
+
...process.env,
|
|
591
|
+
PYTHONPATH: v2Dir,
|
|
592
|
+
},
|
|
593
|
+
});
|
|
594
|
+
if (result.status !== 0) {
|
|
595
|
+
console.log(chalk.red(`\n Benchmark failed (exit ${result.status})`));
|
|
596
|
+
}
|
|
597
|
+
}
|
|
446
598
|
export function registerTrainCommands(parent) {
|
|
447
599
|
const train = parent.command("train").description("Policy head training pipeline");
|
|
448
600
|
train
|
|
@@ -503,6 +655,36 @@ export function registerTrainCommands(parent) {
|
|
|
503
655
|
if (!ready)
|
|
504
656
|
process.exitCode = 1;
|
|
505
657
|
});
|
|
658
|
+
train
|
|
659
|
+
.command("online")
|
|
660
|
+
.description("Online fine-tuning with experience replay (70% historical + 30% new)")
|
|
661
|
+
.option("--new-data <path>", "Path to new training data JSONL")
|
|
662
|
+
.option("--epochs <n>", "Max fine-tuning epochs (default: 10)")
|
|
663
|
+
.option("--lr <rate>", "Learning rate (default: 1e-5)")
|
|
664
|
+
.option("--replay-ratio <r>", "Fraction of batch that is new data (default: 0.3)")
|
|
665
|
+
.option("--degradation-threshold <t>", "Rollback if val accuracy drops more than this (default: 0.10)")
|
|
666
|
+
.action(async (options) => {
|
|
667
|
+
await trainOnline(options);
|
|
668
|
+
});
|
|
669
|
+
train
|
|
670
|
+
.command("counterfactual")
|
|
671
|
+
.description("Generate synthetic training data from counterfactual scenarios (70/30 mix)")
|
|
672
|
+
.option("--since <hours>", "Only process counterfactuals from last N hours")
|
|
673
|
+
.option("--ratio <r>", "Target synthetic ratio (default: 0.3)")
|
|
674
|
+
.option("--dry-run", "Show what would be generated without writing")
|
|
675
|
+
.action(async (options) => {
|
|
676
|
+
await trainCounterfactual(options);
|
|
677
|
+
});
|
|
678
|
+
train
|
|
679
|
+
.command("benchmark")
|
|
680
|
+
.description("Run benchmark scenarios — synthetic eval for rapid PolicyHead iteration")
|
|
681
|
+
.option("--generate", "Generate benchmark.jsonl for offline eval (no checkpoint needed)")
|
|
682
|
+
.option("--difficulty <level>", "Filter by difficulty: easy/medium/hard")
|
|
683
|
+
.option("--category <cat>", "Filter by category: diagnostic/recovery/optimization")
|
|
684
|
+
.option("--json", "Output results as JSON")
|
|
685
|
+
.action(async (options) => {
|
|
686
|
+
await trainBenchmark(options);
|
|
687
|
+
});
|
|
506
688
|
train.action(async () => {
|
|
507
689
|
await trainStatus();
|
|
508
690
|
});
|