@open-agent-toolkit/cli 0.3.21 → 0.3.22
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/assets/bundle-metadata.json +1 -1
- package/assets/docs/reference/cli-reference.md +8 -3
- package/assets/docs/reference/configuration.md +3 -0
- package/assets/docs/reference/oat-directory-structure.md +1 -1
- package/assets/docs/reference/project-artifacts.md +141 -2
- package/assets/docs/reference/project-state-machine.md +2 -2
- package/assets/docs/workflows/advanced/autonomy.md +29 -12
- package/assets/docs/workflows/advanced/cursor-cloud.md +20 -6
- package/assets/docs/workflows/advanced/workflow-gates.md +9 -0
- package/assets/docs/workflows/projects/closeout/closeout-skills.md +24 -5
- package/assets/docs/workflows/projects/closeout/retro.md +6 -2
- package/assets/docs/workflows/projects/execution/implementation-execution.md +18 -4
- package/assets/docs/workflows/projects/execution/index.md +1 -1
- package/assets/docs/workflows/projects/execution/picking-up-projects.md +3 -2
- package/assets/docs/workflows/projects/execution/project-log.md +100 -11
- package/assets/docs/workflows/projects/lifecycle.md +3 -3
- package/assets/docs/workflows/projects/reviews/index.md +18 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +12 -8
- package/assets/skills/oat-cursor-cloud-projects/references/cursor-cloud-mechanics.md +63 -2
- package/assets/skills/oat-project-autonomous/SKILL.md +88 -26
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
- package/assets/skills/oat-project-brief/SKILL.md +1 -1
- package/assets/skills/oat-project-brief/references/brief-contract.md +33 -27
- package/assets/skills/oat-project-brief/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-complete/SKILL.md +142 -25
- package/assets/skills/oat-project-complete-auto/SKILL.md +4 -4
- package/assets/skills/oat-project-dispatch-subagents/SKILL.md +10 -5
- package/assets/skills/oat-project-document/SKILL.md +1 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-goal/SKILL.md +63 -15
- package/assets/skills/oat-project-goal/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/SKILL.md +6 -6
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +28 -7
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +10 -5
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-implement/references/phase-execution.md +23 -9
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +4 -4
- package/assets/skills/oat-project-lite/SKILL.md +1 -1
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-pr-final/SKILL.md +6 -1
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-pr-progress/SKILL.md +6 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +1 -1
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
- package/assets/skills/oat-project-reconcile/SKILL.md +13 -19
- package/assets/skills/oat-project-retro/SKILL.md +5 -2
- package/assets/skills/oat-project-retro/references/evidence-and-lanes.md +9 -3
- package/assets/skills/oat-project-review-provide/SKILL.md +28 -3
- package/assets/skills/oat-project-review-receive/SKILL.md +32 -18
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +10 -6
- package/assets/skills/oat-project-revise/SKILL.md +9 -2
- package/assets/skills/oat-project-summary/SKILL.md +166 -37
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +3 -3
- package/assets/templates/implementation-brief.md +5 -36
- package/assets/templates/implementation.md +11 -81
- package/assets/templates/project-log.md +2 -31
- package/assets/templates/project-retro.md +4 -1
- package/assets/templates/summary.md +13 -5
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +44 -1
- package/dist/commands/project/archive/archive-utils.d.ts +205 -8
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +708 -44
- package/dist/commands/project/archive/index.d.ts.map +1 -1
- package/dist/commands/project/archive/index.js +1 -0
- package/dist/commands/project/archive/push-runner.d.ts +9 -1
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/push-runner.js +56 -18
- package/dist/commands/project/archive/sync-runner.d.ts +28 -0
- package/dist/commands/project/archive/sync-runner.d.ts.map +1 -1
- package/dist/commands/project/archive/sync-runner.js +44 -22
- package/dist/commands/project/complete-state/index.d.ts.map +1 -1
- package/dist/commands/project/complete-state/index.js +45 -0
- package/dist/commands/project/dispatch/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch/index.js +24 -2
- package/dist/commands/project/dispatch/record.d.ts +54 -1
- package/dist/commands/project/dispatch/record.d.ts.map +1 -1
- package/dist/commands/project/dispatch/record.js +229 -1
- package/dist/commands/project/index.d.ts.map +1 -1
- package/dist/commands/project/index.js +2 -0
- package/dist/commands/project/journal-check/evaluator.d.ts +17 -0
- package/dist/commands/project/journal-check/evaluator.d.ts.map +1 -0
- package/dist/commands/project/journal-check/evaluator.js +140 -0
- package/dist/commands/project/journal-check/index.d.ts +34 -0
- package/dist/commands/project/journal-check/index.d.ts.map +1 -0
- package/dist/commands/project/journal-check/index.js +163 -0
- package/dist/commands/project/journal-check/rules.d.ts +68 -0
- package/dist/commands/project/journal-check/rules.d.ts.map +1 -0
- package/dist/commands/project/journal-check/rules.js +994 -0
- package/dist/commands/project/journal-check/types.d.ts +63 -0
- package/dist/commands/project/journal-check/types.d.ts.map +1 -0
- package/dist/commands/project/journal-check/types.js +26 -0
- package/dist/commands/project/log/append.d.ts +6 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +114 -6
- package/dist/commands/project/log/check.d.ts +23 -1
- package/dist/commands/project/log/check.d.ts.map +1 -1
- package/dist/commands/project/log/check.js +20 -3
- package/dist/commands/project/log/grammar.d.ts +37 -0
- package/dist/commands/project/log/grammar.d.ts.map +1 -1
- package/dist/commands/project/log/grammar.js +72 -0
- package/dist/commands/project/log/rollup.d.ts +87 -1
- package/dist/commands/project/log/rollup.d.ts.map +1 -1
- package/dist/commands/project/log/rollup.js +257 -5
- package/dist/config/oat-config.d.ts +14 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +17 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +5 -1
- package/dist/providers/identity/generic-dispatch-record.d.ts +33 -0
- package/dist/providers/identity/generic-dispatch-record.d.ts.map +1 -1
- package/dist/providers/identity/generic-dispatch-record.js +60 -1
- package/package.json +2 -2
|
@@ -9,6 +9,7 @@ oat_template_name: summary
|
|
|
9
9
|
oat_summary_last_task: null
|
|
10
10
|
oat_summary_revision_count: 0
|
|
11
11
|
oat_summary_includes_revisions: []
|
|
12
|
+
oat_summary_learnings_fingerprint: none
|
|
12
13
|
---
|
|
13
14
|
|
|
14
15
|
# Summary: {Project Name}
|
|
@@ -69,11 +70,18 @@ Pull from implementation.md task notes flagged as issues/blockers.}
|
|
|
69
70
|
|
|
70
71
|
## Autonomous Execution Learnings
|
|
71
72
|
|
|
72
|
-
<!-- CONDITIONAL: Include this entire section only when the project
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
<!-- CONDITIONAL: Include this entire section only when the project log has
|
|
74
|
+
actionable category-bearing judgment entries (a **Category:** head written
|
|
75
|
+
by `oat project log append --category`) or a legacy
|
|
76
|
+
oat-execution-learnings.md has actionable entries; read the log first and
|
|
77
|
+
the legacy file second. Otherwise remove the heading, category
|
|
78
|
+
subheadings, and placeholders. Omit empty categories.
|
|
79
|
+
Each recommendation needs a one-line rationale and the plain-text source
|
|
80
|
+
identity of every supporting entry, never a link: the token
|
|
81
|
+
oat-project:<slug>#<entry-id> for a log entry, or "legacy learning
|
|
82
|
+
<timestamp> — <category> — <title>" for a legacy entry.
|
|
83
|
+
The Workflow Observations section is owned by `oat project log rollup`,
|
|
84
|
+
which appends or omits it; never add it here or by hand. -->
|
|
77
85
|
|
|
78
86
|
### Agent-instruction updates
|
|
79
87
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAoBzC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { normalizeDispatchMatrix, validateDispatchRouteTarget, walkDispatchMatri
|
|
|
12
12
|
import { formatDispatchNotices, terminalReviewerNoticesForMatrix, } from '../../config/dispatch-notices.js';
|
|
13
13
|
import { dispatchPolicyModeDescription, dispatchPolicyPolicyDescription, managedDispatchPolicyValueList, } from '../../config/dispatch-policy-options.js';
|
|
14
14
|
import { parseJsonConfig } from '../../config/json.js';
|
|
15
|
-
import { DEFAULT_INSTRUCTION_SYNC_STRATEGY, INSTRUCTION_SYNC_STRATEGIES, VALID_DISPATCH_POLICY_MODES, VALID_MANAGED_DISPATCH_POLICIES, MAX_GATE_TIMEOUT_MS, MIN_GATE_TIMEOUT_MS, isValidGateTimeoutMs, normalizeWorkflowPostImplementSequence, readOatConfig, readOatConfigForDefaultScopeRepair, readOatConfigForDocumentationExcludesRepair, readOatConfigForInstructionPointerExcludesRepair, readOatConfigForInstructionSyncStrategyRepair, readOatConfigWithWarnings, readOatLocalConfig, readUserConfig, writeOatConfig, writeOatLocalConfig, writeUserConfig, VALID_POST_IMPLEMENT_LEGACY_SEQUENCES, } from '../../config/oat-config.js';
|
|
15
|
+
import { DEFAULT_INSTRUCTION_SYNC_STRATEGY, INSTRUCTION_SYNC_STRATEGIES, VALID_DISPATCH_POLICY_MODES, VALID_MANAGED_DISPATCH_POLICIES, MAX_GATE_TIMEOUT_MS, MIN_GATE_TIMEOUT_MS, isValidGateTimeoutMs, isValidProjectLogDigestBound, normalizeWorkflowPostImplementSequence, readOatConfig, readOatConfigForDefaultScopeRepair, readOatConfigForDocumentationExcludesRepair, readOatConfigForInstructionPointerExcludesRepair, readOatConfigForInstructionSyncStrategyRepair, readOatConfigWithWarnings, readOatLocalConfig, readUserConfig, writeOatConfig, writeOatLocalConfig, writeUserConfig, VALID_POST_IMPLEMENT_LEGACY_SEQUENCES, } from '../../config/oat-config.js';
|
|
16
16
|
import { getOwnKey, setOwnKey } from '../../config/own-keys.js';
|
|
17
17
|
import { resolveEffectiveConfig, resolveEnvOverride, } from '../../config/resolve.js';
|
|
18
18
|
import { resolveAssetsRoot } from '../../fs/assets.js';
|
|
@@ -107,6 +107,8 @@ const KEY_ORDER = [
|
|
|
107
107
|
'workflow.autoArtifactReview.analysis',
|
|
108
108
|
'workflow.projectLog',
|
|
109
109
|
'workflow.projectLogLedgerPath',
|
|
110
|
+
'workflow.projectLogDigest.maxEntries',
|
|
111
|
+
'workflow.projectLogDigest.maxLines',
|
|
110
112
|
'workflow.designMode',
|
|
111
113
|
'workflow.dispatchPolicy.mode',
|
|
112
114
|
'workflow.dispatchPolicy.policy',
|
|
@@ -749,6 +751,28 @@ const CONFIG_CATALOG = [
|
|
|
749
751
|
owningCommand: 'oat config set workflow.projectLogLedgerPath <repo-relative-path>',
|
|
750
752
|
description: 'Repo-relative ledger path used by project-log rollup. Resolution: local > shared > user > default.',
|
|
751
753
|
},
|
|
754
|
+
{
|
|
755
|
+
key: 'workflow.projectLogDigest.maxEntries',
|
|
756
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
757
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
758
|
+
scope: 'workflow',
|
|
759
|
+
type: 'positive integer',
|
|
760
|
+
defaultValue: '12',
|
|
761
|
+
mutability: 'read/write',
|
|
762
|
+
owningCommand: 'oat config set workflow.projectLogDigest.maxEntries <positive-integer>',
|
|
763
|
+
description: 'Maximum judgment entries project-log rollup renders in the summary Workflow Observations digest; omitted entries are counted. Independent of workflow.projectLog. Resolution: local > shared > user > default.',
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
key: 'workflow.projectLogDigest.maxLines',
|
|
767
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
768
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
769
|
+
scope: 'workflow',
|
|
770
|
+
type: 'positive integer',
|
|
771
|
+
defaultValue: '60',
|
|
772
|
+
mutability: 'read/write',
|
|
773
|
+
owningCommand: 'oat config set workflow.projectLogDigest.maxLines <positive-integer>',
|
|
774
|
+
description: 'Maximum rendered lines of the summary Workflow Observations digest written by project-log rollup, counting the omitted-count trailer and cross-reference lines it reserves first; the minimum useful value is about 6 (a two-line first item plus that reserve), and below it no item is rendered. Independent of workflow.projectLog. Resolution: local > shared > user > default.',
|
|
775
|
+
},
|
|
752
776
|
{
|
|
753
777
|
key: 'workflow.designMode',
|
|
754
778
|
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
@@ -1276,6 +1300,15 @@ function parseWorkflowValue(key, rawValue) {
|
|
|
1276
1300
|
}
|
|
1277
1301
|
return normalized;
|
|
1278
1302
|
}
|
|
1303
|
+
if (key === 'workflow.projectLogDigest.maxEntries' ||
|
|
1304
|
+
key === 'workflow.projectLogDigest.maxLines') {
|
|
1305
|
+
const normalized = rawValue.trim();
|
|
1306
|
+
const value = /^\d+$/.test(normalized) ? Number(normalized) : Number.NaN;
|
|
1307
|
+
if (!isValidProjectLogDigestBound(value)) {
|
|
1308
|
+
throw new Error(`Invalid value for ${key}: expected a positive integer, got '${rawValue}'`);
|
|
1309
|
+
}
|
|
1310
|
+
return value;
|
|
1311
|
+
}
|
|
1279
1312
|
if (key === 'workflow.gateTimeouts.code' ||
|
|
1280
1313
|
key === 'workflow.gateTimeouts.artifact') {
|
|
1281
1314
|
const value = Number(rawValue);
|
|
@@ -1401,6 +1434,16 @@ function applyWorkflowValue(workflow, key, value) {
|
|
|
1401
1434
|
postImplementSequence: value,
|
|
1402
1435
|
};
|
|
1403
1436
|
}
|
|
1437
|
+
if (subKey.startsWith('projectLogDigest.')) {
|
|
1438
|
+
const digestKey = subKey.slice('projectLogDigest.'.length);
|
|
1439
|
+
return {
|
|
1440
|
+
...workflow,
|
|
1441
|
+
projectLogDigest: {
|
|
1442
|
+
...workflow.projectLogDigest,
|
|
1443
|
+
[digestKey]: value,
|
|
1444
|
+
},
|
|
1445
|
+
};
|
|
1446
|
+
}
|
|
1404
1447
|
if (subKey.startsWith('gateTimeouts.')) {
|
|
1405
1448
|
const timeoutKey = subKey.slice('gateTimeouts.'.length);
|
|
1406
1449
|
return {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { rename } from 'node:fs/promises';
|
|
2
2
|
import { type GitRunner } from '../../project/sync/git.js';
|
|
3
3
|
import { readSyncedRecord, writeSyncedRecord } from '../../project/sync/record.js';
|
|
4
|
-
import { commitRecordChange, preflightSyncedCheckout, removeSyncedCheckout, retireSyncedRef, type SyncedRefRetirementReceipt } from '../../project/sync/ref-sync.js';
|
|
4
|
+
import { buildSyncTarget, commitRecordChange, preflightSyncedCheckout, removeSyncedCheckout, retireSyncedRef, type SyncedRefRetirementReceipt } from '../../project/sync/ref-sync.js';
|
|
5
5
|
import { probeSyncedTerminalRefs } from '../../project/sync/resolve-target.js';
|
|
6
6
|
import { type ProjectScope } from '../../shared/project-scope.js';
|
|
7
|
+
import { CliError } from '../../../errors/cli-error.js';
|
|
7
8
|
import { copyDirectory, copySingleFile, dirExists, ensureDir, fileExists } from '../../../fs/io.js';
|
|
8
9
|
export type ExecFileResult = {
|
|
9
10
|
stdout: string;
|
|
@@ -62,6 +63,8 @@ export interface ArchiveProjectOnCompletionOptions {
|
|
|
62
63
|
*/
|
|
63
64
|
awsRegion?: string | null;
|
|
64
65
|
commit?: boolean;
|
|
66
|
+
/** `--new-generation <reason>`: archive reopened work as the next generation. */
|
|
67
|
+
newGenerationReason?: string | null;
|
|
65
68
|
}
|
|
66
69
|
export interface ResolvePrimaryRepoRootDependencies {
|
|
67
70
|
gitExecFile?: ExecFileLike;
|
|
@@ -134,18 +137,74 @@ export interface ArchiveProjectOnCompletionResult {
|
|
|
134
137
|
snapshotId: string;
|
|
135
138
|
terminalReceipt: SyncedRefRetirementReceipt | null;
|
|
136
139
|
recordRetired: boolean;
|
|
140
|
+
/** Archive generation of the snapshot; 1 for a first archive. */
|
|
141
|
+
generation?: number;
|
|
142
|
+
/** Snapshot the generation succeeds, or null for generation 1. */
|
|
143
|
+
predecessorSnapshot?: string | null;
|
|
137
144
|
}
|
|
138
145
|
export declare const ARCHIVE_SNAPSHOT_METADATA_FILENAME = ".oat-archive-source.json";
|
|
139
|
-
/**
|
|
140
|
-
* Directories excluded from S3 archive sync. These contain process artifacts
|
|
141
|
-
* (reviews, PR descriptions) rather than project deliverables.
|
|
142
|
-
*/
|
|
143
|
-
export declare const S3_ARCHIVE_SYNC_EXCLUDES: string[];
|
|
144
146
|
export interface ArchiveSnapshotMetadata {
|
|
145
147
|
projectName: string;
|
|
146
148
|
snapshotName: string;
|
|
147
149
|
scope: ProjectScope;
|
|
148
150
|
sourceRefSha?: string;
|
|
151
|
+
/**
|
|
152
|
+
* `sha256:` hash of the canonical retained-artifact manifest (see
|
|
153
|
+
* `computeArchiveManifestHash`). Absent on archives written before retry
|
|
154
|
+
* identity was persisted; readers then hash the archive's own files.
|
|
155
|
+
*/
|
|
156
|
+
manifestHash?: string;
|
|
157
|
+
/** Archive generation of this project and scope; 1 for the first archive. */
|
|
158
|
+
generation?: number;
|
|
159
|
+
/** Snapshot of the generation this one succeeds (generation 2 and later). */
|
|
160
|
+
predecessor?: string;
|
|
161
|
+
/**
|
|
162
|
+
* Explicit generation request id: `sha256` of the project, scope,
|
|
163
|
+
* predecessor snapshot and retained-artifact manifest. Replaying the same
|
|
164
|
+
* request (same predecessor, same content) resolves to this generation; a
|
|
165
|
+
* later request with changed content resolves to a new one.
|
|
166
|
+
*/
|
|
167
|
+
generationRequest?: string;
|
|
168
|
+
/** Operator reason given with `--new-generation`. */
|
|
169
|
+
generationReason?: string;
|
|
170
|
+
/**
|
|
171
|
+
* `pending` while an allocated generation's copy has not completed; the
|
|
172
|
+
* identity is persisted before any export, copy or S3 side effect so a retry
|
|
173
|
+
* reuses it.
|
|
174
|
+
*/
|
|
175
|
+
allocation?: 'pending';
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Top-level project entries an archive never retains: review and PR evidence
|
|
179
|
+
* are process artifacts, not project deliverables (D2), and a synced
|
|
180
|
+
* checkout's `.git` link is not project content. This one list defines the
|
|
181
|
+
* retained archive: the local copy, the retained-artifact manifest, the S3
|
|
182
|
+
* upload and the S3 hydration all read it, so an archive restored from S3
|
|
183
|
+
* hashes equal to the archive that was uploaded.
|
|
184
|
+
*/
|
|
185
|
+
export declare const ARCHIVE_RETENTION_EXCLUSIONS: readonly string[];
|
|
186
|
+
/**
|
|
187
|
+
* `aws s3 sync --exclude` patterns for the upload and the hydration, derived
|
|
188
|
+
* from `ARCHIVE_RETENTION_EXCLUSIONS` so S3 never holds or restores a
|
|
189
|
+
* top-level entry the manifest does not retain.
|
|
190
|
+
*/
|
|
191
|
+
export declare const S3_ARCHIVE_SYNC_EXCLUDES: readonly string[];
|
|
192
|
+
/**
|
|
193
|
+
* Top-level entries the archive itself owns. They are derived at archive time,
|
|
194
|
+
* so the manifest that identifies the retained project content excludes them.
|
|
195
|
+
*/
|
|
196
|
+
export declare const ARCHIVE_OWNED_ENTRIES: readonly string[];
|
|
197
|
+
/**
|
|
198
|
+
* The prefix an exported summary's finalized source locator carries:
|
|
199
|
+
* `oat-archive:<snapshot>#<entry-id>`, where `<snapshot>` is the persisted
|
|
200
|
+
* dated export identity (also the summary export file stem and the S3 key).
|
|
201
|
+
*/
|
|
202
|
+
export declare const ARCHIVE_LOCATOR_PREFIX = "oat-archive:";
|
|
203
|
+
export interface RecordlessSyncedArchiveIdentity {
|
|
204
|
+
archivePath: string;
|
|
205
|
+
metadata: ArchiveSnapshotMetadata & {
|
|
206
|
+
sourceRefSha: string;
|
|
207
|
+
};
|
|
149
208
|
}
|
|
150
209
|
export interface ExactArchiveProjectRoot {
|
|
151
210
|
canonicalProjectPath: string;
|
|
@@ -176,15 +235,153 @@ export declare function buildAwsEnv(parentEnv: NodeJS.ProcessEnv, opts: {
|
|
|
176
235
|
export declare function buildRepoArchiveS3Uri(s3Uri: string, repoRoot: string): string;
|
|
177
236
|
export declare function buildProjectArchiveS3Uri(s3Uri: string, repoRoot: string, projectKey: string): string;
|
|
178
237
|
export declare function buildArchiveSnapshotName(projectName: string, timestamp: string): string;
|
|
179
|
-
|
|
238
|
+
/**
|
|
239
|
+
* The one archive naming contract, shared by the writer and every reader:
|
|
240
|
+
* local name `<slug>[-gN][-<scope>]` and snapshot (export identity)
|
|
241
|
+
* `<YYYYMMDD>-<local-name>`. `-gN` (N >= 2) names a successor generation;
|
|
242
|
+
* `-<scope>` qualifies an identity whose unqualified name another scope's
|
|
243
|
+
* archive already holds.
|
|
244
|
+
*/
|
|
245
|
+
export declare function formatArchiveLocalName(projectName: string, generation: number, scope: ProjectScope | null): string;
|
|
246
|
+
export interface ParsedArchiveSnapshotName {
|
|
247
|
+
/** Base project slug, without generation or scope qualifier. */
|
|
180
248
|
projectName: string;
|
|
249
|
+
/** Full local archive name the snapshot hydrates to; never shortened. */
|
|
250
|
+
localName: string;
|
|
251
|
+
/** Generation family: the slug plus its scope qualifier, if any. */
|
|
252
|
+
familyName: string;
|
|
253
|
+
/** Scope qualifier carried by the name, or null when unqualified. */
|
|
254
|
+
scope: ProjectScope | null;
|
|
181
255
|
snapshotName: string;
|
|
182
256
|
dateStamp: string | null;
|
|
183
|
-
|
|
257
|
+
/** Archive generation; 1 when the name carries no `-gN`. */
|
|
258
|
+
generation: number;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Parses an S3 snapshot name under the naming contract of
|
|
262
|
+
* `formatArchiveLocalName`. The local name is the archive directory the
|
|
263
|
+
* snapshot hydrates to, so generation 2 of `<project>` restores to
|
|
264
|
+
* `<project>-g2` (or `<project>-g2-<scope>`), never over generation 1. An
|
|
265
|
+
* undated name is its own local, family and project name. A project whose own
|
|
266
|
+
* slug ends in `-gN` or `-<scope>` reads as that generation or qualifier: the
|
|
267
|
+
* residual ambiguity the by-name sync precedence documents.
|
|
268
|
+
*/
|
|
269
|
+
export declare function parseArchiveSnapshotName(snapshotName: string): ParsedArchiveSnapshotName;
|
|
184
270
|
export declare function resolveLocalArchiveProjectPath(projectsRoot: string, projectName: string): string;
|
|
185
271
|
export declare function resolvePrimaryRepoRoot(repoRoot: string, dependencies?: ResolvePrimaryRepoRootDependencies): Promise<string>;
|
|
186
272
|
export declare function resolveArchiveProjectTarget(options: ResolveArchiveProjectTargetOptions, dependencies?: ResolveArchiveProjectTargetDependencies): Promise<ArchiveProjectTarget>;
|
|
187
273
|
export declare function assertDurableArchiveProjectTarget(target: ArchiveProjectTarget): void;
|
|
274
|
+
/**
|
|
275
|
+
* Hashes the canonical retained-artifact manifest of a project or archive
|
|
276
|
+
* directory: every regular file below `root`, except the top-level
|
|
277
|
+
* `ARCHIVE_RETENTION_EXCLUSIONS` and `ARCHIVE_OWNED_ENTRIES`, as sorted
|
|
278
|
+
* `<sha256> <posix path>` lines. A source project and the archive copied from
|
|
279
|
+
* it therefore hash equal, so an identical retry is recognized from either
|
|
280
|
+
* side. Symlinks and empty directories are not retained by the copy and are
|
|
281
|
+
* not hashed. Read-only.
|
|
282
|
+
*/
|
|
283
|
+
export declare function computeArchiveManifestHash(root: string): Promise<string>;
|
|
284
|
+
export interface EvaluateArchiveRetryIdentityOptions {
|
|
285
|
+
repoRoot: string;
|
|
286
|
+
projectsRoot: string;
|
|
287
|
+
projectName: string;
|
|
288
|
+
projectPath: string;
|
|
289
|
+
scope: ProjectScope;
|
|
290
|
+
/** Clock reading used only when a new dated export identity is allocated. */
|
|
291
|
+
timestamp: string;
|
|
292
|
+
/** Snapshot already bound by a synced record or a recordless synced retry. */
|
|
293
|
+
persistedSnapshot?: string;
|
|
294
|
+
/** Verified synced source ref; a candidate must carry the same SHA. */
|
|
295
|
+
sourceRefSha?: string;
|
|
296
|
+
/** `--new-generation <reason>`: authorize one successor generation. */
|
|
297
|
+
newGeneration?: {
|
|
298
|
+
reason: string;
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
export interface EvaluateArchiveRetryIdentityDependencies extends ResolveArchiveProjectTargetDependencies {
|
|
302
|
+
resolveArchiveProjectTarget?: typeof resolveArchiveProjectTarget;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* The archive identity an apply would use: a `retry` reuses an existing
|
|
306
|
+
* snapshot's local path, dated export identity (summary export file stem and
|
|
307
|
+
* S3 key) and generation; `new` allocates them.
|
|
308
|
+
*/
|
|
309
|
+
export interface ArchiveRetryIdentity {
|
|
310
|
+
disposition: 'new' | 'retry';
|
|
311
|
+
projectName: string;
|
|
312
|
+
scope: ProjectScope;
|
|
313
|
+
snapshotName: string;
|
|
314
|
+
archivePath: string;
|
|
315
|
+
archiveExists: boolean;
|
|
316
|
+
generation: number;
|
|
317
|
+
/** Retained-artifact manifest hash of the present source, else null. */
|
|
318
|
+
manifestHash: string | null;
|
|
319
|
+
sourcePresent: boolean;
|
|
320
|
+
target: ArchiveProjectTarget;
|
|
321
|
+
/** Predecessor snapshot for generation 2 and later, else null. */
|
|
322
|
+
predecessor: string | null;
|
|
323
|
+
generationRequest: string | null;
|
|
324
|
+
generationReason: string | null;
|
|
325
|
+
/** True when the archive's generation is allocated but not yet copied. */
|
|
326
|
+
allocationPending: boolean;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* The warning both apply and dry-run report when `--new-generation` resolved to
|
|
330
|
+
* an existing generation: the retained artifacts are identical to it, so no
|
|
331
|
+
* generation is allocated and the reason is not recorded.
|
|
332
|
+
*/
|
|
333
|
+
export declare function newGenerationReplayWarning(identity: Pick<ArchiveRetryIdentity, 'disposition' | 'generation' | 'snapshotName' | 'generationReason'>, newGenerationReason: string | null | undefined): string | null;
|
|
334
|
+
/** Validates `--new-generation <reason>`: one non-empty line. */
|
|
335
|
+
export declare function validateNewGenerationReason(reason: string): string;
|
|
336
|
+
/** Stable reason codes of the archive identity refusals. */
|
|
337
|
+
export declare const ARCHIVE_IDENTITY_REFUSAL_CODES: readonly ['archive-retry-ambiguous', 'archive-retry-conflict', 'archive-occupant-unverifiable', 'archive-generation-synced', 'archive-generation-reason', 'archive-generation-source-absent', 'archive-generation-no-predecessor', 'archive-generation-ambiguous-predecessor', 'archive-generation-pending', 'archive-generation-path-occupied', 'archive-synced-recordless-unbound', 'archive-synced-recordless-ambiguous', 'archive-retry-candidate-damaged'];
|
|
338
|
+
export type ArchiveIdentityRefusalCode = (typeof ARCHIVE_IDENTITY_REFUSAL_CODES)[number];
|
|
339
|
+
/**
|
|
340
|
+
* An archive identity refusal: fails closed before any write, with a stable
|
|
341
|
+
* reason code that prefixes the message and that `--json` reports as `code`.
|
|
342
|
+
*/
|
|
343
|
+
export declare class ArchiveIdentityError extends CliError {
|
|
344
|
+
readonly code: ArchiveIdentityRefusalCode;
|
|
345
|
+
constructor(code: ArchiveIdentityRefusalCode, message: string, exitCode?: 1 | 2);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* The one read-only evaluator of archive retry identity, shared by the archive
|
|
349
|
+
* apply and its dry-run. Persisted identity is the project, its originating
|
|
350
|
+
* scope and the snapshot/generation recorded in `.oat-archive-source.json`,
|
|
351
|
+
* bound to the canonical retained-artifact manifest (and, for synced projects,
|
|
352
|
+
* the source ref SHA):
|
|
353
|
+
*
|
|
354
|
+
* - a persisted synced snapshot keeps its recorded identity;
|
|
355
|
+
* - a present source whose manifest matches exactly one same-scope archive is
|
|
356
|
+
* an identical retry and reuses that archive's snapshot, dated export
|
|
357
|
+
* identity and generation, across dates;
|
|
358
|
+
* - an absent source resumes the single same-scope archive;
|
|
359
|
+
* - any other same-scope archive, an unverifiable archive at the project's
|
|
360
|
+
* base path, or more than one match refuses before any export, copy,
|
|
361
|
+
* overwrite or S3 mutation, with follow-up-project guidance;
|
|
362
|
+
* - otherwise a new identity is allocated, its dated export identity
|
|
363
|
+
* qualified by scope when a different project's archive already holds it.
|
|
364
|
+
*
|
|
365
|
+
* It writes nothing: no file, metadata, ref or remote object.
|
|
366
|
+
*/
|
|
367
|
+
export declare function evaluateArchiveRetryIdentity(options: EvaluateArchiveRetryIdentityOptions, dependencies?: EvaluateArchiveRetryIdentityDependencies): Promise<ArchiveRetryIdentity>;
|
|
368
|
+
/**
|
|
369
|
+
* Finalizes the export-safe source locators of a summary bound for the tracked
|
|
370
|
+
* export: `oat-project:<slug>#<entry-id>` tokens of this project become
|
|
371
|
+
* `oat-archive:<snapshot>#<entry-id>`, and a relative Markdown link to the
|
|
372
|
+
* archived-only project log or legacy learnings file becomes plain text naming
|
|
373
|
+
* the archive identity; a relative link to unarchived review or PR evidence
|
|
374
|
+
* (`reviews/…`, `pr/…`) becomes plain provenance naming the file. Every other
|
|
375
|
+
* byte is unchanged.
|
|
376
|
+
*/
|
|
377
|
+
export declare function finalizeSummaryArchiveLocators(text: string, projectName: string, snapshotName: string): string;
|
|
378
|
+
/**
|
|
379
|
+
* Binds a recordless synced project's archive identity through its
|
|
380
|
+
* authoritative completed ref (read-only: it scans local archive metadata and
|
|
381
|
+
* probes refs). Apply and dry-run both use it, so a preview reports the
|
|
382
|
+
* snapshot the apply would bind, or refuses as the apply would.
|
|
383
|
+
*/
|
|
384
|
+
export declare function resolveRecordlessSyncedArchiveIdentity(options: Pick<ArchiveProjectOnCompletionOptions, 'repoRoot' | 'projectsRoot' | 'projectName'>, target: ReturnType<typeof buildSyncTarget>, git: GitRunner, dependencies: ArchiveProjectOnCompletionDependencies): Promise<RecordlessSyncedArchiveIdentity>;
|
|
188
385
|
export declare function verifySelectedProjectRecapForArchive(projectPath: string, projectRecapRun: string): Promise<void>;
|
|
189
386
|
export declare function archiveProjectOnCompletion(options: ArchiveProjectOnCompletionOptions, dependencies?: ArchiveProjectOnCompletionDependencies): Promise<ArchiveProjectOnCompletionResult>;
|
|
190
387
|
export declare function ensureS3ArchiveAccess(options: EnsureS3ArchiveAccessOptions, dependencies?: EnsureS3ArchiveAccessDependencies): Promise<EnsureS3ArchiveAccessResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive-utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/archive/archive-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,MAAM,EAGP,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"archive-utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/archive/archive-utils.ts"],"names":[],"mappings":"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"}
|