@wenathlan/saddle 2.0.154 → 2.0.155

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 (307) hide show
  1. package/Dockerfile +112 -41
  2. package/README.md +58 -59
  3. package/browser.ts +482 -0
  4. package/cli.ts +274 -0
  5. package/distribution.ts +731 -0
  6. package/docker.config +29 -8
  7. package/docs/artifactavailability.md +2 -2
  8. package/docs/browser.md +18 -1
  9. package/docs/{containerplatforms.2.1.0.md → containerplatforms210.md} +1 -1
  10. package/docs/{documentmap.1.8.12.md → documentmap1812.md} +1 -1
  11. package/docs/extension.md +13 -2
  12. package/docs/libraryapi.md +1 -1
  13. package/docs/{ninety.modalities.md → ninetymodalities.md} +87 -4
  14. package/docs/{planning.ninety.md → planningninety.md} +6 -6
  15. package/docs/{releasenotes.1.8.13.md → releasenotes1813.md} +2 -2
  16. package/docs/{releasenotes.1.8.14.md → releasenotes1814.md} +1 -1
  17. package/docs/{repo.synthesis.1.8.16.md → reposynthesis1816.md} +1 -1
  18. package/docs/todo.md +2 -2
  19. package/docs/{todo.1.8.15.md → todo1815.md} +1 -1
  20. package/docs/{todo.1.8.16.md → todo1816.md} +5 -5
  21. package/execution.ts +677 -0
  22. package/foundation.ts +314 -0
  23. package/index.ts +35 -27
  24. package/isolation.ts +84 -0
  25. package/modes.ts +170 -0
  26. package/mttg.config +1 -1
  27. package/orchestrator.ts +49 -15
  28. package/package.json +90 -75
  29. package/qemu.config +2 -2
  30. package/sandbox.ts +2094 -0
  31. package/scheduler.ts +1 -1
  32. package/server.ts +52 -0
  33. package/tsconfig.json +11 -12
  34. package/virtual.ts +1105 -0
  35. package/virtualgpu.ts +1 -1
  36. package/virtualization.ts +1 -1
  37. package/workloadlaw.ts +293 -0
  38. package/dist/App.d.ts +0 -5
  39. package/dist/App.js +0 -52
  40. package/dist/Sol/Sol.d.ts +0 -3
  41. package/dist/Sol/Sol.js +0 -46
  42. package/dist/Sol/agentbrowser/agentbrowser.d.ts +0 -9
  43. package/dist/Sol/agentbrowser/agentbrowser.js +0 -121
  44. package/dist/Sol/architecture/architecture.d.ts +0 -9
  45. package/dist/Sol/architecture/architecture.js +0 -93
  46. package/dist/Sol/compute/compute.d.ts +0 -9
  47. package/dist/Sol/compute/compute.js +0 -22
  48. package/dist/Sol/console/console.d.ts +0 -15
  49. package/dist/Sol/console/console.js +0 -292
  50. package/dist/Sol/dashboard/dashboard.d.ts +0 -10
  51. package/dist/Sol/dashboard/dashboard.js +0 -181
  52. package/dist/Sol/docs/docs.d.ts +0 -9
  53. package/dist/Sol/docs/docs.js +0 -28
  54. package/dist/Sol/home/home.d.ts +0 -35
  55. package/dist/Sol/home/home.js +0 -239
  56. package/dist/Sol/integrations/integrations.d.ts +0 -9
  57. package/dist/Sol/integrations/integrations.js +0 -83
  58. package/dist/Sol/intro/intro.d.ts +0 -7
  59. package/dist/Sol/intro/intro.js +0 -102
  60. package/dist/Sol/login/login.d.ts +0 -16
  61. package/dist/Sol/login/login.js +0 -49
  62. package/dist/Sol/notfound/notfound.d.ts +0 -9
  63. package/dist/Sol/notfound/notfound.js +0 -15
  64. package/dist/Sol/onboarding/onboarding.d.ts +0 -25
  65. package/dist/Sol/onboarding/onboarding.js +0 -60
  66. package/dist/Sol/playground/playground.d.ts +0 -9
  67. package/dist/Sol/playground/playground.js +0 -127
  68. package/dist/Sol/register/register.d.ts +0 -16
  69. package/dist/Sol/register/register.js +0 -193
  70. package/dist/Sol/shell/Shell.d.ts +0 -124
  71. package/dist/Sol/shell/Shell.js +0 -335
  72. package/dist/Sol/wingets/ComputeBootladder.d.ts +0 -6
  73. package/dist/Sol/wingets/ComputeBootladder.js +0 -71
  74. package/dist/Sol/wingets/ComputeModalitycatalog.d.ts +0 -7
  75. package/dist/Sol/wingets/ComputeModalitycatalog.js +0 -71
  76. package/dist/Sol/wingets/ConsoleApibadge.d.ts +0 -7
  77. package/dist/Sol/wingets/ConsoleApibadge.js +0 -5
  78. package/dist/Sol/wingets/ConsoleEdgelaw.d.ts +0 -6
  79. package/dist/Sol/wingets/ConsoleEdgelaw.js +0 -36
  80. package/dist/Sol/wingets/ConsoleEventstimeline.d.ts +0 -19
  81. package/dist/Sol/wingets/ConsoleEventstimeline.js +0 -12
  82. package/dist/Sol/wingets/ConsoleSnapshotcontrols.d.ts +0 -8
  83. package/dist/Sol/wingets/ConsoleSnapshotcontrols.js +0 -8
  84. package/dist/Sol/wingets/ConsoleSpecpanel.d.ts +0 -21
  85. package/dist/Sol/wingets/ConsoleSpecpanel.js +0 -75
  86. package/dist/Sol/wingets/ConsoleTerminal.d.ts +0 -22
  87. package/dist/Sol/wingets/ConsoleTerminal.js +0 -77
  88. package/dist/Sol/wingets/DashboardAccountpanel.d.ts +0 -18
  89. package/dist/Sol/wingets/DashboardAccountpanel.js +0 -65
  90. package/dist/Sol/wingets/DashboardAdminpanel.d.ts +0 -6
  91. package/dist/Sol/wingets/DashboardAdminpanel.js +0 -90
  92. package/dist/Sol/wingets/DashboardAuditlog.d.ts +0 -8
  93. package/dist/Sol/wingets/DashboardAuditlog.js +0 -50
  94. package/dist/Sol/wingets/DashboardCreatesandboxform.d.ts +0 -10
  95. package/dist/Sol/wingets/DashboardCreatesandboxform.js +0 -71
  96. package/dist/Sol/wingets/DashboardEventstimeline.d.ts +0 -8
  97. package/dist/Sol/wingets/DashboardEventstimeline.js +0 -83
  98. package/dist/Sol/wingets/DashboardGlobalsandboxestable.d.ts +0 -8
  99. package/dist/Sol/wingets/DashboardGlobalsandboxestable.js +0 -57
  100. package/dist/Sol/wingets/DashboardMeshnodestable.d.ts +0 -8
  101. package/dist/Sol/wingets/DashboardMeshnodestable.js +0 -103
  102. package/dist/Sol/wingets/DashboardSandboxlist.d.ts +0 -10
  103. package/dist/Sol/wingets/DashboardSandboxlist.js +0 -163
  104. package/dist/Sol/wingets/DashboardUserstable.d.ts +0 -8
  105. package/dist/Sol/wingets/DashboardUserstable.js +0 -78
  106. package/dist/Sol/wingets/HomeEntrygate.d.ts +0 -23
  107. package/dist/Sol/wingets/HomeEntrygate.js +0 -73
  108. package/dist/Sol/wingets/HomeMetricstrip.d.ts +0 -9
  109. package/dist/Sol/wingets/HomeMetricstrip.js +0 -4
  110. package/dist/Sol/wingets/HomeRuntimediagram.d.ts +0 -1
  111. package/dist/Sol/wingets/HomeRuntimediagram.js +0 -22
  112. package/dist/Sol/wingets/LoginForm.d.ts +0 -19
  113. package/dist/Sol/wingets/LoginForm.js +0 -141
  114. package/dist/Sol/wingets/RegisterPasswordconfirm.d.ts +0 -13
  115. package/dist/Sol/wingets/RegisterPasswordconfirm.js +0 -16
  116. package/dist/Sol/wingets/RegisterPasswordmeter.d.ts +0 -19
  117. package/dist/Sol/wingets/RegisterPasswordmeter.js +0 -65
  118. package/dist/Sol/wingets/RegisterUsernamerules.d.ts +0 -11
  119. package/dist/Sol/wingets/RegisterUsernamerules.js +0 -16
  120. package/dist/Sol/wingets/index.d.ts +0 -39
  121. package/dist/Sol/wingets/index.js +0 -39
  122. package/dist/alternatives.d.ts +0 -508
  123. package/dist/alternatives.js +0 -950
  124. package/dist/api.d.ts +0 -154
  125. package/dist/api.js +0 -174
  126. package/dist/auth.d.ts +0 -268
  127. package/dist/auth.js +0 -476
  128. package/dist/automation.d.ts +0 -425
  129. package/dist/automation.js +0 -566
  130. package/dist/browser.d.ts +0 -561
  131. package/dist/browser.js +0 -1058
  132. package/dist/capacitor.config.d.ts +0 -45
  133. package/dist/capacitor.config.js +0 -48
  134. package/dist/catalog.d.ts +0 -43
  135. package/dist/catalog.js +0 -44
  136. package/dist/cli.d.ts +0 -16
  137. package/dist/cli.js +0 -168
  138. package/dist/communication.d.ts +0 -181
  139. package/dist/communication.js +0 -376
  140. package/dist/compute.d.ts +0 -1160
  141. package/dist/compute.js +0 -2272
  142. package/dist/dashboardlib.d.ts +0 -58
  143. package/dist/dashboardlib.js +0 -161
  144. package/dist/db.d.ts +0 -569
  145. package/dist/db.js +0 -1080
  146. package/dist/distribution.d.ts +0 -528
  147. package/dist/distribution.js +0 -810
  148. package/dist/drizzle.config.d.ts +0 -20
  149. package/dist/drizzle.config.js +0 -18
  150. package/dist/edgelandes.d.ts +0 -70
  151. package/dist/edgelandes.host.d.ts +0 -26
  152. package/dist/edgelandes.host.js +0 -1089
  153. package/dist/edgelandes.inproc.d.ts +0 -27
  154. package/dist/edgelandes.inproc.js +0 -952
  155. package/dist/edgelandes.js +0 -1133
  156. package/dist/edgelandes.ninety.d.ts +0 -31
  157. package/dist/edgelandes.ninety.js +0 -174
  158. package/dist/edgelandes.virtual.d.ts +0 -25
  159. package/dist/edgelandes.virtual.js +0 -629
  160. package/dist/edgeplane.d.ts +0 -121
  161. package/dist/edgeplane.js +0 -341
  162. package/dist/examplelocaljob.d.ts +0 -1
  163. package/dist/examplelocaljob.js +0 -14
  164. package/dist/execution.d.ts +0 -529
  165. package/dist/execution.js +0 -760
  166. package/dist/family.d.ts +0 -16
  167. package/dist/family.js +0 -42
  168. package/dist/familyurl.d.ts +0 -21
  169. package/dist/familyurl.js +0 -24
  170. package/dist/format.d.ts +0 -18
  171. package/dist/format.js +0 -59
  172. package/dist/foundation.d.ts +0 -172
  173. package/dist/foundation.js +0 -312
  174. package/dist/index.d.ts +0 -735
  175. package/dist/index.js +0 -1020
  176. package/dist/integration.d.ts +0 -235
  177. package/dist/integration.js +0 -228
  178. package/dist/intelligence.d.ts +0 -93
  179. package/dist/intelligence.js +0 -144
  180. package/dist/isolation.d.ts +0 -128
  181. package/dist/isolation.js +0 -95
  182. package/dist/labels.d.ts +0 -665
  183. package/dist/labels.js +0 -707
  184. package/dist/localauth.d.ts +0 -127
  185. package/dist/localauth.js +0 -413
  186. package/dist/media.d.ts +0 -343
  187. package/dist/media.js +0 -985
  188. package/dist/mesh.d.ts +0 -177
  189. package/dist/mesh.js +0 -468
  190. package/dist/modalityregistry.d.ts +0 -109
  191. package/dist/modalityregistry.js +0 -1386
  192. package/dist/modes.d.ts +0 -358
  193. package/dist/modes.js +0 -133
  194. package/dist/onboardingstate.d.ts +0 -79
  195. package/dist/onboardingstate.js +0 -282
  196. package/dist/orchestrator.d.ts +0 -1338
  197. package/dist/orchestrator.js +0 -4310
  198. package/dist/packager/targetcli.js +0 -4
  199. package/dist/paths.d.ts +0 -2
  200. package/dist/paths.js +0 -14
  201. package/dist/performance.d.ts +0 -415
  202. package/dist/performance.js +0 -826
  203. package/dist/quantum.d.ts +0 -809
  204. package/dist/quantum.js +0 -2072
  205. package/dist/render.d.ts +0 -380
  206. package/dist/render.js +0 -1072
  207. package/dist/runall.d.ts +0 -2
  208. package/dist/runall.js +0 -39
  209. package/dist/runtimeprobe.d.ts +0 -4
  210. package/dist/runtimeprobe.js +0 -8
  211. package/dist/sandbox.d.ts +0 -355
  212. package/dist/sandbox.js +0 -1721
  213. package/dist/sandboxenvprofile.d.ts +0 -29
  214. package/dist/sandboxenvprofile.js +0 -89
  215. package/dist/sandboxprofile.d.ts +0 -137
  216. package/dist/sandboxprofile.js +0 -241
  217. package/dist/sandboxqueue.d.ts +0 -108
  218. package/dist/sandboxqueue.js +0 -201
  219. package/dist/sandboxquota.d.ts +0 -121
  220. package/dist/sandboxquota.js +0 -236
  221. package/dist/scheduler.d.ts +0 -595
  222. package/dist/scheduler.js +0 -1258
  223. package/dist/scriptlanes.d.ts +0 -182
  224. package/dist/scriptlanes.js +0 -660
  225. package/dist/scripts.buildengine.d.ts +0 -1
  226. package/dist/scripts.buildengine.js +0 -39
  227. package/dist/scripts.securitygate.d.ts +0 -1
  228. package/dist/scripts.securitygate.js +0 -68
  229. package/dist/scripts.validateflatnative.d.ts +0 -1
  230. package/dist/scripts.validateflatnative.js +0 -72
  231. package/dist/security.d.ts +0 -500
  232. package/dist/security.js +0 -1169
  233. package/dist/seedcatalog.d.ts +0 -13
  234. package/dist/seedcatalog.js +0 -46
  235. package/dist/server.d.ts +0 -20
  236. package/dist/server.js +0 -53
  237. package/dist/speccatalog.d.ts +0 -31
  238. package/dist/speccatalog.js +0 -163
  239. package/dist/tiers.d.ts +0 -1001
  240. package/dist/tiers.js +0 -2169
  241. package/dist/utils.d.ts +0 -2
  242. package/dist/utils.js +0 -5
  243. package/dist/vaulthandoff.d.ts +0 -141
  244. package/dist/vaulthandoff.js +0 -444
  245. package/dist/virtual.d.ts +0 -640
  246. package/dist/virtual.js +0 -1284
  247. package/dist/virtualcpu.d.ts +0 -315
  248. package/dist/virtualcpu.js +0 -1180
  249. package/dist/virtualgpu.d.ts +0 -344
  250. package/dist/virtualgpu.js +0 -1000
  251. package/dist/virtualization.d.ts +0 -606
  252. package/dist/virtualization.js +0 -1186
  253. package/dist/virtualmemory.d.ts +0 -817
  254. package/dist/virtualmemory.js +0 -1795
  255. package/dist/vite.config.d.ts +0 -3
  256. package/dist/vite.config.js +0 -48
  257. package/dist/vitest.config.d.ts +0 -2
  258. package/dist/vitest.config.js +0 -25
  259. package/dist/webserver.d.ts +0 -166
  260. package/dist/webserver.js +0 -2226
  261. package/dist/workloadlaw.d.ts +0 -133
  262. package/dist/workloadlaw.js +0 -193
  263. package/manifest.json +0 -20
  264. package/media.ts +0 -1337
  265. /package/docs/{architecture.1.8.19.md → architecture1819.md} +0 -0
  266. /package/docs/{architecture.1.8.19.mmd → architecture1819.mmd} +0 -0
  267. /package/docs/{artifactresearch.1.8.9.md → artifactresearch189.md} +0 -0
  268. /package/docs/{batches.1816.to.1820.md → batches1816to1820.md} +0 -0
  269. /package/docs/{brancharchive.2026.08.18.md → brancharchive20260818.md} +0 -0
  270. /package/docs/{containerplatforms.1.8.17.md → containerplatforms1817.md} +0 -0
  271. /package/docs/{e2ugh.engine.md → e2ughengine.md} +0 -0
  272. /package/docs/{flatbuildresearch.1.8.11.md → flatbuildresearch1811.md} +0 -0
  273. /package/docs/{licenseaudit.1.8.12.md → licenseaudit1812.md} +0 -0
  274. /package/docs/{mobileconversionresearch.1.8.10.md → mobileconversionresearch1810.md} +0 -0
  275. /package/docs/{nativeidentityresearch.1.8.11.md → nativeidentityresearch1811.md} +0 -0
  276. /package/docs/{native.wrappers.md → nativewrappers.md} +0 -0
  277. /package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
  278. /package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
  279. /package/docs/{planning.engine.md → planningengine.md} +0 -0
  280. /package/docs/{releasenotes.1.8.12.md → releasenotes1812.md} +0 -0
  281. /package/docs/{releasenotes.1.8.15.md → releasenotes1815.md} +0 -0
  282. /package/docs/{releasenotes.1.8.16.md → releasenotes1816.md} +0 -0
  283. /package/docs/{releasenotes.1.8.17.md → releasenotes1817.md} +0 -0
  284. /package/docs/{releasenotes.1.8.18.md → releasenotes1818.md} +0 -0
  285. /package/docs/{releasenotes.1.8.19.md → releasenotes1819.md} +0 -0
  286. /package/docs/{reorganization.1.8.8.md → reorganization188.md} +0 -0
  287. /package/docs/{reorganization.1.8.9.md → reorganization189.md} +0 -0
  288. /package/docs/{repo.analysis.1.8.21.json → repoanalysis1821.json} +0 -0
  289. /package/docs/{repo.candidates.1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
  290. /package/docs/{repo.research.1.8.16.md → reporesearch1816.md} +0 -0
  291. /package/docs/{repo.research.1.8.21.md → reporesearch1821.md} +0 -0
  292. /package/docs/{repo.selected.1.8.21.json → reposelected1821.json} +0 -0
  293. /package/docs/{repo.synthesis.1.8.21.md → reposynthesis1821.md} +0 -0
  294. /package/docs/{research.1.8.18.isolation.md → research1818isolation.md} +0 -0
  295. /package/docs/{research.1.8.19.virtual.browser.md → research1819virtualbrowser.md} +0 -0
  296. /package/docs/{scanningresearch.1.8.11.md → scanningresearch1811.md} +0 -0
  297. /package/docs/{securityaudit.1.8.7.md → securityaudit187.md} +0 -0
  298. /package/docs/{securityreferences.1.8.11.md → securityreferences1811.md} +0 -0
  299. /package/docs/{securityresearch.1.8.11.md → securityresearch1811.md} +0 -0
  300. /package/docs/{signingresearch.1.8.12.md → signingresearch1812.md} +0 -0
  301. /package/docs/{tauri.glib.risk.1.8.11.md → tauriglibrisk1811.md} +0 -0
  302. /package/docs/{todo.1.8.18.md → todo1818.md} +0 -0
  303. /package/docs/{todo.1.8.19.md → todo1819.md} +0 -0
  304. /package/docs/{toolchainresearch.1.8.9.md → toolchainresearch189.md} +0 -0
  305. /package/docs/{web.duplicatecleanup.md → webduplicatecleanup.md} +0 -0
  306. /package/docs/{web.ideas.md → webideas.md} +0 -0
  307. /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
- };