@vectle/cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +15 -8
  3. package/dist/activity.d.ts +10 -0
  4. package/dist/activity.js +10 -0
  5. package/dist/activity.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +4 -0
  7. package/dist/adapters/claude.js +279 -0
  8. package/dist/adapters/claude.js.map +1 -0
  9. package/dist/adapters/codex.d.ts +16 -0
  10. package/dist/adapters/codex.js +410 -0
  11. package/dist/adapters/codex.js.map +1 -0
  12. package/dist/adapters/common.d.ts +80 -0
  13. package/dist/adapters/common.js +249 -0
  14. package/dist/adapters/common.js.map +1 -0
  15. package/dist/adapters/cursor.d.ts +4 -0
  16. package/dist/adapters/cursor.js +240 -0
  17. package/dist/adapters/cursor.js.map +1 -0
  18. package/dist/adapters/vscode.d.ts +4 -0
  19. package/dist/adapters/vscode.js +240 -0
  20. package/dist/adapters/vscode.js.map +1 -0
  21. package/dist/agent-policy.d.ts +50 -0
  22. package/dist/agent-policy.js +83 -0
  23. package/dist/agent-policy.js.map +1 -0
  24. package/dist/client.d.ts +69 -10
  25. package/dist/client.js +247 -24
  26. package/dist/client.js.map +1 -1
  27. package/dist/constants.d.ts +12 -2
  28. package/dist/constants.js +7 -1
  29. package/dist/constants.js.map +1 -1
  30. package/dist/contracts.d.ts +53 -0
  31. package/dist/contracts.js +68 -0
  32. package/dist/contracts.js.map +1 -0
  33. package/dist/delivery.d.ts +80 -0
  34. package/dist/delivery.js +304 -0
  35. package/dist/delivery.js.map +1 -0
  36. package/dist/findings.d.ts +12 -0
  37. package/dist/findings.js +41 -0
  38. package/dist/findings.js.map +1 -0
  39. package/dist/help.d.ts +1 -0
  40. package/dist/help.js +53 -0
  41. package/dist/help.js.map +1 -0
  42. package/dist/index.js +370 -72
  43. package/dist/index.js.map +1 -1
  44. package/dist/integrations.d.ts +126 -0
  45. package/dist/integrations.js +173 -0
  46. package/dist/integrations.js.map +1 -0
  47. package/dist/legacy-compat.d.ts +45 -0
  48. package/dist/legacy-compat.js +149 -0
  49. package/dist/legacy-compat.js.map +1 -0
  50. package/dist/lifecycle.d.ts +50 -0
  51. package/dist/lifecycle.js +146 -0
  52. package/dist/lifecycle.js.map +1 -0
  53. package/dist/locator.d.ts +58 -0
  54. package/dist/locator.js +233 -0
  55. package/dist/locator.js.map +1 -0
  56. package/dist/mcp.d.ts +12 -2
  57. package/dist/mcp.js +194 -48
  58. package/dist/mcp.js.map +1 -1
  59. package/dist/modes.d.ts +37 -0
  60. package/dist/modes.js +32 -0
  61. package/dist/modes.js.map +1 -0
  62. package/dist/outbox.d.ts +9 -0
  63. package/dist/outbox.js +188 -0
  64. package/dist/outbox.js.map +1 -0
  65. package/dist/parser.d.ts +10 -0
  66. package/dist/parser.js +99 -0
  67. package/dist/parser.js.map +1 -0
  68. package/dist/pulse.d.ts +122 -0
  69. package/dist/pulse.js +412 -0
  70. package/dist/pulse.js.map +1 -0
  71. package/dist/release-manifest.d.ts +123 -0
  72. package/dist/release-manifest.js +226 -0
  73. package/dist/release-manifest.js.map +1 -0
  74. package/dist/release.d.ts +1 -1
  75. package/dist/response.d.ts +17 -0
  76. package/dist/response.js +15 -0
  77. package/dist/response.js.map +1 -1
  78. package/dist/rollout.d.ts +8 -0
  79. package/dist/rollout.js +27 -0
  80. package/dist/rollout.js.map +1 -0
  81. package/dist/runtime.d.ts +60 -0
  82. package/dist/runtime.js +276 -0
  83. package/dist/runtime.js.map +1 -0
  84. package/dist/secure-store.d.ts +36 -0
  85. package/dist/secure-store.js +282 -0
  86. package/dist/secure-store.js.map +1 -0
  87. package/dist/setup.d.ts +159 -0
  88. package/dist/setup.js +629 -0
  89. package/dist/setup.js.map +1 -0
  90. package/dist/state.d.ts +98 -0
  91. package/dist/state.js +226 -0
  92. package/dist/state.js.map +1 -0
  93. package/dist/status.d.ts +282 -0
  94. package/dist/status.js +213 -0
  95. package/dist/status.js.map +1 -0
  96. package/dist/store.d.ts +44 -2
  97. package/dist/store.js +222 -44
  98. package/dist/store.js.map +1 -1
  99. package/dist/update.d.ts +33 -1
  100. package/dist/update.js +88 -16
  101. package/dist/update.js.map +1 -1
  102. package/dist/write-journal.d.ts +71 -0
  103. package/dist/write-journal.js +175 -0
  104. package/dist/write-journal.js.map +1 -0
  105. package/package.json +7 -2
package/dist/pulse.js ADDED
@@ -0,0 +1,412 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { defaultDeliveryBinding, leasePending, localStateRoot, pendingCounts, releaseBatch } from './delivery.js';
4
+ import { MAX_STARTUP_RESULT_BYTES, MAX_TASK_SIGNATURE_BYTES, PULSE_DEADLINES_MS } from './constants.js';
5
+ import { configDirectory } from './store.js';
6
+ import { atomicWriteJson, digestLocal, ensureStateRoot, loadAgentState, withStateLock } from './state.js';
7
+ import { recoverWriteJournals } from './write-journal.js';
8
+ const intents = new Set(['debug', 'build', 'implement', 'research', 'review', 'test', 'deploy', 'optimize', 'design', 'other']);
9
+ const roles = new Set(['language', 'runtime', 'framework', 'library', 'package', 'database', 'service', 'tool', 'platform', 'operating_system', 'other']);
10
+ const environmentKeys = new Set(['operating_system', 'operating_system_version', 'architecture', 'runtime', 'runtime_version', 'framework', 'framework_version', 'package_manager', 'build_tool', 'deployment_target', 'database', 'database_version']);
11
+ const stages = new Set(['discovery', 'setup', 'install', 'build', 'test', 'runtime', 'deploy', 'production', 'migration', 'design']);
12
+ const signals = new Set(['error_code', 'exception', 'failing_assertion', 'symptom', 'regression', 'performance', 'unexpected_behavior', 'compatibility']);
13
+ const looking = new Set(['known_cause', 'verified_fix', 'workaround', 'optimization', 'compatibility', 'implementation_pattern', 'architecture_tradeoff', 'failed_approaches', 'confirmation', 'current_status', 'public_sources']);
14
+ const secretPattern = /(-----BEGIN [A-Z ]*PRIVATE KEY-----|\b(?:api[_-]?key|password|passwd|secret|token)\s*[:=]|\b(?:sk|gh[pousr]|glpat|xox[baprs])_[A-Za-z0-9_-]{12,}|\bAKIA[A-Z0-9]{16}\b)/iu;
15
+ const privatePath = /(?:\/Users\/[^/\s]+|\/home\/[^/\s]+|[A-Za-z]:\\Users\\[^\\\s]+|\\\\[^\s]+\\[^\s]+)/iu;
16
+ const email = /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/iu;
17
+ function object(value) { return Boolean(value) && typeof value === 'object' && !Array.isArray(value); }
18
+ function exact(value, keys) { return Object.keys(value).length === keys.length && keys.every(key => Object.prototype.hasOwnProperty.call(value, key)); }
19
+ function chars(value) { return Array.from(value).length; }
20
+ function safeText(value, min, max) { return typeof value === 'string' && chars(value) >= min && chars(value) <= max && !/[\r\n]/u.test(value); }
21
+ export function canonicalTaskSignature(value) {
22
+ const canonical = (input) => {
23
+ if (typeof input === 'string')
24
+ return input.normalize('NFC');
25
+ if (Array.isArray(input))
26
+ return input.map(canonical);
27
+ if (object(input))
28
+ return Object.fromEntries(Object.entries(input).sort(([a], [b]) => a.localeCompare(b)).map(([key, child]) => [key.normalize('NFC'), canonical(child)]));
29
+ return input;
30
+ };
31
+ return JSON.stringify(canonical(value));
32
+ }
33
+ export function validateTaskSignature(value) {
34
+ const errors = [];
35
+ if (!object(value))
36
+ return { errors: ['task signature must be an object'] };
37
+ const rootKeys = ['schema_version', 'intent', 'goal', 'components', 'environment', 'signals', 'stage', 'constraints', 'looking_for'];
38
+ if (!exact(value, rootKeys))
39
+ errors.push('task signature contains unknown or missing fields');
40
+ if (value.schema_version !== 'task-signature-v1')
41
+ errors.push('schema_version must be task-signature-v1');
42
+ if (typeof value.intent !== 'string' || !intents.has(value.intent))
43
+ errors.push('intent is invalid');
44
+ if (!safeText(value.goal, 5, 240))
45
+ errors.push('goal must be a bounded single-line string');
46
+ if (!Array.isArray(value.components) || value.components.length < 1 || value.components.length > 8)
47
+ errors.push('components must contain 1–8 items');
48
+ else
49
+ value.components.forEach((component, index) => {
50
+ if (!object(component)) {
51
+ errors.push(`components[${index}] is invalid`);
52
+ return;
53
+ }
54
+ const allowed = ['name', 'version', 'role', 'ecosystem', 'version_scheme'];
55
+ if (Object.keys(component).some(key => !allowed.includes(key)) || !Object.prototype.hasOwnProperty.call(component, 'name') || !Object.prototype.hasOwnProperty.call(component, 'role'))
56
+ errors.push(`components[${index}] is invalid`);
57
+ if (!safeText(component.name, 1, 80) || typeof component.role !== 'string' || !roles.has(component.role))
58
+ errors.push(`components[${index}] is invalid`);
59
+ for (const key of ['version', 'ecosystem', 'version_scheme'])
60
+ if (component[key] !== undefined && !safeText(component[key], 1, 80))
61
+ errors.push(`components[${index}] is invalid`);
62
+ });
63
+ if (!object(value.environment) || Object.keys(value.environment).length > 12 || Object.entries(value.environment ?? {}).some(([key, child]) => !environmentKeys.has(key) || !safeText(child, 1, 80)))
64
+ errors.push('environment is invalid');
65
+ if (!Array.isArray(value.signals) || value.signals.length > 8 || value.signals.some(item => !object(item) || !exact(item, ['kind', 'text']) || typeof item.kind !== 'string' || !signals.has(item.kind) || !safeText(item.text, 2, 240)))
66
+ errors.push('signals are invalid');
67
+ if (typeof value.stage !== 'string' || !stages.has(value.stage))
68
+ errors.push('stage is invalid');
69
+ if (!Array.isArray(value.constraints) || value.constraints.length > 8 || value.constraints.some(item => !safeText(item, 1, 160)))
70
+ errors.push('constraints are invalid');
71
+ if (!Array.isArray(value.looking_for) || value.looking_for.length < 1 || value.looking_for.length > 6 || value.looking_for.some(item => typeof item !== 'string' || !looking.has(item)))
72
+ errors.push('looking_for is invalid');
73
+ const serialized = JSON.stringify(value);
74
+ if (secretPattern.test(serialized) || privatePath.test(serialized) || email.test(serialized))
75
+ errors.push('task signature contains non-public-safe data');
76
+ if (Buffer.byteLength(canonicalTaskSignature(value), 'utf8') > MAX_TASK_SIGNATURE_BYTES)
77
+ errors.push('task signature exceeds 4 KiB');
78
+ return errors.length ? { errors: [...new Set(errors)] } : { data: value };
79
+ }
80
+ export function buildTaskSignature(value) {
81
+ const result = validateTaskSignature({ schema_version: 'task-signature-v1', ...value });
82
+ if (!result.data)
83
+ throw new Error(`Unsafe task signature: ${result.errors?.join(' ') ?? 'invalid request.'}`);
84
+ return result.data;
85
+ }
86
+ async function bounded(promise, timeoutMs, fallback) {
87
+ let timer;
88
+ try {
89
+ return await Promise.race([promise, new Promise(resolvePromise => { timer = setTimeout(() => resolvePromise(fallback), Math.max(1, timeoutMs)); })]);
90
+ }
91
+ finally {
92
+ if (timer)
93
+ clearTimeout(timer);
94
+ }
95
+ }
96
+ function classifyError(error) {
97
+ const status = error && typeof error === 'object' && 'status' in error ? error.status : undefined;
98
+ const body = error && typeof error === 'object' && 'body' in error ? error.body : null;
99
+ const code = object(body) && typeof body.error === 'string' ? body.error : '';
100
+ if (status === 429 || code === 'rate_limited')
101
+ return 'rate_limited';
102
+ if (status === 403 || code === 'channel_disabled' || code === 'operation_disabled')
103
+ return 'disabled';
104
+ return 'unavailable';
105
+ }
106
+ function safeUpdate(value) { return object(value) && Array.isArray(value.updates) ? value : null; }
107
+ function safeString(value) { return typeof value === 'string' ? value : null; }
108
+ function isoTimestamp(value) { return typeof value === 'string' && /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{3})?Z$/u.test(value) && Number.isFinite(Date.parse(value)) ? value : null; }
109
+ const lookupMatchKeys = ['finding_id', 'kind', 'title', 'takeaway', 'why_it_matches', 'environment_fit', 'evidence_strength', 'verification_state', 'resolution_state', 'freshness', 'limits', 'conflicts', 'url', 'content_trust', 'instruction_authority'];
110
+ const lookupKinds = new Set(['bug', 'pattern', 'optimization', 'compatibility', 'architecture', 'workflow', 'security', 'other']);
111
+ const lookupFits = new Set(['exact', 'compatible', 'partial', 'unknown', 'conflict']);
112
+ const lookupEvidence = new Set(['observed', 'single_verified', 'independently_reproduced', 'source_supported', 'mixed', 'contradicted']);
113
+ const lookupVerification = new Set(['observed', 'reproduced', 'locally_verified', 'test_verified', 'measured', 'source_verified']);
114
+ const lookupResolution = new Set(['unresolved', 'workaround_verified', 'resolved', 'mixed', 'contradicted', 'superseded']);
115
+ const lookupActions = new Set(['verify_locally', 'check_primary_sources', 'compare_conflicts', 'none']);
116
+ function safeLookupLine(value, min, max) { return typeof value === 'string' && Array.from(value).length >= min && Array.from(value).length <= max && !/[\r\n]/u.test(value); }
117
+ function safePublicUrl(value) {
118
+ if (typeof value !== 'string' || value.length > 2_048)
119
+ return false;
120
+ try {
121
+ const url = new URL(value);
122
+ return url.protocol === 'https:' && !url.username && !url.password && !url.hash;
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
128
+ function safeLookupMatch(value) {
129
+ if (!object(value) || !exact(value, lookupMatchKeys))
130
+ return null;
131
+ if (typeof value.finding_id !== 'string' || !/^vf_[A-Za-z0-9_-]{22}$/u.test(value.finding_id) || typeof value.kind !== 'string' || !lookupKinds.has(value.kind) || !safeLookupLine(value.title, 12, 180) || !safeLookupLine(value.takeaway, 20, 600) || !Array.isArray(value.why_it_matches) || value.why_it_matches.length < 1 || value.why_it_matches.length > 5 || value.why_it_matches.some(item => !safeLookupLine(item, 1, 160)) || typeof value.environment_fit !== 'string' || !lookupFits.has(value.environment_fit) || typeof value.evidence_strength !== 'string' || !lookupEvidence.has(value.evidence_strength) || typeof value.verification_state !== 'string' || !lookupVerification.has(value.verification_state) || value.resolution_state !== null && (typeof value.resolution_state !== 'string' || !lookupResolution.has(value.resolution_state)) || !isoTimestamp(value.freshness) || !Array.isArray(value.limits) || value.limits.length > 5 || value.limits.some(item => !safeLookupLine(item, 1, 160)) || !Array.isArray(value.conflicts) || value.conflicts.length > 5 || value.conflicts.some(item => !safeLookupLine(item, 1, 160)) || !safePublicUrl(value.url) || value.content_trust !== 'untrusted_community_content' || value.instruction_authority !== 'none')
132
+ return null;
133
+ return value;
134
+ }
135
+ function safeLookup(value) {
136
+ if (!object(value) || !exact(value, ['schema_version', 'status', 'summary', 'matches', 'count', 'next_action', 'data_use']) || value.schema_version !== 'task-lookup-v1' || (value.status !== 'useful' && value.status !== 'quiet') || !safeLookupLine(value.summary, 0, 240) || !Array.isArray(value.matches) || value.matches.length > 5 || value.matches.some(item => !safeLookupMatch(item)) || !Number.isSafeInteger(value.count) || value.count !== value.matches.length || value.status === 'quiet' && value.count !== 0 || value.status === 'useful' && value.count === 0 || typeof value.next_action !== 'string' || !lookupActions.has(value.next_action) || !object(value.data_use) || !exact(value.data_use, ['raw_prompt_stored', 'raw_request_stored', 'identity_linked', 'query_analytics_recorded']) || value.data_use.raw_prompt_stored !== false || value.data_use.raw_request_stored !== false || value.data_use.identity_linked !== false || typeof value.data_use.query_analytics_recorded !== 'boolean')
137
+ return null;
138
+ return value;
139
+ }
140
+ function taskCacheKey(config, value) {
141
+ let origin = config.endpoint;
142
+ try {
143
+ origin = new URL(config.endpoint).origin;
144
+ }
145
+ catch { /* validation happens at setup; retain a deterministic local key */ }
146
+ return digestLocal(`${origin}\0${canonicalTaskSignature(value)}`);
147
+ }
148
+ function validAnonymousCapability(value, nowValue) {
149
+ if (!object(value) || !exact(value, ['schema_version', 'audience', 'controls_revision', 'observed_at', 'expires_at', 'operations']) || value.schema_version !== 'cli-capabilities-v1' || value.audience !== 'anonymous' || typeof value.controls_revision !== 'string' || value.controls_revision.length < 4 || value.controls_revision.length > 128 || !object(value.operations) || !exact(value.operations, ['startup_lookup']) || !object(value.operations.startup_lookup) || !exact(value.operations.startup_lookup, ['status']) || (value.operations.startup_lookup.status !== 'enabled' && value.operations.startup_lookup.status !== 'disabled'))
150
+ return null;
151
+ const observedAt = isoTimestamp(value.observed_at);
152
+ const expiresAt = isoTimestamp(value.expires_at);
153
+ if (!observedAt || !expiresAt || Date.parse(expiresAt) <= Date.parse(observedAt) || Date.parse(expiresAt) > Date.parse(observedAt) + 5 * 60_000 || nowValue + 5 * 60_000 < Date.parse(observedAt) || nowValue - 5 * 60_000 > Date.parse(expiresAt))
154
+ return null;
155
+ return { enabled: value.operations.startup_lookup.status === 'enabled', observedAt, expiresAt };
156
+ }
157
+ function publicCapabilityCacheFile(config) {
158
+ const origin = new URL(config.endpoint).origin;
159
+ return join(resolve(configDirectory()), 'cache', `anonymous-capability-${digestLocal(origin).slice(7)}.json`);
160
+ }
161
+ function readPublicCapability(config, nowValue) {
162
+ try {
163
+ const value = validAnonymousCapability(JSON.parse(readFileSync(publicCapabilityCacheFile(config), 'utf8')), nowValue);
164
+ if (!value || Date.parse(value.expiresAt) <= nowValue)
165
+ return null;
166
+ return { status: value.enabled ? 'enabled' : 'disabled', observedAt: value.observedAt, fresh: true, known: true };
167
+ }
168
+ catch {
169
+ return null;
170
+ }
171
+ }
172
+ async function publicCapability(client, config, nowValue, timeoutMs) {
173
+ const cached = readPublicCapability(config, nowValue);
174
+ if (cached)
175
+ return cached;
176
+ const method = client.anonymousCapabilities;
177
+ // Test doubles and pre-v2 generated clients do not expose a preflight
178
+ // method. Production VectleClient always does; retaining this conservative
179
+ // compatibility fallback keeps low-level callers usable during migration.
180
+ if (typeof method !== 'function')
181
+ return { status: 'enabled', observedAt: null, fresh: true, known: true };
182
+ try {
183
+ const response = await method.call(client, Math.min(timeoutMs, 1_000));
184
+ const value = validAnonymousCapability(response, nowValue);
185
+ if (!value)
186
+ return { status: 'unavailable', observedAt: null, fresh: false, known: false };
187
+ try {
188
+ atomicWriteJson(publicCapabilityCacheFile(config), response);
189
+ }
190
+ catch { /* a live capability remains usable if its cache cannot be written */ }
191
+ return { status: value.enabled ? 'enabled' : 'disabled', observedAt: value.observedAt, fresh: true, known: true };
192
+ }
193
+ catch (error) {
194
+ const status = classifyError(error);
195
+ return { status: status === 'disabled' ? 'disabled' : 'unavailable', observedAt: null, fresh: false, known: status === 'disabled' };
196
+ }
197
+ }
198
+ function capabilityForUpdate(value, nowValue) {
199
+ if (!object(value) || value.schema_version !== 'cli-capabilities-v1' || value.audience !== 'installation' || !object(value.operations) || !object(value.operations.hive_updates))
200
+ return null;
201
+ const observed = isoTimestamp(value.observed_at);
202
+ const expires = isoTimestamp(value.expires_at);
203
+ if (!observed || !expires || Date.parse(expires) <= nowValue || Date.parse(expires) > Date.parse(observed) + 5 * 60_000)
204
+ return null;
205
+ const automatic = value.operations.hive_updates.automatic_status;
206
+ if (!['enabled', 'disabled', 'not_authorized', 'insufficient_scope', 'unsupported'].includes(String(automatic)))
207
+ return null;
208
+ return { status: automatic === 'enabled' ? 'enabled' : automatic === 'disabled' ? 'disabled' : 'unavailable', observedAt: observed, fresh: true, known: true };
209
+ }
210
+ async function installationCapability(client, config, root, nowValue, timeoutMs) {
211
+ const key = `installation-capability:${digestLocal(config.installation?.support_code ?? 'unconfigured')}`;
212
+ const cached = loadAgentState(root).cache.find(entry => entry.kind === 'installation_capability' && entry.key === key);
213
+ if (cached) {
214
+ const value = capabilityForUpdate(cached.value, nowValue);
215
+ if (value)
216
+ return value;
217
+ }
218
+ const method = client.capabilities;
219
+ if (typeof method !== 'function')
220
+ return { status: 'enabled', observedAt: null, fresh: true, known: true };
221
+ try {
222
+ const response = await method.call(client, Math.min(timeoutMs, 1_000));
223
+ const value = capabilityForUpdate(response, nowValue);
224
+ if (!value)
225
+ return { status: 'unavailable', observedAt: null, fresh: false, known: false };
226
+ try {
227
+ await withStateLock(root, state => { state.cache = [{ key, kind: 'installation_capability', stored_at: value.observedAt ?? new Date().toISOString(), value: response }, ...state.cache.filter(entry => entry.key !== key)].slice(0, 16); }, defaultDeliveryBinding(config, root));
228
+ }
229
+ catch { /* live capability still gates this request */ }
230
+ return value;
231
+ }
232
+ catch (error) {
233
+ const status = classifyError(error);
234
+ return { status: status === 'disabled' ? 'disabled' : 'unavailable', observedAt: null, fresh: false, known: status === 'disabled' };
235
+ }
236
+ }
237
+ function receiptForOutput(item) { return { receipt_id: item.receipt_id, summary: item.summary, current_publication_state: item.current_publication_state, url: item.url ?? null, user_message_required: true }; }
238
+ function noticeForOutput(item) { return item.schema_version === 'write-operation-notice-v1' ? { schema_version: 'write-operation-notice-v1', notice_id: item.notice_id, operation_kind: item.operation_kind, outcome_code: item.outcome_code, summary: item.summary, user_message_required: true } : null; }
239
+ function completionNoticeForOutput(item) {
240
+ if (item.schema_version !== 'completion-notice-v1' || typeof item.notice_id !== 'string' || typeof item.copy_variant !== 'string')
241
+ return null;
242
+ return { notice_id: item.notice_id, copy_variant: item.copy_variant, summary: 'Vectle’s integration is now verified.', user_message_required: true };
243
+ }
244
+ function resultFromLanes(lookup, updates, cached, cacheEligible, delivered, pending = null) {
245
+ const liveLookup = lookup.status === 'complete' && lookup.value !== null;
246
+ const cacheLookup = !liveLookup && cacheEligible && cached ? cached.value : null;
247
+ const returnedLookup = liveLookup ? lookup.value : cacheLookup;
248
+ const updateValue = safeUpdate(updates.value);
249
+ const chronology = object(updateValue?.chronology) ? updateValue.chronology : { next_cursor: null, cursor_watermark: 0, cursor_reset: false, has_more: false, cursor_persisted: true, state_issue: null, next_action: null };
250
+ const priority = object(updateValue?.priority) ? updateValue.priority : { next_cursor: null, cursor_watermark: 0, cursor_reset: false, has_more: false, cursor_persisted: true, state_issue: null, next_action: null };
251
+ const allUpdates = delivered.updates;
252
+ const deliveredIds = new Set(allUpdates.map(item => safeString(item.id)).filter((id) => Boolean(id)));
253
+ const urgent = object(updateValue?.urgent_priority_update) && typeof updateValue.urgent_priority_update.id === 'string' && deliveredIds.has(updateValue.urgent_priority_update.id) ? updateValue.urgent_priority_update : null;
254
+ const taskStatus = lookup.status === 'skipped_unsafe' ? 'unsafe' : lookup.status === 'complete' ? (lookup.value?.status === 'useful' ? 'useful' : 'quiet') : lookup.status;
255
+ const receipts = delivered.receipts.map(receiptForOutput).slice(0, 10);
256
+ const operationNoticeItems = delivered.notices.filter(item => item.schema_version === 'write-operation-notice-v1');
257
+ const completionNoticeItems = delivered.notices.filter(item => item.schema_version === 'completion-notice-v1');
258
+ const notices = operationNoticeItems.map(noticeForOutput).filter((notice) => Boolean(notice)).slice(0, 3);
259
+ const completion = completionNoticeItems.map(completionNoticeForOutput).find((notice) => Boolean(notice)) ?? null;
260
+ const updatesForOutput = allUpdates.slice(0, 10);
261
+ const sourceMatchCount = object(returnedLookup) && typeof returnedLookup.count === 'number' && Number.isSafeInteger(returnedLookup.count) && returnedLookup.count >= 0 ? returnedLookup.count : 0;
262
+ const includedMatchCount = object(returnedLookup) && Array.isArray(returnedLookup.matches) ? returnedLookup.matches.length : 0;
263
+ const lookupCompleted = lookup.status === 'complete' && (taskStatus === 'useful' || taskStatus === 'quiet');
264
+ const updatesCompleted = updates.status === 'complete';
265
+ const status = lookupCompleted && updatesCompleted ? 'complete' : lookupCompleted || updatesCompleted ? 'partial' : 'degraded';
266
+ const updateIds = updatesForOutput.map(item => safeString(item.id)).filter((id) => Boolean(id));
267
+ const receiptIds = receipts.map(item => safeString(item.receipt_id)).filter((id) => Boolean(id));
268
+ const noticeIds = [...notices.map(item => safeString(item.notice_id)), ...(completion ? [safeString(completion.notice_id)] : [])].filter((id) => Boolean(id));
269
+ const output = {
270
+ schema_version: 'startup-pulse-v1', status,
271
+ task_lookup: { status: taskStatus, transport_status: lookup.status, result: returnedLookup, source_match_count: sourceMatchCount, included_match_count: includedMatchCount, omitted_match_count: Math.max(0, sourceMatchCount - includedMatchCount), freshness_state: liveLookup ? 'live' : cacheLookup ? 'cached' : 'none', cached_at: liveLookup ? null : cached?.stored_at ?? null, next_action: lookup.status === 'complete' && lookup.value === null ? 'explicit_lookup_for_matches' : null },
272
+ hive_updates: { sync_status: safeString(updateValue?.sync_status) ?? (updates.status === 'complete' ? 'current' : 'unavailable'), delivery_status: allUpdates.length || receipts.length || notices.length ? 'updates' : 'current', updates: updatesForOutput, chronology, priority, urgent_priority_update: urgent, included_update_count: updatesForOutput.length, pending_update_count: pending?.updates ?? 0, omitted_update_count: pending?.updates ?? 0, state_issue: safeString(updateValue?.state_issue), next_action: safeString(updateValue?.next_action) },
273
+ delayed_receipts: receipts,
274
+ operation_notices: notices,
275
+ completion_notice: completion,
276
+ delivery: { delivery_batch_id: delivered.batch?.delivery_batch_id ?? null, update_ids: updateIds, receipt_ids: receiptIds, notice_ids: noticeIds, included_receipt_count: receipts.length, pending_receipt_count: pending?.receipts ?? 0, omitted_receipt_count: pending?.receipts ?? 0, included_operation_notice_count: notices.length, pending_operation_notice_count: pending?.operationNotices ?? 0, omitted_operation_notice_count: pending?.operationNotices ?? 0, included_notice_count: completion ? 1 : 0, pending_notice_count: pending?.completionNotices ?? 0, omitted_notice_count: pending?.completionNotices ?? 0, has_more: (pending?.updates ?? 0) > 0 || (pending?.receipts ?? 0) > 0 || (pending?.notices ?? 0) > 0 || allUpdates.length > updatesForOutput.length || delivered.receipts.length > receipts.length || operationNoticeItems.length > notices.length || completionNoticeItems.length > (completion ? 1 : 0) },
277
+ guidance: { surface_task_lookup: object(returnedLookup) && Array.isArray(returnedLookup.matches) && returnedLookup.matches.length > 0, surface_hive_updates: updatesForOutput.some(item => item.user_message_required === true), surface_delayed_receipts: receipts.length > 0, surface_operation_notices: notices.length > 0, surface_completion_notice: Boolean(completion), user_message_required: updatesForOutput.some(item => item.user_message_required === true) || receipts.length > 0 || notices.length > 0 || Boolean(completion) },
278
+ };
279
+ if (Buffer.byteLength(JSON.stringify(output), 'utf8') > MAX_STARTUP_RESULT_BYTES) {
280
+ output.task_lookup.result = null;
281
+ output.task_lookup.included_match_count = 0;
282
+ output.task_lookup.omitted_match_count = output.task_lookup.source_match_count;
283
+ output.hive_updates.updates = [];
284
+ output.delayed_receipts = [];
285
+ output.operation_notices = [];
286
+ output.completion_notice = null;
287
+ output.delivery = { ...output.delivery, delivery_batch_id: null, update_ids: [], receipt_ids: [], notice_ids: [], has_more: true };
288
+ output.guidance = { ...output.guidance, surface_task_lookup: false, surface_hive_updates: false, surface_delayed_receipts: false, surface_operation_notices: false, surface_completion_notice: false, user_message_required: false };
289
+ }
290
+ return output;
291
+ }
292
+ export async function startupPulse(client, config, signature, options = {}) {
293
+ const validation = validateTaskSignature(signature);
294
+ const root = options.stateRoot ?? localStateRoot(config);
295
+ ensureStateRoot(root);
296
+ const binding = defaultDeliveryBinding(config, root);
297
+ if (options.adapterEntryId)
298
+ binding.adapterEntryId = options.adapterEntryId;
299
+ if (options.integrationBindingDigest)
300
+ binding.integrationBindingDigest = options.integrationBindingDigest;
301
+ if (options.policyChecksum)
302
+ binding.policyChecksum = options.policyChecksum;
303
+ await recoverWriteJournals(root, binding);
304
+ const clock = options.now ?? Date.now;
305
+ const startedAt = clock();
306
+ const currentState = loadAgentState(root, binding);
307
+ const publicCapabilityPromise = validation.data ? bounded(publicCapability(client, config, clock(), Math.min(1_000, PULSE_DEADLINES_MS.total)), 1_000, { status: 'unavailable', observedAt: null, fresh: false, known: false }) : Promise.resolve({ status: 'unavailable', observedAt: null, fresh: false, known: false });
308
+ const lookupPromise = validation.data
309
+ ? publicCapabilityPromise.then(capability => capability.status === 'enabled' && capability.fresh
310
+ ? bounded(client.lookup(validation.data, 3, PULSE_DEADLINES_MS.lookup, 'startup_policy').then(value => { const safe = safeLookup(value); if (!safe)
311
+ throw new Error('invalid_response'); return { status: 'complete', value: safe }; }).catch(error => ({ status: classifyError(error), value: null, error: error instanceof Error ? error.message : 'unavailable' })), Math.max(1, PULSE_DEADLINES_MS.lookup - (clock() - startedAt)), { status: 'unavailable', value: null, error: 'unavailable' })
312
+ : Promise.resolve({ status: capability.status === 'disabled' ? 'disabled' : 'unavailable', value: null, error: capability.status }))
313
+ : Promise.resolve({ status: 'skipped_unsafe', value: null, error: 'unsafe' });
314
+ const canUpdate = typeof client.hasInstallationAccess === 'function' ? client.hasInstallationAccess() : Boolean(config.installation);
315
+ const updateCapabilityPromise = canUpdate ? bounded(installationCapability(client, config, root, clock(), Math.max(1, Math.min(1_000, PULSE_DEADLINES_MS.updates))), Math.max(1, PULSE_DEADLINES_MS.updates), { status: 'unavailable', observedAt: null, fresh: false, known: false }) : Promise.resolve({ status: 'unavailable', observedAt: null, fresh: false, known: false });
316
+ const updatePromise = canUpdate
317
+ ? updateCapabilityPromise.then(capability => capability.status === 'enabled' && capability.fresh
318
+ ? bounded(client.listUpdates({ cursor: currentState.chronology_cursor, priorityCursor: currentState.priority_cursor, limit: 10, timeoutMs: PULSE_DEADLINES_MS.updates, invocationSource: 'startup_policy' }).then(value => ({ status: 'complete', value })).catch(error => ({ status: classifyError(error), value: null, error: error instanceof Error ? error.message : 'unavailable' })), Math.max(1, PULSE_DEADLINES_MS.updates - (clock() - startedAt)), { status: 'unavailable', value: null, error: 'unavailable' })
319
+ : Promise.resolve({ status: capability.status === 'disabled' ? 'disabled' : 'unavailable', value: null, error: capability.status }))
320
+ : Promise.resolve({ status: 'unavailable', value: null, error: 'not_connected' });
321
+ const [lookupSettled, updatesSettled] = await Promise.allSettled([lookupPromise, updatePromise]);
322
+ const lookup = lookupSettled.status === 'fulfilled' ? lookupSettled.value : { status: 'unavailable', value: null, error: 'unavailable' };
323
+ const updates = updatesSettled.status === 'fulfilled' ? updatesSettled.value : { status: 'unavailable', value: null, error: 'unavailable' };
324
+ const updateValue = safeUpdate(updates.value);
325
+ let stateIssue = null;
326
+ try {
327
+ await withStateLock(root, state => {
328
+ if (updateValue) {
329
+ const incoming = [...(Array.isArray(updateValue.updates) ? updateValue.updates : []), ...(Array.isArray(updateValue.priority_updates) ? updateValue.priority_updates : []), ...(object(updateValue.urgent_priority_update) ? [updateValue.urgent_priority_update] : [])].filter((item) => object(item) && typeof item.id === 'string');
330
+ for (const item of incoming) {
331
+ const existing = state.pending_updates.find(candidate => candidate.id === item.id);
332
+ if (existing)
333
+ Object.assign(existing, item, { pending: existing.pending !== false, leased_until: existing.leased_until ?? null });
334
+ else
335
+ state.pending_updates.push({ ...item, pending: true, leased_until: null });
336
+ }
337
+ const newChronologyWatermark = typeof updateValue.cursor_watermark === 'number' ? updateValue.cursor_watermark : state.chronology_cursor_watermark;
338
+ const newPriorityWatermark = typeof updateValue.priority_cursor_watermark === 'number' ? updateValue.priority_cursor_watermark : state.priority_cursor_watermark;
339
+ if (newChronologyWatermark >= state.chronology_cursor_watermark && (typeof updateValue.next_cursor === 'string' || updateValue.next_cursor === null)) {
340
+ state.chronology_cursor = updateValue.next_cursor;
341
+ state.chronology_cursor_watermark = newChronologyWatermark;
342
+ }
343
+ if (newPriorityWatermark >= state.priority_cursor_watermark && (typeof updateValue.next_priority_cursor === 'string' || updateValue.next_priority_cursor === null)) {
344
+ state.priority_cursor = updateValue.next_priority_cursor;
345
+ state.priority_cursor_watermark = newPriorityWatermark;
346
+ }
347
+ state.pending_updates = state.pending_updates.slice(-100);
348
+ }
349
+ if (lookup.status === 'complete' && lookup.value) {
350
+ const key = taskCacheKey(config, validation.data ?? {});
351
+ state.cache = [{ key, kind: 'lookup', stored_at: new Date().toISOString(), value: lookup.value }, ...state.cache.filter(entry => entry.key !== key)].slice(0, 16);
352
+ }
353
+ }, binding);
354
+ }
355
+ catch {
356
+ stateIssue = 'state_unavailable';
357
+ }
358
+ const cacheKey = taskCacheKey(config, validation.data ?? {});
359
+ const cached = loadAgentState(root, binding).cache.find(entry => entry.kind === 'lookup' && entry.key === cacheKey) ?? null;
360
+ const capability = await publicCapabilityPromise;
361
+ const delivered = await leasePending(root, binding, { updates: 10, receipts: 10, notices: 3 });
362
+ let pending = pendingCounts(root, binding);
363
+ let result = resultFromLanes(lookup, updates, cached ? { value: cached.value, stored_at: cached.stored_at } : null, capability.status === 'enabled' && capability.fresh, { batch: delivered.batch, updates: delivered.updates, receipts: delivered.receipts, notices: delivered.notices }, pending);
364
+ const resultOmittedForBudget = Boolean(delivered.batch && result.delivery.delivery_batch_id === null && (delivered.updates.length || delivered.receipts.length || delivered.notices.length));
365
+ if (delivered.batch && (resultOmittedForBudget || Buffer.byteLength(JSON.stringify(result), 'utf8') > MAX_STARTUP_RESULT_BYTES)) {
366
+ await releaseBatch(root, delivered.batch.delivery_batch_id, binding);
367
+ pending = pendingCounts(root, binding);
368
+ result = resultFromLanes(lookup, updates, cached ? { value: cached.value, stored_at: cached.stored_at } : null, capability.status === 'enabled' && capability.fresh, { batch: null, updates: [], receipts: [], notices: [] }, pending);
369
+ }
370
+ if (stateIssue)
371
+ result.hive_updates.state_issue = stateIssue;
372
+ return result;
373
+ }
374
+ export const runStartupPulse = startupPulse;
375
+ export const composeStartupPulse = resultFromLanes;
376
+ export async function syncUpdates(client, config, options = {}) {
377
+ if (typeof client.hasInstallationAccess === 'function' && !client.hasInstallationAccess())
378
+ throw new Error('not_connected');
379
+ const root = options.stateRoot ?? localStateRoot(config);
380
+ ensureStateRoot(root);
381
+ const binding = defaultDeliveryBinding(config, root);
382
+ const current = loadAgentState(root, binding);
383
+ const result = await client.listUpdates({ cursor: current.chronology_cursor, priorityCursor: current.priority_cursor, limit: options.limit ?? 10, timeoutMs: PULSE_DEADLINES_MS.updates, invocationSource: 'explicit' });
384
+ await withStateLock(root, state => {
385
+ const incoming = [...(Array.isArray(result.updates) ? result.updates : []), ...(Array.isArray(result.priority_updates) ? result.priority_updates : []), ...(object(result.urgent_priority_update) ? [result.urgent_priority_update] : [])].filter((item) => object(item) && typeof item.id === 'string');
386
+ for (const item of incoming) {
387
+ const existing = state.pending_updates.find(candidate => candidate.id === item.id);
388
+ if (existing)
389
+ Object.assign(existing, item, { pending: existing.pending !== false, leased_until: existing.leased_until ?? null });
390
+ else
391
+ state.pending_updates.push({ ...item, pending: true, leased_until: null });
392
+ }
393
+ const chronologyWatermark = typeof result.cursor_watermark === 'number' ? result.cursor_watermark : state.chronology_cursor_watermark;
394
+ const priorityWatermark = typeof result.priority_cursor_watermark === 'number' ? result.priority_cursor_watermark : state.priority_cursor_watermark;
395
+ if (chronologyWatermark >= state.chronology_cursor_watermark && (typeof result.next_cursor === 'string' || result.next_cursor === null)) {
396
+ state.chronology_cursor = result.next_cursor;
397
+ state.chronology_cursor_watermark = chronologyWatermark;
398
+ }
399
+ if (priorityWatermark >= state.priority_cursor_watermark && (typeof result.next_priority_cursor === 'string' || result.next_priority_cursor === null)) {
400
+ state.priority_cursor = result.next_priority_cursor;
401
+ state.priority_cursor_watermark = priorityWatermark;
402
+ }
403
+ state.pending_updates = state.pending_updates.slice(-100);
404
+ }, binding);
405
+ const delivered = await leasePending(root, binding, { updates: 10, receipts: 0, notices: 0 });
406
+ return {
407
+ ...result,
408
+ delivery_batch_id: delivered.batch?.delivery_batch_id ?? null,
409
+ update_ids: delivered.updates.map(item => typeof item.id === 'string' ? item.id : null).filter((id) => Boolean(id)),
410
+ };
411
+ }
412
+ //# sourceMappingURL=pulse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulse.js","sourceRoot":"","sources":["../src/pulse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ import { type RolloutThresholds } from './rollout.js';
2
+ export type ReleaseArtifact = {
3
+ artifact_kind: 'cli_package' | 'node_runtime' | 'standalone';
4
+ version: string;
5
+ platform: 'any' | 'darwin' | 'linux' | 'win32';
6
+ architecture: 'any' | 'arm64' | 'x64';
7
+ url: string;
8
+ sha256: string;
9
+ size_bytes: number;
10
+ package_integrity: string | null;
11
+ license_notice_paths: string[];
12
+ };
13
+ export type ReleaseAdapter = {
14
+ client_family: 'codex' | 'claude_code' | 'cursor' | 'vscode';
15
+ platform: 'darwin' | 'linux' | 'win32';
16
+ minimum_client_version: string;
17
+ maximum_client_version: string | null;
18
+ config_schema_version: number;
19
+ maximum_capability: 'authorized_only' | 'mcp_only' | 'policy_and_mcp' | 'full_lifecycle';
20
+ };
21
+ export type ReleaseManifest = {
22
+ schema_version: 'release-manifest-v1';
23
+ sequence: number;
24
+ channel: 'stable' | 'beta';
25
+ issued_at: string;
26
+ expires_at: string;
27
+ minimum_supported_cli: string;
28
+ recommended_cli: string;
29
+ artifacts: ReleaseArtifact[];
30
+ adapters: ReleaseAdapter[];
31
+ rollouts: RolloutThresholds;
32
+ blocked_artifacts: Array<{
33
+ artifact_kind: ReleaseArtifact['artifact_kind'];
34
+ version: string;
35
+ platform: ReleaseArtifact['platform'];
36
+ architecture: ReleaseArtifact['architecture'];
37
+ reason_code: 'security' | 'broken_release' | 'incompatible' | 'superseded';
38
+ }>;
39
+ rollback: {
40
+ target_cli_version: string;
41
+ from_cli_version: string;
42
+ through_cli_version: string;
43
+ reason_code: 'security' | 'broken_release' | 'critical_compatibility';
44
+ } | null;
45
+ signing_key_id: string;
46
+ };
47
+ export type ReleaseManifestEnvelope = {
48
+ schema_version: 'release-manifest-envelope-v1';
49
+ algorithm: 'Ed25519';
50
+ key_id: string;
51
+ manifest: ReleaseManifest;
52
+ signature: string;
53
+ };
54
+ export declare const EMBEDDED_RELEASE_PUBLIC_KEYS: Readonly<Record<string, string>>;
55
+ export declare const RELEASE_MANIFEST_MAX_BYTES = 98304;
56
+ export declare const RELEASE_MANIFEST_MAX_AGE_MS: number;
57
+ export declare const RELEASE_CLOCK_SKEW_MS: number;
58
+ export declare function canonicalManifestBytes(manifest: ReleaseManifest): Buffer<ArrayBuffer>;
59
+ export declare function canonicalEnvelopeBytes(envelope: ReleaseManifestEnvelope): Buffer<ArrayBuffer>;
60
+ export declare function validateReleaseManifestEnvelope(value: unknown): value is ReleaseManifestEnvelope;
61
+ export declare function verifyReleaseManifest(envelope: unknown, now?: number, publicKeys?: Readonly<Record<string, string>>): {
62
+ ok: false;
63
+ code: "invalid_manifest";
64
+ envelope?: undefined;
65
+ etag?: undefined;
66
+ } | {
67
+ ok: false;
68
+ code: "unknown_key";
69
+ envelope?: undefined;
70
+ etag?: undefined;
71
+ } | {
72
+ ok: false;
73
+ code: "expired_manifest";
74
+ envelope?: undefined;
75
+ etag?: undefined;
76
+ } | {
77
+ ok: false;
78
+ code: "bad_signature";
79
+ envelope?: undefined;
80
+ etag?: undefined;
81
+ } | {
82
+ ok: true;
83
+ envelope: ReleaseManifestEnvelope;
84
+ etag: string;
85
+ code?: undefined;
86
+ };
87
+ export declare function manifestCacheFile(root: string): string;
88
+ export declare function readCachedManifest(root: string, now?: number): {
89
+ envelope: null;
90
+ state: string;
91
+ etag: null;
92
+ } | {
93
+ envelope: ReleaseManifestEnvelope;
94
+ state: string;
95
+ etag: string;
96
+ };
97
+ export declare function acceptCachedManifest(root: string, envelope: ReleaseManifestEnvelope): {
98
+ ok: true;
99
+ envelope: ReleaseManifestEnvelope;
100
+ etag: string;
101
+ code?: undefined;
102
+ };
103
+ export declare function fetchReleaseManifest(endpoint: string, root: string, options?: {
104
+ fetchImpl?: typeof fetch;
105
+ timeoutMs?: number;
106
+ now?: number;
107
+ persist?: boolean;
108
+ }): Promise<{
109
+ envelope: ReleaseManifestEnvelope;
110
+ state: "live";
111
+ etag: string | null;
112
+ error?: undefined;
113
+ } | {
114
+ envelope: ReleaseManifestEnvelope;
115
+ state: "cached";
116
+ etag: string;
117
+ error: string;
118
+ } | {
119
+ envelope: null;
120
+ state: "unavailable";
121
+ etag: null;
122
+ error: string;
123
+ }>;