@wenathlan/saddle 2.0.154 → 2.0.159

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 (314) hide show
  1. package/Dockerfile +167 -1334
  2. package/README.md +59 -60
  3. package/biome.jsonc +3 -3
  4. package/browser.ts +482 -0
  5. package/cli.ts +274 -0
  6. package/distribution.ts +731 -0
  7. package/docker.config +29 -8
  8. package/docs/{architecture.1.8.19.mmd → architecture1819.md} +6 -0
  9. package/docs/artifactavailability.md +2 -2
  10. package/docs/browser.md +18 -1
  11. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  12. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  13. package/docs/extension.md +13 -2
  14. package/docs/features.md +5 -0
  15. package/docs/libraryapi.md +1 -1
  16. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  17. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  18. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  19. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  20. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  21. package/docs/todo.md +2 -2
  22. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  23. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  24. package/execution.ts +677 -0
  25. package/foundation.ts +314 -0
  26. package/index.ts +36 -34
  27. package/isolation.ts +84 -0
  28. package/modalityregistry.ts +189 -145
  29. package/modes.ts +170 -0
  30. package/mttg.config +1 -1
  31. package/orchestrator.ts +49 -15
  32. package/package.json +105 -89
  33. package/qemu.config +2 -2
  34. package/sandbox.ts +3279 -0
  35. package/scheduler.ts +1 -1
  36. package/server.ts +52 -0
  37. package/tsconfig.json +12 -13
  38. package/virtual.ts +7528 -0
  39. package/workloadlaw.ts +293 -0
  40. package/dist/App.d.ts +0 -5
  41. package/dist/App.js +0 -52
  42. package/dist/Sol/Sol.d.ts +0 -3
  43. package/dist/Sol/Sol.js +0 -46
  44. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  45. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  46. package/dist/Sol/architecture/architecture.d.ts +0 -9
  47. package/dist/Sol/architecture/architecture.js +0 -93
  48. package/dist/Sol/compute/compute.d.ts +0 -9
  49. package/dist/Sol/compute/compute.js +0 -22
  50. package/dist/Sol/console/console.d.ts +0 -15
  51. package/dist/Sol/console/console.js +0 -292
  52. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  53. package/dist/Sol/dashboard/dashboard.js +0 -181
  54. package/dist/Sol/docs/docs.d.ts +0 -9
  55. package/dist/Sol/docs/docs.js +0 -28
  56. package/dist/Sol/home/home.d.ts +0 -35
  57. package/dist/Sol/home/home.js +0 -239
  58. package/dist/Sol/integrations/integrations.d.ts +0 -9
  59. package/dist/Sol/integrations/integrations.js +0 -83
  60. package/dist/Sol/intro/intro.d.ts +0 -7
  61. package/dist/Sol/intro/intro.js +0 -102
  62. package/dist/Sol/login/login.d.ts +0 -16
  63. package/dist/Sol/login/login.js +0 -49
  64. package/dist/Sol/notfound/notfound.d.ts +0 -9
  65. package/dist/Sol/notfound/notfound.js +0 -15
  66. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  67. package/dist/Sol/onboarding/onboarding.js +0 -60
  68. package/dist/Sol/playground/playground.d.ts +0 -9
  69. package/dist/Sol/playground/playground.js +0 -127
  70. package/dist/Sol/register/register.d.ts +0 -16
  71. package/dist/Sol/register/register.js +0 -193
  72. package/dist/Sol/shell/Shell.d.ts +0 -124
  73. package/dist/Sol/shell/Shell.js +0 -335
  74. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  75. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  76. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  77. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  78. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  79. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  80. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  81. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  82. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  83. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  84. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  85. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  86. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  87. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  88. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  89. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  90. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  91. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  92. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  93. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  94. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  95. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  96. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  97. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  98. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  100. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  102. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  103. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  104. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  105. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  106. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  107. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  108. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  109. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  110. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  111. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  112. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  113. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  114. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  115. package/dist/Sol/wingets/LoginForm.js +0 -141
  116. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  117. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  118. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  119. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  120. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  121. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  122. package/dist/Sol/wingets/index.d.ts +0 -39
  123. package/dist/Sol/wingets/index.js +0 -39
  124. package/dist/alternatives.d.ts +0 -508
  125. package/dist/alternatives.js +0 -950
  126. package/dist/api.d.ts +0 -154
  127. package/dist/api.js +0 -174
  128. package/dist/auth.d.ts +0 -268
  129. package/dist/auth.js +0 -476
  130. package/dist/automation.d.ts +0 -425
  131. package/dist/automation.js +0 -566
  132. package/dist/browser.d.ts +0 -561
  133. package/dist/browser.js +0 -1058
  134. package/dist/capacitor.config.d.ts +0 -45
  135. package/dist/capacitor.config.js +0 -48
  136. package/dist/catalog.d.ts +0 -43
  137. package/dist/catalog.js +0 -44
  138. package/dist/cli.d.ts +0 -16
  139. package/dist/cli.js +0 -168
  140. package/dist/communication.d.ts +0 -181
  141. package/dist/communication.js +0 -376
  142. package/dist/compute.d.ts +0 -1160
  143. package/dist/compute.js +0 -2272
  144. package/dist/dashboardlib.d.ts +0 -58
  145. package/dist/dashboardlib.js +0 -161
  146. package/dist/db.d.ts +0 -569
  147. package/dist/db.js +0 -1080
  148. package/dist/distribution.d.ts +0 -528
  149. package/dist/distribution.js +0 -810
  150. package/dist/drizzle.config.d.ts +0 -20
  151. package/dist/drizzle.config.js +0 -18
  152. package/dist/edgelandes.d.ts +0 -70
  153. package/dist/edgelandes.host.d.ts +0 -26
  154. package/dist/edgelandes.host.js +0 -1089
  155. package/dist/edgelandes.inproc.d.ts +0 -27
  156. package/dist/edgelandes.inproc.js +0 -952
  157. package/dist/edgelandes.js +0 -1133
  158. package/dist/edgelandes.ninety.d.ts +0 -31
  159. package/dist/edgelandes.ninety.js +0 -174
  160. package/dist/edgelandes.virtual.d.ts +0 -25
  161. package/dist/edgelandes.virtual.js +0 -629
  162. package/dist/edgeplane.d.ts +0 -121
  163. package/dist/edgeplane.js +0 -341
  164. package/dist/examplelocaljob.d.ts +0 -1
  165. package/dist/examplelocaljob.js +0 -14
  166. package/dist/execution.d.ts +0 -529
  167. package/dist/execution.js +0 -760
  168. package/dist/family.d.ts +0 -16
  169. package/dist/family.js +0 -42
  170. package/dist/familyurl.d.ts +0 -21
  171. package/dist/familyurl.js +0 -24
  172. package/dist/format.d.ts +0 -18
  173. package/dist/format.js +0 -59
  174. package/dist/foundation.d.ts +0 -172
  175. package/dist/foundation.js +0 -312
  176. package/dist/index.d.ts +0 -735
  177. package/dist/index.js +0 -1020
  178. package/dist/integration.d.ts +0 -235
  179. package/dist/integration.js +0 -228
  180. package/dist/intelligence.d.ts +0 -93
  181. package/dist/intelligence.js +0 -144
  182. package/dist/isolation.d.ts +0 -128
  183. package/dist/isolation.js +0 -95
  184. package/dist/labels.d.ts +0 -665
  185. package/dist/labels.js +0 -707
  186. package/dist/localauth.d.ts +0 -127
  187. package/dist/localauth.js +0 -413
  188. package/dist/media.d.ts +0 -343
  189. package/dist/media.js +0 -985
  190. package/dist/mesh.d.ts +0 -177
  191. package/dist/mesh.js +0 -468
  192. package/dist/modalityregistry.d.ts +0 -109
  193. package/dist/modalityregistry.js +0 -1386
  194. package/dist/modes.d.ts +0 -358
  195. package/dist/modes.js +0 -133
  196. package/dist/onboardingstate.d.ts +0 -79
  197. package/dist/onboardingstate.js +0 -282
  198. package/dist/orchestrator.d.ts +0 -1338
  199. package/dist/orchestrator.js +0 -4310
  200. package/dist/packager/targetcli.js +0 -4
  201. package/dist/paths.d.ts +0 -2
  202. package/dist/paths.js +0 -14
  203. package/dist/performance.d.ts +0 -415
  204. package/dist/performance.js +0 -826
  205. package/dist/quantum.d.ts +0 -809
  206. package/dist/quantum.js +0 -2072
  207. package/dist/render.d.ts +0 -380
  208. package/dist/render.js +0 -1072
  209. package/dist/runall.d.ts +0 -2
  210. package/dist/runall.js +0 -39
  211. package/dist/runtimeprobe.d.ts +0 -4
  212. package/dist/runtimeprobe.js +0 -8
  213. package/dist/sandbox.d.ts +0 -355
  214. package/dist/sandbox.js +0 -1721
  215. package/dist/sandboxenvprofile.d.ts +0 -29
  216. package/dist/sandboxenvprofile.js +0 -89
  217. package/dist/sandboxprofile.d.ts +0 -137
  218. package/dist/sandboxprofile.js +0 -241
  219. package/dist/sandboxqueue.d.ts +0 -108
  220. package/dist/sandboxqueue.js +0 -201
  221. package/dist/sandboxquota.d.ts +0 -121
  222. package/dist/sandboxquota.js +0 -236
  223. package/dist/scheduler.d.ts +0 -595
  224. package/dist/scheduler.js +0 -1258
  225. package/dist/scriptlanes.d.ts +0 -182
  226. package/dist/scriptlanes.js +0 -660
  227. package/dist/scripts.buildengine.d.ts +0 -1
  228. package/dist/scripts.buildengine.js +0 -39
  229. package/dist/scripts.securitygate.d.ts +0 -1
  230. package/dist/scripts.securitygate.js +0 -68
  231. package/dist/scripts.validateflatnative.d.ts +0 -1
  232. package/dist/scripts.validateflatnative.js +0 -72
  233. package/dist/security.d.ts +0 -500
  234. package/dist/security.js +0 -1169
  235. package/dist/seedcatalog.d.ts +0 -13
  236. package/dist/seedcatalog.js +0 -46
  237. package/dist/server.d.ts +0 -20
  238. package/dist/server.js +0 -53
  239. package/dist/speccatalog.d.ts +0 -31
  240. package/dist/speccatalog.js +0 -163
  241. package/dist/tiers.d.ts +0 -1001
  242. package/dist/tiers.js +0 -2169
  243. package/dist/utils.d.ts +0 -2
  244. package/dist/utils.js +0 -5
  245. package/dist/vaulthandoff.d.ts +0 -141
  246. package/dist/vaulthandoff.js +0 -444
  247. package/dist/virtual.d.ts +0 -640
  248. package/dist/virtual.js +0 -1284
  249. package/dist/virtualcpu.d.ts +0 -315
  250. package/dist/virtualcpu.js +0 -1180
  251. package/dist/virtualgpu.d.ts +0 -344
  252. package/dist/virtualgpu.js +0 -1000
  253. package/dist/virtualization.d.ts +0 -606
  254. package/dist/virtualization.js +0 -1186
  255. package/dist/virtualmemory.d.ts +0 -817
  256. package/dist/virtualmemory.js +0 -1795
  257. package/dist/vite.config.d.ts +0 -3
  258. package/dist/vite.config.js +0 -48
  259. package/dist/vitest.config.d.ts +0 -2
  260. package/dist/vitest.config.js +0 -25
  261. package/dist/webserver.d.ts +0 -166
  262. package/dist/webserver.js +0 -2226
  263. package/dist/workloadlaw.d.ts +0 -133
  264. package/dist/workloadlaw.js +0 -193
  265. package/docs/.gitkeep +0 -0
  266. package/docs/architecture.1.8.19.md +0 -76
  267. package/docs/logs/examplesession.json +0 -54
  268. package/docs/repo.analysis.1.8.21.json +0 -2617
  269. package/docs/repo.candidates.1.8.21.jsonl +0 -666
  270. package/docs/repo.selected.1.8.21.json +0 -786
  271. package/manifest.json +0 -20
  272. package/media.ts +0 -1337
  273. package/virtualcpu.ts +0 -1274
  274. package/virtualgpu.ts +0 -1182
  275. package/virtualization.ts +0 -1628
  276. package/virtualmemory.ts +0 -2303
  277. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  278. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  279. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  280. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  281. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  282. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  283. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  284. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  285. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  286. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  287. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  288. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  289. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  290. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  291. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  292. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  293. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  294. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  295. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  296. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  297. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  298. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  299. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  300. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  301. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  302. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  303. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  304. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  305. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  306. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  307. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  308. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  309. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  310. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  311. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  312. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  313. /package/docs/{web.ideas.md → webideas.md} +0 -0
  314. /package/docs/{workflowimprovements.2026.08.19.md → workflowimprovements20260819.md} +0 -0
@@ -1,235 +0,0 @@
1
- /**
2
- * integration.ts — replaceable forge, application, MCP and transport adapters.
3
- *
4
- * This file is the v2.0.0 grand-merge consolidation of the former nested
5
- * folders of the repository (adapters) into the single
6
- * root-level domain file of the saddle family standard: one optimized
7
- * TypeScript file per correlated domain, ordinal sections, JSDoc on every
8
- * block, intra-domain imports dissolved, cross-domain imports rewritten to
9
- * ./<domain>.js. Every capability of every source file is preserved here;
10
- * the pure re-export barrels (none in this domain) folded their surface into this file directly.
11
- */
12
- /**
13
- * transport centralizes timeout retry and jitter without choosing a host or vendor.
14
- */
15
- export declare function transport(options?: {}): {
16
- request: (url: any, init?: {}) => Promise<any>;
17
- };
18
- /**
19
- * socket adapter keeps realtime optional and accepts a caller supplied websocket constructor.
20
- */
21
- export declare function socketadapter(options?: {}): {
22
- connect(url: any, protocols: any): {
23
- socket: any;
24
- send(value: any): void;
25
- close(code: any, reason: any): void;
26
- };
27
- };
28
- /**
29
- * github adapter uses caller supplied credentials and base url configuration.
30
- */
31
- export declare function githubadapter(options?: {}): {
32
- health(): Promise<{
33
- ok: any;
34
- status: any;
35
- }>;
36
- dispatch(owner: any, repository: any, workflow: any, input?: {}): Promise<{
37
- accepted: boolean;
38
- status: any;
39
- }>;
40
- run(owner: any, repository: any, runid: any): Promise<any>;
41
- };
42
- /**
43
- * gitlab adapter keeps project addressing and token ownership outside the package.
44
- */
45
- export declare function gitlabadapter(options?: {}): {
46
- dispatch(spec: any): Promise<{
47
- accepted: any;
48
- status: any;
49
- body: any;
50
- }>;
51
- kind: any;
52
- health(path?: string): Promise<{
53
- ok: any;
54
- status: any;
55
- }>;
56
- upload(spec: any): Promise<{
57
- accepted: any;
58
- status: any;
59
- }>;
60
- };
61
- /**
62
- * forge adapter defines the common dispatch and artifact surface for compatible forges.
63
- */
64
- export declare function forgeadapter(options?: {}): {
65
- kind: any;
66
- health(path?: string): Promise<{
67
- ok: any;
68
- status: any;
69
- }>;
70
- dispatch(spec: any): Promise<{
71
- accepted: any;
72
- status: any;
73
- body: any;
74
- }>;
75
- upload(spec: any): Promise<{
76
- accepted: any;
77
- status: any;
78
- }>;
79
- };
80
- /**
81
- * forgejo and gitea can reuse the open forge contract with a caller supplied base url.
82
- */
83
- export declare function forgejoadapter(options?: {}): {
84
- kind: any;
85
- health(path?: string): Promise<{
86
- ok: any;
87
- status: any;
88
- }>;
89
- dispatch(spec: any): Promise<{
90
- accepted: any;
91
- status: any;
92
- body: any;
93
- }>;
94
- upload(spec: any): Promise<{
95
- accepted: any;
96
- status: any;
97
- }>;
98
- };
99
- export declare function giteaadapter(options?: {}): {
100
- kind: any;
101
- health(path?: string): Promise<{
102
- ok: any;
103
- status: any;
104
- }>;
105
- dispatch(spec: any): Promise<{
106
- accepted: any;
107
- status: any;
108
- body: any;
109
- }>;
110
- upload(spec: any): Promise<{
111
- accepted: any;
112
- status: any;
113
- }>;
114
- };
115
- export declare function codebergadapter(options?: {}): {
116
- kind: any;
117
- health(path?: string): Promise<{
118
- ok: any;
119
- status: any;
120
- }>;
121
- dispatch(spec: any): Promise<{
122
- accepted: any;
123
- status: any;
124
- body: any;
125
- }>;
126
- upload(spec: any): Promise<{
127
- accepted: any;
128
- status: any;
129
- }>;
130
- };
131
- /**
132
- * hugging face storage remains an explicit adapter with caller supplied repository path.
133
- */
134
- export declare function huggingfaceadapter(options?: {}): {
135
- kind: any;
136
- health(path?: string): Promise<{
137
- ok: any;
138
- status: any;
139
- }>;
140
- dispatch(spec: any): Promise<{
141
- accepted: any;
142
- status: any;
143
- body: any;
144
- }>;
145
- upload(spec: any): Promise<{
146
- accepted: any;
147
- status: any;
148
- }>;
149
- };
150
- /**
151
- * app registry keeps installation, scope and revocation state outside platform credentials.
152
- */
153
- export declare const appstatuses: readonly string[];
154
- /** Creates a caller-owned app installation registry with explicit scopes. */
155
- export declare function appregistry(options?: {}): {
156
- install: (input?: {}) => {
157
- scopes: unknown[];
158
- id: string;
159
- name: string;
160
- status: any;
161
- installedat: number;
162
- updatedat: number;
163
- metadata: any;
164
- };
165
- suspend: (id: any) => any;
166
- revoke: (id: any) => any;
167
- restore: (id: any) => any;
168
- authorize: (id: any, required?: any[]) => {
169
- allowed: boolean;
170
- reason: string;
171
- missing?: undefined;
172
- appid?: undefined;
173
- } | {
174
- reason?: undefined;
175
- allowed: boolean;
176
- missing: any[];
177
- appid: any;
178
- };
179
- get: (id: any) => any;
180
- list: () => any[];
181
- };
182
- /**
183
- * mcp transport keeps JSON RPC framing separate from the tool server.
184
- */
185
- /** Creates JSONL and HTTP handlers for the transport agnostic MCP server. */
186
- export declare function mcptransport(server: any): {
187
- handleline(line: any): Promise<string>;
188
- stream(lines: any): AsyncGenerator<any, void, unknown>;
189
- handlehttp(request: any): Promise<Response>;
190
- };
191
- /**
192
- * mcp server implements a small JSON RPC tool surface and remains transport agnostic.
193
- */
194
- export declare function mcpserver(options?: {}): {
195
- listtools(): {
196
- name: string;
197
- description: string;
198
- }[];
199
- handle(request: any): Promise<{
200
- jsonrpc: string;
201
- id: any;
202
- result: {
203
- tools: any;
204
- content?: undefined;
205
- };
206
- error?: undefined;
207
- } | {
208
- jsonrpc: string;
209
- id: any;
210
- result: {
211
- tools?: undefined;
212
- content: {
213
- type: string;
214
- text: string;
215
- }[];
216
- };
217
- error?: undefined;
218
- } | {
219
- result?: undefined;
220
- jsonrpc: string;
221
- id: any;
222
- error: {
223
- code: number;
224
- message: any;
225
- };
226
- }>;
227
- };
228
- /**
229
- * browser MCP tools expose snapshots and actions only through an injected browser adapter.
230
- */
231
- /** Creates optional browser tools for an MCP server without selecting Playwright or another vendor. */
232
- export declare function browsertools(browser: any): {
233
- browser_snapshot: (input?: {}) => Promise<any>;
234
- browser_action: (input?: {}) => Promise<any>;
235
- };
@@ -1,228 +0,0 @@
1
- /**
2
- * integration.ts — replaceable forge, application, MCP and transport adapters.
3
- *
4
- * This file is the v2.0.0 grand-merge consolidation of the former nested
5
- * folders of the repository (adapters) into the single
6
- * root-level domain file of the saddle family standard: one optimized
7
- * TypeScript file per correlated domain, ordinal sections, JSDoc on every
8
- * block, intra-domain imports dissolved, cross-domain imports rewritten to
9
- * ./<domain>.js. Every capability of every source file is preserved here;
10
- * the pure re-export barrels (none in this domain) folded their surface into this file directly.
11
- */
12
- import { jsondecode, jsonencode } from "./communication.js";
13
- /* ════════════════════════════════════════════════════════════════════ */
14
- /* Section 1: adapters/transport.ts — transport centralizes timeout retry and jitter without choosing a host or vendor. */
15
- /* ════════════════════════════════════════════════════════════════════ */
16
- /**
17
- * transport centralizes timeout retry and jitter without choosing a host or vendor.
18
- */
19
- export function transport(options = {}) {
20
- const fetcher = options.fetcher ?? fetch;
21
- const attempts = options.attempts ?? 3;
22
- const timeout = options.timeout ?? 30000;
23
- const retrycodes = new Set(options.retrycodes ?? [408, 409, 429, 500, 502, 503, 504]);
24
- async function request(url, init = {}) {
25
- let last;
26
- for (let attempt = 0; attempt < attempts; attempt += 1) {
27
- const controller = new AbortController();
28
- const timer = setTimeout(() => controller.abort(), timeout);
29
- try {
30
- const response = await fetcher(url, { ...init, signal: init.signal ?? controller.signal });
31
- if (response.ok || !retrycodes.has(response.status) || attempt === attempts - 1)
32
- return response;
33
- last = new Error(`request failed with ${response.status}`);
34
- }
35
- catch (error) {
36
- last = error;
37
- if (attempt === attempts - 1)
38
- throw error;
39
- }
40
- finally {
41
- clearTimeout(timer);
42
- }
43
- await delay(backoff(options, attempt));
44
- }
45
- throw last ?? new Error("request failed");
46
- }
47
- return { request };
48
- }
49
- function backoff(options, attempt) { const base = options.backoff ?? 250; const jitter = options.jitter ?? 0; return base * 2 ** attempt + Math.floor(Math.random() * jitter); }
50
- function delay(milliseconds) { return new Promise((resolve) => setTimeout(resolve, milliseconds)); }
51
- /* ════════════════════════════════════════════════════════════════════ */
52
- /* Section 2: adapters/socket.ts — socket adapter keeps realtime optional and accepts a caller supplied websocket constructor. */
53
- /* ════════════════════════════════════════════════════════════════════ */
54
- /**
55
- * socket adapter keeps realtime optional and accepts a caller supplied websocket constructor.
56
- */
57
- export function socketadapter(options = {}) {
58
- const websocket = options.websocket ?? globalThis.WebSocket;
59
- if (!websocket)
60
- throw new Error("websocket implementation is required");
61
- return {
62
- connect(url, protocols) {
63
- if (!url)
64
- throw new TypeError("socket url is required");
65
- const socket = new websocket(url, protocols);
66
- return { socket, send(value) { socket.send(typeof value === "string" ? value : JSON.stringify(value)); }, close(code, reason) { socket.close(code, reason); } };
67
- }
68
- };
69
- }
70
- /* ════════════════════════════════════════════════════════════════════ */
71
- /* Section 3: adapters/github.ts — github adapter uses caller supplied credentials and base url configuration. */
72
- /* ════════════════════════════════════════════════════════════════════ */
73
- /**
74
- * github adapter uses caller supplied credentials and base url configuration.
75
- */
76
- export function githubadapter(options = {}) {
77
- if (!options.baseurl || typeof options.token !== "function")
78
- throw new TypeError("github adapter requires baseurl and token function");
79
- const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
80
- async function call(path, init = {}) {
81
- const token = await options.token();
82
- const headers = { accept: "application/vnd.github+json", authorization: `Bearer ${token}`, "x-github-api-version": options.apiversion ?? "2022-11-28", ...(init.headers ?? {}) };
83
- return client.request(new URL(path, options.baseurl), { ...init, headers });
84
- }
85
- return {
86
- async health() { const response = await call("/rate_limit"); return { ok: response.ok, status: response.status }; },
87
- async dispatch(owner, repository, workflow, input = {}) { const response = await call(`/repos/${owner}/${repository}/actions/workflows/${workflow}/dispatches`, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: input.ref ?? "main", inputs: input.inputs ?? {} }) }); return { accepted: response.status === 204, status: response.status }; },
88
- async run(owner, repository, runid) { const response = await call(`/repos/${owner}/${repository}/actions/runs/${runid}`); return response.json(); }
89
- };
90
- }
91
- /* ════════════════════════════════════════════════════════════════════ */
92
- /* Section 4: adapters/gitlab.ts — gitlab adapter keeps project addressing and token ownership outside the package. */
93
- /* ════════════════════════════════════════════════════════════════════ */
94
- /**
95
- * gitlab adapter keeps project addressing and token ownership outside the package.
96
- */
97
- export function gitlabadapter(options = {}) {
98
- const project = encodeURIComponent(options.project ?? "");
99
- const base = forgeadapter({ ...options, kind: "gitlab" });
100
- return { ...base, async dispatch(spec) { return base.dispatch({ ...spec, path: spec.path ?? `/api/v4/projects/${project}/pipeline` }); } };
101
- }
102
- /* ════════════════════════════════════════════════════════════════════ */
103
- /* Section 5: adapters/forge.ts — forge adapter defines the common dispatch and artifact surface for compatible forges. */
104
- /* ════════════════════════════════════════════════════════════════════ */
105
- /**
106
- * forge adapter defines the common dispatch and artifact surface for compatible forges.
107
- */
108
- export function forgeadapter(options = {}) {
109
- if (!options.baseurl || typeof options.token !== "function")
110
- throw new TypeError("forge adapter requires baseurl and token function");
111
- const client = transport({ fetcher: options.fetcher, attempts: options.attempts, timeout: options.timeout });
112
- async function call(path, init = {}) { const token = await options.token(); return client.request(new URL(path, options.baseurl), { ...init, headers: { authorization: `Bearer ${token}`, accept: "application/json", ...(init.headers ?? {}) } }); }
113
- return {
114
- kind: options.kind ?? "forge",
115
- async health(path = "/") { const response = await call(path); return { ok: response.ok, status: response.status }; },
116
- async dispatch(spec) { if (!spec?.path || !spec.ref)
117
- throw new TypeError("forge dispatch requires path and ref"); const response = await call(spec.path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ ref: spec.ref, inputs: spec.inputs ?? {} }) }); return { accepted: response.ok, status: response.status, body: response.json ? await response.json() : undefined }; },
118
- async upload(spec) { if (!spec?.path || !spec.data)
119
- throw new TypeError("forge upload requires path and data"); const response = await call(spec.path, { method: "PUT", headers: { "content-type": spec.contenttype ?? "application/octet-stream" }, body: spec.data }); return { accepted: response.ok, status: response.status }; }
120
- };
121
- }
122
- /* ════════════════════════════════════════════════════════════════════ */
123
- /* Section 6: adapters/forgejo.ts — forgejo and gitea can reuse the open forge contract with a caller supplied base url. */
124
- /* ════════════════════════════════════════════════════════════════════ */
125
- /**
126
- * forgejo and gitea can reuse the open forge contract with a caller supplied base url.
127
- */
128
- export function forgejoadapter(options = {}) { return forgeadapter({ ...options, kind: "forgejo" }); }
129
- export function giteaadapter(options = {}) { return forgeadapter({ ...options, kind: "gitea" }); }
130
- export function codebergadapter(options = {}) { return forgeadapter({ ...options, kind: "codeberg" }); }
131
- /* ════════════════════════════════════════════════════════════════════ */
132
- /* Section 7: adapters/huggingface.ts — hugging face storage remains an explicit adapter with caller supplied repository path. */
133
- /* ════════════════════════════════════════════════════════════════════ */
134
- /**
135
- * hugging face storage remains an explicit adapter with caller supplied repository path.
136
- */
137
- export function huggingfaceadapter(options = {}) { return forgeadapter({ ...options, kind: "huggingface" }); }
138
- /* ════════════════════════════════════════════════════════════════════ */
139
- /* Section 8: adapters/apps.ts — app registry keeps installation, scope and revocation state outside platform credentials. */
140
- /* ════════════════════════════════════════════════════════════════════ */
141
- /**
142
- * app registry keeps installation, scope and revocation state outside platform credentials.
143
- */
144
- export const appstatuses = Object.freeze(["installed", "suspended", "revoked"]);
145
- /** Creates a caller-owned app installation registry with explicit scopes. */
146
- export function appregistry(options = {}) {
147
- const values = new Map(options.apps ? options.apps.map((app) => [app.id, normalize(app)]) : []);
148
- function install(input = {}) { if (!input.id || !input.name)
149
- throw new TypeError("app installation requires id and name"); const app = normalize({ ...input, status: "installed", installedat: input.installedat ?? Date.now() }); values.set(app.id, app); return { ...app, scopes: [...app.scopes] }; }
150
- function suspend(id) { return transition(id, "suspended"); }
151
- function revoke(id) { return transition(id, "revoked"); }
152
- function restore(id) { return transition(id, "installed"); }
153
- function authorize(id, required = []) { const app = requireapp(id); if (app.status !== "installed")
154
- return { allowed: false, reason: `app-${app.status}` }; const missing = required.filter((scope) => !app.scopes.includes(scope)); return { allowed: missing.length === 0, missing, appid: app.id }; }
155
- function get(id) { const app = values.get(String(id)); return app ? { ...app, scopes: [...app.scopes] } : null; }
156
- function list() { return [...values.values()].map((app) => ({ ...app, scopes: [...app.scopes] })); }
157
- return { install, suspend, revoke, restore, authorize, get, list };
158
- function requireapp(id) { const app = values.get(String(id)); if (!app)
159
- throw new Error(`app not found: ${id}`); return app; }
160
- function transition(id, status) { const app = requireapp(id); if (!appstatuses.includes(status))
161
- throw new TypeError(`unsupported app status: ${status}`); app.status = status; app.updatedat = Date.now(); return get(id); }
162
- }
163
- function normalize(input) { return { id: String(input.id), name: String(input.name), status: input.status ?? "installed", scopes: [...new Set((input.scopes ?? []).map(String))], installedat: Number(input.installedat ?? Date.now()), updatedat: Number(input.updatedat ?? Date.now()), metadata: { ...(input.metadata ?? {}) } }; }
164
- /* ════════════════════════════════════════════════════════════════════ */
165
- /* Section 9: adapters/mcptransport.ts — mcp transport keeps JSON RPC framing separate from the tool server. */
166
- /* ════════════════════════════════════════════════════════════════════ */
167
- /**
168
- * mcp transport keeps JSON RPC framing separate from the tool server.
169
- */
170
- /** Creates JSONL and HTTP handlers for the transport agnostic MCP server. */
171
- export function mcptransport(server) {
172
- if (typeof server?.handle !== "function")
173
- throw new TypeError("mcp transport requires server");
174
- return {
175
- async handleline(line) { const request = jsondecode(line); return jsonencode(await server.handle(request)); },
176
- async *stream(lines) { for await (const line of lines)
177
- if (String(line).trim())
178
- yield await this.handleline(line); },
179
- async handlehttp(request) { const body = await request.text(); const response = await server.handle(jsondecode(body)); return new Response(jsonencode(response), { status: 200, headers: { "content-type": "application/json" } }); }
180
- };
181
- }
182
- /* ════════════════════════════════════════════════════════════════════ */
183
- /* Section 10: adapters/mcpserver.ts — mcp server implements a small JSON RPC tool surface and remains transport agnostic. */
184
- /* ════════════════════════════════════════════════════════════════════ */
185
- /**
186
- * mcp server implements a small JSON RPC tool surface and remains transport agnostic.
187
- */
188
- export function mcpserver(options = {}) {
189
- const tools = {
190
- serialize: async (input) => jsonencode(input.value),
191
- ...(options.browser ? browsertools(options.browser) : {}),
192
- ...(options.tools ?? {})
193
- };
194
- return {
195
- listtools() { return Object.keys(tools).map((name) => ({ name, description: `saddle ${name} tool` })); },
196
- async handle(request) {
197
- if (request.method === "tools/list")
198
- return { jsonrpc: "2.0", id: request.id, result: { tools: this.listtools() } };
199
- if (request.method === "tools/call") {
200
- const handler = tools[request.params?.name];
201
- if (!handler)
202
- return { jsonrpc: "2.0", id: request.id, error: { code: -32601, message: "tool not found" } };
203
- try {
204
- return { jsonrpc: "2.0", id: request.id, result: { content: [{ type: "text", text: JSON.stringify(await handler(request.params.arguments ?? {})) }] } };
205
- }
206
- catch (error) {
207
- return { jsonrpc: "2.0", id: request.id, error: { code: -32000, message: error.message } };
208
- }
209
- }
210
- return { jsonrpc: "2.0", id: request.id, error: { code: -32601, message: "method not found" } };
211
- }
212
- };
213
- }
214
- /* ════════════════════════════════════════════════════════════════════ */
215
- /* Section 11: adapters/mcpbrowser.ts — browser MCP tools expose snapshots and actions only through an injected browser adapter. */
216
- /* ════════════════════════════════════════════════════════════════════ */
217
- /**
218
- * browser MCP tools expose snapshots and actions only through an injected browser adapter.
219
- */
220
- /** Creates optional browser tools for an MCP server without selecting Playwright or another vendor. */
221
- export function browsertools(browser) {
222
- if (typeof browser?.snapshot !== "function" || typeof browser?.action !== "function")
223
- throw new TypeError("browser MCP tools require snapshot and action");
224
- return {
225
- browser_snapshot: async (input = {}) => browser.snapshot(input),
226
- browser_action: async (input = {}) => browser.action(input)
227
- };
228
- }
@@ -1,93 +0,0 @@
1
- /**
2
- * intelligence.ts — AI planning, provenance, retrieval and observable metrics.
3
- *
4
- * This file is the v2.0.0 grand-merge consolidation of the former nested
5
- * folders of the repository (ai) into the single
6
- * root-level domain file of the saddle family standard: one optimized
7
- * TypeScript file per correlated domain, ordinal sections, JSDoc on every
8
- * block, intra-domain imports dissolved, cross-domain imports rewritten to
9
- * ./<domain>.js. Every capability of every source file is preserved here;
10
- * the pure re-export barrels (none in this domain) folded their surface into this file directly.
11
- */
12
- /**
13
- * context provenance links retrieved chunks to source, query and transformation metadata.
14
- */
15
- /** Creates a serializable retrieval record for an agent context result. */
16
- export declare function provenance(input?: {}): {
17
- version: number;
18
- source: any;
19
- sourceurl: any;
20
- documentid: any;
21
- query: any;
22
- retrievedat: number;
23
- chunks: any;
24
- metadata: any;
25
- };
26
- /** Merges provenance records while deduplicating chunk identifiers. */
27
- export declare function mergeprovenance(records?: any[]): {
28
- version: number;
29
- sources: any[];
30
- chunks: any[];
31
- mergedat: number;
32
- };
33
- export declare function estimatetokens(text: any, model?: string): number;
34
- export declare function fitscontext(text: any, context: any, model?: string): boolean;
35
- export declare function tokenbudget(text: any, options?: {}): {
36
- tokens: number;
37
- context: any;
38
- fits: boolean;
39
- remaining: number;
40
- };
41
- export declare function settokenratios(values?: {}): {
42
- default: 4;
43
- gpt: 3.5;
44
- claude: 3.2;
45
- gemini: 3.5;
46
- };
47
- /**
48
- * markdown chunking preserves heading paths and uses paragraph boundaries before hard cuts.
49
- */
50
- export declare function chunkmarkdown(markdown: any, options?: {}): any[];
51
- /**
52
- * rag manifests connect chunks to embedding stores without forcing a vendor client.
53
- */
54
- export declare function ragmanifest(input?: {}): Promise<{
55
- documentid: string;
56
- source: any;
57
- chunks: any[];
58
- embeddingmodel: any;
59
- embeddingdimensions: any;
60
- createdat: number;
61
- }>;
62
- export declare function vectorrecord(chunk: any, vector: any, options?: {}): {
63
- id: string;
64
- vector: any;
65
- metadata: {
66
- headingpath: any;
67
- contenthash: any;
68
- sourceurl: any;
69
- tokencount: any;
70
- contenttype: any;
71
- language: any;
72
- embeddingmodel: any;
73
- embeddingdimensions: any;
74
- };
75
- };
76
- /**
77
- * llms text generation creates compact absolute links for agent consumption.
78
- */
79
- export declare function llmstxt(options?: {}): string;
80
- export declare function llmsfull(options?: {}): any;
81
- /**
82
- * metrics keeps low-cardinality counters and durations without requiring a telemetry vendor.
83
- */
84
- /** Creates an in-memory metric collector with bounded names and labels. */
85
- export declare function metricstore(options?: {}): {
86
- count: (name: any, amount?: number, labels?: {}) => any;
87
- observe: (name: any, milliseconds: any, labels?: {}) => number;
88
- snapshot: () => {
89
- counters: any;
90
- durations: any;
91
- };
92
- reset: () => void;
93
- };