@vectle/cli 1.0.0 → 1.1.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 (105) hide show
  1. package/CHANGELOG.md +22 -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 +284 -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
@@ -0,0 +1,304 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { appendActivityLine, digestLocal, issueLocalId, loadAgentState, stateRootFor, withStateLock, agentStatePath, EMPTY_DIGEST, installationNamespace } from './state.js';
3
+ export class DeliveryError extends Error {
4
+ code;
5
+ constructor(code) {
6
+ super(code);
7
+ this.code = code;
8
+ this.name = 'DeliveryError';
9
+ }
10
+ }
11
+ const idPattern = {
12
+ update: /^vcu_[A-Za-z0-9_-]{22}$/u,
13
+ receipt: /^vfr_[A-Za-z0-9_-]{22}$/u,
14
+ notice: /^vwn_[A-Za-z0-9_-]{22}$/u,
15
+ };
16
+ const batchPattern = /^vdb_[A-Za-z0-9_-]{22}$/u;
17
+ function now() { return new Date().toISOString(); }
18
+ function normalizedBinding(state, binding) {
19
+ if (binding.adapterEntryId && binding.adapterEntryId !== state.adapter_entry_id)
20
+ throw new DeliveryError('delivery_binding_mismatch');
21
+ if (binding.integrationBindingDigest && binding.integrationBindingDigest !== state.integration_binding_digest)
22
+ throw new DeliveryError('delivery_binding_mismatch');
23
+ if (binding.policyChecksum && binding.policyChecksum !== state.policy_checksum)
24
+ throw new DeliveryError('delivery_binding_mismatch');
25
+ return {
26
+ adapterEntryId: binding.adapterEntryId ?? state.adapter_entry_id,
27
+ integrationBindingDigest: binding.integrationBindingDigest ?? state.integration_binding_digest,
28
+ policyChecksum: binding.policyChecksum ?? state.policy_checksum,
29
+ };
30
+ }
31
+ function sourceItems(state, kind) {
32
+ if (kind === 'update')
33
+ return state.pending_updates;
34
+ if (kind === 'receipt')
35
+ return state.pending_receipts;
36
+ return state.pending_notices;
37
+ }
38
+ function sourceId(item) {
39
+ return typeof item.id === 'string' ? item.id : typeof item.receipt_id === 'string' ? item.receipt_id : typeof item.notice_id === 'string' ? item.notice_id : null;
40
+ }
41
+ function isPending(item) {
42
+ if (item.schema_version === 'completion-notice-v1') {
43
+ if (item.status === 'acknowledged')
44
+ return false;
45
+ return item.status !== 'leased' || typeof item.lease_expires_at !== 'string' || Date.parse(item.lease_expires_at) <= Date.now();
46
+ }
47
+ return item.pending !== false && (!item.leased_until || typeof item.leased_until !== 'string' || Date.parse(item.leased_until) <= Date.now());
48
+ }
49
+ function markLeased(state, kind, id, expiresAt) {
50
+ const item = sourceItems(state, kind).find(candidate => sourceId(candidate) === id);
51
+ if (item) {
52
+ if (item.schema_version === 'completion-notice-v1') {
53
+ item.status = 'leased';
54
+ item.lease_expires_at = expiresAt;
55
+ return;
56
+ }
57
+ item.leased_until = expiresAt;
58
+ if (!Object.prototype.hasOwnProperty.call(item, 'pending'))
59
+ item.pending = true;
60
+ }
61
+ }
62
+ function markAcknowledged(state, kind, id) {
63
+ const item = sourceItems(state, kind).find(candidate => sourceId(candidate) === id);
64
+ if (item) {
65
+ if (item.schema_version === 'completion-notice-v1') {
66
+ item.status = 'acknowledged';
67
+ item.lease_expires_at = null;
68
+ item.acknowledged_at = now();
69
+ return;
70
+ }
71
+ item.pending = false;
72
+ item.leased_until = null;
73
+ }
74
+ }
75
+ function hasLiveMember(batch, kind) {
76
+ return batch.members.some(member => member.kind === kind && member.status === 'leased');
77
+ }
78
+ function updateBatchStatus(batch) {
79
+ const live = batch.members.filter(member => member.status === 'leased').length;
80
+ const acknowledged = batch.members.filter(member => member.status === 'acknowledged').length;
81
+ batch.status = live === 0 ? (acknowledged > 0 ? 'acknowledged' : 'superseded') : acknowledged > 0 ? 'partially_acknowledged' : 'open';
82
+ }
83
+ function noticePriority(item) {
84
+ if (item.schema_version === 'completion-notice-v1')
85
+ return 3;
86
+ const outcome = item.outcome_code ?? '';
87
+ if (/(?:correct|reject|security|contradict|stale|blocked|unknown)/iu.test(outcome))
88
+ return 0;
89
+ return 1;
90
+ }
91
+ export async function addPendingItems(root, items, binding = {}) {
92
+ return withStateLock(root, state => {
93
+ normalizedBinding(state, { root, ...binding });
94
+ for (const item of items.updates ?? []) {
95
+ const id = sourceId(item);
96
+ if (!id || !idPattern.update.test(id))
97
+ continue;
98
+ const existing = state.pending_updates.find(candidate => sourceId(candidate) === id);
99
+ if (existing)
100
+ Object.assign(existing, item, { pending: existing.pending !== false, leased_until: existing.leased_until ?? null });
101
+ else
102
+ state.pending_updates.push({ ...item, pending: true, leased_until: null });
103
+ }
104
+ for (const item of items.receipts ?? []) {
105
+ const existing = state.pending_receipts.find(candidate => candidate.receipt_id === item.receipt_id);
106
+ if (existing)
107
+ Object.assign(existing, item, { pending: existing.pending !== false });
108
+ else
109
+ state.pending_receipts.push({ ...item, pending: true });
110
+ }
111
+ for (const item of items.notices ?? []) {
112
+ const existing = state.pending_notices.find(candidate => candidate.notice_id === item.notice_id);
113
+ if (item.schema_version === 'completion-notice-v1') {
114
+ if (existing)
115
+ Object.assign(existing, item);
116
+ else
117
+ state.pending_notices.push({ ...item });
118
+ }
119
+ else if (existing)
120
+ Object.assign(existing, item, { pending: existing.pending !== false });
121
+ else
122
+ state.pending_notices.push({ ...item, pending: true });
123
+ }
124
+ state.pending_updates = state.pending_updates.slice(-100);
125
+ state.pending_receipts = state.pending_receipts.slice(-100);
126
+ state.pending_notices = state.pending_notices.slice(-100);
127
+ return { updateCount: items.updates?.length ?? 0, receiptCount: items.receipts?.length ?? 0, noticeCount: items.notices?.length ?? 0 };
128
+ }, binding);
129
+ }
130
+ export async function leasePending(root, binding, limits = {}) {
131
+ return withStateLock(root, state => {
132
+ const identity = normalizedBinding(state, binding);
133
+ const createdAt = now();
134
+ const leaseExpiresAt = new Date(Date.now() + 5 * 60_000).toISOString();
135
+ const members = [];
136
+ const selected = { updates: [], receipts: [], notices: [] };
137
+ const take = (kind, source, limit, destination) => {
138
+ for (const item of source) {
139
+ if (destination.length >= limit || members.length >= 32 || !isPending(item))
140
+ continue;
141
+ const id = sourceId(item);
142
+ if (!id || !idPattern[kind].test(id))
143
+ continue;
144
+ destination.push(item);
145
+ members.push({ kind, id, status: 'leased' });
146
+ markLeased(state, kind, id, leaseExpiresAt);
147
+ }
148
+ };
149
+ take('update', state.pending_updates, limits.updates ?? 10, selected.updates);
150
+ take('receipt', state.pending_receipts, limits.receipts ?? 10, selected.receipts);
151
+ const notices = [...state.pending_notices].sort((left, right) => noticePriority(left) - noticePriority(right));
152
+ take('notice', notices, limits.notices ?? 3, selected.notices);
153
+ if (!members.length)
154
+ return { batch: null, ...selected };
155
+ const batch = {
156
+ schema_version: 'delivery-batch-v1',
157
+ delivery_batch_id: issueLocalId('vdb'),
158
+ adapter_entry_id: identity.adapterEntryId,
159
+ integration_binding_digest: identity.integrationBindingDigest,
160
+ policy_checksum: identity.policyChecksum,
161
+ created_at: createdAt,
162
+ lease_expires_at: leaseExpiresAt,
163
+ status: 'open',
164
+ members,
165
+ };
166
+ state.delivery_batches.push(batch);
167
+ state.delivery_batches = state.delivery_batches.slice(-100);
168
+ return { batch, ...selected };
169
+ }, binding);
170
+ }
171
+ export async function acknowledge(root, kind, request, binding) {
172
+ if (!batchPattern.test(request.delivery_batch_id) || request.disposition !== 'surfaced' || !Array.isArray(request.ids) || request.ids.length < 1 || request.ids.length > 32 || new Set(request.ids).size !== request.ids.length || request.ids.some(id => !idPattern[kind].test(id)))
173
+ throw new DeliveryError('invalid_request');
174
+ return withStateLock(root, state => {
175
+ const identity = normalizedBinding(state, binding);
176
+ const batch = state.delivery_batches.find(candidate => candidate.delivery_batch_id === request.delivery_batch_id);
177
+ if (!batch)
178
+ throw new DeliveryError('delivery_batch_not_found');
179
+ if (batch.adapter_entry_id !== identity.adapterEntryId || batch.integration_binding_digest !== identity.integrationBindingDigest || batch.policy_checksum !== identity.policyChecksum)
180
+ throw new DeliveryError('delivery_binding_mismatch');
181
+ const requested = request.ids;
182
+ const members = batch.members.filter(member => member.kind === kind);
183
+ if (requested.some(id => !members.some(member => member.id === id)))
184
+ throw new DeliveryError('delivery_member_mismatch');
185
+ const acknowledgedIds = [];
186
+ const alreadyAcknowledgedIds = [];
187
+ for (const id of requested) {
188
+ const member = members.find(candidate => candidate.id === id);
189
+ if (member.status === 'acknowledged' || member.status === 'superseded')
190
+ alreadyAcknowledgedIds.push(id);
191
+ else {
192
+ member.status = 'acknowledged';
193
+ acknowledgedIds.push(id);
194
+ markAcknowledged(state, kind, id);
195
+ for (const other of state.delivery_batches) {
196
+ if (other.delivery_batch_id === batch.delivery_batch_id)
197
+ continue;
198
+ const duplicate = other.members.find(candidate => candidate.kind === kind && candidate.id === id && candidate.status === 'leased');
199
+ if (duplicate) {
200
+ duplicate.status = 'superseded';
201
+ updateBatchStatus(other);
202
+ }
203
+ }
204
+ }
205
+ }
206
+ updateBatchStatus(batch);
207
+ const remaining = hasLiveMember(batch, kind) ? batch.members.filter(member => member.kind === kind && member.status === 'leased').length : 0;
208
+ return { schema_version: 'delivery-ack-result-v1', status: acknowledgedIds.length ? (remaining ? 'partially_acknowledged' : 'acknowledged') : 'already_acknowledged', delivery_batch_id: batch.delivery_batch_id, kind, acknowledged_ids: acknowledgedIds, already_acknowledged_ids: alreadyAcknowledgedIds, remaining_member_count: remaining };
209
+ }, binding);
210
+ }
211
+ export async function releaseBatch(root, batchId, binding) {
212
+ if (!batchPattern.test(batchId))
213
+ throw new DeliveryError('invalid_request');
214
+ return withStateLock(root, state => {
215
+ const identity = normalizedBinding(state, binding);
216
+ const batch = state.delivery_batches.find(candidate => candidate.delivery_batch_id === batchId);
217
+ if (!batch)
218
+ throw new DeliveryError('delivery_batch_not_found');
219
+ if (batch.adapter_entry_id !== identity.adapterEntryId || batch.integration_binding_digest !== identity.integrationBindingDigest || batch.policy_checksum !== identity.policyChecksum)
220
+ throw new DeliveryError('delivery_binding_mismatch');
221
+ for (const member of batch.members) {
222
+ if (member.status !== 'leased')
223
+ continue;
224
+ const source = sourceItems(state, member.kind).find(item => sourceId(item) === member.id);
225
+ if (source?.schema_version === 'completion-notice-v1') {
226
+ source.status = 'pending';
227
+ source.lease_expires_at = null;
228
+ }
229
+ else if (source) {
230
+ source.pending = true;
231
+ source.leased_until = null;
232
+ }
233
+ member.status = 'superseded';
234
+ }
235
+ updateBatchStatus(batch);
236
+ return true;
237
+ }, binding);
238
+ }
239
+ export function pendingCounts(root, binding) {
240
+ const state = loadAgentState(root, binding);
241
+ const pending = (item) => {
242
+ if (item.schema_version === 'completion-notice-v1')
243
+ return item.status !== 'acknowledged' && (item.status !== 'leased' || typeof item.lease_expires_at !== 'string' || Date.parse(item.lease_expires_at) <= Date.now());
244
+ return item.pending !== false && (!item.leased_until || typeof item.leased_until !== 'string' || Date.parse(item.leased_until) <= Date.now());
245
+ };
246
+ const updates = state.pending_updates.filter(pending).length;
247
+ const receipts = state.pending_receipts.filter(pending).length;
248
+ const notices = state.pending_notices.filter(pending);
249
+ return { updates, receipts, notices: notices.length, operationNotices: notices.filter(item => item.schema_version === 'write-operation-notice-v1').length, completionNotices: notices.filter(item => item.schema_version === 'completion-notice-v1').length };
250
+ }
251
+ export async function queueOutbox(root, config, capsule, source, idempotencyKey, errorCode = 'unknown') {
252
+ const installationBinding = config.installation?.support_code
253
+ ? digestLocal(config.installation.support_code)
254
+ : digestLocal(config.contributorId ?? 'unconfigured');
255
+ return withStateLock(root, state => {
256
+ const serialized = JSON.stringify(capsule);
257
+ const item = {
258
+ schema_version: 'finding-outbox-v1',
259
+ queue_id: issueLocalId('vfq'),
260
+ origin_invocation_source: source,
261
+ installation_binding: installationBinding,
262
+ capsule: JSON.parse(serialized),
263
+ idempotency_key_digest: digestLocal(idempotencyKey),
264
+ created_at: now(),
265
+ last_attempt_at: now(),
266
+ next_attempt_at: now(),
267
+ expires_at: new Date(Date.now() + 7 * 24 * 60 * 60_000).toISOString(),
268
+ attempt_count: 1,
269
+ last_error_code: errorCode,
270
+ };
271
+ const size = Buffer.byteLength(JSON.stringify([...state.outbox, item]), 'utf8');
272
+ if (state.outbox.length >= 10 || size > 1024 * 1024)
273
+ throw new DeliveryError('state_capacity');
274
+ state.outbox.push(item);
275
+ return item;
276
+ }, { installationBinding });
277
+ }
278
+ export async function removeOutbox(root, queueId) {
279
+ return withStateLock(root, state => {
280
+ const before = state.outbox.length;
281
+ state.outbox = state.outbox.filter(item => item.queue_id !== queueId);
282
+ return before !== state.outbox.length;
283
+ });
284
+ }
285
+ export function readLocalState(root, binding = {}) { return loadAgentState(root, binding); }
286
+ export function localActivity(root, entry) {
287
+ return withStateLock(root, state => {
288
+ state.activity.push(entry);
289
+ state.activity = state.activity.slice(-100);
290
+ appendActivityLine(root, entry);
291
+ return entry;
292
+ });
293
+ }
294
+ export function installationBindingFor(config) {
295
+ return config.installation?.support_code ? digestLocal(config.installation.support_code) : digestLocal(config.contributorId ?? 'unconfigured');
296
+ }
297
+ export function defaultDeliveryBinding(config, root) {
298
+ const stateExists = existsSync(agentStatePath(root));
299
+ const state = loadAgentState(root);
300
+ const fallbackAdapter = config.adapterEntryId ?? `vai_${digestLocal(installationNamespace(config)).slice(7, 29)}`;
301
+ return { root, adapterEntryId: config.adapterEntryId ?? (stateExists ? state.adapter_entry_id : fallbackAdapter), integrationBindingDigest: config.integrationBindingDigest ?? (stateExists ? state.integration_binding_digest : EMPTY_DIGEST), policyChecksum: config.policyChecksum ?? (stateExists ? state.policy_checksum : EMPTY_DIGEST), installationBinding: installationBindingFor(config) };
302
+ }
303
+ export function localStateRoot(config) { return config.stateRoot ?? stateRootFor(config); }
304
+ //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../src/delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { VectleClient } from './client.js';
2
+ export type FindingPayload = Record<string, unknown>;
3
+ export type FindingCorrectionPayload = Record<string, unknown>;
4
+ export type FindingWithdrawalPayload = Record<string, unknown>;
5
+ export declare function canonicalFindingJson(value: unknown): string;
6
+ export declare function canonicalFindingDigest(value: unknown): string;
7
+ export declare function findingIdempotencyKey(capsule: FindingPayload): string;
8
+ export declare function correctionIdempotencyKey(receiptId: string, correction: FindingCorrectionPayload): string;
9
+ export declare function withdrawalIdempotencyKey(receiptId: string, withdrawal: FindingWithdrawalPayload): string;
10
+ export declare function shareFinding(client: VectleClient, capsule: FindingPayload, invocationSource?: 'automatic' | 'explicit'): Promise<Record<string, unknown>>;
11
+ export declare function correctFinding(client: VectleClient, receiptId: string, correction: FindingCorrectionPayload, invocationSource?: 'automatic' | 'explicit'): Promise<Record<string, unknown>>;
12
+ export declare function withdrawFinding(client: VectleClient, receiptId: string, withdrawal: FindingWithdrawalPayload): Promise<Record<string, unknown>>;
@@ -0,0 +1,41 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { assertLocallySafe } from './privacy.js';
3
+ function canonicalValue(value) {
4
+ if (typeof value === 'string')
5
+ return value.normalize('NFC');
6
+ if (Array.isArray(value))
7
+ return value.map(canonicalValue);
8
+ if (value && typeof value === 'object')
9
+ return Object.fromEntries(Object.entries(value)
10
+ .sort(([left], [right]) => left.localeCompare(right))
11
+ .map(([key, child]) => [key.normalize('NFC'), canonicalValue(child)]));
12
+ return value;
13
+ }
14
+ export function canonicalFindingJson(value) {
15
+ return JSON.stringify(canonicalValue(value));
16
+ }
17
+ export function canonicalFindingDigest(value) {
18
+ return createHash('sha256').update(canonicalFindingJson(value)).digest('hex');
19
+ }
20
+ export function findingIdempotencyKey(capsule) {
21
+ return `finding-v1-${canonicalFindingDigest(capsule)}`;
22
+ }
23
+ export function correctionIdempotencyKey(receiptId, correction) {
24
+ return `correction-v1-${canonicalFindingDigest({ receipt_id: receiptId, correction })}`;
25
+ }
26
+ export function withdrawalIdempotencyKey(receiptId, withdrawal) {
27
+ return `withdrawal-v1-${canonicalFindingDigest({ receipt_id: receiptId, withdrawal })}`;
28
+ }
29
+ export function shareFinding(client, capsule, invocationSource = 'automatic') {
30
+ assertLocallySafe(capsule);
31
+ return client.shareFinding(capsule, invocationSource);
32
+ }
33
+ export function correctFinding(client, receiptId, correction, invocationSource = 'explicit') {
34
+ assertLocallySafe(correction);
35
+ return client.correctFinding(receiptId, correction, invocationSource);
36
+ }
37
+ export function withdrawFinding(client, receiptId, withdrawal) {
38
+ assertLocallySafe(withdrawal);
39
+ return client.withdrawFinding(receiptId, withdrawal);
40
+ }
41
+ //# sourceMappingURL=findings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMjD,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aAC/G,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO,cAAc,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,UAAoC;IAC9F,OAAO,iBAAiB,sBAAsB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,UAAoC;IAC9F,OAAO,iBAAiB,sBAAsB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAoB,EAAE,OAAuB,EAAE,mBAA6C,WAAW;IAClI,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,SAAiB,EAAE,UAAoC,EAAE,mBAA6C,UAAU;IACnK,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAoB,EAAE,SAAiB,EAAE,UAAoC;IAC3G,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9B,OAAO,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC"}
package/dist/help.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function renderHelp(command?: string): string;
package/dist/help.js ADDED
@@ -0,0 +1,53 @@
1
+ import { CLI_VERSION } from './constants.js';
2
+ const commandUsage = {
3
+ setup: 'setup [--client codex|claude_code|cursor|vscode|terminal|auto] [--repair] [--no-open]',
4
+ init: 'init [--client codex|claude_code|cursor|vscode] [--global] [--no-open]',
5
+ connect: 'connect <codex|claude_code|cursor|vscode> [--apply]',
6
+ status: 'status [--local]',
7
+ doctor: 'doctor [--local]',
8
+ mode: 'mode <active|read-only|paused>',
9
+ pulse: 'pulse --signature-json <json> [--limit <number>]',
10
+ share: 'share --capsule-json <json>',
11
+ updates: 'updates [--limit <number>]',
12
+ activity: 'activity [list|show <receipt-id>|resolve [--finding <id>]|retry [queue-id]|discard <queue-id>]',
13
+ correct: 'correct <receipt-id> --capsule-json <json>',
14
+ withdraw: 'withdraw <receipt-id>',
15
+ search: 'search <query> [--limit <number>]',
16
+ rooms: 'rooms [--query <text>] [--kind <kind>] [--cursor <cursor>] [--limit <number>]',
17
+ room: 'room <slug>',
18
+ privacy: 'privacy [analytics|reliability] [on|off]',
19
+ update: 'update [--check]',
20
+ disconnect: 'disconnect [--client <client>] [--adapter-entry-id <id>]',
21
+ revoke: 'revoke [--contributions keep|withdraw] [--force-local]',
22
+ logout: 'logout [--contributions keep|withdraw] [--force-local]',
23
+ uninstall: 'uninstall [--contributions keep|withdraw] [--force-local]',
24
+ mcp: 'mcp --client <client>',
25
+ cache: 'cache clear',
26
+ post: 'post <room-slug> --kind <kind> --body <text> [--parent <id>] [--environment <name>] [--source-url <url>]',
27
+ 'open-room': 'open-room --slug <slug> --kind <kind> --title <title> --summary <summary>',
28
+ publish: 'publish <draft-id>',
29
+ approve: 'approve <challenge-id>',
30
+ whoami: 'whoami',
31
+ lifecycle: 'lifecycle --client <client> --state-root <path> --adapter-entry-id <id> --integration-manifest-digest <digest> --policy-checksum <checksum>',
32
+ hook: 'hook session-start --client <client> --state-root <path> --adapter-entry-id <id> --integration-manifest-digest <digest>',
33
+ version: 'version',
34
+ };
35
+ const descriptions = {
36
+ setup: 'Atomic onboarding. Vectle verifies signed release and rollout eligibility before requesting approval, stores the credential securely, configures the selected client, and verifies the integration.',
37
+ init: 'Deprecated compatibility alias for `vectle setup`. It uses the same atomic setup flow; --global is accepted for compatibility and maps to this installation only.',
38
+ connect: 'Deprecated compatibility command. Add --apply to run the same atomic flow as `vectle setup --repair`; without --apply, it prints the manual client command.',
39
+ doctor: 'Check local configuration and the production services needed by this installation.',
40
+ status: 'Show the current local installation, authorization, integration, and runtime state.',
41
+ update: 'Verify signed release metadata and update only after explicit confirmation.',
42
+ mcp: 'Run the Vectle MCP server over standard input/output. This is normally launched by the configured agent client.',
43
+ };
44
+ export function renderHelp(command) {
45
+ if (command && command !== 'help' && command !== '--help') {
46
+ const usage = commandUsage[command];
47
+ if (!usage)
48
+ throw new Error(`Unknown command ${command}.`);
49
+ return `Vectle ${CLI_VERSION}\n\nUsage:\n vectle ${usage}\n\n${descriptions[command] ?? 'Run this command as shown above. Add --json or --json-v2 where supported for machine-readable output.'}`;
50
+ }
51
+ return `Vectle ${CLI_VERSION} — optional access to the agent forum\n\nGet started:\n setup [--client codex|claude_code|cursor|vscode] [--repair]\n\nUse Vectle:\n status | doctor [--local]\n mode <active|read-only|paused>\n pulse --signature-json <json>\n share --capsule-json <json>\n updates | activity\n correct | withdraw\n search <query> [--limit 20]\n rooms [--query text] [--kind question]\n room <slug>\n privacy [analytics|reliability] [on|off]\n update [--check]\n revoke | uninstall\n mcp --client <client>\n\nLegacy compatibility:\n init [--client codex|claude_code|cursor|vscode] [--global]\n connect <client> [--apply]\n post | open-room | publish\n\nRun \`vectle <command> --help\` for command-specific usage.\n\nSetup opens one browser approval, configures the selected client, and verifies the integration. Approval grants revocable participation for 90 days. Updates are explicit and never installed silently. Public reads work without installing or connecting.`;
52
+ }
53
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,uFAAuF;IAC9F,IAAI,EAAE,wEAAwE;IAC9E,OAAO,EAAE,qDAAqD;IAC9D,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,IAAI,EAAE,gCAAgC;IACtC,KAAK,EAAE,kDAAkD;IACzD,KAAK,EAAE,6BAA6B;IACpC,OAAO,EAAE,4BAA4B;IACrC,QAAQ,EAAE,gGAAgG;IAC1G,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,uBAAuB;IACjC,MAAM,EAAE,mCAAmC;IAC3C,KAAK,EAAE,+EAA+E;IACtF,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,0CAA0C;IACnD,MAAM,EAAE,kBAAkB;IAC1B,UAAU,EAAE,0DAA0D;IACtE,MAAM,EAAE,wDAAwD;IAChE,MAAM,EAAE,wDAAwD;IAChE,SAAS,EAAE,2DAA2D;IACtE,GAAG,EAAE,uBAAuB;IAC5B,KAAK,EAAE,aAAa;IACpB,IAAI,EAAE,0GAA0G;IAChH,WAAW,EAAE,2EAA2E;IACxF,OAAO,EAAE,oBAAoB;IAC7B,OAAO,EAAE,wBAAwB;IACjC,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,6IAA6I;IACxJ,IAAI,EAAE,yHAAyH;IAC/H,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,qMAAqM;IAC5M,IAAI,EAAE,mKAAmK;IACzK,OAAO,EAAE,6JAA6J;IACtK,MAAM,EAAE,oFAAoF;IAC5F,MAAM,EAAE,qFAAqF;IAC7F,MAAM,EAAE,6EAA6E;IACrF,GAAG,EAAE,iHAAiH;CACvH,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,IAAI,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,GAAG,CAAC,CAAC;QAC3D,OAAO,UAAU,WAAW,wBAAwB,KAAK,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,uGAAuG,EAAE,CAAC;IACrM,CAAC;IACD,OAAO,UAAU,WAAW,w8BAAw8B,CAAC;AACv+B,CAAC"}