@xenosystem/agent-interface-host 0.1.7 → 0.1.8

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 (78) hide show
  1. package/dist/acp/AcpAgentTurnExecutionAdapter.d.ts.map +1 -1
  2. package/dist/acp/AcpAgentTurnExecutionAdapter.js +11 -0
  3. package/dist/acp/AcpAgentTurnExecutionAdapter.js.map +1 -1
  4. package/dist/acp/AcpNativeProviderLauncherResolver.d.ts +26 -0
  5. package/dist/acp/AcpNativeProviderLauncherResolver.d.ts.map +1 -0
  6. package/dist/acp/AcpNativeProviderLauncherResolver.js +145 -0
  7. package/dist/acp/AcpNativeProviderLauncherResolver.js.map +1 -0
  8. package/dist/acp/AcpProcessSupervisor.d.ts.map +1 -1
  9. package/dist/acp/AcpProcessSupervisor.js +4 -1
  10. package/dist/acp/AcpProcessSupervisor.js.map +1 -1
  11. package/dist/acp/AcpProviderModelService.d.ts +1 -0
  12. package/dist/acp/AcpProviderModelService.d.ts.map +1 -1
  13. package/dist/acp/AcpProviderModelService.js +2 -2
  14. package/dist/acp/AcpProviderModelService.js.map +1 -1
  15. package/dist/acp/AcpSessionService.d.ts.map +1 -1
  16. package/dist/acp/AcpSessionService.js +40 -2
  17. package/dist/acp/AcpSessionService.js.map +1 -1
  18. package/dist/acp/acpTypes.d.ts +3 -0
  19. package/dist/acp/acpTypes.d.ts.map +1 -1
  20. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.d.ts.map +1 -1
  21. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js +4 -0
  22. package/dist/cloud/XenoCloudAgentTurnExecutionAdapter.js.map +1 -1
  23. package/dist/index.d.ts +41 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +138 -10
  26. package/dist/index.js.map +1 -1
  27. package/dist/lease/ProcessLivenessProber.d.ts +30 -0
  28. package/dist/lease/ProcessLivenessProber.d.ts.map +1 -0
  29. package/dist/lease/ProcessLivenessProber.js +95 -0
  30. package/dist/lease/ProcessLivenessProber.js.map +1 -0
  31. package/dist/lease/ProviderWriterLeaseService.d.ts +43 -0
  32. package/dist/lease/ProviderWriterLeaseService.d.ts.map +1 -0
  33. package/dist/lease/ProviderWriterLeaseService.js +148 -0
  34. package/dist/lease/ProviderWriterLeaseService.js.map +1 -0
  35. package/dist/node.d.ts +8 -0
  36. package/dist/node.d.ts.map +1 -1
  37. package/dist/node.js +8 -0
  38. package/dist/node.js.map +1 -1
  39. package/dist/provider/ProviderLaneService.d.ts +71 -0
  40. package/dist/provider/ProviderLaneService.d.ts.map +1 -0
  41. package/dist/provider/ProviderLaneService.js +892 -0
  42. package/dist/provider/ProviderLaneService.js.map +1 -0
  43. package/dist/provider/ProviderTransitionOutboxDispatcher.d.ts +22 -0
  44. package/dist/provider/ProviderTransitionOutboxDispatcher.d.ts.map +1 -0
  45. package/dist/provider/ProviderTransitionOutboxDispatcher.js +60 -0
  46. package/dist/provider/ProviderTransitionOutboxDispatcher.js.map +1 -0
  47. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts +4 -1
  48. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.d.ts.map +1 -1
  49. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js +37 -1
  50. package/dist/sdk/SdkNativeAgentTurnExecutionAdapter.js.map +1 -1
  51. package/dist/state/ProviderLaneSqliteStore.d.ts +64 -0
  52. package/dist/state/ProviderLaneSqliteStore.d.ts.map +1 -0
  53. package/dist/state/ProviderLaneSqliteStore.js +728 -0
  54. package/dist/state/ProviderLaneSqliteStore.js.map +1 -0
  55. package/dist/state/SqliteAgentStateRepository.d.ts +9 -0
  56. package/dist/state/SqliteAgentStateRepository.d.ts.map +1 -1
  57. package/dist/state/SqliteAgentStateRepository.js +171 -17
  58. package/dist/state/SqliteAgentStateRepository.js.map +1 -1
  59. package/dist/state/createAgentStateRepository.d.ts.map +1 -1
  60. package/dist/state/createAgentStateRepository.js +4 -2
  61. package/dist/state/createAgentStateRepository.js.map +1 -1
  62. package/dist/state/providerLaneSchema.d.ts +13 -0
  63. package/dist/state/providerLaneSchema.d.ts.map +1 -0
  64. package/dist/state/providerLaneSchema.js +129 -0
  65. package/dist/state/providerLaneSchema.js.map +1 -0
  66. package/dist/state/providerLaneTypes.d.ts +122 -0
  67. package/dist/state/providerLaneTypes.d.ts.map +1 -0
  68. package/dist/state/providerLaneTypes.js +28 -0
  69. package/dist/state/providerLaneTypes.js.map +1 -0
  70. package/dist/state/sdkProtectedStateCipher.d.ts +30 -0
  71. package/dist/state/sdkProtectedStateCipher.d.ts.map +1 -0
  72. package/dist/state/sdkProtectedStateCipher.js +50 -0
  73. package/dist/state/sdkProtectedStateCipher.js.map +1 -0
  74. package/dist/workspace/WorkspaceHostService.d.ts +31 -1
  75. package/dist/workspace/WorkspaceHostService.d.ts.map +1 -1
  76. package/dist/workspace/WorkspaceHostService.js +89 -12
  77. package/dist/workspace/WorkspaceHostService.js.map +1 -1
  78. package/package.json +7 -7
@@ -0,0 +1,95 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ export class DefaultProcessLivenessProber {
3
+ platform;
4
+ processExists;
5
+ processStartTime;
6
+ constructor(options = {}) {
7
+ this.platform = options.platform ?? process.platform;
8
+ this.processExists = options.processExists ?? defaultProcessExists;
9
+ this.processStartTime = options.processStartTime ?? ((pid) => defaultProcessStartTime(this.platform, pid));
10
+ }
11
+ probe(input) {
12
+ validatePid(input.pid);
13
+ if (input.hostInstanceId !== input.currentHostInstanceId) {
14
+ return { state: 'unknown', reason: 'foreign_host' };
15
+ }
16
+ try {
17
+ const exists = this.processExists(input.pid);
18
+ if (exists === 'unknown')
19
+ return { state: 'unknown', reason: 'probe_denied' };
20
+ if (!exists)
21
+ return { state: 'dead', reason: 'pid_missing' };
22
+ const observed = this.processStartTime(input.pid);
23
+ if (observed === 'unknown')
24
+ return { state: 'unknown', reason: 'probe_denied' };
25
+ if (!observed)
26
+ return { state: 'unknown', reason: 'probe_failed' };
27
+ if (!sameProcessStartTime(observed, input.expectedProcessStartTime)) {
28
+ return { state: 'dead', reason: 'pid_reused', observedProcessStartTime: observed };
29
+ }
30
+ return { state: 'alive', reason: 'alive', observedProcessStartTime: observed };
31
+ }
32
+ catch {
33
+ return { state: 'unknown', reason: 'probe_failed' };
34
+ }
35
+ }
36
+ }
37
+ export function sameProcessStartTime(left, right, toleranceMs = 2000) {
38
+ const leftMs = Date.parse(left);
39
+ const rightMs = Date.parse(right);
40
+ if (!Number.isFinite(leftMs) || !Number.isFinite(rightMs))
41
+ return left === right;
42
+ return Math.abs(leftMs - rightMs) <= toleranceMs;
43
+ }
44
+ function defaultProcessExists(pid) {
45
+ try {
46
+ process.kill(pid, 0);
47
+ return true;
48
+ }
49
+ catch (error) {
50
+ const code = isRecord(error) && typeof error.code === 'string' ? error.code : '';
51
+ if (code === 'ESRCH')
52
+ return false;
53
+ if (code === 'EPERM' || code === 'EACCES')
54
+ return 'unknown';
55
+ return 'unknown';
56
+ }
57
+ }
58
+ function defaultProcessStartTime(platform, pid) {
59
+ validatePid(pid);
60
+ try {
61
+ if (platform === 'win32') {
62
+ const script = [
63
+ "$p = Get-CimInstance Win32_Process -Filter ('ProcessId = ' + $args[0])",
64
+ "if ($null -ne $p) { $p.CreationDate.ToUniversalTime().ToString('o') }",
65
+ ].join('; ');
66
+ const output = execFileSync('powershell.exe', [
67
+ '-NoLogo', '-NoProfile', '-NonInteractive', '-Command', script, String(pid),
68
+ ], { encoding: 'utf8', windowsHide: true, timeout: 5000, stdio: ['ignore', 'pipe', 'ignore'] }).trim();
69
+ return output || null;
70
+ }
71
+ const output = execFileSync('ps', ['-p', String(pid), '-o', 'lstart='], {
72
+ encoding: 'utf8',
73
+ timeout: 5000,
74
+ stdio: ['ignore', 'pipe', 'ignore'],
75
+ }).trim();
76
+ if (!output)
77
+ return null;
78
+ const parsed = new Date(output);
79
+ return Number.isNaN(parsed.valueOf()) ? 'unknown' : parsed.toISOString();
80
+ }
81
+ catch (error) {
82
+ const code = isRecord(error) && typeof error.code === 'string' ? error.code : '';
83
+ if (code === 'EPERM' || code === 'EACCES')
84
+ return 'unknown';
85
+ return null;
86
+ }
87
+ }
88
+ function validatePid(pid) {
89
+ if (!Number.isSafeInteger(pid) || pid <= 0)
90
+ throw new Error('Invalid process ID.');
91
+ }
92
+ function isRecord(value) {
93
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
94
+ }
95
+ //# sourceMappingURL=ProcessLivenessProber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessLivenessProber.js","sourceRoot":"","sources":["../../src/lease/ProcessLivenessProber.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { AgentCockpitErrorCode } from '@xenosystem/agent-interface-contract';
2
+ import type { ProviderLaneSqliteStore } from '../state/ProviderLaneSqliteStore.js';
3
+ import type { ProviderWriterLeaseRecordV1 } from '../state/providerLaneTypes.js';
4
+ import { type ProcessLivenessProber, type ProcessLivenessResult } from './ProcessLivenessProber.js';
5
+ export interface ExternalProviderBusyProbeInput {
6
+ runtimeProviderId: string;
7
+ nativeProviderId?: string;
8
+ nativeSessionHash?: string;
9
+ }
10
+ export interface ExternalProviderBusyClassifier {
11
+ classify(input: ExternalProviderBusyProbeInput): 'clear' | 'busy' | 'unknown';
12
+ }
13
+ export interface ProviderWriterLeaseServiceOptions {
14
+ store: ProviderLaneSqliteStore;
15
+ hostInstanceId: string;
16
+ livenessProber?: ProcessLivenessProber;
17
+ externalBusyClassifier?: ExternalProviderBusyClassifier;
18
+ now?: () => Date;
19
+ }
20
+ export interface WriterLeaseResult {
21
+ success: boolean;
22
+ lease?: ProviderWriterLeaseRecordV1;
23
+ code?: AgentCockpitErrorCode;
24
+ error?: string;
25
+ liveness?: ProcessLivenessResult;
26
+ }
27
+ export declare class ProviderWriterLeaseService {
28
+ private readonly store;
29
+ private readonly hostInstanceId;
30
+ private readonly livenessProber;
31
+ private readonly externalBusyClassifier;
32
+ private readonly now;
33
+ constructor(options: ProviderWriterLeaseServiceOptions);
34
+ acquireLease(lease: ProviderWriterLeaseRecordV1): WriterLeaseResult;
35
+ renewLease(leaseId: string, laneId: string, expectedLeaseRevision: number, expiresAt: string): WriterLeaseResult;
36
+ heartbeat(leaseId: string, laneId: string, expectedLeaseRevision: number): WriterLeaseResult;
37
+ beginRelease(leaseId: string, laneId: string, expectedLeaseRevision: number): WriterLeaseResult;
38
+ confirmReleased(leaseId: string, laneId: string, expectedLeaseRevision: number, processExited: boolean): WriterLeaseResult;
39
+ assertAuthority(leaseId: string, authoritySnapshotHash: string): WriterLeaseResult;
40
+ private requireCurrentLease;
41
+ private fromStore;
42
+ }
43
+ //# sourceMappingURL=ProviderWriterLeaseService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderWriterLeaseService.d.ts","sourceRoot":"","sources":["../../src/lease/ProviderWriterLeaseService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AACjF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,8BAA8B;IAC7C,iBAAiB,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CAC9E;AAED,MAAM,WAAW,iCAAiC;IAChD,KAAK,EAAE,uBAAuB,CAAA;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,sBAAsB,CAAC,EAAE,8BAA8B,CAAA;IACvD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,2BAA2B,CAAA;IACnC,IAAI,CAAC,EAAE,qBAAqB,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,qBAAqB,CAAA;CACjC;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAA4C;IACnF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;gBAEpB,OAAO,EAAE,iCAAiC;IAQtD,YAAY,CAAC,KAAK,EAAE,2BAA2B,GAAG,iBAAiB;IAqDnE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAYhH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,iBAAiB;IAa5F,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,iBAAiB;IAU/F,eAAe,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,EAC7B,aAAa,EAAE,OAAO,GACrB,iBAAiB;IAgBpB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,iBAAiB;IASlF,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,SAAS;CAalB"}
@@ -0,0 +1,148 @@
1
+ import { DefaultProcessLivenessProber, } from './ProcessLivenessProber.js';
2
+ export class ProviderWriterLeaseService {
3
+ store;
4
+ hostInstanceId;
5
+ livenessProber;
6
+ externalBusyClassifier;
7
+ now;
8
+ constructor(options) {
9
+ this.store = options.store;
10
+ this.hostInstanceId = requireText(options.hostInstanceId, 'hostInstanceId');
11
+ this.livenessProber = options.livenessProber ?? new DefaultProcessLivenessProber();
12
+ this.externalBusyClassifier = options.externalBusyClassifier;
13
+ this.now = options.now ?? (() => new Date());
14
+ }
15
+ acquireLease(lease) {
16
+ const external = this.externalBusyClassifier?.classify({
17
+ runtimeProviderId: lease.runtimeProviderId,
18
+ ...(lease.nativeProviderId ? { nativeProviderId: lease.nativeProviderId } : {}),
19
+ ...(lease.nativeSessionHash ? { nativeSessionHash: lease.nativeSessionHash } : {}),
20
+ });
21
+ if (external === 'busy') {
22
+ return { success: false, code: 'PROVIDER_SESSION_BUSY_EXTERNAL', error: 'Provider reports an external live writer.' };
23
+ }
24
+ if (external === 'unknown') {
25
+ return { success: false, code: 'LANE_WRITER_UNKNOWN', error: 'External provider writer state is unknown.' };
26
+ }
27
+ const existing = this.store.getActiveLease(lease.laneId);
28
+ if (!existing)
29
+ return this.fromStore(this.store.saveLeaseAtomic({ ...lease, leaseRevision: 1 }, 0));
30
+ if (Date.parse(existing.expiresAt) > this.now().valueOf()) {
31
+ return { success: false, code: 'LANE_WRITER_ACTIVE', error: 'Provider lane already has an active writer.', lease: existing };
32
+ }
33
+ const liveness = this.livenessProber.probe({
34
+ pid: existing.ownerPid,
35
+ expectedProcessStartTime: existing.ownerProcessStartTime,
36
+ expectedProcessIdentity: existing.ownerProcessIdentity,
37
+ hostInstanceId: existing.hostInstanceId,
38
+ currentHostInstanceId: this.hostInstanceId,
39
+ });
40
+ if (liveness.state === 'alive') {
41
+ return { success: false, code: 'LANE_WRITER_ACTIVE', error: 'Expired lease still has a live owner process.', lease: existing, liveness };
42
+ }
43
+ if (liveness.state === 'unknown') {
44
+ const marked = this.store.saveLeaseAtomic({
45
+ ...existing,
46
+ state: 'unknown',
47
+ updatedAt: this.now().toISOString(),
48
+ }, existing.leaseRevision);
49
+ return {
50
+ success: false,
51
+ code: 'LANE_WRITER_UNKNOWN',
52
+ error: 'Expired lease owner liveness is unknown.',
53
+ lease: marked.lease ?? existing,
54
+ liveness,
55
+ };
56
+ }
57
+ const replaced = this.store.replaceExpiredLeaseAtomic(existing.leaseId, existing.leaseRevision, { ...lease, leaseRevision: 1 });
58
+ return { ...this.fromStore(replaced), liveness };
59
+ }
60
+ renewLease(leaseId, laneId, expectedLeaseRevision, expiresAt) {
61
+ const current = this.requireCurrentLease(leaseId, laneId);
62
+ if (!current.success || !current.lease)
63
+ return current;
64
+ return this.fromStore(this.store.saveLeaseAtomic({
65
+ ...current.lease,
66
+ expiresAt: requireTimestamp(expiresAt, 'expiresAt'),
67
+ renewedAt: this.now().toISOString(),
68
+ lastHeartbeatAt: this.now().toISOString(),
69
+ updatedAt: this.now().toISOString(),
70
+ }, expectedLeaseRevision));
71
+ }
72
+ heartbeat(leaseId, laneId, expectedLeaseRevision) {
73
+ const current = this.requireCurrentLease(leaseId, laneId);
74
+ if (!current.success || !current.lease)
75
+ return current;
76
+ if (current.lease.state !== 'active') {
77
+ return { success: false, code: 'LANE_WRITER_UNKNOWN', error: 'Only an active lease can heartbeat.', lease: current.lease };
78
+ }
79
+ return this.fromStore(this.store.saveLeaseAtomic({
80
+ ...current.lease,
81
+ lastHeartbeatAt: this.now().toISOString(),
82
+ updatedAt: this.now().toISOString(),
83
+ }, expectedLeaseRevision));
84
+ }
85
+ beginRelease(leaseId, laneId, expectedLeaseRevision) {
86
+ const current = this.requireCurrentLease(leaseId, laneId);
87
+ if (!current.success || !current.lease)
88
+ return current;
89
+ return this.fromStore(this.store.saveLeaseAtomic({
90
+ ...current.lease,
91
+ state: 'releasing',
92
+ updatedAt: this.now().toISOString(),
93
+ }, expectedLeaseRevision));
94
+ }
95
+ confirmReleased(leaseId, laneId, expectedLeaseRevision, processExited) {
96
+ const current = this.requireCurrentLease(leaseId, laneId);
97
+ if (!current.success || !current.lease)
98
+ return current;
99
+ if (!processExited) {
100
+ return { success: false, code: 'LANE_WRITER_ACTIVE', error: 'Writer process exit was not verified.', lease: current.lease };
101
+ }
102
+ if (current.lease.state !== 'releasing') {
103
+ return { success: false, code: 'LANE_WRITER_UNKNOWN', error: 'Writer lease must enter releasing state first.', lease: current.lease };
104
+ }
105
+ return this.fromStore(this.store.saveLeaseAtomic({
106
+ ...current.lease,
107
+ state: 'released',
108
+ updatedAt: this.now().toISOString(),
109
+ }, expectedLeaseRevision));
110
+ }
111
+ assertAuthority(leaseId, authoritySnapshotHash) {
112
+ const lease = this.store.getLease(requireText(leaseId, 'leaseId'));
113
+ if (!lease)
114
+ return { success: false, code: 'LANE_WRITER_UNKNOWN', error: 'Writer lease was not found.' };
115
+ if (lease.authoritySnapshotHash !== requireText(authoritySnapshotHash, 'authoritySnapshotHash')) {
116
+ return { success: false, code: 'WORKSPACE_EPOCH_CONFLICT', error: 'Writer authority snapshot changed.' };
117
+ }
118
+ return { success: true, lease };
119
+ }
120
+ requireCurrentLease(leaseId, laneId) {
121
+ const lease = this.store.getLease(requireText(leaseId, 'leaseId'));
122
+ if (!lease || lease.laneId !== requireText(laneId, 'laneId')) {
123
+ return { success: false, code: 'LANE_WRITER_UNKNOWN', error: 'Writer lease was not found.' };
124
+ }
125
+ return { success: true, lease };
126
+ }
127
+ fromStore(result) {
128
+ return {
129
+ success: result.success,
130
+ ...(result.lease ? { lease: result.lease } : {}),
131
+ ...(result.code ? { code: result.code } : {}),
132
+ ...(result.error ? { error: result.error } : {}),
133
+ };
134
+ }
135
+ }
136
+ function requireText(value, field) {
137
+ const normalized = typeof value === 'string' ? value.trim() : '';
138
+ if (!normalized || normalized.length > 512)
139
+ throw new Error(`${field} is invalid.`);
140
+ return normalized;
141
+ }
142
+ function requireTimestamp(value, field) {
143
+ const normalized = requireText(value, field);
144
+ if (!Number.isFinite(Date.parse(normalized)))
145
+ throw new Error(`${field} is invalid.`);
146
+ return normalized;
147
+ }
148
+ //# sourceMappingURL=ProviderWriterLeaseService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderWriterLeaseService.js","sourceRoot":"","sources":["../../src/lease/ProviderWriterLeaseService.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts CHANGED
@@ -15,6 +15,13 @@ export * from './intake/RepositoryTodoIntakeSource.js';
15
15
  export * from './intake/WorkspaceTodoIntakeSource.js';
16
16
  export * from './observation/MountContentReader.js';
17
17
  export * from './observation/DirectoryBaselineScanner.js';
18
+ export * from './state/sdkProtectedStateCipher.js';
19
+ export * from './state/providerLaneTypes.js';
20
+ export * from './state/ProviderLaneSqliteStore.js';
21
+ export * from './lease/ProcessLivenessProber.js';
22
+ export * from './lease/ProviderWriterLeaseService.js';
23
+ export * from './provider/ProviderLaneService.js';
24
+ export * from './provider/ProviderTransitionOutboxDispatcher.js';
18
25
  export * from './workspace/WorkspaceHostService.js';
19
26
  export * from './workspace/WorkspaceShellService.js';
20
27
  export * from './workspace/fileAssociations.js';
@@ -77,6 +84,7 @@ export * from './acp/acpSessionResume.js';
77
84
  export * from './acp/AcpRuntimeEventMapper.js';
78
85
  export * from './acp/AcpProviderVersionReadiness.js';
79
86
  export * from './acp/AcpProviderModelService.js';
87
+ export * from './acp/AcpNativeProviderLauncherResolver.js';
80
88
  export * from './acp/AcpDiagnosticsService.js';
81
89
  export * from './acp/AcpAgentRegistryService.js';
82
90
  export * from './acp/AcpExternalCertificationHarness.js';
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,sCAAsC,CAAA;AAC7C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qCAAqC,CAAA;AACnD,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,wCAAwC,CAAA;AACtD,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,2CAA2C,CAAA;AACzD,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,wCAAwC,CAAA;AACtD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,mCAAmC,CAAA;AACjD,cAAc,qCAAqC,CAAA;AACnD,cAAc,8CAA8C,CAAA;AAC5D,cAAc,iCAAiC,CAAA;AAC/C,cAAc,mCAAmC,CAAA;AACjD,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,2CAA2C,CAAA;AACzD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,4CAA4C,CAAA;AAC1D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,2BAA2B,CAAA;AACzC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,2CAA2C,CAAA;AACzD,cAAc,qCAAqC,CAAA;AACnD,cAAc,sCAAsC,CAAA;AACpD,cAAc,wCAAwC,CAAA;AACtD,cAAc,2CAA2C,CAAA;AACzD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,IAAI,mBAAmB,EACpC,cAAc,IAAI,oBAAoB,GACvC,MAAM,8BAA8B,CAAA;AACrC,cAAc,oCAAoC,CAAA;AAClD,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,wCAAwC,CAAA;AACtD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,iDAAiD,CAAA;AAC/D,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4CAA4C,CAAA;AAC1D,cAAc,4CAA4C,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AACvD,cAAc,2BAA2B,CAAA;AACzC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,0CAA0C,CAAA;AACxD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qCAAqC,CAAA;AACnD,cAAc,oCAAoC,CAAA;AAClD,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uCAAuC,CAAA;AACrD,cAAc,+CAA+C,CAAA;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAChF,cAAc,wCAAwC,CAAA;AACtD,cAAc,iCAAiC,CAAA;AAC/C;;;;;;;;;GASG;AACH,cAAc,iCAAiC,CAAA;AAC/C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,oCAAoC,CAAA;AAClD,cAAc,0BAA0B,CAAA;AACxC,cAAc,wCAAwC,CAAA;AAEtD;;;;;;;;;GASG;AACH,cAAc,qCAAqC,CAAA"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
package/dist/node.js CHANGED
@@ -15,6 +15,13 @@ export * from './intake/RepositoryTodoIntakeSource.js';
15
15
  export * from './intake/WorkspaceTodoIntakeSource.js';
16
16
  export * from './observation/MountContentReader.js';
17
17
  export * from './observation/DirectoryBaselineScanner.js';
18
+ export * from './state/sdkProtectedStateCipher.js';
19
+ export * from './state/providerLaneTypes.js';
20
+ export * from './state/ProviderLaneSqliteStore.js';
21
+ export * from './lease/ProcessLivenessProber.js';
22
+ export * from './lease/ProviderWriterLeaseService.js';
23
+ export * from './provider/ProviderLaneService.js';
24
+ export * from './provider/ProviderTransitionOutboxDispatcher.js';
18
25
  export * from './workspace/WorkspaceHostService.js';
19
26
  export * from './workspace/WorkspaceShellService.js';
20
27
  export * from './workspace/fileAssociations.js';
@@ -77,6 +84,7 @@ export * from './acp/acpSessionResume.js';
77
84
  export * from './acp/AcpRuntimeEventMapper.js';
78
85
  export * from './acp/AcpProviderVersionReadiness.js';
79
86
  export * from './acp/AcpProviderModelService.js';
87
+ export * from './acp/AcpNativeProviderLauncherResolver.js';
80
88
  export * from './acp/AcpDiagnosticsService.js';
81
89
  export * from './acp/AcpAgentRegistryService.js';
82
90
  export * from './acp/AcpExternalCertificationHarness.js';
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import type { AgentCockpitErrorCode, AgentConversationOpenRequest, AgentConversationOpenResult, AgentConversationResumeRequest, AgentConversationResumeResult, AgentProviderLaneGetRequest, AgentProviderLaneGetResult, AgentProviderLaneListRequest, AgentProviderLaneListResult, AgentProviderLaneSelectRequest, AgentProviderLaneSelectResult, AgentProviderNativeAttachRequest, AgentProviderNativeAttachResult, AgentProviderNativeDetachRequest, AgentProviderNativeDetachResult, AgentProviderNativeReattachRequest, AgentProviderNativeReattachResult, AgentProviderNativeStopRequest, AgentProviderNativeStopResult, AgentProviderReconcileRequest, AgentProviderReconcileResult, AgentHostEvent, AgentRuntimeProviderDescriptor, AgentSessionHostBindingV1, AgentTurnContinuation, AgentTurnStartRequest, ProviderLaneProjectionV1 } from '@xenosystem/agent-interface-contract';
2
+ import type { WorkspaceHostService, ProviderSessionPtyResolver } from '../workspace/WorkspaceHostService.js';
3
+ import type { SqliteAgentStateRepository } from '../state/SqliteAgentStateRepository.js';
4
+ import { ProviderWriterLeaseService } from '../lease/ProviderWriterLeaseService.js';
5
+ import type { NativeProviderLauncherInput, NativeProviderLauncherResult } from '../acp/AcpNativeProviderLauncherResolver.js';
6
+ import { type ProviderTransitionRuntimeEventAppender } from './ProviderTransitionOutboxDispatcher.js';
7
+ export interface ProviderLaneServiceOptions {
8
+ repository: SqliteAgentStateRepository;
9
+ workspaceService: Pick<WorkspaceHostService, 'ensureManagedConversationWorkspace' | 'startPty' | 'snapshotPty' | 'stopPty' | 'transferPtyOwnership'>;
10
+ hostStorageIdentity: string;
11
+ hostInstanceId?: string;
12
+ getProviders: () => AgentRuntimeProviderDescriptor[] | Promise<AgentRuntimeProviderDescriptor[]>;
13
+ resolveNativeLauncher?: (input: NativeProviderLauncherInput) => Promise<NativeProviderLauncherResult>;
14
+ writerLeaseService?: ProviderWriterLeaseService;
15
+ runtimeEventRepository?: ProviderTransitionRuntimeEventAppender;
16
+ now?: () => Date;
17
+ createId?: () => string;
18
+ }
19
+ /**
20
+ * Host authority for conversation workspace epochs and redacted provider lanes.
21
+ * Provider continuation locators never leave the repository's protected path.
22
+ */
23
+ export declare class ProviderLaneService {
24
+ private readonly options;
25
+ private readonly now;
26
+ private readonly createId;
27
+ private readonly writerLeases;
28
+ private eventSink;
29
+ private readonly nativeTerminals;
30
+ private readonly nativeTerminalByLane;
31
+ private readonly outboxDispatcher;
32
+ constructor(options: ProviderLaneServiceOptions);
33
+ getHostBinding(conversationId: string): AgentSessionHostBindingV1;
34
+ setEventSink(sink: (type: AgentHostEvent['type'], payload: Record<string, unknown>) => void): void;
35
+ start(): void;
36
+ openConversation(input: AgentConversationOpenRequest): Promise<AgentConversationOpenResult>;
37
+ resumeConversation(input: AgentConversationResumeRequest): Promise<AgentConversationResumeResult>;
38
+ listLanes(input: AgentProviderLaneListRequest): Promise<AgentProviderLaneListResult>;
39
+ getLane(input: AgentProviderLaneGetRequest): Promise<AgentProviderLaneGetResult>;
40
+ selectLane(input: AgentProviderLaneSelectRequest): Promise<AgentProviderLaneSelectResult>;
41
+ attachNative(input: AgentProviderNativeAttachRequest): Promise<AgentProviderNativeAttachResult>;
42
+ detachNative(input: AgentProviderNativeDetachRequest): AgentProviderNativeDetachResult;
43
+ reattachNative(input: AgentProviderNativeReattachRequest): AgentProviderNativeReattachResult;
44
+ stopNative(input: AgentProviderNativeStopRequest): AgentProviderNativeStopResult;
45
+ reconcile(input: AgentProviderReconcileRequest): AgentProviderReconcileResult;
46
+ resolveProviderSessionPty: ProviderSessionPtyResolver;
47
+ handleWorkspacePtyExit(payload: Record<string, unknown>): void;
48
+ close(): void;
49
+ getWorkspaceDirectory(conversationId: string): string;
50
+ private requireWriterLeases;
51
+ private startLeaseHeartbeat;
52
+ private restoreLaneAfterFailedNativeStart;
53
+ prepareTurn(request: AgentTurnStartRequest): AgentTurnStartRequest;
54
+ beginStructuredTurn(request: AgentTurnStartRequest): void;
55
+ finishStructuredTurn(conversationId: string, requestId: string): void;
56
+ commitTurnContinuation(input: {
57
+ conversationId: string;
58
+ requestId: string;
59
+ continuation: AgentTurnContinuation;
60
+ }): {
61
+ success: boolean;
62
+ code?: AgentCockpitErrorCode;
63
+ error?: string;
64
+ lane?: ProviderLaneProjectionV1;
65
+ };
66
+ private conversationResult;
67
+ private requireHostState;
68
+ private resolveWorkspace;
69
+ private createWorkspaceEpoch;
70
+ }
71
+ //# sourceMappingURL=ProviderLaneService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderLaneService.d.ts","sourceRoot":"","sources":["../../src/provider/ProviderLaneService.ts"],"names":[],"mappings":"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"}