@zq-silk/yui 0.13.9 → 0.14.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.
- package/ARCHITECTURE.md +69 -428
- package/README.md +108 -298
- package/dist/agent/managedRuntimeEnvironment.js +2 -2
- package/dist/cli/commandCatalog.js +39 -77
- package/dist/cli/interactionCandidates.js +4 -4
- package/dist/cli/interactionPolicy.js +7 -10
- package/dist/cli/invocationRouter.js +1 -1
- package/dist/cli/updateCommand.js +6 -27
- package/dist/cli/updateOrchestrator.js +63 -484
- package/dist/cli/updatePorts.js +15 -333
- package/dist/cli/upgradeCommand.js +8 -65
- package/dist/cli.js +57 -242
- package/dist/commands/configCommands.js +11 -62
- package/dist/commands/executionAuditCommands.js +23 -23
- package/dist/commands/globalRoleCommands.js +2 -7
- package/dist/commands/jobCommands.js +1 -4
- package/dist/commands/projectCommands.js +5 -5
- package/dist/commands/releaseCommands.js +3 -10
- package/dist/commands/resourcesCommands.js +2 -2
- package/dist/commands/sessionCommands.js +2 -2
- package/dist/commands/taskActor.js +31 -39
- package/dist/commands/taskChangeSetCommands.js +5 -12
- package/dist/commands/taskCommands.js +464 -1249
- package/dist/commands/taskContextCommand.js +35 -36
- package/dist/commands/taskExecutionCommands.js +33 -46
- package/dist/commands/taskInputCommands.js +20 -42
- package/dist/commands/taskNextActionCommand.js +9 -9
- package/dist/commands/taskOverviewCommand.js +56 -95
- package/dist/commands/taskRoleRuntimeStatus.js +77 -107
- package/dist/commands/taskUpstreamCommands.js +3 -3
- package/dist/commands/taskWorkspaceCommands.js +7 -79
- package/dist/commands/telemetryCommands.js +32 -124
- package/dist/commands/workflowCommands.js +3 -3
- package/dist/completion/fileCompletionManager.js +1 -1
- package/dist/config/configCatalog.js +4 -6
- package/dist/config/yuiConfig.js +6 -43
- package/dist/context/dispatchContext.js +14 -30
- package/dist/context/roleSessionContext.js +2 -2
- package/dist/context/sessionBootstrapManifest.js +2 -2
- package/dist/context/{runContextPack.js → turnContextPack.js} +58 -73
- package/dist/context/turnInputContract.js +204 -0
- package/dist/context/wakeNotification.js +2 -2
- package/dist/controller/agentRuntimeObserver.js +18 -18
- package/dist/controller/clientRuntime.js +13 -20
- package/dist/controller/controller.js +89 -116
- package/dist/controller/fileSchedulerStoreAdapter.js +511 -742
- package/dist/controller/jobControl.js +17 -17
- package/dist/controller/resourceInventory.js +6 -6
- package/dist/controller/resourceInventoryLinux.js +38 -59
- package/dist/controller/resourceInventoryRpc.js +3 -3
- package/dist/controller/resourceInventoryWorker.js +1 -1
- package/dist/controller/runtime.js +46 -53
- package/dist/controller/runtimeEventInbox.js +23 -31
- package/dist/controller/runtimeEventProcessor.js +15 -15
- package/dist/controller/{runtimeHookRunFence.js → runtimeHookTurnFence.js} +87 -81
- package/dist/controller/runtimeLaunchCoordinator.js +3 -3
- package/dist/controller/runtimeObservationHook.js +11 -8
- package/dist/controller/sessionNotify.js +11 -11
- package/dist/controller/structuredProviderObservation.js +89 -16
- package/dist/coordination/workMailbox.js +309 -579
- package/dist/coordination/workMailboxQueue.js +5 -6
- package/dist/core/controllerClient.js +1 -91
- package/dist/core/controllerServer.js +3 -6
- package/dist/doctor/doctor.js +51 -314
- package/dist/execution/candidateConvergence.js +3 -3
- package/dist/execution/executionGroup.js +32 -33
- package/dist/execution/executionHealth.js +36 -38
- package/dist/execution/resourceBroker.js +12 -12
- package/dist/executor/agentExecutor.js +30 -265
- package/dist/executor/effectiveLaunch.js +9 -19
- package/dist/executor/executorRegistry.js +43 -17
- package/dist/executor/fileRoleLaunchPlanner.js +56 -56
- package/dist/executor/launchPlan.js +3 -3
- package/dist/executor/workspacePreflightClassification.js +16 -16
- package/dist/grant/capabilityGrant.js +20 -25
- package/dist/input/inputRequest.js +12 -12
- package/dist/integration/changeSet.js +9 -13
- package/dist/integration/changeSetManifest.js +1 -1
- package/dist/integration/gitIntegrationService.js +2 -2
- package/dist/integration/integrationQueueService.js +5 -21
- package/dist/integration/overlapDiagnostics.js +2 -2
- package/dist/interaction/operatorPresentation.js +1 -1
- package/dist/job/jobRunner.js +1 -1
- package/dist/lifecycle/canonicalLifecycleEvent.js +25 -25
- package/dist/lifecycle/{exactRunTerminalization.js → exactTurnTerminalization.js} +116 -232
- package/dist/message/message.js +6 -6
- package/dist/observability/executionAudit.js +74 -86
- package/dist/observability/faultClassification.js +7 -24
- package/dist/observability/orchestrationMetrics.js +5 -5
- package/dist/observability/runtimeIdentity.js +34 -101
- package/dist/profile/agentProfile.js +1 -1
- package/dist/release/cliHomeReleaseFence.js +3 -3
- package/dist/release/releaseWorkflowEngine.js +6 -10
- package/dist/release/releaseWorkflowPorts.js +2 -2
- package/dist/release/workflowFileLock.js +1 -1
- package/dist/repository/checkoutSwap.js +1 -1
- package/dist/repository/gitWorkspace.js +0 -13
- package/dist/repository/project.js +1 -1
- package/dist/repository/projectMaintenanceLock.js +1 -2
- package/dist/repository/taskBaseFreshness.js +13 -13
- package/dist/repository/taskWorkspaceCoordinator.js +21 -25
- package/dist/repository/taskWorkspaceIdentity.js +8 -21
- package/dist/repository/taskWorkspacePreparer.js +63 -620
- package/dist/resources/autoResourceGc.js +3 -3
- package/dist/resources/liveReferences.js +1 -1
- package/dist/resources/resourceGc.js +1 -1
- package/dist/resources/sqliteResourceRegistry.js +1 -1
- package/dist/review/reviewDecision.js +7 -7
- package/dist/review/reviewFindingLedger.js +1 -1
- package/dist/review/reviewOutcomeClassifier.js +35 -50
- package/dist/review/reviewRound.js +14 -25
- package/dist/review/reviewerAvailability.js +4 -4
- package/dist/review/taskFinalReviewContractResolution.js +41 -0
- package/dist/role/role.js +6 -3
- package/dist/runtime/agentDriver.js +4 -0
- package/dist/runtime/agentHost.js +151 -36
- package/dist/runtime/builtinAgentDrivers.js +79 -2
- package/dist/runtime/codexAppServerRuntime.js +122 -0
- package/dist/runtime/continuationManager.js +3 -5
- package/dist/runtime/exactControlPlane.js +17 -42
- package/dist/runtime/firstProgressAdvisory.js +1 -1
- package/dist/runtime/index.js +2 -2
- package/dist/runtime/launchDiagnostics.js +2 -2
- package/dist/runtime/lifecycleReservation.js +4 -4
- package/dist/runtime/processExitObservation.js +1 -1
- package/dist/runtime/processExitOutbox.js +0 -32
- package/dist/runtime/promptEnvelope.js +9 -9
- package/dist/runtime/providerContinuation.js +2 -2
- package/dist/runtime/providerContinuationReconciliationService.js +2 -2
- package/dist/runtime/providerRuntimeIdentity.js +76 -24
- package/dist/runtime/recentTurnIds.js +38 -0
- package/dist/runtime/runtimeContinuationProjection.js +2 -2
- package/dist/runtime/runtimeHealthPolicy.js +1 -1
- package/dist/runtime/runtimeObservation.js +58 -21
- package/dist/runtime/runtimeProjection.js +19 -27
- package/dist/runtime/sessionLaunchRequest.js +2 -2
- package/dist/runtime/structuredProviderHost.js +177 -12
- package/dist/runtime/tmuxAdapters.js +46 -11
- package/dist/scheduler/activeRoleTurnDelivery.js +245 -0
- package/dist/scheduler/leaderWakeupProcessor.js +147 -445
- package/dist/scheduler/operatorEvent.js +4 -6
- package/dist/scheduler/resourceQueueProjection.js +71 -0
- package/dist/scheduler/{roleRunLiveness.js → roleTurnLiveness.js} +24 -28
- package/dist/scheduler/{roleRunStall.js → roleTurnStall.js} +162 -247
- package/dist/scheduler/taskExecutionProjection.js +99 -99
- package/dist/scheduler/taskObservabilityProjection.js +10 -10
- package/dist/scheduler/taskWake.js +4 -4
- package/dist/scheduler/wakeReason.js +6 -10
- package/dist/scheduler/wakeupQueue.js +0 -9
- package/dist/setup/setupCommand.js +2 -2
- package/dist/storage/currentTaskStore.js +46 -0
- package/dist/storage/persistenceWorker.js +1 -1
- package/dist/storage/sqliteSchema.js +81 -485
- package/dist/storage/sqliteStore.js +206 -365
- package/dist/storage/storageSchema.js +1 -15
- package/dist/storage/storageVersions.js +8 -9
- package/dist/storage/storeRpc.js +10 -34
- package/dist/storage/taskStore.js +63 -3415
- package/dist/storage/upgrade/recordVersions.js +55 -149
- package/dist/storage/upgrade/upgradeOrchestrator.js +89 -1752
- package/dist/task/completionReadiness.js +5 -5
- package/dist/task/deliveryGuard.js +10 -10
- package/dist/task/nextAction.js +74 -77
- package/dist/task/task.js +2 -4
- package/dist/task/taskRecordReference.js +3 -3
- package/dist/task/taskRecordRetirement.js +1 -1
- package/dist/telemetry/sqliteTelemetryStore.js +53 -53
- package/dist/telemetry/telemetryConfig.js +14 -14
- package/dist/telemetry/telemetryWiring.js +8 -14
- package/dist/turn/turn.js +356 -0
- package/dist/{run/runIdentity.js → turn/turnIdentity.js} +4 -4
- package/dist/verification/gateArtifactStore.js +2 -2
- package/dist/web/assets/client/app.js +1 -1
- package/dist/web/assets/client/components.js +29 -54
- package/dist/web/assets/client/i18n.js +17 -37
- package/dist/web/assets/client/view.js +37 -37
- package/dist/web/assets/shell.js +1 -1
- package/dist/web/assets/styles/cards.js +5 -5
- package/dist/web/assets/styles/widgets.js +1 -2
- package/dist/web/webSnapshot.js +65 -60
- package/dist/workItem/workItem.js +11 -11
- package/dist/workspace/workItemChangeSetManager.js +1 -1
- package/docs/task-local-identity.md +5 -5
- package/i18n/README.zh-CN.md +41 -54
- package/package.json +1 -1
- package/skills/yui-leader/SKILL.md +85 -83
- package/skills/yui-operator/SKILL.md +16 -16
- package/skills/yui-reviewer/SKILL.md +10 -10
- package/skills/yui-runtime/SKILL.md +17 -18
- package/skills/yui-worker/SKILL.md +16 -18
- package/dist/context/runContextContract.js +0 -162
- package/dist/executor/turnCompletion.js +0 -126
- package/dist/review/taskFinalReviewContractEvent.js +0 -1
- package/dist/review/taskFinalReviewContractRebind.js +0 -367
- package/dist/run/agentRun.js +0 -356
- package/dist/run/rejectedYieldAttempt.js +0 -221
- package/dist/run/runControlRequest.js +0 -50
- package/dist/run/yieldReceipt.js +0 -65
- package/dist/runtime/turnCompletion.js +0 -3
- package/dist/scheduler/actionability.js +0 -323
- package/dist/scheduler/activeRoleRunDelivery.js +0 -868
- package/dist/scheduler/activeTaskProgress.js +0 -126
- package/dist/storage/compatibleTaskStore.js +0 -248
- package/dist/storage/migration/baseline.js +0 -78
- package/dist/storage/migration/classifier.js +0 -51
- package/dist/storage/migration/compatibleCodec.js +0 -53
- package/dist/storage/migration/engine.js +0 -147
- package/dist/storage/migration/index.js +0 -33
- package/dist/storage/migration/planner.js +0 -154
- package/dist/storage/migration/productionRegistry.js +0 -3931
- package/dist/storage/migration/registry.js +0 -169
- package/dist/storage/migration/report.js +0 -54
- package/dist/storage/migration/types.js +0 -31
- package/dist/storage/upgrade/homeClassification.js +0 -353
- package/dist/storage/upgrade/homeMigrationTarget.js +0 -595
- package/dist/storage/upgrade/migrationReceipt.js +0 -67
- package/dist/storage/upgrade/offlineUpgradeInventory.js +0 -453
- package/dist/storage/upgrade/productionMigrationRegistry.js +0 -6
- package/dist/storage/upgrade/pseudoLayoutRepair.js +0 -241
- package/dist/storage/upgrade/recordVersionScan.js +0 -176
- package/dist/storage/upgrade/sqliteFileSet.js +0 -50
- package/dist/storage/upgrade/sqliteMigrationTarget.js +0 -375
- package/dist/storage/upgrade/sqliteRecordMigrationTarget.js +0 -305
- package/dist/storage/upgrade/sqliteStateMigration.js +0 -918
- package/dist/storage/upgrade/switchProgress.js +0 -80
- package/dist/storage/upgrade/upgradeReceipt.js +0 -161
- package/dist/storage/upgradeCoordination.js +0 -187
- package/dist/storage/upgradeFence.js +0 -366
- package/dist/telemetry/telemetryCompaction.js +0 -252
|
@@ -1,173 +1,79 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The current-baseline record-axis version map.
|
|
3
|
-
*
|
|
4
|
-
* The three storage axes are `layout`, `aggregate`, and `record`. The layout and
|
|
5
|
-
* aggregate axes are scalars sourced from `storageSchema.ts`; the record axis is
|
|
6
|
-
* a `recordKind -> { version, path }` map because every record family versions
|
|
7
|
-
* independently (see the generic migration core in `../migration`).
|
|
8
|
-
*
|
|
9
|
-
* This map is a SNAPSHOT of the record families that exist on the current
|
|
10
|
-
* baseline, enumerated from their real `schemaVersion`s in `taskStore.ts` and the
|
|
11
|
-
* per-record modules. It is intentionally NOT a frozen "first release" set: as
|
|
12
|
-
* the schema evolves (a new record family, a bumped family version), this map is
|
|
13
|
-
* updated in lockstep, exactly like the scalar constants. It exists so
|
|
14
|
-
* doctor/inspect and the migration planner can reason about record families.
|
|
15
|
-
* Post-baseline record changes require an explicit adjacent registration and
|
|
16
|
-
* transform in the production migration graph.
|
|
17
|
-
*/
|
|
1
|
+
/** Current record-family versions for the single SQLite storage contract. */
|
|
18
2
|
import { CURRENT_AGGREGATE_SCHEMA_VERSION, CURRENT_STORAGE_LAYOUT_VERSION } from "../storageVersions.js";
|
|
19
|
-
import {
|
|
3
|
+
import { CURRENT_TURN_SCHEMA_VERSION, CURRENT_AGENT_PROFILE_SCHEMA_VERSION, CURRENT_CAPABILITY_GRANT_SCHEMA_VERSION, CURRENT_CONFIG_SCHEMA_VERSION, CURRENT_CONFIGURED_AGENT_SCHEMA_VERSION, CURRENT_CHANGE_SET_SCHEMA_VERSION, CURRENT_CONTEXT_SNAPSHOT_SCHEMA_VERSION, CURRENT_DECISION_SCHEMA_VERSION, CURRENT_EVENT_SCHEMA_VERSION, CURRENT_GLOBAL_ROLE_SCHEMA_VERSION, CURRENT_GLOBAL_ROLE_SESSION_SET_SCHEMA_VERSION, CURRENT_INPUT_REQUEST_SCHEMA_VERSION, CURRENT_INTEGRATION_ATTEMPT_SCHEMA_VERSION, CURRENT_INTEGRATION_QUEUE_SCHEMA_VERSION, CURRENT_MANAGED_WORKSPACE_SCHEMA_VERSION, CURRENT_MESSAGE_SCHEMA_VERSION, CURRENT_MILESTONE_SCHEMA_VERSION, CURRENT_PUBLICATION_REFERENCE_SCHEMA_VERSION, CURRENT_PROJECT_SCHEMA_VERSION, CURRENT_RELEASE_WORKFLOW_SCHEMA_VERSION, CURRENT_REVIEW_ROUND_SCHEMA_VERSION, CURRENT_TASK_BRIEF_SCHEMA_VERSION, CURRENT_TASK_ROLE_SCHEMA_VERSION, CURRENT_TASK_ROLE_SESSION_SET_SCHEMA_VERSION, CURRENT_TASK_SCHEMA_VERSION, CURRENT_WORK_ITEM_SCHEMA_VERSION, CURRENT_WORK_MAILBOX_SCHEMA_VERSION } from "../taskStore.js";
|
|
20
4
|
import { CURRENT_LEADER_FAILURE_SCHEMA_VERSION } from "../../scheduler/leaderFailure.js";
|
|
21
5
|
import { CURRENT_TASK_WAKE_SCHEMA_VERSION } from "../../scheduler/taskWake.js";
|
|
22
6
|
import { CURRENT_DURABLE_JOB_SCHEMA_VERSION } from "../../job/durableJob.js";
|
|
23
|
-
function descriptor(
|
|
24
|
-
return Object.freeze({ version, path });
|
|
7
|
+
function descriptor(kind, version) {
|
|
8
|
+
return Object.freeze({ version, path: `sqlite:${kind}` });
|
|
25
9
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
* omitting a newly persisted family or changing a locator cannot make the
|
|
30
|
-
* scanner silently skip that family.
|
|
31
|
-
*/
|
|
32
|
-
const EXPECTED_DIRECT_RECORD_LOCATORS = Object.freeze({
|
|
33
|
-
config: "state.json#/config",
|
|
34
|
-
configuredAgent: "state.json#/configuredAgents",
|
|
35
|
-
project: "state.json#/projects",
|
|
36
|
-
agentProfile: "state.json#/agentProfiles",
|
|
37
|
-
globalRole: "state.json#/globalRoles",
|
|
38
|
-
globalRoleSessionSet: "state.json#/globalRoleSessionSets",
|
|
39
|
-
storedTask: "state.json#/tasks/*",
|
|
40
|
-
task: "state.json#/tasks/*/task",
|
|
41
|
-
taskBrief: "state.json#/tasks/*/brief",
|
|
42
|
-
taskRole: "state.json#/tasks/*/roles",
|
|
43
|
-
managedWorkspace: "state.json#/tasks/*/managedWorkspaces",
|
|
44
|
-
taskRoleSessionSet: "state.json#/tasks/*/roleSessionSets",
|
|
45
|
-
workItem: "state.json#/tasks/*/workItems",
|
|
46
|
-
contextSnapshot: "state.json#/tasks/*/contextSnapshots",
|
|
47
|
-
agentRun: "state.json#/tasks/*/agentRuns",
|
|
48
|
-
reviewRound: "state.json#/tasks/*/reviewRounds",
|
|
49
|
-
changeSet: "state.json#/tasks/*/changeSets",
|
|
50
|
-
integrationAttempt: "state.json#/tasks/*/integrationAttempts",
|
|
51
|
-
integrationQueue: "state.json#/tasks/*/integrationQueue",
|
|
52
|
-
durableJob: "state.json#/tasks/*/durableJobs",
|
|
53
|
-
activeRunPointer: "state.json#/tasks/*/activeRuns",
|
|
54
|
-
message: "state.json#/tasks/*/messages",
|
|
55
|
-
inputRequest: "state.json#/tasks/*/inputRequests",
|
|
56
|
-
decision: "state.json#/tasks/*/decisions",
|
|
57
|
-
milestone: "state.json#/tasks/*/milestones",
|
|
58
|
-
event: "state.json#/tasks/*/events",
|
|
59
|
-
taskWake: "state.json#/tasks/*/wakes",
|
|
60
|
-
capabilityGrant: "state.json#/tasks/*/capabilityGrants",
|
|
61
|
-
releaseWorkflow: "state.json#/tasks/*/releaseWorkflows",
|
|
62
|
-
publicationReference: "state.json#/tasks/*/publicationReferences",
|
|
63
|
-
leaderFailure: "state.json#/tasks/*/leaderFailure",
|
|
64
|
-
operatorNotification: "state.json#/tasks/*/operatorNotification",
|
|
65
|
-
workMailbox: "state.json#/mailboxes"
|
|
66
|
-
});
|
|
67
|
-
/**
|
|
68
|
-
* The one authoritative descriptor table for every direct StorageState and
|
|
69
|
-
* StoredTask record family. `path` is a logical, human-readable location of
|
|
70
|
-
* where the family's records live inside the authoritative store; the generic
|
|
71
|
-
* engine treats it as opaque. Update this table whenever a family is added or
|
|
72
|
-
* its `schemaVersion` changes — it tracks the live schema, it does not freeze
|
|
73
|
-
* it.
|
|
74
|
-
*
|
|
75
|
-
* Lazy-initialized to avoid a circular-dependency TDZ: `recordVersions.ts`
|
|
76
|
-
* imports the `CURRENT_*_SCHEMA_VERSION` constants from `taskStore.ts`, which
|
|
77
|
-
* imports `requireStorageSchema` from `storageSchema.ts`, which (via the
|
|
78
|
-
* provider pattern) depends on this module. Building the descriptors lazily
|
|
79
|
-
* means the constants are only read at runtime, after every module has loaded.
|
|
80
|
-
*/
|
|
81
|
-
let currentRecordDescriptors = null;
|
|
10
|
+
// Lazy construction avoids the taskStore -> storageSchema -> recordVersions
|
|
11
|
+
// initialization cycle while keeping one canonical family list.
|
|
12
|
+
let currentDescriptors = null;
|
|
82
13
|
function getCurrentRecordDescriptors() {
|
|
83
|
-
if (
|
|
84
|
-
|
|
85
|
-
config:
|
|
86
|
-
configuredAgent:
|
|
87
|
-
project:
|
|
88
|
-
agentProfile:
|
|
89
|
-
globalRole:
|
|
90
|
-
globalRoleSessionSet:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
releaseWorkflow: descriptor(CURRENT_RELEASE_WORKFLOW_SCHEMA_VERSION, "state.json#/tasks/*/releaseWorkflows"),
|
|
118
|
-
publicationReference: descriptor(CURRENT_PUBLICATION_REFERENCE_SCHEMA_VERSION, "state.json#/tasks/*/publicationReferences"),
|
|
119
|
-
leaderFailure: descriptor(CURRENT_LEADER_FAILURE_SCHEMA_VERSION, "state.json#/tasks/*/leaderFailure"),
|
|
120
|
-
// Historical family retained in the version graph so StoredTask v17
|
|
121
|
-
// Homes can migrate; current v18 aggregates never store this field.
|
|
122
|
-
operatorNotification: descriptor(1, "state.json#/tasks/*/operatorNotification"),
|
|
123
|
-
workMailbox: descriptor(CURRENT_WORK_MAILBOX_SCHEMA_VERSION, "state.json#/mailboxes")
|
|
124
|
-
});
|
|
14
|
+
if (currentDescriptors === null) {
|
|
15
|
+
const versions = {
|
|
16
|
+
config: CURRENT_CONFIG_SCHEMA_VERSION,
|
|
17
|
+
configuredAgent: CURRENT_CONFIGURED_AGENT_SCHEMA_VERSION,
|
|
18
|
+
project: CURRENT_PROJECT_SCHEMA_VERSION,
|
|
19
|
+
agentProfile: CURRENT_AGENT_PROFILE_SCHEMA_VERSION,
|
|
20
|
+
globalRole: CURRENT_GLOBAL_ROLE_SCHEMA_VERSION,
|
|
21
|
+
globalRoleSessionSet: CURRENT_GLOBAL_ROLE_SESSION_SET_SCHEMA_VERSION,
|
|
22
|
+
task: CURRENT_TASK_SCHEMA_VERSION,
|
|
23
|
+
taskBrief: CURRENT_TASK_BRIEF_SCHEMA_VERSION,
|
|
24
|
+
taskRole: CURRENT_TASK_ROLE_SCHEMA_VERSION,
|
|
25
|
+
managedWorkspace: CURRENT_MANAGED_WORKSPACE_SCHEMA_VERSION,
|
|
26
|
+
taskRoleSessionSet: CURRENT_TASK_ROLE_SESSION_SET_SCHEMA_VERSION,
|
|
27
|
+
workItem: CURRENT_WORK_ITEM_SCHEMA_VERSION,
|
|
28
|
+
contextSnapshot: CURRENT_CONTEXT_SNAPSHOT_SCHEMA_VERSION,
|
|
29
|
+
turn: CURRENT_TURN_SCHEMA_VERSION,
|
|
30
|
+
reviewRound: CURRENT_REVIEW_ROUND_SCHEMA_VERSION,
|
|
31
|
+
changeSet: CURRENT_CHANGE_SET_SCHEMA_VERSION,
|
|
32
|
+
integrationAttempt: CURRENT_INTEGRATION_ATTEMPT_SCHEMA_VERSION,
|
|
33
|
+
integrationQueue: CURRENT_INTEGRATION_QUEUE_SCHEMA_VERSION,
|
|
34
|
+
durableJob: CURRENT_DURABLE_JOB_SCHEMA_VERSION,
|
|
35
|
+
message: CURRENT_MESSAGE_SCHEMA_VERSION,
|
|
36
|
+
inputRequest: CURRENT_INPUT_REQUEST_SCHEMA_VERSION,
|
|
37
|
+
decision: CURRENT_DECISION_SCHEMA_VERSION,
|
|
38
|
+
milestone: CURRENT_MILESTONE_SCHEMA_VERSION,
|
|
39
|
+
event: CURRENT_EVENT_SCHEMA_VERSION,
|
|
40
|
+
taskWake: CURRENT_TASK_WAKE_SCHEMA_VERSION,
|
|
41
|
+
capabilityGrant: CURRENT_CAPABILITY_GRANT_SCHEMA_VERSION,
|
|
42
|
+
releaseWorkflow: CURRENT_RELEASE_WORKFLOW_SCHEMA_VERSION,
|
|
43
|
+
publicationReference: CURRENT_PUBLICATION_REFERENCE_SCHEMA_VERSION,
|
|
44
|
+
leaderFailure: CURRENT_LEADER_FAILURE_SCHEMA_VERSION,
|
|
45
|
+
workMailbox: CURRENT_WORK_MAILBOX_SCHEMA_VERSION
|
|
46
|
+
};
|
|
47
|
+
currentDescriptors = Object.freeze(Object.fromEntries(Object.entries(versions).map(([kind, version]) => [kind, descriptor(kind, version)])));
|
|
125
48
|
}
|
|
126
|
-
return
|
|
49
|
+
return currentDescriptors;
|
|
127
50
|
}
|
|
128
|
-
/**
|
|
129
|
-
|
|
130
|
-
/** The record-axis map for the current baseline (a defensive shallow copy). */
|
|
131
|
-
export function currentRecordVersions(candidate = CURRENT_RECORD_VERSIONS()) {
|
|
51
|
+
/** Defensive copy of the current record-family contract. */
|
|
52
|
+
export function currentRecordVersions(candidate = getCurrentRecordDescriptors()) {
|
|
132
53
|
assertRecordVersionDescriptors(candidate);
|
|
133
54
|
return { ...candidate };
|
|
134
55
|
}
|
|
135
|
-
/**
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
* use the default current descriptor table.
|
|
140
|
-
*/
|
|
141
|
-
export function assertRecordVersionDescriptors(candidate = CURRENT_RECORD_VERSIONS()) {
|
|
142
|
-
const expectedKinds = Object.keys(EXPECTED_DIRECT_RECORD_LOCATORS);
|
|
56
|
+
/** Reject missing, extra, stale, or non-SQLite record descriptors. */
|
|
57
|
+
export function assertRecordVersionDescriptors(candidate = getCurrentRecordDescriptors()) {
|
|
58
|
+
const expected = getCurrentRecordDescriptors();
|
|
59
|
+
const expectedKinds = Object.keys(expected);
|
|
143
60
|
const mappedKinds = Object.keys(candidate);
|
|
144
61
|
const missing = expectedKinds.filter((kind) => !Object.hasOwn(candidate, kind));
|
|
145
|
-
const unexpected = mappedKinds.filter((kind) => !Object.hasOwn(
|
|
62
|
+
const unexpected = mappedKinds.filter((kind) => !Object.hasOwn(expected, kind));
|
|
146
63
|
if (missing.length > 0 || unexpected.length > 0) {
|
|
147
64
|
throw new Error(`Record version map completeness drift: missing=${missing.join(",") || "none"}; `
|
|
148
65
|
+ `unexpected=${unexpected.join(",") || "none"}.`);
|
|
149
66
|
}
|
|
150
|
-
const descriptors = getCurrentRecordDescriptors();
|
|
151
67
|
for (const kind of expectedKinds) {
|
|
152
|
-
const
|
|
153
|
-
const
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|| mapped === null
|
|
158
|
-
|| mapped.version !== expected.version
|
|
159
|
-
|| mapped.path !== expectedPath) {
|
|
160
|
-
throw new Error(`Record version map drift for ${kind}: expected=${String(expected?.version)}@${expectedPath}; `
|
|
161
|
-
+ `actual=${String(mapped?.version)}@${String(mapped?.path)}.`);
|
|
68
|
+
const wanted = expected[kind];
|
|
69
|
+
const found = candidate[kind];
|
|
70
|
+
if (found?.version !== wanted.version || found.path !== wanted.path) {
|
|
71
|
+
throw new Error(`Record version map drift for ${kind}: expected=${wanted.version}@${wanted.path}; `
|
|
72
|
+
+ `actual=${String(found?.version)}@${String(found?.path)}.`);
|
|
162
73
|
}
|
|
163
74
|
}
|
|
164
75
|
}
|
|
165
|
-
|
|
166
|
-
* The full latest-supported {@link StorageVersionState} this release understands:
|
|
167
|
-
* the scalar layout/aggregate versions plus the current record map. The engine
|
|
168
|
-
* and classifier compare a source against this to decide the four-state verdict.
|
|
169
|
-
*/
|
|
170
|
-
export function latestStorageVersionState(recordDescriptors = CURRENT_RECORD_VERSIONS()) {
|
|
76
|
+
export function latestStorageVersionState(recordDescriptors = getCurrentRecordDescriptors()) {
|
|
171
77
|
return {
|
|
172
78
|
layout: CURRENT_STORAGE_LAYOUT_VERSION,
|
|
173
79
|
aggregate: CURRENT_AGGREGATE_SCHEMA_VERSION,
|