freeharness 0.4.1 → 0.4.2
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.
- package/README.md +8 -7
- package/canonical/HARVEST.yaml +25 -14
- package/canonical/PROVENANCE.yaml +1 -1
- package/canonical/agents/README.md +77 -36
- package/canonical/agents/agentic-architect.md +2 -1
- package/canonical/agents/database-reviewer.md +6 -8
- package/canonical/agents/explorer-ai-engineer-analyst.md +2 -6
- package/canonical/agents/implementer.md +30 -0
- package/canonical/agents/pr-reviewer.md +9 -11
- package/canonical/agents/python-reviewer.md +7 -9
- package/canonical/agents/report-formatter.md +7 -3
- package/canonical/agents/security-reviewer.md +7 -8
- package/canonical/agents/test-writer.md +5 -2
- package/canonical/hooks/cost-prices.json +11 -9
- package/canonical/hooks/freeharness-config-guard.mjs +8072 -87
- package/canonical/hooks/freeharness-context-monitor.mjs +88 -54
- package/canonical/hooks/freeharness-converge.mjs +78 -23
- package/canonical/hooks/freeharness-cost-tracker.mjs +1129 -218
- package/canonical/hooks/freeharness-memory-guard.mjs +20 -23
- package/canonical/hooks/freeharness-precompact.mjs +217 -87
- package/canonical/hooks/freeharness-quota-tap.mjs +173 -0
- package/canonical/hooks/freeharness-reload-context.mjs +197 -0
- package/canonical/hooks/freeharness-repeat-tool.mjs +1 -1
- package/canonical/hooks/freeharness-sdd-context.mjs +970 -0
- package/canonical/hooks/freeharness-session-start +297 -59
- package/canonical/hooks/hooks.claude-code.json +1 -1
- package/canonical/hooks/hooks.config-guard.claude-code.json +3 -2
- package/canonical/hooks/hooks.context-monitor.claude-code.json +1 -1
- package/canonical/hooks/hooks.converge.claude-code.json +1 -1
- package/canonical/hooks/hooks.memory-guard.claude-code.json +3 -2
- package/canonical/hooks/hooks.reload-context.claude-code.json +15 -0
- package/canonical/openspec/schema.spec-driven.yaml +29 -8
- package/canonical/openspec/templates/follow-ups.md +3 -2
- package/canonical/openspec/templates/proposal.md +1 -1
- package/canonical/openspec/templates/tasks.md +8 -0
- package/canonical/rules/CLAUDE.md +5 -4
- package/canonical/rules/routing.md +10 -9
- package/canonical/skills/agent-evaluation/SKILL.md +17 -6
- package/canonical/skills/agent-evaluation/evals/cases.yaml +38 -23
- package/canonical/skills/agentic-architecture/SKILL.md +4 -0
- package/canonical/skills/agentic-architecture/evals/cases.yaml +27 -0
- package/canonical/skills/code-review/SKILL.md +9 -2
- package/canonical/skills/code-review/evals/cases.yaml +1118 -27
- package/canonical/skills/git-workflow/SKILL.md +2 -0
- package/canonical/skills/local-code/SKILL.md +2 -2
- package/canonical/skills/local-code/evals/cases.yaml +1 -1
- package/canonical/skills/report-formatting/SKILL.md +10 -2
- package/canonical/skills/report-formatting/reference/ARCHITECTURE.md +3 -3
- package/canonical/skills/report-formatting/reference/HELPERS.md +10 -5
- package/canonical/skills/report-formatting/reference/RELEASE.md +1 -2
- package/canonical/skills/report-formatting/reference/TEMPLATES.md +3 -2
- package/canonical/skills/report-formatting/reference/authoring.md +25 -37
- package/canonical/skills/report-formatting/scripts/build-architecture.js +1 -1
- package/canonical/skills/report-formatting/scripts/build-md-claro.js +5 -8
- package/canonical/skills/report-formatting/scripts/check-env.js +0 -4
- package/canonical/skills/report-formatting/scripts/docmodel.js +3 -11
- package/canonical/skills/report-formatting/scripts/example-build.js +8 -10
- package/canonical/skills/report-formatting/scripts/example_build_ArchitectureReview_docx.js +8 -10
- package/canonical/skills/report-formatting/scripts/example_build_ExecutiveReport_docx.js +8 -10
- package/canonical/skills/report-formatting/scripts/theme-claro.js +39 -10
- package/canonical/skills/subagent-driven-development/SKILL.md +35 -28
- package/canonical/skills/subagent-driven-development/evals/cases.yaml +3496 -19
- package/canonical/skills/subagent-driven-development/reference/brief.md +185 -35
- package/canonical/skills/subagent-driven-development/reference/handoff.md +82 -2
- package/canonical/skills/subagent-driven-development/reference/loop.md +57 -0
- package/canonical/skills/subagent-driven-development/reference/trees.md +40 -0
- package/canonical/skills/subagent-driven-development/reference/workspace.md +31 -0
- package/canonical/skills/subagent-driven-development/scripts/validate-handoff.mjs +4771 -326
- package/dist/adapters/harness/claude-code.d.ts +19 -3
- package/dist/adapters/harness/claude-code.js +204 -39
- package/dist/adapters/harness/opencode.js +16 -2
- package/dist/adapters/harness/plugin.js +28 -17
- package/dist/adapters/memory/doctor.d.ts +174 -29
- package/dist/adapters/memory/doctor.js +758 -134
- package/dist/adapters/memory/migrate.d.ts +95 -0
- package/dist/adapters/memory/migrate.js +497 -0
- package/dist/adapters/memory/paths.d.ts +22 -0
- package/dist/adapters/memory/paths.js +85 -0
- package/dist/adapters/memory/vendored.d.ts +56 -29
- package/dist/adapters/memory/vendored.js +191 -154
- package/dist/adapters/sync/diff.js +4 -1
- package/dist/cli/cleanup-prompt.d.ts +35 -0
- package/dist/cli/cleanup-prompt.js +68 -0
- package/dist/cli/cleanup.d.ts +22 -24
- package/dist/cli/cleanup.js +182 -68
- package/dist/cli/cost-quota.d.ts +158 -0
- package/dist/cli/cost-quota.js +645 -0
- package/dist/cli/cost.d.ts +408 -46
- package/dist/cli/cost.js +1731 -57
- package/dist/cli/doctor.d.ts +52 -13
- package/dist/cli/doctor.js +193 -44
- package/dist/cli/hard-cleanup.d.ts +93 -0
- package/dist/cli/hard-cleanup.js +552 -0
- package/dist/cli/install-facts.d.ts +28 -0
- package/dist/cli/install-facts.js +66 -0
- package/dist/cli/json-key-edit.d.ts +18 -0
- package/dist/cli/json-key-edit.js +118 -0
- package/dist/cli/memory-import.d.ts +74 -0
- package/dist/cli/memory-import.js +469 -0
- package/dist/cli/plugin-validate.d.ts +12 -0
- package/dist/cli/plugin-validate.js +43 -0
- package/dist/cli/uninstall.d.ts +1 -1
- package/dist/cli/uninstall.js +2 -2
- package/dist/cli/upstream-launchers.d.ts +49 -0
- package/dist/cli/upstream-launchers.js +287 -0
- package/dist/index.js +247 -70
- package/dist/infra/fsutil.d.ts +31 -3
- package/dist/infra/fsutil.js +69 -6
- package/dist/infra/manifest.d.ts +2 -1
- package/dist/infra/manifest.js +3 -2
- package/dist/infra/prices.d.ts +18 -0
- package/dist/infra/prices.js +64 -0
- package/node_modules/@freeharness/core/dist/tiers.d.ts +10 -1
- package/node_modules/@freeharness/core/dist/tiers.js +24 -2
- package/node_modules/@freeharness/core/package.json +1 -1
- package/node_modules/@freeharness/sdd/PROVENANCE.yaml +279 -2
- package/node_modules/@freeharness/sdd/dist/src/bin/openspec.js +34 -8
- package/node_modules/@freeharness/sdd/dist/src/shim/archive.d.ts +7 -6
- package/node_modules/@freeharness/sdd/dist/src/shim/archive.js +72 -64
- package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.d.ts +48 -16
- package/node_modules/@freeharness/sdd/dist/src/shim/follow-up.js +168 -70
- package/node_modules/@freeharness/sdd/dist/src/shim/instructions.d.ts +36 -6
- package/node_modules/@freeharness/sdd/dist/src/shim/instructions.js +110 -49
- package/node_modules/@freeharness/sdd/dist/src/shim/list.d.ts +1 -1
- package/node_modules/@freeharness/sdd/dist/src/shim/list.js +57 -14
- package/node_modules/@freeharness/sdd/dist/src/shim/nested-change.d.ts +7 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/nested-change.js +118 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/new-change.js +3 -1
- package/node_modules/@freeharness/sdd/dist/src/shim/proposal-capabilities.d.ts +12 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/proposal-capabilities.js +94 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/shared.d.ts +17 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/shared.js +182 -1
- package/node_modules/@freeharness/sdd/dist/src/shim/status.d.ts +2 -2
- package/node_modules/@freeharness/sdd/dist/src/shim/status.js +34 -5
- package/node_modules/@freeharness/sdd/dist/src/shim/validate.d.ts +9 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/validate.js +49 -41
- package/node_modules/@freeharness/sdd/dist/src/shim/warnings.d.ts +21 -0
- package/node_modules/@freeharness/sdd/dist/src/shim/warnings.js +66 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/line-endings.d.ts +4 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/line-endings.js +17 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/apply/specs-apply.js +95 -22
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.d.ts +6 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/change-status-policy.js +14 -6
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.d.ts +1 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/index.js +1 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.d.ts +3 -3
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/outputs.js +24 -4
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/task-progress.js +4 -7
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/engine/types.js +13 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/apply-change.js +21 -6
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/archive-change.js +80 -19
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/explore.js +42 -22
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/project-root.d.ts +32 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/project-root.js +39 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/propose.js +16 -9
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/sync-specs.js +36 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/generation/templates/workflows/update-change.js +65 -30
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.d.ts +1 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/constants.js +1 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.d.ts +8 -13
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/change-parser.js +79 -102
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/markdown-parser.js +4 -9
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.d.ts +50 -10
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-blocks.js +165 -37
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.d.ts +24 -3
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/requirement-text.js +55 -8
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/parsers/spec-structure.js +4 -1
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/purpose-placeholder.js +19 -9
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.d.ts +10 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/spec-discovery.js +115 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.d.ts +3 -3
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/task-lines.js +20 -20
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.d.ts +6 -0
- package/node_modules/@freeharness/sdd/dist/vendor/openspec/validation/validator.js +75 -14
- package/node_modules/@freeharness/sdd/package.json +1 -1
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/schema.upstream.yaml +47 -7
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-apply-change/SKILL.md +25 -7
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-archive-change/SKILL.md +50 -11
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-bulk-archive-change/SKILL.md +48 -10
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-continue-change/SKILL.md +27 -7
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-explore/SKILL.md +25 -12
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-ff-change/SKILL.md +17 -5
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-new-change/SKILL.md +12 -1
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-onboard/SKILL.md +47 -33
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-propose/SKILL.md +17 -5
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-sync-specs/SKILL.md +29 -1
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-update-change/SKILL.md +31 -13
- package/node_modules/@freeharness/sdd/vendor/openspec/assets/skills/openspec-verify-change/SKILL.md +75 -27
- package/package.json +6 -4
- package/provenance/canonical.PROVENANCE.yaml +1 -1
- package/provenance/memory.PROVENANCE.yaml +458 -6
- package/provenance/sdd.PROVENANCE.yaml +279 -2
- package/canonical/hooks/freeharness-auto-memory.mjs +0 -158
- package/canonical/hooks/hooks.auto-memory.claude-code.json +0 -16
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type { ModelFamily, TokenGroup } from "./cost.js";
|
|
2
|
+
export declare const QUOTA_WINDOWS: readonly ["five_hour", "seven_day"];
|
|
3
|
+
export type QuotaWindow = (typeof QUOTA_WINDOWS)[number];
|
|
4
|
+
export declare const DEFAULT_QUOTA_DAYS = 14;
|
|
5
|
+
export interface WindowReading {
|
|
6
|
+
used_percentage: number;
|
|
7
|
+
resets_at: number;
|
|
8
|
+
}
|
|
9
|
+
/** One validated readings line; `ts` re-rendered from its parsed time so untrusted text never prints. */
|
|
10
|
+
export interface QuotaReading {
|
|
11
|
+
ts: string;
|
|
12
|
+
time: number;
|
|
13
|
+
model: string | null;
|
|
14
|
+
five_hour: WindowReading | null;
|
|
15
|
+
seven_day: WindowReading | null;
|
|
16
|
+
}
|
|
17
|
+
/** The fit's input row: a percentage rise and the tokens per family recorded while it rose. */
|
|
18
|
+
export interface QuotaInterval {
|
|
19
|
+
delta: number;
|
|
20
|
+
tokens: Partial<Record<ModelFamily, TokenGroup>>;
|
|
21
|
+
}
|
|
22
|
+
/** A rising interval as reported, traceable to its two readings. */
|
|
23
|
+
export interface ReportedInterval extends QuotaInterval {
|
|
24
|
+
window: QuotaWindow;
|
|
25
|
+
resets_at: number;
|
|
26
|
+
start: {
|
|
27
|
+
ts: string;
|
|
28
|
+
model: string | null;
|
|
29
|
+
used_percentage: number;
|
|
30
|
+
};
|
|
31
|
+
end: {
|
|
32
|
+
ts: string;
|
|
33
|
+
model: string | null;
|
|
34
|
+
used_percentage: number;
|
|
35
|
+
};
|
|
36
|
+
tokens_per_pct: Partial<Record<ModelFamily, TokenGroup>>;
|
|
37
|
+
}
|
|
38
|
+
export type FamilyWeights = Partial<Record<ModelFamily, TokenGroup>>;
|
|
39
|
+
export type FitResult = {
|
|
40
|
+
weights: FamilyWeights;
|
|
41
|
+
residual: number;
|
|
42
|
+
intervals: number;
|
|
43
|
+
} | {
|
|
44
|
+
needed: number;
|
|
45
|
+
features: number;
|
|
46
|
+
};
|
|
47
|
+
export interface WindowReport {
|
|
48
|
+
calibrated: boolean;
|
|
49
|
+
interval_count: number;
|
|
50
|
+
features: number;
|
|
51
|
+
needed: number;
|
|
52
|
+
weights?: FamilyWeights;
|
|
53
|
+
residual?: number;
|
|
54
|
+
intervals: ReportedInterval[];
|
|
55
|
+
}
|
|
56
|
+
export interface QuotaReport {
|
|
57
|
+
days: number;
|
|
58
|
+
readings: {
|
|
59
|
+
files: string[];
|
|
60
|
+
lines: number;
|
|
61
|
+
malformed: number;
|
|
62
|
+
out_of_range: number;
|
|
63
|
+
skipped: string[];
|
|
64
|
+
};
|
|
65
|
+
transcripts: {
|
|
66
|
+
files: number;
|
|
67
|
+
oversize: number;
|
|
68
|
+
skipped: number;
|
|
69
|
+
messages: number;
|
|
70
|
+
};
|
|
71
|
+
windows: Record<QuotaWindow, WindowReport>;
|
|
72
|
+
note: string;
|
|
73
|
+
written: string | null;
|
|
74
|
+
}
|
|
75
|
+
/** quota-calibration.json: calibrated windows only. */
|
|
76
|
+
export interface QuotaCalibration {
|
|
77
|
+
written: string;
|
|
78
|
+
days: number;
|
|
79
|
+
windows: Partial<Record<QuotaWindow, {
|
|
80
|
+
weights: FamilyWeights;
|
|
81
|
+
intervals: number;
|
|
82
|
+
residual: number;
|
|
83
|
+
}>>;
|
|
84
|
+
}
|
|
85
|
+
export declare function quotaDir(home?: string): string;
|
|
86
|
+
export declare function quotaCalibrationPath(home?: string): string;
|
|
87
|
+
/** A readings line in the sink schema, else null (malformed). */
|
|
88
|
+
export declare function parseReading(raw: string): QuotaReading | null;
|
|
89
|
+
/** Readings from the rotation then the live file, within the last `days`, in time order. */
|
|
90
|
+
export declare function readReadings(home: string, days: number, now: Date): {
|
|
91
|
+
readings: QuotaReading[];
|
|
92
|
+
report: QuotaReport["readings"];
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Rising intervals per window. A reading repeating the window's previous percentage and reset is
|
|
96
|
+
* no new reading for that window (the other window changed), so the interval starts at the first
|
|
97
|
+
* reading of the value and keeps the tokens spent while the meter had not yet moved.
|
|
98
|
+
*/
|
|
99
|
+
export declare function formIntervals(readings: QuotaReading[]): Record<QuotaWindow, Omit<ReportedInterval, "tokens" | "tokens_per_pct">[]>;
|
|
100
|
+
interface Message {
|
|
101
|
+
time: number;
|
|
102
|
+
family: ModelFamily;
|
|
103
|
+
cache_read: number;
|
|
104
|
+
fresh: number;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Assistant messages with usage, one per `message.id` (else per file and line); the last line of
|
|
108
|
+
* an id wins, as in the cost tracker, since a streamed message repeats its usage on every line.
|
|
109
|
+
* A file last written before `since` cannot hold a message inside any interval and is not read.
|
|
110
|
+
*/
|
|
111
|
+
export declare function readMessages(home: string, since: number): {
|
|
112
|
+
messages: Message[];
|
|
113
|
+
report: QuotaReport["transcripts"];
|
|
114
|
+
};
|
|
115
|
+
/** Non-negative least squares, Lawson-Hanson (1974): min ||Ax - b|| subject to x >= 0. */
|
|
116
|
+
export declare function nnls(A: number[][], b: number[]): number[];
|
|
117
|
+
/**
|
|
118
|
+
* Fits percent per million tokens per family and group to the intervals' percentage rises.
|
|
119
|
+
* @param intervals Rows of (delta percent, tokens per family); tokens are raw counts.
|
|
120
|
+
* @returns The weights of every family with tokens, the interval count and the median absolute
|
|
121
|
+
* residual in percentage points; or, below three intervals per feature, the count needed (a
|
|
122
|
+
* window without tokens needs at least one family's two features).
|
|
123
|
+
*/
|
|
124
|
+
export declare function fitWeights(intervals: QuotaInterval[]): FitResult;
|
|
125
|
+
/** Reads, forms intervals, sums tokens and fits each window; writes nothing. */
|
|
126
|
+
export declare function quotaReport(home: string, days: number, now?: Date): QuotaReport;
|
|
127
|
+
export declare function formatQuota(report: QuotaReport): string[];
|
|
128
|
+
/** The calibration file's content: calibrated windows only, so a window without a fit never overwrites one. */
|
|
129
|
+
export declare function calibrationOf(report: QuotaReport, now: Date): QuotaCalibration;
|
|
130
|
+
/**
|
|
131
|
+
* Replaces the calibration file whole: a temporary file in the same directory, fsync, rename, so
|
|
132
|
+
* the routing report never reads a half-written file; an existing symlink or non-regular target
|
|
133
|
+
* is refused rather than replaced.
|
|
134
|
+
*/
|
|
135
|
+
export declare function writeCalibration(file: string, calibration: QuotaCalibration): void;
|
|
136
|
+
/**
|
|
137
|
+
* Reads the calibration for the routing report's window estimate.
|
|
138
|
+
* @returns The shape-checked calibration; null without a warning when the file is absent; null
|
|
139
|
+
* with one `quota calibration ignored: <reason>` line when it is unreadable or off-contract.
|
|
140
|
+
*/
|
|
141
|
+
export declare function readCalibration(file?: string): {
|
|
142
|
+
calibration: QuotaCalibration | null;
|
|
143
|
+
warning: string | null;
|
|
144
|
+
};
|
|
145
|
+
export interface CostQuotaOptions {
|
|
146
|
+
days?: number;
|
|
147
|
+
json?: boolean;
|
|
148
|
+
write?: boolean;
|
|
149
|
+
/** Tests and callers pin these; the CLI uses the user's HOME and the wall clock. */
|
|
150
|
+
home?: string;
|
|
151
|
+
now?: Date;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Runs the calibration and, with `write`, stores the calibrated windows.
|
|
155
|
+
* @returns The lines to print: the text report, or one JSON document with `--json`.
|
|
156
|
+
*/
|
|
157
|
+
export declare function costQuota(opts?: CostQuotaOptions): string[];
|
|
158
|
+
export {};
|