@amigo-ai/platform-sdk 0.4.4 → 0.4.6

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 (102) hide show
  1. package/README.md +12 -8
  2. package/api.md +50 -0
  3. package/assets/readme/platform-architecture.svg +75 -89
  4. package/dist/index.cjs +305 -1
  5. package/dist/index.cjs.map +3 -3
  6. package/dist/index.mjs +305 -1
  7. package/dist/index.mjs.map +3 -3
  8. package/dist/resources/actions.js +9 -0
  9. package/dist/resources/actions.js.map +1 -1
  10. package/dist/resources/agents.js +6 -0
  11. package/dist/resources/agents.js.map +1 -1
  12. package/dist/resources/analytics.js +18 -0
  13. package/dist/resources/analytics.js.map +1 -1
  14. package/dist/resources/api-keys.js +3 -0
  15. package/dist/resources/api-keys.js.map +1 -1
  16. package/dist/resources/audit.js +9 -0
  17. package/dist/resources/audit.js.map +1 -1
  18. package/dist/resources/base.js +26 -0
  19. package/dist/resources/base.js.map +1 -1
  20. package/dist/resources/billing.js +3 -0
  21. package/dist/resources/billing.js.map +1 -1
  22. package/dist/resources/calls.js +9 -0
  23. package/dist/resources/calls.js.map +1 -1
  24. package/dist/resources/context-graphs.js +7 -1
  25. package/dist/resources/context-graphs.js.map +1 -1
  26. package/dist/resources/data-sources.js +3 -0
  27. package/dist/resources/data-sources.js.map +1 -1
  28. package/dist/resources/integrations.js +3 -0
  29. package/dist/resources/integrations.js.map +1 -1
  30. package/dist/resources/operators.js +16 -0
  31. package/dist/resources/operators.js.map +1 -1
  32. package/dist/resources/personas.js +3 -0
  33. package/dist/resources/personas.js.map +1 -1
  34. package/dist/resources/phone-numbers.js +3 -0
  35. package/dist/resources/phone-numbers.js.map +1 -1
  36. package/dist/resources/review-queue.js +9 -0
  37. package/dist/resources/review-queue.js.map +1 -1
  38. package/dist/resources/services.js +3 -0
  39. package/dist/resources/services.js.map +1 -1
  40. package/dist/resources/settings.js +45 -0
  41. package/dist/resources/settings.js.map +1 -1
  42. package/dist/resources/skills.js +3 -0
  43. package/dist/resources/skills.js.map +1 -1
  44. package/dist/resources/triggers.js +6 -0
  45. package/dist/resources/triggers.js.map +1 -1
  46. package/dist/resources/webhook-destinations.js +6 -0
  47. package/dist/resources/webhook-destinations.js.map +1 -1
  48. package/dist/resources/workspaces.js +3 -0
  49. package/dist/resources/workspaces.js.map +1 -1
  50. package/dist/resources/world.js +34 -0
  51. package/dist/resources/world.js.map +1 -1
  52. package/dist/types/generated/api.d.ts +183 -9
  53. package/dist/types/generated/api.d.ts.map +1 -1
  54. package/dist/types/resources/actions.d.ts +45 -0
  55. package/dist/types/resources/actions.d.ts.map +1 -1
  56. package/dist/types/resources/agents.d.ts +24 -0
  57. package/dist/types/resources/agents.d.ts.map +1 -1
  58. package/dist/types/resources/analytics.d.ts +36 -0
  59. package/dist/types/resources/analytics.d.ts.map +1 -1
  60. package/dist/types/resources/api-keys.d.ts +16 -0
  61. package/dist/types/resources/api-keys.d.ts.map +1 -1
  62. package/dist/types/resources/audit.d.ts +54 -0
  63. package/dist/types/resources/audit.d.ts.map +1 -1
  64. package/dist/types/resources/base.d.ts +11 -0
  65. package/dist/types/resources/base.d.ts.map +1 -1
  66. package/dist/types/resources/billing.d.ts +17 -0
  67. package/dist/types/resources/billing.d.ts.map +1 -1
  68. package/dist/types/resources/calls.d.ts +34 -0
  69. package/dist/types/resources/calls.d.ts.map +1 -1
  70. package/dist/types/resources/context-graphs.d.ts +29 -2
  71. package/dist/types/resources/context-graphs.d.ts.map +1 -1
  72. package/dist/types/resources/data-sources.d.ts +26 -0
  73. package/dist/types/resources/data-sources.d.ts.map +1 -1
  74. package/dist/types/resources/functions.d.ts.map +1 -1
  75. package/dist/types/resources/integrations.d.ts +21 -0
  76. package/dist/types/resources/integrations.d.ts.map +1 -1
  77. package/dist/types/resources/memory.d.ts.map +1 -1
  78. package/dist/types/resources/operators.d.ts +73 -0
  79. package/dist/types/resources/operators.d.ts.map +1 -1
  80. package/dist/types/resources/personas.d.ts +14 -0
  81. package/dist/types/resources/personas.d.ts.map +1 -1
  82. package/dist/types/resources/phone-numbers.d.ts +15 -0
  83. package/dist/types/resources/phone-numbers.d.ts.map +1 -1
  84. package/dist/types/resources/review-queue.d.ts +60 -0
  85. package/dist/types/resources/review-queue.d.ts.map +1 -1
  86. package/dist/types/resources/safety.d.ts.map +1 -1
  87. package/dist/types/resources/services.d.ts +26 -0
  88. package/dist/types/resources/services.d.ts.map +1 -1
  89. package/dist/types/resources/settings.d.ts +74 -0
  90. package/dist/types/resources/settings.d.ts.map +1 -1
  91. package/dist/types/resources/simulations.d.ts.map +1 -1
  92. package/dist/types/resources/skills.d.ts +38 -0
  93. package/dist/types/resources/skills.d.ts.map +1 -1
  94. package/dist/types/resources/triggers.d.ts +30 -0
  95. package/dist/types/resources/triggers.d.ts.map +1 -1
  96. package/dist/types/resources/webhook-destinations.d.ts +26 -0
  97. package/dist/types/resources/webhook-destinations.d.ts.map +1 -1
  98. package/dist/types/resources/workspaces.d.ts +12 -0
  99. package/dist/types/resources/workspaces.d.ts.map +1 -1
  100. package/dist/types/resources/world.d.ts +132 -0
  101. package/dist/types/resources/world.d.ts.map +1 -1
  102. package/package.json +7 -7
package/README.md CHANGED
@@ -26,7 +26,7 @@
26
26
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License" /></a>
27
27
  </p>
28
28
 
29
- Typed from the committed `openapi.json` snapshot, validated on Node 18, 20, and 22, and tested as packaged ESM and CommonJS tarballs before release.
29
+ Typed from the committed `openapi.json` snapshot, validated on active LTS Node releases (20, 22, and 24), and tested as packaged ESM and CommonJS tarballs before release.
30
30
 
31
31
  ## Platform context
32
32
 
@@ -119,7 +119,7 @@ The SDK is built around web-standard primitives. Use it in runtimes that provide
119
119
  - `TextEncoder` / `TextDecoder`
120
120
  - `crypto.subtle` for webhook signature verification
121
121
 
122
- CI currently validates Node-based packaging and runtime behavior. Standards-based edge/server runtimes with the same APIs work well with the low-level request wrappers.
122
+ CI currently validates active LTS Node releases. Standards-based edge/server runtimes with the same APIs work well with the low-level request wrappers.
123
123
 
124
124
  ## Generated Types
125
125
 
@@ -586,18 +586,22 @@ const client = new AmigoClient({
586
586
 
587
587
  ## Pagination
588
588
 
589
- All list methods return `{ items, has_more, continuation_token }`. Use the `paginate` utility to iterate all pages automatically:
589
+ The SDK now exposes first-class async auto-pagination helpers on collection resources:
590
590
 
591
591
  ```typescript
592
- import { AmigoClient, paginate } from '@amigo-ai/platform-sdk'
592
+ import { AmigoClient } from '@amigo-ai/platform-sdk'
593
+
594
+ for await (const agent of client.agents.listAutoPaging({ limit: 100 })) {
595
+ console.log(agent.name)
596
+ }
593
597
 
594
- for await (const entity of paginate((token) =>
595
- client.world.listEntities({ continuation_token: token, limit: 100 }),
596
- )) {
597
- // process entity
598
+ for await (const entity of client.world.listEntitiesAutoPaging({ limit: 100 })) {
599
+ console.log(entity.display_name)
598
600
  }
599
601
  ```
600
602
 
603
+ For custom pagination flows, the lower-level `paginate(...)` utility remains available.
604
+
601
605
  ## Error handling
602
606
 
603
607
  All SDK errors extend `AmigoError`. Use type guards for specific handling:
package/api.md CHANGED
@@ -61,6 +61,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
61
61
 
62
62
  - `create`
63
63
  - `list`
64
+ - `listAutoPaging`
64
65
  - `get`
65
66
  - `update`
66
67
  - `archive`
@@ -70,6 +71,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
70
71
  - `me`
71
72
  - `create`
72
73
  - `list`
74
+ - `listAutoPaging`
73
75
  - `revoke`
74
76
  - `rotate`
75
77
 
@@ -77,10 +79,12 @@ All workspace-scoped resources also expose `withOptions(options)`.
77
79
 
78
80
  - `create`
79
81
  - `list`
82
+ - `listAutoPaging`
80
83
  - `get`
81
84
  - `update`
82
85
  - `delete`
83
86
  - `listVersions`
87
+ - `listVersionsAutoPaging`
84
88
  - `getVersion`
85
89
  - `createVersion`
86
90
 
@@ -88,6 +92,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
88
92
 
89
93
  - `create`
90
94
  - `list`
95
+ - `listAutoPaging`
91
96
  - `get`
92
97
  - `update`
93
98
  - `delete`
@@ -97,19 +102,24 @@ All workspace-scoped resources also expose `withOptions(options)`.
97
102
 
98
103
  - `create`
99
104
  - `list`
105
+ - `listAutoPaging`
100
106
  - `get`
101
107
  - `update`
102
108
  - `delete`
109
+ - `getReferences`
103
110
  - `test`
104
111
 
105
112
  ### `operators`
106
113
 
107
114
  - `list`
115
+ - `listAutoPaging`
108
116
  - `create`
109
117
  - `get`
118
+ - `update`
110
119
  - `getDashboard`
111
120
  - `getQueue`
112
121
  - `getEscalations`
122
+ - `getEscalationsAutoPaging`
113
123
  - `getActiveEscalations`
114
124
  - `getEscalationStats`
115
125
  - `getPerformance`
@@ -122,10 +132,12 @@ All workspace-scoped resources also expose `withOptions(options)`.
122
132
  - `wrapUp`
123
133
  - `getCallTranscript`
124
134
  - `getAuditLog`
135
+ - `getAuditLogAutoPaging`
125
136
 
126
137
  ### `triggers`
127
138
 
128
139
  - `list`
140
+ - `listAutoPaging`
129
141
  - `create`
130
142
  - `get`
131
143
  - `update`
@@ -134,11 +146,13 @@ All workspace-scoped resources also expose `withOptions(options)`.
134
146
  - `pause`
135
147
  - `resume`
136
148
  - `listRuns`
149
+ - `listRunsAutoPaging`
137
150
 
138
151
  ### `services`
139
152
 
140
153
  - `create`
141
154
  - `list`
155
+ - `listAutoPaging`
142
156
  - `get`
143
157
  - `update`
144
158
  - `delete`
@@ -147,17 +161,20 @@ All workspace-scoped resources also expose `withOptions(options)`.
147
161
 
148
162
  - `create`
149
163
  - `list`
164
+ - `listAutoPaging`
150
165
  - `get`
151
166
  - `update`
152
167
  - `delete`
153
168
  - `createVersion`
154
169
  - `listVersions`
170
+ - `listVersionsAutoPaging`
155
171
  - `getVersion`
156
172
 
157
173
  ### `dataSources`
158
174
 
159
175
  - `create`
160
176
  - `list`
177
+ - `listAutoPaging`
161
178
  - `get`
162
179
  - `update`
163
180
  - `delete`
@@ -167,18 +184,24 @@ All workspace-scoped resources also expose `withOptions(options)`.
167
184
  ### `world`
168
185
 
169
186
  - `listEntities`
187
+ - `listEntitiesAutoPaging`
170
188
  - `getEntity`
171
189
  - `getRelationships`
172
190
  - `getGraph`
173
191
  - `getProvenance`
174
192
  - `getLineage`
175
193
  - `getMerged`
194
+ - `getConnectors`
195
+ - `getConnectorEntities`
196
+ - `getConnectorResources`
176
197
  - `listEntityTypes`
177
198
  - `listDuplicates`
178
199
  - `search`
179
200
  - `getTimeline`
201
+ - `getTimelineAutoPaging`
180
202
  - `getSyncStatusBySink`
181
203
  - `listSyncEvents`
204
+ - `listSyncEventsAutoPaging`
182
205
  - `getSyncQueueDepth`
183
206
  - `retrySyncEvent`
184
207
  - `retryAllSyncEvents`
@@ -188,16 +211,19 @@ All workspace-scoped resources also expose `withOptions(options)`.
188
211
  ### `calls`
189
212
 
190
213
  - `list`
214
+ - `listAutoPaging`
191
215
  - `get`
192
216
  - `getIntelligence`
193
217
  - `getActiveIntelligence`
194
218
  - `getBenchmarks`
219
+ - `getPhoneVolume`
195
220
  - `getTraceAnalysis`
196
221
 
197
222
  ### `phoneNumbers`
198
223
 
199
224
  - `provision`
200
225
  - `list`
226
+ - `listAutoPaging`
201
227
  - `get`
202
228
  - `update`
203
229
  - `release`
@@ -208,6 +234,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
208
234
 
209
235
  - `create`
210
236
  - `list`
237
+ - `listAutoPaging`
211
238
  - `get`
212
239
  - `update`
213
240
  - `delete`
@@ -225,6 +252,9 @@ All workspace-scoped resources also expose `withOptions(options)`.
225
252
  - `getToolPerformance`
226
253
  - `getDataQuality`
227
254
  - `getUsage`
255
+ - `getEventBreakdown`
256
+ - `getSafetyTrends`
257
+ - `getOperatorPerformance`
228
258
  - `getAdvancedCallStats`
229
259
  - `compareCallPeriods`
230
260
 
@@ -251,6 +281,16 @@ All workspace-scoped resources also expose `withOptions(options)`.
251
281
  - `security.update`
252
282
  - `retention.get`
253
283
  - `retention.update`
284
+ - `behaviors.get`
285
+ - `behaviors.update`
286
+ - `gapScanner.get`
287
+ - `gapScanner.update`
288
+ - `scribe.get`
289
+ - `scribe.update`
290
+ - `metrics.get`
291
+ - `metrics.update`
292
+ - `environments.get`
293
+ - `environments.update`
254
294
  - `workflows.get`
255
295
  - `workflows.update`
256
296
 
@@ -260,6 +300,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
260
300
  - `getUsage`
261
301
  - `getUsageTrends`
262
302
  - `listInvoices`
303
+ - `listInvoicesAutoPaging`
263
304
  - `getInvoice`
264
305
  - `getInvoicePdf`
265
306
 
@@ -272,6 +313,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
272
313
  ### `personas`
273
314
 
274
315
  - `list`
316
+ - `listAutoPaging`
275
317
  - `create`
276
318
  - `get`
277
319
  - `update`
@@ -280,10 +322,12 @@ All workspace-scoped resources also expose `withOptions(options)`.
280
322
  ### `reviewQueue`
281
323
 
282
324
  - `list`
325
+ - `listAutoPaging`
283
326
  - `get`
284
327
  - `getStats`
285
328
  - `getDashboard`
286
329
  - `getMyQueue`
330
+ - `getMyQueueAutoPaging`
287
331
  - `approve`
288
332
  - `reject`
289
333
  - `claim`
@@ -292,6 +336,7 @@ All workspace-scoped resources also expose `withOptions(options)`.
292
336
  - `batchApprove`
293
337
  - `batchReject`
294
338
  - `getHistory`
339
+ - `getHistoryAutoPaging`
295
340
  - `getTrends`
296
341
  - `getPerformance`
297
342
  - `getCorrectionSchema`
@@ -306,20 +351,25 @@ All workspace-scoped resources also expose `withOptions(options)`.
306
351
  ### `audit`
307
352
 
308
353
  - `list`
354
+ - `listAutoPaging`
309
355
  - `getSummary`
310
356
  - `getPhiAccess`
357
+ - `getPhiAccessAutoPaging`
311
358
  - `createExport`
312
359
  - `listExports`
313
360
  - `getEntityAccessLog`
361
+ - `getEntityAccessLogAutoPaging`
314
362
 
315
363
  ### `webhookDestinations`
316
364
 
317
365
  - `list`
366
+ - `listAutoPaging`
318
367
  - `create`
319
368
  - `get`
320
369
  - `update`
321
370
  - `delete`
322
371
  - `listDeliveries`
372
+ - `listDeliveriesAutoPaging`
323
373
  - `rotateSecret`
324
374
 
325
375
  ### `safety`
@@ -1,117 +1,103 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="540" viewBox="0 0 1200 540">
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="480" viewBox="0 0 1200 480">
2
2
  <defs>
3
- <linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
4
- <stop offset="0%" stop-color="#081E2A"/>
5
- <stop offset="55%" stop-color="#0A2C3B"/>
6
- <stop offset="100%" stop-color="#051822"/>
3
+ <linearGradient id="bg" x1="0" y1="0" x2="0.6" y2="1">
4
+ <stop offset="0%" stop-color="#083241"/>
5
+ <stop offset="100%" stop-color="#051A24"/>
7
6
  </linearGradient>
8
- <radialGradient id="glowLeft" cx="0.2" cy="0.22" r="0.7">
9
- <stop offset="0%" stop-color="#26C6FF" stop-opacity="0.18"/>
10
- <stop offset="100%" stop-color="#26C6FF" stop-opacity="0"/>
11
- </radialGradient>
12
- <radialGradient id="glowRight" cx="0.84" cy="0.16" r="0.55">
13
- <stop offset="0%" stop-color="#7DE1B5" stop-opacity="0.12"/>
14
- <stop offset="100%" stop-color="#7DE1B5" stop-opacity="0"/>
15
- </radialGradient>
16
- <linearGradient id="panelStroke" x1="0" y1="0" x2="1" y2="1">
17
- <stop offset="0%" stop-color="#FFFFFF" stop-opacity="0.14"/>
18
- <stop offset="100%" stop-color="#92B4C3" stop-opacity="0.06"/>
7
+ <linearGradient id="strokeGrad" x1="0" y1="0" x2="1" y2="1">
8
+ <stop offset="0%" stop-color="white" stop-opacity="0.1"/>
9
+ <stop offset="100%" stop-color="#999" stop-opacity="0.04"/>
19
10
  </linearGradient>
20
- <linearGradient id="highlightStroke" x1="0" y1="0" x2="1" y2="1">
21
- <stop offset="0%" stop-color="#82E4FF" stop-opacity="0.92"/>
22
- <stop offset="100%" stop-color="#64AFFF" stop-opacity="0.56"/>
11
+ <linearGradient id="strokeGradSubtle" x1="0" y1="0" x2="1" y2="1">
12
+ <stop offset="0%" stop-color="white" stop-opacity="0.08"/>
13
+ <stop offset="100%" stop-color="#999" stop-opacity="0.03"/>
23
14
  </linearGradient>
24
- <linearGradient id="arrowStroke" x1="0" y1="0" x2="1" y2="0">
25
- <stop offset="0%" stop-color="#8EE4FF"/>
26
- <stop offset="100%" stop-color="#7FC8FF"/>
27
- </linearGradient>
28
- <marker id="arrow" viewBox="0 0 12 12" refX="10.5" refY="6" markerWidth="8" markerHeight="8" orient="auto">
29
- <path d="M 0 0 L 12 6 L 0 12 z" fill="#8EE4FF"/>
15
+ <marker id="arrow" viewBox="0 0 10 7" refX="9" refY="3.5" markerWidth="8" markerHeight="6" orient="auto-start-reverse">
16
+ <path d="M 0 0.5 L 9 3.5 L 0 6.5" fill="none" stroke="white" stroke-width="1" opacity="0.2"/>
30
17
  </marker>
31
18
  </defs>
32
19
 
33
- <rect width="1200" height="540" fill="url(#bg)"/>
34
- <rect width="1200" height="540" fill="url(#glowLeft)"/>
35
- <rect width="1200" height="540" fill="url(#glowRight)"/>
36
-
37
- <text x="68" y="62" font-family="'SFMono-Regular', Menlo, monospace" font-size="13" font-weight="600" fill="#BBD1DC" letter-spacing="2.4">PLATFORM CONTEXT</text>
38
- <text x="68" y="98" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="30" font-weight="700" fill="white">How the TypeScript SDK fits into the stack</text>
39
- <text x="68" y="126" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="15" fill="#A9C0CB">Your runtime calls the SDK, the SDK targets the workspace-scoped Platform API, and the API fronts the operational systems behind the product.</text>
40
-
41
- <rect x="60" y="152" width="246" height="208" rx="22" fill="white" fill-opacity="0.045" stroke="url(#panelStroke)" stroke-width="1"/>
42
- <text x="88" y="184" font-family="'SFMono-Regular', Menlo, monospace" font-size="12" font-weight="600" fill="#B4C9D4" letter-spacing="2">YOUR RUNTIME</text>
20
+ <rect width="1200" height="480" fill="url(#bg)"/>
43
21
 
44
- <rect x="82" y="206" width="202" height="42" rx="12" fill="#173E4D" fill-opacity="0.95" stroke="white" stroke-opacity="0.06"/>
45
- <text x="183" y="231" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" font-weight="600" fill="white">Node servers</text>
22
+ <!-- ====== PLATFORM SYSTEMS (top) ====== -->
23
+ <rect x="32" y="32" width="880" height="260" rx="10" fill="white" fill-opacity="0.03" stroke="url(#strokeGrad)" stroke-width="0.75"/>
24
+ <text x="60" y="60" font-family="'Diatype Mono', 'SF Mono', monospace" font-size="13" font-weight="500" fill="white" fill-opacity="0.55" letter-spacing="2">PLATFORM SYSTEMS</text>
46
25
 
47
- <rect x="82" y="260" width="202" height="42" rx="12" fill="#173E4D" fill-opacity="0.88" stroke="white" stroke-opacity="0.06"/>
48
- <text x="183" y="285" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" font-weight="600" fill="white">Workers and jobs</text>
26
+ <!-- Row 1 -->
27
+ <rect x="52" y="78" width="200" height="60" rx="8" fill="white" fill-opacity="0.1" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
28
+ <text x="152" y="103" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Agent Engine</text>
29
+ <text x="152" y="121" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Phone, text, simulation</text>
49
30
 
50
- <rect x="82" y="314" width="202" height="42" rx="12" fill="#173E4D" fill-opacity="0.82" stroke="white" stroke-opacity="0.06"/>
51
- <text x="183" y="339" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" font-weight="600" fill="white">Edge or BFF layers</text>
31
+ <rect x="268" y="78" width="200" height="60" rx="8" fill="white" fill-opacity="0.1" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
32
+ <text x="368" y="103" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Clinical Copilot</text>
33
+ <text x="368" y="121" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">SOAP, ICD-10, CDS</text>
52
34
 
53
- <rect x="366" y="128" width="338" height="256" rx="24" fill="#0D3446" fill-opacity="0.9" stroke="url(#highlightStroke)" stroke-width="1.5"/>
54
- <text x="394" y="162" font-family="'SFMono-Regular', Menlo, monospace" font-size="12" font-weight="600" fill="#BFEBFF" letter-spacing="2">SDK LAYER</text>
55
- <text x="394" y="214" font-family="'SFMono-Regular', Menlo, monospace" font-size="28" font-weight="700" fill="white">@amigo-ai/platform-sdk</text>
56
- <text x="394" y="245" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#C4D8E1">Typed workspace-scoped client for the Platform API.</text>
57
- <text x="394" y="271" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#C4D8E1">It keeps auth, retries, webhooks, request control,</text>
58
- <text x="394" y="295" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="16" fill="#C4D8E1">and generated types on the package surface.</text>
35
+ <rect x="484" y="78" width="200" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
36
+ <text x="584" y="103" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Emotion Engine</text>
37
+ <text x="584" y="121" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Acoustic intelligence</text>
59
38
 
60
- <rect x="394" y="321" width="114" height="30" rx="15" fill="#123D50" stroke="#7CCFFF" stroke-opacity="0.28"/>
61
- <text x="451" y="340" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="13" font-weight="600" fill="#DFF4FF">Typed surface</text>
62
- <rect x="519" y="321" width="104" height="30" rx="15" fill="#123D50" stroke="#7CCFFF" stroke-opacity="0.22"/>
63
- <text x="571" y="340" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="13" font-weight="600" fill="#DFF4FF">ESM + CJS</text>
64
- <rect x="394" y="360" width="110" height="30" rx="15" fill="#123D50" stroke="#7CCFFF" stroke-opacity="0.22"/>
65
- <text x="449" y="379" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="13" font-weight="600" fill="#DFF4FF">Webhooks</text>
66
- <rect x="515" y="360" width="136" height="30" rx="15" fill="#123D50" stroke="#7CCFFF" stroke-opacity="0.22"/>
67
- <text x="583" y="379" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="13" font-weight="600" fill="#DFF4FF">Request control</text>
39
+ <rect x="700" y="78" width="192" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
40
+ <text x="796" y="103" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Connector Runner</text>
41
+ <text x="796" y="121" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">EHR, FHIR, CRM sync</text>
68
42
 
69
- <rect x="764" y="110" width="376" height="296" rx="22" fill="white" fill-opacity="0.045" stroke="url(#panelStroke)" stroke-width="1"/>
70
- <text x="792" y="142" font-family="'SFMono-Regular', Menlo, monospace" font-size="12" font-weight="600" fill="#B4C9D4" letter-spacing="2">PLATFORM API</text>
71
- <text x="792" y="172" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="15" fill="#C0D4DE">Workspace-scoped REST resources exposed by the SDK.</text>
43
+ <!-- Row 2 -->
44
+ <rect x="52" y="152" width="200" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
45
+ <text x="152" y="177" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Operators</text>
46
+ <text x="152" y="195" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Monitoring, escalation</text>
72
47
 
73
- <rect x="792" y="198" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.9" stroke="white" stroke-opacity="0.06"/>
74
- <text x="866" y="222" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">Agents</text>
75
- <text x="866" y="241" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Actions, skills, services</text>
48
+ <rect x="268" y="152" width="200" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
49
+ <text x="368" y="177" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Metric Store</text>
50
+ <text x="368" y="195" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Config-driven analytics</text>
76
51
 
77
- <rect x="962" y="198" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.86" stroke="white" stroke-opacity="0.06"/>
78
- <text x="1036" y="222" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">Calls</text>
79
- <text x="1036" y="241" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Voice, history, recordings</text>
52
+ <rect x="484" y="152" width="200" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
53
+ <text x="584" y="177" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Surfaces</text>
54
+ <text x="584" y="195" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Forms, data capture</text>
80
55
 
81
- <rect x="792" y="270" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.86" stroke="white" stroke-opacity="0.06"/>
82
- <text x="866" y="294" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">World</text>
83
- <text x="866" y="313" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Entities and events</text>
56
+ <rect x="700" y="152" width="192" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
57
+ <text x="796" y="177" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Outbound Dispatch</text>
58
+ <text x="796" y="195" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Campaigns, follow-ups</text>
84
59
 
85
- <rect x="962" y="270" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.82" stroke="white" stroke-opacity="0.06"/>
86
- <text x="1036" y="294" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">Analytics</text>
87
- <text x="1036" y="313" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Dashboards and trends</text>
60
+ <!-- Annotation: read + write -->
61
+ <text x="472" y="248" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" font-weight="500" fill="white" fill-opacity="0.5">read + write</text>
62
+ <line x1="390" y1="254" x2="390" y2="280" stroke="white" stroke-width="1" stroke-opacity="0.15" marker-end="url(#arrow)"/>
63
+ <line x1="555" y1="254" x2="555" y2="280" stroke="white" stroke-width="1" stroke-opacity="0.15" marker-end="url(#arrow)"/>
88
64
 
89
- <rect x="792" y="342" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.82" stroke="white" stroke-opacity="0.06"/>
90
- <text x="866" y="366" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">Webhooks</text>
91
- <text x="866" y="385" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Signed inbound events</text>
65
+ <!-- ====== CLASSIC API (top right) ====== -->
66
+ <rect x="940" y="32" width="228" height="260" rx="10" fill="white" fill-opacity="0.03" stroke="url(#strokeGrad)" stroke-width="0.75"/>
67
+ <text x="968" y="60" font-family="'Diatype Mono', 'SF Mono', monospace" font-size="13" font-weight="500" fill="white" fill-opacity="0.55" letter-spacing="2">CLASSIC API</text>
92
68
 
93
- <rect x="962" y="342" width="148" height="54" rx="14" fill="#173E4D" fill-opacity="0.78" stroke="white" stroke-opacity="0.06"/>
94
- <text x="1036" y="366" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="17" font-weight="600" fill="white">Operations</text>
95
- <text x="1036" y="385" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="12" fill="#B0C5CF">Operators, integrations, numbers</text>
69
+ <rect x="960" y="78" width="188" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
70
+ <text x="1054" y="103" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Text Chat</text>
71
+ <text x="1054" y="121" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">WebSocket streaming</text>
96
72
 
97
- <path d="M 306 256 C 328 256 344 256 366 256" fill="none" stroke="url(#arrowStroke)" stroke-width="2.5" stroke-linecap="round" marker-end="url(#arrow)"/>
73
+ <rect x="960" y="152" width="188" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
74
+ <text x="1054" y="177" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">User Models</text>
75
+ <text x="1054" y="195" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Memory, personalization</text>
98
76
 
99
- <path d="M 704 256 C 728 256 740 256 764 256" fill="none" stroke="url(#arrowStroke)" stroke-width="2.5" stroke-linecap="round" marker-end="url(#arrow)"/>
77
+ <!-- Classic API annotation -->
78
+ <text x="1054" y="248" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" font-weight="500" fill="white" fill-opacity="0.5">read + write</text>
79
+ <line x1="1054" y1="254" x2="1054" y2="280" stroke="white" stroke-width="1" stroke-opacity="0.15" marker-end="url(#arrow)"/>
100
80
 
101
- <path d="M 952 406 C 952 420 952 430 952 446" fill="none" stroke="url(#arrowStroke)" stroke-width="2.5" stroke-linecap="round" marker-end="url(#arrow)"/>
81
+ <!-- ====== WORLD MODEL (bottom foundation) ====== -->
82
+ <rect x="32" y="290" width="1136" height="150" rx="10" fill="white" fill-opacity="0.05" stroke="url(#strokeGrad)" stroke-width="0.75"/>
83
+ <text x="60" y="318" font-family="'Diatype Mono', 'SF Mono', monospace" font-size="13" font-weight="500" fill="white" fill-opacity="0.55" letter-spacing="2">WORLD MODEL</text>
102
84
 
103
- <rect x="60" y="448" width="1080" height="70" rx="20" fill="white" fill-opacity="0.05" stroke="url(#panelStroke)" stroke-width="1"/>
104
- <text x="88" y="477" font-family="'SFMono-Regular', Menlo, monospace" font-size="12" font-weight="600" fill="#B4C9D4" letter-spacing="2">PLATFORM SYSTEMS</text>
85
+ <rect x="52" y="336" width="260" height="60" rx="8" fill="white" fill-opacity="0.1" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
86
+ <text x="182" y="361" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Event Store</text>
87
+ <text x="182" y="379" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Confidence-scored, immutable facts</text>
105
88
 
106
- <rect x="84" y="487" width="238" height="18" rx="9" fill="#173E4D" fill-opacity="0.84"/>
107
- <text x="203" y="500" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="11" font-weight="600" fill="#D6E7EE">Connectors and EHR sync</text>
89
+ <rect x="332" y="336" width="260" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
90
+ <text x="462" y="361" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Entity Projections</text>
91
+ <text x="462" y="379" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Entity state from events</text>
108
92
 
109
- <rect x="350" y="487" width="222" height="18" rx="9" fill="#173E4D" fill-opacity="0.84"/>
110
- <text x="461" y="500" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="11" font-weight="600" fill="#D6E7EE">World model and projections</text>
93
+ <rect x="612" y="336" width="260" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
94
+ <text x="742" y="361" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Intelligence Projections</text>
95
+ <text x="742" y="379" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Memory, scheduling, clinical</text>
111
96
 
112
- <rect x="600" y="487" width="226" height="18" rx="9" fill="#173E4D" fill-opacity="0.84"/>
113
- <text x="713" y="500" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="11" font-weight="600" fill="#D6E7EE">Operators and outbound automation</text>
97
+ <rect x="892" y="336" width="256" height="60" rx="8" fill="white" fill-opacity="0.08" stroke="url(#strokeGradSubtle)" stroke-width="0.75"/>
98
+ <text x="1020" y="361" text-anchor="middle" font-family="'Flecha S', Georgia, serif" font-size="16" fill="white" fill-opacity="0.95">Vector Search</text>
99
+ <text x="1020" y="379" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" fill="white" fill-opacity="0.7">Semantic queries</text>
114
100
 
115
- <rect x="854" y="487" width="262" height="18" rx="9" fill="#173E4D" fill-opacity="0.84"/>
116
- <text x="985" y="500" text-anchor="middle" font-family="'Inter', 'Helvetica Neue', Arial, sans-serif" font-size="11" font-weight="600" fill="#D6E7EE">Observability, analytics, and webhook delivery</text>
101
+ <!-- Footer -->
102
+ <text x="600" y="462" text-anchor="middle" font-family="Inter, sans-serif" font-size="12" font-weight="500" fill="white" fill-opacity="0.55">All systems read from and write to the world model - confidence propagates through every projection level</text>
117
103
  </svg>