@deftai/directive-core 0.100.0 → 0.101.0

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 (85) hide show
  1. package/dist/authz/classify.js +100 -23
  2. package/dist/authz/decompose-apply.d.ts +14 -0
  3. package/dist/authz/decompose-apply.js +93 -18
  4. package/dist/check/cached-orchestrator.d.ts +26 -5
  5. package/dist/check/cached-orchestrator.js +228 -6
  6. package/dist/check/gate-lists.d.ts +10 -4
  7. package/dist/check/gate-lists.js +19 -5
  8. package/dist/check/index.d.ts +3 -2
  9. package/dist/check/index.js +2 -1
  10. package/dist/check/named-cause.d.ts +45 -0
  11. package/dist/check/named-cause.js +121 -0
  12. package/dist/check/orchestrator.js +6 -1
  13. package/dist/doctor/help.d.ts +5 -0
  14. package/dist/doctor/help.js +31 -0
  15. package/dist/doctor/index.d.ts +2 -0
  16. package/dist/doctor/index.js +2 -0
  17. package/dist/doctor/main.js +58 -0
  18. package/dist/doctor/session-coda.d.ts +82 -0
  19. package/dist/doctor/session-coda.js +151 -0
  20. package/dist/doctor/types.d.ts +16 -0
  21. package/dist/index.d.ts +2 -0
  22. package/dist/index.js +2 -0
  23. package/dist/init-deposit/gitignore.js +2 -0
  24. package/dist/intake/issue-ingest.js +7 -0
  25. package/dist/policy/ac-pass-banking.d.ts +58 -0
  26. package/dist/policy/ac-pass-banking.js +150 -0
  27. package/dist/policy/ceremony-dial.d.ts +29 -0
  28. package/dist/policy/ceremony-dial.js +76 -0
  29. package/dist/policy/index.d.ts +1 -0
  30. package/dist/policy/index.js +15 -1
  31. package/dist/preflight-cache/evaluate.d.ts +3 -0
  32. package/dist/preflight-cache/evaluate.js +3 -0
  33. package/dist/product-first-done-gate/acceptance.d.ts +25 -0
  34. package/dist/product-first-done-gate/acceptance.js +247 -0
  35. package/dist/product-first-done-gate/check-mode.d.ts +45 -0
  36. package/dist/product-first-done-gate/check-mode.js +148 -0
  37. package/dist/product-first-done-gate/evaluate.d.ts +50 -0
  38. package/dist/product-first-done-gate/evaluate.js +255 -0
  39. package/dist/product-first-done-gate/index.d.ts +11 -0
  40. package/dist/product-first-done-gate/index.js +11 -0
  41. package/dist/product-first-done-gate/types.d.ts +64 -0
  42. package/dist/product-first-done-gate/types.js +61 -0
  43. package/dist/run-summary/emit.d.ts +56 -0
  44. package/dist/run-summary/emit.js +171 -0
  45. package/dist/run-summary/index.d.ts +4 -0
  46. package/dist/run-summary/index.js +4 -0
  47. package/dist/run-summary/path.d.ts +25 -0
  48. package/dist/run-summary/path.js +78 -0
  49. package/dist/run-summary/types.d.ts +76 -0
  50. package/dist/run-summary/types.js +21 -0
  51. package/dist/scope/acceptance-evidence.d.ts +34 -0
  52. package/dist/scope/acceptance-evidence.js +84 -10
  53. package/dist/scope/decompose.d.ts +5 -0
  54. package/dist/scope/decompose.js +11 -2
  55. package/dist/session/ac-pass-banking.d.ts +221 -0
  56. package/dist/session/ac-pass-banking.js +761 -0
  57. package/dist/session/deposit-sha.d.ts +49 -0
  58. package/dist/session/deposit-sha.js +121 -0
  59. package/dist/session/effort-budget.d.ts +6 -0
  60. package/dist/session/effort-budget.js +21 -3
  61. package/dist/session/index.d.ts +5 -0
  62. package/dist/session/index.js +5 -0
  63. package/dist/session/orientation-compression.d.ts +127 -0
  64. package/dist/session/orientation-compression.js +425 -0
  65. package/dist/session/orientation-state.d.ts +29 -0
  66. package/dist/session/orientation-state.js +85 -0
  67. package/dist/session/session-start.d.ts +25 -0
  68. package/dist/session/session-start.js +175 -0
  69. package/dist/session/toolchain-preflight.d.ts +64 -0
  70. package/dist/session/toolchain-preflight.js +151 -0
  71. package/dist/triage/bootstrap/gitignore.d.ts +1 -1
  72. package/dist/triage/bootstrap/gitignore.js +8 -2
  73. package/dist/triage/bootstrap/index.js +15 -3
  74. package/dist/triage/classify/index.d.ts +1 -0
  75. package/dist/triage/classify/index.js +2 -0
  76. package/dist/triage/classify/label-mirror.js +16 -0
  77. package/dist/triage/classify/mirror-discovery-tip.d.ts +95 -0
  78. package/dist/triage/classify/mirror-discovery-tip.js +234 -0
  79. package/dist/triage/reconcile/reconcile.js +28 -6
  80. package/dist/triage/summary/index.js +12 -4
  81. package/dist/triage/welcome/default-mode.js +16 -0
  82. package/dist/ts-check-lane/run-lane.js +21 -4
  83. package/dist/vbrief-validate/conformance.js +7 -0
  84. package/dist/vitest-runner/coverage-debt-teardown.js +16 -4
  85. package/package.json +11 -3
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Deposit fingerprint for orientation fast-path (#3286).
3
+ *
4
+ * Covers all refresh inputs named by the dual-path Now AC: payload, templates,
5
+ * and engine version. When this fingerprint is unchanged, agents:refresh and
6
+ * verify:cache-fresh may print a one-line sha-match no-op.
7
+ */
8
+ export declare const DEPOSIT_SHA_HEX_LEN = 12;
9
+ /** Canonical one-line no-op message for deposit-sha fast-path (#3286). */
10
+ export declare const DEPOSIT_SHA_MATCH_NOOP = "unchanged - sha match";
11
+ export interface DepositShaInputs {
12
+ readonly engineVersion: string;
13
+ readonly payloadVersion: string;
14
+ readonly templatesHash: string;
15
+ }
16
+ export interface ComputeDepositShaOptions {
17
+ readonly projectRoot?: string;
18
+ readonly frameworkRoot?: string;
19
+ /** Inject inputs for hermetic tests (skips filesystem/version probes). */
20
+ readonly inputs?: Partial<DepositShaInputs>;
21
+ /** Override engine version probe. */
22
+ readonly readEngineVersion?: () => string;
23
+ /** Override payload version probe. */
24
+ readonly readPayloadVersion?: (projectRoot: string, frameworkRoot: string) => string;
25
+ /** Override templates hash probe. */
26
+ readonly readTemplatesHash?: (frameworkRoot: string) => string;
27
+ }
28
+ /**
29
+ * Hash templates that feed agents:refresh (agents-entry + related entry points).
30
+ * Missing templates yield a stable "missing" sentinel so the fingerprint still
31
+ * changes when templates appear or disappear.
32
+ */
33
+ export declare function hashDepositTemplates(frameworkRoot: string): string;
34
+ /**
35
+ * Resolve payload / content version for the deposit fingerprint.
36
+ * Prefer live generation token, then VERSION files under framework root.
37
+ */
38
+ export declare function resolveDepositPayloadVersion(projectRoot: string, frameworkRoot: string): string;
39
+ /** Resolve the three deposit-sha inputs (payload, templates, engine). */
40
+ export declare function resolveDepositShaInputs(options?: ComputeDepositShaOptions): DepositShaInputs;
41
+ /**
42
+ * Compute the 12-hex deposit fingerprint covering payload + templates + engine.
43
+ */
44
+ export declare function computeDepositSha(options?: ComputeDepositShaOptions): string;
45
+ /** True when two deposit fingerprints match (case-insensitive, trimmed). */
46
+ export declare function depositShaMatches(a: string | null | undefined, b: string | null | undefined): boolean;
47
+ /** One-line status for orientation / CLI stdout. */
48
+ export declare function formatDepositShaMatchLine(surface: string): string;
49
+ //# sourceMappingURL=deposit-sha.d.ts.map
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Deposit fingerprint for orientation fast-path (#3286).
3
+ *
4
+ * Covers all refresh inputs named by the dual-path Now AC: payload, templates,
5
+ * and engine version. When this fingerprint is unchanged, agents:refresh and
6
+ * verify:cache-fresh may print a one-line sha-match no-op.
7
+ */
8
+ import { createHash } from "node:crypto";
9
+ import { existsSync, readFileSync } from "node:fs";
10
+ import { join } from "node:path";
11
+ import { contentRoot } from "../content-root.js";
12
+ import { readCorePackageVersion } from "../engine-version.js";
13
+ import { readLiveGeneration } from "../freshness/generation.js";
14
+ import { frameworkRoot as resolveAgentsFrameworkRoot } from "../platform/agents-md.js";
15
+ export const DEPOSIT_SHA_HEX_LEN = 12;
16
+ /** Canonical one-line no-op message for deposit-sha fast-path (#3286). */
17
+ export const DEPOSIT_SHA_MATCH_NOOP = "unchanged - sha match";
18
+ function sha12(material) {
19
+ return createHash("sha256").update(material, "utf8").digest("hex").slice(0, DEPOSIT_SHA_HEX_LEN);
20
+ }
21
+ function hashText(text) {
22
+ return createHash("sha256").update(text, "utf8").digest("hex");
23
+ }
24
+ /**
25
+ * Hash templates that feed agents:refresh (agents-entry + related entry points).
26
+ * Missing templates yield a stable "missing" sentinel so the fingerprint still
27
+ * changes when templates appear or disappear.
28
+ */
29
+ export function hashDepositTemplates(frameworkRoot) {
30
+ const root = contentRoot(frameworkRoot);
31
+ const candidates = [
32
+ join(root, "templates", "agents-entry.md"),
33
+ join(root, "templates", "agent-prompt-preamble.md"),
34
+ ];
35
+ const parts = [];
36
+ for (const path of candidates) {
37
+ try {
38
+ if (!existsSync(path)) {
39
+ parts.push(`${path}:missing`);
40
+ continue;
41
+ }
42
+ parts.push(`${path}:${hashText(readFileSync(path, "utf8"))}`);
43
+ }
44
+ catch {
45
+ parts.push(`${path}:unreadable`);
46
+ }
47
+ }
48
+ return sha12(parts.join("\n"));
49
+ }
50
+ /**
51
+ * Resolve payload / content version for the deposit fingerprint.
52
+ * Prefer live generation token, then VERSION files under framework root.
53
+ */
54
+ export function resolveDepositPayloadVersion(projectRoot, frameworkRoot) {
55
+ try {
56
+ const live = readLiveGeneration(projectRoot);
57
+ if (live?.contentVersion) {
58
+ return live.contentVersion;
59
+ }
60
+ }
61
+ catch {
62
+ // fall through
63
+ }
64
+ for (const cand of [
65
+ join(frameworkRoot, "VERSION"),
66
+ join(frameworkRoot, "scripts", "VERSION"),
67
+ join(projectRoot, ".deft-version"),
68
+ ]) {
69
+ try {
70
+ if (existsSync(cand)) {
71
+ const v = readFileSync(cand, "utf8").trim();
72
+ if (v.length > 0)
73
+ return v;
74
+ }
75
+ }
76
+ catch {
77
+ // continue
78
+ }
79
+ }
80
+ return "unknown-payload";
81
+ }
82
+ /** Resolve the three deposit-sha inputs (payload, templates, engine). */
83
+ export function resolveDepositShaInputs(options = {}) {
84
+ const frameworkRoot = resolveAgentsFrameworkRoot({
85
+ frameworkRoot: options.frameworkRoot,
86
+ });
87
+ const projectRoot = options.projectRoot ?? process.cwd();
88
+ const engineVersion = options.inputs?.engineVersion ?? (options.readEngineVersion ?? readCorePackageVersion)();
89
+ const payloadVersion = options.inputs?.payloadVersion ??
90
+ (options.readPayloadVersion ?? resolveDepositPayloadVersion)(projectRoot, frameworkRoot);
91
+ const templatesHash = options.inputs?.templatesHash ??
92
+ (options.readTemplatesHash ?? hashDepositTemplates)(frameworkRoot);
93
+ return { engineVersion, payloadVersion, templatesHash };
94
+ }
95
+ /**
96
+ * Compute the 12-hex deposit fingerprint covering payload + templates + engine.
97
+ */
98
+ export function computeDepositSha(options = {}) {
99
+ const inputs = resolveDepositShaInputs(options);
100
+ const material = [
101
+ `engine=${inputs.engineVersion}`,
102
+ `payload=${inputs.payloadVersion}`,
103
+ `templates=${inputs.templatesHash}`,
104
+ ].join("\n");
105
+ return sha12(material);
106
+ }
107
+ /** True when two deposit fingerprints match (case-insensitive, trimmed). */
108
+ export function depositShaMatches(a, b) {
109
+ if (a == null || b == null)
110
+ return false;
111
+ const left = a.trim().toLowerCase();
112
+ const right = b.trim().toLowerCase();
113
+ if (left.length === 0 || right.length === 0)
114
+ return false;
115
+ return left === right;
116
+ }
117
+ /** One-line status for orientation / CLI stdout. */
118
+ export function formatDepositShaMatchLine(surface) {
119
+ return `${surface}: ${DEPOSIT_SHA_MATCH_NOOP}`;
120
+ }
121
+ //# sourceMappingURL=deposit-sha.js.map
@@ -80,6 +80,12 @@ export interface RecommendVerificationDepthInput {
80
80
  readonly deepenReserveTurns?: number;
81
81
  /** Reserve for a fix after a deeper finding (cost units). Default null (ignore). */
82
82
  readonly deepenReserveBudget?: number | null;
83
+ /**
84
+ * Minimum remaining fraction of max turns/cost required to deepen after AC bank
85
+ * (#3285). Default 0.2 (20%). Set null to skip the surplus fraction gate and
86
+ * use only the absolute reserve.
87
+ */
88
+ readonly surplusThreshold?: number | null;
83
89
  }
84
90
  /**
85
91
  * Parse host effort-budget descriptor from env JSON (#1461 / #3266 production wire).
@@ -253,6 +253,8 @@ export function recommendVerificationDepth(input) {
253
253
  }
254
254
  const reserveTurns = input.deepenReserveTurns ?? 3;
255
255
  const reserveBudget = input.deepenReserveBudget ?? null;
256
+ // #3285: default 20% surplus of max remaining after bank; null disables.
257
+ const surplusThreshold = input.surplusThreshold === undefined ? 0.2 : input.surplusThreshold;
256
258
  const turnsOk = budget.remainingTurns === null || budget.remainingTurns >= reserveTurns;
257
259
  const costOk = reserveBudget === null ||
258
260
  budget.remainingBudget === null ||
@@ -262,10 +264,26 @@ export function recommendVerificationDepth(input) {
262
264
  if (budget.kind === "hard-flag") {
263
265
  return "stated-then-deepen";
264
266
  }
265
- if (turnsOk && costOk) {
266
- return "stated-then-deepen";
267
+ if (!(turnsOk && costOk)) {
268
+ return "stated-only";
269
+ }
270
+ // Surplus fraction gate (#3285): remaining/max must meet threshold on every
271
+ // known max+remaining axis. When max is unknown, absolute reserve alone applies.
272
+ if (surplusThreshold !== null) {
273
+ if (budget.remainingTurns !== null &&
274
+ budget.maxTurns !== null &&
275
+ budget.maxTurns > 0 &&
276
+ budget.remainingTurns / budget.maxTurns < surplusThreshold) {
277
+ return "stated-only";
278
+ }
279
+ if (budget.remainingBudget !== null &&
280
+ budget.maxBudget !== null &&
281
+ budget.maxBudget > 0 &&
282
+ budget.remainingBudget / budget.maxBudget < surplusThreshold) {
283
+ return "stated-only";
284
+ }
267
285
  }
268
- return "stated-only";
286
+ return "stated-then-deepen";
269
287
  }
270
288
  /**
271
289
  * Operator-visible note when self-imposed deepening is skipped for budget (#1006).
@@ -1,10 +1,14 @@
1
+ export * from "./ac-pass-banking.js";
1
2
  export * from "./active-cli.js";
2
3
  export * from "./compact-ritual.js";
3
4
  export * from "./coverage-check-resume-nudge.js";
5
+ export * from "./deposit-sha.js";
4
6
  export * from "./effort-budget.js";
5
7
  export * from "./git.js";
6
8
  export * from "./json.js";
7
9
  export * from "./openclaw-soft-rebind-deposit.js";
10
+ export * from "./orientation-compression.js";
11
+ export * from "./orientation-state.js";
8
12
  export * from "./posture.js";
9
13
  export * from "./process-cost.js";
10
14
  export * from "./resume-conditions.js";
@@ -13,5 +17,6 @@ export * from "./session-ready.js";
13
17
  export * from "./session-start.js";
14
18
  export * from "./session-start-hook.js";
15
19
  export * from "./time.js";
20
+ export * from "./toolchain-preflight.js";
16
21
  export * from "./verify-session-ritual.js";
17
22
  //# sourceMappingURL=index.d.ts.map
@@ -1,10 +1,14 @@
1
+ export * from "./ac-pass-banking.js";
1
2
  export * from "./active-cli.js";
2
3
  export * from "./compact-ritual.js";
3
4
  export * from "./coverage-check-resume-nudge.js";
5
+ export * from "./deposit-sha.js";
4
6
  export * from "./effort-budget.js";
5
7
  export * from "./git.js";
6
8
  export * from "./json.js";
7
9
  export * from "./openclaw-soft-rebind-deposit.js";
10
+ export * from "./orientation-compression.js";
11
+ export * from "./orientation-state.js";
8
12
  export * from "./posture.js";
9
13
  export * from "./process-cost.js";
10
14
  export * from "./resume-conditions.js";
@@ -13,5 +17,6 @@ export * from "./session-ready.js";
13
17
  export * from "./session-start.js";
14
18
  export * from "./session-start-hook.js";
15
19
  export * from "./time.js";
20
+ export * from "./toolchain-preflight.js";
16
21
  export * from "./verify-session-ritual.js";
17
22
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Orientation compression Now path (#3286 / dual-path #2899).
3
+ *
4
+ * Composes doctor + toolchain preflight into session:start as inline sections
5
+ * with per-section status lines; offers deposit-sha fast-paths for
6
+ * agents:refresh and verify:cache-fresh; formats compact (opt-in) vs verbose
7
+ * (default). Does NOT implement unified `deft orient` (Later remains open).
8
+ */
9
+ import type { DoctorSeams } from "../doctor/types.js";
10
+ import { applyAgentsRefresh } from "../platform/agents-md.js";
11
+ import { type EvaluateOptions, evaluate as evaluateCacheFresh } from "../preflight-cache/evaluate.js";
12
+ import { type ComputeDepositShaOptions } from "./deposit-sha.js";
13
+ import { type OrientationState } from "./orientation-state.js";
14
+ import { type ToolchainPreflightOptions, type ToolchainPreflightResult } from "./toolchain-preflight.js";
15
+ /** Env opt-in for compact orientation output (#3286). Verbose remains default. */
16
+ export declare const ENV_SESSION_COMPACT = "DEFT_SESSION_COMPACT";
17
+ /** Dual-path Later graduation status — Now ships without closing Later (#2899). */
18
+ export declare const ORIENTATION_LATER_STATUS: "open";
19
+ export declare const ORIENTATION_LATER_COMMAND = "deft orient";
20
+ export declare const ORIENTATION_GRADUATION_TRIGGER: string;
21
+ export type OrientationSectionName = "doctor" | "preflight" | "agents_refresh" | "cache_fresh";
22
+ export type OrientationSectionStatus = "ok" | "dirty" | "degraded" | "error" | "skipped" | "sha_match";
23
+ export interface OrientationSectionResult {
24
+ readonly name: OrientationSectionName;
25
+ readonly status: OrientationSectionStatus;
26
+ readonly ok: boolean;
27
+ readonly exitCode: number;
28
+ readonly lines: readonly string[];
29
+ readonly shaMatch: boolean;
30
+ readonly depositSha?: string;
31
+ readonly durationMs: number;
32
+ readonly detail?: Record<string, unknown>;
33
+ }
34
+ export interface OrientationBundle {
35
+ readonly depositSha: string;
36
+ readonly compact: boolean;
37
+ readonly sections: readonly OrientationSectionResult[];
38
+ readonly lines: readonly string[];
39
+ /** Count of orientation surfaces touched this session (for run-summary #3282 trigger). */
40
+ readonly orientationCallCount: number;
41
+ readonly later: {
42
+ readonly status: typeof ORIENTATION_LATER_STATUS;
43
+ readonly command: typeof ORIENTATION_LATER_COMMAND;
44
+ readonly trigger: typeof ORIENTATION_GRADUATION_TRIGGER;
45
+ };
46
+ readonly preflight: ToolchainPreflightResult | null;
47
+ readonly state: OrientationState;
48
+ }
49
+ export interface RunOrientationOptions {
50
+ readonly projectRoot: string;
51
+ readonly frameworkRoot?: string;
52
+ readonly compact?: boolean;
53
+ readonly env?: NodeJS.ProcessEnv;
54
+ readonly now?: Date;
55
+ readonly depositShaOptions?: ComputeDepositShaOptions;
56
+ readonly toolchainPreflight?: ToolchainPreflightResult | null;
57
+ readonly toolchainPreflightOptions?: ToolchainPreflightOptions;
58
+ /** Skip doctor (tests) or inject structured result. */
59
+ readonly doctorSection?: OrientationSectionResult | null;
60
+ readonly doctorSeams?: DoctorSeams;
61
+ /** Skip agents:refresh or inject. */
62
+ readonly agentsRefreshSection?: OrientationSectionResult | null;
63
+ /** Skip cache_fresh or inject. */
64
+ readonly cacheFreshSection?: OrientationSectionResult | null;
65
+ readonly cacheFreshOptions?: EvaluateOptions;
66
+ /** When true (default), persist orientation-state for next-session fast-path. */
67
+ readonly persistState?: boolean;
68
+ /** Disable individual sections (tests / re-arm). */
69
+ readonly includeDoctor?: boolean;
70
+ readonly includePreflight?: boolean;
71
+ readonly includeAgentsRefresh?: boolean;
72
+ readonly includeCacheFresh?: boolean;
73
+ }
74
+ /** Resolve compact flag: explicit option wins, else DEFT_SESSION_COMPACT. */
75
+ export declare function resolveSessionCompact(options?: Pick<RunOrientationOptions, "compact" | "env">): boolean;
76
+ /** Compact machine lines (one per section). Verbose default keeps prose. */
77
+ export declare function formatOrientationCompactLines(sections: readonly OrientationSectionResult[]): string[];
78
+ export declare function formatOrientationVerboseLines(sections: readonly OrientationSectionResult[]): string[];
79
+ /**
80
+ * Doctor orientation section — throttle status when clean/recent; otherwise
81
+ * run doctor and surface a per-section status line (#3286 compose).
82
+ */
83
+ export declare function runDoctorOrientationSection(projectRoot: string, options?: {
84
+ now?: Date;
85
+ seams?: DoctorSeams;
86
+ doctorRunner?: (args: readonly string[], seams?: DoctorSeams) => number;
87
+ }): OrientationSectionResult;
88
+ export declare function runPreflightOrientationSection(projectRoot: string, options?: {
89
+ frameworkRoot?: string;
90
+ result?: ToolchainPreflightResult | null;
91
+ preflightOptions?: ToolchainPreflightOptions;
92
+ }): {
93
+ section: OrientationSectionResult | null;
94
+ preflight: ToolchainPreflightResult | null;
95
+ };
96
+ /**
97
+ * agents:refresh orientation section (#3286).
98
+ * Always plans against live AGENTS.md so local managed-section edits are
99
+ * detected (deposit fingerprint alone is insufficient). Content-current →
100
+ * one-line sha-match phrasing; deposit-sha is recorded for orientation telemetry.
101
+ */
102
+ export declare function runAgentsRefreshOrientationSection(projectRoot: string, options: {
103
+ depositSha: string;
104
+ prior?: OrientationState | null;
105
+ now?: Date;
106
+ apply?: typeof applyAgentsRefresh;
107
+ }): OrientationSectionResult;
108
+ /**
109
+ * verify:cache-fresh orientation section (#3286).
110
+ * Always runs the live evaluate (age + drift). Deposit fingerprint is recorded
111
+ * for orientation telemetry only — it must not suppress triage-cache freshness.
112
+ * When evaluate is already clean, surface a one-line sha-match-style no-op only
113
+ * if the message is the canonical deposit phrase (not used for shortcuts).
114
+ */
115
+ export declare function runCacheFreshOrientationSection(projectRoot: string, options: {
116
+ depositSha: string;
117
+ prior?: OrientationState | null;
118
+ now?: Date;
119
+ evaluateOptions?: EvaluateOptions;
120
+ evaluateFn?: typeof evaluateCacheFresh;
121
+ }): OrientationSectionResult;
122
+ /**
123
+ * Run the composed orientation sections for a mutation cold session:start.
124
+ */
125
+ export declare function runOrientationCompression(options: RunOrientationOptions): OrientationBundle;
126
+ export { computeDepositSha, DEPOSIT_SHA_MATCH_NOOP, depositShaMatches, formatDepositShaMatchLine, } from "./deposit-sha.js";
127
+ //# sourceMappingURL=orientation-compression.d.ts.map