jfl 0.8.1 โ 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -4
- package/dist/commands/digest.d.ts +6 -0
- package/dist/commands/digest.d.ts.map +1 -1
- package/dist/commands/digest.js +70 -69
- package/dist/commands/digest.js.map +1 -1
- 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/eval.d.ts +40 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +8 -8
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/findings.d.ts +7 -0
- package/dist/commands/findings.d.ts.map +1 -1
- package/dist/commands/findings.js +4 -4
- package/dist/commands/findings.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 +61 -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/portfolio.d.ts +5 -0
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +193 -203
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/predict.d.ts +19 -0
- package/dist/commands/predict.d.ts.map +1 -1
- package/dist/commands/predict.js +4 -4
- package/dist/commands/predict.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 +279 -20
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.d.ts +25 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +191 -0
- package/dist/commands/start.js.map +1 -0
- 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 +20 -0
- package/dist/commands/tenet-setup.d.ts.map +1 -0
- package/dist/commands/tenet-setup.js +135 -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/viz.d.ts +33 -0
- package/dist/commands/viz.d.ts.map +1 -1
- package/dist/commands/viz.js +9 -9
- package/dist/commands/viz.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 +230 -30
- 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 +59 -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 +245 -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/setup/starter-intelligence.d.ts +25 -0
- package/dist/lib/setup/starter-intelligence.d.ts.map +1 -0
- package/dist/lib/setup/starter-intelligence.js +309 -0
- package/dist/lib/setup/starter-intelligence.js.map +1 -0
- 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 +9 -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 +94 -0
- package/dist/lib/workspace/surfaces/sidebar.js.map +1 -0
- package/dist/lib/workspace/tmux-adapter.d.ts +8 -5
- package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -1
- package/dist/lib/workspace/tmux-adapter.js +38 -7
- package/dist/lib/workspace/tmux-adapter.js.map +1 -1
- package/dist/lib/workspace/tmux-sidebar.d.ts +14 -0
- package/dist/lib/workspace/tmux-sidebar.d.ts.map +1 -0
- package/dist/lib/workspace/tmux-sidebar.js +230 -0
- package/dist/lib/workspace/tmux-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/dist/utils/jfl-config.d.ts +7 -2
- package/dist/utils/jfl-config.d.ts.map +1 -1
- package/dist/utils/jfl-config.js +14 -4
- package/dist/utils/jfl-config.js.map +1 -1
- package/package.json +3 -2
- package/packages/pi/extensions/context.ts +51 -1
- package/packages/pi/extensions/hub-tools.ts +247 -0
- package/packages/pi/extensions/index.ts +38 -6
- package/packages/pi/extensions/memory-tool.ts +84 -4
- package/packages/pi/extensions/service-skills.ts +214 -0
- 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
|
+
* jfl start โ One-command activation
|
|
3
|
+
*
|
|
4
|
+
* Chains: init โ setup โ launch (Claude Code or Pi)
|
|
5
|
+
* New user goes from zero to working self-driving loop in <2 minutes.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* jfl start # Interactive โ creates GTM in current dir or new dir
|
|
9
|
+
* jfl start ./my-project # Create GTM workspace at path
|
|
10
|
+
* jfl start --repo ./my-app # Analyze existing repo, create sibling GTM
|
|
11
|
+
* jfl start --pi # Launch Pi instead of Claude Code
|
|
12
|
+
* jfl start --ci # Also deploy CI workflows
|
|
13
|
+
*
|
|
14
|
+
* @purpose One-command activation: zero โ working intelligence in <2 minutes
|
|
15
|
+
*/
|
|
16
|
+
import chalk from "chalk";
|
|
17
|
+
import { existsSync, readFileSync } from "fs";
|
|
18
|
+
import { join, resolve, basename } from "path";
|
|
19
|
+
import { execSync, spawn } from "child_process";
|
|
20
|
+
export async function startCommand(nameOrPath, options = {}) {
|
|
21
|
+
const cwd = process.cwd();
|
|
22
|
+
console.log();
|
|
23
|
+
console.log(chalk.bold.hex("#00FF88")(" โก JFL Start"));
|
|
24
|
+
console.log(chalk.gray(" Zero โ working intelligence in one command"));
|
|
25
|
+
console.log();
|
|
26
|
+
// โโโ Step 1: Init โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
27
|
+
let projectPath;
|
|
28
|
+
// Check if we're already in a JFL project
|
|
29
|
+
const existingConfig = join(cwd, ".jfl", "config.json");
|
|
30
|
+
if (existsSync(existingConfig)) {
|
|
31
|
+
projectPath = cwd;
|
|
32
|
+
console.log(chalk.cyan(" โ") + chalk.gray(` Existing project: ${basename(projectPath)}`));
|
|
33
|
+
}
|
|
34
|
+
else if (options.repo) {
|
|
35
|
+
// Create GTM from existing service repo
|
|
36
|
+
const repoPath = resolve(options.repo);
|
|
37
|
+
console.log(chalk.cyan(" โ") + ` Analyzing ${basename(repoPath)} and creating GTM...`);
|
|
38
|
+
try {
|
|
39
|
+
execSync(`jfl init --from-service --non-interactive`, {
|
|
40
|
+
cwd: repoPath,
|
|
41
|
+
stdio: "inherit",
|
|
42
|
+
timeout: 120000,
|
|
43
|
+
});
|
|
44
|
+
// Find the created GTM directory (sibling to the repo)
|
|
45
|
+
const parentDir = join(repoPath, "..");
|
|
46
|
+
const repoName = basename(repoPath);
|
|
47
|
+
const gtmCandidates = [
|
|
48
|
+
join(parentDir, `${repoName}-gtm`),
|
|
49
|
+
join(parentDir, `${repoName}`),
|
|
50
|
+
];
|
|
51
|
+
projectPath = gtmCandidates.find(p => existsSync(join(p, ".jfl", "config.json"))) || repoPath;
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
console.log(chalk.red(` โ Init from service failed: ${err.message}`));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else if (nameOrPath) {
|
|
59
|
+
// Create new GTM workspace
|
|
60
|
+
const targetPath = resolve(nameOrPath);
|
|
61
|
+
if (existsSync(join(targetPath, ".jfl", "config.json"))) {
|
|
62
|
+
projectPath = targetPath;
|
|
63
|
+
console.log(chalk.cyan(" โ") + chalk.gray(` Existing project: ${basename(projectPath)}`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
console.log(chalk.cyan(" โ") + ` Creating workspace: ${nameOrPath}`);
|
|
67
|
+
try {
|
|
68
|
+
const args = [
|
|
69
|
+
"init", nameOrPath,
|
|
70
|
+
"--non-interactive",
|
|
71
|
+
...(options.ci ? ["--ci"] : []),
|
|
72
|
+
...(options.service?.map(s => `--service=${s}`) ?? []),
|
|
73
|
+
];
|
|
74
|
+
execSync(`jfl ${args.join(" ")}`, {
|
|
75
|
+
cwd,
|
|
76
|
+
stdio: "inherit",
|
|
77
|
+
timeout: 120000,
|
|
78
|
+
});
|
|
79
|
+
projectPath = resolve(cwd, nameOrPath);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
console.log(chalk.red(` โ Init failed: ${err.message}`));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Interactive: create in current directory
|
|
89
|
+
console.log(chalk.cyan(" โ") + " Creating workspace in current directory...");
|
|
90
|
+
try {
|
|
91
|
+
execSync("jfl init --non-interactive", {
|
|
92
|
+
cwd,
|
|
93
|
+
stdio: "inherit",
|
|
94
|
+
timeout: 120000,
|
|
95
|
+
});
|
|
96
|
+
projectPath = cwd;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
console.log(chalk.red(` โ Init failed: ${err.message}`));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// โโโ Step 2: Setup (with starter intelligence) โโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
104
|
+
console.log();
|
|
105
|
+
console.log(chalk.cyan(" โ") + " Configuring intelligence...");
|
|
106
|
+
try {
|
|
107
|
+
execSync("jfl setup --force", {
|
|
108
|
+
cwd: projectPath,
|
|
109
|
+
stdio: "inherit",
|
|
110
|
+
timeout: 120000,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.log(chalk.yellow(` โ Setup had issues: ${err.message}`));
|
|
115
|
+
console.log(chalk.gray(" You can re-run: jfl setup"));
|
|
116
|
+
}
|
|
117
|
+
// โโโ Step 3: Deploy CI (if requested) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
118
|
+
if (options.ci) {
|
|
119
|
+
console.log();
|
|
120
|
+
console.log(chalk.cyan(" โ") + " Deploying CI workflows...");
|
|
121
|
+
try {
|
|
122
|
+
execSync("jfl ci setup", {
|
|
123
|
+
cwd: projectPath,
|
|
124
|
+
stdio: "inherit",
|
|
125
|
+
timeout: 60000,
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
console.log(chalk.gray(" CI setup skipped โ run manually: jfl ci setup"));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
// โโโ Step 4: Show what's ready โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
133
|
+
console.log();
|
|
134
|
+
console.log(chalk.bold.hex("#00FF88")(" โ
Intelligence active"));
|
|
135
|
+
console.log();
|
|
136
|
+
// Read what was created
|
|
137
|
+
const configPath = join(projectPath, ".jfl", "config.json");
|
|
138
|
+
let projectName = basename(projectPath);
|
|
139
|
+
if (existsSync(configPath)) {
|
|
140
|
+
try {
|
|
141
|
+
projectName = JSON.parse(readFileSync(configPath, "utf-8")).name || projectName;
|
|
142
|
+
}
|
|
143
|
+
catch { }
|
|
144
|
+
}
|
|
145
|
+
const hasEvals = existsSync(join(projectPath, ".jfl", "eval"));
|
|
146
|
+
const hasAgents = existsSync(join(projectPath, ".jfl", "agents"));
|
|
147
|
+
const hasFlows = existsSync(join(projectPath, ".jfl", "flows", "self-driving.yaml"));
|
|
148
|
+
const hasSpec = existsSync(join(projectPath, ".jfl", "specs"));
|
|
149
|
+
console.log(chalk.gray(" What's running:"));
|
|
150
|
+
if (hasEvals)
|
|
151
|
+
console.log(chalk.green(" โ") + " Eval scripts โ measuring project health");
|
|
152
|
+
if (hasAgents)
|
|
153
|
+
console.log(chalk.green(" โ") + " RL agents โ learning from your actions");
|
|
154
|
+
if (hasFlows)
|
|
155
|
+
console.log(chalk.green(" โ") + " Self-driving loop โ issues โ PRs โ auto-merge");
|
|
156
|
+
if (hasSpec)
|
|
157
|
+
console.log(chalk.green(" โ") + " TLA+ verification โ formal safety guarantees");
|
|
158
|
+
console.log(chalk.green(" โ") + " Context Hub โ aggregating intelligence");
|
|
159
|
+
console.log();
|
|
160
|
+
// โโโ Step 5: Launch โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
161
|
+
if (options.noLaunch) {
|
|
162
|
+
console.log(chalk.gray(` Start manually: cd ${projectPath} && ${options.pi ? "pi" : "claude"}`));
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
if (options.pi) {
|
|
166
|
+
console.log(chalk.hex("#FFA500")(" ๐ Launching Pi..."));
|
|
167
|
+
console.log();
|
|
168
|
+
const pi = spawn("pi", [], {
|
|
169
|
+
cwd: projectPath,
|
|
170
|
+
stdio: "inherit",
|
|
171
|
+
shell: true,
|
|
172
|
+
});
|
|
173
|
+
pi.on("error", () => {
|
|
174
|
+
console.log(chalk.red(" Pi not found. Install: npm install -g @mariozechner/pi-coding-agent"));
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
console.log(chalk.hex("#FFA500")(" ๐ Launching Claude Code..."));
|
|
179
|
+
console.log(chalk.gray(" (use --pi to launch Pi instead)"));
|
|
180
|
+
console.log();
|
|
181
|
+
const claude = spawn("claude", ["--dangerously-skip-permissions"], {
|
|
182
|
+
cwd: projectPath,
|
|
183
|
+
stdio: "inherit",
|
|
184
|
+
shell: true,
|
|
185
|
+
});
|
|
186
|
+
claude.on("error", () => {
|
|
187
|
+
console.log(chalk.red(" Claude Code not found. Install: npm install -g @anthropic-ai/claude-code"));
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Real-time physical-world telemetry monitoring command
|
|
3
|
+
* Live dashboard showing physical-world data being collected
|
|
4
|
+
*/
|
|
5
|
+
export declare function telemetryMonitorCommand(options: {
|
|
6
|
+
live?: boolean;
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
interval?: string;
|
|
9
|
+
filter?: string;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=telemetry-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-monitor.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry-monitor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqCH,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACrD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Real-time physical-world telemetry monitoring command
|
|
3
|
+
* Live dashboard showing physical-world data being collected
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { readFileSync, existsSync } from 'fs';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
import { homedir } from 'os';
|
|
9
|
+
export async function telemetryMonitorCommand(options) {
|
|
10
|
+
const interval = parseInt(options.interval || '5') * 1000;
|
|
11
|
+
const isLive = options.live || false;
|
|
12
|
+
const isCompact = options.compact || false;
|
|
13
|
+
console.log(chalk.cyan('๐ Physical-World Telemetry Monitor'));
|
|
14
|
+
console.log(chalk.gray(`Interval: ${interval / 1000}s | Live: ${isLive} | Filter: ${options.filter || 'all'}`));
|
|
15
|
+
console.log();
|
|
16
|
+
if (isLive) {
|
|
17
|
+
await startLiveMonitoring(interval, isCompact, options.filter);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
await showCurrentSnapshot(isCompact, options.filter);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function startLiveMonitoring(interval, compact, filter) {
|
|
24
|
+
let stats = {
|
|
25
|
+
totalEvents: 0,
|
|
26
|
+
physicalWorldEvents: 0,
|
|
27
|
+
lastUpdate: new Date(),
|
|
28
|
+
thermalStates: {},
|
|
29
|
+
gitBranches: {}
|
|
30
|
+
};
|
|
31
|
+
const updateDisplay = () => {
|
|
32
|
+
const newStats = analyzeTelemetryData(filter);
|
|
33
|
+
if (newStats) {
|
|
34
|
+
stats = newStats;
|
|
35
|
+
clearScreen();
|
|
36
|
+
displayStats(stats, compact);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
// Initial display
|
|
40
|
+
updateDisplay();
|
|
41
|
+
// Live updates
|
|
42
|
+
const updateInterval = setInterval(updateDisplay, interval);
|
|
43
|
+
// Watch for file changes (if telemetry files exist)
|
|
44
|
+
const telemetryDir = join(process.cwd(), '.jfl', 'telemetry');
|
|
45
|
+
if (existsSync(telemetryDir)) {
|
|
46
|
+
console.log(chalk.gray(`Watching ${telemetryDir} for changes...`));
|
|
47
|
+
}
|
|
48
|
+
// Handle Ctrl+C gracefully
|
|
49
|
+
process.on('SIGINT', () => {
|
|
50
|
+
clearInterval(updateInterval);
|
|
51
|
+
console.log(chalk.yellow('\n๐ Monitoring stopped'));
|
|
52
|
+
process.exit(0);
|
|
53
|
+
});
|
|
54
|
+
console.log(chalk.gray('Press Ctrl+C to stop monitoring'));
|
|
55
|
+
}
|
|
56
|
+
async function showCurrentSnapshot(compact, filter) {
|
|
57
|
+
const stats = analyzeTelemetryData(filter);
|
|
58
|
+
if (stats) {
|
|
59
|
+
displayStats(stats, compact);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log(chalk.yellow('โ ๏ธ No telemetry data found'));
|
|
63
|
+
console.log(chalk.gray('Run some jfl commands to generate telemetry data'));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function analyzeTelemetryData(filter) {
|
|
67
|
+
// Look for telemetry data in JFL standard locations
|
|
68
|
+
const telemetryPaths = [
|
|
69
|
+
// Standard JFL telemetry locations (XDG compliant)
|
|
70
|
+
join(homedir(), '.cache', 'jfl', 'telemetry-queue.jsonl'),
|
|
71
|
+
join(homedir(), '.local', 'share', 'jfl', 'telemetry-archive.jsonl'),
|
|
72
|
+
// Legacy locations
|
|
73
|
+
join(homedir(), '.jfl', 'telemetry.jsonl'),
|
|
74
|
+
join(process.cwd(), '.jfl', 'telemetry.jsonl'),
|
|
75
|
+
];
|
|
76
|
+
let allEvents = [];
|
|
77
|
+
// Try to find and parse telemetry data
|
|
78
|
+
for (const telemetryPath of telemetryPaths) {
|
|
79
|
+
try {
|
|
80
|
+
if (existsSync(telemetryPath)) {
|
|
81
|
+
const content = readFileSync(telemetryPath, 'utf-8').trim();
|
|
82
|
+
if (content) {
|
|
83
|
+
const events = content.split('\n')
|
|
84
|
+
.filter(line => line.trim())
|
|
85
|
+
.map(line => {
|
|
86
|
+
try {
|
|
87
|
+
return JSON.parse(line);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
})
|
|
93
|
+
.filter((event) => event !== null);
|
|
94
|
+
allEvents.push(...events);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Continue to next path
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (allEvents.length === 0) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
// Filter events if specified
|
|
106
|
+
if (filter) {
|
|
107
|
+
allEvents = allEvents.filter(event => event.category?.includes(filter) ||
|
|
108
|
+
event.event?.includes(filter) ||
|
|
109
|
+
JSON.stringify(event).toLowerCase().includes(filter.toLowerCase()));
|
|
110
|
+
}
|
|
111
|
+
// Get events from last hour for analysis
|
|
112
|
+
const oneHourAgo = Date.now() - (60 * 60 * 1000);
|
|
113
|
+
const recentEvents = allEvents.filter(event => {
|
|
114
|
+
const eventTime = new Date(event.ts).getTime();
|
|
115
|
+
return eventTime > oneHourAgo;
|
|
116
|
+
});
|
|
117
|
+
// Find physical-world events
|
|
118
|
+
const physicalWorldEvents = recentEvents.filter(event => event.cpu_usage_percent !== undefined ||
|
|
119
|
+
event.memory_usage_mb !== undefined ||
|
|
120
|
+
event.thermal_state !== undefined ||
|
|
121
|
+
event.system_load_1m !== undefined ||
|
|
122
|
+
event.git_branch !== undefined);
|
|
123
|
+
// Calculate stats
|
|
124
|
+
const stats = {
|
|
125
|
+
totalEvents: recentEvents.length,
|
|
126
|
+
physicalWorldEvents: physicalWorldEvents.length,
|
|
127
|
+
lastUpdate: new Date(),
|
|
128
|
+
thermalStates: {},
|
|
129
|
+
gitBranches: {}
|
|
130
|
+
};
|
|
131
|
+
if (physicalWorldEvents.length > 0) {
|
|
132
|
+
const cpuValues = physicalWorldEvents
|
|
133
|
+
.map(e => e.cpu_usage_percent)
|
|
134
|
+
.filter((val) => val !== undefined);
|
|
135
|
+
const memoryValues = physicalWorldEvents
|
|
136
|
+
.map(e => e.memory_usage_mb)
|
|
137
|
+
.filter((val) => val !== undefined);
|
|
138
|
+
const loadValues = physicalWorldEvents
|
|
139
|
+
.map(e => e.system_load_1m)
|
|
140
|
+
.filter((val) => val !== undefined);
|
|
141
|
+
if (cpuValues.length > 0) {
|
|
142
|
+
stats.avgCpu = cpuValues.reduce((a, b) => a + b) / cpuValues.length;
|
|
143
|
+
}
|
|
144
|
+
if (memoryValues.length > 0) {
|
|
145
|
+
stats.avgMemory = memoryValues.reduce((a, b) => a + b) / memoryValues.length;
|
|
146
|
+
}
|
|
147
|
+
if (loadValues.length > 0) {
|
|
148
|
+
stats.avgLoad = loadValues.reduce((a, b) => a + b) / loadValues.length;
|
|
149
|
+
}
|
|
150
|
+
// Count thermal states
|
|
151
|
+
physicalWorldEvents.forEach(event => {
|
|
152
|
+
if (event.thermal_state) {
|
|
153
|
+
stats.thermalStates[event.thermal_state] =
|
|
154
|
+
(stats.thermalStates[event.thermal_state] || 0) + 1;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
// Count git branches
|
|
158
|
+
physicalWorldEvents.forEach(event => {
|
|
159
|
+
if (event.git_branch) {
|
|
160
|
+
stats.gitBranches[event.git_branch] =
|
|
161
|
+
(stats.gitBranches[event.git_branch] || 0) + 1;
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return stats;
|
|
166
|
+
}
|
|
167
|
+
function displayStats(stats, compact) {
|
|
168
|
+
const timestamp = stats.lastUpdate.toLocaleTimeString();
|
|
169
|
+
console.log(chalk.bold(`๐ Physical-World Telemetry Stats (${timestamp})`));
|
|
170
|
+
console.log();
|
|
171
|
+
// Event counts
|
|
172
|
+
const physicalPct = stats.totalEvents > 0
|
|
173
|
+
? Math.round((stats.physicalWorldEvents / stats.totalEvents) * 100)
|
|
174
|
+
: 0;
|
|
175
|
+
console.log(`${chalk.cyan('Events (last hour):')} ${stats.totalEvents} total, ${stats.physicalWorldEvents} physical-world (${physicalPct}%)`);
|
|
176
|
+
if (stats.physicalWorldEvents === 0) {
|
|
177
|
+
console.log(chalk.yellow('โ ๏ธ No physical-world data captured recently'));
|
|
178
|
+
console.log(chalk.gray('Try running: jfl status, jfl build, or other commands'));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
console.log();
|
|
182
|
+
// System metrics
|
|
183
|
+
if (stats.avgCpu !== undefined || stats.avgMemory !== undefined || stats.avgLoad !== undefined) {
|
|
184
|
+
console.log(chalk.bold('๐ฅ๏ธ System Metrics (averages):'));
|
|
185
|
+
if (stats.avgCpu !== undefined) {
|
|
186
|
+
const cpuColor = stats.avgCpu > 80 ? 'red' : stats.avgCpu > 60 ? 'yellow' : 'green';
|
|
187
|
+
console.log(` CPU Usage: ${chalk[cpuColor](`${stats.avgCpu.toFixed(1)}%`)}`);
|
|
188
|
+
}
|
|
189
|
+
if (stats.avgMemory !== undefined) {
|
|
190
|
+
const memoryGb = (stats.avgMemory / 1024).toFixed(1);
|
|
191
|
+
console.log(` Memory: ${chalk.cyan(`${memoryGb} GB`)}`);
|
|
192
|
+
}
|
|
193
|
+
if (stats.avgLoad !== undefined) {
|
|
194
|
+
const loadColor = stats.avgLoad > 2.0 ? 'red' : stats.avgLoad > 1.0 ? 'yellow' : 'green';
|
|
195
|
+
console.log(` System Load: ${chalk[loadColor](stats.avgLoad.toFixed(2))}`);
|
|
196
|
+
}
|
|
197
|
+
console.log();
|
|
198
|
+
}
|
|
199
|
+
// Thermal states
|
|
200
|
+
if (Object.keys(stats.thermalStates).length > 0) {
|
|
201
|
+
console.log(chalk.bold('๐ก๏ธ Thermal States:'));
|
|
202
|
+
for (const [state, count] of Object.entries(stats.thermalStates)) {
|
|
203
|
+
const stateColor = state === 'hot' ? 'red' : state === 'warm' ? 'yellow' : 'green';
|
|
204
|
+
console.log(` ${chalk[stateColor](state)}: ${count} events`);
|
|
205
|
+
}
|
|
206
|
+
console.log();
|
|
207
|
+
}
|
|
208
|
+
// Git branches
|
|
209
|
+
if (Object.keys(stats.gitBranches).length > 0 && !compact) {
|
|
210
|
+
console.log(chalk.bold('๐ฟ Git Branches:'));
|
|
211
|
+
const sortedBranches = Object.entries(stats.gitBranches)
|
|
212
|
+
.sort(([, a], [, b]) => b - a)
|
|
213
|
+
.slice(0, 5); // Top 5 branches
|
|
214
|
+
for (const [branch, count] of sortedBranches) {
|
|
215
|
+
console.log(` ${chalk.green(branch)}: ${count} events`);
|
|
216
|
+
}
|
|
217
|
+
console.log();
|
|
218
|
+
}
|
|
219
|
+
console.log(chalk.gray('๐ก Physical-world data captured: CPU, memory, thermal, git, terminals, IDE, network'));
|
|
220
|
+
}
|
|
221
|
+
function clearScreen() {
|
|
222
|
+
process.stdout.write('\x1b[2J\x1b[0f');
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=telemetry-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-monitor.js","sourceRoot":"","sources":["../../src/commands/telemetry-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Generate test physical-world telemetry data for monitoring
|
|
3
|
+
* Internal command for testing the telemetry monitoring system
|
|
4
|
+
*/
|
|
5
|
+
export declare function telemetryTestCommand(options: {
|
|
6
|
+
count?: string;
|
|
7
|
+
interval?: string;
|
|
8
|
+
categories?: string;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
export declare function generateSamplePhysicalWorldData(): Promise<any>;
|
|
11
|
+
//# sourceMappingURL=telemetry-test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-test.d.ts","sourceRoot":"","sources":["../../src/commands/telemetry-test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDhB;AAED,wBAAsB,+BAA+B,IAAI,OAAO,CAAC,GAAG,CAAC,CAcpE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Generate test physical-world telemetry data for monitoring
|
|
3
|
+
* Internal command for testing the telemetry monitoring system
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { physicalWorldCollector } from '../lib/telemetry/physical-world-collector.js';
|
|
7
|
+
import { telemetry } from '../lib/telemetry.js';
|
|
8
|
+
export async function telemetryTestCommand(options) {
|
|
9
|
+
const count = parseInt(options.count || '10');
|
|
10
|
+
const interval = parseInt(options.interval || '1000');
|
|
11
|
+
const categories = (options.categories || 'command,performance,session').split(',');
|
|
12
|
+
console.log(chalk.cyan('๐งช Generating test physical-world telemetry data'));
|
|
13
|
+
console.log(chalk.gray(`Count: ${count} events | Interval: ${interval}ms | Categories: ${categories.join(', ')}`));
|
|
14
|
+
console.log();
|
|
15
|
+
const testEvents = [
|
|
16
|
+
{ category: 'command', event: 'test_command_execution', command: 'status' },
|
|
17
|
+
{ category: 'command', event: 'test_build_operation', command: 'build' },
|
|
18
|
+
{ category: 'performance', event: 'test_performance_measurement' },
|
|
19
|
+
{ category: 'session', event: 'test_session_activity' },
|
|
20
|
+
{ category: 'context_hub', event: 'test_hub_operation' },
|
|
21
|
+
];
|
|
22
|
+
for (let i = 0; i < count; i++) {
|
|
23
|
+
const eventTemplate = testEvents[Math.floor(Math.random() * testEvents.length)];
|
|
24
|
+
// Only generate events for requested categories
|
|
25
|
+
if (!categories.includes(eventTemplate.category)) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
console.log(chalk.gray(`[${i + 1}/${count}]`), `Generating ${eventTemplate.category}:${eventTemplate.event}`);
|
|
29
|
+
try {
|
|
30
|
+
// Generate the telemetry event with physical-world data
|
|
31
|
+
await telemetry.track({
|
|
32
|
+
category: eventTemplate.category,
|
|
33
|
+
event: `${eventTemplate.event}_${i + 1}`,
|
|
34
|
+
command: eventTemplate.command,
|
|
35
|
+
duration_ms: Math.floor(Math.random() * 2000) + 100,
|
|
36
|
+
success: Math.random() > 0.1, // 90% success rate
|
|
37
|
+
});
|
|
38
|
+
// Add some delay between events
|
|
39
|
+
if (i < count - 1) {
|
|
40
|
+
await new Promise(resolve => setTimeout(resolve, interval));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
console.log(chalk.yellow(` Warning: Failed to generate event ${i + 1}`));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
console.log();
|
|
48
|
+
console.log(chalk.green('โ
Test telemetry data generated!'));
|
|
49
|
+
console.log(chalk.gray(' Run: jfl telemetry monitor --live'));
|
|
50
|
+
console.log(chalk.gray(' Or: jfl telemetry monitor'));
|
|
51
|
+
}
|
|
52
|
+
export async function generateSamplePhysicalWorldData() {
|
|
53
|
+
const baseEvent = {
|
|
54
|
+
category: 'command',
|
|
55
|
+
event: 'sample_data_generation',
|
|
56
|
+
ts: new Date().toISOString(),
|
|
57
|
+
};
|
|
58
|
+
try {
|
|
59
|
+
const enhancedEvent = await physicalWorldCollector.collect(baseEvent);
|
|
60
|
+
return enhancedEvent;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error('Failed to collect physical-world data:', error);
|
|
64
|
+
return baseEvent;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=telemetry-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry-test.js","sourceRoot":"","sources":["../../src/commands/telemetry-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Tenet agents command - manage and monitor RL learning agents
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
export declare function createTenetAgentsCommand(): Command;
|
|
6
|
+
interface AgentsOptions {
|
|
7
|
+
agent?: string;
|
|
8
|
+
insightId?: string;
|
|
9
|
+
feedback?: 'helpful' | 'not_helpful' | 'needs_adjustment';
|
|
10
|
+
}
|
|
11
|
+
export declare function tenentAgentsCommand(action?: string, options?: AgentsOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=tenet-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenet-agents.d.ts","sourceRoot":"","sources":["../../src/commands/tenet-agents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,wBAAwB,IAAI,OAAO,CAclD;AAED,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,kBAAkB,CAAA;CAC1D;AAED,wBAAsB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CrG"}
|