@greenpandastudios/aug-cli 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -0
  3. package/THIRD_PARTY_NOTICES.md +18 -0
  4. package/bin/aug.mjs +3 -0
  5. package/docs/api/crypto.md +351 -0
  6. package/docs/api/io.md +207 -0
  7. package/docs/api/json.md +21 -0
  8. package/docs/api/memory.md +109 -0
  9. package/docs/api/time.md +54 -0
  10. package/docs/api/web.md +184 -0
  11. package/docs/assets/benchmarks/execution.svg +2978 -0
  12. package/docs/assets/benchmarks/http.svg +1674 -0
  13. package/docs/assets/benchmarks/improvements.svg +2315 -0
  14. package/docs/assets/benchmarks/memory.svg +1891 -0
  15. package/docs/benchmark-baseline.json +1087 -0
  16. package/docs/benchmark-results.json +91123 -0
  17. package/docs/benchmarks.json +38 -0
  18. package/docs/compatibility.md +42 -0
  19. package/docs/concurrency-implementation.md +18 -0
  20. package/docs/diagnostics.md +97 -0
  21. package/docs/docker.md +35 -0
  22. package/docs/example-projects.json +26 -0
  23. package/docs/examples/approved-design/counters.md +253 -0
  24. package/docs/examples/approved-design/dependencies/august/0.19.0/io/contracts.md +395 -0
  25. package/docs/examples/approved-design/domain/app.md +165 -0
  26. package/docs/examples/approved-design/domain/export.md +83 -0
  27. package/docs/examples/approved-design/domain/models.md +80 -0
  28. package/docs/examples/approved-design/domain/numbers.md +248 -0
  29. package/docs/examples/approved-design/index.md +39 -0
  30. package/docs/examples/approved-design/main-yaml.md +24 -0
  31. package/docs/examples/approved-design/main.md +215 -0
  32. package/docs/examples/benchmark/index.md +33 -0
  33. package/docs/examples/benchmark/main-yaml.md +17 -0
  34. package/docs/examples/benchmark/main.md +117 -0
  35. package/docs/examples/cli-args/index.md +32 -0
  36. package/docs/examples/cli-args/main.md +107 -0
  37. package/docs/examples/collections/index.md +32 -0
  38. package/docs/examples/collections/main.md +118 -0
  39. package/docs/examples/collections-benchmark/index.md +34 -0
  40. package/docs/examples/collections-benchmark/main.md +115 -0
  41. package/docs/examples/cpu-benchmark/index.md +34 -0
  42. package/docs/examples/cpu-benchmark/main.md +90 -0
  43. package/docs/examples/developer-workflow/calculator.md +357 -0
  44. package/docs/examples/developer-workflow/dependencies/august/0.19.0/io/contracts.md +395 -0
  45. package/docs/examples/developer-workflow/index.md +37 -0
  46. package/docs/examples/developer-workflow/logging/console.md +124 -0
  47. package/docs/examples/developer-workflow/logging/export.md +70 -0
  48. package/docs/examples/developer-workflow/logging/logger.md +111 -0
  49. package/docs/examples/developer-workflow/main.md +172 -0
  50. package/docs/examples/drop/index.md +33 -0
  51. package/docs/examples/drop/main.md +85 -0
  52. package/docs/examples/drop/resource.md +95 -0
  53. package/docs/examples/errors/errors.md +85 -0
  54. package/docs/examples/errors/index.md +33 -0
  55. package/docs/examples/errors/main.md +92 -0
  56. package/docs/examples/ffi/index.md +33 -0
  57. package/docs/examples/ffi/main.md +75 -0
  58. package/docs/examples/ffi/native.md +93 -0
  59. package/docs/examples/generic-di/dependencies/august/0.19.0/io/contracts.md +395 -0
  60. package/docs/examples/generic-di/index.md +33 -0
  61. package/docs/examples/generic-di/main.md +111 -0
  62. package/docs/examples/generic-di/types.md +180 -0
  63. package/docs/examples/generics/index.md +33 -0
  64. package/docs/examples/generics/main.md +120 -0
  65. package/docs/examples/generics/types.md +189 -0
  66. package/docs/examples/hello/app/export.md +67 -0
  67. package/docs/examples/hello/app/greeter.md +190 -0
  68. package/docs/examples/hello/dependencies/august/0.19.0/io/contracts.md +395 -0
  69. package/docs/examples/hello/index.md +37 -0
  70. package/docs/examples/hello/logging/console.md +121 -0
  71. package/docs/examples/hello/logging/export.md +71 -0
  72. package/docs/examples/hello/logging/logger.md +120 -0
  73. package/docs/examples/hello/main.md +115 -0
  74. package/docs/examples/http-benchmark/index.md +35 -0
  75. package/docs/examples/http-benchmark/main.md +79 -0
  76. package/docs/examples/http-benchmark/routes.md +88 -0
  77. package/docs/examples/index.md +60 -0
  78. package/docs/examples/interceptors/app.md +250 -0
  79. package/docs/examples/interceptors/dependencies/august/0.19.0/io/contracts.md +395 -0
  80. package/docs/examples/interceptors/index.md +35 -0
  81. package/docs/examples/interceptors/interceptors.md +284 -0
  82. package/docs/examples/interceptors/logging.md +155 -0
  83. package/docs/examples/interceptors/main.md +162 -0
  84. package/docs/examples/json-benchmark/data.md +71 -0
  85. package/docs/examples/json-benchmark/dependencies/august/0.19.0/json/contracts.md +103 -0
  86. package/docs/examples/json-benchmark/index.md +35 -0
  87. package/docs/examples/json-benchmark/main.md +131 -0
  88. package/docs/examples/new-syntax/console.md +118 -0
  89. package/docs/examples/new-syntax/dependencies/august/0.19.0/io/contracts.md +395 -0
  90. package/docs/examples/new-syntax/greeter.md +145 -0
  91. package/docs/examples/new-syntax/index.md +36 -0
  92. package/docs/examples/new-syntax/logger.md +111 -0
  93. package/docs/examples/new-syntax/main.md +135 -0
  94. package/docs/examples/new-syntax/math.md +79 -0
  95. package/docs/examples/oidc-login/client/contracts.md +151 -0
  96. package/docs/examples/oidc-login/client/endpoints.md +263 -0
  97. package/docs/examples/oidc-login/client/export.md +107 -0
  98. package/docs/examples/oidc-login/client/login.md +515 -0
  99. package/docs/examples/oidc-login/client/logout.md +249 -0
  100. package/docs/examples/oidc-login/client/protocol.md +595 -0
  101. package/docs/examples/oidc-login/client/session.md +297 -0
  102. package/docs/examples/oidc-login/client/views.md +144 -0
  103. package/docs/examples/oidc-login/common/export.md +115 -0
  104. package/docs/examples/oidc-login/common/headers.md +162 -0
  105. package/docs/examples/oidc-login/common/keys.md +336 -0
  106. package/docs/examples/oidc-login/common/settings.md +116 -0
  107. package/docs/examples/oidc-login/common/views.md +103 -0
  108. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/contracts.md +925 -0
  109. package/docs/examples/oidc-login/dependencies/august/0.19.0/crypto/jose.md +434 -0
  110. package/docs/examples/oidc-login/dependencies/august/0.19.0/json/contracts.md +103 -0
  111. package/docs/examples/oidc-login/dependencies/august/0.19.0/memory/store.md +374 -0
  112. package/docs/examples/oidc-login/dependencies/august/0.19.0/time/contracts.md +150 -0
  113. package/docs/examples/oidc-login/dependencies/august/0.19.0/web/contracts.md +532 -0
  114. package/docs/examples/oidc-login/index.md +57 -0
  115. package/docs/examples/oidc-login/main-yaml.md +28 -0
  116. package/docs/examples/oidc-login/main.md +283 -0
  117. package/docs/examples/oidc-login/provider/authorization.md +457 -0
  118. package/docs/examples/oidc-login/provider/contracts.md +267 -0
  119. package/docs/examples/oidc-login/provider/credentials.md +148 -0
  120. package/docs/examples/oidc-login/provider/discovery.md +215 -0
  121. package/docs/examples/oidc-login/provider/export.md +131 -0
  122. package/docs/examples/oidc-login/provider/token.md +364 -0
  123. package/docs/examples/oidc-login/provider/userinfo.md +228 -0
  124. package/docs/examples/oidc-login/provider/views.md +137 -0
  125. package/docs/examples/ownership/counter.md +140 -0
  126. package/docs/examples/ownership/index.md +33 -0
  127. package/docs/examples/ownership/main.md +90 -0
  128. package/docs/examples/ownership-transfer/dependencies/august/0.19.0/io/contracts.md +395 -0
  129. package/docs/examples/ownership-transfer/index.md +33 -0
  130. package/docs/examples/ownership-transfer/main.md +125 -0
  131. package/docs/examples/ownership-transfer/resource.md +150 -0
  132. package/docs/examples/packages-app/dependencies/packages/@example/aug-math/0.1.0/arithmetic.md +117 -0
  133. package/docs/examples/packages-app/index.md +34 -0
  134. package/docs/examples/packages-app/main-yaml.md +18 -0
  135. package/docs/examples/packages-app/main.md +80 -0
  136. package/docs/examples/packages-math/aug-package-json.md +24 -0
  137. package/docs/examples/packages-math/index.md +36 -0
  138. package/docs/examples/packages-math/package-json.md +25 -0
  139. package/docs/examples/packages-math/src/arithmetic.md +121 -0
  140. package/docs/examples/packages-math/src/export.md +63 -0
  141. package/docs/examples/startup-benchmark/index.md +34 -0
  142. package/docs/examples/startup-benchmark/main.md +68 -0
  143. package/docs/examples/visibility/counter.md +142 -0
  144. package/docs/examples/visibility/index.md +33 -0
  145. package/docs/examples/visibility/main.md +96 -0
  146. package/docs/examples.json +47 -0
  147. package/docs/getting-started.md +5 -0
  148. package/docs/grammar.md +136 -0
  149. package/docs/implementation-map.md +106 -0
  150. package/docs/index.md +46 -0
  151. package/docs/language-conformance.md +30 -0
  152. package/docs/language-constructs.md +1461 -0
  153. package/docs/language-design-audit.md +147 -0
  154. package/docs/maintaining-docs.md +43 -0
  155. package/docs/packages.md +184 -0
  156. package/docs/performance.md +535 -0
  157. package/docs/production-readiness.md +39 -0
  158. package/docs/reference.md +361 -0
  159. package/docs/release-review.md +23 -0
  160. package/docs/releasing.md +79 -0
  161. package/docs/roadmap.md +13 -0
  162. package/docs/specifications.md +86 -0
  163. package/docs/testing.md +120 -0
  164. package/docs/tooling.md +197 -0
  165. package/docs/web-implementation-plan.md +39 -0
  166. package/docs/web-library-gaps.md +27 -0
  167. package/docs/web.md +197 -0
  168. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  169. package/examples/approved-design/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  170. package/examples/approved-design/.aug-spec/manifest.json +14 -0
  171. package/examples/approved-design/counters.aug +22 -0
  172. package/examples/approved-design/counters.aug.md +177 -0
  173. package/examples/approved-design/domain/app.aug +12 -0
  174. package/examples/approved-design/domain/app.aug.md +97 -0
  175. package/examples/approved-design/domain/export.aug +5 -0
  176. package/examples/approved-design/domain/export.aug.md +25 -0
  177. package/examples/approved-design/domain/models.aug +2 -0
  178. package/examples/approved-design/domain/models.aug.md +30 -0
  179. package/examples/approved-design/domain/numbers.aug +29 -0
  180. package/examples/approved-design/domain/numbers.aug.md +141 -0
  181. package/examples/approved-design/main.aug +26 -0
  182. package/examples/approved-design/main.aug.md +108 -0
  183. package/examples/approved-design/main.yaml +8 -0
  184. package/examples/benchmark/.aug-spec/manifest.json +7 -0
  185. package/examples/benchmark/main.aug +17 -0
  186. package/examples/benchmark/main.aug.md +43 -0
  187. package/examples/benchmark/main.yaml +1 -0
  188. package/examples/cli-args/.aug-spec/manifest.json +7 -0
  189. package/examples/cli-args/main.aug +15 -0
  190. package/examples/cli-args/main.aug.md +38 -0
  191. package/examples/collections/.aug-spec/manifest.json +7 -0
  192. package/examples/collections/main.aug +18 -0
  193. package/examples/collections/main.aug.md +43 -0
  194. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  195. package/examples/developer-workflow/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  196. package/examples/developer-workflow/.aug-spec/manifest.json +13 -0
  197. package/examples/developer-workflow/calculator.aug +55 -0
  198. package/examples/developer-workflow/calculator.aug.md +228 -0
  199. package/examples/developer-workflow/logging/console.aug +8 -0
  200. package/examples/developer-workflow/logging/console.aug.md +67 -0
  201. package/examples/developer-workflow/logging/export.aug +2 -0
  202. package/examples/developer-workflow/logging/export.aug.md +19 -0
  203. package/examples/developer-workflow/logging/logger.aug +6 -0
  204. package/examples/developer-workflow/logging/logger.aug.md +57 -0
  205. package/examples/developer-workflow/main.aug +25 -0
  206. package/examples/developer-workflow/main.aug.md +79 -0
  207. package/examples/drop/.aug-spec/manifest.json +8 -0
  208. package/examples/drop/main.aug +3 -0
  209. package/examples/drop/main.aug.md +35 -0
  210. package/examples/drop/resource.aug +8 -0
  211. package/examples/drop/resource.aug.md +44 -0
  212. package/examples/errors/.aug-spec/manifest.json +8 -0
  213. package/examples/errors/errors.aug +6 -0
  214. package/examples/errors/errors.aug.md +33 -0
  215. package/examples/errors/main.aug +7 -0
  216. package/examples/errors/main.aug.md +36 -0
  217. package/examples/ffi/.aug-spec/manifest.json +8 -0
  218. package/examples/ffi/main.aug +2 -0
  219. package/examples/ffi/main.aug.md +27 -0
  220. package/examples/ffi/native.aug +6 -0
  221. package/examples/ffi/native.aug.md +43 -0
  222. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  223. package/examples/generic-di/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  224. package/examples/generic-di/.aug-spec/manifest.json +10 -0
  225. package/examples/generic-di/main.aug +9 -0
  226. package/examples/generic-di/main.aug.md +49 -0
  227. package/examples/generic-di/types.aug +17 -0
  228. package/examples/generic-di/types.aug.md +124 -0
  229. package/examples/generics/.aug-spec/manifest.json +8 -0
  230. package/examples/generics/main.aug +9 -0
  231. package/examples/generics/main.aug.md +58 -0
  232. package/examples/generics/types.aug +19 -0
  233. package/examples/generics/types.aug.md +132 -0
  234. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  235. package/examples/hello/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  236. package/examples/hello/.aug-spec/manifest.json +14 -0
  237. package/examples/hello/app/export.aug +1 -0
  238. package/examples/hello/app/export.aug.md +17 -0
  239. package/examples/hello/app/greeter.aug +22 -0
  240. package/examples/hello/app/greeter.aug.md +109 -0
  241. package/examples/hello/logging/console.aug +7 -0
  242. package/examples/hello/logging/console.aug.md +65 -0
  243. package/examples/hello/logging/export.aug +2 -0
  244. package/examples/hello/logging/export.aug.md +19 -0
  245. package/examples/hello/logging/logger.aug +9 -0
  246. package/examples/hello/logging/logger.aug.md +59 -0
  247. package/examples/hello/main.aug +9 -0
  248. package/examples/hello/main.aug.md +49 -0
  249. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  250. package/examples/interceptors/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  251. package/examples/interceptors/.aug-spec/manifest.json +12 -0
  252. package/examples/interceptors/app.aug +28 -0
  253. package/examples/interceptors/app.aug.md +162 -0
  254. package/examples/interceptors/interceptors.aug +40 -0
  255. package/examples/interceptors/interceptors.aug.md +180 -0
  256. package/examples/interceptors/logging.aug +12 -0
  257. package/examples/interceptors/logging.aug.md +96 -0
  258. package/examples/interceptors/main.aug +22 -0
  259. package/examples/interceptors/main.aug.md +76 -0
  260. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  261. package/examples/new-syntax/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  262. package/examples/new-syntax/.aug-spec/manifest.json +13 -0
  263. package/examples/new-syntax/console.aug +7 -0
  264. package/examples/new-syntax/console.aug.md +63 -0
  265. package/examples/new-syntax/greeter.aug +10 -0
  266. package/examples/new-syntax/greeter.aug.md +89 -0
  267. package/examples/new-syntax/logger.aug +6 -0
  268. package/examples/new-syntax/logger.aug.md +57 -0
  269. package/examples/new-syntax/main.aug +12 -0
  270. package/examples/new-syntax/main.aug.md +64 -0
  271. package/examples/new-syntax/math.aug +3 -0
  272. package/examples/new-syntax/math.aug.md +29 -0
  273. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug +73 -0
  274. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/contracts.aug.md +791 -0
  275. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug +68 -0
  276. package/examples/oidc-login/.aug-spec/august/0.19.0/crypto/jose.aug.md +266 -0
  277. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug +6 -0
  278. package/examples/oidc-login/.aug-spec/august/0.19.0/json/contracts.aug.md +55 -0
  279. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug +45 -0
  280. package/examples/oidc-login/.aug-spec/august/0.19.0/memory/store.aug.md +250 -0
  281. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug +11 -0
  282. package/examples/oidc-login/.aug-spec/august/0.19.0/time/contracts.aug.md +96 -0
  283. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug +58 -0
  284. package/examples/oidc-login/.aug-spec/august/0.19.0/web/contracts.aug.md +420 -0
  285. package/examples/oidc-login/.aug-spec/manifest.json +40 -0
  286. package/examples/oidc-login/README.md +29 -0
  287. package/examples/oidc-login/client/contracts.aug +7 -0
  288. package/examples/oidc-login/client/contracts.aug.md +80 -0
  289. package/examples/oidc-login/client/endpoints.aug +21 -0
  290. package/examples/oidc-login/client/endpoints.aug.md +161 -0
  291. package/examples/oidc-login/client/export.aug +7 -0
  292. package/examples/oidc-login/client/export.aug.md +29 -0
  293. package/examples/oidc-login/client/login.aug +58 -0
  294. package/examples/oidc-login/client/login.aug.md +331 -0
  295. package/examples/oidc-login/client/logout.aug +18 -0
  296. package/examples/oidc-login/client/logout.aug.md +150 -0
  297. package/examples/oidc-login/client/protocol.aug +106 -0
  298. package/examples/oidc-login/client/protocol.aug.md +326 -0
  299. package/examples/oidc-login/client/session.aug +34 -0
  300. package/examples/oidc-login/client/session.aug.md +155 -0
  301. package/examples/oidc-login/client/views.aug +21 -0
  302. package/examples/oidc-login/client/views.aug.md +68 -0
  303. package/examples/oidc-login/common/export.aug +9 -0
  304. package/examples/oidc-login/common/export.aug.md +33 -0
  305. package/examples/oidc-login/common/headers.aug +11 -0
  306. package/examples/oidc-login/common/headers.aug.md +79 -0
  307. package/examples/oidc-login/common/keys.aug +37 -0
  308. package/examples/oidc-login/common/keys.aug.md +207 -0
  309. package/examples/oidc-login/common/settings.aug +4 -0
  310. package/examples/oidc-login/common/settings.aug.md +47 -0
  311. package/examples/oidc-login/common/views.aug +16 -0
  312. package/examples/oidc-login/common/views.aug.md +34 -0
  313. package/examples/oidc-login/main.aug +39 -0
  314. package/examples/oidc-login/main.aug.md +166 -0
  315. package/examples/oidc-login/main.yaml +12 -0
  316. package/examples/oidc-login/provider/authorization.aug +59 -0
  317. package/examples/oidc-login/provider/authorization.aug.md +264 -0
  318. package/examples/oidc-login/provider/contracts.aug +15 -0
  319. package/examples/oidc-login/provider/contracts.aug.md +193 -0
  320. package/examples/oidc-login/provider/credentials.aug +10 -0
  321. package/examples/oidc-login/provider/credentials.aug.md +64 -0
  322. package/examples/oidc-login/provider/discovery.aug +13 -0
  323. package/examples/oidc-login/provider/discovery.aug.md +133 -0
  324. package/examples/oidc-login/provider/export.aug +13 -0
  325. package/examples/oidc-login/provider/export.aug.md +41 -0
  326. package/examples/oidc-login/provider/token.aug +37 -0
  327. package/examples/oidc-login/provider/token.aug.md +223 -0
  328. package/examples/oidc-login/provider/userinfo.aug +26 -0
  329. package/examples/oidc-login/provider/userinfo.aug.md +104 -0
  330. package/examples/oidc-login/provider/views.aug +18 -0
  331. package/examples/oidc-login/provider/views.aug.md +63 -0
  332. package/examples/ownership/.aug-spec/manifest.json +8 -0
  333. package/examples/ownership/counter.aug +14 -0
  334. package/examples/ownership/counter.aug.md +85 -0
  335. package/examples/ownership/main.aug +4 -0
  336. package/examples/ownership/main.aug.md +38 -0
  337. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug +36 -0
  338. package/examples/ownership-transfer/.aug-spec/august/0.19.0/io/contracts.aug.md +316 -0
  339. package/examples/ownership-transfer/.aug-spec/manifest.json +10 -0
  340. package/examples/ownership-transfer/main.aug +9 -0
  341. package/examples/ownership-transfer/main.aug.md +63 -0
  342. package/examples/ownership-transfer/resource.aug +16 -0
  343. package/examples/ownership-transfer/resource.aug.md +89 -0
  344. package/examples/packages/README.md +15 -0
  345. package/examples/packages/app/.aug-spec/manifest.json +9 -0
  346. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug +9 -0
  347. package/examples/packages/app/.aug-spec/packages/@example/aug-math/0.1.0/arithmetic.aug.md +63 -0
  348. package/examples/packages/app/main.aug +2 -0
  349. package/examples/packages/app/main.aug.md +33 -0
  350. package/examples/packages/app/main.yaml +2 -0
  351. package/examples/packages/math/.aug-spec/manifest.json +8 -0
  352. package/examples/packages/math/README.md +3 -0
  353. package/examples/packages/math/aug-package.json +8 -0
  354. package/examples/packages/math/package.json +9 -0
  355. package/examples/packages/math/src/arithmetic.aug +8 -0
  356. package/examples/packages/math/src/arithmetic.aug.md +63 -0
  357. package/examples/packages/math/src/export.aug +1 -0
  358. package/examples/packages/math/src/export.aug.md +17 -0
  359. package/examples/visibility/.aug-spec/manifest.json +8 -0
  360. package/examples/visibility/counter.aug +14 -0
  361. package/examples/visibility/counter.aug.md +87 -0
  362. package/examples/visibility/main.aug +7 -0
  363. package/examples/visibility/main.aug.md +39 -0
  364. package/package.json +50 -0
  365. package/runtime/aug_crypto.c +121 -0
  366. package/runtime/aug_html.c +93 -0
  367. package/runtime/aug_http.c +829 -0
  368. package/runtime/aug_json.c +165 -0
  369. package/runtime/aug_runtime.c +792 -0
  370. package/runtime/aug_runtime.h +245 -0
  371. package/runtime/aug_tasks.c +172 -0
  372. package/runtime/aug_time.c +5 -0
  373. package/runtime/aug_values.c +80 -0
  374. package/scripts/bootstrap-native.mjs +121 -0
  375. package/scripts/native-dependencies.lock.json +65 -0
  376. package/scripts/native-home.mjs +11 -0
  377. package/src/actions.js +109 -0
  378. package/src/ast.js +19 -0
  379. package/src/builtins.js +93 -0
  380. package/src/checker.js +2896 -0
  381. package/src/cli.js +344 -0
  382. package/src/codegen.js +1159 -0
  383. package/src/config.js +149 -0
  384. package/src/continuation.js +110 -0
  385. package/src/di.js +24 -0
  386. package/src/documentation.js +27 -0
  387. package/src/editor.js +782 -0
  388. package/src/effects.js +29 -0
  389. package/src/fixes.js +222 -0
  390. package/src/formatter.js +296 -0
  391. package/src/freshness.js +154 -0
  392. package/src/help.js +212 -0
  393. package/src/html.js +27 -0
  394. package/src/http-policies.js +90 -0
  395. package/src/inference.js +16 -0
  396. package/src/interceptors.js +70 -0
  397. package/src/javadoc.js +67 -0
  398. package/src/lexer.js +199 -0
  399. package/src/libraries.js +31 -0
  400. package/src/lsp.js +180 -0
  401. package/src/native.js +144 -0
  402. package/src/navigation.js +162 -0
  403. package/src/openapi.js +220 -0
  404. package/src/ownership.js +232 -0
  405. package/src/package-manager.js +299 -0
  406. package/src/parser.js +1155 -0
  407. package/src/policies.js +130 -0
  408. package/src/project-init.js +19 -0
  409. package/src/project.js +292 -0
  410. package/src/schemas.js +62 -0
  411. package/src/semantic.js +255 -0
  412. package/src/spec.js +738 -0
  413. package/src/testing.js +186 -0
  414. package/src/types.js +10 -0
@@ -0,0 +1,29 @@
1
+ /** Raised when an input is outside the operation's domain. */
2
+ RangeError(int value) implements Error:
3
+ pass
4
+ /** A pure validation layer, shared by any compatible callable. */
5
+ interceptor Positive<T>():
6
+ around(int amount) returns T unless RangeError:
7
+ if amount < 0:
8
+ throw RangeError(value=amount)
9
+ return next()
10
+ /**
11
+ * Double a nonnegative amount.
12
+ * @param amount Integer to double.
13
+ * @return Twice the amount, with defined integer wrapping.
14
+ * @throws RangeError A validation layer rejected a negative input.
15
+ */
16
+ [Positive]
17
+ double(int amount) returns int:
18
+ return amount * 2
19
+ test double:
20
+ when "positive":
21
+ it "doubles" for (input, expected) in [(0, 0), (3, 6), (7, 14)]:
22
+ assert(double(amount=input) == expected)
23
+ it "rejects_negative":
24
+ bool rejected to false
25
+ try:
26
+ double(amount=-1)
27
+ catch RangeError error:
28
+ rejected to error.value == -1
29
+ assert(rejected)
@@ -0,0 +1,141 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `numbers.aug` specification
4
+
5
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
+
7
+ ## In this file
8
+
9
+ - [`RangeError`](numbers.aug.md#symbol-RangeError) is a class implementing `Error`.
10
+ - [`Positive`](numbers.aug.md#symbol-Positive) is an interceptor.
11
+ - [`double`](numbers.aug.md#symbol-double) is a function returning `int`.
12
+ - [`test double`](numbers.aug.md#symbol-test%20double) is a same-file test suite.
13
+
14
+ <a id="symbol-RangeError"></a>
15
+
16
+ ## `RangeError`
17
+
18
+ [source](numbers.aug#L2)
19
+
20
+ Behavioral class.
21
+
22
+ Satisfies `Error`.
23
+
24
+ **Author documentation**
25
+
26
+ Raised when an input is outside the operation's domain.
27
+
28
+ **Inputs**
29
+
30
+ - `value` (`int`) — required labeled input — stored as `value` and read-only after initialization.
31
+
32
+ <a id="symbol-Positive"></a>
33
+
34
+ ## `Positive`
35
+
36
+ [source](numbers.aug#L5)
37
+
38
+ Function or constructor middleware.
39
+
40
+ Type parameters: `T`.
41
+
42
+ **Author documentation**
43
+
44
+ A pure validation layer, shared by any compatible callable.
45
+
46
+ Create a fresh interceptor for each invocation. Its around operation can delegate once, change selected inputs, or short-circuit with a compatible result or failure.
47
+
48
+ <a id="symbol-Positive.around"></a>
49
+
50
+ ### `Positive.around`
51
+
52
+ [source](numbers.aug#L6)
53
+
54
+ **Inputs**
55
+
56
+ - `amount` (`int`) — required labeled input.
57
+
58
+ Returns: `T`.
59
+
60
+ Can fail with `RangeError`. Callers must catch or propagate these errors.
61
+
62
+ **What it does**
63
+
64
+ - If `amount` is less than `0`:
65
+ - Fail with call [`RangeError`](numbers.aug.md#symbol-RangeError) with `value` = `amount`. Transfer control to a matching catch or propagate the failure.
66
+ - Return call `next`.
67
+
68
+ <a id="symbol-double"></a>
69
+
70
+ ## `double`
71
+
72
+ [source](numbers.aug#L17)
73
+
74
+ **Inputs**
75
+
76
+ - `amount` (`int`) — required labeled input.
77
+
78
+ Returns: `int`.
79
+
80
+ Can fail with `RangeError`. Callers must catch or propagate these errors.
81
+
82
+ **Interceptors, in execution order**
83
+
84
+ 1. Call [`Positive.around`](numbers.aug.md#symbol-Positive.around). It can call the next layer or finish with its own result or failure. Unselected inputs pass through.
85
+
86
+ The first layer wraps the remaining layers. HTTP policies run before wire decoding; custom interceptors run after decoding. Follow linked behavior to see its conditions, input changes, and calls to the next layer.
87
+
88
+ **What it does**
89
+
90
+ - Return `amount` times `2`.
91
+
92
+ **Author documentation**
93
+
94
+ Double a nonnegative amount.
95
+
96
+ **Returns** Twice the amount, with defined integer wrapping.
97
+
98
+ **Parameters**
99
+ - `amount`: Integer to double.
100
+
101
+ **Throws**
102
+ - `RangeError`: A validation layer rejected a negative input.
103
+
104
+ <a id="symbol-test double"></a>
105
+
106
+ ## `test double`
107
+
108
+ [source](numbers.aug#L19)
109
+
110
+ Same-file function tests for [`double`](numbers.aug.md#symbol-double). Each case gets isolated setup and dependency bindings.
111
+
112
+ ### Group `positive`
113
+
114
+ #### `doubles`
115
+
116
+ [source](numbers.aug#L21)
117
+
118
+ Run once for each row of a tuple containing `0`, `0`; a tuple containing `3`, `6`; a tuple containing `7`, `14`. Bind row positions to `input`, `expected`.
119
+
120
+ - Call `assert` with (call [`double`](numbers.aug.md#symbol-double) with `amount` = `input` equals `expected`).
121
+
122
+ #### `rejects_negative`
123
+
124
+ [source](numbers.aug#L23)
125
+
126
+ - Set `rejected` of type `bool` to `false`.
127
+ - Try these operations:
128
+ - Call [`double`](numbers.aug.md#symbol-double) with `amount` = `-1`.
129
+ - If they fail with [`RangeError`](numbers.aug.md#symbol-RangeError), name the failure `error` and recover:
130
+ - Set `rejected` to `value` of `error` equals `-1`.
131
+ - Call `assert` with `rejected` = `rejected`.
132
+
133
+ ## Built-in operations used by this file
134
+
135
+ - `assert` (`condition`: `bool`) → `void`: Assert a bool in a test case or its setup. Catching an assertion failure cannot make the case pass; every case must execute an assertion.
136
+
137
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
138
+
139
+ ## Shared language rules
140
+
141
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
@@ -0,0 +1,26 @@
1
+ import Console and SystemConsole from august.io
2
+ import Application and ApplicationImpl and Fruit and double and RangeError from domain
3
+ import Counter and Counters from counters
4
+ implement Console with SystemConsole
5
+ implement Application with ApplicationImpl
6
+ include Counters
7
+ resolve Application to app
8
+ app.start()
9
+ names to {1: "apple", 2: "pear"}
10
+ match names.get(key=2):
11
+ when null:
12
+ print(value="missing fruit")
13
+ when some name:
14
+ print(value=name)
15
+ (code, label) to (3, "plum")
16
+ print(value={Fruit(code=code, name=label), Fruit(name=label, code=code)}.length())
17
+ scope:
18
+ resolve Counter to counter
19
+ borrow counter:
20
+ counter.increment()
21
+ print(value=counter.value())
22
+ try:
23
+ print(value=double(amount=7))
24
+ double(amount=-1)
25
+ catch RangeError error:
26
+ print(value="negative amount rejected")
@@ -0,0 +1,108 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `main.aug` specification
4
+
5
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
+
7
+ ## In this file
8
+
9
+ - Include providers from `Counters`.
10
+ - Register 2 dependency providers before startup.
11
+ - Run startup operations with checked error recovery.
12
+ - Run 7 other startup steps in source order.
13
+
14
+ ## Dependency providers
15
+
16
+ Register these providers before startup. Their declaration order does not set initialization order; shared instances initialize in dependency order.
17
+
18
+ - Provide [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole) when `Console` is requested. Reuse one instance.
19
+ - Provide [`ApplicationImpl`](domain/app.aug.md#symbol-ApplicationImpl) when `Application` is requested. Reuse one instance. Required dependencies: `Console`.
20
+ - Include the providers from [`Counters`](counters.aug.md#symbol-Counters) before execution.
21
+
22
+ ## Startup, in source order
23
+
24
+ - Set `app` to the instance provided for `Application`.
25
+ - Call [`Application.start`](domain/app.aug.md#symbol-Application.start) on `app`.
26
+ - Set `names` to a map with `1` mapped to `"apple"`; `2` mapped to `"pear"`.
27
+ - Select the matching case for call `get` on `names` with `key` = `2`:
28
+ - A null value, including omitted optional input:
29
+ - Call `print` with `value` = `"missing fruit"`.
30
+ - A present, non-null value, named `name`:
31
+ - Call `print` with `value` = `name`.
32
+ - Split a tuple containing `3`, `"plum"` into `code`, `label`, in that order.
33
+ - Call `print` with `value` = call `length` on a set containing call [`Fruit`](domain/models.aug.md#symbol-Fruit) with `code` = `code`; `name` = `label`, call [`Fruit`](domain/models.aug.md#symbol-Fruit) with `name` = `label`; `code` = `code`.
34
+ - Create a dependency and task scope. Join its child tasks and release scoped values before leaving:
35
+ - Set `counter` to the instance provided for `Counter`.
36
+ - Grant exclusive mutable access to `counter` for this block, then end the borrow:
37
+ - Call [`Counter.increment`](counters.aug.md#symbol-Counter.increment) on `counter`.
38
+ - Call `print` with `value` = call [`Counter.value`](counters.aug.md#symbol-Counter.value) on `counter`.
39
+ - Try these operations:
40
+ - Call `print` with `value` = call [`double`](domain/numbers.aug.md#symbol-double) with `amount` = `7`.
41
+ - Call [`double`](domain/numbers.aug.md#symbol-double) with `amount` = `-1`.
42
+ - If they fail with [`RangeError`](domain/numbers.aug.md#symbol-RangeError), name the failure `error` and recover:
43
+ - Call `print` with `value` = `"negative amount rejected"`.
44
+
45
+ ## Dependencies used by this file
46
+
47
+ Only referenced types and operations appear here. Each name links to its complete specification.
48
+
49
+ ### [`SystemConsole`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-SystemConsole)
50
+
51
+ Class from `august.io`.
52
+
53
+ Used as a type or provider.
54
+
55
+ ### [`Counter`](counters.aug.md#symbol-Counter)
56
+
57
+ Interface from `counters`.
58
+
59
+ - [`Counter.increment`](counters.aug.md#symbol-Counter.increment) (no caller inputs) → `void`; changes `self`.
60
+ - [`Counter.value`](counters.aug.md#symbol-Counter.value) (no caller inputs) → `int`.
61
+
62
+ ### [`Counters`](counters.aug.md#symbol-Counters)
63
+
64
+ Composition from `counters`.
65
+
66
+ Used as a type or provider.
67
+
68
+ ### [`Application`](domain/app.aug.md#symbol-Application)
69
+
70
+ Interface from `domain`.
71
+
72
+ - [`Application.start`](domain/app.aug.md#symbol-Application.start) (no caller inputs) → `void`; uses [`Console.write`](.aug-spec/august/0.19.0/io/contracts.aug.md#symbol-Console.write).
73
+
74
+ ### [`ApplicationImpl`](domain/app.aug.md#symbol-ApplicationImpl)
75
+
76
+ Class from `domain`.
77
+
78
+ Used as a type or provider.
79
+
80
+ ### [`Fruit`](domain/models.aug.md#symbol-Fruit)
81
+
82
+ Record from `domain`.
83
+
84
+ - Construct with `code`: `int`, `name`: `string` → [`Fruit`](domain/models.aug.md#symbol-Fruit).
85
+
86
+ ### [`RangeError`](domain/numbers.aug.md#symbol-RangeError)
87
+
88
+ Class from `domain`.
89
+
90
+ Used as a type or provider.
91
+
92
+ ### [`double`](domain/numbers.aug.md#symbol-double)
93
+
94
+ Function from `domain`.
95
+
96
+ - [`double`](domain/numbers.aug.md#symbol-double) (`amount`: `int`) → `int`; can fail with `RangeError`.
97
+
98
+ ## Built-in operations used by this file
99
+
100
+ - `Map<int, string>.get` (`key`: `int`) → `optional string`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
101
+ - `Set<Fruit>.length` (no inputs) → `int`: Read the number of elements.
102
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
103
+
104
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
105
+
106
+ ## Shared language rules
107
+
108
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
@@ -0,0 +1,8 @@
1
+ block_style: indent
2
+ indentation: tabs
3
+ assignment: to
4
+ lint:
5
+ - architecture
6
+ module_dependencies:
7
+ - ".: domain"
8
+ - "domain:"
@@ -0,0 +1,7 @@
1
+ {
2
+ "format": 1,
3
+ "files": [
4
+ "main.aug.md"
5
+ ],
6
+ "digest": "4179cb6d189b3c491e75fa38ee2d1c982f6c3b8fc83309e923606b2a51e4ad45"
7
+ }
@@ -0,0 +1,17 @@
1
+ // A deterministic native workload: arithmetic and 20,000 hash entries.
2
+ own Map<int,int> values = {}
3
+ own Set<int> unique = {}
4
+ int index = 0
5
+ while index < 20000 {
6
+ values.set(key=index, value=index * 3)
7
+ unique.add(value=index)
8
+ index = index + 1
9
+ }
10
+ int checksum = 0
11
+ for (key, value) in values {
12
+ if unique.contains(value=key) {
13
+ checksum = checksum + value
14
+ }
15
+ }
16
+ print(value=checksum)
17
+ print(value=values.length() == unique.length())
@@ -0,0 +1,43 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `main.aug` specification
4
+
5
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
+
7
+ ## In this file
8
+
9
+ - Run 8 other startup steps in source order.
10
+
11
+ ## Startup, in source order
12
+
13
+ - Set `values` of type `Map<int,int>` to a context-typed empty collection with no items.
14
+ - This variable owns the value.
15
+ - Set `unique` of type `Set<int>` to a context-typed empty collection with no items.
16
+ - This variable owns the value.
17
+ - Set `index` of type `int` to `0`.
18
+ - While `index` is less than `20000`, repeat:
19
+ - Call `set` on `values` with `key` = `index`; `value` = (`index` times `3`).
20
+ - Call `add` on `unique` with `value` = `index`.
21
+ - Set `index` to `index` plus `1`.
22
+ - Check the condition again before the next iteration.
23
+ - Set `checksum` of type `int` to `0`.
24
+ - For each `key` and `value` in a snapshot of `values`, in iteration order:
25
+ - If call `contains` on `unique` with `value` = `key` is true:
26
+ - Set `checksum` to `checksum` plus `value`.
27
+ - Call `print` with `value` = `checksum`.
28
+ - Call `print` with `value` = (call `length` on `values` equals call `length` on `unique`).
29
+
30
+ ## Built-in operations used by this file
31
+
32
+ - `Map<int, int>.length` (no inputs) → `int`: Read the number of elements.
33
+ - `Map<int, int>.set` (`key`: `int`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
34
+ - `Set<int>.add` (`value`: `int`) → `void`: Insert a unique element with exclusive mutable access. Changes the receiver.
35
+ - `Set<int>.contains` (`value`: `int`) → `bool`: Test structural or identity equality with a stored element.
36
+ - `Set<int>.length` (no inputs) → `int`: Read the number of elements.
37
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
38
+
39
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
40
+
41
+ ## Shared language rules
42
+
43
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
@@ -0,0 +1 @@
1
+ optimization: release
@@ -0,0 +1,7 @@
1
+ {
2
+ "format": 1,
3
+ "files": [
4
+ "main.aug.md"
5
+ ],
6
+ "digest": "436feb0daa7b3ed51ce239af6888c680ef6e692c6e5d6f00503a32bc5869d03d"
7
+ }
@@ -0,0 +1,15 @@
1
+ try {
2
+ args = arguments()
3
+ print(value=args.length())
4
+ if args.length() > 0 {
5
+ print(value=args.get(index=0))
6
+ }
7
+ numbers = List<int>(1, 2)
8
+ borrow numbers {
9
+ numbers.append(value=3)
10
+ }
11
+ print(value=numbers.get(index=2))
12
+ }
13
+ catch IndexError error {
14
+ print(value="unexpected index failure")
15
+ }
@@ -0,0 +1,38 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `main.aug` specification
4
+
5
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
+
7
+ ## In this file
8
+
9
+ - Run startup operations with checked error recovery.
10
+
11
+ ## Startup, in source order
12
+
13
+ - Try these operations:
14
+ - Set `args` to call `arguments`.
15
+ - Call `print` with `value` = call `length` on `args`.
16
+ - If call `length` on `args` is greater than `0`:
17
+ - Call `print` with `value` = call `get` on `args` with `index` = `0`.
18
+ - Set `numbers` to a list of `int` containing `1`, `2`.
19
+ - Grant exclusive mutable access to `numbers` for this block, then end the borrow:
20
+ - Call `append` on `numbers` with `value` = `3`.
21
+ - Call `print` with `value` = call `get` on `numbers` with `index` = `2`.
22
+ - If they fail with `IndexError`, name the failure `error` and recover:
23
+ - Call `print` with `value` = `"unexpected index failure"`.
24
+
25
+ ## Built-in operations used by this file
26
+
27
+ - `List<int>.append` (`value`: `int`) → `void`: Append an element with exclusive mutable access. Read-only and owned aliases cannot be stored here. Changes the receiver.
28
+ - `List<int>.get` (`index`: `int`) → `int`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
29
+ - `List<string>.get` (`index`: `int`) → `string`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
30
+ - `List<string>.length` (no inputs) → `int`: Read the number of elements.
31
+ - `arguments` (no inputs) → `List<string>`: Composition arguments. Other callables receive the Arguments capability.
32
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
33
+
34
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
35
+
36
+ ## Shared language rules
37
+
38
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
@@ -0,0 +1,7 @@
1
+ {
2
+ "format": 1,
3
+ "files": [
4
+ "main.aug.md"
5
+ ],
6
+ "digest": "8acdc38ecfcc6e5eb277e44abe6700f536bc46235bafbeb0a3c5e7dcdfd21624"
7
+ }
@@ -0,0 +1,18 @@
1
+ try {
2
+ numbers = List<int>(2, 4)
3
+ borrow numbers {
4
+ numbers.append(value=6)
5
+ }
6
+ print(value=numbers.length())
7
+ print(value=numbers.get(index=1))
8
+ scores = Map<string, int>()
9
+ borrow scores {
10
+ scores.set(value=42, key="ada")
11
+ }
12
+ print(value=scores.contains(key="ada"))
13
+ print(value=scores.get(key="ada"))
14
+ print(value=scores.length())
15
+ }
16
+ catch IndexError error {
17
+ print(value="unexpected index failure")
18
+ }
@@ -0,0 +1,43 @@
1
+ <!-- Generated by aug spec. Edit the August source, then regenerate. -->
2
+
3
+ # `main.aug` specification
4
+
5
+ August 0.19.0. This document is compiled from checked code with deterministic wording guided by Simplified Technical English.
6
+
7
+ ## In this file
8
+
9
+ - Run startup operations with checked error recovery.
10
+
11
+ ## Startup, in source order
12
+
13
+ - Try these operations:
14
+ - Set `numbers` to a list of `int` containing `2`, `4`.
15
+ - Grant exclusive mutable access to `numbers` for this block, then end the borrow:
16
+ - Call `append` on `numbers` with `value` = `6`.
17
+ - Call `print` with `value` = call `length` on `numbers`.
18
+ - Call `print` with `value` = call `get` on `numbers` with `index` = `1`.
19
+ - Set `scores` to an empty map from `string` to `int`.
20
+ - Grant exclusive mutable access to `scores` for this block, then end the borrow:
21
+ - Call `set` on `scores` with `value` = `42`; `key` = `"ada"`.
22
+ - Call `print` with `value` = call `contains` on `scores` with `key` = `"ada"`.
23
+ - Call `print` with `value` = call `get` on `scores` with `key` = `"ada"`.
24
+ - Call `print` with `value` = call `length` on `scores`.
25
+ - If they fail with `IndexError`, name the failure `error` and recover:
26
+ - Call `print` with `value` = `"unexpected index failure"`.
27
+
28
+ ## Built-in operations used by this file
29
+
30
+ - `List<int>.append` (`value`: `int`) → `void`: Append an element with exclusive mutable access. Read-only and owned aliases cannot be stored here. Changes the receiver.
31
+ - `List<int>.get` (`index`: `int`) → `int`: Read a zero-based position. An invalid index raises checked IndexError. Reference results grant reading. Can fail with `IndexError`.
32
+ - `List<int>.length` (no inputs) → `int`: Read the number of elements.
33
+ - `Map<string, int>.contains` (`key`: `string`) → `bool`: Check for a key, including entries whose value is null.
34
+ - `Map<string, int>.get` (`key`: `string`) → `optional int`: Read a value by key; an absent key returns null. contains distinguishes an absent key from a stored null.
35
+ - `Map<string, int>.length` (no inputs) → `int`: Read the number of elements.
36
+ - `Map<string, int>.set` (`key`: `string`, `value`: `int`) → `void`: Insert or replace an entry with exclusive mutable access. Changes the receiver.
37
+ - `print` (`value`: `any`) → `void`: Composition and test output. Other callables receive Console and declare uses console.write.
38
+
39
+ [Full built-in reference](https://greenpandastudios.github.io/augscript/language-constructs).
40
+
41
+ ## Shared language rules
42
+
43
+ See the [language reference](https://greenpandastudios.github.io/augscript/reference) for numeric, equality, ownership, and task rules.
@@ -0,0 +1,36 @@
1
+ // Generated by aug spec. This is a copy of the installed dependency source.
2
+ /** Permission to write to a console, provided by an explicitly selected adapter. */
3
+ capability Console:
4
+ /** Write one line of text. @param value Text to display. */
5
+ write<T>(T value) uses Console.write
6
+
7
+ /** The native standard-output adapter. Construction performs no output. */
8
+ SystemConsole() implements Console:
9
+ write<T>(T value):
10
+ print(value=value)
11
+
12
+ /** Read UTF-8 text through an explicitly selected filesystem adapter. */
13
+ capability FileReader:
14
+ /** Read text. @param path File path. @throws FileError The file could not be read. */
15
+ read(string path) returns string uses FileReader.read unless FileError
16
+
17
+ /** Write UTF-8 text through an explicitly selected filesystem adapter. */
18
+ capability FileWriter:
19
+ /** Write text. @param path File path. @param content Text. @throws FileError Writing failed. */
20
+ write(string path, string content) uses FileWriter.write unless FileError
21
+
22
+ /** Native files. Operations are explicit; construction opens no files. */
23
+ LocalFiles() implements FileReader, FileWriter:
24
+ read(string path) returns string unless FileError:
25
+ return read_file(path=path)
26
+ write(string path, string content) unless FileError:
27
+ write_file(path=path, content=content)
28
+
29
+ /** Read command-line input through an explicit dependency. */
30
+ capability Arguments:
31
+ read() returns List<string> uses Arguments.read
32
+
33
+ /** Native command-line arguments. */
34
+ ProcessArguments() implements Arguments:
35
+ read() returns List<string>:
36
+ return arguments()