@dv.nghiem/flowdeck 0.5.0 → 0.5.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.
Files changed (37) hide show
  1. package/dist/dashboard/lib/state-reader.d.ts +2 -1
  2. package/dist/dashboard/lib/state-reader.d.ts.map +1 -1
  3. package/dist/dashboard/server.mjs +29 -1
  4. package/dist/dashboard/types.d.ts +14 -0
  5. package/dist/dashboard/types.d.ts.map +1 -1
  6. package/dist/dashboard/views/index.ejs +2 -0
  7. package/dist/dashboard/views/partials/token-budget.ejs +35 -0
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +4740 -4389
  10. package/dist/lib/lazy.d.ts +12 -0
  11. package/dist/lib/lazy.d.ts.map +1 -0
  12. package/dist/services/context-ingress.d.ts +8 -2
  13. package/dist/services/context-ingress.d.ts.map +1 -1
  14. package/dist/services/council-runner.d.ts +19 -0
  15. package/dist/services/council-runner.d.ts.map +1 -0
  16. package/dist/services/event-handlers/command-executed-handler.d.ts +9 -0
  17. package/dist/services/event-handlers/command-executed-handler.d.ts.map +1 -0
  18. package/dist/services/event-handlers/index.d.ts +6 -0
  19. package/dist/services/event-handlers/index.d.ts.map +1 -0
  20. package/dist/services/event-handlers/session-error-handler.d.ts +8 -0
  21. package/dist/services/event-handlers/session-error-handler.d.ts.map +1 -0
  22. package/dist/services/event-handlers/session-idle-handler.d.ts +9 -0
  23. package/dist/services/event-handlers/session-idle-handler.d.ts.map +1 -0
  24. package/dist/services/event-handlers/tool-outcome-handler.d.ts +11 -0
  25. package/dist/services/event-handlers/tool-outcome-handler.d.ts.map +1 -0
  26. package/dist/services/event-handlers/types.d.ts +42 -0
  27. package/dist/services/event-handlers/types.d.ts.map +1 -0
  28. package/dist/services/harness-controller.d.ts.map +1 -1
  29. package/dist/services/harness-types.d.ts +17 -10
  30. package/dist/services/harness-types.d.ts.map +1 -1
  31. package/dist/services/token-metrics.d.ts +15 -0
  32. package/dist/services/token-metrics.d.ts.map +1 -1
  33. package/dist/tools/council.d.ts.map +1 -1
  34. package/dist/tools/delegate.d.ts.map +1 -1
  35. package/dist/types/hooks.d.ts +54 -0
  36. package/dist/types/hooks.d.ts.map +1 -0
  37. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import type { DashboardData, Readiness } from "../types";
1
+ import type { DashboardData, Readiness, TokenBudgetPanelData } from "../types";
2
+ export declare function readBudgetData(dir: string): TokenBudgetPanelData | undefined;
2
3
  export declare function computeReadiness(dir: string): Readiness;
3
4
  export declare function readDashboardData(dir: string): DashboardData;
4
5
  //# sourceMappingURL=state-reader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state-reader.d.ts","sourceRoot":"","sources":["../../../src/dashboard/lib/state-reader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,aAAa,EAAmE,SAAS,EAAkB,MAAM,UAAU,CAAA;AAgLhJ,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAiCvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAwE5D"}
1
+ {"version":3,"file":"state-reader.d.ts","sourceRoot":"","sources":["../../../src/dashboard/lib/state-reader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAS,aAAa,EAAmE,SAAS,EAAkB,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAgLtK,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAmB5E;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAiCvD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAyE5D"}
@@ -12756,6 +12756,21 @@ function checkSessionHealth(dir) {
12756
12756
  return { name: "Session Health", status: "warn", message: "Unable to check STATE.md age" };
12757
12757
  }
12758
12758
  }
12759
+ function readBudgetData(dir) {
12760
+ const path = join6(dir, ".planning", "cache", "latest-context.json");
12761
+ if (!existsSync6(path))
12762
+ return;
12763
+ try {
12764
+ const raw = readFileSync6(path, "utf-8");
12765
+ const parsed = JSON.parse(raw);
12766
+ if (typeof parsed.sessionID === "string" && typeof parsed.runId === "string" && typeof parsed.componentBudgets === "object" && parsed.componentBudgets !== null) {
12767
+ return parsed;
12768
+ }
12769
+ return;
12770
+ } catch {
12771
+ return;
12772
+ }
12773
+ }
12759
12774
  function computeReadiness(dir) {
12760
12775
  const state = readPlanningState(dir);
12761
12776
  const traces = listTraces(dir, 20);
@@ -12848,7 +12863,8 @@ function readDashboardData(dir) {
12848
12863
  })),
12849
12864
  toolFailureCount: 0,
12850
12865
  tdd: buildTDDDashboardState(state),
12851
- readiness: computeReadiness(dir)
12866
+ readiness: computeReadiness(dir),
12867
+ budgetPanel: readBudgetData(dir)
12852
12868
  };
12853
12869
  }
12854
12870
  function buildTDDDashboardState(state) {
@@ -13630,6 +13646,18 @@ async function startServer(port, projectDir) {
13630
13646
  }
13631
13647
  return;
13632
13648
  }
13649
+ if (req.url === "/budgets") {
13650
+ try {
13651
+ const template = fs2.readFileSync(path2.join(viewsPath, "partials", "token-budget.ejs"), "utf-8");
13652
+ const html = ejs_default.render(template, { budgetPanel: data.budgetPanel });
13653
+ res.writeHead(200, { "Content-Type": "text/html" });
13654
+ res.end(html);
13655
+ } catch (err) {
13656
+ res.writeHead(500);
13657
+ res.end("Template error");
13658
+ }
13659
+ return;
13660
+ }
13633
13661
  res.writeHead(404);
13634
13662
  res.end("Not Found");
13635
13663
  });
@@ -132,6 +132,19 @@ export interface GovernanceDashboardState {
132
132
  runs: number;
133
133
  }>;
134
134
  }
135
+ export interface TokenBudgetPanelData {
136
+ sessionID: string;
137
+ runId: string;
138
+ command: string;
139
+ description: string;
140
+ componentBudgets: Record<string, {
141
+ component: string;
142
+ usedTokens: number;
143
+ limitTokens: number;
144
+ source: string;
145
+ }>;
146
+ writtenAt: string;
147
+ }
135
148
  export interface DashboardData {
136
149
  project: string;
137
150
  phases: Phase[];
@@ -150,5 +163,6 @@ export interface DashboardData {
150
163
  tdd?: TDDDashboardState;
151
164
  governance?: GovernanceDashboardState;
152
165
  readiness?: Readiness;
166
+ budgetPanel?: TokenBudgetPanelData;
153
167
  }
154
168
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,CAAA;IAC9C,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,iBAAiB,EAAE,MAAM,CAAA;IACzB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,IAAI,GAAG,WAAW,GAAG,UAAU,CAAA;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAChB;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,gBAAgB,EAAE,MAAM,CAAA;IACxB,iBAAiB,EAAE,MAAM,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,EAAE,MAAM,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,YAAY,EAAE,iBAAiB,EAAE,CAAA;IACjC,uCAAuC;IACvC,SAAS,EAAE,eAAe,EAAE,CAAA;IAC5B,oCAAoC;IACpC,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,kCAAkC;IAClC,mBAAmB,EAAE,MAAM,CAAA;IAC3B,iCAAiC;IACjC,UAAU,EAAE,gBAAgB,EAAE,CAAA;IAC9B,wCAAwC;IACxC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,iDAAiD;IACjD,aAAa,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC3E;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;QAC/B,SAAS,EAAE,MAAM,CAAA;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,MAAM,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;IACF,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/D,YAAY,EAAE,MAAM,CAAA;IAEpB,gBAAgB,EAAE,gBAAgB,EAAE,CAAA;IACpC,UAAU,EAAE,SAAS,EAAE,CAAA;IACvB,gBAAgB,EAAE,eAAe,EAAE,CAAA;IACnC,SAAS,EAAE,gBAAgB,EAAE,CAAA;IAC7B,gBAAgB,EAAE,MAAM,CAAA;IAExB,GAAG,CAAC,EAAE,iBAAiB,CAAA;IAEvB,UAAU,CAAC,EAAE,wBAAwB,CAAA;IAErC,SAAS,CAAC,EAAE,SAAS,CAAA;IAErB,WAAW,CAAC,EAAE,oBAAoB,CAAA;CACnC"}
@@ -274,6 +274,8 @@
274
274
 
275
275
  <%- include('partials/progress.ejs') %>
276
276
 
277
+ <%- include('partials/token-budget.ejs') %>
278
+
277
279
  <div class="space-lg"></div>
278
280
 
279
281
  <div class="section-card">
@@ -0,0 +1,35 @@
1
+ <% if (budgetPanel) { %>
2
+ <div class="space-lg"></div>
3
+ <div class="section-card">
4
+ <p class="label">Token Budget Breakdown</p>
5
+ <div class="space-sm"></div>
6
+ <p class="body" style="color: var(--color-text-muted); font-size: 11px;">
7
+ Run: <code><%= budgetPanel.runId %></code> · Session: <code><%= budgetPanel.sessionID %></code> · Source: <%= budgetPanel.componentBudgets.total?.source %>
8
+ </p>
9
+ <table class="table">
10
+ <thead>
11
+ <tr>
12
+ <th>Component</th>
13
+ <th>Used</th>
14
+ <th>Limit</th>
15
+ <th>Usage</th>
16
+ </tr>
17
+ </thead>
18
+ <tbody>
19
+ <% for (const [key, budget] of Object.entries(budgetPanel.componentBudgets)) { %>
20
+ <tr>
21
+ <td><%= budget.component %></td>
22
+ <td><%= budget.usedTokens.toLocaleString() %></td>
23
+ <td><%= budget.limitTokens.toLocaleString() %></td>
24
+ <td>
25
+ <% const pct = budget.limitTokens > 0 ? Math.round((budget.usedTokens / budget.limitTokens) * 100) : 0 %>
26
+ <span class="badge badge-<%= pct >= 90 ? 'fail' : pct >= 70 ? 'running' : 'ok' %>">
27
+ <%= pct %>%
28
+ </span>
29
+ </td>
30
+ </tr>
31
+ <% } %>
32
+ </tbody>
33
+ </table>
34
+ </div>
35
+ <% } %>
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAwGjD,QAAA,MAAM,MAAM,EAAE,MAqSb,CAAA;AAED,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAkHjD,QAAA,MAAM,MAAM,EAAE,MAqSb,CAAA;AAED,eAAe,MAAM,CAAA"}