jfl 0.9.6 → 0.9.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.
Files changed (212) hide show
  1. package/dist/commands/agents.js +1 -1
  2. package/dist/commands/agents.js.map +1 -1
  3. package/dist/commands/context-hub.d.ts.map +1 -1
  4. package/dist/commands/context-hub.js +77 -18
  5. package/dist/commands/context-hub.js.map +1 -1
  6. package/dist/commands/deploy.js +1 -1
  7. package/dist/commands/deploy.js.map +1 -1
  8. package/dist/commands/feedback.js +1 -1
  9. package/dist/commands/feedback.js.map +1 -1
  10. package/dist/commands/hud.js +1 -1
  11. package/dist/commands/hud.js.map +1 -1
  12. package/dist/commands/init-from-service.js +1 -1
  13. package/dist/commands/init-from-service.js.map +1 -1
  14. package/dist/commands/init.js +1 -1
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/kanban.js +6 -6
  17. package/dist/commands/kanban.js.map +1 -1
  18. package/dist/commands/login.d.ts +2 -13
  19. package/dist/commands/login.d.ts.map +1 -1
  20. package/dist/commands/login.js +6 -44
  21. package/dist/commands/login.js.map +1 -1
  22. package/dist/commands/organize.d.ts +16 -0
  23. package/dist/commands/organize.d.ts.map +1 -0
  24. package/dist/commands/organize.js +334 -0
  25. package/dist/commands/organize.js.map +1 -0
  26. package/dist/commands/peter.d.ts.map +1 -1
  27. package/dist/commands/peter.js +273 -0
  28. package/dist/commands/peter.js.map +1 -1
  29. package/dist/commands/pi.d.ts.map +1 -1
  30. package/dist/commands/pi.js +11 -5
  31. package/dist/commands/pi.js.map +1 -1
  32. package/dist/commands/repair.js +1 -1
  33. package/dist/commands/repair.js.map +1 -1
  34. package/dist/commands/setup.d.ts.map +1 -1
  35. package/dist/commands/setup.js +113 -45
  36. package/dist/commands/setup.js.map +1 -1
  37. package/dist/commands/status.d.ts.map +1 -1
  38. package/dist/commands/status.js +4 -4
  39. package/dist/commands/status.js.map +1 -1
  40. package/dist/commands/update.d.ts.map +1 -1
  41. package/dist/commands/update.js +66 -0
  42. package/dist/commands/update.js.map +1 -1
  43. package/dist/index.d.ts +0 -6
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +60 -19
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/agent-config.d.ts.map +1 -1
  48. package/dist/lib/agent-config.js +24 -2
  49. package/dist/lib/agent-config.js.map +1 -1
  50. package/dist/lib/hub-health.d.ts.map +1 -1
  51. package/dist/lib/hub-health.js +14 -2
  52. package/dist/lib/hub-health.js.map +1 -1
  53. package/dist/lib/resource-optimizer-middleware.d.ts.map +1 -1
  54. package/dist/lib/resource-optimizer-middleware.js +8 -2
  55. package/dist/lib/resource-optimizer-middleware.js.map +1 -1
  56. package/dist/lib/telemetry.d.ts.map +1 -1
  57. package/dist/lib/telemetry.js +13 -12
  58. package/dist/lib/telemetry.js.map +1 -1
  59. package/dist/utils/auth-status.d.ts +21 -0
  60. package/dist/utils/auth-status.d.ts.map +1 -0
  61. package/dist/utils/auth-status.js +53 -0
  62. package/dist/utils/auth-status.js.map +1 -0
  63. package/package.json +3 -2
  64. package/packages/pi/dist/agent-grid.d.ts +24 -0
  65. package/packages/pi/dist/agent-grid.d.ts.map +1 -0
  66. package/packages/pi/dist/agent-grid.js +162 -0
  67. package/packages/pi/dist/agent-grid.js.map +1 -0
  68. package/packages/pi/dist/agent-names.d.ts +43 -0
  69. package/packages/pi/dist/agent-names.d.ts.map +1 -0
  70. package/packages/pi/dist/agent-names.js +156 -0
  71. package/packages/pi/dist/agent-names.js.map +1 -0
  72. package/packages/pi/dist/autoresearch.d.ts +15 -0
  73. package/packages/pi/dist/autoresearch.d.ts.map +1 -0
  74. package/packages/pi/dist/autoresearch.js +372 -0
  75. package/packages/pi/dist/autoresearch.js.map +1 -0
  76. package/packages/pi/dist/bookmarks.d.ts +15 -0
  77. package/packages/pi/dist/bookmarks.d.ts.map +1 -0
  78. package/packages/pi/dist/bookmarks.js +77 -0
  79. package/packages/pi/dist/bookmarks.js.map +1 -0
  80. package/packages/pi/dist/context.d.ts +17 -0
  81. package/packages/pi/dist/context.d.ts.map +1 -0
  82. package/packages/pi/dist/context.js +152 -0
  83. package/packages/pi/dist/context.js.map +1 -0
  84. package/packages/pi/dist/crm-tool.d.ts +12 -0
  85. package/packages/pi/dist/crm-tool.d.ts.map +1 -0
  86. package/packages/pi/dist/crm-tool.js +58 -0
  87. package/packages/pi/dist/crm-tool.js.map +1 -0
  88. package/packages/pi/dist/eval-tool.d.ts +11 -0
  89. package/packages/pi/dist/eval-tool.d.ts.map +1 -0
  90. package/packages/pi/dist/eval-tool.js +188 -0
  91. package/packages/pi/dist/eval-tool.js.map +1 -0
  92. package/packages/pi/dist/eval.d.ts +12 -0
  93. package/packages/pi/dist/eval.d.ts.map +1 -0
  94. package/packages/pi/dist/eval.js +43 -0
  95. package/packages/pi/dist/eval.js.map +1 -0
  96. package/packages/pi/dist/footer.d.ts +20 -0
  97. package/packages/pi/dist/footer.d.ts.map +1 -0
  98. package/packages/pi/dist/footer.js +222 -0
  99. package/packages/pi/dist/footer.js.map +1 -0
  100. package/packages/pi/dist/header.d.ts +17 -0
  101. package/packages/pi/dist/header.d.ts.map +1 -0
  102. package/packages/pi/dist/header.js +156 -0
  103. package/packages/pi/dist/header.js.map +1 -0
  104. package/packages/pi/dist/hub-resolver.d.ts +11 -0
  105. package/packages/pi/dist/hub-resolver.d.ts.map +1 -0
  106. package/packages/pi/dist/hub-resolver.js +58 -0
  107. package/packages/pi/dist/hub-resolver.js.map +1 -0
  108. package/packages/pi/dist/hub-tools.d.ts +14 -0
  109. package/packages/pi/dist/hub-tools.d.ts.map +1 -0
  110. package/packages/pi/dist/hub-tools.js +266 -0
  111. package/packages/pi/dist/hub-tools.js.map +1 -0
  112. package/packages/pi/dist/hud-tool.d.ts +17 -0
  113. package/packages/pi/dist/hud-tool.d.ts.map +1 -0
  114. package/packages/pi/dist/hud-tool.js +297 -0
  115. package/packages/pi/dist/hud-tool.js.map +1 -0
  116. package/packages/pi/dist/index.d.ts +12 -0
  117. package/packages/pi/dist/index.d.ts.map +1 -0
  118. package/packages/pi/dist/index.js +436 -0
  119. package/packages/pi/dist/index.js.map +1 -0
  120. package/packages/pi/dist/jfl-resolve.d.ts +29 -0
  121. package/packages/pi/dist/jfl-resolve.d.ts.map +1 -0
  122. package/packages/pi/dist/jfl-resolve.js +89 -0
  123. package/packages/pi/dist/jfl-resolve.js.map +1 -0
  124. package/packages/pi/dist/journal.d.ts +23 -0
  125. package/packages/pi/dist/journal.d.ts.map +1 -0
  126. package/packages/pi/dist/journal.js +250 -0
  127. package/packages/pi/dist/journal.js.map +1 -0
  128. package/packages/pi/dist/map-bridge.d.ts +20 -0
  129. package/packages/pi/dist/map-bridge.d.ts.map +1 -0
  130. package/packages/pi/dist/map-bridge.js +181 -0
  131. package/packages/pi/dist/map-bridge.js.map +1 -0
  132. package/packages/pi/dist/memory-tool.d.ts +11 -0
  133. package/packages/pi/dist/memory-tool.d.ts.map +1 -0
  134. package/packages/pi/dist/memory-tool.js +148 -0
  135. package/packages/pi/dist/memory-tool.js.map +1 -0
  136. package/packages/pi/dist/notifications.d.ts +15 -0
  137. package/packages/pi/dist/notifications.d.ts.map +1 -0
  138. package/packages/pi/dist/notifications.js +65 -0
  139. package/packages/pi/dist/notifications.js.map +1 -0
  140. package/packages/pi/dist/onboarding-v1.d.ts +15 -0
  141. package/packages/pi/dist/onboarding-v1.d.ts.map +1 -0
  142. package/packages/pi/dist/onboarding-v1.js +417 -0
  143. package/packages/pi/dist/onboarding-v1.js.map +1 -0
  144. package/packages/pi/dist/onboarding-v2.d.ts +18 -0
  145. package/packages/pi/dist/onboarding-v2.d.ts.map +1 -0
  146. package/packages/pi/dist/onboarding-v2.js +402 -0
  147. package/packages/pi/dist/onboarding-v2.js.map +1 -0
  148. package/packages/pi/dist/onboarding-v3.d.ts +13 -0
  149. package/packages/pi/dist/onboarding-v3.d.ts.map +1 -0
  150. package/packages/pi/dist/onboarding-v3.js +581 -0
  151. package/packages/pi/dist/onboarding-v3.js.map +1 -0
  152. package/packages/pi/dist/peter-parker.d.ts +12 -0
  153. package/packages/pi/dist/peter-parker.d.ts.map +1 -0
  154. package/packages/pi/dist/peter-parker.js +162 -0
  155. package/packages/pi/dist/peter-parker.js.map +1 -0
  156. package/packages/pi/dist/pivot-tool.d.ts +11 -0
  157. package/packages/pi/dist/pivot-tool.d.ts.map +1 -0
  158. package/packages/pi/dist/pivot-tool.js +56 -0
  159. package/packages/pi/dist/pivot-tool.js.map +1 -0
  160. package/packages/pi/dist/policy-head-tool.d.ts +15 -0
  161. package/packages/pi/dist/policy-head-tool.d.ts.map +1 -0
  162. package/packages/pi/dist/policy-head-tool.js +220 -0
  163. package/packages/pi/dist/policy-head-tool.js.map +1 -0
  164. package/packages/pi/dist/portfolio-bridge.d.ts +12 -0
  165. package/packages/pi/dist/portfolio-bridge.d.ts.map +1 -0
  166. package/packages/pi/dist/portfolio-bridge.js +81 -0
  167. package/packages/pi/dist/portfolio-bridge.js.map +1 -0
  168. package/packages/pi/dist/service-skills.d.ts +15 -0
  169. package/packages/pi/dist/service-skills.d.ts.map +1 -0
  170. package/packages/pi/dist/service-skills.js +198 -0
  171. package/packages/pi/dist/service-skills.js.map +1 -0
  172. package/packages/pi/dist/session.d.ts +24 -0
  173. package/packages/pi/dist/session.d.ts.map +1 -0
  174. package/packages/pi/dist/session.js +394 -0
  175. package/packages/pi/dist/session.js.map +1 -0
  176. package/packages/pi/dist/shortcuts.d.ts +11 -0
  177. package/packages/pi/dist/shortcuts.d.ts.map +1 -0
  178. package/packages/pi/dist/shortcuts.js +231 -0
  179. package/packages/pi/dist/shortcuts.js.map +1 -0
  180. package/packages/pi/dist/startup-briefing.d.ts +13 -0
  181. package/packages/pi/dist/startup-briefing.d.ts.map +1 -0
  182. package/packages/pi/dist/startup-briefing.js +271 -0
  183. package/packages/pi/dist/startup-briefing.js.map +1 -0
  184. package/packages/pi/dist/stratus-bridge.d.ts +14 -0
  185. package/packages/pi/dist/stratus-bridge.d.ts.map +1 -0
  186. package/packages/pi/dist/stratus-bridge.js +104 -0
  187. package/packages/pi/dist/stratus-bridge.js.map +1 -0
  188. package/packages/pi/dist/subway-mesh.d.ts +88 -0
  189. package/packages/pi/dist/subway-mesh.d.ts.map +1 -0
  190. package/packages/pi/dist/subway-mesh.js +813 -0
  191. package/packages/pi/dist/subway-mesh.js.map +1 -0
  192. package/packages/pi/dist/synopsis-tool.d.ts +12 -0
  193. package/packages/pi/dist/synopsis-tool.d.ts.map +1 -0
  194. package/packages/pi/dist/synopsis-tool.js +84 -0
  195. package/packages/pi/dist/synopsis-tool.js.map +1 -0
  196. package/packages/pi/dist/tool-renderers.d.ts +55 -0
  197. package/packages/pi/dist/tool-renderers.d.ts.map +1 -0
  198. package/packages/pi/dist/tool-renderers.js +349 -0
  199. package/packages/pi/dist/tool-renderers.js.map +1 -0
  200. package/packages/pi/dist/training-buffer-tool.d.ts +16 -0
  201. package/packages/pi/dist/training-buffer-tool.d.ts.map +1 -0
  202. package/packages/pi/dist/training-buffer-tool.js +319 -0
  203. package/packages/pi/dist/training-buffer-tool.js.map +1 -0
  204. package/packages/pi/dist/types.d.ts +195 -0
  205. package/packages/pi/dist/types.d.ts.map +1 -0
  206. package/packages/pi/dist/types.js +11 -0
  207. package/packages/pi/dist/types.js.map +1 -0
  208. package/packages/pi/extensions/session.ts +115 -8
  209. package/packages/pi/extensions/training-buffer-tool.ts +15 -8
  210. package/packages/pi/extensions/types.ts +1 -0
  211. package/packages/pi/package.json +2 -3
  212. package/scripts/postinstall.js +52 -4
@@ -0,0 +1,581 @@
1
+ /**
2
+ * Onboarding V3 — Mission Control
3
+ *
4
+ * Dashboard-first boot screen. Every subsystem initializes simultaneously
5
+ * with live progress bars. Dense, data-rich, box-drawn panels showing
6
+ * runtime info, system status, context summary, and active agents.
7
+ * Collapses to compact footer when all systems report green.
8
+ *
9
+ * @purpose VARIANT 3: Mission Control onboarding — dashboard boot with live system checks
10
+ */
11
+ import { existsSync, readFileSync, readdirSync, statSync } from "fs";
12
+ import { join } from "path";
13
+ import { execSync } from "child_process";
14
+ import { readHubUrl, readToken } from "./hub-resolver.js";
15
+ import { getMeshClient, isStandaloneSubwayLoaded } from "./subway-mesh.js";
16
+ // ─── Data collection helpers ────────────────────────────────────────────────
17
+ function getJflVersion() {
18
+ try {
19
+ const result = execSync("jfl --version 2>/dev/null || echo 0.7.3", {
20
+ encoding: "utf-8",
21
+ timeout: 2000,
22
+ }).trim();
23
+ const match = result.match(/(\d+\.\d+\.\d+)/);
24
+ return match ? match[1] : "0.7.3";
25
+ }
26
+ catch {
27
+ return "0.7.3";
28
+ }
29
+ }
30
+ function getPiVersion(root) {
31
+ try {
32
+ const pkgPath = join(root, "node_modules", "@jfl", "pi", "package.json");
33
+ if (!existsSync(pkgPath)) {
34
+ const localPkg = join(__dirname, "..", "package.json");
35
+ if (existsSync(localPkg)) {
36
+ const pkg = JSON.parse(readFileSync(localPkg, "utf-8"));
37
+ return pkg.version ?? "0.1.0";
38
+ }
39
+ return "0.1.0";
40
+ }
41
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
42
+ return pkg.version ?? "0.1.0";
43
+ }
44
+ catch {
45
+ return "0.1.0";
46
+ }
47
+ }
48
+ function countJournalEntries(root) {
49
+ try {
50
+ const journalDir = join(root, ".jfl", "journal");
51
+ if (!existsSync(journalDir))
52
+ return 0;
53
+ let count = 0;
54
+ for (const f of readdirSync(journalDir).filter(f => f.endsWith(".jsonl"))) {
55
+ const content = readFileSync(join(journalDir, f), "utf-8").trim();
56
+ count += content.split("\n").filter(Boolean).length;
57
+ }
58
+ return count;
59
+ }
60
+ catch {
61
+ return 0;
62
+ }
63
+ }
64
+ function getLastJournalTitle(root) {
65
+ try {
66
+ const journalDir = join(root, ".jfl", "journal");
67
+ if (!existsSync(journalDir))
68
+ return "No journal entries";
69
+ const files = readdirSync(journalDir)
70
+ .filter(f => f.endsWith(".jsonl"))
71
+ .map(f => ({ name: f, mtime: statSync(join(journalDir, f)).mtimeMs }))
72
+ .sort((a, b) => b.mtime - a.mtime);
73
+ if (files.length === 0)
74
+ return "No journal entries";
75
+ const content = readFileSync(join(journalDir, files[0].name), "utf-8").trim();
76
+ const lines = content.split("\n").filter(Boolean);
77
+ if (lines.length === 0)
78
+ return "No journal entries";
79
+ const last = JSON.parse(lines[lines.length - 1]);
80
+ return last.title ?? last.summary ?? "Untitled entry";
81
+ }
82
+ catch {
83
+ return "No journal entries";
84
+ }
85
+ }
86
+ function getCurrentPhase(root) {
87
+ try {
88
+ const roadmapPath = join(root, "knowledge", "ROADMAP.md");
89
+ if (!existsSync(roadmapPath))
90
+ return "Unknown";
91
+ const content = readFileSync(roadmapPath, "utf-8");
92
+ const phaseMatch = content.match(/##\s+(?:Current\s+)?Phase[:\s]+(.+)/i)
93
+ ?? content.match(/\*\*Current[:\s]+(.+?)\*\*/i)
94
+ ?? content.match(/Phase\s+\d+[:\s]+(.+)/m);
95
+ return phaseMatch ? phaseMatch[1].trim().slice(0, 40) : "Active";
96
+ }
97
+ catch {
98
+ return "Active";
99
+ }
100
+ }
101
+ function getServiceCount(root) {
102
+ try {
103
+ const configPath = join(root, ".jfl", "config.json");
104
+ if (!existsSync(configPath))
105
+ return 0;
106
+ const config = JSON.parse(readFileSync(configPath, "utf-8"));
107
+ return config.registered_services?.length ?? 0;
108
+ }
109
+ catch {
110
+ return 0;
111
+ }
112
+ }
113
+ function getEvalData(root) {
114
+ try {
115
+ const evalPath = join(root, ".jfl", "eval-store.jsonl");
116
+ if (!existsSync(evalPath))
117
+ return { score: null, delta: null };
118
+ const lines = readFileSync(evalPath, "utf-8").trim().split("\n").filter(Boolean);
119
+ if (lines.length === 0)
120
+ return { score: null, delta: null };
121
+ const last = JSON.parse(lines[lines.length - 1]);
122
+ if (last.composite === undefined)
123
+ return { score: null, delta: null };
124
+ const score = last.composite.toFixed(2);
125
+ if (lines.length >= 2) {
126
+ const prev = JSON.parse(lines[lines.length - 2]);
127
+ if (prev.composite !== undefined) {
128
+ const diff = last.composite - prev.composite;
129
+ const sign = diff >= 0 ? "+" : "";
130
+ return { score, delta: `${sign}${diff.toFixed(2)}` };
131
+ }
132
+ }
133
+ return { score, delta: null };
134
+ }
135
+ catch {
136
+ return { score: null, delta: null };
137
+ }
138
+ }
139
+ function getActiveAgents(root) {
140
+ const agents = [];
141
+ try {
142
+ const journalDir = join(root, ".jfl", "journal");
143
+ if (!existsSync(journalDir))
144
+ return agents;
145
+ const now = Date.now();
146
+ const files = readdirSync(journalDir)
147
+ .filter(f => f.startsWith("session-") && f.endsWith(".jsonl"))
148
+ .map(f => ({
149
+ name: f.replace("session-", "").replace(".jsonl", ""),
150
+ mtime: statSync(join(journalDir, f)).mtimeMs,
151
+ }))
152
+ .sort((a, b) => b.mtime - a.mtime)
153
+ .slice(0, 6);
154
+ for (const f of files) {
155
+ const age = now - f.mtime;
156
+ const nameParts = f.name.split("-");
157
+ const displayName = nameParts[0] ?? f.name;
158
+ if (age < 120000) {
159
+ agents.push({ name: displayName, status: "online", detail: "active" });
160
+ }
161
+ else if (age < 600000) {
162
+ agents.push({ name: displayName, status: "idle", detail: "idle" });
163
+ }
164
+ else {
165
+ const ageStr = age < 3600000 ? `${Math.floor(age / 60000)}m ago` : `${Math.floor(age / 3600000)}h ago`;
166
+ agents.push({ name: displayName, status: "offline", detail: `last: ${ageStr}` });
167
+ }
168
+ }
169
+ }
170
+ catch { }
171
+ if (agents.length === 0) {
172
+ agents.push({ name: "No active sessions", status: "offline", detail: "" });
173
+ }
174
+ return agents;
175
+ }
176
+ function countMemories(root) {
177
+ try {
178
+ const dbPath = join(root, ".jfl", "memory.db");
179
+ if (!existsSync(dbPath))
180
+ return 0;
181
+ const result = execSync(`sqlite3 "${dbPath}" "SELECT COUNT(*) FROM memories;" 2>/dev/null`, { encoding: "utf-8", timeout: 2000 }).trim();
182
+ return parseInt(result, 10) || 0;
183
+ }
184
+ catch {
185
+ return countJournalEntries(root);
186
+ }
187
+ }
188
+ function isAutoCommitRunning(root) {
189
+ try {
190
+ const pidFile = join(root, ".jfl", "auto-commit.pid");
191
+ if (!existsSync(pidFile))
192
+ return false;
193
+ const pid = readFileSync(pidFile, "utf-8").trim();
194
+ execSync(`kill -0 ${pid} 2>/dev/null`, { timeout: 1000 });
195
+ return true;
196
+ }
197
+ catch {
198
+ return false;
199
+ }
200
+ }
201
+ // ─── Rendering helpers ──────────────────────────────────────────────────────
202
+ function progressBar(progress, width, theme, status) {
203
+ const filled = Math.round(progress * width);
204
+ const empty = width - filled;
205
+ const filledChar = "\u25A0";
206
+ const emptyChar = "\u2591";
207
+ const color = status === "ready" ? "success"
208
+ : status === "connecting" ? "warning"
209
+ : status === "error" ? "error"
210
+ : "accent";
211
+ const filledStr = theme.fg(color, filledChar.repeat(filled));
212
+ const emptyStr = theme.fg("dim", emptyChar.repeat(empty));
213
+ return `[${filledStr}${emptyStr}]`;
214
+ }
215
+ function truncate(str, maxLen) {
216
+ if (str.length <= maxLen)
217
+ return str;
218
+ return str.slice(0, maxLen - 1) + "\u2026";
219
+ }
220
+ function padRight(str, len) {
221
+ if (str.length >= len)
222
+ return str.slice(0, len);
223
+ return str + " ".repeat(len - str.length);
224
+ }
225
+ // ─── Main boot screen renderer ─────────────────────────────────────────────
226
+ function renderBootScreen(state, width, theme) {
227
+ const w = Math.min(width, 60);
228
+ const inner = w - 4;
229
+ const lines = [];
230
+ const hr = "\u2500".repeat(w - 2);
231
+ const statusIcon = (s) => {
232
+ if (s === "ready")
233
+ return theme.fg("success", "\u25CF");
234
+ if (s === "connecting")
235
+ return theme.fg("warning", "\u25CB");
236
+ if (s === "error")
237
+ return theme.fg("error", "\u2717");
238
+ return theme.fg("dim", "\u25CB");
239
+ };
240
+ // ─── Header ─────────────────────────────────────────────────────────
241
+ lines.push("");
242
+ lines.push(` ${theme.fg("border", "\u250C\u2500")} ${theme.bold(theme.fg("accent", "TENET"))} ${theme.fg("border", "\u2500".repeat(w - 12) + "\u2510")}`);
243
+ const runtimeLine = `Runtime: Pi v${getPiVersion(state.systems.get("hub")?.detail.split(":")[1]?.trim() ?? "")} + Tenet v${state.version}`;
244
+ const modelLine = `Model: ${state.model || "detecting..."}`;
245
+ const branchLine = `Branch: ${truncate(state.branch, inner - 10)}`;
246
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("dim", padRight(runtimeLine, inner))} ${theme.fg("border", "\u2502")}`);
247
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("dim", padRight(modelLine, inner))} ${theme.fg("border", "\u2502")}`);
248
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("dim", padRight(branchLine, inner))} ${theme.fg("border", "\u2502")}`);
249
+ // ─── Systems panel ──────────────────────────────────────────────────
250
+ lines.push(` ${theme.fg("border", "\u251C\u2500")} ${theme.fg("muted", "SYSTEMS")} ${theme.fg("border", "\u2500".repeat(w - 14) + "\u2524")}`);
251
+ const barWidth = 10;
252
+ const systemOrder = ["hub", "memory", "subway", "autocommit", "journal"];
253
+ for (const key of systemOrder) {
254
+ const sys = state.systems.get(key);
255
+ if (!sys)
256
+ continue;
257
+ const bar = progressBar(sys.progress, barWidth, theme, sys.status);
258
+ const nameStr = padRight(sys.name, 12);
259
+ const statusStr = sys.status === "ready"
260
+ ? theme.fg("success", "ready")
261
+ : sys.status === "connecting"
262
+ ? theme.fg("warning", "connecting...")
263
+ : sys.status === "error"
264
+ ? theme.fg("error", "error")
265
+ : theme.fg("dim", "booting");
266
+ const detailStr = sys.detail ? theme.fg("dim", ` ${truncate(sys.detail, inner - 40)}`) : "";
267
+ const lineContent = ` ${bar} ${nameStr} ${statusStr}${detailStr}`;
268
+ lines.push(` ${theme.fg("border", "\u2502")}${padRight(lineContent, inner + 1)}${theme.fg("border", "\u2502")}`);
269
+ }
270
+ // ─── Context panel ──────────────────────────────────────────────────
271
+ lines.push(` ${theme.fg("border", "\u251C\u2500")} ${theme.fg("muted", "CONTEXT")} ${theme.fg("border", "\u2500".repeat(w - 14) + "\u2524")}`);
272
+ const ctx = state.context;
273
+ const lastLine = `Last: ${truncate(ctx.lastJournalTitle, inner - 8)}`;
274
+ const phaseLine = `Phase: ${truncate(ctx.phase, inner - 9)}`;
275
+ const svcLine = `Services: ${ctx.serviceCount} registered`;
276
+ let evalLine = "Eval: ";
277
+ if (ctx.evalScore) {
278
+ evalLine += `${ctx.evalScore} composite`;
279
+ if (ctx.evalDelta)
280
+ evalLine += ` (${ctx.evalDelta})`;
281
+ }
282
+ else {
283
+ evalLine += "no data";
284
+ }
285
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("text", padRight(lastLine, inner))} ${theme.fg("border", "\u2502")}`);
286
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("text", padRight(phaseLine, inner))} ${theme.fg("border", "\u2502")}`);
287
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("text", padRight(svcLine, inner))} ${theme.fg("border", "\u2502")}`);
288
+ lines.push(` ${theme.fg("border", "\u2502")} ${theme.fg("text", padRight(evalLine, inner))} ${theme.fg("border", "\u2502")}`);
289
+ // ─── Agents panel ───────────────────────────────────────────────────
290
+ lines.push(` ${theme.fg("border", "\u251C\u2500")} ${theme.fg("muted", "AGENTS")} ${theme.fg("border", "\u2500".repeat(w - 13) + "\u2524")}`);
291
+ for (const agent of state.agents.slice(0, 5)) {
292
+ const icon = agent.status === "online" ? theme.fg("success", "\u25CF")
293
+ : agent.status === "idle" ? theme.fg("warning", "\u25CB")
294
+ : theme.fg("dim", "\u25CB");
295
+ const nameStr = padRight(agent.name, 16);
296
+ const detailStr = agent.detail ? theme.fg("dim", agent.detail) : "";
297
+ const agentLine = ` ${icon} ${nameStr} ${detailStr}`;
298
+ lines.push(` ${theme.fg("border", "\u2502")}${padRight(agentLine, inner + 1)}${theme.fg("border", "\u2502")}`);
299
+ }
300
+ // ─── Footer ─────────────────────────────────────────────────────────
301
+ lines.push(` ${theme.fg("border", "\u2514" + "\u2500".repeat(w - 2) + "\u2518")}`);
302
+ if (state.allGreen) {
303
+ const elapsed = Date.now() - state.bootStartTime;
304
+ const elapsedStr = `${(elapsed / 1000).toFixed(1)}s`;
305
+ lines.push(` ${theme.fg("success", "\u25CF All systems nominal")} ${theme.fg("dim", `(${elapsedStr})`)}`);
306
+ }
307
+ else {
308
+ const readyCount = Array.from(state.systems.values()).filter(s => s.status === "ready").length;
309
+ const totalCount = state.systems.size;
310
+ lines.push(` ${theme.fg("dim", `Initializing... ${readyCount}/${totalCount} systems ready`)}`);
311
+ }
312
+ lines.push("");
313
+ return lines;
314
+ }
315
+ // ─── System check runners ───────────────────────────────────────────────────
316
+ async function checkHub(root, sys, onUpdate) {
317
+ sys.progress = 0.2;
318
+ sys.status = "connecting";
319
+ sys.detail = "";
320
+ onUpdate();
321
+ const hubBaseUrl = readHubUrl(root);
322
+ const token = readToken(root);
323
+ try {
324
+ sys.progress = 0.5;
325
+ onUpdate();
326
+ const resp = await fetch(`${hubBaseUrl}/api/status`, {
327
+ headers: token ? { Authorization: `Bearer ${token}` } : {},
328
+ signal: AbortSignal.timeout(3000),
329
+ });
330
+ if (resp.ok) {
331
+ const data = await resp.json();
332
+ const port = data.port ?? hubBaseUrl.split(":").pop();
333
+ sys.progress = 1;
334
+ sys.status = "ready";
335
+ sys.detail = `:${port}`;
336
+ onUpdate();
337
+ }
338
+ else {
339
+ sys.progress = 0.7;
340
+ sys.status = "connecting";
341
+ sys.detail = "starting...";
342
+ onUpdate();
343
+ try {
344
+ execSync("jfl context-hub ensure", { cwd: root, stdio: "pipe", timeout: 10000 });
345
+ sys.progress = 1;
346
+ sys.status = "ready";
347
+ const port = hubBaseUrl.split(":").pop();
348
+ sys.detail = `:${port}`;
349
+ }
350
+ catch {
351
+ sys.progress = 1;
352
+ sys.status = "warning";
353
+ sys.detail = "fallback";
354
+ }
355
+ onUpdate();
356
+ }
357
+ }
358
+ catch {
359
+ sys.progress = 0.7;
360
+ sys.status = "connecting";
361
+ sys.detail = "starting...";
362
+ onUpdate();
363
+ try {
364
+ execSync("jfl context-hub ensure", { cwd: root, stdio: "pipe", timeout: 10000 });
365
+ sys.progress = 1;
366
+ sys.status = "ready";
367
+ const port = hubBaseUrl.split(":").pop();
368
+ sys.detail = `:${port}`;
369
+ }
370
+ catch {
371
+ sys.progress = 1;
372
+ sys.status = "error";
373
+ sys.detail = "unreachable";
374
+ }
375
+ onUpdate();
376
+ }
377
+ }
378
+ async function checkMemory(root, sys, onUpdate) {
379
+ sys.progress = 0.3;
380
+ sys.status = "booting";
381
+ onUpdate();
382
+ await new Promise(r => setTimeout(r, 100));
383
+ const count = countMemories(root);
384
+ sys.progress = 1;
385
+ sys.status = "ready";
386
+ sys.detail = `${count} indexed`;
387
+ onUpdate();
388
+ return count;
389
+ }
390
+ async function checkSubway(_root, sys, onUpdate) {
391
+ sys.progress = 0.2;
392
+ sys.status = "connecting";
393
+ onUpdate();
394
+ if (isStandaloneSubwayLoaded()) {
395
+ // Standalone extension is handling mesh — report as ready
396
+ sys.progress = 1;
397
+ sys.status = "ready";
398
+ sys.detail = "standalone ext";
399
+ onUpdate();
400
+ return;
401
+ }
402
+ const client = getMeshClient();
403
+ if (!client) {
404
+ sys.progress = 1;
405
+ sys.status = "warning";
406
+ sys.detail = "not initialized";
407
+ onUpdate();
408
+ return;
409
+ }
410
+ sys.progress = 0.5;
411
+ onUpdate();
412
+ // Wait up to 3s for the mesh client to register
413
+ const deadline = Date.now() + 3000;
414
+ while (Date.now() < deadline) {
415
+ if (client.registered)
416
+ break;
417
+ await new Promise(r => setTimeout(r, 100));
418
+ }
419
+ if (client.registered) {
420
+ sys.progress = 1;
421
+ sys.status = "ready";
422
+ sys.detail = client.name;
423
+ onUpdate();
424
+ }
425
+ else {
426
+ sys.progress = 1;
427
+ sys.status = "warning";
428
+ sys.detail = "offline";
429
+ onUpdate();
430
+ }
431
+ }
432
+ async function checkAutoCommit(root, sys, onUpdate) {
433
+ sys.progress = 0.5;
434
+ sys.status = "booting";
435
+ onUpdate();
436
+ await new Promise(r => setTimeout(r, 50));
437
+ const running = isAutoCommitRunning(root);
438
+ sys.progress = 1;
439
+ sys.status = running ? "ready" : "warning";
440
+ sys.detail = running ? "active (120s)" : "inactive";
441
+ onUpdate();
442
+ }
443
+ async function checkJournal(root, sys, onUpdate) {
444
+ sys.progress = 0.3;
445
+ sys.status = "booting";
446
+ onUpdate();
447
+ await new Promise(r => setTimeout(r, 80));
448
+ const count = countJournalEntries(root);
449
+ sys.progress = 1;
450
+ sys.status = "ready";
451
+ sys.detail = `${count} entries`;
452
+ onUpdate();
453
+ return count;
454
+ }
455
+ // ─── Public API ─────────────────────────────────────────────────────────────
456
+ export async function setupOnboarding(ctx, config) {
457
+ const root = ctx.session.projectRoot;
458
+ const configPath = join(root, ".jfl", "config.json");
459
+ let projectName = config.name ?? root.split("/").pop() ?? "TENET";
460
+ let projectType = config.type ?? "gtm";
461
+ if (!config.name && existsSync(configPath)) {
462
+ try {
463
+ const cfg = JSON.parse(readFileSync(configPath, "utf-8"));
464
+ projectName = cfg.name ?? projectName;
465
+ projectType = cfg.type ?? projectType;
466
+ }
467
+ catch { }
468
+ }
469
+ const version = getJflVersion();
470
+ const branch = ctx.session.branch;
471
+ const model = (ctx.pi.model?.id ?? "").split("/").pop() ?? "detecting...";
472
+ const bootState = {
473
+ systems: new Map([
474
+ ["hub", { name: "Hub", status: "booting", progress: 0, detail: "", startTime: Date.now() }],
475
+ ["memory", { name: "Memory", status: "booting", progress: 0, detail: "", startTime: Date.now() }],
476
+ ["subway", { name: "Subway", status: "booting", progress: 0, detail: "", startTime: Date.now() }],
477
+ ["autocommit", { name: "Auto-commit", status: "booting", progress: 0, detail: "", startTime: Date.now() }],
478
+ ["journal", { name: "Journal", status: "booting", progress: 0, detail: "", startTime: Date.now() }],
479
+ ]),
480
+ context: {
481
+ lastJournalTitle: "Loading...",
482
+ phase: "Loading...",
483
+ serviceCount: 0,
484
+ evalScore: null,
485
+ evalDelta: null,
486
+ },
487
+ agents: [{ name: "Scanning...", status: "idle", detail: "" }],
488
+ projectName,
489
+ projectType,
490
+ version,
491
+ model,
492
+ branch,
493
+ allGreen: false,
494
+ bootComplete: false,
495
+ bootStartTime: Date.now(),
496
+ };
497
+ if (!ctx.ui.hasUI) {
498
+ await runChecksHeadless(root, ctx);
499
+ return;
500
+ }
501
+ await ctx.ui.custom((tui, theme, _kb, done) => {
502
+ let renderInterval = null;
503
+ let dismissed = false;
504
+ function requestRender() {
505
+ if (dismissed)
506
+ return;
507
+ tui.requestRender();
508
+ }
509
+ renderInterval = setInterval(requestRender, 150);
510
+ const systemChecks = Promise.allSettled([
511
+ checkHub(root, bootState.systems.get("hub"), requestRender),
512
+ checkMemory(root, bootState.systems.get("memory"), requestRender),
513
+ checkSubway(root, bootState.systems.get("subway"), requestRender),
514
+ checkAutoCommit(root, bootState.systems.get("autocommit"), requestRender),
515
+ checkJournal(root, bootState.systems.get("journal"), requestRender),
516
+ ]);
517
+ const contextLoad = Promise.resolve().then(() => {
518
+ bootState.context.lastJournalTitle = getLastJournalTitle(root);
519
+ bootState.context.phase = getCurrentPhase(root);
520
+ bootState.context.serviceCount = getServiceCount(root);
521
+ const evalData = getEvalData(root);
522
+ bootState.context.evalScore = evalData.score;
523
+ bootState.context.evalDelta = evalData.delta;
524
+ bootState.agents = getActiveAgents(root);
525
+ requestRender();
526
+ });
527
+ Promise.all([systemChecks, contextLoad]).then(() => {
528
+ const allReady = Array.from(bootState.systems.values()).every(s => s.status === "ready" || s.status === "warning");
529
+ bootState.allGreen = allReady;
530
+ bootState.bootComplete = true;
531
+ requestRender();
532
+ setTimeout(() => {
533
+ if (!dismissed) {
534
+ dismissed = true;
535
+ if (renderInterval)
536
+ clearInterval(renderInterval);
537
+ done(undefined);
538
+ }
539
+ }, 1200);
540
+ });
541
+ return {
542
+ handleInput(key) {
543
+ if (key === "\x1b" || key === "q" || key === "\r" || key === " ") {
544
+ if (bootState.bootComplete) {
545
+ dismissed = true;
546
+ if (renderInterval)
547
+ clearInterval(renderInterval);
548
+ done(undefined);
549
+ }
550
+ }
551
+ },
552
+ render(width) {
553
+ return renderBootScreen(bootState, width, theme);
554
+ },
555
+ dispose() {
556
+ dismissed = true;
557
+ if (renderInterval)
558
+ clearInterval(renderInterval);
559
+ },
560
+ invalidate() { },
561
+ };
562
+ }, {
563
+ overlay: true,
564
+ overlayOptions: { dismissOnEsc: false },
565
+ });
566
+ const readyCount = Array.from(bootState.systems.values()).filter(s => s.status === "ready").length;
567
+ const totalCount = bootState.systems.size;
568
+ const elapsed = ((Date.now() - bootState.bootStartTime) / 1000).toFixed(1);
569
+ ctx.log(`Mission Control: ${readyCount}/${totalCount} systems ready in ${elapsed}s`, "debug");
570
+ }
571
+ async function runChecksHeadless(root, ctx) {
572
+ const noop = () => { };
573
+ const hubSys = { name: "Hub", status: "booting", progress: 0, detail: "", startTime: Date.now() };
574
+ const memSys = { name: "Memory", status: "booting", progress: 0, detail: "", startTime: Date.now() };
575
+ await Promise.allSettled([
576
+ checkHub(root, hubSys, noop),
577
+ checkMemory(root, memSys, noop),
578
+ ]);
579
+ ctx.log(`Hub: ${hubSys.status} ${hubSys.detail} | Memory: ${memSys.status} ${memSys.detail}`, "debug");
580
+ }
581
+ //# sourceMappingURL=onboarding-v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboarding-v3.js","sourceRoot":"","sources":["../extensions/onboarding-v3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Peter Parker Extension — Full Orchestrator
3
+ *
4
+ * Replaces the WebSocket bridge with a proper Pi extension orchestrator.
5
+ * Subscribes to MAP events, queries Stratus predictor for optimal action,
6
+ * spawns Pi RPC subprocesses, and runs the review loop (max 5 iterations).
7
+ *
8
+ * @purpose Full Peter Parker orchestrator — review loop with Stratus dispatch via Pi RPC
9
+ */
10
+ import type { PiContext, JflConfig } from "./types.js";
11
+ export declare function setupPeterParker(ctx: PiContext, config: JflConfig): Promise<void>;
12
+ //# sourceMappingURL=peter-parker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peter-parker.d.ts","sourceRoot":"","sources":["../extensions/peter-parker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAmItD,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DvF"}