@beehexa/hexasync-template-model 2608.21.4 → 2610.3.1

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 (39) hide show
  1. package/dist/canonicalGraph.d.ts +153 -0
  2. package/dist/canonicalGraph.d.ts.map +1 -0
  3. package/dist/canonicalGraph.js +321 -0
  4. package/dist/canonicalGraph.js.map +1 -0
  5. package/dist/collapseRule.d.ts +125 -0
  6. package/dist/collapseRule.d.ts.map +1 -0
  7. package/dist/collapseRule.js +87 -0
  8. package/dist/collapseRule.js.map +1 -0
  9. package/dist/flowRender.d.ts +364 -18
  10. package/dist/flowRender.d.ts.map +1 -1
  11. package/dist/flowRender.js +956 -123
  12. package/dist/flowRender.js.map +1 -1
  13. package/dist/index.d.ts +8 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +10 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/nodeAddress.d.ts +81 -0
  18. package/dist/nodeAddress.d.ts.map +1 -1
  19. package/dist/nodeAddress.js +70 -0
  20. package/dist/nodeAddress.js.map +1 -1
  21. package/dist/occurrenceExpansion.d.ts +50 -0
  22. package/dist/occurrenceExpansion.d.ts.map +1 -0
  23. package/dist/occurrenceExpansion.js +230 -0
  24. package/dist/occurrenceExpansion.js.map +1 -0
  25. package/dist/stepGlyph.d.ts +242 -29
  26. package/dist/stepGlyph.d.ts.map +1 -1
  27. package/dist/stepGlyph.js +403 -104
  28. package/dist/stepGlyph.js.map +1 -1
  29. package/dist/workerStepVocabularyAudit.d.ts +19 -0
  30. package/dist/workerStepVocabularyAudit.d.ts.map +1 -0
  31. package/dist/workerStepVocabularyAudit.js +134 -0
  32. package/dist/workerStepVocabularyAudit.js.map +1 -0
  33. package/dist/workflowMigration.d.ts +60 -0
  34. package/dist/workflowMigration.d.ts.map +1 -0
  35. package/dist/workflowMigration.js +75 -0
  36. package/dist/workflowMigration.js.map +1 -0
  37. package/manifests/collapse-rule.json +43 -0
  38. package/manifests/worker-step-roster.json +164 -0
  39. package/package.json +6 -2
@@ -0,0 +1,134 @@
1
+ import { WORKER_STEP_FAMILIES } from './stepGlyph.js';
2
+ export const WORKER_ROSTER_MAX_AGE_MS = 86_400_000;
3
+ const TIMEZONE_QUALIFIED_ISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(Z|([+-])(\d{2}):(\d{2}))$/;
4
+ function parseIsoTimestamp(value) {
5
+ if (typeof value !== 'string')
6
+ return undefined;
7
+ const match = TIMEZONE_QUALIFIED_ISO.exec(value);
8
+ if (!match)
9
+ return undefined;
10
+ const year = Number(match[1]);
11
+ const month = Number(match[2]);
12
+ const day = Number(match[3]);
13
+ const hour = Number(match[4]);
14
+ const minute = Number(match[5]);
15
+ const second = Number(match[6]);
16
+ const millisecond = Number((match[7] ?? '').padEnd(3, '0').slice(0, 3));
17
+ const offsetHour = match[8] === 'Z' ? 0 : Number(match[10]);
18
+ const offsetMinute = match[8] === 'Z' ? 0 : Number(match[11]);
19
+ if (year < 100 ||
20
+ month < 1 || month > 12 ||
21
+ day < 1 || day > 31 ||
22
+ hour > 23 ||
23
+ minute > 59 ||
24
+ second > 59 ||
25
+ offsetHour > 14 ||
26
+ offsetMinute > 59 ||
27
+ (offsetHour === 14 && offsetMinute !== 0)) {
28
+ return undefined;
29
+ }
30
+ const local = new Date(0);
31
+ local.setUTCFullYear(year, month - 1, day);
32
+ local.setUTCHours(hour, minute, second, millisecond);
33
+ if (local.getUTCFullYear() !== year ||
34
+ local.getUTCMonth() !== month - 1 ||
35
+ local.getUTCDate() !== day ||
36
+ local.getUTCHours() !== hour ||
37
+ local.getUTCMinutes() !== minute ||
38
+ local.getUTCSeconds() !== second ||
39
+ local.getUTCMilliseconds() !== millisecond) {
40
+ return undefined;
41
+ }
42
+ const offsetDirection = match[9] === '-' ? -1 : 1;
43
+ const offsetMs = offsetDirection * (offsetHour * 60 + offsetMinute) * 60_000;
44
+ const instant = local.getTime() - offsetMs;
45
+ return Date.parse(value) === instant ? instant : undefined;
46
+ }
47
+ /**
48
+ * Check provenance, freshness, roster shape, and bidirectional map drift without consulting a sibling
49
+ * repository or the ambient clock. Staleness is advisory; malformed provenance and roster drift are failures.
50
+ */
51
+ export function auditWorkerRosterManifest(manifest, options) {
52
+ const errors = [];
53
+ const warnings = [];
54
+ const candidate = manifest && typeof manifest === 'object' ? manifest : undefined;
55
+ const headerValue = candidate && 'header' in candidate ? candidate.header : undefined;
56
+ const header = headerValue && typeof headerValue === 'object' ? headerValue : undefined;
57
+ const sourceRef = header && 'sourceRef' in header ? header.sourceRef : undefined;
58
+ if (typeof sourceRef !== 'string' || !/^[0-9a-f]{40}$/i.test(sourceRef)) {
59
+ errors.push('worker roster header.sourceRef must be a 40-character commit id');
60
+ }
61
+ const workerProxyContribution = header && 'workerProxyContribution' in header ? header.workerProxyContribution : undefined;
62
+ if (workerProxyContribution !== 'none') {
63
+ errors.push('worker roster header.workerProxyContribution must be none');
64
+ }
65
+ const generatedAt = header && 'generatedAt' in header ? header.generatedAt : undefined;
66
+ const generatedAtMs = parseIsoTimestamp(generatedAt);
67
+ if (generatedAtMs === undefined) {
68
+ errors.push('worker roster header.generatedAt must be a valid timezone-qualified ISO-8601 timestamp');
69
+ }
70
+ const nowMs = options.now.getTime();
71
+ if (!Number.isFinite(nowMs)) {
72
+ errors.push('worker roster audit now must be a valid date');
73
+ }
74
+ if (!Number.isFinite(options.maxAgeMs) || options.maxAgeMs < 0) {
75
+ errors.push('worker roster audit maxAgeMs must be a non-negative finite number');
76
+ }
77
+ if (generatedAtMs !== undefined && Number.isFinite(nowMs) && generatedAtMs > nowMs) {
78
+ errors.push('worker roster header.generatedAt must not be in the future');
79
+ }
80
+ const stepsValue = candidate && 'steps' in candidate ? candidate.steps : undefined;
81
+ const rows = Array.isArray(stepsValue) ? stepsValue : [];
82
+ if (!Array.isArray(stepsValue)) {
83
+ errors.push('worker roster steps must be an array');
84
+ }
85
+ const count = candidate && 'count' in candidate ? candidate.count : undefined;
86
+ if (!Number.isInteger(count) || count !== rows.length) {
87
+ errors.push(`worker roster count ${String(count)} does not match ${rows.length} rows`);
88
+ }
89
+ if (count !== 51) {
90
+ errors.push(`worker roster must declare exactly 51 rows, received ${String(count)}`);
91
+ }
92
+ const ids = [];
93
+ const seen = new Set();
94
+ for (const row of rows) {
95
+ const id = row && typeof row === 'object' && 'id' in row
96
+ ? row.id
97
+ : undefined;
98
+ if (typeof id !== 'string' || id.length === 0) {
99
+ errors.push('worker roster contains a row without a non-empty id');
100
+ continue;
101
+ }
102
+ if (seen.has(id)) {
103
+ errors.push(`worker roster contains duplicate id ${id}`);
104
+ continue;
105
+ }
106
+ seen.add(id);
107
+ ids.push(id);
108
+ }
109
+ const unmapped = ids.filter((id) => !Object.hasOwn(WORKER_STEP_FAMILIES, id));
110
+ if (unmapped.length > 0) {
111
+ errors.push(`worker roster has unmapped ids: ${unmapped.join(', ')}`);
112
+ }
113
+ const missingFromRoster = Object.keys(WORKER_STEP_FAMILIES).filter((id) => !seen.has(id));
114
+ if (missingFromRoster.length > 0) {
115
+ errors.push(`worker family map has ids absent from the roster: ${missingFromRoster.join(', ')}`);
116
+ }
117
+ const freshnessInputsValid = generatedAtMs !== undefined &&
118
+ Number.isFinite(nowMs) &&
119
+ Number.isFinite(options.maxAgeMs) &&
120
+ options.maxAgeMs >= 0;
121
+ const stale = freshnessInputsValid && nowMs - generatedAtMs > options.maxAgeMs;
122
+ if (stale) {
123
+ warnings.push(`worker roster is older than ${options.maxAgeMs}ms`);
124
+ }
125
+ return {
126
+ valid: errors.length === 0,
127
+ stale,
128
+ unmapped,
129
+ missingFromRoster,
130
+ errors,
131
+ warnings,
132
+ };
133
+ }
134
+ //# sourceMappingURL=workerStepVocabularyAudit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workerStepVocabularyAudit.js","sourceRoot":"","sources":["../src/workerStepVocabularyAudit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ export declare const WORKFLOW_MIGRATION_SCHEMA_VERSION: 1;
2
+ export declare const WORKFLOW_MIGRATION_BINDING_KEYS: readonly ['adapter', 'capability', 'theme', 'storage', 'cspAsset', 'featureFlag', 'parity', 'rollback'];
3
+ export declare const WORKFLOW_MIGRATION_GATE_KEYS: readonly ['semantic', 'interaction', 'accessibility', 'performance', 'sourceRoundTrip'];
4
+ export declare const WORKFLOW_MIGRATION_PHASES: readonly ['candidate', 'pilot', 'rollout', 'complete'];
5
+ export type WorkflowMigrationPhase = (typeof WORKFLOW_MIGRATION_PHASES)[number];
6
+ export type WorkflowMigrationGateKey = (typeof WORKFLOW_MIGRATION_GATE_KEYS)[number];
7
+ export type WorkflowMigrationGateStatus = 'pending' | 'passed' | 'failed';
8
+ export type WorkflowMigrationAdoptionMode = 'explorer' | 'editable';
9
+ export interface WorkflowMigrationGate {
10
+ readonly status: WorkflowMigrationGateStatus;
11
+ readonly evidence: readonly string[];
12
+ }
13
+ export interface WorkflowMigrationBindings {
14
+ readonly adapter: string;
15
+ readonly capability: string;
16
+ readonly theme: string;
17
+ readonly storage: string;
18
+ readonly cspAsset: string;
19
+ readonly featureFlag: string;
20
+ readonly parity: string;
21
+ readonly rollback: string;
22
+ }
23
+ export interface WorkflowMigrationRoute {
24
+ readonly id: string;
25
+ readonly host: 'dashboard-v2' | 'control-center' | 'workflows-automation' | 'vscode';
26
+ readonly route: string;
27
+ readonly legacyTechnology: string;
28
+ readonly adoptionMode: WorkflowMigrationAdoptionMode;
29
+ readonly owner: string;
30
+ readonly phase: WorkflowMigrationPhase;
31
+ readonly legacyAvailable: boolean;
32
+ readonly removeLegacy: boolean;
33
+ readonly bindings: WorkflowMigrationBindings;
34
+ readonly gates: Readonly<Record<WorkflowMigrationGateKey, WorkflowMigrationGate>>;
35
+ readonly evidence: readonly string[];
36
+ }
37
+ export interface WorkflowMigrationManifest {
38
+ readonly schemaVersion: typeof WORKFLOW_MIGRATION_SCHEMA_VERSION;
39
+ readonly routes: readonly WorkflowMigrationRoute[];
40
+ }
41
+ export type WorkflowMigrationDiagnosticCode = 'MIGRATION_SCHEMA_VERSION_INVALID' | 'MIGRATION_ROUTE_INVALID' | 'MIGRATION_ROUTE_DUPLICATE' | 'MIGRATION_ROUTE_FIELD_MISSING' | 'MIGRATION_PHASE_INVALID' | 'MIGRATION_GATE_INVALID' | 'MIGRATION_LEGACY_REMOVAL_BLOCKED' | 'MIGRATION_REQUIRED_BINDING_MISSING';
42
+ export interface WorkflowMigrationDiagnostic {
43
+ readonly code: WorkflowMigrationDiagnosticCode;
44
+ readonly severity: 'error';
45
+ readonly routeId: string;
46
+ readonly path: string;
47
+ readonly message: string;
48
+ }
49
+ export interface WorkflowMigrationRemovalReadiness {
50
+ readonly ready: boolean;
51
+ readonly failedGates: readonly WorkflowMigrationGateKey[];
52
+ readonly diagnostic?: WorkflowMigrationDiagnostic;
53
+ }
54
+ type UnknownRecord = Readonly<Record<string, unknown>>;
55
+ export declare function evaluateWorkflowMigrationRemovalReadiness(route: WorkflowMigrationRoute | UnknownRecord): WorkflowMigrationRemovalReadiness;
56
+ export declare function validateWorkflowMigrationManifest(manifest: UnknownRecord): readonly WorkflowMigrationDiagnostic[];
57
+ export declare function advanceWorkflowMigrationRoute(manifest: WorkflowMigrationManifest, routeId: string, phase: WorkflowMigrationPhase): WorkflowMigrationManifest;
58
+ export declare const KNOWN_WORKFLOW_MIGRATION_SURFACES: readonly WorkflowMigrationRoute[];
59
+ export {};
60
+ //# sourceMappingURL=workflowMigration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowMigration.d.ts","sourceRoot":"","sources":["../src/workflowMigration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ export const WORKFLOW_MIGRATION_SCHEMA_VERSION = 1;
2
+ export const WORKFLOW_MIGRATION_BINDING_KEYS = ['adapter', 'capability', 'theme', 'storage', 'cspAsset', 'featureFlag', 'parity', 'rollback'];
3
+ export const WORKFLOW_MIGRATION_GATE_KEYS = ['semantic', 'interaction', 'accessibility', 'performance', 'sourceRoundTrip'];
4
+ export const WORKFLOW_MIGRATION_PHASES = ['candidate', 'pilot', 'rollout', 'complete'];
5
+ const isRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
6
+ const nonBlank = (value) => typeof value === 'string' && value.trim().length > 0;
7
+ const routeIdOf = (route) => nonBlank(route.id) ? route.id : '<unknown-route>';
8
+ const diagnostic = (code, routeId, path, message) => ({ code, severity: 'error', routeId, path, message });
9
+ const validEvidence = (value) => Array.isArray(value) && value.length > 0 && Array.from(value).every(nonBlank);
10
+ export function evaluateWorkflowMigrationRemovalReadiness(route) {
11
+ const input = route;
12
+ const gates = isRecord(input.gates) ? input.gates : {};
13
+ const failedGates = WORKFLOW_MIGRATION_GATE_KEYS.filter(key => { const gate = gates[key]; return !isRecord(gate) || gate.status !== 'passed' || !validEvidence(gate.evidence); });
14
+ const ready = failedGates.length === 0;
15
+ return { ready, failedGates, ...(ready ? {} : { diagnostic: diagnostic('MIGRATION_LEGACY_REMOVAL_BLOCKED', routeIdOf(input), 'removeLegacy', `Legacy removal is blocked by: ${failedGates.join(', ')}.`) }) };
16
+ }
17
+ export function validateWorkflowMigrationManifest(manifest) {
18
+ const diagnostics = [];
19
+ if (manifest.schemaVersion !== WORKFLOW_MIGRATION_SCHEMA_VERSION)
20
+ diagnostics.push(diagnostic('MIGRATION_SCHEMA_VERSION_INVALID', '<manifest>', 'schemaVersion', 'Only workflow migration schema version 1 is supported.'));
21
+ const values = Array.isArray(manifest.routes) ? manifest.routes : [];
22
+ values.forEach((value, index) => { if (!isRecord(value))
23
+ diagnostics.push(diagnostic('MIGRATION_ROUTE_INVALID', `<route-${index}>`, `routes[${index}]`, 'Migration route must be an object.')); });
24
+ const routes = values.filter(isRecord);
25
+ const counts = new Map();
26
+ routes.forEach(route => { const id = routeIdOf(route); counts.set(id, (counts.get(id) ?? 0) + 1); });
27
+ [...counts].filter(([, count]) => count > 1).sort(([a], [b]) => a.localeCompare(b)).forEach(([id]) => diagnostics.push(diagnostic('MIGRATION_ROUTE_DUPLICATE', id, 'routes', `Migration route '${id}' is duplicated.`)));
28
+ routes.forEach(route => {
29
+ const id = routeIdOf(route);
30
+ ['id', 'host', 'route', 'legacyTechnology', 'adoptionMode', 'owner'].forEach(key => { if (!nonBlank(route[key]))
31
+ diagnostics.push(diagnostic('MIGRATION_ROUTE_FIELD_MISSING', id, key, `Migration route '${id}' must declare ${key}.`)); });
32
+ if (!WORKFLOW_MIGRATION_PHASES.includes(route.phase))
33
+ diagnostics.push(diagnostic('MIGRATION_PHASE_INVALID', id, 'phase', `Migration route '${id}' has an invalid phase.`));
34
+ const bindings = isRecord(route.bindings) ? route.bindings : {};
35
+ WORKFLOW_MIGRATION_BINDING_KEYS.forEach(key => { if (!nonBlank(bindings[key]))
36
+ diagnostics.push(diagnostic('MIGRATION_REQUIRED_BINDING_MISSING', id, `bindings.${key}`, `Migration route '${id}' must declare ${key}.`)); });
37
+ const gates = isRecord(route.gates) ? route.gates : {};
38
+ WORKFLOW_MIGRATION_GATE_KEYS.forEach(key => { const gate = gates[key]; if (!isRecord(gate) || !['pending', 'passed', 'failed'].includes(String(gate.status)) || (gate.status === 'passed' && !validEvidence(gate.evidence)))
39
+ diagnostics.push(diagnostic('MIGRATION_GATE_INVALID', id, `gates.${key}`, `Migration route '${id}' has an invalid ${key} gate.`)); });
40
+ if (route.removeLegacy === true) {
41
+ const readiness = evaluateWorkflowMigrationRemovalReadiness(route);
42
+ if (readiness.diagnostic)
43
+ diagnostics.push(readiness.diagnostic);
44
+ }
45
+ });
46
+ return diagnostics;
47
+ }
48
+ export function advanceWorkflowMigrationRoute(manifest, routeId, phase) {
49
+ const matches = manifest.routes.filter(route => route.id === routeId);
50
+ if (matches.length !== 1)
51
+ throw new Error(matches.length === 0 ? `Unknown workflow migration route '${routeId}'.` : `Workflow migration route '${routeId}' is not unique.`);
52
+ if (!WORKFLOW_MIGRATION_PHASES.includes(phase))
53
+ throw new TypeError(`Invalid workflow migration phase '${phase}'.`);
54
+ const current = matches[0];
55
+ const from = WORKFLOW_MIGRATION_PHASES.indexOf(current.phase);
56
+ const to = WORKFLOW_MIGRATION_PHASES.indexOf(phase);
57
+ if (to !== from + 1)
58
+ throw new Error(`Workflow migration route '${routeId}' cannot transition from '${current.phase}' to '${phase}'.`);
59
+ if (phase === 'complete' && !evaluateWorkflowMigrationRemovalReadiness(current).ready)
60
+ throw new Error(`Workflow migration route '${routeId}' cannot complete before every gate passes.`);
61
+ return { ...manifest, routes: manifest.routes.map(route => route.id === routeId ? { ...route, phase } : route) };
62
+ }
63
+ const pendingGates = () => Object.freeze(Object.fromEntries(WORKFLOW_MIGRATION_GATE_KEYS.map(key => [key, Object.freeze({ status: 'pending', evidence: Object.freeze([]) })])));
64
+ const makeBindings = (adoptionMode, host, flag, rollback) => Object.freeze({ adapter: '@beehexa/hexasync-workflow-adapter', capability: adoptionMode, theme: `${host}-theme`, storage: 'host-configured', cspAsset: 'deny-by-default', featureFlag: flag, parity: `${host}-parity`, rollback });
65
+ const surface = (route, evidence) => Object.freeze({ ...route, phase: 'candidate', legacyAvailable: true, removeLegacy: false, gates: pendingGates(), evidence: Object.freeze([evidence]) });
66
+ const knownSurface = (input) => surface({ ...input, bindings: makeBindings(input.adoptionMode, input.id.replace(':', '-'), input.flag, input.rollback) }, input.evidence);
67
+ export const KNOWN_WORKFLOW_MIGRATION_SURFACES = Object.freeze([
68
+ knownSurface({ id: 'dashboard-v2:profile-task-flow', host: 'dashboard-v2', route: '/monitoring/profiles/:profileId/tasks/:taskId/flow', legacyTechnology: 'vue-flow', adoptionMode: 'explorer', owner: 'dashboard', flag: 'VITE_DASHBOARD_SHARED_TASK_FLOW', rollback: 'legacy-task-flow', evidence: 'dashboard-v2/src/pages/monitoring/profiles/tasks/TaskFlow.vue' }),
69
+ knownSurface({ id: 'dashboard-v2:connector-workflow-preview', host: 'dashboard-v2', route: '/__dev/connector-workflow-preview', legacyTechnology: 'mermaid', adoptionMode: 'editable', owner: 'dashboard', flag: 'VITE_DASHBOARD_SHARED_CONNECTOR_WORKFLOW', rollback: 'mermaid-preview', evidence: 'dashboard-v2/src/pages/__dev/ui/ConnectorWorkflowPreview.vue' }),
70
+ knownSurface({ id: 'dashboard-v2:workflow-editor-callbacks', host: 'dashboard-v2', route: '/callbacks/*', legacyTechnology: 'bespoke-vue', adoptionMode: 'editable', owner: 'dashboard', flag: 'VITE_DASHBOARD_SHARED_WORKFLOW_EDITOR', rollback: 'legacy-workflow-editor', evidence: 'dashboard-v2/src/widgets/workflow-editor' }),
71
+ knownSurface({ id: 'control-center:workflow-designer', host: 'control-center', route: '/workflow/designer/:name', legacyTechnology: 'mermaid', adoptionMode: 'editable', owner: 'control-center', flag: 'CONTROL_CENTER_SHARED_WORKFLOW_DESIGNER', rollback: 'mermaid-canvas', evidence: 'control-center workflow surface inventory' }),
72
+ knownSurface({ id: 'workflows-automation:workflow-designer', host: 'workflows-automation', route: 'workflow-designer', legacyTechnology: 'bespoke-steps', adoptionMode: 'editable', owner: 'workflows-automation', flag: 'WORKFLOWS_AUTOMATION_SHARED_DESIGNER', rollback: 'legacy-step-editor', evidence: 'workflows-automation workflow surface inventory' }),
73
+ knownSurface({ id: 'vscode:workflow-preview-designer', host: 'vscode', route: 'hexasync.workflowDesigner.open', legacyTechnology: 'mermaid-webview', adoptionMode: 'editable', owner: 'vscode-extension', flag: 'hexasync.workflowDesigner.enabled', rollback: 'legacy-preview-command', evidence: 'hexasync-templates-vscode-ext workflow surface inventory' }),
74
+ ]);
75
+ //# sourceMappingURL=workflowMigration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflowMigration.js","sourceRoot":"","sources":["../src/workflowMigration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ {
2
+ "header": {
3
+ "sourceRef": "cd8f797af754f13d2f34fa7d38d1d8acac1fa3c0",
4
+ "generatedAt": "2026-09-28T06:36:52.0565752\u002B00:00",
5
+ "ruleAuthority": "hexasync.steps/Execution/ExecutionEvidenceAccumulator.cs",
6
+ "comment": "ExecutionEvidenceAccumulator in core.api is the sole authority for the loop-collapse retention rule. A renderer mirrors this manifest and may not decide the collapse alone (AD-32(b)); a vendored copy that disagrees with these values is stale and must fail its own repository\u0027s test."
7
+ },
8
+ "schemaVersion": 2,
9
+ "retention": {
10
+ "retainedFirstSuccesses": 1,
11
+ "retainedLatestSuccesses": 2,
12
+ "firstCompactedSuccessOrdinal": 4,
13
+ "failuresRetained": true
14
+ },
15
+ "identity": {
16
+ "count": 6,
17
+ "comparison": "ordinal",
18
+ "nullsEqual": true,
19
+ "fields": [
20
+ "stepKey",
21
+ "providerId",
22
+ "connectionId",
23
+ "flow",
24
+ "nextTarget",
25
+ "outcomeClass"
26
+ ]
27
+ },
28
+ "adjacency": {
29
+ "globalIndexGap": 1,
30
+ "stepLocalOccurrenceGap": 1
31
+ },
32
+ "timeline": {
33
+ "count": 2,
34
+ "kinds": [
35
+ "occurrence",
36
+ "range"
37
+ ]
38
+ },
39
+ "rangeId": {
40
+ "format": "range-{firstGlobalIndex}",
41
+ "stableOnExtension": true
42
+ }
43
+ }
@@ -0,0 +1,164 @@
1
+ {
2
+ "header": {
3
+ "sourceRef": "73a23c8012d28d8d01cc25147fb162f1a6e1946a",
4
+ "generatedAt": "2026-09-27T14:11:04.2866091\u002B00:00",
5
+ "workerProxyContribution": "none",
6
+ "comment": "hexasync.worker.proxy runtime step contribution is none; GET /api/steps in core.api is the sole roster authority."
7
+ },
8
+ "count": 51,
9
+ "steps": [
10
+ {
11
+ "id": "API"
12
+ },
13
+ {
14
+ "id": "BASE64_TO_MIME_TYPE"
15
+ },
16
+ {
17
+ "id": "Begin"
18
+ },
19
+ {
20
+ "id": "CACHE"
21
+ },
22
+ {
23
+ "id": "CHECK_FORMAT"
24
+ },
25
+ {
26
+ "id": "Composite"
27
+ },
28
+ {
29
+ "id": "DIRECT_INDEX"
30
+ },
31
+ {
32
+ "id": "DOWNLOAD_CSV"
33
+ },
34
+ {
35
+ "id": "ENQUEUER"
36
+ },
37
+ {
38
+ "id": "EXCEL_READER"
39
+ },
40
+ {
41
+ "id": "EXCEPTION"
42
+ },
43
+ {
44
+ "id": "End"
45
+ },
46
+ {
47
+ "id": "Error"
48
+ },
49
+ {
50
+ "id": "FORWARD"
51
+ },
52
+ {
53
+ "id": "GET_KEY_VALUE"
54
+ },
55
+ {
56
+ "id": "GraphQL"
57
+ },
58
+ {
59
+ "id": "IF"
60
+ },
61
+ {
62
+ "id": "IGNORE_ITEM"
63
+ },
64
+ {
65
+ "id": "INVALIDATE_CACHE"
66
+ },
67
+ {
68
+ "id": "JSONata"
69
+ },
70
+ {
71
+ "id": "LOOKUP_STEP"
72
+ },
73
+ {
74
+ "id": "Liquid"
75
+ },
76
+ {
77
+ "id": "METRIC_QUERY"
78
+ },
79
+ {
80
+ "id": "OData"
81
+ },
82
+ {
83
+ "id": "PUBLISH_EVENT"
84
+ },
85
+ {
86
+ "id": "PULLER"
87
+ },
88
+ {
89
+ "id": "PUSHER"
90
+ },
91
+ {
92
+ "id": "QUERY_MANY"
93
+ },
94
+ {
95
+ "id": "QUERY_METRICS"
96
+ },
97
+ {
98
+ "id": "QUERY_SINGLE"
99
+ },
100
+ {
101
+ "id": "QueryDSL"
102
+ },
103
+ {
104
+ "id": "REMOVE_DATA"
105
+ },
106
+ {
107
+ "id": "RESET_ITEM"
108
+ },
109
+ {
110
+ "id": "RESOLVE_RAW_DATA"
111
+ },
112
+ {
113
+ "id": "Restful"
114
+ },
115
+ {
116
+ "id": "SAVE_TASK_DATA"
117
+ },
118
+ {
119
+ "id": "SEED_DATA"
120
+ },
121
+ {
122
+ "id": "SET_KEY_VALUE"
123
+ },
124
+ {
125
+ "id": "SLEEP"
126
+ },
127
+ {
128
+ "id": "SQL"
129
+ },
130
+ {
131
+ "id": "SQL_PROXY"
132
+ },
133
+ {
134
+ "id": "SWITCH"
135
+ },
136
+ {
137
+ "id": "Scriban"
138
+ },
139
+ {
140
+ "id": "TRACK_FOR_REMOVAL"
141
+ },
142
+ {
143
+ "id": "UPDATE_ITEM_STATUS"
144
+ },
145
+ {
146
+ "id": "UPDATE_ITEM_SYNC_PROCESS"
147
+ },
148
+ {
149
+ "id": "UPDATE_TASK_DATA_STATUS"
150
+ },
151
+ {
152
+ "id": "VALUES"
153
+ },
154
+ {
155
+ "id": "VERIFY_CACHED"
156
+ },
157
+ {
158
+ "id": "WEBHOOK_FORWARD"
159
+ },
160
+ {
161
+ "id": "cURL"
162
+ }
163
+ ]
164
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beehexa/hexasync-template-model",
3
- "version": "2608.21.4",
3
+ "version": "2610.3.1",
4
4
  "description": "Domain types for HexaSync templates. No behaviour.",
5
5
  "license": "SEE LICENSE IN ../../LICENSE",
6
6
  "type": "module",
@@ -13,12 +13,16 @@
13
13
  "main": "./dist/index.js",
14
14
  "types": "./dist/index.d.ts",
15
15
  "files": [
16
- "dist"
16
+ "dist",
17
+ "manifests"
17
18
  ],
18
19
  "scripts": {
19
20
  "typecheck": "tsc --noEmit",
20
21
  "build": "tsc -p tsconfig.build.json"
21
22
  },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
22
26
  "hexasync": {
23
27
  "layer": "core",
24
28
  "composeContract": 3