@myagentroam/node 0.9.9 → 0.9.11

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 (214) hide show
  1. package/dist/capabilities.js +2 -92
  2. package/dist/claude-agent-sdk.js +2 -330
  3. package/dist/claude-channel.js +2 -44
  4. package/dist/codex-app-server.js +2 -503
  5. package/dist/config.js +2 -56
  6. package/dist/connector/node-connector-options.js +2 -1
  7. package/dist/connector/node-operation-router.js +2 -22
  8. package/dist/connector.js +2 -845
  9. package/dist/control-outbound-scheduler.js +2 -154
  10. package/dist/database.js +2 -1418
  11. package/dist/event-buffer.js +2 -19
  12. package/dist/fake-runner.js +2 -129
  13. package/dist/health.js +2 -3
  14. package/dist/main.js +2 -54
  15. package/dist/migrations/v001.js +3 -144
  16. package/dist/migrations/v002.js +2 -143
  17. package/dist/migrations/v003.js +2 -44
  18. package/dist/migrations/v004.js +34 -30
  19. package/dist/native-jsonl-reader.js +2 -186
  20. package/dist/native-session-history.js +2 -1119
  21. package/dist/opencode-runtime.js +2 -80
  22. package/dist/opencode-server.js +2 -263
  23. package/dist/operational.js +2 -122
  24. package/dist/process-tree.js +2 -18
  25. package/dist/rotating-log.js +2 -67
  26. package/dist/runner/abstract-runner.js +2 -232
  27. package/dist/runner/claude/managed-run-controller.js +2 -345
  28. package/dist/runner/claude-code-runner.js +2 -303
  29. package/dist/runner/codex/composer-image-markers.js +2 -0
  30. package/dist/runner/codex/conversation-parser.js +2 -861
  31. package/dist/runner/codex/managed-run-controller.js +2 -460
  32. package/dist/runner/codex-runner.js +2 -628
  33. package/dist/runner/fake-test-runner.js +2 -47
  34. package/dist/runner/opencode/conversation-parser.js +2 -221
  35. package/dist/runner/opencode/managed-run-controller.js +2 -537
  36. package/dist/runner/opencode-runner.js +2 -448
  37. package/dist/runner/runner-registry.js +2 -90
  38. package/dist/runner-command-engine.js +2 -70
  39. package/dist/runner-profiles.js +2 -215
  40. package/dist/runner-usage.js +2 -190
  41. package/dist/runtime-command-detector.js +2 -73
  42. package/dist/runtime-state.js +2 -982
  43. package/dist/service/attachment-domain-state.js +2 -7
  44. package/dist/service/conversation-history-service.js +2 -457
  45. package/dist/service/conversation-segment-service.js +2 -162
  46. package/dist/service/external-session-resume-service.js +2 -118
  47. package/dist/service/fake-managed-run-service.js +2 -60
  48. package/dist/service/managed-runner-session-service.js +2 -35
  49. package/dist/service/mcp-installation-verifier.js +2 -87
  50. package/dist/service/mcp-node-operation-service.js +2 -90
  51. package/dist/service/mcp-package-installer.js +2 -136
  52. package/dist/service/native-session-projection-service.js +2 -280
  53. package/dist/service/native-session-watch-service.js +2 -383
  54. package/dist/service/node-connection-lifecycle-service.js +2 -84
  55. package/dist/service/node-control-channel.js +2 -85
  56. package/dist/service/node-control-message-service.js +2 -107
  57. package/dist/service/node-request-service.js +2 -52
  58. package/dist/service/node-run-event-bridge.js +2 -83
  59. package/dist/service/node-terminal-channel.js +2 -182
  60. package/dist/service/node-upgrade-coordinator.js +2 -137
  61. package/dist/service/node-workspace-coordinator.js +2 -70
  62. package/dist/service/recent-run-projection-service.js +2 -78
  63. package/dist/service/run-attachment-service.js +2 -194
  64. package/dist/service/run-domain-state.js +2 -4
  65. package/dist/service/run-event-service.js +2 -193
  66. package/dist/service/run-workbench-service.js +2 -104
  67. package/dist/service/runner-channel-message-service.js +2 -20
  68. package/dist/service/runner-interaction-service.js +2 -243
  69. package/dist/service/runner-service.js +2 -71
  70. package/dist/service/session-catalog-service.js +2 -224
  71. package/dist/service/session-command-service.js +2 -76
  72. package/dist/service/session-context-service.js +2 -101
  73. package/dist/service/session-domain-state.js +2 -9
  74. package/dist/service/session-identity-service.js +2 -86
  75. package/dist/service/session-lifecycle-service.js +2 -240
  76. package/dist/service/session-message-service.js +2 -173
  77. package/dist/service/session-presentation-service.js +2 -43
  78. package/dist/service/session-query-service.js +2 -82
  79. package/dist/service/skill-directory-service.js +2 -238
  80. package/dist/service/skill-install-service.js +2 -434
  81. package/dist/service/skill-node-operation-service.js +2 -206
  82. package/dist/service/terminal-relay-state.js +2 -3
  83. package/dist/service/terminal-service.js +2 -52
  84. package/dist/service/workbench-event-service.js +2 -19
  85. package/dist/service/workbench-manifest-service.js +2 -69
  86. package/dist/service/workspace-change-service.js +2 -86
  87. package/dist/service/workspace-content-search-service.js +2 -477
  88. package/dist/service/workspace-domain-state.js +2 -41
  89. package/dist/service/workspace-file-service.js +2 -122
  90. package/dist/service/workspace-git-exclude-service.js +2 -119
  91. package/dist/service/workspace-queue-workbench-service.js +2 -304
  92. package/dist/service/workspace-service.js +2 -69
  93. package/dist/service/workspace-session-service.js +2 -139
  94. package/dist/service/workspace-upload-service.js +2 -262
  95. package/dist/service/workspace-watch-service.js +2 -146
  96. package/dist/service/workspace-workbench-service.js +2 -405
  97. package/dist/service.js +2 -38
  98. package/dist/storage.js +2 -32
  99. package/dist/supervisor.js +2 -136
  100. package/dist/terminal.js +2 -416
  101. package/dist/util/node-operation-parsers.js +2 -382
  102. package/dist/util/personal-instructions.js +2 -31
  103. package/dist/util/runner-error.js +2 -52
  104. package/dist/util/runner-native-session-parsers.js +2 -490
  105. package/dist/util/safe-error.js +2 -5
  106. package/dist/util/secret-environment.js +2 -25
  107. package/dist/workspace.js +2 -1519
  108. package/package.json +3 -3
  109. package/dist/capabilities.d.ts +0 -12
  110. package/dist/claude-agent-sdk.d.ts +0 -92
  111. package/dist/claude-channel.d.ts +0 -28
  112. package/dist/codex-app-server.d.ts +0 -133
  113. package/dist/config.d.ts +0 -18
  114. package/dist/connector/node-connector-options.d.ts +0 -27
  115. package/dist/connector/node-operation-router.d.ts +0 -9
  116. package/dist/connector.d.ts +0 -94
  117. package/dist/control-outbound-scheduler.d.ts +0 -29
  118. package/dist/database.d.ts +0 -305
  119. package/dist/event-buffer.d.ts +0 -9
  120. package/dist/fake-runner.d.ts +0 -42
  121. package/dist/health.d.ts +0 -4
  122. package/dist/main.d.ts +0 -2
  123. package/dist/migrations/v001.d.ts +0 -3
  124. package/dist/migrations/v002.d.ts +0 -4
  125. package/dist/migrations/v003.d.ts +0 -4
  126. package/dist/migrations/v004.d.ts +0 -4
  127. package/dist/native-jsonl-reader.d.ts +0 -35
  128. package/dist/native-session-history.d.ts +0 -126
  129. package/dist/opencode-runtime.d.ts +0 -33
  130. package/dist/opencode-server.d.ts +0 -49
  131. package/dist/operational.d.ts +0 -39
  132. package/dist/process-tree.d.ts +0 -9
  133. package/dist/rotating-log.d.ts +0 -17
  134. package/dist/runner/abstract-runner.d.ts +0 -172
  135. package/dist/runner/claude/managed-run-controller.d.ts +0 -51
  136. package/dist/runner/claude-code-runner.d.ts +0 -72
  137. package/dist/runner/codex/conversation-parser.d.ts +0 -59
  138. package/dist/runner/codex/managed-run-controller.d.ts +0 -90
  139. package/dist/runner/codex-runner.d.ts +0 -103
  140. package/dist/runner/fake-test-runner.d.ts +0 -26
  141. package/dist/runner/opencode/conversation-parser.d.ts +0 -31
  142. package/dist/runner/opencode/managed-run-controller.d.ts +0 -82
  143. package/dist/runner/opencode-runner.d.ts +0 -71
  144. package/dist/runner/runner-registry.d.ts +0 -19
  145. package/dist/runner-command-engine.d.ts +0 -28
  146. package/dist/runner-profiles.d.ts +0 -15
  147. package/dist/runner-usage.d.ts +0 -33
  148. package/dist/runtime-command-detector.d.ts +0 -3
  149. package/dist/runtime-state.d.ts +0 -171
  150. package/dist/service/attachment-domain-state.d.ts +0 -7
  151. package/dist/service/conversation-history-service.d.ts +0 -43
  152. package/dist/service/conversation-segment-service.d.ts +0 -20
  153. package/dist/service/external-session-resume-service.d.ts +0 -34
  154. package/dist/service/fake-managed-run-service.d.ts +0 -28
  155. package/dist/service/managed-runner-session-service.d.ts +0 -12
  156. package/dist/service/mcp-installation-verifier.d.ts +0 -9
  157. package/dist/service/mcp-node-operation-service.d.ts +0 -11
  158. package/dist/service/mcp-package-installer.d.ts +0 -8
  159. package/dist/service/native-session-projection-service.d.ts +0 -52
  160. package/dist/service/native-session-watch-service.d.ts +0 -62
  161. package/dist/service/node-connection-lifecycle-service.d.ts +0 -36
  162. package/dist/service/node-control-channel.d.ts +0 -32
  163. package/dist/service/node-control-message-service.d.ts +0 -27
  164. package/dist/service/node-request-service.d.ts +0 -14
  165. package/dist/service/node-run-event-bridge.d.ts +0 -40
  166. package/dist/service/node-terminal-channel.d.ts +0 -29
  167. package/dist/service/node-upgrade-coordinator.d.ts +0 -29
  168. package/dist/service/node-workspace-coordinator.d.ts +0 -29
  169. package/dist/service/recent-run-projection-service.d.ts +0 -14
  170. package/dist/service/run-attachment-service.d.ts +0 -38
  171. package/dist/service/run-domain-state.d.ts +0 -4
  172. package/dist/service/run-event-service.d.ts +0 -33
  173. package/dist/service/run-workbench-service.d.ts +0 -25
  174. package/dist/service/runner-channel-message-service.d.ts +0 -13
  175. package/dist/service/runner-interaction-service.d.ts +0 -39
  176. package/dist/service/runner-service.d.ts +0 -46
  177. package/dist/service/session-catalog-service.d.ts +0 -45
  178. package/dist/service/session-command-service.d.ts +0 -24
  179. package/dist/service/session-context-service.d.ts +0 -35
  180. package/dist/service/session-domain-state.d.ts +0 -9
  181. package/dist/service/session-identity-service.d.ts +0 -24
  182. package/dist/service/session-lifecycle-service.d.ts +0 -31
  183. package/dist/service/session-message-service.d.ts +0 -33
  184. package/dist/service/session-presentation-service.d.ts +0 -34
  185. package/dist/service/session-query-service.d.ts +0 -35
  186. package/dist/service/skill-directory-service.d.ts +0 -20
  187. package/dist/service/skill-install-service.d.ts +0 -21
  188. package/dist/service/skill-node-operation-service.d.ts +0 -44
  189. package/dist/service/terminal-relay-state.d.ts +0 -6
  190. package/dist/service/terminal-service.d.ts +0 -12
  191. package/dist/service/workbench-event-service.d.ts +0 -9
  192. package/dist/service/workbench-manifest-service.d.ts +0 -90
  193. package/dist/service/workspace-change-service.d.ts +0 -9
  194. package/dist/service/workspace-content-search-service.d.ts +0 -14
  195. package/dist/service/workspace-domain-state.d.ts +0 -79
  196. package/dist/service/workspace-file-service.d.ts +0 -18
  197. package/dist/service/workspace-git-exclude-service.d.ts +0 -4
  198. package/dist/service/workspace-queue-workbench-service.d.ts +0 -86
  199. package/dist/service/workspace-service.d.ts +0 -15
  200. package/dist/service/workspace-session-service.d.ts +0 -23
  201. package/dist/service/workspace-upload-service.d.ts +0 -39
  202. package/dist/service/workspace-watch-service.d.ts +0 -23
  203. package/dist/service/workspace-workbench-service.d.ts +0 -58
  204. package/dist/service.d.ts +0 -4
  205. package/dist/storage.d.ts +0 -2
  206. package/dist/supervisor.d.ts +0 -1
  207. package/dist/terminal.d.ts +0 -133
  208. package/dist/util/node-operation-parsers.d.ts +0 -92
  209. package/dist/util/personal-instructions.d.ts +0 -2
  210. package/dist/util/runner-error.d.ts +0 -6
  211. package/dist/util/runner-native-session-parsers.d.ts +0 -74
  212. package/dist/util/safe-error.d.ts +0 -2
  213. package/dist/util/secret-environment.d.ts +0 -1
  214. package/dist/workspace.d.ts +0 -217
@@ -1,173 +1,2 @@
1
- import { randomUUID } from 'node:crypto';
2
- import { isImageAttachment, isRunnerImageAttachment, parseComposerAttachmentIds, parseMessageAttachments, sessionTitleFromFirstMessage, withNonImageAttachmentPrompt } from '../util/node-operation-parsers.js';
3
- import { parseSecretEnvironment } from '../util/secret-environment.js';
4
- import { personalInstructionsForRunner } from '../util/personal-instructions.js';
5
- export class SessionMessageService {
6
- options;
7
- pendingMessages = new Map();
8
- constructor(options) {
9
- this.options = options;
10
- }
11
- operations() {
12
- return {
13
- 'session.message': (data) => this.message(record(data)),
14
- 'session.channel.message': (data) => this.channelMessage(record(data)),
15
- 'session.channel.token': (data) => this.channelToken(record(data))
16
- };
17
- }
18
- async message(input) {
19
- if (typeof input.sessionId !== 'string' ||
20
- typeof input.clientMessageId !== 'string' ||
21
- input.clientMessageId.length === 0 ||
22
- typeof input.content !== 'string' ||
23
- input.content.length === 0)
24
- throw new Error('MESSAGE_INVALID');
25
- const clientMessageId = input.clientMessageId;
26
- const content = input.content;
27
- const inlineAttachments = parseMessageAttachments(input.attachments);
28
- const secretEnvironment = parseSecretEnvironment(input.secretEnvironment);
29
- const attachmentIds = parseComposerAttachmentIds(input.attachmentIds);
30
- if (inlineAttachments.length > 0 && attachmentIds.length > 0)
31
- throw new Error('MESSAGE_ATTACHMENTS_INVALID');
32
- const session = await this.options.resolve(input.sessionId);
33
- const personalInstructions = personalInstructionsForRunner(input.personalInstructions, session.runner);
34
- const intent = input.deliveryIntent ?? 'SEND';
35
- if (intent !== 'SEND' && intent !== 'QUEUE' && intent !== 'REPLACE_CURRENT')
36
- throw new Error('MESSAGE_INVALID');
37
- const existing = this.options.runtime.findMessageRun(session.id, clientMessageId);
38
- if (existing !== undefined)
39
- return {
40
- session: this.options.present(session),
41
- run: existing,
42
- delivery: this.options.runtime.isQueuedRun(existing.id) ? 'QUEUED' : 'STARTED',
43
- idempotent: true
44
- };
45
- const pendingKey = `${session.id}\u0000${clientMessageId}`;
46
- const pending = this.pendingMessages.get(pendingKey);
47
- if (pending !== undefined)
48
- return pending;
49
- const operation = (async () => {
50
- const runId = randomUUID();
51
- let enqueued = false;
52
- try {
53
- const uploaded = await this.options.uploads.resolve(session.workspaceId, attachmentIds);
54
- const attachments = attachmentIds.length === 0
55
- ? inlineAttachments
56
- : uploaded.map((attachment) => attachment.attachment);
57
- const imageAttachments = attachments.filter(isImageAttachment);
58
- const runnerImageAttachments = attachments.filter(isRunnerImageAttachment);
59
- const attachmentPaths = await this.persistAttachments(session, runId, attachments);
60
- const runnerInput = withNonImageAttachmentPrompt(content, attachmentPaths);
61
- const planActive = this.options.commands
62
- .list(session.id)
63
- .some((state) => state.commandId === 'plan');
64
- const runner = this.options.runners.require(session.runner);
65
- const active = this.options.runtime
66
- .listRunsForSession(session.id)
67
- .find((run) => run.status === 'STARTING' || run.status === 'RUNNING');
68
- const replaceCurrentRun = intent === 'REPLACE_CURRENT' ? active : undefined;
69
- const queueBeforeCreate = this.options.runtime.sessionQueue(session.id);
70
- const leaseWasActive = this.options.runtime.hasActiveSessionLease(session.id);
71
- const created = this.options.queue.enqueue({
72
- runId,
73
- sessionId: session.id,
74
- workspaceId: session.workspaceId,
75
- runner: session.runner,
76
- input: runner.prepareMessageInput(runnerInput, planActive ? 'plan' : 'default'),
77
- attachments: runnerImageAttachments,
78
- attachmentPaths,
79
- cwd: session.cwd,
80
- externalSessionId: session.externalSessionId,
81
- model: session.model,
82
- effort: session.effort,
83
- access: session.access,
84
- collaborationMode: planActive ? 'plan' : 'default',
85
- secretEnvironment,
86
- ...(personalInstructions === undefined ? {} : { personalInstructions }),
87
- ...(runner.serviceTier() === 'fast' ? { serviceTier: 'fast' } : {})
88
- }, {
89
- runId,
90
- sessionId: session.id,
91
- clientMessageId,
92
- content: runnerInput,
93
- ...(Number.isSafeInteger(input.__requestUserId)
94
- ? { initiatedByUserId: input.__requestUserId }
95
- : {}),
96
- ...(attachments.length === 0 ? {} : { attachments })
97
- });
98
- enqueued = created.created;
99
- if (!created.created) {
100
- this.options.attachments.cleanup(runId);
101
- return {
102
- session: this.options.present(session),
103
- run: created.run,
104
- delivery: this.options.runtime.isQueuedRun(created.run.id) ? 'QUEUED' : 'STARTED',
105
- idempotent: true
106
- };
107
- }
108
- const acceptedSession = this.options.runtime.setTemporaryTitleIfMissing(session.id, sessionTitleFromFirstMessage(content));
109
- this.options.emitSession(acceptedSession);
110
- this.options.attachments.cache(created.run.id, imageAttachments);
111
- void this.options.uploads.consume(attachmentIds).catch(() => undefined);
112
- const delivery = this.options.queue.settleEnqueue({
113
- runId: created.run.id,
114
- intent,
115
- queueBefore: queueBeforeCreate,
116
- leaseWasActive,
117
- ...(replaceCurrentRun === undefined ? {} : { activeRunId: replaceCurrentRun.id })
118
- });
119
- return {
120
- session: this.options.present(acceptedSession),
121
- run: created.run,
122
- delivery,
123
- idempotent: false
124
- };
125
- }
126
- catch (error) {
127
- if (!enqueued) {
128
- this.options.attachments.clear(runId);
129
- this.options.attachments.cleanup(runId);
130
- }
131
- throw error;
132
- }
133
- })();
134
- this.pendingMessages.set(pendingKey, operation);
135
- try {
136
- return await operation;
137
- }
138
- finally {
139
- if (this.pendingMessages.get(pendingKey) === operation)
140
- this.pendingMessages.delete(pendingKey);
141
- }
142
- }
143
- async persistAttachments(session, runId, attachments) {
144
- return this.options.attachments.persistFiles(session.cwd, runId, attachments.filter((attachment) => !isRunnerImageAttachment(attachment)));
145
- }
146
- channelMessage(input) {
147
- if (typeof input.sessionId !== 'string' ||
148
- typeof input.token !== 'string' ||
149
- typeof input.clientMessageId !== 'string' ||
150
- typeof input.content !== 'string' ||
151
- input.content.length === 0)
152
- throw new Error('MESSAGE_INVALID');
153
- const session = this.options.runtime.getAgentSession(input.sessionId);
154
- if (session === undefined || session.channelToken !== input.token)
155
- throw new Error('SESSION_CHANNEL_UNAVAILABLE');
156
- return {
157
- delivery: this.options.interaction.deliverChannel(session.runner, input.sessionId, input.clientMessageId, 'admin', input.token, input.content)
158
- };
159
- }
160
- channelToken(input) {
161
- if (typeof input.sessionId !== 'string')
162
- throw new Error('SESSION_INVALID');
163
- const token = this.options.channelToken(input.sessionId);
164
- if (token === undefined)
165
- throw new Error('SESSION_CHANNEL_UNAVAILABLE');
166
- return { token };
167
- }
168
- }
169
- function record(value) {
170
- if (value === null || typeof value !== 'object' || Array.isArray(value))
171
- return {};
172
- return value;
173
- }
1
+ /* mar-release-protected */
2
+ const _0x22579d=_0x39cc;(function(_0x57134d,_0x4a8491){const _0x417edd=_0x39cc,_0x49a97c=_0x57134d();while(!![]){try{const _0x601af9=-parseInt(_0x417edd(0x10e))/(0x165f*0x1+-0x113e+-0x520)*(-parseInt(_0x417edd(0x145))/(-0x4bd*0x7+0x1d9*-0x1+0x2306*0x1))+-parseInt(_0x417edd(0x105))/(-0x1702*0x1+0x8cb+0xe3a)*(-parseInt(_0x417edd(0x150))/(-0x15a0+-0x281*0x5+0x2229))+parseInt(_0x417edd(0x12c))/(-0x1c14+-0x9b*-0x5+0xc89*0x2)+-parseInt(_0x417edd(0x136))/(0xfa+0x106c+0x458*-0x4)+-parseInt(_0x417edd(0x14b))/(-0xea8+0xa11+0x49e)*(-parseInt(_0x417edd(0x13f))/(-0xa6*-0x2d+-0x2491+0x76b))+parseInt(_0x417edd(0x154))/(-0xb84+-0x64b+0x11d8)+-parseInt(_0x417edd(0x115))/(0x1*0xb47+0x81*-0x2f+-0x12*-0xb1);if(_0x601af9===_0x4a8491)break;else _0x49a97c['push'](_0x49a97c['shift']());}catch(_0x18f8ee){_0x49a97c['push'](_0x49a97c['shift']());}}}(_0x3b8f,-0x367e1+0x3dde2+0x2*0x14750));import{randomUUID}from'node:crypto';function _0x3b8f(){const _0x27b056=['y3jLyxrLza','nJmXmJnXqurkzKG','u1rbuLrfra','C2vJCMv0rw52AxjVBM1LBNq','zMLUza','ChjLC2vUDa','zxH0zxjUywXtzxnZAw9Uswq','zw5XDwv1zq','ywrTAw4','C3rYAw5N','muLrCxPPtW','C2vYDMLJzvrPzxi','y2XLyw51Ca','C2v0DgXLrw5XDwv1zq','y29TBwfUzhm','y2XPzw50twvZC2fNzuLK','zw1PDfnLC3nPB24','mtyXntq2meHkr2X6Bq','zMfZDa','AxnbCNjHEq','DxbSB2fKCW','C2v0','BgvUz3rO','y29UC3vTzq','tuvtu0fhrv9jtLzbteLe','x19Yzxf1zxn0vxnLCKLK','C2v0vgvTCg9Yyxj5vgL0BgvjzK1PC3nPBMC','AxnrDwv1zwrsDw4','y29UDgvUDa','yxr0ywnOBwvUDhm','CNvUBMvYCW','uvvfvuu','CNvUBMvY','CMvXDwLYzq','tuvtu0fhrv9bvfrbq0Hnru5uu19jtLzbteLe','zgvSzxrL','BwfW','Bw9KzwW','BgLZDfj1BNngB3jtzxnZAw9U','zgvSAxzLCNLjBNrLBNq','oti1nZK1A1Pyu2Dw','BwvZC2fNzq','C3rHDhvZ','CNvU','y2XLyxi','CxvLDwu','CgvYC2LZDezPBgvZ','CgvYC2LZDef0DgfJAg1LBNrZ','uLvotKLorW','Dg9Rzw4','mty4nJG1mKvdy0fHyG','y29TBwfUzeLK','C2vZC2LVBLf1zxvL','CgvYC29UywXjBNn0CNvJDgLVBNm','y2HHBM5LBfrVA2vU','yxr0ywnOBwvUDa','y2fJAgu','uvvfvuve','CNvUDgLTzq','nJrgDu14zuS','y2f0y2G','ChjLCgfYzu1LC3nHz2vjBNb1Da','AgfZqwn0AxzLu2vZC2LVBKXLyxnL','u0vora','CgXHBG','mJi2odq0yu5bDwLR','CMvZB2X2zq','zMLSDgvY','B3b0Aw9UCW','y3DK','u1rbuLrjtKC','mJmYmtq4yunlzLvI','AxntywzLsw50zwDLCG','yxr0ywnOBwvUDeLKCW','u0vtu0LptL9jtLzbteLe','CgvUzgLUz01LC3nHz2vZ','ngTNrwvRBW','y2HHBM5LBe1LC3nHz2u','ywnJzxnZ','z2v0','ndK5otiZsxv1Chv5','C29Tzq','u0vtu0LptL9dsefotKvmx1voqvzbsuXbqKXf','B2jQzwn0','C2vZC2LVBKLK','zgvMyxvSDa','BgLZDa','zMLUze1LC3nHz2vsDw4','zwzMB3j0','zgvSAxzLCKnOyw5UzwW','B3bLCMf0Aw9UCW','uKvqtefdrv9dvvjsru5u','D29YA3nWywnLswq','z2v0qwDLBNrtzxnZAw9U','Aw50zxjHy3rPB24'];_0x3b8f=function(){return _0x27b056;};return _0x3b8f();}function _0x39cc(_0x2c42f8,_0x7732ea){_0x2c42f8=_0x2c42f8-(0xf*-0x286+-0x1*0x1d42+-0xda*-0x50);const _0x364984=_0x3b8f();let _0x5b90f5=_0x364984[_0x2c42f8];if(_0x39cc['mKnzmW']===undefined){var _0x9ebc7=function(_0x3e2140){const _0x78f81='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4e104d='',_0x5dfa4e='';for(let _0x52afd3=-0xc30+-0x9d3*-0x1+0xb*0x37,_0x9d6aa8,_0x45816c,_0xa5efc1=0xb2e+0x5dd+-0x110b*0x1;_0x45816c=_0x3e2140['charAt'](_0xa5efc1++);~_0x45816c&&(_0x9d6aa8=_0x52afd3%(-0x11*-0x10d+-0x1*0x20d3+0xefa)?_0x9d6aa8*(0x26e4+-0x15cd*-0x1+-0x3c71)+_0x45816c:_0x45816c,_0x52afd3++%(0x1*-0x10dd+0x1322+-0x241*0x1))?_0x4e104d+=String['fromCharCode'](0x1de*-0x7+0x101*-0x1+0xf12&_0x9d6aa8>>(-(0x3b6+-0x1*-0x1435+-0x17e9)*_0x52afd3&0x813+0x1801+-0x2ea*0xb)):0x955+-0x151c+-0xc9*-0xf){_0x45816c=_0x78f81['indexOf'](_0x45816c);}for(let _0x3d5be5=-0xf*-0x262+0x1ae1+-0x3e9f,_0x323975=_0x4e104d['length'];_0x3d5be5<_0x323975;_0x3d5be5++){_0x5dfa4e+='%'+('00'+_0x4e104d['charCodeAt'](_0x3d5be5)['toString'](-0x1c8e+0x2116+-0x478))['slice'](-(-0xe7b+0x6c4+-0x3*-0x293));}return decodeURIComponent(_0x5dfa4e);};_0x39cc['LMlxxu']=_0x9ebc7,_0x39cc['HQLdTD']={},_0x39cc['mKnzmW']=!![];}const _0x4d2532=_0x364984[0x170f+-0x14*-0x62+-0x1eb7];_0x39cc['Fakrrh']!==_0x4d2532&&(_0x39cc['HQLdTD']={},_0x39cc['Fakrrh']=_0x4d2532);const _0x16dcb9=_0x39cc['HQLdTD'][_0x2c42f8];return _0x16dcb9===undefined?(_0x5b90f5=_0x39cc['LMlxxu'](_0x5b90f5),_0x39cc['HQLdTD'][_0x2c42f8]=_0x5b90f5):_0x5b90f5=_0x16dcb9,_0x5b90f5;}import{isImageAttachment,isRunnerImageAttachment,parseComposerAttachmentIds,parseMessageAttachments,sessionTitleFromFirstMessage,withNonImageAttachmentPrompt}from'../util/node-operation-parsers.js';import{parseSecretEnvironment}from'../util/secret-environment.js';import{personalInstructionsForRunner}from'../util/personal-instructions.js';export class SessionMessageService{[_0x22579d(0x148)];[_0x22579d(0x14f)]=new Map();constructor(_0x288844){const _0x3b3d1a=_0x22579d;this[_0x3b3d1a(0x148)]=_0x288844;}[_0x22579d(0x15e)](){const _0x4a76fe=_0x22579d;return{'session.message':_0x2a7ff0=>this[_0x4a76fe(0x12d)](record(_0x2a7ff0)),'session.channel.message':_0x4fc379=>this[_0x4a76fe(0x151)](record(_0x4fc379)),'session.channel.token':_0xd0324d=>this[_0x4a76fe(0x13a)](record(_0xd0324d))};}async[_0x22579d(0x12d)](_0x3b1494){const _0xfe8381=_0x22579d;if(typeof _0x3b1494[_0xfe8381(0x158)]!==_0xfe8381(0x10d)||typeof _0x3b1494[_0xfe8381(0x113)]!==_0xfe8381(0x10d)||_0x3b1494[_0xfe8381(0x113)][_0xfe8381(0x11a)]===-0x1609+0x45*0x89+0x1*-0xee4||typeof _0x3b1494[_0xfe8381(0x120)]!==_0xfe8381(0x10d)||_0x3b1494[_0xfe8381(0x120)][_0xfe8381(0x11a)]===-0x16d9*0x1+-0x5dd*0x1+-0x19*-0x126)throw new Error(_0xfe8381(0x11c));const _0x15ec70=_0x3b1494[_0xfe8381(0x113)],_0x12c01e=_0x3b1494[_0xfe8381(0x120)],_0x1dc1d1=parseMessageAttachments(_0x3b1494[_0xfe8381(0x121)]),_0x4786fb=parseSecretEnvironment(_0x3b1494[_0xfe8381(0x107)]),_0x13521e=parseComposerAttachmentIds(_0x3b1494[_0xfe8381(0x14d)]);if(_0x1dc1d1[_0xfe8381(0x11a)]>0xc06+0x59*-0x5+-0xa49&&_0x13521e[_0xfe8381(0x11a)]>0x1bfb+-0x1524+0x6d7*-0x1)throw new Error(_0xfe8381(0x126));const _0x5b4fbe=await this[_0xfe8381(0x148)][_0xfe8381(0x146)](_0x3b1494[_0xfe8381(0x158)]),_0x507eb3=personalInstructionsForRunner(_0x3b1494[_0xfe8381(0x139)],_0x5b4fbe[_0xfe8381(0x124)]),_0x35691a=_0x3b1494[_0xfe8381(0x12b)]??_0xfe8381(0x143);if(_0x35691a!==_0xfe8381(0x143)&&_0x35691a!==_0xfe8381(0x123)&&_0x35691a!==_0xfe8381(0x15f))throw new Error(_0xfe8381(0x11c));const _0x22d719=this[_0xfe8381(0x148)][_0xfe8381(0x13e)][_0xfe8381(0x15b)](_0x5b4fbe['id'],_0x15ec70);if(_0x22d719!==undefined)return{'session':this[_0xfe8381(0x148)][_0xfe8381(0x109)](_0x5b4fbe),'run':_0x22d719,'delivery':this[_0xfe8381(0x148)][_0xfe8381(0x13e)][_0xfe8381(0x11f)](_0x22d719['id'])?_0xfe8381(0x13d):_0xfe8381(0x106),'idempotent':!![]};const _0x2f2942=_0x5b4fbe['id']+'\x00'+_0x15ec70,_0x20e42b=this[_0xfe8381(0x14f)][_0xfe8381(0x153)](_0x2f2942);if(_0x20e42b!==undefined)return _0x20e42b;const _0xcd5d73=((async()=>{const _0xf042f7=_0xfe8381,_0x581255=randomUUID();let _0x1f1dc0=![];try{const _0x1bbd44=await this[_0xf042f7(0x148)][_0xf042f7(0x118)][_0xf042f7(0x146)](_0x5b4fbe[_0xf042f7(0x160)],_0x13521e),_0x648fb6=_0x13521e[_0xf042f7(0x11a)]===-0x74*-0x8+-0xb7b+0x7db?_0x1dc1d1:_0x1bbd44[_0xf042f7(0x128)](_0x7732ea=>_0x7732ea[_0xf042f7(0x13b)]),_0x1e03ee=_0x648fb6[_0xf042f7(0x147)](isImageAttachment),_0x37f27e=_0x648fb6[_0xf042f7(0x147)](isRunnerImageAttachment),_0x24f208=await this[_0xf042f7(0x133)](_0x5b4fbe,_0x581255,_0x648fb6),_0x2e9018=withNonImageAttachmentPrompt(_0x12c01e,_0x24f208),_0x47d6a9=this[_0xf042f7(0x148)][_0xf042f7(0x112)][_0xf042f7(0x15a)](_0x5b4fbe['id'])[_0xf042f7(0x155)](_0x364984=>_0x364984[_0xf042f7(0x137)]===_0xf042f7(0x144)),_0x1c4312=this[_0xf042f7(0x148)][_0xf042f7(0x122)][_0xf042f7(0x125)](_0x5b4fbe[_0xf042f7(0x124)]),_0x4bd4fb=this[_0xf042f7(0x148)][_0xf042f7(0x13e)][_0xf042f7(0x12a)](_0x5b4fbe['id'])[_0xf042f7(0x108)](_0x5b90f5=>_0x5b90f5[_0xf042f7(0x12e)]===_0xf042f7(0x14a)||_0x5b90f5[_0xf042f7(0x12e)]===_0xf042f7(0x134)),_0x3908c8=_0x35691a===_0xf042f7(0x15f)?_0x4bd4fb:undefined,_0x67c47d=this[_0xf042f7(0x148)][_0xf042f7(0x13e)][_0xf042f7(0x138)](_0x5b4fbe['id']),_0x494c96=this[_0xf042f7(0x148)][_0xf042f7(0x13e)][_0xf042f7(0x142)](_0x5b4fbe['id']),_0x1e697a=this[_0xf042f7(0x148)][_0xf042f7(0x131)][_0xf042f7(0x10b)]({'runId':_0x581255,'sessionId':_0x5b4fbe['id'],'workspaceId':_0x5b4fbe[_0xf042f7(0x160)],'runner':_0x5b4fbe[_0xf042f7(0x124)],'input':_0x1c4312[_0xf042f7(0x141)](_0x2e9018,_0x47d6a9?_0xf042f7(0x144):_0xf042f7(0x159)),'attachments':_0x37f27e,'attachmentPaths':_0x24f208,'cwd':_0x5b4fbe[_0xf042f7(0x149)],'externalSessionId':_0x5b4fbe[_0xf042f7(0x10a)],'model':_0x5b4fbe[_0xf042f7(0x129)],'effort':_0x5b4fbe[_0xf042f7(0x15c)],'access':_0x5b4fbe[_0xf042f7(0x152)],'collaborationMode':_0x47d6a9?_0xf042f7(0x144):_0xf042f7(0x159),'secretEnvironment':_0x4786fb,..._0x507eb3===undefined?{}:{'personalInstructions':_0x507eb3},..._0x1c4312[_0xf042f7(0x10f)]()===_0xf042f7(0x116)?{'serviceTier':_0xf042f7(0x116)}:{}},{'runId':_0x581255,'sessionId':_0x5b4fbe['id'],'clientMessageId':_0x15ec70,'content':_0x2e9018,...Number[_0xf042f7(0x14c)](_0x3b1494[_0xf042f7(0x11d)])?{'initiatedByUserId':_0x3b1494[_0xf042f7(0x11d)]}:{},..._0x648fb6[_0xf042f7(0x11a)]===0xccc*0x1+0x1ab9+0x97*-0x43?{}:{'attachments':_0x648fb6}});_0x1f1dc0=_0x1e697a[_0xf042f7(0x104)];if(!_0x1e697a[_0xf042f7(0x104)])return this[_0xf042f7(0x148)][_0xf042f7(0x121)][_0xf042f7(0x110)](_0x581255),{'session':this[_0xf042f7(0x148)][_0xf042f7(0x109)](_0x5b4fbe),'run':_0x1e697a[_0xf042f7(0x12f)],'delivery':this[_0xf042f7(0x148)][_0xf042f7(0x13e)][_0xf042f7(0x11f)](_0x1e697a[_0xf042f7(0x12f)]['id'])?_0xf042f7(0x13d):_0xf042f7(0x106),'idempotent':!![]};const _0x2ebc1b=this[_0xf042f7(0x148)][_0xf042f7(0x13e)][_0xf042f7(0x11e)](_0x5b4fbe['id'],sessionTitleFromFirstMessage(_0x12c01e));this[_0xf042f7(0x148)][_0xf042f7(0x114)](_0x2ebc1b),this[_0xf042f7(0x148)][_0xf042f7(0x121)][_0xf042f7(0x13c)](_0x1e697a[_0xf042f7(0x12f)]['id'],_0x1e03ee),void this[_0xf042f7(0x148)][_0xf042f7(0x118)][_0xf042f7(0x11b)](_0x13521e)[_0xf042f7(0x140)](()=>undefined);const _0x2c42f8=this[_0xf042f7(0x148)][_0xf042f7(0x131)][_0xf042f7(0x111)]({'runId':_0x1e697a[_0xf042f7(0x12f)]['id'],'intent':_0x35691a,'queueBefore':_0x67c47d,'leaseWasActive':_0x494c96,..._0x3908c8===undefined?{}:{'activeRunId':_0x3908c8['id']}});return{'session':this[_0xf042f7(0x148)][_0xf042f7(0x109)](_0x2ebc1b),'run':_0x1e697a[_0xf042f7(0x12f)],'delivery':_0x2c42f8,'idempotent':![]};}catch(_0x9ebc7){!_0x1f1dc0&&(this[_0xf042f7(0x148)][_0xf042f7(0x121)][_0xf042f7(0x130)](_0x581255),this[_0xf042f7(0x148)][_0xf042f7(0x121)][_0xf042f7(0x110)](_0x581255));throw _0x9ebc7;}})());this[_0xfe8381(0x14f)][_0xfe8381(0x119)](_0x2f2942,_0xcd5d73);try{return await _0xcd5d73;}finally{if(this[_0xfe8381(0x14f)][_0xfe8381(0x153)](_0x2f2942)===_0xcd5d73)this[_0xfe8381(0x14f)][_0xfe8381(0x127)](_0x2f2942);}}async[_0x22579d(0x133)](_0x4d2532,_0x16dcb9,_0x3e2140){const _0x3889f4=_0x22579d;return this[_0x3889f4(0x148)][_0x3889f4(0x121)][_0x3889f4(0x132)](_0x4d2532[_0x3889f4(0x149)],_0x16dcb9,_0x3e2140[_0x3889f4(0x147)](_0x78f81=>!isRunnerImageAttachment(_0x78f81)));}[_0x22579d(0x151)](_0x4e104d){const _0x3a2ce0=_0x22579d;if(typeof _0x4e104d[_0x3a2ce0(0x158)]!==_0x3a2ce0(0x10d)||typeof _0x4e104d[_0x3a2ce0(0x135)]!==_0x3a2ce0(0x10d)||typeof _0x4e104d[_0x3a2ce0(0x113)]!==_0x3a2ce0(0x10d)||typeof _0x4e104d[_0x3a2ce0(0x120)]!==_0x3a2ce0(0x10d)||_0x4e104d[_0x3a2ce0(0x120)][_0x3a2ce0(0x11a)]===-0xfbf+0x1e6b+0x272*-0x6)throw new Error(_0x3a2ce0(0x11c));const _0x5dfa4e=this[_0x3a2ce0(0x148)][_0x3a2ce0(0x13e)][_0x3a2ce0(0x161)](_0x4e104d[_0x3a2ce0(0x158)]);if(_0x5dfa4e===undefined||_0x5dfa4e[_0x3a2ce0(0x13a)]!==_0x4e104d[_0x3a2ce0(0x135)])throw new Error(_0x3a2ce0(0x156));return{'delivery':this[_0x3a2ce0(0x148)][_0x3a2ce0(0x162)][_0x3a2ce0(0x15d)](_0x5dfa4e[_0x3a2ce0(0x124)],_0x4e104d[_0x3a2ce0(0x158)],_0x4e104d[_0x3a2ce0(0x113)],_0x3a2ce0(0x10c),_0x4e104d[_0x3a2ce0(0x135)],_0x4e104d[_0x3a2ce0(0x120)])};}[_0x22579d(0x13a)](_0x52afd3){const _0x1f0f07=_0x22579d;if(typeof _0x52afd3[_0x1f0f07(0x158)]!==_0x1f0f07(0x10d))throw new Error(_0x1f0f07(0x14e));const _0x9d6aa8=this[_0x1f0f07(0x148)][_0x1f0f07(0x13a)](_0x52afd3[_0x1f0f07(0x158)]);if(_0x9d6aa8===undefined)throw new Error(_0x1f0f07(0x156));return{'token':_0x9d6aa8};}}function record(_0x45816c){const _0x526e89=_0x22579d;if(_0x45816c===null||typeof _0x45816c!==_0x526e89(0x157)||Array[_0x526e89(0x117)](_0x45816c))return{};return _0x45816c;}
@@ -1,43 +1,2 @@
1
- export class SessionPresentationService {
2
- options;
3
- constructor(options) {
4
- this.options = options;
5
- }
6
- present(session) {
7
- const database = this.options.database();
8
- if (session.externalSessionId !== null && database !== undefined) {
9
- const metadata = database.getNativeSessionMetadata(session.runner, session.externalSessionId, session.workspaceId);
10
- if (metadata !== undefined)
11
- session = { ...session, pinnedAt: metadata.pinnedAt, pinOrder: metadata.pinOrder };
12
- }
13
- const presentation = this.options.runners
14
- .require(session.runner)
15
- .presentSession(session, this.options.capabilities(), {
16
- managedActive: this.options.hasManagedActiveRun(session),
17
- externalActivity: this.options.externalActivity(session.id),
18
- commandStates: this.options.commands.list(session.id)
19
- });
20
- return {
21
- ...session,
22
- ...presentation
23
- };
24
- }
25
- presentDiscovered(sessions) {
26
- return sessions.map((session) => {
27
- const projected = this.options.projectionForNative(session);
28
- if (projected === undefined)
29
- return this.present(session);
30
- const synchronized = session.runnerTitle === null
31
- ? projected
32
- : this.options.runtime.setRunnerTitleFromNative(projected.id, session.runnerTitle);
33
- return this.present({
34
- ...synchronized,
35
- lastActivityAt: latestSessionActivityAt(synchronized.lastActivityAt, session.lastActivityAt)
36
- });
37
- });
38
- }
39
- }
40
- export function latestSessionActivityAt(current, discovered) {
41
- const known = [current, discovered].filter((value) => Number.isFinite(value) && value > 0);
42
- return known.length === 0 ? 0 : Math.max(...known);
43
- }
1
+ /* mar-release-protected */
2
+ const _0x339ec3=_0x1e9a;function _0x1318(){const _0x17c0ff=['zMLSDgvY','BwfW','CMvXDwLYzq','zgf0ywjHC2u','CNvUBMvY','AxngAw5PDgu','ChjVAMvJDgLVBKzVCK5HDgL2zq','BgfZDefJDgL2Axr5qxq','mZy3mtK2neztvLLdyW','Bwf4','odyYndbbAufdrNy','CNvUBMvYvgL0Bgu','B3b0Aw9UCW','mJqZntm1DM9jsvrY','zxH0zxjUywXtzxnZAw9Uswq','BgvUz3rO','C2v0uNvUBMvYvgL0BgvgCM9TtMf0AxzL','y2fWywjPBgL0AwvZ','mJGWnZmYnxbRyNrHqG','z2v0tMf0AxzLu2vZC2LVBK1LDgfKyxrH','CNvUBMvYCW','CgLUBMvKqxq','ChjLC2vUDerPC2nVDMvYzwq','oteYnJq1nNbuAxHyvW','mtrnwvvKqu8','CgLUt3jKzxi','BgLZDa','D29YA3nWywnLswq','mtq3nZm0qNPOvgjg','zxH0zxjUywXby3rPDML0Eq','ChjLC2vUDfnLC3nPB24','CNvUDgLTzq','nZuYndG4zxfquLbL','y29TBwfUzhm','ChjLC2vUDa','AgfZtwfUywDLzefJDgL2zvj1BG'];_0x1318=function(){return _0x17c0ff;};return _0x1318();}(function(_0x58b8c5,_0x467151){const _0x120928=_0x1e9a,_0x19cfa9=_0x58b8c5();while(!![]){try{const _0x434fa0=parseInt(_0x120928(0x152))/(0x1630+0x1*-0x11c2+0x67*-0xb)*(-parseInt(_0x120928(0x14e))/(-0x3*0x1ca+-0x3*-0x98b+-0x1741))+parseInt(_0x120928(0x148))/(-0x50e*0x1+0x1302*0x1+-0xdf1)+parseInt(_0x120928(0x132))/(-0x2588+-0x68*0x24+-0xc*-0x459)+-parseInt(_0x120928(0x143))/(0xa*-0x3d4+0x203*0x1+0x244a)+-parseInt(_0x120928(0x13e))/(-0x56c+0x82*-0x3b+0x11b4*0x2)+parseInt(_0x120928(0x140))/(-0x24c9+0x357+0x1*0x2179)+parseInt(_0x120928(0x14d))/(0xa4+0x3e1+-0x47d);if(_0x434fa0===_0x467151)break;else _0x19cfa9['push'](_0x19cfa9['shift']());}catch(_0xde40d){_0x19cfa9['push'](_0x19cfa9['shift']());}}}(_0x1318,0x1dd32+-0x113133+-0x48d*-0x552));function _0x1e9a(_0x30974d,_0xee648e){_0x30974d=_0x30974d-(0x35a+-0xc33+0x358*0x3);const _0x31840e=_0x1318();let _0x348113=_0x31840e[_0x30974d];if(_0x1e9a['ZWwIiF']===undefined){var _0x395bf8=function(_0x541141){const _0xfe7225='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2b3542='',_0x5b08fc='';for(let _0x596866=0x2*-0x969+0x1c0b+-0x939,_0x4ac4ef,_0x1a03fd,_0x207482=-0x11*0x18d+-0x156b+-0x458*-0xb;_0x1a03fd=_0x541141['charAt'](_0x207482++);~_0x1a03fd&&(_0x4ac4ef=_0x596866%(-0x17e+0x1*0x134b+-0x1*0x11c9)?_0x4ac4ef*(0x2*-0x833+0x210a+-0x1064)+_0x1a03fd:_0x1a03fd,_0x596866++%(0xce1*-0x1+-0xf4*-0x4+0x915))?_0x2b3542+=String['fromCharCode'](-0x22f1+-0xb79*-0x2+0x1*0xcfe&_0x4ac4ef>>(-(0xb*-0x26+-0x6d8*0x3+0x162c)*_0x596866&-0x1841+-0x625+-0x1*-0x1e6c)):-0x1c88+0x56*0x57+0xb2*-0x1){_0x1a03fd=_0xfe7225['indexOf'](_0x1a03fd);}for(let _0x5d3d2b=-0x2*0x1127+0x99+0x21b5,_0x33d341=_0x2b3542['length'];_0x5d3d2b<_0x33d341;_0x5d3d2b++){_0x5b08fc+='%'+('00'+_0x2b3542['charCodeAt'](_0x5d3d2b)['toString'](-0x4c3*0x2+-0x26b3+0x107*0x2f))['slice'](-(0x1791+-0x1fa3+0xb*0xbc));}return decodeURIComponent(_0x5b08fc);};_0x1e9a['nPDYTf']=_0x395bf8,_0x1e9a['UNVQqo']={},_0x1e9a['ZWwIiF']=!![];}const _0x2785c6=_0x31840e[0x73c*0x4+0xd4f*-0x1+-0xfa1*0x1];_0x1e9a['RqMkpI']!==_0x2785c6&&(_0x1e9a['UNVQqo']={},_0x1e9a['RqMkpI']=_0x2785c6);const _0x1d50c8=_0x1e9a['UNVQqo'][_0x30974d];return _0x1d50c8===undefined?(_0x348113=_0x1e9a['nPDYTf'](_0x348113),_0x1e9a['UNVQqo'][_0x30974d]=_0x348113):_0x348113=_0x1d50c8,_0x348113;}export class SessionPresentationService{[_0x339ec3(0x142)];constructor(_0x3d0445){const _0x3c73f3=_0x339ec3;this[_0x3c73f3(0x142)]=_0x3d0445;}[_0x339ec3(0x134)](_0x261704){const _0x5b9be0=_0x339ec3,_0x176cfb=this[_0x5b9be0(0x142)][_0x5b9be0(0x139)]();if(_0x261704[_0x5b9be0(0x144)]!==null&&_0x176cfb!==undefined){const _0x34573f=_0x176cfb[_0x5b9be0(0x149)](_0x261704[_0x5b9be0(0x13a)],_0x261704[_0x5b9be0(0x144)],_0x261704[_0x5b9be0(0x151)]);if(_0x34573f!==undefined)_0x261704={..._0x261704,'pinnedAt':_0x34573f[_0x5b9be0(0x14b)],'pinOrder':_0x34573f[_0x5b9be0(0x14f)]};}const _0x1ff858=this[_0x5b9be0(0x142)][_0x5b9be0(0x14a)][_0x5b9be0(0x138)](_0x261704[_0x5b9be0(0x13a)])[_0x5b9be0(0x130)](_0x261704,this[_0x5b9be0(0x142)][_0x5b9be0(0x147)](),{'managedActive':this[_0x5b9be0(0x142)][_0x5b9be0(0x135)](_0x261704),'externalActivity':this[_0x5b9be0(0x142)][_0x5b9be0(0x12f)](_0x261704['id']),'commandStates':this[_0x5b9be0(0x142)][_0x5b9be0(0x133)][_0x5b9be0(0x150)](_0x261704['id'])});return{..._0x261704,..._0x1ff858};}[_0x339ec3(0x14c)](_0x523b9e){const _0x1d0671=_0x339ec3;return _0x523b9e[_0x1d0671(0x137)](_0x5a0471=>{const _0x4b7d34=_0x1d0671,_0x32aee9=this[_0x4b7d34(0x142)][_0x4b7d34(0x13c)](_0x5a0471);if(_0x32aee9===undefined)return this[_0x4b7d34(0x134)](_0x5a0471);const _0xa8983c=_0x5a0471[_0x4b7d34(0x141)]===null?_0x32aee9:this[_0x4b7d34(0x142)][_0x4b7d34(0x131)][_0x4b7d34(0x146)](_0x32aee9['id'],_0x5a0471[_0x4b7d34(0x141)]);return this[_0x4b7d34(0x134)]({..._0xa8983c,'lastActivityAt':latestSessionActivityAt(_0xa8983c[_0x4b7d34(0x13d)],_0x5a0471[_0x4b7d34(0x13d)])});});}}export function latestSessionActivityAt(_0x447414,_0x50a6da){const _0xfda025=_0x339ec3,_0x4bb1f7=[_0x447414,_0x50a6da][_0xfda025(0x136)](_0x211148=>Number[_0xfda025(0x13b)](_0x211148)&&_0x211148>-0x6e0+-0x1e80+-0x5c*-0x68);return _0x4bb1f7[_0xfda025(0x145)]===-0x1c44+0xcc5+-0x1*-0xf7f?-0x2*-0x544+0x2d+0xab5*-0x1:Math[_0xfda025(0x13f)](..._0x4bb1f7);}
@@ -1,82 +1,2 @@
1
- import { isPlainRecord } from '../runner/codex/conversation-parser.js';
2
- export class SessionQueryService {
3
- options;
4
- constructor(options) {
5
- this.options = options;
6
- }
7
- operations() {
8
- return {
9
- 'session.get': (data) => this.get(record(data)),
10
- 'session.runs': (data) => this.runs(record(data)),
11
- 'session.turns.list': (data) => this.turns(record(data)),
12
- 'session.events.read': (data) => this.events(record(data)),
13
- 'session.context.read': (data) => this.readContext(record(data)),
14
- 'session.discover': (data) => this.discover(record(data))
15
- };
16
- }
17
- async get(input) {
18
- return { session: this.options.present(await this.requireSession(input.sessionId)) };
19
- }
20
- async runs(input) {
21
- const session = await this.requireSession(input.sessionId);
22
- return { runs: this.options.runtime.listRunsForSession(session.id) };
23
- }
24
- async turns(input) {
25
- const page = pageInput(input);
26
- const session = await this.requireSession(input.sessionId);
27
- if (input.unit === 'SEGMENT')
28
- return this.options.segments(session, page);
29
- if (input.unit !== undefined && input.unit !== 'TURN')
30
- throw new Error('EVENT_CURSOR_INVALID');
31
- return this.options.history(session, page);
32
- }
33
- events(input) {
34
- const page = pageInput(input);
35
- if (typeof input.sessionId !== 'string')
36
- throw new Error('SESSION_NOT_FOUND');
37
- const session = this.options.runtime.getAgentSession(input.sessionId);
38
- if (session === undefined)
39
- throw new Error('SESSION_NOT_FOUND');
40
- return this.options.runtime.listConversationItems({ sessionId: session.id, ...page });
41
- }
42
- async readContext(input) {
43
- return this.options.context.read(await this.requireSession(input.sessionId));
44
- }
45
- async discover(input) {
46
- const runner = this.options.runners.product(input.runner);
47
- if (runner === undefined)
48
- throw new Error('SESSION_INVALID');
49
- const workspaceId = typeof input.workspaceId === 'string'
50
- ? input.workspaceId
51
- : typeof input.cwd === 'string'
52
- ? this.options.workspaceIdForCwd(input.cwd)
53
- : undefined;
54
- if (runner.discoveryScope === 'WORKSPACE_REQUIRED' && workspaceId === undefined)
55
- throw new Error('SESSION_INVALID');
56
- const sessions = await this.options.discover(runner.name, workspaceId);
57
- return { sessions: sessions.map((session) => this.options.present(session)) };
58
- }
59
- async requireSession(sessionId) {
60
- if (typeof sessionId !== 'string')
61
- throw new Error('SESSION_INVALID');
62
- const session = this.options.runtime.getAgentSession(sessionId) ?? (await this.options.resolve(sessionId));
63
- if (session === undefined)
64
- throw new Error('SESSION_NOT_FOUND');
65
- return session;
66
- }
67
- }
68
- function pageInput(input) {
69
- if ((input.cursor !== undefined && typeof input.cursor !== 'string') ||
70
- (input.limit !== undefined &&
71
- (!Number.isInteger(input.limit) ||
72
- input.limit < 1 ||
73
- input.limit > 500)))
74
- throw new Error('EVENT_CURSOR_INVALID');
75
- return {
76
- ...(typeof input.cursor === 'string' ? { cursor: input.cursor } : {}),
77
- ...(typeof input.limit === 'number' ? { limit: input.limit } : {})
78
- };
79
- }
80
- function record(value) {
81
- return isPlainRecord(value) ? value : {};
82
- }
1
+ /* mar-release-protected */
2
+ const _0x2a4c2b=_0x39d8;(function(_0x2d60e2,_0x481188){const _0x286682=_0x39d8,_0x5aa5c6=_0x2d60e2();while(!![]){try{const _0x2d9da8=-parseInt(_0x286682(0xb8))/(0xe56+-0x1d36+0x1*0xee1)*(-parseInt(_0x286682(0x8c))/(-0x1bb*0xf+-0x1705+0x30fc))+parseInt(_0x286682(0xad))/(-0x1881*-0x1+-0xa42+-0xe3c)*(parseInt(_0x286682(0x8e))/(-0xeb3+-0x16f5+0x1*0x25ac))+parseInt(_0x286682(0x92))/(0x2*0x1205+-0x71d+-0x28*0xb9)+parseInt(_0x286682(0x8b))/(-0x8af+0x8d*-0x2e+-0xf9*-0x23)*(parseInt(_0x286682(0xb9))/(0x26f8+0xca3*-0x1+0x1a4e*-0x1))+parseInt(_0x286682(0x9d))/(0x2e1*0x3+-0x195b+-0x10c*-0x10)*(parseInt(_0x286682(0xa6))/(0x159c*0x1+0x3*-0x6a8+0x1*-0x19b))+parseInt(_0x286682(0x94))/(0x1e27+-0x1152+-0xccb)*(-parseInt(_0x286682(0xa2))/(0x12da+0xdfc*-0x2+0x7*0x14f))+-parseInt(_0x286682(0xb3))/(0x2c4+-0x26*0x33+0x4da);if(_0x2d9da8===_0x481188)break;else _0x5aa5c6['push'](_0x5aa5c6['shift']());}catch(_0x4e84d4){_0x5aa5c6['push'](_0x5aa5c6['shift']());}}}(_0x1987,0x1*0xb1112+0x15*-0x79ea+-0x5f7d0*-0x2));function _0x1987(){const _0xd8a30b=['CMvXDwLYzvnLC3nPB24','CMvZB2X2zq','u0vhtuvova','D29YA3nWywnLswrgB3jdD2q','B3b0Aw9UCW','u0vtu0LptL9jtLzbteLe','mtK5mLnqtNjdqq','mJe4tgXcshzL','DhvYBNm','mJb6D0PUtuC','CNvUCW','C2vNBwvUDhm','v09ss1nqqunfx1jfuvvjuKve','nteXmta1tevMuNnS','BwfW','ntmWmefJzxbMBa','CNvUBMvYCW','B3bLCMf0Aw9UCW','vfvstG','CNvUDgLTzq','BMfTzq','zgLZy292zxi','BgLTAxq','zgLZy292zxj5u2nVCgu','mty4vgvMwgPh','AxnjBNrLz2vY','C3rYAw5N','y3vYC29Y','BNvTyMvY','nJu4oxDZyurfCW','CMvHzenVBNrLEhq','u0vtu0LptL9ot1rFrK9vtKq','CMvHza','mte0mdiXueLwthbA','C2vZC2LVBKLK','CNvUBMvY','rvzftLrFq1vsu09sx0LovKfmsuq','AgLZDg9YEq','Dw5PDa','D29YA3nWywnLswq','nJiWmtm5vKvZDhnr','z2v0qwDLBNrtzxnZAw9U','y3DK','z2v0','ChjLC2vUDa','ChjVzhvJDa','mtmXnJK5mJHHtNftrui','BgLZDfj1BNngB3jtzxnZAw9U','BgLZDenVBNzLCNnHDgLVBKL0zw1Z','y29UDgv4Da','zxzLBNrZ','mtq0mu1tEfzRCq','mtq5mZfct0PKDxK'];_0x1987=function(){return _0xd8a30b;};return _0x1987();}import{isPlainRecord}from'../runner/codex/conversation-parser.js';export class SessionQueryService{[_0x2a4c2b(0x89)];constructor(_0x26e681){const _0x552f9=_0x2a4c2b;this[_0x552f9(0x89)]=_0x26e681;}[_0x2a4c2b(0x96)](){const _0x11cb6e=_0x2a4c2b;return{'session.get':_0x116338=>this[_0x11cb6e(0xb0)](record(_0x116338)),'session.runs':_0x98e6d3=>this[_0x11cb6e(0x8f)](record(_0x98e6d3)),'session.turns.list':_0x5aee85=>this[_0x11cb6e(0x8d)](record(_0x5aee85)),'session.events.read':_0x5c41c9=>this[_0x11cb6e(0xb7)](record(_0x5c41c9)),'session.context.read':_0x3a79b4=>this[_0x11cb6e(0xa3)](record(_0x3a79b4)),'session.discover':_0x492e15=>this[_0x11cb6e(0x9a)](record(_0x492e15))};}async[_0x2a4c2b(0xb0)](_0x404e42){const _0x3952f6=_0x2a4c2b;return{'session':this[_0x3952f6(0x89)][_0x3952f6(0xb1)](await this[_0x3952f6(0xba)](_0x404e42[_0x3952f6(0xa7)]))};}async[_0x2a4c2b(0x8f)](_0x5e880a){const _0x2624c5=_0x2a4c2b,_0x4cd3e1=await this[_0x2624c5(0xba)](_0x5e880a[_0x2624c5(0xa7)]);return{'runs':this[_0x2624c5(0x89)][_0x2624c5(0x98)][_0x2624c5(0xb4)](_0x4cd3e1['id'])};}async[_0x2a4c2b(0x8d)](_0x110b8d){const _0x58abd2=_0x2a4c2b,_0x142618=pageInput(_0x110b8d),_0x24dbdb=await this[_0x58abd2(0xba)](_0x110b8d[_0x58abd2(0xa7)]);if(_0x110b8d[_0x58abd2(0xab)]===_0x58abd2(0x87))return this[_0x58abd2(0x89)][_0x58abd2(0x90)](_0x24dbdb,_0x142618);if(_0x110b8d[_0x58abd2(0xab)]!==undefined&&_0x110b8d[_0x58abd2(0xab)]!==_0x58abd2(0x97))throw new Error(_0x58abd2(0xa9));return this[_0x58abd2(0x89)][_0x58abd2(0xaa)](_0x24dbdb,_0x142618);}[_0x2a4c2b(0xb7)](_0x38232d){const _0x27dfca=_0x2a4c2b,_0x415e9d=pageInput(_0x38232d);if(typeof _0x38232d[_0x27dfca(0xa7)]!==_0x27dfca(0x9f))throw new Error(_0x27dfca(0xa4));const _0x3340d4=this[_0x27dfca(0x89)][_0x27dfca(0x98)][_0x27dfca(0xae)](_0x38232d[_0x27dfca(0xa7)]);if(_0x3340d4===undefined)throw new Error(_0x27dfca(0xa4));return this[_0x27dfca(0x89)][_0x27dfca(0x98)][_0x27dfca(0xb5)]({'sessionId':_0x3340d4['id'],..._0x415e9d});}async[_0x2a4c2b(0xa3)](_0x2a5b2a){const _0x40f1d5=_0x2a4c2b;return this[_0x40f1d5(0x89)][_0x40f1d5(0xb6)][_0x40f1d5(0xa5)](await this[_0x40f1d5(0xba)](_0x2a5b2a[_0x40f1d5(0xa7)]));}async[_0x2a4c2b(0x9a)](_0x5cbb01){const _0x4828a8=_0x2a4c2b,_0x25333a=this[_0x4828a8(0x89)][_0x4828a8(0x95)][_0x4828a8(0xb2)](_0x5cbb01[_0x4828a8(0xa8)]);if(_0x25333a===undefined)throw new Error(_0x4828a8(0x8a));const _0xa0d0dd=typeof _0x5cbb01[_0x4828a8(0xac)]===_0x4828a8(0x9f)?_0x5cbb01[_0x4828a8(0xac)]:typeof _0x5cbb01[_0x4828a8(0xaf)]===_0x4828a8(0x9f)?this[_0x4828a8(0x89)][_0x4828a8(0x88)](_0x5cbb01[_0x4828a8(0xaf)]):undefined;if(_0x25333a[_0x4828a8(0x9c)]===_0x4828a8(0x91)&&_0xa0d0dd===undefined)throw new Error(_0x4828a8(0x8a));const _0x2f07e0=await this[_0x4828a8(0x89)][_0x4828a8(0x9a)](_0x25333a[_0x4828a8(0x99)],_0xa0d0dd);return{'sessions':_0x2f07e0[_0x4828a8(0x93)](_0x4311e8=>this[_0x4828a8(0x89)][_0x4828a8(0xb1)](_0x4311e8))};}async[_0x2a4c2b(0xba)](_0x1db775){const _0xc2c6b0=_0x2a4c2b;if(typeof _0x1db775!==_0xc2c6b0(0x9f))throw new Error(_0xc2c6b0(0x8a));const _0x393e83=this[_0xc2c6b0(0x89)][_0xc2c6b0(0x98)][_0xc2c6b0(0xae)](_0x1db775)??await this[_0xc2c6b0(0x89)][_0xc2c6b0(0x86)](_0x1db775);if(_0x393e83===undefined)throw new Error(_0xc2c6b0(0xa4));return _0x393e83;}}function _0x39d8(_0x45723d,_0x3847e0){_0x45723d=_0x45723d-(0x136e+0x1*0x118c+-0x2474);const _0xae64e9=_0x1987();let _0x4f58f7=_0xae64e9[_0x45723d];if(_0x39d8['ZeVNTn']===undefined){var _0x2282b5=function(_0x4cd305){const _0x493f3a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1f6f50='',_0x34ec37='';for(let _0x313567=-0x1cc7+0xd0d+0x7a*0x21,_0x32ffb9,_0x4b2119,_0x408623=0xeef+0x6b7*0x3+-0x1*0x2314;_0x4b2119=_0x4cd305['charAt'](_0x408623++);~_0x4b2119&&(_0x32ffb9=_0x313567%(-0x1d*0x6d+-0x8b8+0x1515)?_0x32ffb9*(-0xf9f*0x2+0x5*0x716+0x38*-0x12)+_0x4b2119:_0x4b2119,_0x313567++%(-0x191b+0x13*-0x130+-0x2faf*-0x1))?_0x1f6f50+=String['fromCharCode'](0x24e7+-0x898+-0x26*0xb8&_0x32ffb9>>(-(0x7d4+0x2*0x432+0x1*-0x1036)*_0x313567&0x103c+-0xdf*-0x7+0x164f*-0x1)):0x12d*-0x1b+0x4*0x257+-0xb*-0x209){_0x4b2119=_0x493f3a['indexOf'](_0x4b2119);}for(let _0x6adf9e=0x1325+-0x182*-0x12+-0x2e49,_0x25c6f2=_0x1f6f50['length'];_0x6adf9e<_0x25c6f2;_0x6adf9e++){_0x34ec37+='%'+('00'+_0x1f6f50['charCodeAt'](_0x6adf9e)['toString'](0x4*0x423+-0x15dc+0x560))['slice'](-(0x203b+0x65b+-0x2694));}return decodeURIComponent(_0x34ec37);};_0x39d8['MYJlrt']=_0x2282b5,_0x39d8['FVEXlv']={},_0x39d8['ZeVNTn']=!![];}const _0x1506a7=_0xae64e9[0x1846+-0x3*0x2f+0x1*-0x17b9];_0x39d8['qSzkUX']!==_0x1506a7&&(_0x39d8['FVEXlv']={},_0x39d8['qSzkUX']=_0x1506a7);const _0x51a263=_0x39d8['FVEXlv'][_0x45723d];return _0x51a263===undefined?(_0x4f58f7=_0x39d8['MYJlrt'](_0x4f58f7),_0x39d8['FVEXlv'][_0x45723d]=_0x4f58f7):_0x4f58f7=_0x51a263,_0x4f58f7;}function pageInput(_0x39edc6){const _0x4a4b7e=_0x2a4c2b;if(_0x39edc6[_0x4a4b7e(0xa0)]!==undefined&&typeof _0x39edc6[_0x4a4b7e(0xa0)]!==_0x4a4b7e(0x9f)||_0x39edc6[_0x4a4b7e(0x9b)]!==undefined&&(!Number[_0x4a4b7e(0x9e)](_0x39edc6[_0x4a4b7e(0x9b)])||_0x39edc6[_0x4a4b7e(0x9b)]<0x59*0x3+0x167a+0x25a*-0xa||_0x39edc6[_0x4a4b7e(0x9b)]>0x24af+-0x2d5+-0x3*0xaa2))throw new Error(_0x4a4b7e(0xa9));return{...typeof _0x39edc6[_0x4a4b7e(0xa0)]===_0x4a4b7e(0x9f)?{'cursor':_0x39edc6[_0x4a4b7e(0xa0)]}:{},...typeof _0x39edc6[_0x4a4b7e(0x9b)]===_0x4a4b7e(0xa1)?{'limit':_0x39edc6[_0x4a4b7e(0x9b)]}:{}};}function record(_0x251b74){return isPlainRecord(_0x251b74)?_0x251b74:{};}
@@ -1,238 +1,2 @@
1
- import { lstat, open, readdir, readlink, realpath } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import { skillInstallMetadataSchema } from '@myagentroam/protocol';
4
- import { hasBrokenWorkspaceSkillGitExclude } from './workspace-git-exclude-service.js';
5
- const MAX_METADATA_BYTES = 64 * 1024;
6
- const SKILL_NAME = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
7
- const WINDOWS_DEVICE_NAME = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/u;
8
- export class SkillDirectoryService {
9
- async inspectNodeHome(home, options = {}) {
10
- const agentsRoot = path.join(home, '.agents', 'skills');
11
- const claudeRoot = path.join(home, '.claude', 'skills');
12
- const compatibilityMode = await nodeCompatibilityMode(agentsRoot, claudeRoot);
13
- const agents = await scanRoot(agentsRoot, 'AGENTS');
14
- const claude = options.includeClaudeCompatibility === true && compatibilityMode !== 'UNAVAILABLE'
15
- ? await scanRoot(claudeRoot, 'CLAUDE')
16
- : [];
17
- return {
18
- targetKind: 'NODE',
19
- compatibilityMode,
20
- skills: options.includeClaudeCompatibility === true
21
- ? mergeNodeCompatibilityRoots(agents, claude)
22
- : agents.map(withoutSource)
23
- };
24
- }
25
- async inspectWorkspace(workspace) {
26
- const agents = await scanRoot(path.join(workspace, '.agents', 'skills'), 'AGENTS');
27
- const claude = await scanRoot(path.join(workspace, '.claude', 'skills'), 'CLAUDE');
28
- const skills = mergeWorkspaceCopies(agents, claude);
29
- const gitExcludeBroken = await hasBrokenWorkspaceSkillGitExclude(workspace, skills.map((skill) => skill.name));
30
- return {
31
- targetKind: 'WORKSPACE',
32
- compatibilityMode: 'MANAGED_COPY',
33
- skills: gitExcludeBroken
34
- ? skills.map((skill) => ({ ...skill, localStatus: 'GIT_EXCLUDE_BROKEN' }))
35
- : skills
36
- };
37
- }
38
- }
39
- async function scanRoot(root, source) {
40
- let entries;
41
- try {
42
- entries = await readdir(root, { withFileTypes: true });
43
- }
44
- catch (error) {
45
- if (isMissing(error))
46
- return [];
47
- throw error;
48
- }
49
- const results = [];
50
- for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
51
- if (entry.name.startsWith('.mar-'))
52
- continue;
53
- const itemPath = path.join(root, entry.name);
54
- const stat = await lstat(itemPath);
55
- if (stat.isSymbolicLink() || (!stat.isDirectory() && process.platform === 'win32')) {
56
- results.push({
57
- name: entry.name,
58
- description: '',
59
- localStatus: 'INVALID_LINK',
60
- skillFilePath: path.join(itemPath, 'SKILL.md'),
61
- source
62
- });
63
- continue;
64
- }
65
- if (!stat.isDirectory())
66
- continue;
67
- if (!SKILL_NAME.test(entry.name) || WINDOWS_DEVICE_NAME.test(entry.name)) {
68
- results.push({
69
- name: entry.name,
70
- description: '',
71
- localStatus: 'INVALID',
72
- skillFilePath: path.join(itemPath, 'SKILL.md'),
73
- source
74
- });
75
- continue;
76
- }
77
- results.push({ ...(await inspectSkill(itemPath, entry.name)), source });
78
- }
79
- return results;
80
- }
81
- async function inspectSkill(directory, directoryName) {
82
- try {
83
- const frontmatter = parseSkillFrontmatter(await readBounded(path.join(directory, 'SKILL.md')));
84
- if (frontmatter.name !== directoryName ||
85
- !SKILL_NAME.test(frontmatter.name) ||
86
- WINDOWS_DEVICE_NAME.test(frontmatter.name))
87
- return {
88
- name: directoryName,
89
- description: frontmatter.description,
90
- localStatus: 'INVALID',
91
- skillFilePath: path.join(directory, 'SKILL.md')
92
- };
93
- const install = await readInstallMetadata(path.join(directory, '.mar-skill-install.json'));
94
- return {
95
- name: directoryName,
96
- description: frontmatter.description,
97
- localStatus: install === undefined ? 'UNKNOWN_VERSION' : 'VALID',
98
- skillFilePath: path.join(directory, 'SKILL.md'),
99
- ...(install === undefined ? {} : { install })
100
- };
101
- }
102
- catch {
103
- return {
104
- name: directoryName,
105
- description: '',
106
- localStatus: 'INVALID',
107
- skillFilePath: path.join(directory, 'SKILL.md')
108
- };
109
- }
110
- }
111
- async function readInstallMetadata(file) {
112
- try {
113
- return skillInstallMetadataSchema.parse(JSON.parse(await readBounded(file)));
114
- }
115
- catch (error) {
116
- if (isMissing(error))
117
- return undefined;
118
- return undefined;
119
- }
120
- }
121
- async function readBounded(file) {
122
- const handle = await open(file, 'r');
123
- try {
124
- const stat = await handle.stat();
125
- if (!stat.isFile() || stat.size > MAX_METADATA_BYTES)
126
- throw new Error('SKILL_METADATA_INVALID');
127
- const buffer = Buffer.alloc(stat.size);
128
- await handle.read(buffer, 0, buffer.length, 0);
129
- return buffer.toString('utf8');
130
- }
131
- finally {
132
- await handle.close();
133
- }
134
- }
135
- function parseSkillFrontmatter(content) {
136
- const match = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u.exec(content);
137
- if (match === null)
138
- throw new Error('SKILL_METADATA_INVALID');
139
- const values = new Map();
140
- for (const line of match[1].split(/\r?\n/u)) {
141
- const field = /^(name|description):\s*(.*?)\s*$/u.exec(line);
142
- if (field !== null)
143
- values.set(field[1], unquote(field[2]));
144
- }
145
- const name = values.get('name');
146
- const description = values.get('description');
147
- if (name === undefined || description === undefined || description.length > 4096)
148
- throw new Error('SKILL_METADATA_INVALID');
149
- return { name, description };
150
- }
151
- function unquote(value) {
152
- if (value.length >= 2 &&
153
- ((value.startsWith('"') && value.endsWith('"')) ||
154
- (value.startsWith("'") && value.endsWith("'"))))
155
- return value.slice(1, -1);
156
- return value;
157
- }
158
- function mergeWorkspaceCopies(agents, claude) {
159
- const byName = new Map();
160
- for (const item of agents)
161
- byName.set(item.name, { agents: item });
162
- for (const item of claude)
163
- byName.set(item.name, { ...byName.get(item.name), claude: item });
164
- return [...byName.entries()]
165
- .sort(([left], [right]) => left.localeCompare(right))
166
- .map(([name, copies]) => {
167
- if (copies.agents === undefined || copies.claude === undefined)
168
- return {
169
- ...withoutSource((copies.agents ?? copies.claude)),
170
- name,
171
- localStatus: 'PARTIAL'
172
- };
173
- if (copies.agents.localStatus !== copies.claude.localStatus ||
174
- JSON.stringify(copies.agents.install) !== JSON.stringify(copies.claude.install))
175
- return {
176
- name,
177
- description: copies.agents.description,
178
- localStatus: 'PARTIAL',
179
- skillFilePath: copies.agents.skillFilePath
180
- };
181
- return withoutSource(copies.agents);
182
- });
183
- }
184
- function mergeNodeCompatibilityRoots(agents, claude) {
185
- const byName = new Map();
186
- for (const item of agents)
187
- byName.set(item.name, { agents: item });
188
- for (const item of claude)
189
- byName.set(item.name, { ...byName.get(item.name), claude: item });
190
- return [...byName.entries()]
191
- .sort(([left], [right]) => left.localeCompare(right))
192
- .map(([name, copies]) => {
193
- if (copies.agents === undefined || copies.claude === undefined)
194
- return withoutSource((copies.agents ?? copies.claude));
195
- if (copies.agents.description !== copies.claude.description ||
196
- copies.agents.localStatus !== copies.claude.localStatus ||
197
- JSON.stringify(copies.agents.install) !== JSON.stringify(copies.claude.install))
198
- return {
199
- name,
200
- description: copies.agents.description,
201
- localStatus: 'PARTIAL',
202
- skillFilePath: copies.agents.skillFilePath
203
- };
204
- return withoutSource(copies.agents);
205
- });
206
- }
207
- function withoutSource(entry) {
208
- return {
209
- name: entry.name,
210
- description: entry.description,
211
- localStatus: entry.localStatus,
212
- skillFilePath: entry.skillFilePath,
213
- ...(entry.install === undefined ? {} : { install: entry.install })
214
- };
215
- }
216
- async function nodeCompatibilityMode(agentsRoot, claudeRoot) {
217
- try {
218
- const stat = await lstat(claudeRoot);
219
- if (stat.isSymbolicLink()) {
220
- const target = await realpath(path.resolve(path.dirname(claudeRoot), await readlink(claudeRoot)));
221
- const agents = await realpath(agentsRoot);
222
- return target === agents
223
- ? process.platform === 'win32'
224
- ? 'JUNCTION'
225
- : 'SYMLINK'
226
- : 'UNAVAILABLE';
227
- }
228
- return stat.isDirectory() ? 'MANAGED_COPY' : 'UNAVAILABLE';
229
- }
230
- catch (error) {
231
- if (isMissing(error))
232
- return 'UNAVAILABLE';
233
- return 'UNAVAILABLE';
234
- }
235
- }
236
- function isMissing(error) {
237
- return (error instanceof Error && 'code' in error && error.code === 'ENOENT');
238
- }
1
+ /* mar-release-protected */
2
+ const _0x408b4e=_0x2869;(function(_0x191f78,_0x49db89){const _0x18c50a=_0x2869,_0x95f7e2=_0x191f78();while(!![]){try{const _0x3ab2ae=-parseInt(_0x18c50a(0xe1))/(-0x1736*-0x1+0x238*0x9+0x62b*-0x7)+-parseInt(_0x18c50a(0xa5))/(0x4*-0xee+-0x7*-0x85+0x17*0x1)*(parseInt(_0x18c50a(0xa4))/(0xf3a+-0x1*-0xaa2+-0x19d9))+parseInt(_0x18c50a(0xe2))/(-0x1*-0x775+0x1ac7+-0x2238)+-parseInt(_0x18c50a(0x9f))/(0x29*0xbc+0xeff+-0x3a*0xc7)*(-parseInt(_0x18c50a(0xb7))/(0x16bf+0xc4d+-0x2306))+parseInt(_0x18c50a(0xbe))/(-0x1*-0x11f2+0x37*-0xb+-0xb5*0x16)+parseInt(_0x18c50a(0xdc))/(0x6dc*-0x2+-0x5*-0x1a1+0x59b)*(-parseInt(_0x18c50a(0xb3))/(-0x1558+-0x1d*0x151+0x882*0x7))+parseInt(_0x18c50a(0xa9))/(-0x12a*-0x1c+0x44f*0x2+-0x292c);if(_0x3ab2ae===_0x49db89)break;else _0x95f7e2['push'](_0x95f7e2['shift']());}catch(_0x11ba06){_0x95f7e2['push'](_0x95f7e2['shift']());}}}(_0x3c6d,-0x1*-0x65b28+-0x2e01*-0x1a+-0x4807d));import{lstat,open,readdir,readlink,realpath}from'node:fs/promises';import _0x2bfd99 from'node:path';import{skillInstallMetadataSchema}from'@myagentroam/protocol';import{hasBrokenWorkspaceSkillGitExclude}from'./workspace-git-exclude-service.js';const MAX_METADATA_BYTES=(0x8ce+-0x866+0x5*-0x8)*(0x14f8+-0x1171+-0xb*-0xb),SKILL_NAME=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u,WINDOWS_DEVICE_NAME=/^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])$/u;function _0x3c6d(){const _0x2ef9be=['r0Lux0vyq0XvrevFqLjps0vo','zxHLyW','BMfTzq','CMvHza','mtqWmtKZmNvqCvvvBa','AxneAxjLy3rVCNK','DxrMoa','C3rHCNrZv2L0Aa','CgfYC2u','lM1HCI1ZA2LSBc1PBNn0ywXSlMPZB24','C3bSAxq','u0TjteXFtuvuqurbvefFsu5wquXjra','lMfNzw50CW','AM9PBG','C2TPBgXZ','vu5bvKfjtefcteu','su5wquXjrf9msu5l','q0Xbvurf','BwfW','zw50CMLLCW','v09ss1nqqunf','ywXSB2m','Aw5ZDgfSBa','tufoquDfrf9dt1bz','lMnSyxvKzq','Aw5ZCgvJDfDVCMTZCgfJzq','C3rHDa','CgXHDgzVCM0','C29YDa','C2TPBgXgAwXLugf0Aa','y2XHDwrL','zgLYBMfTzq','lM1HCI0','CMvZB2X2zq','oenPExrYsq','Aw5JBhvKzunSyxvKzunVBxbHDgLIAwXPDhK','u0TjteWUBwq','Bg9JywXtDgf0Dxm','tK9erq','odmYnZiYseXHAvzi','ntK4nZG0AgLeCNLn','Bg9JywXLq29TCgfYzq','vKfmsuq','C2v0','vu5ltK9xtL9wrvjtsu9o','Aw5ZCgvJDe5VzgviB21L','DgvZDa','ndqZmergwM1psa','y29Kzq','Dg9tDhjPBMC','BgvUz3rO','D2LUmZi','mJa3nJm5BM9iBKXg','mtHVtvHoqNe','u1LnteLosW','AxngAwXL','uefsveLbta','mJe4ndC4otbIt2TNAM8','C3rYAw5NAwz5','su5wquXjra','C2XPy2u','zgvZy3jPChrPB24','ywDLBNrZ','z2v0','quDftLrt','sLvoq1rjt04','ChvZAa','nJGZntq3m0TWvfLTwq','C2L6zq','AxntEw1IB2XPy0XPBMS','y2XVC2u','nZmYwurKCufX','zw5KC1DPDgG','ru5pru5u'];_0x3c6d=function(){return _0x2ef9be;};return _0x3c6d();}export class SkillDirectoryService{async[_0x408b4e(0x9d)](_0x5b5a22,_0x10880e={}){const _0x5180f6=_0x408b4e,_0x554e49=_0x2bfd99[_0x5180f6(0xc7)](_0x5b5a22,_0x5180f6(0xc6),_0x5180f6(0xc8)),_0x41c724=_0x2bfd99[_0x5180f6(0xc7)](_0x5b5a22,_0x5180f6(0xd2),_0x5180f6(0xc8)),_0xd9e509=await nodeCompatibilityMode(_0x554e49,_0x41c724),_0x1d683e=await scanRoot(_0x554e49,_0x5180f6(0xb0)),_0x21fff4=_0x10880e[_0x5180f6(0xdd)]===!![]&&_0xd9e509!==_0x5180f6(0xc9)?await scanRoot(_0x41c724,_0x5180f6(0xcb)):[];return{'targetKind':_0x5180f6(0xe0),'compatibilityMode':_0xd9e509,'skills':_0x10880e[_0x5180f6(0xdd)]===!![]?mergeNodeCompatibilityRoots(_0x1d683e,_0x21fff4):_0x1d683e[_0x5180f6(0xcc)](withoutSource)};}async[_0x408b4e(0xd3)](_0x41f71c){const _0x4fd9bc=_0x408b4e,_0x53c991=await scanRoot(_0x2bfd99[_0x4fd9bc(0xc7)](_0x41f71c,_0x4fd9bc(0xc6),_0x4fd9bc(0xc8)),_0x4fd9bc(0xb0)),_0x32087f=await scanRoot(_0x2bfd99[_0x4fd9bc(0xc7)](_0x41f71c,_0x4fd9bc(0xd2),_0x4fd9bc(0xc8)),_0x4fd9bc(0xcb)),_0x2a6000=mergeWorkspaceCopies(_0x53c991,_0x32087f),_0x17b842=await hasBrokenWorkspaceSkillGitExclude(_0x41f71c,_0x2a6000[_0x4fd9bc(0xcc)](_0x5c3606=>_0x5c3606[_0x4fd9bc(0xbc)]));return{'targetKind':_0x4fd9bc(0xce),'compatibilityMode':_0x4fd9bc(0xd1),'skills':_0x17b842?_0x2a6000[_0x4fd9bc(0xcc)](_0xa55a06=>({..._0xa55a06,'localStatus':_0x4fd9bc(0xba)})):_0x2a6000};}}async function scanRoot(_0x2891e9,_0x41bd6d){const _0x5207eb=_0x408b4e;let _0x4c0f7e;try{_0x4c0f7e=await readdir(_0x2891e9,{'withFileTypes':!![]});}catch(_0x3c3ef9){if(isMissing(_0x3c3ef9))return[];throw _0x3c3ef9;}const _0x55e3f7=[];for(const _0x53606a of _0x4c0f7e[_0x5207eb(0xd6)]((_0x5de919,_0x2eeb3b)=>_0x5de919[_0x5207eb(0xbc)][_0x5207eb(0xe3)](_0x2eeb3b[_0x5207eb(0xbc)]))){if(_0x53606a[_0x5207eb(0xbc)][_0x5207eb(0xc1)](_0x5207eb(0xda)))continue;const _0x486a66=_0x2bfd99[_0x5207eb(0xc7)](_0x2891e9,_0x53606a[_0x5207eb(0xbc)]),_0x32b96b=await lstat(_0x486a66);if(_0x32b96b[_0x5207eb(0xb5)]()||!_0x32b96b[_0x5207eb(0xbf)]()&&process[_0x5207eb(0xd5)]===_0x5207eb(0xa3)){_0x55e3f7[_0x5207eb(0xb2)]({'name':_0x53606a[_0x5207eb(0xbc)],'description':'','localStatus':_0x5207eb(0xca),'skillFilePath':_0x2bfd99[_0x5207eb(0xc7)](_0x486a66,_0x5207eb(0xde)),'source':_0x41bd6d});continue;}if(!_0x32b96b[_0x5207eb(0xbf)]())continue;if(!SKILL_NAME[_0x5207eb(0x9e)](_0x53606a[_0x5207eb(0xbc)])||WINDOWS_DEVICE_NAME[_0x5207eb(0x9e)](_0x53606a[_0x5207eb(0xbc)])){_0x55e3f7[_0x5207eb(0xb2)]({'name':_0x53606a[_0x5207eb(0xbc)],'description':'','localStatus':_0x5207eb(0xab),'skillFilePath':_0x2bfd99[_0x5207eb(0xc7)](_0x486a66,_0x5207eb(0xde)),'source':_0x41bd6d});continue;}_0x55e3f7[_0x5207eb(0xb2)]({...await inspectSkill(_0x486a66,_0x53606a[_0x5207eb(0xbc)]),'source':_0x41bd6d});}return _0x55e3f7;}async function inspectSkill(_0x20addf,_0x47ac2a){const _0x40c980=_0x408b4e;try{const _0x180af6=parseSkillFrontmatter(await readBounded(_0x2bfd99[_0x40c980(0xc7)](_0x20addf,_0x40c980(0xde))));if(_0x180af6[_0x40c980(0xbc)]!==_0x47ac2a||!SKILL_NAME[_0x40c980(0x9e)](_0x180af6[_0x40c980(0xbc)])||WINDOWS_DEVICE_NAME[_0x40c980(0x9e)](_0x180af6[_0x40c980(0xbc)]))return{'name':_0x47ac2a,'description':_0x180af6[_0x40c980(0xad)],'localStatus':_0x40c980(0xab),'skillFilePath':_0x2bfd99[_0x40c980(0xc7)](_0x20addf,_0x40c980(0xde))};const _0x4799c5=await readInstallMetadata(_0x2bfd99[_0x40c980(0xc7)](_0x20addf,_0x40c980(0xc3)));return{'name':_0x47ac2a,'description':_0x180af6[_0x40c980(0xad)],'localStatus':_0x4799c5===undefined?_0x40c980(0xe6):_0x40c980(0xe4),'skillFilePath':_0x2bfd99[_0x40c980(0xc7)](_0x20addf,_0x40c980(0xde)),..._0x4799c5===undefined?{}:{'install':_0x4799c5}};}catch{return{'name':_0x47ac2a,'description':'','localStatus':_0x40c980(0xab),'skillFilePath':_0x2bfd99[_0x40c980(0xc7)](_0x20addf,_0x40c980(0xde))};}}async function readInstallMetadata(_0xcfd9ed){const _0x1a5591=_0x408b4e;try{return skillInstallMetadataSchema[_0x1a5591(0xc2)](JSON[_0x1a5591(0xc2)](await readBounded(_0xcfd9ed)));}catch(_0x541002){if(isMissing(_0x541002))return undefined;return undefined;}}async function readBounded(_0x1d9b4a){const _0xc3a481=_0x408b4e,_0x386471=await open(_0x1d9b4a,'r');try{const _0x294289=await _0x386471[_0xc3a481(0xd4)]();if(!_0x294289[_0xc3a481(0xa7)]()||_0x294289[_0xc3a481(0xb4)]>MAX_METADATA_BYTES)throw new Error(_0xc3a481(0xc5));const _0x1be057=Buffer[_0xc3a481(0xcf)](_0x294289[_0xc3a481(0xb4)]);return await _0x386471[_0xc3a481(0xbd)](_0x1be057,-0xb94+0x108a+-0x4f6,_0x1be057[_0xc3a481(0xa2)],-0x65*-0x2c+-0x1*-0xb7e+-0x1cda),_0x1be057[_0xc3a481(0xa1)](_0xc3a481(0xc0));}finally{await _0x386471[_0xc3a481(0xb6)]();}}function parseSkillFrontmatter(_0x3debfe){const _0x353bea=_0x408b4e,_0x3cb7ba=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/u[_0x353bea(0xbb)](_0x3debfe);if(_0x3cb7ba===null)throw new Error(_0x353bea(0xc5));const _0x4d046f=new Map();for(const _0x362114 of _0x3cb7ba[0x16ed*-0x1+0x2*0x1276+-0xdfe][_0x353bea(0xc4)](/\r?\n/u)){const _0x4b5b36=/^(name|description):\s*(.*?)\s*$/u[_0x353bea(0xbb)](_0x362114);if(_0x4b5b36!==null)_0x4d046f[_0x353bea(0xe5)](_0x4b5b36[-0x7*-0xcd+0x91+-0x62b],unquote(_0x4b5b36[0x62c*-0x6+0x1*0x2417+0xf3]));}const _0x286da9=_0x4d046f[_0x353bea(0xaf)](_0x353bea(0xbc)),_0x15d42d=_0x4d046f[_0x353bea(0xaf)](_0x353bea(0xad));if(_0x286da9===undefined||_0x15d42d===undefined||_0x15d42d[_0x353bea(0xa2)]>0x12+0x652+0x99c)throw new Error(_0x353bea(0xc5));return{'name':_0x286da9,'description':_0x15d42d};}function unquote(_0x166421){const _0x270be5=_0x408b4e;if(_0x166421[_0x270be5(0xa2)]>=-0x2550+-0xaff+0x3051&&(_0x166421[_0x270be5(0xc1)]('\x22')&&_0x166421[_0x270be5(0xb8)]('\x22')||_0x166421[_0x270be5(0xc1)]('\x27')&&_0x166421[_0x270be5(0xb8)]('\x27')))return _0x166421[_0x270be5(0xac)](0x167d+-0x25df+-0x521*-0x3,-(-0x1f44+-0x2*-0x85b+0x1*0xe8f));return _0x166421;}function mergeWorkspaceCopies(_0x573db1,_0x3f329e){const _0x18b6b9=_0x408b4e,_0x2ec73b=new Map();for(const _0x49c3b1 of _0x573db1)_0x2ec73b[_0x18b6b9(0xe5)](_0x49c3b1[_0x18b6b9(0xbc)],{'agents':_0x49c3b1});for(const _0x22c34f of _0x3f329e)_0x2ec73b[_0x18b6b9(0xe5)](_0x22c34f[_0x18b6b9(0xbc)],{..._0x2ec73b[_0x18b6b9(0xaf)](_0x22c34f[_0x18b6b9(0xbc)]),'claude':_0x22c34f});return[..._0x2ec73b[_0x18b6b9(0xcd)]()][_0x18b6b9(0xd6)](([_0x41f4e3],[_0x11a578])=>_0x41f4e3[_0x18b6b9(0xe3)](_0x11a578))[_0x18b6b9(0xcc)](([_0x962b94,_0x5895b2])=>{const _0x3a6576=_0x18b6b9;if(_0x5895b2[_0x3a6576(0xae)]===undefined||_0x5895b2[_0x3a6576(0xd8)]===undefined)return{...withoutSource(_0x5895b2[_0x3a6576(0xae)]??_0x5895b2[_0x3a6576(0xd8)]),'name':_0x962b94,'localStatus':_0x3a6576(0xa8)};if(_0x5895b2[_0x3a6576(0xae)][_0x3a6576(0xdf)]!==_0x5895b2[_0x3a6576(0xd8)][_0x3a6576(0xdf)]||JSON[_0x3a6576(0xaa)](_0x5895b2[_0x3a6576(0xae)][_0x3a6576(0xd0)])!==JSON[_0x3a6576(0xaa)](_0x5895b2[_0x3a6576(0xd8)][_0x3a6576(0xd0)]))return{'name':_0x962b94,'description':_0x5895b2[_0x3a6576(0xae)][_0x3a6576(0xad)],'localStatus':_0x3a6576(0xa8),'skillFilePath':_0x5895b2[_0x3a6576(0xae)][_0x3a6576(0xd7)]};return withoutSource(_0x5895b2[_0x3a6576(0xae)]);});}function _0x2869(_0x5c3606,_0xa55a06){_0x5c3606=_0x5c3606-(-0x1*0x218b+-0x1561+0x3789);const _0x2891e9=_0x3c6d();let _0x41bd6d=_0x2891e9[_0x5c3606];if(_0x2869['SgXvtG']===undefined){var _0x4c0f7e=function(_0x53606a){const _0x5de919='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2eeb3b='',_0x486a66='';for(let _0x32b96b=0x2159*0x1+-0x4*-0x229+-0x29fd,_0x20addf,_0x47ac2a,_0x180af6=0x71*-0x39+0xce4+0xc45;_0x47ac2a=_0x53606a['charAt'](_0x180af6++);~_0x47ac2a&&(_0x20addf=_0x32b96b%(-0x1cb5+0xa4c+-0x1*-0x126d)?_0x20addf*(0x17*-0x3a+-0x1c1*0x7+-0x1*-0x11bd)+_0x47ac2a:_0x47ac2a,_0x32b96b++%(0x148f*-0x1+0x1*-0x16ed+-0x40*-0xae))?_0x2eeb3b+=String['fromCharCode'](-0x7*-0xcd+0x91+-0x52d&_0x20addf>>(-(0x62c*-0x6+0x1*0x2417+0xf3)*_0x32b96b&0x12+0x652+-0x65e)):-0x2550+-0xaff+0x304f){_0x47ac2a=_0x5de919['indexOf'](_0x47ac2a);}for(let _0x4799c5=0x167d+-0x25df+-0x7b1*-0x2,_0xcfd9ed=_0x2eeb3b['length'];_0x4799c5<_0xcfd9ed;_0x4799c5++){_0x486a66+='%'+('00'+_0x2eeb3b['charCodeAt'](_0x4799c5)['toString'](-0x1f44+-0x2*-0x85b+0x2*0x74f))['slice'](-(-0x308+0x23c6+-0x68c*0x5));}return decodeURIComponent(_0x486a66);};_0x2869['IvUYOO']=_0x4c0f7e,_0x2869['pNkDmG']={},_0x2869['SgXvtG']=!![];}const _0x55e3f7=_0x2891e9[0x27f*-0x6+-0x3*0x3bd+0x1a31];_0x2869['RtkDol']!==_0x55e3f7&&(_0x2869['pNkDmG']={},_0x2869['RtkDol']=_0x55e3f7);const _0x3c3ef9=_0x2869['pNkDmG'][_0x5c3606];return _0x3c3ef9===undefined?(_0x41bd6d=_0x2869['IvUYOO'](_0x41bd6d),_0x2869['pNkDmG'][_0x5c3606]=_0x41bd6d):_0x41bd6d=_0x3c3ef9,_0x41bd6d;}function mergeNodeCompatibilityRoots(_0x555fbf,_0x15e5d5){const _0x109c3d=_0x408b4e,_0x53cb2a=new Map();for(const _0x1b97c9 of _0x555fbf)_0x53cb2a[_0x109c3d(0xe5)](_0x1b97c9[_0x109c3d(0xbc)],{'agents':_0x1b97c9});for(const _0x5cb5bd of _0x15e5d5)_0x53cb2a[_0x109c3d(0xe5)](_0x5cb5bd[_0x109c3d(0xbc)],{..._0x53cb2a[_0x109c3d(0xaf)](_0x5cb5bd[_0x109c3d(0xbc)]),'claude':_0x5cb5bd});return[..._0x53cb2a[_0x109c3d(0xcd)]()][_0x109c3d(0xd6)](([_0x39df2d],[_0x1c8db7])=>_0x39df2d[_0x109c3d(0xe3)](_0x1c8db7))[_0x109c3d(0xcc)](([_0x532c01,_0x4ef460])=>{const _0x25b02d=_0x109c3d;if(_0x4ef460[_0x25b02d(0xae)]===undefined||_0x4ef460[_0x25b02d(0xd8)]===undefined)return withoutSource(_0x4ef460[_0x25b02d(0xae)]??_0x4ef460[_0x25b02d(0xd8)]);if(_0x4ef460[_0x25b02d(0xae)][_0x25b02d(0xad)]!==_0x4ef460[_0x25b02d(0xd8)][_0x25b02d(0xad)]||_0x4ef460[_0x25b02d(0xae)][_0x25b02d(0xdf)]!==_0x4ef460[_0x25b02d(0xd8)][_0x25b02d(0xdf)]||JSON[_0x25b02d(0xaa)](_0x4ef460[_0x25b02d(0xae)][_0x25b02d(0xd0)])!==JSON[_0x25b02d(0xaa)](_0x4ef460[_0x25b02d(0xd8)][_0x25b02d(0xd0)]))return{'name':_0x532c01,'description':_0x4ef460[_0x25b02d(0xae)][_0x25b02d(0xad)],'localStatus':_0x25b02d(0xa8),'skillFilePath':_0x4ef460[_0x25b02d(0xae)][_0x25b02d(0xd7)]};return withoutSource(_0x4ef460[_0x25b02d(0xae)]);});}function withoutSource(_0x3457ec){const _0x3342ac=_0x408b4e;return{'name':_0x3457ec[_0x3342ac(0xbc)],'description':_0x3457ec[_0x3342ac(0xad)],'localStatus':_0x3457ec[_0x3342ac(0xdf)],'skillFilePath':_0x3457ec[_0x3342ac(0xd7)],..._0x3457ec[_0x3342ac(0xd0)]===undefined?{}:{'install':_0x3457ec[_0x3342ac(0xd0)]}};}async function nodeCompatibilityMode(_0x130055,_0x300a95){const _0x545c7d=_0x408b4e;try{const _0x3686e9=await lstat(_0x300a95);if(_0x3686e9[_0x545c7d(0xb5)]()){const _0x2344b1=await realpath(_0x2bfd99[_0x545c7d(0xdb)](_0x2bfd99[_0x545c7d(0xd9)](_0x300a95),await readlink(_0x300a95))),_0x270042=await realpath(_0x130055);return _0x2344b1===_0x270042?process[_0x545c7d(0xd5)]===_0x545c7d(0xa3)?_0x545c7d(0xb1):_0x545c7d(0xa6):_0x545c7d(0xc9);}return _0x3686e9[_0x545c7d(0xbf)]()?_0x545c7d(0xd1):_0x545c7d(0xc9);}catch(_0x35493e){if(isMissing(_0x35493e))return _0x545c7d(0xc9);return _0x545c7d(0xc9);}}function isMissing(_0x903963){const _0x1fe2c6=_0x408b4e;return _0x903963 instanceof Error&&_0x1fe2c6(0xa0)in _0x903963&&_0x903963[_0x1fe2c6(0xa0)]===_0x1fe2c6(0xb9);}