@on-par/factory-cli 0.9.11-next.7 → 0.9.11-next.71

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 (152) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/base-health-ci.d.ts +16 -2
  3. package/dist/cli/base-health-ci.d.ts.map +1 -1
  4. package/dist/cli/base-health-ci.js +30 -5
  5. package/dist/cli/base-health-ci.js.map +1 -1
  6. package/dist/cli/base-hold.d.ts +7 -13
  7. package/dist/cli/base-hold.d.ts.map +1 -1
  8. package/dist/cli/base-hold.js +44 -30
  9. package/dist/cli/base-hold.js.map +1 -1
  10. package/dist/cli/cost-json.d.ts +5 -31
  11. package/dist/cli/cost-json.d.ts.map +1 -1
  12. package/dist/cli/cost-json.js +13 -2
  13. package/dist/cli/cost-json.js.map +1 -1
  14. package/dist/cli/daemon.d.ts +2 -15
  15. package/dist/cli/daemon.d.ts.map +1 -1
  16. package/dist/cli/daemon.js +5 -11
  17. package/dist/cli/daemon.js.map +1 -1
  18. package/dist/cli/doctor.d.ts.map +1 -1
  19. package/dist/cli/doctor.js +3 -1
  20. package/dist/cli/doctor.js.map +1 -1
  21. package/dist/cli/harness-check.d.ts.map +1 -1
  22. package/dist/cli/harness-check.js +8 -3
  23. package/dist/cli/harness-check.js.map +1 -1
  24. package/dist/cli/help-groups.d.ts.map +1 -1
  25. package/dist/cli/help-groups.js +16 -2
  26. package/dist/cli/help-groups.js.map +1 -1
  27. package/dist/cli/index.d.ts +24 -32
  28. package/dist/cli/index.d.ts.map +1 -1
  29. package/dist/cli/index.js +82 -174
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/json-contract.d.ts +307 -0
  32. package/dist/cli/json-contract.d.ts.map +1 -0
  33. package/dist/cli/json-contract.js +209 -0
  34. package/dist/cli/json-contract.js.map +1 -0
  35. package/dist/cli/land-pr.d.ts.map +1 -1
  36. package/dist/cli/land-pr.js +5 -0
  37. package/dist/cli/land-pr.js.map +1 -1
  38. package/dist/cli/land.d.ts.map +1 -1
  39. package/dist/cli/land.js +19 -1
  40. package/dist/cli/land.js.map +1 -1
  41. package/dist/cli/lane-environment-pause-error.d.ts +3 -0
  42. package/dist/cli/lane-environment-pause-error.d.ts.map +1 -1
  43. package/dist/cli/lane-environment-pause-error.js +4 -0
  44. package/dist/cli/lane-environment-pause-error.js.map +1 -1
  45. package/dist/cli/logs.d.ts +4 -0
  46. package/dist/cli/logs.d.ts.map +1 -1
  47. package/dist/cli/logs.js +6 -2
  48. package/dist/cli/logs.js.map +1 -1
  49. package/dist/cli/model-override-messages.d.ts +4 -0
  50. package/dist/cli/model-override-messages.d.ts.map +1 -0
  51. package/dist/cli/model-override-messages.js +15 -0
  52. package/dist/cli/model-override-messages.js.map +1 -0
  53. package/dist/cli/program-observe.d.ts.map +1 -1
  54. package/dist/cli/program-observe.js +6 -0
  55. package/dist/cli/program-observe.js.map +1 -1
  56. package/dist/cli/program-run-work.d.ts.map +1 -1
  57. package/dist/cli/program-run-work.js +12 -0
  58. package/dist/cli/program-run-work.js.map +1 -1
  59. package/dist/cli/queue-add-json.d.ts +3 -25
  60. package/dist/cli/queue-add-json.d.ts.map +1 -1
  61. package/dist/cli/queue-add-json.js.map +1 -1
  62. package/dist/cli/queue-list.d.ts +6 -24
  63. package/dist/cli/queue-list.d.ts.map +1 -1
  64. package/dist/cli/queue-list.js +6 -1
  65. package/dist/cli/queue-list.js.map +1 -1
  66. package/dist/cli/queue-preflight.d.ts +50 -0
  67. package/dist/cli/queue-preflight.d.ts.map +1 -0
  68. package/dist/cli/queue-preflight.js +327 -0
  69. package/dist/cli/queue-preflight.js.map +1 -0
  70. package/dist/cli/risk-policy.d.ts +8 -0
  71. package/dist/cli/risk-policy.d.ts.map +1 -0
  72. package/dist/cli/risk-policy.js +34 -0
  73. package/dist/cli/risk-policy.js.map +1 -0
  74. package/dist/cli/run-branch.d.ts +26 -0
  75. package/dist/cli/run-branch.d.ts.map +1 -0
  76. package/dist/cli/run-branch.js +42 -0
  77. package/dist/cli/run-branch.js.map +1 -0
  78. package/dist/cli/run-lane.d.ts.map +1 -1
  79. package/dist/cli/run-lane.js +9 -1
  80. package/dist/cli/run-lane.js.map +1 -1
  81. package/dist/cli/run.d.ts.map +1 -1
  82. package/dist/cli/run.js +17 -11
  83. package/dist/cli/run.js.map +1 -1
  84. package/dist/cli/runs-diffstat.d.ts +6 -25
  85. package/dist/cli/runs-diffstat.d.ts.map +1 -1
  86. package/dist/cli/runs-diffstat.js.map +1 -1
  87. package/dist/cli/runs.d.ts +4 -19
  88. package/dist/cli/runs.d.ts.map +1 -1
  89. package/dist/cli/runs.js +1 -1
  90. package/dist/cli/runs.js.map +1 -1
  91. package/dist/cli/self-update-stop.d.ts +7 -0
  92. package/dist/cli/self-update-stop.d.ts.map +1 -0
  93. package/dist/cli/self-update-stop.js +27 -0
  94. package/dist/cli/self-update-stop.js.map +1 -0
  95. package/dist/cli/ship-reports.d.ts +34 -0
  96. package/dist/cli/ship-reports.d.ts.map +1 -0
  97. package/dist/cli/ship-reports.js +54 -0
  98. package/dist/cli/ship-reports.js.map +1 -0
  99. package/dist/cli/ship-run-state.d.ts +5 -0
  100. package/dist/cli/ship-run-state.d.ts.map +1 -0
  101. package/dist/cli/ship-run-state.js +17 -0
  102. package/dist/cli/ship-run-state.js.map +1 -0
  103. package/dist/cli/ship-steps.d.ts +4 -47
  104. package/dist/cli/ship-steps.d.ts.map +1 -1
  105. package/dist/cli/ship-steps.js +22 -82
  106. package/dist/cli/ship-steps.js.map +1 -1
  107. package/dist/cli/ship.d.ts +2 -0
  108. package/dist/cli/ship.d.ts.map +1 -1
  109. package/dist/cli/ship.js +64 -67
  110. package/dist/cli/ship.js.map +1 -1
  111. package/dist/cli/slice-index.d.ts +16 -0
  112. package/dist/cli/slice-index.d.ts.map +1 -0
  113. package/dist/cli/slice-index.js +27 -0
  114. package/dist/cli/slice-index.js.map +1 -0
  115. package/dist/cli/status-json.d.ts +7 -28
  116. package/dist/cli/status-json.d.ts.map +1 -1
  117. package/dist/cli/status-json.js +3 -1
  118. package/dist/cli/status-json.js.map +1 -1
  119. package/dist/cli/status.d.ts.map +1 -1
  120. package/dist/cli/status.js +4 -1
  121. package/dist/cli/status.js.map +1 -1
  122. package/dist/cli/steer.d.ts +50 -0
  123. package/dist/cli/steer.d.ts.map +1 -0
  124. package/dist/cli/steer.js +145 -0
  125. package/dist/cli/steer.js.map +1 -0
  126. package/dist/cli/steerability-report.d.ts +9 -0
  127. package/dist/cli/steerability-report.d.ts.map +1 -0
  128. package/dist/cli/steerability-report.js +28 -0
  129. package/dist/cli/steerability-report.js.map +1 -0
  130. package/dist/cli/stop-resume-json.d.ts +2 -10
  131. package/dist/cli/stop-resume-json.d.ts.map +1 -1
  132. package/dist/cli/stop-resume-json.js +1 -0
  133. package/dist/cli/stop-resume-json.js.map +1 -1
  134. package/dist/cli/usage-json.d.ts +4 -13
  135. package/dist/cli/usage-json.d.ts.map +1 -1
  136. package/dist/cli/usage-json.js.map +1 -1
  137. package/dist/cli/worktree-reap.d.ts.map +1 -1
  138. package/dist/cli/worktree-reap.js +7 -1
  139. package/dist/cli/worktree-reap.js.map +1 -1
  140. package/package.json +8 -5
  141. package/schemas/cost.schema.json +114 -0
  142. package/schemas/daemon-status.schema.json +44 -0
  143. package/schemas/logs-line.schema.json +123 -0
  144. package/schemas/queue-add.schema.json +73 -0
  145. package/schemas/queue-list.schema.json +77 -0
  146. package/schemas/resume.schema.json +36 -0
  147. package/schemas/runs-diffstat.schema.json +81 -0
  148. package/schemas/runs.schema.json +75 -0
  149. package/schemas/status.schema.json +200 -0
  150. package/schemas/stop.schema.json +36 -0
  151. package/schemas/unpark.schema.json +57 -0
  152. package/schemas/usage.schema.json +28 -0
package/README.md CHANGED
@@ -16,7 +16,7 @@ factory --version
16
16
  factory doctor
17
17
  ```
18
18
 
19
- Also requires `git`, one supported coding agent CLI (see [docs/agents.md](https://github.com/on-par/software-factory/blob/main/docs/agents.md)), signed in, and the GitHub CLI signed in with `gh auth login`. The factory reads `GITHUB_TOKEN`, then `GH_TOKEN`, and falls back to `gh auth token`. `factory doctor` checks all of this and prints a fix for anything missing. It also checks your git identity and the sandbox runtime, and it runs outside a repo. Global or repo-local `git config` for `user.name` and `user.email` both work. On Linux, install `firejail` first: without it, Codex runs with `--sandbox danger-full-access`.
19
+ Also requires `git`, one supported coding agent CLI (see [docs/agents.md](https://github.com/on-par/software-factory/blob/main/docs/agents.md)), signed in, and the GitHub CLI signed in with `gh auth login`. The factory reads `GITHUB_TOKEN`, then `GH_TOKEN`, and falls back to `gh auth token`. `factory doctor` checks all of this and prints a fix for anything missing. It also checks your git identity and the sandbox runtime, and it runs outside a repo. Global or repo-local `git config` for `user.name` and `user.email` both work. On Linux, install `firejail` first; without it, Codex still runs with `--sandbox workspace-write`.
20
20
 
21
21
  `factory init` creates a local-only `.factory/` (git-excluded) with a `default-code` constitution. See the main README quick start.
22
22
 
@@ -1,4 +1,18 @@
1
1
  import type { Octokit } from '@octokit/rest';
2
- import { checkBaseHealth } from '@on-par/factory-core/internal';
3
- export declare function baseHealthWithCi(octokit: Octokit, owner: string, repo: string): (opts: Parameters<typeof checkBaseHealth>[0]) => ReturnType<typeof checkBaseHealth>;
2
+ import { checkBaseHealth, fetchRequiredChecksVerdict } from '@on-par/factory-core/internal';
3
+ type RequiredChecksVerdict = Awaited<ReturnType<typeof fetchRequiredChecksVerdict>>;
4
+ interface BaseChecksOptions {
5
+ checks?: readonly string[];
6
+ events?: string;
7
+ lane?: string;
8
+ }
9
+ /** Test-only: forget which failed push workflows were already reported. */
10
+ export declare function resetBasePushWorkflowReports(): void;
11
+ /**
12
+ * The base verdict shared by the base-hold gate and base health (#3287, #3290): only code-health checks decide it.
13
+ * A failed non-code push workflow (Release, deploy) logs one `base_push_workflow_failed` event per repo, SHA and workflow.
14
+ */
15
+ export declare function baseChecksVerdict(octokit: Octokit, owner: string, repo: string, opts: BaseChecksOptions): (sha: string) => Promise<RequiredChecksVerdict>;
16
+ export declare function baseHealthWithCi(octokit: Octokit, owner: string, repo: string, opts?: BaseChecksOptions): (opts: Parameters<typeof checkBaseHealth>[0]) => ReturnType<typeof checkBaseHealth>;
17
+ export {};
4
18
  //# sourceMappingURL=base-health-ci.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-health-ci.d.ts","sourceRoot":"","sources":["../../src/cli/base-health-ci.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAA8B,MAAM,+BAA+B,CAAC;AAE5F,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,OAAO,eAAe,CAAC,CAMrF"}
1
+ {"version":3,"file":"base-health-ci.d.ts","sourceRoot":"","sources":["../../src/cli/base-health-ci.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAY,MAAM,+BAA+B,CAAC;AAEtG,KAAK,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC,CAAC;AAEpF,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,2EAA2E;AAC3E,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GACtB,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAuBjD;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,iBAAsB,GAC3B,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,OAAO,eAAe,CAAC,CAOrF"}
@@ -1,9 +1,34 @@
1
1
  // packages/cli/src/cli/base-health-ci.ts — base health port with the strict GitHub CI lookup bound in (#3186)
2
- import { checkBaseHealth, fetchRequiredChecksVerdict } from '@on-par/factory-core/internal';
3
- export function baseHealthWithCi(octokit, owner, repo) {
4
- return (opts) => checkBaseHealth({
5
- ...opts,
6
- requiredChecksVerdict: (sha) => fetchRequiredChecksVerdict(octokit, { owner, repo, branch: 'main', sha }),
2
+ import { checkBaseHealth, fetchRequiredChecksVerdict, logEvent } from '@on-par/factory-core/internal';
3
+ const reported = new Set();
4
+ /** Test-only: forget which failed push workflows were already reported. */
5
+ export function resetBasePushWorkflowReports() {
6
+ reported.clear();
7
+ }
8
+ /**
9
+ * The base verdict shared by the base-hold gate and base health (#3287, #3290): only code-health checks decide it.
10
+ * A failed non-code push workflow (Release, deploy) logs one `base_push_workflow_failed` event per repo, SHA and workflow.
11
+ */
12
+ export function baseChecksVerdict(octokit, owner, repo, opts) {
13
+ return (sha) => fetchRequiredChecksVerdict(octokit, { owner, repo, branch: 'main', sha }, {
14
+ pushFallback: true,
15
+ checks: opts.checks,
16
+ onPushWorkflowFailed: (f) => {
17
+ const key = `${owner}/${repo}@${f.sha}:${f.workflow}`;
18
+ if (reported.has(key))
19
+ return;
20
+ reported.add(key);
21
+ if (!opts.events)
22
+ return;
23
+ logEvent(opts.events, 'base_push_workflow_failed', opts.lane ?? '-', `push workflow ${f.workflow} ${f.conclusion} on ${f.sha.slice(0, 8)}; not a code-health check, base not held`, { lane: opts.lane });
24
+ },
25
+ });
26
+ }
27
+ export function baseHealthWithCi(octokit, owner, repo, opts = {}) {
28
+ return (healthOpts) => checkBaseHealth({
29
+ ...healthOpts,
30
+ // The gate in run.ts uses the same helper, so both see the same verdict on 403-protection repos (#3287, #3290).
31
+ requiredChecksVerdict: baseChecksVerdict(octokit, owner, repo, opts),
7
32
  });
8
33
  }
9
34
  //# sourceMappingURL=base-health-ci.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-health-ci.js","sourceRoot":"","sources":["../../src/cli/base-health-ci.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAG9G,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE5F,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,KAAa,EACb,IAAY;IAEZ,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,eAAe,CAAC;QACd,GAAG,IAAI;QACP,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,0BAA0B,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;KAC1G,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"base-health-ci.js","sourceRoot":"","sources":["../../src/cli/base-health-ci.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAG9G,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAUtG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;AAEnC,2EAA2E;AAC3E,MAAM,UAAU,4BAA4B;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,IAAuB;IAEvB,OAAO,CAAC,GAAG,EAAE,EAAE,CACb,0BAA0B,CACxB,OAAO,EACP,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EACpC;QACE,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,oBAAoB,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO;YAC9B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,QAAQ,CACN,IAAI,CAAC,MAAM,EACX,2BAA2B,EAC3B,IAAI,CAAC,IAAI,IAAI,GAAG,EAChB,iBAAiB,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,0CAA0C,EAC7G,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACpB,CAAC;QACJ,CAAC;KACF,CACF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAgB,EAChB,KAAa,EACb,IAAY,EACZ,IAAI,GAAsB,EAAE;IAE5B,OAAO,CAAC,UAAU,EAAE,EAAE,CACpB,eAAe,CAAC;QACd,GAAG,UAAU;QACb,gHAAgH;QAChH,qBAAqB,EAAE,iBAAiB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;KACrE,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type RequiredChecksVerdict } from '@on-par/factory-core/internal';
1
+ import type { RequiredChecksVerdict } from '@on-par/factory-core/internal';
2
2
  /** A base SHA found broken by an environment pause (ADR-0141). */
3
3
  export interface BaseHold {
4
4
  /** `owner/name` of the repo the hold applies to. */
@@ -9,6 +9,8 @@ export interface BaseHold {
9
9
  since: string;
10
10
  /** ISO-8601 time; set when the hold awaits GitHub CI on a timed-out base compile (#3186). */
11
11
  ciRecheckAfter?: string;
12
+ /** A fresh local re-run failed while CI was green (#3287); CI green never clears it. */
13
+ confirmedLocally?: true;
12
14
  }
13
15
  /** Backoff between strict CI re-checks of a ci-awaiting hold (#3186). */
14
16
  export declare const BASE_HOLD_CI_RECHECK_MS: number;
@@ -23,6 +25,8 @@ export interface BaseHoldCleared {
23
25
  reason: BaseHoldClearReason;
24
26
  /** origin/main SHA seen on the clearing poll. */
25
27
  currentSha: string;
28
+ /** What a ci-green verdict was based on (#3195). */
29
+ basis?: string;
26
30
  }
27
31
  /** Deletes the hold only if it is still on `baseSha`; true only when this call deleted it. Fully
28
32
  * synchronous, so concurrent lanes in one process cannot both get true. */
@@ -35,13 +39,12 @@ export type BaseHoldDecision = {
35
39
  } | {
36
40
  kind: 'hold';
37
41
  hold: BaseHold;
42
+ ciReason?: string;
38
43
  };
39
44
  export interface BaseHoldGateDeps {
40
45
  /** Current origin/main SHA; null (or a throw) means unknown. */
41
46
  currentBaseSha: () => Promise<string | null>;
42
- /** True only when main's CI on `sha` is green. */
43
- baseCiGreen: (sha: string) => Promise<boolean>;
44
- /** Strict required-checks lookup for a hold with `ciRecheckAfter` (#3186); absent = not green. */
47
+ /** Strict CI verdict used for every hold (#3186, #3195); absent = not green. */
45
48
  requiredChecksVerdict?: (sha: string) => Promise<RequiredChecksVerdict>;
46
49
  /** Clock in epoch ms; defaults to Date.now. */
47
50
  now?: () => number;
@@ -52,21 +55,12 @@ export interface BaseHoldGateDeps {
52
55
  * its CI is not green. Unknown origin/main fails open; a failed CI lookup counts as not green.
53
56
  * Clears the hold when origin/main moved or its CI is green (#2350). */
54
57
  export declare function evaluateBaseHold(file: string, repo: string, deps: BaseHoldGateDeps): Promise<BaseHoldDecision>;
55
- /** Green = at least one check run, all completed, all on the ADR-0014 passing allow-list. */
56
- export declare function isGreenCheckRunSet(runs: ReadonlyArray<{
57
- status: string | null;
58
- conclusion: string | null;
59
- }>): boolean;
60
58
  /** SHA from the first line of `git ls-remote` output, or null when absent or malformed. */
61
59
  export declare function parseLsRemoteSha(stdout: string): string | null;
62
60
  export declare function createBaseHoldGate(opts: {
63
61
  file: string;
64
62
  repo: string;
65
63
  git: (cmd: string) => Promise<string>;
66
- listCheckRuns: (ref: string) => Promise<Array<{
67
- status: string | null;
68
- conclusion: string | null;
69
- }>>;
70
64
  requiredChecksVerdict?: (sha: string) => Promise<RequiredChecksVerdict>;
71
65
  onCleared?: (cleared: BaseHoldCleared) => void;
72
66
  now?: () => number;
@@ -1 +1 @@
1
- {"version":3,"file":"base-hold.d.ts","sourceRoot":"","sources":["../../src/cli/base-hold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-hold.d.ts","sourceRoot":"","sources":["../../src/cli/base-hold.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,10 @@
4
4
  // #2350 clears the hold once origin/main moves or its CI goes green. #2351 reads it for
5
5
  // `factory status`. #3186 adds `ciRecheckAfter`: a hold awaiting GitHub CI on a timed-out base
6
6
  // compile backs off and is re-checked with the strict required-checks verdict, not the lenient one.
7
+ // #3287 adds `confirmedLocally`: a hold whose fresh local re-run failed while CI was green is
8
+ // never cleared by CI green, only when origin/main moves.
7
9
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
8
10
  import { dirname } from 'node:path';
9
- import { isPassingConclusion } from '@on-par/factory-core/internal';
10
11
  /** Backoff between strict CI re-checks of a ci-awaiting hold (#3186). */
11
12
  export const BASE_HOLD_CI_RECHECK_MS = 5 * 60 * 1000;
12
13
  export function writeBaseHold(file, hold) {
@@ -17,6 +18,7 @@ export function writeBaseHold(file, hold) {
17
18
  failingChecks: [...hold.failingChecks],
18
19
  since: hold.since,
19
20
  ...(hold.ciRecheckAfter !== undefined ? { ciRecheckAfter: hold.ciRecheckAfter } : {}),
21
+ ...(hold.confirmedLocally === true ? { confirmedLocally: true } : {}),
20
22
  };
21
23
  writeFileSync(file, `${JSON.stringify(record, null, 2)}\n`);
22
24
  }
@@ -33,13 +35,20 @@ export function readBaseHold(file) {
33
35
  }
34
36
  if (typeof raw !== 'object' || raw === null || Array.isArray(raw))
35
37
  return null;
36
- const { repo, baseSha, failingChecks, since, ciRecheckAfter } = raw;
38
+ const { repo, baseSha, failingChecks, since, ciRecheckAfter, confirmedLocally } = raw;
37
39
  if (typeof repo !== 'string' || typeof baseSha !== 'string' || typeof since !== 'string')
38
40
  return null;
39
41
  if (!Array.isArray(failingChecks) || !failingChecks.every((c) => typeof c === 'string'))
40
42
  return null;
41
43
  const recheck = typeof ciRecheckAfter === 'string' && Number.isFinite(Date.parse(ciRecheckAfter)) ? { ciRecheckAfter } : {};
42
- return { repo, baseSha, failingChecks: [...failingChecks], since, ...recheck };
44
+ return {
45
+ repo,
46
+ baseSha,
47
+ failingChecks: [...failingChecks],
48
+ since,
49
+ ...recheck,
50
+ ...(confirmedLocally === true ? { confirmedLocally: true } : {}),
51
+ };
43
52
  }
44
53
  export function deleteBaseHold(file) {
45
54
  rmSync(file, { force: true });
@@ -58,12 +67,20 @@ export function formatBaseHoldCleared(c) {
58
67
  const now = c.currentSha.slice(0, 8);
59
68
  return c.reason === 'sha-changed'
60
69
  ? `base hold on ${held} cleared (reason: sha-changed): origin/main moved to ${now}`
61
- : `base hold on ${held} cleared (reason: ci-green): main CI on ${now} is green`;
70
+ : `base hold on ${held} cleared (reason: ci-green): main CI on ${now} is green (${c.basis ?? 'required checks'})`;
62
71
  }
63
72
  /** `factory status` lines for an active hold (#2351). */
64
73
  export function formatBaseHoldStatus(hold) {
65
74
  const checks = hold.failingChecks.length > 0 ? hold.failingChecks.join(', ') : '(none recorded)';
66
- return [` repo: ${hold.repo}`, ` baseSha: ${hold.baseSha}`, ` failingChecks: ${checks}`, ` since: ${hold.since}`];
75
+ const lines = [
76
+ ` repo: ${hold.repo}`,
77
+ ` baseSha: ${hold.baseSha}`,
78
+ ` failingChecks: ${checks}`,
79
+ ` since: ${hold.since}`,
80
+ ];
81
+ if (hold.confirmedLocally === true)
82
+ lines.push(' confirmedLocally: true');
83
+ return lines;
67
84
  }
68
85
  /** Decides whether a lane may claim: hold only while origin/main is still at the held SHA and
69
86
  * its CI is not green. Unknown origin/main fails open; a failed CI lookup counts as not green.
@@ -81,11 +98,11 @@ export async function evaluateBaseHold(file, repo, deps) {
81
98
  }
82
99
  if (sha === null)
83
100
  return { kind: 'claim' };
84
- const clear = (reason, currentSha) => {
101
+ const clear = (reason, currentSha, basis) => {
85
102
  if (!clearBaseHold(file, hold.baseSha))
86
103
  return;
87
104
  try {
88
- deps.onCleared?.({ hold, reason, currentSha });
105
+ deps.onCleared?.({ hold, reason, currentSha, ...(basis !== undefined ? { basis } : {}) });
89
106
  }
90
107
  catch {
91
108
  // an observer failure must not change the decision
@@ -95,19 +112,16 @@ export async function evaluateBaseHold(file, repo, deps) {
95
112
  clear('sha-changed', sha);
96
113
  return { kind: 'claim' };
97
114
  }
115
+ if (hold.confirmedLocally === true) {
116
+ return { kind: 'hold', hold, ciReason: 'confirmed locally: a fresh base re-run failed while CI was green' };
117
+ }
98
118
  if (hold.ciRecheckAfter !== undefined) {
99
119
  const now = deps.now ?? Date.now;
100
120
  if (now() < Date.parse(hold.ciRecheckAfter))
101
121
  return { kind: 'hold', hold };
102
- let strictGreen = false;
103
- try {
104
- strictGreen = (await deps.requiredChecksVerdict?.(sha))?.green === true;
105
- }
106
- catch {
107
- strictGreen = false;
108
- }
109
- if (strictGreen) {
110
- clear('ci-green', sha);
122
+ const v = await strictVerdict(deps, sha);
123
+ if (v.green) {
124
+ clear('ci-green', sha, v.basis);
111
125
  return { kind: 'claim' };
112
126
  }
113
127
  try {
@@ -116,23 +130,24 @@ export async function evaluateBaseHold(file, repo, deps) {
116
130
  catch {
117
131
  // a failed re-arm only means the next poll re-checks sooner
118
132
  }
119
- return { kind: 'hold', hold };
133
+ return { kind: 'hold', hold, ciReason: v.reason };
120
134
  }
121
- let green = false;
135
+ const v = await strictVerdict(deps, sha);
136
+ if (!v.green)
137
+ return { kind: 'hold', hold, ciReason: v.reason };
138
+ clear('ci-green', sha, v.basis);
139
+ return { kind: 'claim' };
140
+ }
141
+ async function strictVerdict(deps, sha) {
142
+ if (!deps.requiredChecksVerdict)
143
+ return { green: false, reason: 'no CI lookup configured' };
122
144
  try {
123
- green = await deps.baseCiGreen(sha);
145
+ const v = await deps.requiredChecksVerdict(sha);
146
+ return v.green ? v : { ...v, green: false };
124
147
  }
125
- catch {
126
- green = false;
148
+ catch (err) {
149
+ return { green: false, reason: `CI lookup failed: ${err instanceof Error ? err.message : String(err)}` };
127
150
  }
128
- if (!green)
129
- return { kind: 'hold', hold };
130
- clear('ci-green', sha);
131
- return { kind: 'claim' };
132
- }
133
- /** Green = at least one check run, all completed, all on the ADR-0014 passing allow-list. */
134
- export function isGreenCheckRunSet(runs) {
135
- return runs.length > 0 && runs.every((r) => r.status === 'completed' && isPassingConclusion(r.conclusion));
136
151
  }
137
152
  /** SHA from the first line of `git ls-remote` output, or null when absent or malformed. */
138
153
  export function parseLsRemoteSha(stdout) {
@@ -143,7 +158,6 @@ export function parseLsRemoteSha(stdout) {
143
158
  export function createBaseHoldGate(opts) {
144
159
  return () => evaluateBaseHold(opts.file, opts.repo, {
145
160
  currentBaseSha: async () => parseLsRemoteSha(await opts.git('git ls-remote origin refs/heads/main')),
146
- baseCiGreen: async (sha) => isGreenCheckRunSet(await opts.listCheckRuns(sha)),
147
161
  requiredChecksVerdict: opts.requiredChecksVerdict,
148
162
  onCleared: opts.onCleared,
149
163
  now: opts.now,
@@ -1 +1 @@
1
- {"version":3,"file":"base-hold.js","sourceRoot":"","sources":["../../src/cli/base-hold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-hold.js","sourceRoot":"","sources":["../../src/cli/base-hold.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,11 @@
1
1
  import { type CostEntry } from '@on-par/factory-core';
2
+ import type { CostJson } from './json-contract.js';
3
+ /** `factory cost --json` payload (#2269); additive changes bump schemaVersion only when breaking. */
4
+ export type { CostJson } from './json-contract.js';
2
5
  /** One cost row in `factory cost --json` (#2269). CostEntry field names. */
3
- export interface CostRowJson {
4
- ts: string;
5
- issue: string;
6
- task: string;
7
- model: string;
8
- inputTokens: number;
9
- outputTokens: number;
10
- cacheReadTokens: number | null;
11
- cacheCreationTokens: number | null;
12
- /** null when unpriced (ADR-0020); never 0 for an unpriced row. */
13
- cost: number | null;
14
- }
6
+ export type CostRowJson = CostJson['rows'][number];
15
7
  /** Per-model rollup over the (filtered) rows, first-seen model order. */
16
- export interface CostModelRowJson {
17
- model: string;
18
- tasks: number;
19
- inputTokens: number;
20
- outputTokens: number;
21
- /** Sum of priced rows; null when every row for the model is unpriced. */
22
- cost: number | null;
23
- unpricedCount: number;
24
- }
25
- /** `factory cost --json` payload (#2269). Additive changes only; bump schemaVersion on a breaking change. */
26
- export interface CostJson {
27
- schemaVersion: 1;
28
- rows: CostRowJson[];
29
- perModel: CostModelRowJson[];
30
- total: {
31
- cost: number | null;
32
- unpricedCount: number;
33
- };
34
- }
8
+ export type CostModelRowJson = CostJson['perModel'][number];
35
9
  /** Build the `factory cost --json` payload; `issue` keeps only that issue's rows. */
36
10
  export declare function buildCostJson(entries: CostEntry[], issue?: string): CostJson;
37
11
  //# sourceMappingURL=cost-json.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-json.d.ts","sourceRoot":"","sources":["../../src/cli/cost-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtE,4EAA4E;AAC5E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,kEAAkE;IAClE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,6GAA6G;AAC7G,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CACvD;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CA8C5E"}
1
+ {"version":3,"file":"cost-json.d.ts","sourceRoot":"","sources":["../../src/cli/cost-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,qGAAqG;AACrG,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,yEAAyE;AACzE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,CAiE5E"}
@@ -4,6 +4,7 @@ export function buildCostJson(entries, issue) {
4
4
  const filtered = issue === undefined ? entries : entries.filter((e) => e.issue === String(issue));
5
5
  const rows = [];
6
6
  const models = new Map();
7
+ let cachedRateMissingTotal = 0;
7
8
  for (const e of filtered) {
8
9
  const cost = e.unpriced === true || e.cost == null ? null : e.cost;
9
10
  const inputTokens = e.inputTokens ?? 0;
@@ -21,12 +22,16 @@ export function buildCostJson(entries, issue) {
21
22
  });
22
23
  let m = models.get(e.model);
23
24
  if (m === undefined) {
24
- m = { tasks: 0, inputTokens: 0, outputTokens: 0, sum: 0, priced: 0, unpriced: 0 };
25
+ m = { tasks: 0, inputTokens: 0, outputTokens: 0, sum: 0, priced: 0, unpriced: 0, cachedRateMissing: 0 };
25
26
  models.set(e.model, m);
26
27
  }
27
28
  m.tasks += 1;
28
29
  m.inputTokens += inputTokens;
29
30
  m.outputTokens += outputTokens;
31
+ if (e.cachedRateMissing === true) {
32
+ m.cachedRateMissing += 1;
33
+ cachedRateMissingTotal += 1;
34
+ }
30
35
  if (cost === null)
31
36
  m.unpriced += 1;
32
37
  else {
@@ -41,8 +46,14 @@ export function buildCostJson(entries, issue) {
41
46
  outputTokens: m.outputTokens,
42
47
  cost: m.priced === 0 && m.unpriced > 0 ? null : m.sum,
43
48
  unpricedCount: m.unpriced,
49
+ cachedRateMissingCount: m.cachedRateMissing,
44
50
  }));
45
51
  const t = aggregateCosts(filtered).total;
46
- return { schemaVersion: 1, rows, perModel, total: { cost: t.cost, unpricedCount: t.unpricedCount } };
52
+ return {
53
+ schemaVersion: 1,
54
+ rows,
55
+ perModel,
56
+ total: { cost: t.cost, unpricedCount: t.unpricedCount, cachedRateMissingCount: cachedRateMissingTotal },
57
+ };
47
58
  }
48
59
  //# sourceMappingURL=cost-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cost-json.js","sourceRoot":"","sources":["../../src/cli/cost-json.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-json.js","sourceRoot":"","sources":["../../src/cli/cost-json.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { type RepoState, type RunRuntime } from '@on-par/factory-core/internal';
1
+ import { type RunRuntime } from '@on-par/factory-core/internal';
2
+ export type { DaemonStatusJson } from './json-contract.js';
2
3
  import { type UpdateState } from './update-state.js';
3
4
  export declare const FACTORYD_LABEL = "com.onpar.factoryd";
4
5
  /** Expected daemon-control failure. index.ts's commander wrappers map it onto
@@ -119,19 +120,6 @@ export declare function renderFactorydPlist(opts: {
119
120
  logPath: string;
120
121
  }): string;
121
122
  /** Extracts the running pid from `launchctl print gui/<uid>/<label>` output. */
122
- /** `factory daemon status --json` payload (#2267). Additive changes only; bump schemaVersion on a breaking change. */
123
- export interface DaemonStatusJson {
124
- schemaVersion: 1;
125
- running: boolean;
126
- pid: number | null;
127
- uptimeSec: number | null;
128
- plistInstalled: boolean;
129
- repos: Array<{
130
- slug: string;
131
- checkoutPath: string;
132
- state: RepoState;
133
- }>;
134
- }
135
123
  /** ps `etime` ([[dd-]hh:]mm:ss) → whole seconds; null when empty or malformed. */
136
124
  export declare function parseEtime(etime: string): number | null;
137
125
  export declare function parseLaunchctlPid(printOutput: string): number | null;
@@ -221,5 +209,4 @@ export declare function createAutoUpdateDeps(opts: {
221
209
  log: (line: string) => void;
222
210
  exit: (code: number) => Promise<void> | void;
223
211
  }): AutoUpdateDeps;
224
- export {};
225
212
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // wrappers around the foreground factoryd (#1179, epic #764), plus `daemon run`
3
3
  // option resolution into FactorydConfig (#2128).
4
4
  import { execFile } from 'node:child_process';
5
- import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, realpathSync, unlinkSync, writeFileSync, } from 'node:fs';
5
+ import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, realpathSync, writeFileSync, } from 'node:fs';
6
6
  import { homedir } from 'node:os';
7
7
  import { createRequire } from 'node:module';
8
8
  import { dirname, join, sep } from 'node:path';
@@ -10,6 +10,7 @@ import { DEFAULT_FACTORYD_PORT, defaultRegistryPath, listRepos, loadRegistry, re
10
10
  import { defaultIsPidAlive, getFactoryPaths } from '@on-par/factory-core';
11
11
  import { bootstrapFailureMessage, reloadLaunchAgent } from './daemon-launchctl.js';
12
12
  import { runSelfUpdateCommand } from './self-update-exec.js';
13
+ import { clearSelfUpdateStops, writeSelfUpdateStop } from './self-update-stop.js';
13
14
  import { initialUpdateState, readUpdateState, recordUpdateCheck, writeUpdateState, } from './update-state.js';
14
15
  export const FACTORYD_LABEL = 'com.onpar.factoryd';
15
16
  /** Expected daemon-control failure. index.ts's commander wrappers map it onto
@@ -184,6 +185,7 @@ export function renderFactorydPlist(opts) {
184
185
  </plist>
185
186
  `;
186
187
  }
188
+ /** Extracts the running pid from `launchctl print gui/<uid>/<label>` output. */
187
189
  /** ps `etime` ([[dd-]hh:]mm:ss) → whole seconds; null when empty or malformed. */
188
190
  export function parseEtime(etime) {
189
191
  const m = /^(?:(\d+)-)?(?:(\d+):)?(\d+):(\d+)$/.exec(etime.trim());
@@ -598,7 +600,7 @@ export function createAutoUpdateDeps(opts) {
598
600
  const stop = getFactoryPaths(e.path, e.stateRoot).stop;
599
601
  try {
600
602
  mkdirSync(dirname(stop), { recursive: true });
601
- writeFileSync(stop, '', { flag: 'wx' });
603
+ writeSelfUpdateStop(stop);
602
604
  created.push(stop);
603
605
  }
604
606
  catch (err) {
@@ -610,15 +612,7 @@ export function createAutoUpdateDeps(opts) {
610
612
  return created;
611
613
  },
612
614
  async clearStops(files) {
613
- for (const f of files) {
614
- try {
615
- unlinkSync(f);
616
- }
617
- catch (err) {
618
- if (err.code !== 'ENOENT')
619
- throw err;
620
- }
621
- }
615
+ clearSelfUpdateStops(files);
622
616
  },
623
617
  now: Date.now,
624
618
  sleep: (ms) => new Promise((res) => {