@x12i/memorix-client-api 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/HANDOVER.md +13 -2
  2. package/dist/agent-directory.d.ts +25 -0
  3. package/dist/agent-directory.d.ts.map +1 -0
  4. package/dist/agent-directory.js +75 -0
  5. package/dist/agent-directory.js.map +1 -0
  6. package/dist/app.d.ts +31 -6
  7. package/dist/app.d.ts.map +1 -1
  8. package/dist/app.js +220 -33
  9. package/dist/app.js.map +1 -1
  10. package/dist/authix.d.ts +28 -2
  11. package/dist/authix.d.ts.map +1 -1
  12. package/dist/authix.js +55 -4
  13. package/dist/authix.js.map +1 -1
  14. package/dist/catalog.d.ts +33 -1
  15. package/dist/catalog.d.ts.map +1 -1
  16. package/dist/catalog.js +83 -4
  17. package/dist/catalog.js.map +1 -1
  18. package/dist/cli.js +11 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config.d.ts +9 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +31 -0
  23. package/dist/config.js.map +1 -1
  24. package/dist/errors.d.ts +16 -2
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +16 -2
  27. package/dist/errors.js.map +1 -1
  28. package/dist/fetch.d.ts.map +1 -1
  29. package/dist/fetch.js +27 -3
  30. package/dist/fetch.js.map +1 -1
  31. package/dist/peers.d.ts +2 -2
  32. package/dist/peers.d.ts.map +1 -1
  33. package/dist/peers.js +4 -4
  34. package/dist/peers.js.map +1 -1
  35. package/dist/refs.d.ts +7 -1
  36. package/dist/refs.d.ts.map +1 -1
  37. package/dist/refs.js +36 -26
  38. package/dist/refs.js.map +1 -1
  39. package/dist/scope.d.ts +25 -2
  40. package/dist/scope.d.ts.map +1 -1
  41. package/dist/scope.js +71 -4
  42. package/dist/scope.js.map +1 -1
  43. package/dist/scoper-embedded.d.ts +29 -0
  44. package/dist/scoper-embedded.d.ts.map +1 -0
  45. package/dist/scoper-embedded.js +239 -0
  46. package/dist/scoper-embedded.js.map +1 -0
  47. package/dist/scoper.d.ts +19 -27
  48. package/dist/scoper.d.ts.map +1 -1
  49. package/dist/scoper.js +51 -254
  50. package/dist/scoper.js.map +1 -1
  51. package/dist/upstream.d.ts +6 -1
  52. package/dist/upstream.d.ts.map +1 -1
  53. package/dist/upstream.js +22 -4
  54. package/dist/upstream.js.map +1 -1
  55. package/dist/v1/census.d.ts +59 -0
  56. package/dist/v1/census.d.ts.map +1 -0
  57. package/dist/v1/census.js +146 -0
  58. package/dist/v1/census.js.map +1 -0
  59. package/dist/v1/content.d.ts +48 -0
  60. package/dist/v1/content.d.ts.map +1 -0
  61. package/dist/v1/content.js +292 -0
  62. package/dist/v1/content.js.map +1 -0
  63. package/dist/v1/context.d.ts +50 -0
  64. package/dist/v1/context.d.ts.map +1 -0
  65. package/dist/v1/context.js +4 -0
  66. package/dist/v1/context.js.map +1 -0
  67. package/dist/v1/discovery.d.ts +24 -0
  68. package/dist/v1/discovery.d.ts.map +1 -0
  69. package/dist/v1/discovery.js +163 -0
  70. package/dist/v1/discovery.js.map +1 -0
  71. package/dist/v1/gaps.d.ts +18 -0
  72. package/dist/v1/gaps.d.ts.map +1 -0
  73. package/dist/v1/gaps.js +2 -0
  74. package/dist/v1/gaps.js.map +1 -0
  75. package/dist/v1/http.d.ts +18 -0
  76. package/dist/v1/http.d.ts.map +1 -0
  77. package/dist/v1/http.js +105 -0
  78. package/dist/v1/http.js.map +1 -0
  79. package/dist/v1/mapping.d.ts +155 -0
  80. package/dist/v1/mapping.d.ts.map +1 -0
  81. package/dist/v1/mapping.js +380 -0
  82. package/dist/v1/mapping.js.map +1 -0
  83. package/dist/v1/planning-store.d.ts +74 -0
  84. package/dist/v1/planning-store.d.ts.map +1 -0
  85. package/dist/v1/planning-store.js +192 -0
  86. package/dist/v1/planning-store.js.map +1 -0
  87. package/dist/v1/planning.d.ts +5 -0
  88. package/dist/v1/planning.d.ts.map +1 -0
  89. package/dist/v1/planning.js +297 -0
  90. package/dist/v1/planning.js.map +1 -0
  91. package/dist/v1/records.d.ts +18 -0
  92. package/dist/v1/records.d.ts.map +1 -0
  93. package/dist/v1/records.js +42 -0
  94. package/dist/v1/records.js.map +1 -0
  95. package/dist/v1/relationships.d.ts +72 -0
  96. package/dist/v1/relationships.d.ts.map +1 -0
  97. package/dist/v1/relationships.js +436 -0
  98. package/dist/v1/relationships.js.map +1 -0
  99. package/dist/v1/routes.d.ts +5 -0
  100. package/dist/v1/routes.d.ts.map +1 -0
  101. package/dist/v1/routes.js +16 -0
  102. package/dist/v1/routes.js.map +1 -0
  103. package/dist/v1/sources.d.ts +62 -0
  104. package/dist/v1/sources.d.ts.map +1 -0
  105. package/dist/v1/sources.js +218 -0
  106. package/dist/v1/sources.js.map +1 -0
  107. package/openapi/openapi.json +3587 -480
  108. package/package.json +74 -74
package/dist/refs.js CHANGED
@@ -156,30 +156,32 @@ function cloneResolved(hit) {
156
156
  return { ...hit };
157
157
  }
158
158
  }
159
- function substitute(value, objectType, resolved) {
159
+ function substitute(value, objectType, replace) {
160
160
  if (typeof value === "string") {
161
- const hit = resolved.get(referenceKey(objectType, value));
162
- return hit ? cloneResolved(hit) : value;
161
+ if (!value.trim())
162
+ return value;
163
+ const next = replace(value, objectType);
164
+ return next === undefined ? value : next;
163
165
  }
164
166
  if (!Array.isArray(value))
165
167
  return value;
166
168
  let changed = false;
167
169
  const next = value.map((item) => {
168
- if (typeof item !== "string")
170
+ if (typeof item !== "string" || !item.trim())
169
171
  return item;
170
- const hit = resolved.get(referenceKey(objectType, item));
171
- if (!hit)
172
+ const updated = replace(item, objectType);
173
+ if (updated === undefined)
172
174
  return item;
173
175
  changed = true;
174
- return cloneResolved(hit);
176
+ return updated;
175
177
  });
176
178
  return changed ? next : value;
177
179
  }
178
- function expandDeepKey(value, key, objectType, resolved) {
180
+ function expandDeepKey(value, key, objectType, replace) {
179
181
  if (Array.isArray(value)) {
180
182
  let changed = false;
181
183
  const next = value.map((item) => {
182
- const updated = expandDeepKey(item, key, objectType, resolved);
184
+ const updated = expandDeepKey(item, key, objectType, replace);
183
185
  if (updated !== item)
184
186
  changed = true;
185
187
  return updated;
@@ -191,22 +193,20 @@ function expandDeepKey(value, key, objectType, resolved) {
191
193
  let changed = false;
192
194
  const next = {};
193
195
  for (const [childKey, child] of Object.entries(value)) {
194
- const updated = childKey === key
195
- ? substitute(child, objectType, resolved)
196
- : expandDeepKey(child, key, objectType, resolved);
196
+ const updated = childKey === key ? substitute(child, objectType, replace) : expandDeepKey(child, key, objectType, replace);
197
197
  if (updated !== child)
198
198
  changed = true;
199
199
  next[childKey] = updated;
200
200
  }
201
201
  return changed ? next : value;
202
202
  }
203
- function expandAt(value, segments, objectType, resolved) {
203
+ function expandAt(value, segments, objectType, replace) {
204
204
  if (segments.length === 0)
205
- return substitute(value, objectType, resolved);
205
+ return substitute(value, objectType, replace);
206
206
  if (Array.isArray(value)) {
207
207
  let changed = false;
208
208
  const next = value.map((item) => {
209
- const updated = expandAt(item, segments, objectType, resolved);
209
+ const updated = expandAt(item, segments, objectType, replace);
210
210
  if (updated !== item)
211
211
  changed = true;
212
212
  return updated;
@@ -216,28 +216,34 @@ function expandAt(value, segments, objectType, resolved) {
216
216
  if (!isPlain(value) || !Object.prototype.hasOwnProperty.call(value, segments[0]))
217
217
  return value;
218
218
  const key = segments[0];
219
- const updated = expandAt(value[key], segments.slice(1), objectType, resolved);
219
+ const updated = expandAt(value[key], segments.slice(1), objectType, replace);
220
220
  if (updated === value[key])
221
221
  return value;
222
222
  return { ...value, [key]: updated };
223
223
  }
224
- /** Replace record ids with the records already loaded for those ids. */
225
- export function expandReferenceData(data, fields, resolved = NO_RESOLVED) {
226
- const refs = referenceFields(fields);
227
- if (refs.length === 0 || resolved.size === 0)
228
- return data;
224
+ /** Rewrite every reference id named by `refersTo` fields with `replace`. */
225
+ export function rewriteReferenceData(data, fields, replace) {
229
226
  let current = data;
230
- for (const field of refs) {
227
+ for (const field of referenceFields(fields)) {
231
228
  const segments = dataSegments(field.path);
232
229
  if (!segments)
233
230
  continue;
234
231
  current =
235
232
  segments.length === 1
236
- ? expandDeepKey(current, segments[0], field.refersTo.objectType, resolved)
237
- : expandAt(current, segments, field.refersTo.objectType, resolved);
233
+ ? expandDeepKey(current, segments[0], field.refersTo.objectType, replace)
234
+ : expandAt(current, segments, field.refersTo.objectType, replace);
238
235
  }
239
236
  return current;
240
237
  }
238
+ /** Replace record ids with the records already loaded for those ids. */
239
+ export function expandReferenceData(data, fields, resolved = NO_RESOLVED) {
240
+ if (referenceFields(fields).length === 0 || resolved.size === 0)
241
+ return data;
242
+ return rewriteReferenceData(data, fields, (id, objectType) => {
243
+ const hit = resolved.get(referenceKey(objectType, id));
244
+ return hit ? cloneResolved(hit) : undefined;
245
+ });
246
+ }
241
247
  function contentTypesToSearch(view) {
242
248
  const ids = view.contentTypes.map((ct) => ct.id).filter((id) => id !== "relationships");
243
249
  const leading = view.leadingContentType;
@@ -324,15 +330,19 @@ async function matchByField(upstream, scope, objectType, contentType, field, pen
324
330
  * Match `recordId` first, then identifier fields declared on the leading content type.
325
331
  * A failed lookup leaves that id unresolved.
326
332
  */
327
- export async function loadResolvedReferences(upstream, scope, catalog, targets) {
333
+ export async function loadResolvedReferences(upstream, scope, catalog, targets,
334
+ /** Filled with every id that was looked up, found or not. */
335
+ attempted) {
328
336
  const resolved = new Map();
329
337
  for (const [objectType, rawIds] of targets) {
330
338
  const view = findObjectType(catalog, objectType);
331
- if (!view)
339
+ if (!view || view.resolution === "conflict")
332
340
  continue;
333
341
  const pending = new Set([...rawIds].filter((id) => id.trim()).slice(0, REF_ID_LIMIT));
334
342
  if (pending.size === 0)
335
343
  continue;
344
+ for (const id of pending)
345
+ attempted?.add(referenceKey(objectType, id));
336
346
  const contentTypes = contentTypesToSearch(view);
337
347
  for (const contentType of contentTypes) {
338
348
  if (pending.size === 0)
package/dist/refs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../src/refs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,GAGf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AAUxD,MAAM,YAAY,GAAG,GAAG,CAAC;AACzB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,WAAW,GAAwC,IAAI,GAAG,EAAE,CAAC;AAEnE,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,QAAgB;IAC/D,OAAO,GAAG,UAAU,SAAS,QAAQ,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,CACL,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAClC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;QACpC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QACrC,MAAM,IAAI,KAAK,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,KAAK,EAA6D,EAAE,CACnE,OAAO,KAAK,CAAC,QAAQ,EAAE,UAAU,KAAK,QAAQ;QAC9C,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;QACpC,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/E,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,cAAc,CAAC,MAAmB;IACzC,OAAO,MAAM;SACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,MAAM;YAAE,OAAO,KAAK,CAAC;QACvD,IAAI,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACrD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC;IACpC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,KAA2B;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,UAAkB,EAAE,IAA8B;IAChF,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,GAAW,EAAE,UAAkB,EAAE,IAA8B;IACrG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAC5B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,IAAI,QAAQ,KAAK,GAAG;YAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;;YACjD,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAChB,KAAc,EACd,QAAkB,EAClB,UAAkB,EAClB,IAA8B;IAE9B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO;IAC5B,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAqC;IAC7E,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAA8B,EAC9B,KAA+C;IAE/C,KAAK,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QACtC,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,GAAG;YAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,uBAAuB,CACrC,QAAwC,EACxC,YAAsC,EACtC,KAAqC;IAErC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC5C,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;;oBAC1F,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,GAAmB;IACxC,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAKD,SAAS,UAAU,CAAC,KAAc,EAAE,UAAkB,EAAE,OAA0B;IAChF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,GAAW,EAAE,UAAkB,EAAE,OAA0B;IAChG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,GAAG,IAAI,CAAC;YACrC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,OAAO,GACX,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7G,IAAI,OAAO,KAAK,KAAK;YAAE,OAAO,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,QAAkB,EAAE,UAAkB,EAAE,OAA0B;IAClG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9D,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,GAAG,IAAI,CAAC;YACrC,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAChC,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAChG,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;IACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7E,IAAI,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;AACtC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,IAAa,EAAE,MAAmB,EAAE,OAA0B;IACjG,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,OAAO;YACL,QAAQ,CAAC,MAAM,KAAK,CAAC;gBACnB,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC1E,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CACjC,IAAa,EACb,MAAmB,EACnB,WAAgD,WAAW;IAE3D,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE;QAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,eAAe,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;IACxC,MAAM,OAAO,GACX,OAAO,IAAI,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClG,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,MAAM,CAAI,KAAU,EAAE,IAAY;IACzC,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IACpG,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB,EAAE,WAAmB,EAAE,KAAa,EAAE,GAAa,EAAE,MAAe;IACzG,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,IAAI,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,qBAAqB,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAAkB,EAClB,KAAkB,EAClB,UAAkB,EAClB,WAAmB,EACnB,KAAa,EACb,OAAoB,EACpB,QAAqC;IAErC,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAClC,IAAI,MAA0B,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAC/C,IAAI,IAAa,CAAC;YAClB,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;YAChG,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,aAAa;oBAAE,OAAO;gBACzC,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC3B,IAAI,CAAC,GAAG;oBAAE,SAAS;gBACnB,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,MAAM,OAAO,GAAG,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAChF,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAS;gBAChD,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACxB,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAChC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE;oBAChB,QAAQ,EAAE,QAAQ,IAAI,OAAO;oBAC7B,UAAU;oBACV,WAAW;oBACX,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;iBACvB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,UAAU,CAAC;YAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM;YAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAkB,EAClB,KAAkB,EAClB,OAAyB,EACzB,OAAiD;AACjD,6DAA6D;AAC7D,SAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IACnD,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,KAAK,UAAU;YAAE,SAAS;QACtD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,MAAM,EAAE,IAAI,OAAO;YAAE,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;QAChD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;gBAAE,MAAM;YAC9B,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,SAAS;QAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;QAC5D,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;gBAAE,MAAM;YAC9B,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/dist/scope.d.ts CHANGED
@@ -1,13 +1,36 @@
1
+ import type { AgentDirectory } from "./agent-directory.js";
1
2
  export type ClientScope = {
2
3
  orgId: string;
4
+ /** Effective agents sent to Memorix. `*` is expanded to the org's deployed agents. */
3
5
  agentIds: string[];
4
6
  caller: string;
7
+ /** What the caller sent in `x-memorix-agent-ids`. */
8
+ requestedAgentIds?: string[];
9
+ agentSelection?: "explicit" | "wildcard" | "implicit";
10
+ /** The org's deployed set. Absent when Memorix keeps no org agent record. */
11
+ deployedAgentIds?: string[];
12
+ /** Selected agents whose pack does not resolve. */
13
+ unresolvedAgentIds?: string[];
5
14
  };
15
+ /** How a route uses `x-memorix-agent-ids`. */
16
+ export type AgentRequirement = "required" | "optional" | "none";
6
17
  /** Org carried by a verified Authix token. A request org must be one of these. */
7
18
  export declare function orgFromToken(organizationIds: string[], requestedOrgId: string): string;
8
- export declare function scopeFromHeaders(headers: Record<string, string | string[] | undefined>, orgId?: string): ClientScope;
9
- export declare function scopeBody(scope: ClientScope): {
19
+ export declare function scopeFromHeaders(headers: Record<string, string | string[] | undefined>, orgId?: string, agents?: AgentRequirement): ClientScope;
20
+ /**
21
+ * Check the requested agents against the org's deployed set.
22
+ * `*` (or no header where the route allows it) selects every deployed agent.
23
+ * An installed agent the org has not deployed is `403 AGENT_NOT_DEPLOYED`; an id that is not installed is `400 AGENT_UNKNOWN`.
24
+ */
25
+ export declare function resolveAgentSelection(scope: ClientScope, directory: AgentDirectory, agents: AgentRequirement): Promise<ClientScope>;
26
+ export type ScopeEcho = {
10
27
  orgId: string;
11
28
  agentIds: string[];
29
+ caller?: string;
30
+ requestedAgentIds?: string[];
31
+ agentSelection?: ClientScope["agentSelection"];
32
+ deployedAgentIds?: string[];
33
+ unresolvedAgentIds?: string[];
12
34
  };
35
+ export declare function scopeBody(scope: ClientScope): ScopeEcho;
13
36
  //# sourceMappingURL=scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAeF,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAiBtF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,KAAK,SAAsC,GAC1C,WAAW,CAab;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAEnF"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IACtD,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAehE,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAiBtF;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,KAAK,SAAsC,EAC3C,MAAM,GAAE,gBAA6B,GACpC,WAAW,CAab;AAMD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,WAAW,CAAC,CAqDtB;AAED,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAEF,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAUvD"}
package/dist/scope.js CHANGED
@@ -26,21 +26,88 @@ export function orgFromToken(organizationIds, requestedOrgId) {
26
26
  }
27
27
  return requestedOrgId;
28
28
  }
29
- export function scopeFromHeaders(headers, orgId = header(headers, "x-memorix-org-id")) {
29
+ export function scopeFromHeaders(headers, orgId = header(headers, "x-memorix-org-id"), agents = "required") {
30
30
  const agentIds = agentIdsOf(headers);
31
31
  const caller = header(headers, "x-memorix-caller");
32
32
  if (!orgId) {
33
33
  throw new ApiError(400, "SCOPE_INVALID", "x-memorix-org-id is required");
34
34
  }
35
- if (agentIds.length === 0) {
35
+ if (agentIds.length === 0 && agents === "required") {
36
36
  throw new ApiError(400, "SCOPE_INVALID", "x-memorix-agent-ids is required");
37
37
  }
38
38
  if (!caller) {
39
39
  throw new ApiError(400, "SCOPE_INVALID", "x-memorix-caller is required");
40
40
  }
41
- return { orgId, agentIds, caller };
41
+ return { orgId, agentIds: agents === "none" ? [] : agentIds, caller };
42
+ }
43
+ function sortedUnique(ids) {
44
+ return [...new Set(ids)].sort((a, b) => a.localeCompare(b));
45
+ }
46
+ /**
47
+ * Check the requested agents against the org's deployed set.
48
+ * `*` (or no header where the route allows it) selects every deployed agent.
49
+ * An installed agent the org has not deployed is `403 AGENT_NOT_DEPLOYED`; an id that is not installed is `400 AGENT_UNKNOWN`.
50
+ */
51
+ export async function resolveAgentSelection(scope, directory, agents) {
52
+ if (agents === "none")
53
+ return scope;
54
+ const requested = scope.agentIds;
55
+ const wildcard = requested.includes("*");
56
+ const implicit = requested.length === 0;
57
+ const selection = implicit ? "implicit" : wildcard ? "wildcard" : "explicit";
58
+ const deployed = await directory.deployed(scope.orgId, scope.caller);
59
+ if (deployed === null) {
60
+ return {
61
+ ...scope,
62
+ requestedAgentIds: requested,
63
+ agentSelection: selection,
64
+ unresolvedAgentIds: [],
65
+ };
66
+ }
67
+ const deployedIds = deployed.map((agent) => agent.id);
68
+ const unresolved = new Set(deployed.filter((agent) => !agent.ok).map((agent) => agent.id));
69
+ let agentIds;
70
+ if (wildcard || implicit) {
71
+ if (deployedIds.length === 0 && !implicit) {
72
+ throw new ApiError(403, "AGENT_NOT_DEPLOYED", `no agents are recorded for org ${scope.orgId}`);
73
+ }
74
+ agentIds = deployedIds;
75
+ }
76
+ else {
77
+ const missing = requested.filter((id) => !deployedIds.includes(id));
78
+ if (missing.length > 0) {
79
+ const installed = new Set((await directory.installed(scope.orgId, scope.caller)).map((agent) => agent.id));
80
+ const unknown = missing.filter((id) => !installed.has(id));
81
+ if (unknown.length > 0) {
82
+ throw new ApiError(400, "AGENT_UNKNOWN", `agent ${unknown.join(", ")} is not installed`, {
83
+ details: { agentIds: unknown },
84
+ });
85
+ }
86
+ throw new ApiError(403, "AGENT_NOT_DEPLOYED", deployedIds.length === 0
87
+ ? `no agents are recorded for org ${scope.orgId}`
88
+ : `agent ${missing.join(", ")} is not deployed for org ${scope.orgId}`, { details: { agentIds: missing, deployedAgentIds: deployedIds } });
89
+ }
90
+ agentIds = requested;
91
+ }
92
+ agentIds = sortedUnique(agentIds);
93
+ return {
94
+ ...scope,
95
+ agentIds,
96
+ requestedAgentIds: requested,
97
+ agentSelection: selection,
98
+ deployedAgentIds: deployedIds,
99
+ unresolvedAgentIds: agentIds.filter((id) => unresolved.has(id)),
100
+ };
42
101
  }
43
102
  export function scopeBody(scope) {
44
- return { orgId: scope.orgId, agentIds: scope.agentIds };
103
+ return {
104
+ orgId: scope.orgId,
105
+ agentIds: scope.agentIds,
106
+ caller: scope.caller,
107
+ ...(scope.requestedAgentIds ? { requestedAgentIds: scope.requestedAgentIds } : {}),
108
+ ...(scope.agentSelection ? { agentSelection: scope.agentSelection } : {}),
109
+ ...(scope.deployedAgentIds ? { deployedAgentIds: scope.deployedAgentIds } : {}),
110
+ ...(scope.unresolvedAgentIds ? { unresolvedAgentIds: scope.unresolvedAgentIds } : {}),
111
+ };
45
112
  }
46
113
  //# sourceMappingURL=scope.js.map
package/dist/scope.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,SAAS,MAAM,CAAC,OAAsD,EAAE,IAAY;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,OAAsD;IACxE,OAAO,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;SAC1C,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,eAAyB,EAAE,cAAsB;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC;QACvC,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,eAAe,EACf,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAsD,EACtD,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC;IAE3C,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,iCAAiC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../src/scope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmBvC,SAAS,MAAM,CAAC,OAAsD,EAAE,IAAY;IAClF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,OAAsD;IACxE,OAAO,MAAM,CAAC,OAAO,EAAE,qBAAqB,CAAC;SAC1C,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,eAAyB,EAAE,cAAsB;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,2BAA2B,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC;QACvC,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,eAAe,EACf,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAsD,EACtD,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAC3C,SAA2B,UAAU;IAErC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACnD,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,iCAAiC,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,8BAA8B,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,GAAa;IACjC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAkB,EAClB,SAAyB,EACzB,MAAwB;IAExB,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;IACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IACxC,MAAM,SAAS,GAAkC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5G,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;YACL,GAAG,KAAK;YACR,iBAAiB,EAAE,SAAS;YAC5B,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,EAAE;SACvB,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3F,IAAI,QAAkB,CAAC;IACvB,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,oBAAoB,EAAE,kCAAkC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBACvF,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;iBAC/B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,oBAAoB,EACpB,WAAW,CAAC,MAAM,KAAK,CAAC;gBACtB,CAAC,CAAC,kCAAkC,KAAK,CAAC,KAAK,EAAE;gBACjD,CAAC,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,KAAK,CAAC,KAAK,EAAE,EACxE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;IACD,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO;QACL,GAAG,KAAK;QACR,QAAQ;QACR,iBAAiB,EAAE,SAAS;QAC5B,cAAc,EAAE,SAAS;QACzB,gBAAgB,EAAE,WAAW;QAC7B,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAChE,CAAC;AACJ,CAAC;AAYD,MAAM,UAAU,SAAS,CAAC,KAAkB;IAC1C,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { type Scoper } from "@x12i/memorix-scoper";
2
+ import { type MemorixTransport } from "@x12i/memorix-scoper-sdk";
3
+ import { type MemorixClient } from "@x12i/memorix-client";
4
+ import type { ScoperReasonerKind } from "./config.js";
5
+ import type { PeerChoice } from "./peers.js";
6
+ import { type ScoperHost } from "./scoper.js";
7
+ /**
8
+ * Scoper built in this process. The only module that imports the Scoper packages.
9
+ * `app.ts` loads it on demand, so a process that proxies a Scoper peer never loads them.
10
+ */
11
+ export type CreateScoperHostOptions = {
12
+ memorixUrl: string;
13
+ reasoner?: ScoperReasonerKind;
14
+ functionsDir?: string;
15
+ functionsPackage?: string;
16
+ /** Ask the coder to write a function on a miss. Default false. */
17
+ learnFunctions?: boolean;
18
+ env?: NodeJS.ProcessEnv;
19
+ scoper?: Scoper;
20
+ /** Where this host sits. Default embedded, with no peer URL. */
21
+ peer?: PeerChoice;
22
+ };
23
+ export declare function createScoperHost(options: CreateScoperHostOptions): Promise<ScoperHost>;
24
+ /**
25
+ * Scoper data access goes through `@x12i/memorix-client`.
26
+ * The SDK calls this instead of its own fetch.
27
+ */
28
+ export declare function memorixScoperTransport(client: Pick<MemorixClient, "explore" | "listObjectTypeKinds">): MemorixTransport;
29
+ //# sourceMappingURL=scoper-embedded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoper-embedded.d.ts","sourceRoot":"","sources":["../src/scoper-embedded.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EAEZ,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAA2C,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAML,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8E5F;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,qBAAqB,CAAC,GAC7D,gBAAgB,CAqFlB"}
@@ -0,0 +1,239 @@
1
+ import { createScoper, createScoperMcpServer, dispatcherOptionsFromEnv, } from "@x12i/memorix-scoper";
2
+ import { isScoperError, ScopeRequestSchema, ScoperError, SubjectDataRequestSchema, } from "@x12i/memorix-scoper-contracts";
3
+ import { parseObjectTypeCatalog, readSubjectData } from "@x12i/memorix-scoper-sdk";
4
+ import { createMemorixClient, MemorixClientError, } from "@x12i/memorix-client";
5
+ import { SCOPER_RELEASE, scoperErrorStatus, stripUntrusted, stripUntrustedRecord, } from "./scoper.js";
6
+ import { ApiError } from "./errors.js";
7
+ export async function createScoperHost(options) {
8
+ const reasoner = options.reasoner ?? "scripted";
9
+ const functionsDir = options.functionsDir?.trim() || undefined;
10
+ const functions = functionsDir
11
+ ? await loadFunctions(functionsDir, options.functionsPackage, options.learnFunctions === true)
12
+ : undefined;
13
+ const env = options.env ?? process.env;
14
+ const scoper = options.scoper ??
15
+ createScoper({
16
+ sdkConfig: {
17
+ memorixBaseUrls: [options.memorixUrl.replace(/\/+$/, "")],
18
+ createMemorixClient: ({ baseUrl, context, headers }) => memorixScoperTransport(createMemorixClient({
19
+ baseUrl,
20
+ orgId: context.orgId,
21
+ agentIds: [...context.agentIds],
22
+ caller: context.caller,
23
+ ...deploymentOf(headers),
24
+ })),
25
+ },
26
+ reasonerKind: reasoner,
27
+ ...(reasoner === "ai-dispatcher"
28
+ ? {
29
+ aiDispatcher: {
30
+ dispatcherOptions: dispatcherOptionsFromEnv(env),
31
+ model: env.SCOPER_AI_MODEL?.trim() || "openai/gpt-6-luna",
32
+ ...providerOf(env.SCOPER_AI_PROVIDER),
33
+ },
34
+ }
35
+ : {}),
36
+ ...(functions ? { functions } : {}),
37
+ });
38
+ const info = {
39
+ package: SCOPER_RELEASE.package,
40
+ version: SCOPER_RELEASE.version,
41
+ sdk: SCOPER_RELEASE.sdk,
42
+ functionsPackage: SCOPER_RELEASE.functionsPackage,
43
+ pagx: SCOPER_RELEASE.pagx,
44
+ reasoner,
45
+ functions: Boolean(functions),
46
+ aligned: {
47
+ memorixService: SCOPER_RELEASE.service,
48
+ memorixSkills: SCOPER_RELEASE.skills,
49
+ memorixClient: SCOPER_RELEASE.client,
50
+ aiDispatcher: SCOPER_RELEASE.aiDispatcher,
51
+ },
52
+ mode: "embedded",
53
+ source: options.peer?.source ?? "@x12i/memorix-scoper",
54
+ };
55
+ return {
56
+ info,
57
+ scope(scope, body, call) {
58
+ return mapped(() => {
59
+ const request = ScopeRequestSchema.parse(stripUntrusted(body));
60
+ return scoper.scope(request, contextOf(scope, call));
61
+ });
62
+ },
63
+ subjectData(scope, body, call) {
64
+ return mapped(() => {
65
+ const request = SubjectDataRequestSchema.parse(stripUntrusted(body));
66
+ return readSubjectData(scoper.deps.sdk.forContext(contextOf(scope, call)), request);
67
+ });
68
+ },
69
+ tools(scope, call) {
70
+ return mapped(async () => {
71
+ const server = mcpServer(scoper, scope, call);
72
+ return server.listTools ? await server.listTools() : server.tools;
73
+ });
74
+ },
75
+ callTool(scope, call, name, args) {
76
+ return mapped(async () => mcpServer(scoper, scope, call).callTool(name, stripUntrustedRecord(args)));
77
+ },
78
+ };
79
+ }
80
+ /**
81
+ * Scoper data access goes through `@x12i/memorix-client`.
82
+ * The SDK calls this instead of its own fetch.
83
+ */
84
+ export function memorixScoperTransport(client) {
85
+ return {
86
+ async listObjectTypes() {
87
+ try {
88
+ return parseObjectTypeCatalog(await client.listObjectTypeKinds());
89
+ }
90
+ catch (err) {
91
+ throw transportError(err, "listObjectTypes");
92
+ }
93
+ },
94
+ async getContent({ objectType, contentType, id, include }) {
95
+ try {
96
+ const body = asRecord(await client.explore.getContent({
97
+ objectType,
98
+ contentType,
99
+ recordId: id,
100
+ ...(include?.markdown === true ? { include: { markdown: true } } : {}),
101
+ }));
102
+ return { record: asRecord(body?.record) };
103
+ }
104
+ catch (err) {
105
+ throw transportError(err, "getContent");
106
+ }
107
+ },
108
+ async listContent({ objectType, contentType, limit, cursor, include }) {
109
+ try {
110
+ const body = asRecord(await client.explore.listContent({
111
+ objectType,
112
+ contentType,
113
+ ...(limit != null ? { limit } : {}),
114
+ ...(cursor ? { cursor } : {}),
115
+ ...(include?.markdown === true ? { include: { markdown: true } } : {}),
116
+ }));
117
+ const records = Array.isArray(body?.records)
118
+ ? body.records.filter((row) => isRecord(row))
119
+ : [];
120
+ const page = asRecord(body?.pageInfo);
121
+ const nextCursor = typeof page?.nextCursor === "string" ? page.nextCursor : null;
122
+ return { records, nextCursor };
123
+ }
124
+ catch (err) {
125
+ throw transportError(err, "listContent");
126
+ }
127
+ },
128
+ async composeContent({ recordId, contentTypes }) {
129
+ try {
130
+ const body = await client.explore.composeData({
131
+ recordId,
132
+ explicit: true,
133
+ ...(contentTypes?.length ? { contentTypes } : {}),
134
+ });
135
+ return {
136
+ found: true,
137
+ objectType: body.objectType ?? null,
138
+ contents: body.contents ?? {},
139
+ };
140
+ }
141
+ catch (err) {
142
+ if (isNotFound(err)) {
143
+ return {
144
+ found: false,
145
+ code: "READ_NOT_FOUND",
146
+ message: err instanceof Error ? err.message : "subject not found",
147
+ };
148
+ }
149
+ throw transportError(err, "composeContent");
150
+ }
151
+ },
152
+ async patchMarkdown({ objectType, contentType, id, revision, markdown }) {
153
+ try {
154
+ await client.explore.writeContent({
155
+ objectType,
156
+ contentType,
157
+ op: "patch",
158
+ precondition: { kind: "revision", revision },
159
+ expectedRevision: revision,
160
+ record: { recordId: id },
161
+ patch: [{ op: "set", path: "_markdown", value: markdown }],
162
+ });
163
+ return { written: true };
164
+ }
165
+ catch (err) {
166
+ throw transportError(err, "patchMarkdown");
167
+ }
168
+ },
169
+ };
170
+ }
171
+ async function mapped(call) {
172
+ try {
173
+ return await call();
174
+ }
175
+ catch (err) {
176
+ if (isScoperError(err))
177
+ throw new ApiError(scoperErrorStatus(err.code), err.code, err.message);
178
+ throw err;
179
+ }
180
+ }
181
+ async function loadFunctions(dir, packageName, learn) {
182
+ const mod = await import("@x12i/memorix-scoper-functions");
183
+ return mod.createScopeFunctions({
184
+ dir,
185
+ learn,
186
+ ...(packageName?.trim() ? { packageName: packageName.trim() } : {}),
187
+ });
188
+ }
189
+ function providerOf(raw) {
190
+ const provider = raw?.trim();
191
+ if (provider === "openrouter" || provider === "bedrock" || provider === "openai")
192
+ return { provider };
193
+ return {};
194
+ }
195
+ function mcpServer(scoper, scope, call) {
196
+ return createScoperMcpServer({
197
+ scoper,
198
+ context: contextOf(scope, call),
199
+ });
200
+ }
201
+ function contextOf(scope, call) {
202
+ return {
203
+ orgId: scope.orgId,
204
+ agentIds: scope.agentIds,
205
+ caller: scope.caller,
206
+ traceId: call.traceId,
207
+ };
208
+ }
209
+ function deploymentOf(headers) {
210
+ const fromHeader = headers["x-memorix-deployment-identity"]?.trim();
211
+ const fromEnv = process.env.MEMORIX_DEPLOYMENT_IDENTITY?.trim();
212
+ const deploymentIdentity = fromHeader || fromEnv;
213
+ return deploymentIdentity ? { deploymentIdentity } : {};
214
+ }
215
+ function isRecord(value) {
216
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
217
+ }
218
+ function asRecord(value) {
219
+ return isRecord(value) ? value : null;
220
+ }
221
+ function isNotFound(err) {
222
+ if (err instanceof MemorixClientError && err.statusCode === 404)
223
+ return true;
224
+ if (!err || typeof err !== "object")
225
+ return false;
226
+ const code = "code" in err ? String(err.code) : "";
227
+ const status = "statusCode" in err ? Number(err.statusCode) : 0;
228
+ return status === 404 || code === "READ_NOT_FOUND" || code === "NOT_FOUND";
229
+ }
230
+ function transportError(err, op) {
231
+ if (err instanceof ScoperError)
232
+ return err;
233
+ if (isNotFound(err)) {
234
+ return new ScoperError("READ_NOT_FOUND", `${op}: subject not found`);
235
+ }
236
+ const message = err instanceof Error ? err.message : String(err);
237
+ return new ScoperError("UPSTREAM_UNAVAILABLE", `${op}: ${message}`, { retryable: true });
238
+ }
239
+ //# sourceMappingURL=scoper-embedded.js.map