@dendelion/paper-camp 0.30.1 → 0.31.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 (64) hide show
  1. package/dist/chunks/daemon-state.61FBbbsV.js +332 -0
  2. package/dist/chunks/daemon-state.61FBbbsV.js.map +1 -0
  3. package/dist/chunks/{phase-progress.B7wQZk0L.js → phase-progress.CazP7K7B.js} +1045 -1008
  4. package/dist/chunks/phase-progress.CazP7K7B.js.map +1 -0
  5. package/dist/cli/index.js +9072 -7750
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/core/daemon-state/daemon-state.d.ts +16 -6
  8. package/dist/core/daemon-state/daemon-state.d.ts.map +1 -1
  9. package/dist/core/doctor/checks/structural.d.ts.map +1 -1
  10. package/dist/core/doctor/rules.d.ts +5 -0
  11. package/dist/core/doctor/rules.d.ts.map +1 -1
  12. package/dist/core/index.js +125 -114
  13. package/dist/core/machine-registry/machine-registry.d.ts +14 -0
  14. package/dist/core/machine-registry/machine-registry.d.ts.map +1 -1
  15. package/dist/core/night-checks.d.ts +14 -0
  16. package/dist/core/night-checks.d.ts.map +1 -0
  17. package/dist/core/night-checks.test.d.ts +2 -0
  18. package/dist/core/night-checks.test.d.ts.map +1 -0
  19. package/dist/core/night-findings.d.ts +9 -0
  20. package/dist/core/night-findings.d.ts.map +1 -0
  21. package/dist/core/night-findings.test.d.ts +2 -0
  22. package/dist/core/night-findings.test.d.ts.map +1 -0
  23. package/dist/core/night-gate.d.ts +14 -0
  24. package/dist/core/night-gate.d.ts.map +1 -0
  25. package/dist/core/night-gate.test.d.ts +2 -0
  26. package/dist/core/night-gate.test.d.ts.map +1 -0
  27. package/dist/core/night-health.d.ts +21 -0
  28. package/dist/core/night-health.d.ts.map +1 -0
  29. package/dist/core/night-health.test.d.ts +2 -0
  30. package/dist/core/night-health.test.d.ts.map +1 -0
  31. package/dist/core/night-prompts.d.ts +16 -0
  32. package/dist/core/night-prompts.d.ts.map +1 -0
  33. package/dist/core/night-prompts.test.d.ts +2 -0
  34. package/dist/core/night-prompts.test.d.ts.map +1 -0
  35. package/dist/core/night-shift.d.ts +33 -0
  36. package/dist/core/night-shift.d.ts.map +1 -0
  37. package/dist/core/night-shift.test.d.ts +2 -0
  38. package/dist/core/night-shift.test.d.ts.map +1 -0
  39. package/dist/core/night-suggestions.d.ts +14 -0
  40. package/dist/core/night-suggestions.d.ts.map +1 -0
  41. package/dist/core/night-suggestions.test.d.ts +2 -0
  42. package/dist/core/night-suggestions.test.d.ts.map +1 -0
  43. package/dist/core/night-worktree.d.ts +7 -0
  44. package/dist/core/night-worktree.d.ts.map +1 -0
  45. package/dist/core/night-worktree.test.d.ts +2 -0
  46. package/dist/core/night-worktree.test.d.ts.map +1 -0
  47. package/dist/core/parse/schemas.d.ts +68 -0
  48. package/dist/core/parse/schemas.d.ts.map +1 -1
  49. package/dist/core/stats.d.ts.map +1 -1
  50. package/dist/core/update-token.d.ts +5 -0
  51. package/dist/core/update-token.d.ts.map +1 -0
  52. package/dist/core/update-token.test.d.ts +2 -0
  53. package/dist/core/update-token.test.d.ts.map +1 -0
  54. package/dist/toolbar/toolbar.js +1431 -1387
  55. package/dist/toolbar/toolbar.js.map +1 -1
  56. package/dist/types/index.d.ts +134 -1
  57. package/dist/types/index.d.ts.map +1 -1
  58. package/dist/types/index.js +32 -12
  59. package/dist/types/index.js.map +1 -1
  60. package/dist/vite/index.js +1 -1
  61. package/package.json +1 -1
  62. package/dist/chunks/daemon-state.sxE7jqkU.js +0 -271
  63. package/dist/chunks/daemon-state.sxE7jqkU.js.map +0 -1
  64. package/dist/chunks/phase-progress.B7wQZk0L.js.map +0 -1
@@ -1,10 +1,21 @@
1
- import { MachineProjectSummary } from '../../types/index';
1
+ import { MachineNightGateResponse, MachineProjectSummary } from '../../types/index';
2
2
  export interface DaemonLinks {
3
3
  host: string;
4
4
  network?: string;
5
5
  tailnet?: string;
6
6
  tunnel?: string;
7
7
  }
8
+ export type UpdateEvent = {
9
+ kind: 'hooked';
10
+ version: string;
11
+ at: string;
12
+ } | {
13
+ kind: 'boot check current';
14
+ } | {
15
+ kind: 'failed';
16
+ version: string;
17
+ output: string;
18
+ };
8
19
  export interface DaemonState {
9
20
  pid: number;
10
21
  port: number;
@@ -12,10 +23,8 @@ export interface DaemonState {
12
23
  startedAt: string;
13
24
  share: boolean;
14
25
  tailnet: boolean;
15
- autoUpdate?: boolean;
16
- autoUpdateLastCheckedAt?: string;
17
- autoUpdatePendingVersion?: string | null;
18
- autoUpdateFailedVersion?: string | null;
26
+ updateEvent?: UpdateEvent;
27
+ updatePendingVersion?: string | null;
19
28
  links?: DaemonLinks;
20
29
  }
21
30
  export declare function daemonStatePath(): string;
@@ -25,12 +34,13 @@ export declare function fetchMachineProjects(port: number): Promise<MachineProje
25
34
  /** A response at all is proof the port is a live daemon, not just a live pid
26
35
  * (pids get reused, ports get taken by something else). */
27
36
  export declare function probeMachineEndpoint(port: number): Promise<boolean>;
37
+ export declare function fetchMachineNightGate(port: number): Promise<MachineNightGateResponse | null>;
28
38
  /** The one truth every lifecycle command reads: a state file, a live pid, and
29
39
  * a daemon answering on its port. Anything less is stale, so this prunes the
30
40
  * file before reporting not-running. */
31
41
  export declare function readRunningDaemonState(path: string): Promise<DaemonState | null>;
32
42
  export declare function formatDaemonStatusLine(state: DaemonState): string;
33
- export declare function formatAutoUpdateStatusLine(state: DaemonState): string;
43
+ export declare function formatUpdateStatusLine(state: DaemonState): string;
34
44
  /** Unlike the daemon banner, which prints only the single best way in, status
35
45
  * lists every link this machine has on offer. */
36
46
  export declare function formatDaemonLinks(links: DaemonLinks): string;
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-state.d.ts","sourceRoot":"","sources":["../../../src/core/daemon-state/daemon-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAItF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AA0DD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CAWhG;AAED;2DAC2D;AAC3D,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEzE;AAED;;wCAEwC;AACxC,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAStF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOjE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAYrE;AAED;iDACiD;AACjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAU5D;AAED;qEACqE;AACrE,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
1
+ {"version":3,"file":"daemon-state.d.ts","sourceRoot":"","sources":["../../../src/core/daemon-state/daemon-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC3B,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAqED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOnD;AAID,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,GAAG,IAAI,CAAC,CAWhG;AAED;2DAC2D;AAC3D,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEzE;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAU1C;AAED;;wCAEwC;AACxC,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAStF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOjE;AAQD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAcjE;AAED;iDACiD;AACjD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAU5D;AAED;qEACqE;AACrE,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../../src/core/doctor/checks/structural.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AA0I/D,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAKzC,CAAC"}
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../../src/core/doctor/checks/structural.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,WAAW,CAAC;AA0J/D,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAMzC,CAAC"}
@@ -41,6 +41,11 @@ export declare const DOCTOR_RULES: readonly [{
41
41
  readonly category: "structural";
42
42
  readonly severity: "error";
43
43
  readonly summary: "A kind: note entity carries a Phases section; notes never grow phases.";
44
+ }, {
45
+ readonly id: "duplicate-phases-section";
46
+ readonly category: "structural";
47
+ readonly severity: "error";
48
+ readonly summary: "A file carries more than one Phases heading — a redraft appended instead of replacing the existing list in place.";
44
49
  }, {
45
50
  readonly id: "archive-placement";
46
51
  readonly category: "structural";
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/core/doctor/rules.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4DiB,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAE3B,CAAC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/core/doctor/rules.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEiB,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAE/D,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,YAAY,EAAE,UAAU,CAE3B,CAAC"}
@@ -1,157 +1,168 @@
1
- import { A as s, C as t, a as r, b as o, D as n, c as i, d, e as c, M as l, P as m, f as P, g as S, S as E, h as T, i as h, j as R, k as p, l as g, m as v, n as C, o as y, p as I, q as _, r as f, s as A, t as F, u as N, v as D, w as L, x as u, y as O, z as M, B as k, E as b, F as j, G as w, H as G, I as H, J as U, K, L as x, N as B, O as q, Q as X, R as z, T as J, U as Q, V, W, X as Y, Y as Z, Z as $, _ as aa, $ as ea, a0 as sa, a1 as ta, a2 as ra, a3 as oa, a4 as na, a5 as ia, a6 as da, a7 as ca, a8 as la, a9 as ma, aa as Pa, ab as Sa, ac as Ea, ad as Ta, ae as ha, af as Ra, ag as pa, ah as ga, ai as va, aj as Ca, ak as ya, al as Ia, am as _a, an as fa, ao as Aa, ap as Fa, aq as Na, ar as Da, as as La, at as ua, au as Oa, av as Ma, aw as ka, ax as ba, ay as ja, az as wa, aA as Ga, aB as Ha, aC as Ua, aD as Ka, aE as xa, aF as Ba, aG as qa, aH as Xa, aI as za, aJ as Ja, aK as Qa, aL as Va, aM as Wa, aN as Ya, aO as Za, aP as $a, aQ as ae, aR as ee, aS as se, aT as te, aU as re, aV as oe, aW as ne, aX as ie, aY as de, aZ as ce, a_ as le, a$ as me, b0 as Pe, b1 as Se } from "../chunks/phase-progress.B7wQZk0L.js";
2
- import { a as Te, d as he, b as Re, c as pe, f as ge, e as ve, g as Ce, h as ye, i as Ie, j as _e, l as fe, k as Ae, m as Fe, p as Ne, r as De, n as Le, o as ue, s as Oe, q as Me, w as ke } from "../chunks/daemon-state.sxE7jqkU.js";
3
- import { AGENT_IDS as je, AGENT_LABELS as we, AGENT_OPTIONS as Ge, DEFAULT_AGENTS as He, MACHINE_PROJECTS_PATH as Ue, PAIRING_TOKEN_HEADER as Ke, PLAN_KINDS as xe, PLAN_STATUSES as Be, TOOLBAR_SEGMENT_IDS as qe, agentConfigsEqual as Xe, coerceAgentConfig as ze } from "../types/index.js";
1
+ import { A as s, C as t, a as r, b as n, D as o, c as i, d, e as c, M as l, P as m, f as P, g as S, S as E, h as T, i as h, j as g, k as C, l as _, m as I, n as R, o as p, p as v, q as A, r as N, s as f, t as y, u as F, v as D, w as L, x as u, y as M, z as O, B as H, E as b, F as k, G, H as j, I as w, J as U, K, L as x, N as B, O as q, Q as W, R as X, T as z, U as J, V as Q, W as V, X as Y, Y as Z, Z as $, _ as aa, $ as ea, a0 as sa, a1 as ta, a2 as ra, a3 as na, a4 as oa, a5 as ia, a6 as da, a7 as ca, a8 as la, a9 as ma, aa as Pa, ab as Sa, ac as Ea, ad as Ta, ae as ha, af as ga, ag as Ca, ah as _a, ai as Ia, aj as Ra, ak as pa, al as va, am as Aa, an as Na, ao as fa, ap as ya, aq as Fa, ar as Da, as as La, at as ua, au as Ma, av as Oa, aw as Ha, ax as ba, ay as ka, az as Ga, aA as ja, aB as wa, aC as Ua, aD as Ka, aE as xa, aF as Ba, aG as qa, aH as Wa, aI as Xa, aJ as za, aK as Ja, aL as Qa, aM as Va, aN as Ya, aO as Za, aP as $a, aQ as ae, aR as ee, aS as se, aT as te, aU as re, aV as ne, aW as oe, aX as ie, aY as de, aZ as ce, a_ as le, a$ as me, b0 as Pe, b1 as Se, b2 as Ee, b3 as Te, b4 as he } from "../chunks/phase-progress.CazP7K7B.js";
2
+ import { a as Ce, c as _e, d as Ie, b as Re, e as pe, f as ve, g as Ae, h as Ne, i as fe, j as ye, k as Fe, l as De, m as Le, n as ue, o as Me, p as Oe, r as He, q as be, s as ke, t as Ge, u as je, v as we, w as Ue, x as Ke } from "../chunks/daemon-state.61FBbbsV.js";
3
+ import { AGENT_IDS as Be, AGENT_LABELS as qe, AGENT_OPTIONS as We, DEFAULT_AGENTS as Xe, DEFAULT_NIGHT_CONFIG as ze, MACHINE_NIGHT_PATH as Je, MACHINE_PROJECTS_PATH as Qe, MACHINE_UPDATE_PATH as Ve, NIGHT_CHECK_IDS as Ye, PAIRING_TOKEN_HEADER as Ze, PLAN_KINDS as $e, PLAN_STATUSES as as, TOOLBAR_SEGMENT_IDS as es, agentConfigsEqual as ss, coerceAgentConfig as ts } from "../types/index.js";
4
4
  export {
5
- je as AGENT_IDS,
6
- we as AGENT_LABELS,
7
- Ge as AGENT_OPTIONS,
5
+ Be as AGENT_IDS,
6
+ qe as AGENT_LABELS,
7
+ We as AGENT_OPTIONS,
8
8
  s as AlreadyInitializedError,
9
9
  t as CLAUDE_SETTINGS_JSON,
10
10
  r as COMMIT_SCOPES,
11
- o as COMMIT_SHA_RE,
12
- He as DEFAULT_AGENTS,
13
- n as DOCTOR_CHECKS,
11
+ n as COMMIT_SHA_RE,
12
+ Xe as DEFAULT_AGENTS,
13
+ ze as DEFAULT_NIGHT_CONFIG,
14
+ o as DOCTOR_CHECKS,
14
15
  i as DOCTOR_FIXERS,
15
16
  d as DOCTOR_RULES,
16
17
  c as DOCTOR_RULES_BY_ID,
17
- Ue as MACHINE_PROJECTS_PATH,
18
+ Je as MACHINE_NIGHT_PATH,
19
+ Qe as MACHINE_PROJECTS_PATH,
20
+ Ve as MACHINE_UPDATE_PATH,
18
21
  l as MAX_TITLE_LENGTH,
19
- Ke as PAIRING_TOKEN_HEADER,
22
+ Ye as NIGHT_CHECK_IDS,
23
+ Ze as PAIRING_TOKEN_HEADER,
20
24
  m as PAPER_CAMP_VERSION,
21
25
  P as PHASE_MAX_FRACTION,
22
26
  S as PHASE_STALL_MS,
23
- xe as PLAN_KINDS,
24
- Be as PLAN_STATUSES,
27
+ $e as PLAN_KINDS,
28
+ as as PLAN_STATUSES,
25
29
  E as SKILL_MD_CONTENT,
26
30
  T as SUGGESTION_ENTRY_RE,
27
- qe as TOOLBAR_SEGMENT_IDS,
28
- Te as addProject,
31
+ es as TOOLBAR_SEGMENT_IDS,
32
+ Ce as addProject,
29
33
  h as addRoadmapCandidate,
30
- R as addRoadmapItem,
31
- p as advanceAnchor,
32
- g as agentConfigSchema,
33
- Xe as agentConfigsEqual,
34
- v as agentThreadMessage,
35
- C as applyEnvEntries,
36
- y as archiveEntityFile,
37
- I as assignEntityId,
38
- _ as assignPlanId,
39
- f as assignTicketId,
40
- A as branchName,
41
- F as classifyAnchor,
42
- N as clearPrCache,
43
- ze as coerceAgentConfig,
34
+ g as addRoadmapItem,
35
+ C as advanceAnchor,
36
+ _ as agentConfigSchema,
37
+ ss as agentConfigsEqual,
38
+ I as agentThreadMessage,
39
+ R as applyEnvEntries,
40
+ p as archiveEntityFile,
41
+ v as assignEntityId,
42
+ A as assignPlanId,
43
+ N as assignTicketId,
44
+ f as branchName,
45
+ y as classifyAnchor,
46
+ _e as clearNightProject,
47
+ F as clearPrCache,
48
+ ts as coerceAgentConfig,
44
49
  D as collectDoctorContext,
45
50
  L as collectParkedQuestions,
46
51
  u as computePlanContentHash,
47
- O as computePrTitle,
48
- M as createPrReview,
49
- he as daemonLogPath,
52
+ M as computePrTitle,
53
+ O as createPrReview,
54
+ Ie as daemonLogPath,
50
55
  Re as daemonStatePath,
51
- k as dateString,
56
+ H as dateString,
52
57
  pe as defaultRegistryPath,
53
58
  b as derivePrLabels,
54
- j as deriveRoadmapEvents,
55
- w as deriveSubjectVocabulary,
56
- G as describeFindings,
57
- H as deskCheckSchema,
59
+ k as deriveRoadmapEvents,
60
+ G as deriveSubjectVocabulary,
61
+ j as describeFindings,
62
+ w as deskCheckSchema,
58
63
  U as deskCiSchema,
59
64
  K as deskConfigSchema,
60
65
  x as deskServiceSchema,
61
66
  B as dispatchPrReview,
62
67
  q as ensureSubject,
63
- X as entityFrontmatterKnownKeys,
64
- z as entityFrontmatterSchema,
65
- J as entityToIdea,
66
- Q as entityToPlan,
67
- ge as fetchMachineProjects,
68
- V as fetchPrDiff,
69
- W as fetchUnresolvedThreads,
68
+ W as entityFrontmatterKnownKeys,
69
+ X as entityFrontmatterSchema,
70
+ z as entityToIdea,
71
+ J as entityToPlan,
72
+ ve as fetchMachineNightGate,
73
+ Ae as fetchMachineProjects,
74
+ Q as fetchPrDiff,
75
+ V as fetchUnresolvedThreads,
70
76
  Y as findArchivableIdeas,
71
77
  Z as findConsistencyIssues,
72
78
  $ as findReleaseLineForId,
73
79
  aa as findingSeverity,
74
- ve as formatAutoUpdateStatusLine,
75
- Ce as formatDaemonLinks,
76
- ye as formatDaemonStatusLine,
80
+ Ne as formatDaemonLinks,
81
+ fe as formatDaemonStatusLine,
77
82
  ea as formatEntityFile,
78
83
  sa as formatIdeaFile,
79
84
  ta as formatPlanEntry,
80
85
  ra as formatPlanFile,
81
- oa as formatPlans,
82
- na as formatReleaseNotesMarkdown,
86
+ na as formatPlans,
87
+ oa as formatReleaseNotesMarkdown,
88
+ ye as formatUpdateStatusLine,
83
89
  ia as getPrMapFetchedAt,
84
90
  da as ideaFrontmatterSchema,
85
91
  ca as initProject,
86
92
  la as isConventionalPrTitle,
87
93
  ma as isPhaseStalled,
88
- Ie as isProcessAlive,
89
- _e as isProjectMissing,
94
+ Fe as isProcessAlive,
95
+ De as isProjectMissing,
90
96
  Pa as linkRoadmapItem,
91
- fe as listProjects,
92
- Ae as loadRegistry,
93
- Fe as machineConfigDir,
97
+ Le as listProjects,
98
+ ue as loadRegistry,
99
+ Me as machineConfigDir,
94
100
  Sa as medianSegmentMs,
95
- Ea as paperCampConfigSchema,
96
- Ta as parseEntityFile,
97
- ha as parseEnv,
98
- Ra as parseFrontmatter,
99
- pa as parseIdeaFile,
100
- ga as parseIdeas,
101
+ Ea as nightConfigSchema,
102
+ Ta as nightCustomCheckSchema,
103
+ ha as nightWindowSchema,
104
+ ga as paperCampConfigSchema,
105
+ Ca as parseEntityFile,
106
+ _a as parseEnv,
107
+ Ia as parseFrontmatter,
108
+ Ra as parseIdeaFile,
109
+ pa as parseIdeas,
101
110
  va as parseNotificationLog,
102
- Ca as parsePlanFile,
103
- ya as parsePlans,
104
- Ia as parseRawEntries,
105
- _a as parseRoadmap,
106
- fa as parseSuggestions,
107
- Aa as phaseFraction,
108
- Fa as planDoctorFixes,
109
- Na as planFieldsSchema,
110
- Da as planFrontmatterSchema,
111
- Ne as probeMachineEndpoint,
112
- La as readEntities,
113
- ua as readEntitiesWithDerivedStatus,
114
- Oa as readFileMaybe,
115
- Ma as readNoteEntries,
116
- ka as readParkedQuestions,
117
- De as readRunningDaemonState,
118
- ba as readTaskLog,
119
- ja as readWorkEntries,
120
- Le as removeDaemonState,
121
- ue as removeProject,
122
- wa as removeRoadmapItem,
123
- Ga as removeSuggestionLine,
124
- Ha as renderConsistencyComment,
125
- Ua as renderPlanPhasesIntoBody,
126
- Ka as replyToReviewThread,
127
- xa as reportFindings,
128
- Ba as resolveEntityIdForCommit,
129
- qa as resolveEntityTrail,
130
- Xa as resolveIdFromCommitMessage,
131
- za as resolveIdeasForRelease,
132
- Ja as resolvePlanForPrRef,
133
- Qa as resolvePrimaryScope,
134
- Va as resolvePrsByEntity,
135
- Wa as resolveReleaseNotes,
136
- Ya as resolveReleaseRanges,
137
- Za as resolveReviewThread,
138
- $a as resolveRoadmap,
139
- ae as runDoctor,
140
- ee as runDoctorChecks,
141
- Oe as saveRegistry,
142
- Me as scanForProjects,
143
- se as scoutReviewFooter,
144
- te as serializeFrontmatter,
145
- re as sortFindings,
146
- oe as squashMergePr,
147
- ne as storedNotificationSchema,
148
- ie as syncConsistencyCommentToPr,
149
- de as syncPlanPhasesToPr,
150
- ce as syncPrLabelsToPr,
151
- le as syncPrReadinessToPr,
152
- me as syncPrTitleToPr,
153
- Pe as todayDateString,
154
- Se as validatePrTitle,
155
- ke as writeDaemonState
111
+ Aa as parsePlanFile,
112
+ Na as parsePlans,
113
+ fa as parseRawEntries,
114
+ ya as parseRoadmap,
115
+ Fa as parseSuggestions,
116
+ Da as phaseFraction,
117
+ La as planDoctorFixes,
118
+ ua as planFieldsSchema,
119
+ Ma as planFrontmatterSchema,
120
+ Oe as probeMachineEndpoint,
121
+ Oa as readEntities,
122
+ Ha as readEntitiesWithDerivedStatus,
123
+ ba as readFileMaybe,
124
+ ka as readNoteEntries,
125
+ Ga as readParkedQuestions,
126
+ He as readRunningDaemonState,
127
+ ja as readTaskLog,
128
+ wa as readWorkEntries,
129
+ be as removeDaemonState,
130
+ ke as removeProject,
131
+ Ua as removeRoadmapItem,
132
+ Ka as removeSuggestionLine,
133
+ xa as renderConsistencyComment,
134
+ Ba as renderPlanPhasesIntoBody,
135
+ qa as replyToReviewThread,
136
+ Wa as reportFindings,
137
+ Xa as resolveEntityIdForCommit,
138
+ za as resolveEntityTrail,
139
+ Ja as resolveIdFromCommitMessage,
140
+ Qa as resolveIdeasForRelease,
141
+ Va as resolvePlanForPrRef,
142
+ Ya as resolvePrimaryScope,
143
+ Za as resolvePrsByEntity,
144
+ $a as resolveReleaseNotes,
145
+ ae as resolveReleaseRanges,
146
+ ee as resolveReviewThread,
147
+ se as resolveRoadmap,
148
+ te as runDoctor,
149
+ re as runDoctorChecks,
150
+ Ge as saveRegistry,
151
+ je as scanForProjects,
152
+ ne as scoutReviewFooter,
153
+ oe as serializeFrontmatter,
154
+ we as setNightPause,
155
+ Ue as setNightProject,
156
+ ie as sortFindings,
157
+ de as squashMergePr,
158
+ ce as storedNotificationSchema,
159
+ le as syncConsistencyCommentToPr,
160
+ me as syncPlanPhasesToPr,
161
+ Pe as syncPrLabelsToPr,
162
+ Se as syncPrReadinessToPr,
163
+ Ee as syncPrTitleToPr,
164
+ Te as todayDateString,
165
+ he as validatePrTitle,
166
+ Ke as writeDaemonState
156
167
  };
157
168
  //# sourceMappingURL=index.js.map
@@ -3,9 +3,15 @@ export interface MachineProject {
3
3
  path: string;
4
4
  name: string;
5
5
  }
6
+ export interface NightSelection {
7
+ slug: string;
8
+ pausedUntil?: number;
9
+ }
6
10
  export interface MachineRegistry {
7
11
  version: 1;
8
12
  projects: MachineProject[];
13
+ /** The one project `paper-camp daemon` runs the night shift for (IDEA-241); absent means off. */
14
+ night?: NightSelection;
9
15
  }
10
16
  export declare function machineConfigDir(): string;
11
17
  export declare function defaultRegistryPath(): string;
@@ -29,6 +35,14 @@ export interface RemoveProjectResult {
29
35
  }
30
36
  export declare function removeProject(registry: MachineRegistry, slug: string): RemoveProjectResult;
31
37
  export declare function listProjects(registry: MachineRegistry): MachineProject[];
38
+ export interface SetNightProjectResult {
39
+ registry: MachineRegistry;
40
+ ok: boolean;
41
+ }
42
+ /** Fails for a slug not in `projects` — the night shift only ever runs a registered project. */
43
+ export declare function setNightProject(registry: MachineRegistry, slug: string): SetNightProjectResult;
44
+ export declare function clearNightProject(registry: MachineRegistry): MachineRegistry;
45
+ export declare function setNightPause(registry: MachineRegistry, pausedUntil: number | null): MachineRegistry;
32
46
  /** A registered path is missing once its `papercamp/config.json` is gone — the
33
47
  * mounter, the machine-projects endpoint, and `ls`/`status` all key off this. */
34
48
  export declare function isProjectMissing(path: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"machine-registry.d.ts","sourceRoot":"","sources":["../../../src/core/machine-registry/machine-registry.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAID,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAwBD;iDACiD;AACjD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgBzE;AAED;gEACgE;AAChE,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF;AAiBD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;0EAC0E;AAC1E,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,gBAAgB,CAalB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAQ1F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,cAAc,EAAE,CAExE;AAED;iFACiF;AACjF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAwBD,iGAAiG;AACjG,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAYvE"}
1
+ {"version":3,"file":"machine-registry.d.ts","sourceRoot":"","sources":["../../../src/core/machine-registry/machine-registry.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,iGAAiG;IACjG,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAID,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAmCD;iDACiD;AACjD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgBzE;AAED;gEACgE;AAChE,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzF;AAiBD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;0EAC0E;AAC1E,wBAAgB,UAAU,CACxB,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,gBAAgB,CAalB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAQ1F;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,cAAc,EAAE,CAExE;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,eAAe,CAAC;IAC1B,EAAE,EAAE,OAAO,CAAC;CACb;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAK9F;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAI5E;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EACzB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,eAAe,CAOjB;AAED;iFACiF;AACjF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAwBD,iGAAiG;AACjG,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAYvE"}
@@ -0,0 +1,14 @@
1
+ import { NightCheckId, NightConfig } from '../types/index';
2
+ export interface NightBuiltinCheck {
3
+ id: NightCheckId;
4
+ name: string;
5
+ instructions: string;
6
+ }
7
+ export declare const NIGHT_BUILTIN_CHECKS: NightBuiltinCheck[];
8
+ export interface ResolvedNightCheck {
9
+ id: string;
10
+ name: string;
11
+ instructions: string;
12
+ }
13
+ export declare function resolveNightChecks(config: NightConfig | undefined): ResolvedNightCheck[];
14
+ //# sourceMappingURL=night-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-checks.d.ts","sourceRoot":"","sources":["../../src/core/night-checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAgCnD,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,kBAAkB,EAAE,CAWxF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-checks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-checks.test.d.ts","sourceRoot":"","sources":["../../src/core/night-checks.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { NightFindingSeverity, NightRawFinding } from '../types/index';
2
+ export declare function parseNightCheckFindings(resultText: string): NightRawFinding[] | undefined;
3
+ export interface NightConfirmVerdict {
4
+ confirmed: boolean;
5
+ severity: NightFindingSeverity | null;
6
+ reasoning: string;
7
+ }
8
+ export declare function parseNightConfirmVerdict(resultText: string): NightConfirmVerdict | undefined;
9
+ //# sourceMappingURL=night-findings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-findings.d.ts","sourceRoot":"","sources":["../../src/core/night-findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI5E,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,SAAS,CAmBzF;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAyB5F"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-findings.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-findings.test.d.ts","sourceRoot":"","sources":["../../src/core/night-findings.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { NightGateStatus, NightWindow, RateLimitSnapshot } from '../types/index';
2
+ export declare function isWithinNightWindow(now: Date, window: NightWindow | undefined): boolean;
3
+ export interface NightGateInput {
4
+ now: number;
5
+ lastDashboardRequestAt: number | null;
6
+ taskRunning: boolean;
7
+ snapshot: RateLimitSnapshot | null;
8
+ ceiling: number;
9
+ floor: number;
10
+ window?: NightWindow;
11
+ pausedUntil?: number | null;
12
+ }
13
+ export declare function evaluateNightGate(input: NightGateInput): NightGateStatus;
14
+ //# sourceMappingURL=night-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-gate.d.ts","sourceRoot":"","sources":["../../src/core/night-gate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAStF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAOvF;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAuCxE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-gate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-gate.test.d.ts","sourceRoot":"","sources":["../../src/core/night-gate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { ChunkHealth, ChunkSignals, NightHealthMap } from '../types/index';
2
+ export declare function computeChurnByChunk(root: string, chunkPaths: string[]): Promise<Map<string, number>>;
3
+ interface CoverageFileEntry {
4
+ lines?: {
5
+ total?: number;
6
+ covered?: number;
7
+ };
8
+ }
9
+ export declare function chunkCoveragePct(summary: Record<string, CoverageFileEntry> | null, chunkAbsPath: string): number | null;
10
+ export declare function scoreChunk(signals: ChunkSignals): number;
11
+ export declare function computeNightHealthMap(root: string): Promise<NightHealthMap>;
12
+ export declare function markChunkReviewed(root: string, chunkPath: string, commit: string, at?: string): Promise<void>;
13
+ /** The chunks one night reviews: above the threshold, highest score first, at most
14
+ * `maxChunks`, skipping any already reviewed tonight. */
15
+ export declare function selectNightChunks(map: NightHealthMap, options: {
16
+ threshold: number;
17
+ maxChunks: number;
18
+ exclude?: ReadonlySet<string>;
19
+ }): ChunkHealth[];
20
+ export {};
21
+ //# sourceMappingURL=night-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-health.d.ts","sourceRoot":"","sources":["../../src/core/night-health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmF7F,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuB9B;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAgBD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI,EACjD,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI,CAWf;AAaD,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAYxD;AAQD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCjF;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,EAAE,GAAE,MAAiC,GACpC,OAAO,CAAC,IAAI,CAAC,CA4Bf;AAED;0DAC0D;AAC1D,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,GAC/E,WAAW,EAAE,CAKf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-health.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-health.test.d.ts","sourceRoot":"","sources":["../../src/core/night-health.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import { NightRawFinding } from '../types/index';
2
+ export interface NightCheckPromptInput {
3
+ name: string;
4
+ instructions: string;
5
+ chunkPath: string;
6
+ files: string[];
7
+ sinceCommit: string | null;
8
+ diff: string;
9
+ }
10
+ export declare function buildNightCheckPrompt(input: NightCheckPromptInput): string;
11
+ export interface NightConfirmPromptInput {
12
+ checkName: string;
13
+ finding: NightRawFinding;
14
+ }
15
+ export declare function buildNightConfirmPrompt(input: NightConfirmPromptInput): string;
16
+ //# sourceMappingURL=night-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-prompts.d.ts","sourceRoot":"","sources":["../../src/core/night-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAoB1E;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAe9E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-prompts.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-prompts.test.d.ts","sourceRoot":"","sources":["../../src/core/night-prompts.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ import { MachineNightGateResponse, NightHealthMap } from '../types/index';
2
+ export declare const NIGHT_TICK_MS: number;
3
+ export declare function isNightPassRunning(root: string): boolean;
4
+ export declare function markNightPass(root: string, running: boolean): void;
5
+ export interface NightShiftProject {
6
+ slug: string;
7
+ path: string;
8
+ }
9
+ export interface NightShiftDeps {
10
+ evaluateGate: () => Promise<MachineNightGateResponse>;
11
+ findProject: (slug: string) => Promise<NightShiftProject | null>;
12
+ readSettings: (root: string) => Promise<{
13
+ threshold: number;
14
+ maxChunks: number;
15
+ }>;
16
+ computeMap: (root: string) => Promise<NightHealthMap>;
17
+ runPass: (project: NightShiftProject, chunkPath: string) => Promise<boolean>;
18
+ isMachineBusy: () => boolean;
19
+ now?: () => number;
20
+ log?: (line: string) => void;
21
+ }
22
+ export interface NightShiftState {
23
+ night: string | null;
24
+ reviewedTonight: Set<string>;
25
+ running: boolean;
26
+ }
27
+ export declare function createNightShiftState(): NightShiftState;
28
+ /** One tick of the shift: when the gate is open, review the chunks above the
29
+ * threshold in score order, re-checking the gate before every pass and stopping
30
+ * the moment it closes. A chunk is reviewed at most once per night. */
31
+ export declare function nightShiftTick(state: NightShiftState, deps: NightShiftDeps): Promise<void>;
32
+ export declare function startNightShift(deps: NightShiftDeps, tickMs?: number): () => void;
33
+ //# sourceMappingURL=night-shift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-shift.d.ts","sourceRoot":"","sources":["../../src/core/night-shift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAG/E,eAAO,MAAM,aAAa,QAAgB,CAAC;AAM3C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAGlE;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACtD,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACjE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7E,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAMD;;wEAEwE;AACxE,wBAAsB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChG;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,GAAE,MAAsB,GAAG,MAAM,IAAI,CAWhG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=night-shift.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-shift.test.d.ts","sourceRoot":"","sources":["../../src/core/night-shift.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { NightFinding, NightReportGroup, NightSuggestionEntry, TaskLogEntry } from '../types/index';
2
+ export declare const NIGHT_FINDINGS_HEADING = "## Night findings";
3
+ export declare function parseNightFindings(markdown: string): NightSuggestionEntry[];
4
+ export declare function appendNightFindings(markdown: string, entries: NightSuggestionEntry[]): string;
5
+ export declare function removeNightFindingLine(markdown: string, target: NightSuggestionEntry): string;
6
+ export declare function buildNightReportGroups(findings: NightSuggestionEntry[], taskLog: TaskLogEntry[]): NightReportGroup[];
7
+ export declare function readNightFindings(root: string): Promise<NightSuggestionEntry[]>;
8
+ export interface OpenIdeaCandidate {
9
+ title: string;
10
+ body: string;
11
+ }
12
+ export declare function isOverlappingFinding(finding: NightFinding, openIdeas: OpenIdeaCandidate[], earlierFindings: NightSuggestionEntry[]): boolean;
13
+ export declare function dropOverlappingFindings(findings: NightFinding[], openIdeas: OpenIdeaCandidate[], earlierFindings: NightSuggestionEntry[]): NightFinding[];
14
+ //# sourceMappingURL=night-suggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"night-suggestions.d.ts","sourceRoot":"","sources":["../../src/core/night-suggestions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EAEZ,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACb,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAqC1D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAO3E;AAkBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAO7F;AAeD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAS7F;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,OAAO,EAAE,YAAY,EAAE,GACtB,gBAAgB,EAAE,CA6BpB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CASrF;AAsBD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,eAAe,EAAE,oBAAoB,EAAE,GACtC,OAAO,CAWT;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,eAAe,EAAE,oBAAoB,EAAE,GACtC,YAAY,EAAE,CAEhB"}