@entelligentsia/forgecli 0.15.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1069) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/CHANGELOG-pi.md +55 -0
  3. package/dist/bin/argv.d.ts +2 -0
  4. package/dist/bin/argv.js +3 -1
  5. package/dist/bin/argv.js.map +1 -1
  6. package/dist/bin/config.d.ts +5 -0
  7. package/dist/bin/config.js +25 -4
  8. package/dist/bin/config.js.map +1 -1
  9. package/dist/bin/forge.js +12 -56
  10. package/dist/bin/forge.js.map +1 -1
  11. package/dist/bin/shared-parser.d.ts +23 -0
  12. package/dist/bin/shared-parser.js +12 -0
  13. package/dist/bin/shared-parser.js.map +1 -0
  14. package/dist/bin/update-cli.js +5 -0
  15. package/dist/bin/update-cli.js.map +1 -1
  16. package/dist/extensions/forgecli/approve.d.ts +4 -6
  17. package/dist/extensions/forgecli/approve.js +8 -73
  18. package/dist/extensions/forgecli/approve.js.map +1 -1
  19. package/dist/extensions/forgecli/audience-gate.d.ts +1 -1
  20. package/dist/extensions/forgecli/calibrate.d.ts +4 -1
  21. package/dist/extensions/forgecli/calibrate.js +4 -12
  22. package/dist/extensions/forgecli/calibrate.js.map +1 -1
  23. package/dist/extensions/forgecli/collate.d.ts +4 -6
  24. package/dist/extensions/forgecli/collate.js +8 -73
  25. package/dist/extensions/forgecli/collate.js.map +1 -1
  26. package/dist/extensions/forgecli/commit.d.ts +4 -6
  27. package/dist/extensions/forgecli/commit.js +8 -73
  28. package/dist/extensions/forgecli/commit.js.map +1 -1
  29. package/dist/extensions/forgecli/config-tui/handler.js +1 -0
  30. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
  31. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js +8 -1
  32. package/dist/extensions/forgecli/config-tui/screens/tier-menu.js.map +1 -1
  33. package/dist/extensions/forgecli/config-tui/state/init.js +1 -0
  34. package/dist/extensions/forgecli/config-tui/state/init.js.map +1 -1
  35. package/dist/extensions/forgecli/config-tui/state/model.d.ts +4 -0
  36. package/dist/extensions/forgecli/enhance.d.ts +4 -6
  37. package/dist/extensions/forgecli/enhance.js +8 -73
  38. package/dist/extensions/forgecli/enhance.js.map +1 -1
  39. package/dist/extensions/forgecli/fix-bug.d.ts +3 -0
  40. package/dist/extensions/forgecli/fix-bug.js +58 -46
  41. package/dist/extensions/forgecli/fix-bug.js.map +1 -1
  42. package/dist/extensions/forgecli/forge-artifact-tool.d.ts +2 -0
  43. package/dist/extensions/forgecli/forge-artifact-tool.js +185 -0
  44. package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -0
  45. package/dist/extensions/forgecli/forge-init/phase-descriptors.d.ts +72 -0
  46. package/dist/extensions/forgecli/forge-init/phase-descriptors.js +350 -0
  47. package/dist/extensions/forgecli/forge-init/phase-descriptors.js.map +1 -0
  48. package/dist/extensions/forgecli/forge-init/phase4-register.d.ts +20 -0
  49. package/dist/extensions/forgecli/forge-init/phase4-register.js +353 -0
  50. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -0
  51. package/dist/extensions/forgecli/forge-init/prompts.d.ts +10 -0
  52. package/dist/extensions/forgecli/forge-init/prompts.js +91 -0
  53. package/dist/extensions/forgecli/forge-init/prompts.js.map +1 -0
  54. package/dist/extensions/forgecli/forge-init/verifiers.d.ts +20 -0
  55. package/dist/extensions/forgecli/forge-init/verifiers.js +81 -0
  56. package/dist/extensions/forgecli/forge-init/verifiers.js.map +1 -0
  57. package/dist/extensions/forgecli/forge-init.js +106 -748
  58. package/dist/extensions/forgecli/forge-init.js.map +1 -1
  59. package/dist/extensions/forgecli/forge-root.d.ts +0 -1
  60. package/dist/extensions/forgecli/forge-root.js +1 -11
  61. package/dist/extensions/forgecli/forge-root.js.map +1 -1
  62. package/dist/extensions/forgecli/forge-subagent.d.ts +11 -1
  63. package/dist/extensions/forgecli/forge-subagent.js +6 -1
  64. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  65. package/dist/extensions/forgecli/forge-tools.d.ts +27 -7
  66. package/dist/extensions/forgecli/forge-tools.js +109 -70
  67. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  68. package/dist/extensions/forgecli/forge-update-command.js +5 -0
  69. package/dist/extensions/forgecli/forge-update-command.js.map +1 -1
  70. package/dist/extensions/forgecli/friction-emit.d.ts +4 -2
  71. package/dist/extensions/forgecli/friction-emit.js +13 -12
  72. package/dist/extensions/forgecli/friction-emit.js.map +1 -1
  73. package/dist/extensions/forgecli/health-check.js +1 -1
  74. package/dist/extensions/forgecli/health-check.js.map +1 -1
  75. package/dist/extensions/forgecli/hook-dispatcher.d.ts +1 -0
  76. package/dist/extensions/forgecli/hook-dispatcher.js +5 -0
  77. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  78. package/dist/extensions/forgecli/hooks/post-init-hook.js +1 -1
  79. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +1 -1
  80. package/dist/extensions/forgecli/hooks/write-guard.js +1 -1
  81. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
  82. package/dist/extensions/forgecli/implement.d.ts +4 -6
  83. package/dist/extensions/forgecli/implement.js +8 -73
  84. package/dist/extensions/forgecli/implement.js.map +1 -1
  85. package/dist/extensions/forgecli/index.js +15 -38
  86. package/dist/extensions/forgecli/index.js.map +1 -1
  87. package/dist/extensions/forgecli/lib/catalog-helpers.d.ts +13 -0
  88. package/dist/extensions/forgecli/lib/catalog-helpers.js +51 -0
  89. package/dist/extensions/forgecli/lib/catalog-helpers.js.map +1 -0
  90. package/dist/extensions/forgecli/lib/catalog-loader.d.ts +46 -0
  91. package/dist/extensions/forgecli/lib/catalog-loader.js +176 -0
  92. package/dist/extensions/forgecli/lib/catalog-loader.js.map +1 -0
  93. package/dist/extensions/forgecli/lib/catalog-types.d.ts +16 -0
  94. package/dist/extensions/forgecli/lib/catalog-types.js +161 -0
  95. package/dist/extensions/forgecli/lib/catalog-types.js.map +1 -0
  96. package/dist/extensions/forgecli/lib/exec-helpers.d.ts +25 -0
  97. package/dist/extensions/forgecli/lib/exec-helpers.js +52 -0
  98. package/dist/extensions/forgecli/lib/exec-helpers.js.map +1 -0
  99. package/dist/extensions/forgecli/lib/forge-config.d.ts +20 -0
  100. package/dist/extensions/forgecli/lib/forge-config.js +43 -0
  101. package/dist/extensions/forgecli/lib/forge-config.js.map +1 -0
  102. package/dist/extensions/forgecli/lib/frontmatter-parser.d.ts +13 -0
  103. package/dist/extensions/forgecli/lib/frontmatter-parser.js +56 -0
  104. package/dist/extensions/forgecli/lib/frontmatter-parser.js.map +1 -0
  105. package/dist/extensions/forgecli/lib/manifest-checker.d.ts +22 -0
  106. package/dist/extensions/forgecli/lib/manifest-checker.js +64 -0
  107. package/dist/extensions/forgecli/lib/manifest-checker.js.map +1 -0
  108. package/dist/extensions/forgecli/lib/orchestrator-preflight.d.ts +46 -0
  109. package/dist/extensions/forgecli/lib/orchestrator-preflight.js +64 -0
  110. package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +1 -0
  111. package/dist/extensions/forgecli/lib/orchestrator-types.d.ts +20 -0
  112. package/dist/extensions/forgecli/lib/orchestrator-types.js +14 -0
  113. package/dist/extensions/forgecli/lib/orchestrator-types.js.map +1 -0
  114. package/dist/extensions/forgecli/lib/parsers.d.ts +25 -0
  115. package/dist/extensions/forgecli/lib/parsers.js +164 -0
  116. package/dist/extensions/forgecli/lib/parsers.js.map +1 -0
  117. package/dist/extensions/forgecli/lib/shared-fs-utils.d.ts +12 -0
  118. package/dist/extensions/forgecli/lib/shared-fs-utils.js +37 -0
  119. package/dist/extensions/forgecli/lib/shared-fs-utils.js.map +1 -0
  120. package/dist/extensions/forgecli/lib/spawn-store-cli.d.ts +44 -0
  121. package/dist/extensions/forgecli/lib/spawn-store-cli.js +93 -0
  122. package/dist/extensions/forgecli/lib/spawn-store-cli.js.map +1 -0
  123. package/dist/extensions/forgecli/lib/state-helpers.d.ts +33 -0
  124. package/dist/extensions/forgecli/lib/state-helpers.js +69 -0
  125. package/dist/extensions/forgecli/lib/state-helpers.js.map +1 -0
  126. package/dist/extensions/forgecli/lib/store-cli-timeouts.d.ts +4 -0
  127. package/dist/extensions/forgecli/lib/store-cli-timeouts.js +10 -0
  128. package/dist/extensions/forgecli/lib/store-cli-timeouts.js.map +1 -0
  129. package/dist/extensions/forgecli/lib/versions.d.ts +56 -0
  130. package/dist/extensions/forgecli/lib/versions.js +116 -0
  131. package/dist/extensions/forgecli/lib/versions.js.map +1 -0
  132. package/dist/extensions/forgecli/loaders/persona-skill-loader.js +2 -2
  133. package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +1 -1
  134. package/dist/extensions/forgecli/migration-engine.d.ts +6 -0
  135. package/dist/extensions/forgecli/migration-engine.js +59 -39
  136. package/dist/extensions/forgecli/migration-engine.js.map +1 -1
  137. package/dist/extensions/forgecli/parsers/persona-skill-loader.d.ts +45 -0
  138. package/dist/extensions/forgecli/parsers/persona-skill-loader.js +201 -0
  139. package/dist/extensions/forgecli/parsers/persona-skill-loader.js.map +1 -0
  140. package/dist/extensions/forgecli/parsers/workflow-loader.d.ts +41 -0
  141. package/dist/extensions/forgecli/parsers/workflow-loader.js +87 -0
  142. package/dist/extensions/forgecli/parsers/workflow-loader.js.map +1 -0
  143. package/dist/extensions/forgecli/plan.d.ts +4 -6
  144. package/dist/extensions/forgecli/plan.js +9 -73
  145. package/dist/extensions/forgecli/plan.js.map +1 -1
  146. package/dist/extensions/forgecli/retrospective.d.ts +2 -1
  147. package/dist/extensions/forgecli/retrospective.js +6 -36
  148. package/dist/extensions/forgecli/retrospective.js.map +1 -1
  149. package/dist/extensions/forgecli/review-code.d.ts +4 -6
  150. package/dist/extensions/forgecli/review-code.js +8 -73
  151. package/dist/extensions/forgecli/review-code.js.map +1 -1
  152. package/dist/extensions/forgecli/review-plan.d.ts +4 -6
  153. package/dist/extensions/forgecli/review-plan.js +8 -73
  154. package/dist/extensions/forgecli/review-plan.js.map +1 -1
  155. package/dist/extensions/forgecli/run-sprint.d.ts +2 -0
  156. package/dist/extensions/forgecli/run-sprint.js +53 -52
  157. package/dist/extensions/forgecli/run-sprint.js.map +1 -1
  158. package/dist/extensions/forgecli/run-task.d.ts +3 -0
  159. package/dist/extensions/forgecli/run-task.js +39 -68
  160. package/dist/extensions/forgecli/run-task.js.map +1 -1
  161. package/dist/extensions/forgecli/skill-curation-flag.js +5 -5
  162. package/dist/extensions/forgecli/skill-curation-flag.js.map +1 -1
  163. package/dist/extensions/forgecli/skill-retriever.js +5 -5
  164. package/dist/extensions/forgecli/skill-retriever.js.map +1 -1
  165. package/dist/extensions/forgecli/skill-usage-tracker.js +5 -5
  166. package/dist/extensions/forgecli/skill-usage-tracker.js.map +1 -1
  167. package/dist/extensions/forgecli/store-error-remediation.d.ts +65 -0
  168. package/dist/extensions/forgecli/store-error-remediation.js +299 -0
  169. package/dist/extensions/forgecli/store-error-remediation.js.map +1 -0
  170. package/dist/extensions/forgecli/store-resolver.js +3 -12
  171. package/dist/extensions/forgecli/store-resolver.js.map +1 -1
  172. package/dist/extensions/forgecli/store-validator.js +6 -11
  173. package/dist/extensions/forgecli/store-validator.js.map +1 -1
  174. package/dist/extensions/forgecli/subagent/agents.d.ts +4 -0
  175. package/dist/extensions/forgecli/subagent/agents.js +5 -8
  176. package/dist/extensions/forgecli/subagent/agents.js.map +1 -1
  177. package/dist/extensions/forgecli/transition-guard.js +20 -61
  178. package/dist/extensions/forgecli/transition-guard.js.map +1 -1
  179. package/dist/extensions/forgecli/validate.d.ts +4 -6
  180. package/dist/extensions/forgecli/validate.js +8 -73
  181. package/dist/extensions/forgecli/validate.js.map +1 -1
  182. package/dist/extensions/forgecli/wf-engine/engine.js +2 -2
  183. package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
  184. package/dist/extensions/forgecli/wf-engine/loader.d.ts +1 -1
  185. package/dist/extensions/forgecli/wf-engine/loader.js +1 -1
  186. package/dist/extensions/forgecli/wf-engine/loader.js.map +1 -1
  187. package/dist/forge-payload/.base-pack/skills/architect-skills.md +1 -0
  188. package/dist/forge-payload/.base-pack/skills/bug-fixer-skills.md +1 -0
  189. package/dist/forge-payload/.base-pack/skills/collator-skills.md +1 -0
  190. package/dist/forge-payload/.base-pack/skills/engineer-skills.md +1 -0
  191. package/dist/forge-payload/.base-pack/skills/generic-skills.md +1 -0
  192. package/dist/forge-payload/.base-pack/skills/qa-engineer-skills.md +1 -0
  193. package/dist/forge-payload/.base-pack/skills/supervisor-skills.md +1 -0
  194. package/dist/forge-payload/.base-pack/workflows/_fragments/generation-instructions.md +81 -0
  195. package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +72 -0
  196. package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +11 -1
  197. package/dist/forge-payload/.base-pack/workflows/_fragments/store-write-verification.md +11 -0
  198. package/dist/forge-payload/.base-pack/workflows/architect_approve.md +11 -12
  199. package/dist/forge-payload/.base-pack/workflows/architect_review_sprint_completion.md +4 -1
  200. package/dist/forge-payload/.base-pack/workflows/architect_sprint_intake.md +10 -1
  201. package/dist/forge-payload/.base-pack/workflows/architect_sprint_plan.md +8 -1
  202. package/dist/forge-payload/.base-pack/workflows/collator_agent.md +18 -1
  203. package/dist/forge-payload/.base-pack/workflows/commit_task.md +5 -10
  204. package/dist/forge-payload/.base-pack/workflows/enhance.md +7 -0
  205. package/dist/forge-payload/.base-pack/workflows/fix_bug.md +9 -2
  206. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +22 -35
  207. package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +9 -0
  208. package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +4 -0
  209. package/dist/forge-payload/.base-pack/workflows/plan_task.md +17 -21
  210. package/dist/forge-payload/.base-pack/workflows/review_code.md +13 -20
  211. package/dist/forge-payload/.base-pack/workflows/review_plan.md +10 -21
  212. package/dist/forge-payload/.base-pack/workflows/sprint_retrospective.md +10 -1
  213. package/dist/forge-payload/.base-pack/workflows/update_implementation.md +5 -10
  214. package/dist/forge-payload/.base-pack/workflows/update_plan.md +5 -10
  215. package/dist/forge-payload/.base-pack/workflows/validate_task.md +11 -12
  216. package/dist/forge-payload/.claude-plugin/plugin.json +5 -5
  217. package/dist/forge-payload/.schemas/_defs/phaseSummary.schema.json +18 -0
  218. package/dist/forge-payload/.schemas/bug.schema.json +8 -24
  219. package/dist/forge-payload/.schemas/config.schema.json +165 -33
  220. package/dist/forge-payload/.schemas/enum-catalog.json +71 -0
  221. package/dist/forge-payload/.schemas/migrations.json +371 -149
  222. package/dist/forge-payload/.schemas/task.schema.json +6 -21
  223. package/dist/forge-payload/.schemas/transitions/bug.json +31 -0
  224. package/dist/forge-payload/.schemas/transitions/sprint.json +46 -0
  225. package/dist/forge-payload/.schemas/transitions/task.json +109 -0
  226. package/dist/forge-payload/commands/health.md +3 -3
  227. package/dist/forge-payload/hooks/check-update.cjs +255 -0
  228. package/dist/forge-payload/hooks/forge-permissions.cjs +171 -0
  229. package/dist/forge-payload/hooks/forge-permissions.js +6 -0
  230. package/dist/forge-payload/hooks/post-init.cjs +120 -0
  231. package/dist/forge-payload/hooks/post-sprint.cjs +108 -0
  232. package/dist/forge-payload/hooks/triage-error.cjs +104 -0
  233. package/dist/forge-payload/hooks/triage-error.js +6 -0
  234. package/dist/forge-payload/hooks/validate-write.cjs +250 -0
  235. package/dist/forge-payload/hooks/validate-write.js +25 -11
  236. package/dist/forge-payload/integrity.json +13 -7
  237. package/dist/forge-payload/meta/workflows/_fragments/generation-instructions.md +81 -0
  238. package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +72 -0
  239. package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +11 -1
  240. package/dist/forge-payload/meta/workflows/_fragments/store-write-verification.md +11 -0
  241. package/dist/forge-payload/meta/workflows/meta-approve.md +9 -11
  242. package/dist/forge-payload/meta/workflows/meta-collate.md +16 -0
  243. package/dist/forge-payload/meta/workflows/meta-commit.md +3 -9
  244. package/dist/forge-payload/meta/workflows/meta-enhance.md +16 -1
  245. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +8 -2
  246. package/dist/forge-payload/meta/workflows/meta-implement.md +20 -35
  247. package/dist/forge-payload/meta/workflows/meta-migrate.md +18 -0
  248. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +2 -0
  249. package/dist/forge-payload/meta/workflows/meta-plan-task.md +15 -21
  250. package/dist/forge-payload/meta/workflows/meta-quiz-agent.md +4 -1
  251. package/dist/forge-payload/meta/workflows/meta-retrospective.md +8 -0
  252. package/dist/forge-payload/meta/workflows/meta-review-implementation.md +11 -19
  253. package/dist/forge-payload/meta/workflows/meta-review-plan.md +10 -16
  254. package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +3 -0
  255. package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +8 -0
  256. package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +5 -0
  257. package/dist/forge-payload/meta/workflows/meta-update-implementation.md +3 -9
  258. package/dist/forge-payload/meta/workflows/meta-update-plan.md +3 -9
  259. package/dist/forge-payload/meta/workflows/meta-validate.md +9 -11
  260. package/dist/forge-payload/schemas/structure-manifest.json +8 -6
  261. package/dist/forge-payload/tools/build-context-pack.cjs +3 -2
  262. package/dist/forge-payload/tools/friction-emit.cjs +2 -1
  263. package/dist/forge-payload/tools/lib/frontmatter.cjs +62 -0
  264. package/dist/forge-payload/tools/lib/fsutil.cjs +61 -0
  265. package/dist/forge-payload/tools/lib/json-io.cjs +43 -0
  266. package/dist/forge-payload/tools/lib/schema-loader.cjs +139 -0
  267. package/dist/forge-payload/tools/lib/slug.cjs +39 -0
  268. package/dist/forge-payload/tools/lib/store-facade.cjs +6 -5
  269. package/dist/forge-payload/tools/preflight-gate.cjs +55 -7
  270. package/dist/forge-payload/tools/seed-store.cjs +1 -13
  271. package/dist/forge-payload/tools/store-cli.cjs +55 -108
  272. package/dist/forge-payload/tools/store.cjs +26 -37
  273. package/dist/forge-payload/tools/substitute-placeholders.cjs +74 -35
  274. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts +1 -1
  275. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.d.ts.map +1 -1
  276. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +23 -0
  277. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  278. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +2 -2
  279. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  280. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +1 -1
  281. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  282. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +2 -2
  283. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
  284. package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
  285. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts +5 -5
  286. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  287. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
  288. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +4 -4
  289. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  290. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  291. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts +1 -1
  292. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.d.ts.map +1 -1
  293. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/utils.js.map +1 -1
  294. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts +1 -1
  295. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.d.ts.map +1 -1
  296. package/node_modules/@earendil-works/pi-agent-core/dist/harness/env/nodejs.js.map +1 -1
  297. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +4 -0
  298. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +1 -0
  299. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +3 -0
  300. package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +1 -0
  301. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts +2 -2
  302. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.d.ts.map +1 -1
  303. package/node_modules/@earendil-works/pi-agent-core/dist/harness/messages.js.map +1 -1
  304. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts +1 -1
  305. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.d.ts.map +1 -1
  306. package/node_modules/@earendil-works/pi-agent-core/dist/harness/prompt-templates.js.map +1 -1
  307. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts +1 -1
  308. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.d.ts.map +1 -1
  309. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-repo.js.map +1 -1
  310. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts +1 -1
  311. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -1
  312. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/jsonl-storage.js.map +1 -1
  313. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts +1 -1
  314. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.d.ts.map +1 -1
  315. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-repo.js.map +1 -1
  316. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts +1 -1
  317. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -1
  318. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/memory-storage.js.map +1 -1
  319. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +20 -0
  320. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +1 -0
  321. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +92 -0
  322. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +1 -0
  323. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +18 -0
  324. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +1 -0
  325. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +42 -0
  326. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +1 -0
  327. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +10 -0
  328. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +1 -0
  329. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +31 -0
  330. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +1 -0
  331. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts +2 -2
  332. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -1
  333. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo-utils.js.map +1 -1
  334. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +2 -2
  335. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
  336. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
  337. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +30 -0
  338. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +1 -0
  339. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +170 -0
  340. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +1 -0
  341. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +26 -0
  342. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +1 -0
  343. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +90 -0
  344. package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +1 -0
  345. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts +1 -1
  346. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.d.ts.map +1 -1
  347. package/node_modules/@earendil-works/pi-agent-core/dist/harness/skills.js.map +1 -1
  348. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.d.ts +1 -1
  349. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.d.ts.map +1 -1
  350. package/node_modules/@earendil-works/pi-agent-core/dist/harness/system-prompt.js.map +1 -1
  351. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +10 -22
  352. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  353. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +17 -23
  354. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  355. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts +1 -1
  356. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -1
  357. package/node_modules/@earendil-works/pi-agent-core/dist/harness/utils/shell-output.js.map +1 -1
  358. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts +19 -19
  359. package/node_modules/@earendil-works/pi-agent-core/dist/index.d.ts.map +1 -1
  360. package/node_modules/@earendil-works/pi-agent-core/dist/index.js.map +1 -1
  361. package/node_modules/@earendil-works/pi-agent-core/dist/node.d.ts +2 -2
  362. package/node_modules/@earendil-works/pi-agent-core/dist/node.d.ts.map +1 -1
  363. package/node_modules/@earendil-works/pi-agent-core/dist/node.js.map +1 -1
  364. package/node_modules/@earendil-works/pi-agent-core/package.json +9 -10
  365. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +1 -1
  366. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
  367. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
  368. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.d.ts +2 -2
  369. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.d.ts.map +1 -1
  370. package/node_modules/@earendil-works/pi-ai/dist/bedrock-provider.js.map +1 -1
  371. package/node_modules/@earendil-works/pi-ai/dist/cli.d.ts.map +1 -1
  372. package/node_modules/@earendil-works/pi-ai/dist/cli.js +14 -0
  373. package/node_modules/@earendil-works/pi-ai/dist/cli.js.map +1 -1
  374. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts +1 -1
  375. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.d.ts.map +1 -1
  376. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js +10 -2
  377. package/node_modules/@earendil-works/pi-ai/dist/env-api-keys.js.map +1 -1
  378. package/node_modules/@earendil-works/pi-ai/dist/image-models.d.ts +2 -2
  379. package/node_modules/@earendil-works/pi-ai/dist/image-models.d.ts.map +1 -1
  380. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  381. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  382. package/node_modules/@earendil-works/pi-ai/dist/image-models.js.map +1 -1
  383. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts +1 -1
  384. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.d.ts.map +1 -1
  385. package/node_modules/@earendil-works/pi-ai/dist/images-api-registry.js.map +1 -1
  386. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts +2 -2
  387. package/node_modules/@earendil-works/pi-ai/dist/images.d.ts.map +1 -1
  388. package/node_modules/@earendil-works/pi-ai/dist/images.js.map +1 -1
  389. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts +29 -29
  390. package/node_modules/@earendil-works/pi-ai/dist/index.d.ts.map +1 -1
  391. package/node_modules/@earendil-works/pi-ai/dist/index.js.map +1 -1
  392. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts +2 -2
  393. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  394. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +317 -509
  395. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  396. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +400 -620
  397. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  398. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  399. package/node_modules/@earendil-works/pi-ai/dist/oauth.d.ts +1 -1
  400. package/node_modules/@earendil-works/pi-ai/dist/oauth.d.ts.map +1 -1
  401. package/node_modules/@earendil-works/pi-ai/dist/oauth.js.map +1 -1
  402. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts +1 -1
  403. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  404. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +5 -2
  405. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  406. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +23 -6
  407. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  408. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +11 -23
  409. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  410. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts +1 -1
  411. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
  412. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +2 -1
  413. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  414. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.d.ts +1 -1
  415. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.d.ts.map +1 -1
  416. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare.js.map +1 -1
  417. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts +1 -1
  418. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.d.ts.map +1 -1
  419. package/node_modules/@earendil-works/pi-ai/dist/providers/faux.js.map +1 -1
  420. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.d.ts +1 -1
  421. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.d.ts.map +1 -1
  422. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot-headers.js.map +1 -1
  423. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +1 -1
  424. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  425. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
  426. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts +2 -2
  427. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
  428. package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
  429. package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts +2 -2
  430. package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts.map +1 -1
  431. package/node_modules/@earendil-works/pi-ai/dist/providers/google.js.map +1 -1
  432. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts +1 -1
  433. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
  434. package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
  435. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts +1 -1
  436. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.d.ts.map +1 -1
  437. package/node_modules/@earendil-works/pi-ai/dist/providers/images/register-builtins.js.map +1 -1
  438. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts +1 -1
  439. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts.map +1 -1
  440. package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js.map +1 -1
  441. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts +1 -1
  442. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
  443. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +12 -3
  444. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
  445. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts +1 -1
  446. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  447. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +2 -1
  448. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  449. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.d.ts +3 -0
  450. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  451. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.js +10 -0
  452. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-prompt-cache.js.map +1 -0
  453. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts +2 -2
  454. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  455. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  456. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts +1 -1
  457. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  458. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +2 -1
  459. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  460. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.d.ts +10 -10
  461. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.d.ts.map +1 -1
  462. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js +13 -2
  463. package/node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js.map +1 -1
  464. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +3 -3
  465. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  466. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +6 -11
  467. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
  468. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.d.ts +1 -1
  469. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.d.ts.map +1 -1
  470. package/node_modules/@earendil-works/pi-ai/dist/providers/transform-messages.js.map +1 -1
  471. package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts +3 -3
  472. package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts.map +1 -1
  473. package/node_modules/@earendil-works/pi-ai/dist/stream.js.map +1 -1
  474. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +13 -3
  475. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  476. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  477. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts +3 -3
  478. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.d.ts.map +1 -1
  479. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js +2 -2
  480. package/node_modules/@earendil-works/pi-ai/dist/utils/event-stream.js.map +1 -1
  481. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.d.ts +1 -1
  482. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.d.ts.map +1 -1
  483. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/anthropic.js.map +1 -1
  484. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts +19 -0
  485. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -0
  486. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +55 -0
  487. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -0
  488. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts +3 -3
  489. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  490. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +45 -69
  491. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
  492. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts +6 -5
  493. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
  494. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -0
  495. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
  496. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts +1 -1
  497. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  498. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +1 -1
  499. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
  500. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts +9 -2
  501. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.d.ts.map +1 -1
  502. package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/types.js.map +1 -1
  503. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +1 -1
  504. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  505. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  506. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts +1 -1
  507. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.d.ts.map +1 -1
  508. package/node_modules/@earendil-works/pi-ai/dist/utils/validation.js.map +1 -1
  509. package/node_modules/@earendil-works/pi-ai/package.json +15 -16
  510. package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +55 -0
  511. package/node_modules/@earendil-works/pi-coding-agent/README.md +6 -4
  512. package/node_modules/@earendil-works/pi-coding-agent/dist/bun/cli.d.ts.map +1 -1
  513. package/node_modules/@earendil-works/pi-coding-agent/dist/bun/cli.js.map +1 -1
  514. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +1 -1
  515. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
  516. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
  517. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts +2 -2
  518. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.d.ts.map +1 -1
  519. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/config-selector.js.map +1 -1
  520. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.d.ts.map +1 -1
  521. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/file-processor.js.map +1 -1
  522. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.d.ts +1 -1
  523. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.d.ts.map +1 -1
  524. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/initial-message.js.map +1 -1
  525. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts +1 -1
  526. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.d.ts.map +1 -1
  527. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/list-models.js.map +1 -1
  528. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.d.ts +1 -1
  529. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.d.ts.map +1 -1
  530. package/node_modules/@earendil-works/pi-coding-agent/dist/cli/session-picker.js.map +1 -1
  531. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.d.ts.map +1 -1
  532. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js +4 -10
  533. package/node_modules/@earendil-works/pi-coding-agent/dist/cli.js.map +1 -1
  534. package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
  535. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +13 -14
  536. package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
  537. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts +9 -9
  538. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.d.ts.map +1 -1
  539. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js +6 -6
  540. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-runtime.js.map +1 -1
  541. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +7 -7
  542. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
  543. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +3 -2
  544. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
  545. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +23 -21
  546. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
  547. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +99 -137
  548. package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
  549. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-guidance.d.ts.map +1 -1
  550. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-guidance.js.map +1 -1
  551. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts +1 -1
  552. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.d.ts.map +1 -1
  553. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js +3 -2
  554. package/node_modules/@earendil-works/pi-coding-agent/dist/core/auth-storage.js.map +1 -1
  555. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.d.ts +1 -1
  556. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.d.ts.map +1 -1
  557. package/node_modules/@earendil-works/pi-coding-agent/dist/core/bash-executor.js.map +1 -1
  558. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts +3 -3
  559. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  560. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/branch-summarization.js.map +1 -1
  561. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts +2 -2
  562. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
  563. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
  564. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.d.ts +3 -3
  565. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.d.ts.map +1 -1
  566. package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/index.js.map +1 -1
  567. package/node_modules/@earendil-works/pi-coding-agent/dist/core/exec.d.ts.map +1 -1
  568. package/node_modules/@earendil-works/pi-coding-agent/dist/core/exec.js.map +1 -1
  569. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.d.ts +1 -1
  570. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.d.ts.map +1 -1
  571. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.js +8 -6
  572. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/index.js.map +1 -1
  573. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/template.js +6 -3
  574. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.d.ts +2 -2
  575. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  576. package/node_modules/@earendil-works/pi-coding-agent/dist/core/export-html/tool-renderer.js.map +1 -1
  577. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts +8 -8
  578. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.d.ts.map +1 -1
  579. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/index.js.map +1 -1
  580. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts +2 -2
  581. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.d.ts.map +1 -1
  582. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js +12 -29
  583. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/loader.js.map +1 -1
  584. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +6 -6
  585. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
  586. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
  587. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +19 -19
  588. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
  589. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
  590. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.d.ts +2 -2
  591. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.d.ts.map +1 -1
  592. package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/wrapper.js.map +1 -1
  593. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.d.ts.map +1 -1
  594. package/node_modules/@earendil-works/pi-coding-agent/dist/core/footer-data-provider.js.map +1 -1
  595. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.d.ts +21 -0
  596. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.d.ts.map +1 -0
  597. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js +48 -0
  598. package/node_modules/@earendil-works/pi-coding-agent/dist/core/http-dispatcher.js.map +1 -0
  599. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts +8 -8
  600. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.d.ts.map +1 -1
  601. package/node_modules/@earendil-works/pi-coding-agent/dist/core/index.js.map +1 -1
  602. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.d.ts.map +1 -1
  603. package/node_modules/@earendil-works/pi-coding-agent/dist/core/keybindings.js.map +1 -1
  604. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts +4 -4
  605. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
  606. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +7 -3
  607. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
  608. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts +1 -1
  609. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
  610. package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
  611. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts +2 -1
  612. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.d.ts.map +1 -1
  613. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js +48 -32
  614. package/node_modules/@earendil-works/pi-coding-agent/dist/core/package-manager.js.map +1 -1
  615. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts +1 -1
  616. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.d.ts.map +1 -1
  617. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js +6 -20
  618. package/node_modules/@earendil-works/pi-coding-agent/dist/core/prompt-templates.js.map +1 -1
  619. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
  620. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
  621. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts +9 -9
  622. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.d.ts.map +1 -1
  623. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js +38 -31
  624. package/node_modules/@earendil-works/pi-coding-agent/dist/core/resource-loader.js.map +1 -1
  625. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts +13 -13
  626. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
  627. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +9 -4
  628. package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
  629. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts +1 -1
  630. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
  631. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +32 -24
  632. package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
  633. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +3 -0
  634. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
  635. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +26 -13
  636. package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
  637. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.d.ts +2 -2
  638. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.d.ts.map +1 -1
  639. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js +8 -22
  640. package/node_modules/@earendil-works/pi-coding-agent/dist/core/skills.js.map +1 -1
  641. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts +1 -1
  642. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.d.ts.map +1 -1
  643. package/node_modules/@earendil-works/pi-coding-agent/dist/core/slash-commands.js.map +1 -1
  644. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.d.ts +1 -1
  645. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.d.ts.map +1 -1
  646. package/node_modules/@earendil-works/pi-coding-agent/dist/core/source-info.js.map +1 -1
  647. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts +1 -1
  648. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
  649. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +1 -0
  650. package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
  651. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.d.ts +1 -1
  652. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.d.ts.map +1 -1
  653. package/node_modules/@earendil-works/pi-coding-agent/dist/core/telemetry.js.map +1 -1
  654. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts +2 -2
  655. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.d.ts.map +1 -1
  656. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js +9 -3
  657. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/bash.js.map +1 -1
  658. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts +3 -1
  659. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.d.ts.map +1 -1
  660. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js +8 -1
  661. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit-diff.js.map +1 -1
  662. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts +5 -3
  663. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
  664. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +3 -2
  665. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
  666. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts +2 -2
  667. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
  668. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
  669. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts +2 -2
  670. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
  671. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
  672. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts +17 -17
  673. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.d.ts.map +1 -1
  674. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/index.js.map +1 -1
  675. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts +2 -2
  676. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
  677. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
  678. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.d.ts +3 -1
  679. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.d.ts.map +1 -1
  680. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.js +9 -3
  681. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/output-accumulator.js.map +1 -1
  682. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.d.ts.map +1 -1
  683. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js +3 -22
  684. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/path-utils.js.map +1 -1
  685. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts +2 -2
  686. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
  687. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
  688. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts.map +1 -1
  689. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js.map +1 -1
  690. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  691. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  692. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  693. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.d.ts.map +1 -1
  694. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.js +12 -2
  695. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/truncate.js.map +1 -1
  696. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts +1 -1
  697. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
  698. package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
  699. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +30 -29
  700. package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
  701. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -1
  702. package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
  703. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts +1 -1
  704. package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
  705. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +7 -6
  706. package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
  707. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
  708. package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
  709. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts +5 -5
  710. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.d.ts.map +1 -1
  711. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/index.js.map +1 -1
  712. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/armin.d.ts.map +1 -1
  713. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/armin.js.map +1 -1
  714. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  715. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/assistant-message.js.map +1 -1
  716. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  717. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  718. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bash-execution.js.map +1 -1
  719. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  720. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  721. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  722. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  723. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  724. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  725. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  726. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  727. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  728. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts +2 -2
  729. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  730. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js +1 -1
  731. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/config-selector.js.map +1 -1
  732. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts +2 -2
  733. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  734. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js +2 -2
  735. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  736. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  737. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  738. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-editor.js.map +1 -1
  739. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.d.ts +2 -2
  740. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  741. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/custom-message.js.map +1 -1
  742. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  743. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/daxnuts.js.map +1 -1
  744. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/diff.d.ts.map +1 -1
  745. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/diff.js.map +1 -1
  746. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  747. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  748. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  749. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  750. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  751. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  752. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-editor.js.map +1 -1
  753. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  754. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-input.js.map +1 -1
  755. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  756. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/extension-selector.js.map +1 -1
  757. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts +4 -3
  758. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.d.ts.map +1 -1
  759. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js +16 -7
  760. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/footer.js.map +1 -1
  761. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts +31 -31
  762. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.d.ts.map +1 -1
  763. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/index.js.map +1 -1
  764. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  765. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  766. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +10 -2
  767. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  768. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +31 -6
  769. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
  770. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts +2 -2
  771. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  772. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/model-selector.js.map +1 -1
  773. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  774. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  775. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  776. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  777. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  778. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts +1 -1
  779. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  780. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  781. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts +3 -3
  782. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  783. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/session-selector.js.map +1 -1
  784. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  785. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  786. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js +15 -0
  787. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/settings-selector.js.map +1 -1
  788. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  789. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  790. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  791. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  792. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  793. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  794. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/theme-selector.js.map +1 -1
  795. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  796. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  797. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  798. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  799. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tool-execution.js.map +1 -1
  800. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  801. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  802. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/tree-selector.js.map +1 -1
  803. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  804. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  805. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  806. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
  807. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +4 -3
  808. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  809. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +37 -14
  810. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
  811. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts +1 -1
  812. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  813. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +37 -28
  814. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
  815. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts +1 -1
  816. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.d.ts.map +1 -1
  817. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/print-mode.js.map +1 -1
  818. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts +5 -5
  819. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  820. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js +1 -1
  821. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-client.js.map +1 -1
  822. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts +2 -2
  823. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  824. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
  825. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +4 -4
  826. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  827. package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
  828. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.d.ts.map +1 -1
  829. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js +40 -1
  830. package/node_modules/@earendil-works/pi-coding-agent/dist/package-manager-cli.js.map +1 -1
  831. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts +1 -1
  832. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.d.ts.map +1 -1
  833. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/changelog.js.map +1 -1
  834. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-image.d.ts.map +1 -1
  835. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard-image.js.map +1 -1
  836. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.d.ts.map +1 -1
  837. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/clipboard.js.map +1 -1
  838. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.d.ts +1 -1
  839. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.d.ts.map +1 -1
  840. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/exif-orientation.js.map +1 -1
  841. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.d.ts.map +1 -1
  842. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-convert.js.map +1 -1
  843. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.d.ts.map +1 -1
  844. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/image-resize.js.map +1 -1
  845. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts +16 -1
  846. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.d.ts.map +1 -1
  847. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js +49 -7
  848. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/paths.js.map +1 -1
  849. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.d.ts.map +1 -1
  850. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/shell.js.map +1 -1
  851. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.d.ts.map +1 -1
  852. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/syntax-highlight.js.map +1 -1
  853. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.d.ts.map +1 -1
  854. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/tools-manager.js.map +1 -1
  855. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts +2 -1
  856. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.d.ts.map +1 -1
  857. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js +9 -4
  858. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/version-check.js.map +1 -1
  859. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/windows-self-update.d.ts.map +1 -1
  860. package/node_modules/@earendil-works/pi-coding-agent/dist/utils/windows-self-update.js.map +1 -1
  861. package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +44 -12
  862. package/node_modules/@earendil-works/pi-coding-agent/docs/index.md +6 -4
  863. package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +8 -2
  864. package/node_modules/@earendil-works/pi-coding-agent/docs/packages.md +5 -4
  865. package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +3 -1
  866. package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +2 -0
  867. package/node_modules/@earendil-works/pi-coding-agent/docs/termux.md +1 -1
  868. package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +2 -2
  869. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +2 -2
  870. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  871. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  872. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/doom-component.ts +2 -2
  873. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/doom-overlay/index.ts +3 -3
  874. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-qa-tests.ts +97 -66
  875. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/overlay-test.ts +7 -4
  876. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/plan-mode/index.ts +1 -1
  877. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +2 -2
  878. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/subagent/index.ts +1 -1
  879. package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +3 -3
  880. package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +1425 -0
  881. package/node_modules/@earendil-works/pi-coding-agent/package.json +32 -31
  882. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  883. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  884. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts +1 -1
  885. package/node_modules/@earendil-works/pi-tui/dist/components/box.d.ts.map +1 -1
  886. package/node_modules/@earendil-works/pi-tui/dist/components/box.js.map +1 -1
  887. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts +1 -1
  888. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.d.ts.map +1 -1
  889. package/node_modules/@earendil-works/pi-tui/dist/components/cancellable-loader.js.map +1 -1
  890. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +3 -3
  891. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  892. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  893. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts +2 -2
  894. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  895. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  896. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts +1 -1
  897. package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
  898. package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
  899. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -5
  900. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  901. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +4 -4
  902. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  903. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +1 -1
  904. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
  905. package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
  906. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts +1 -1
  907. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.d.ts.map +1 -1
  908. package/node_modules/@earendil-works/pi-tui/dist/components/select-list.js.map +1 -1
  909. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts +1 -1
  910. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.d.ts.map +1 -1
  911. package/node_modules/@earendil-works/pi-tui/dist/components/settings-list.js.map +1 -1
  912. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts +1 -1
  913. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.d.ts.map +1 -1
  914. package/node_modules/@earendil-works/pi-tui/dist/components/spacer.js.map +1 -1
  915. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts +1 -1
  916. package/node_modules/@earendil-works/pi-tui/dist/components/text.d.ts.map +1 -1
  917. package/node_modules/@earendil-works/pi-tui/dist/components/text.js.map +1 -1
  918. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts +1 -1
  919. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.d.ts.map +1 -1
  920. package/node_modules/@earendil-works/pi-tui/dist/components/truncated-text.js.map +1 -1
  921. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts +2 -2
  922. package/node_modules/@earendil-works/pi-tui/dist/editor-component.d.ts.map +1 -1
  923. package/node_modules/@earendil-works/pi-tui/dist/editor-component.js.map +1 -1
  924. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +22 -22
  925. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  926. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  927. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts +1 -1
  928. package/node_modules/@earendil-works/pi-tui/dist/keybindings.d.ts.map +1 -1
  929. package/node_modules/@earendil-works/pi-tui/dist/keybindings.js.map +1 -1
  930. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  931. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +25 -15
  932. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  933. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts +2 -2
  934. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  935. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  936. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  937. package/node_modules/@earendil-works/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  938. package/node_modules/@earendil-works/pi-tui/package.json +8 -11
  939. package/package.json +13 -8
  940. package/dist/bin/forgecli.d.ts +0 -2
  941. package/dist/bin/forgecli.js +0 -6
  942. package/dist/bin/forgecli.js.map +0 -1
  943. package/node_modules/koffi/CHANGELOG.md +0 -1093
  944. package/node_modules/koffi/LICENSE.txt +0 -22
  945. package/node_modules/koffi/README.md +0 -43
  946. package/node_modules/koffi/build/koffi/darwin_arm64/koffi.node +0 -0
  947. package/node_modules/koffi/build/koffi/darwin_x64/koffi.node +0 -0
  948. package/node_modules/koffi/build/koffi/freebsd_arm64/koffi.node +0 -0
  949. package/node_modules/koffi/build/koffi/freebsd_ia32/koffi.node +0 -0
  950. package/node_modules/koffi/build/koffi/freebsd_x64/koffi.node +0 -0
  951. package/node_modules/koffi/build/koffi/linux_arm64/koffi.node +0 -0
  952. package/node_modules/koffi/build/koffi/linux_armhf/koffi.node +0 -0
  953. package/node_modules/koffi/build/koffi/linux_ia32/koffi.node +0 -0
  954. package/node_modules/koffi/build/koffi/linux_loong64/koffi.node +0 -0
  955. package/node_modules/koffi/build/koffi/linux_riscv64d/koffi.node +0 -0
  956. package/node_modules/koffi/build/koffi/linux_x64/koffi.node +0 -0
  957. package/node_modules/koffi/build/koffi/musl_arm64/koffi.node +0 -0
  958. package/node_modules/koffi/build/koffi/musl_x64/koffi.node +0 -0
  959. package/node_modules/koffi/build/koffi/openbsd_ia32/koffi.node +0 -0
  960. package/node_modules/koffi/build/koffi/openbsd_x64/koffi.node +0 -0
  961. package/node_modules/koffi/build/koffi/win32_arm64/koffi.exp +0 -0
  962. package/node_modules/koffi/build/koffi/win32_arm64/koffi.lib +0 -0
  963. package/node_modules/koffi/build/koffi/win32_arm64/koffi.node +0 -0
  964. package/node_modules/koffi/build/koffi/win32_ia32/koffi.exp +0 -0
  965. package/node_modules/koffi/build/koffi/win32_ia32/koffi.lib +0 -0
  966. package/node_modules/koffi/build/koffi/win32_ia32/koffi.node +0 -0
  967. package/node_modules/koffi/build/koffi/win32_x64/koffi.exp +0 -0
  968. package/node_modules/koffi/build/koffi/win32_x64/koffi.lib +0 -0
  969. package/node_modules/koffi/build/koffi/win32_x64/koffi.node +0 -0
  970. package/node_modules/koffi/doc/benchmarks.md +0 -126
  971. package/node_modules/koffi/doc/callbacks.md +0 -210
  972. package/node_modules/koffi/doc/contribute.md +0 -148
  973. package/node_modules/koffi/doc/functions.md +0 -250
  974. package/node_modules/koffi/doc/index.md +0 -61
  975. package/node_modules/koffi/doc/input.md +0 -471
  976. package/node_modules/koffi/doc/migration.md +0 -159
  977. package/node_modules/koffi/doc/misc.md +0 -180
  978. package/node_modules/koffi/doc/output.md +0 -305
  979. package/node_modules/koffi/doc/packaging.md +0 -88
  980. package/node_modules/koffi/doc/platforms.md +0 -36
  981. package/node_modules/koffi/doc/pointers.md +0 -328
  982. package/node_modules/koffi/doc/start.md +0 -118
  983. package/node_modules/koffi/doc/unions.md +0 -186
  984. package/node_modules/koffi/doc/variables.md +0 -102
  985. package/node_modules/koffi/index.d.ts +0 -288
  986. package/node_modules/koffi/index.js +0 -634
  987. package/node_modules/koffi/indirect.js +0 -533
  988. package/node_modules/koffi/lib/native/base/base.cc +0 -11015
  989. package/node_modules/koffi/lib/native/base/base.hh +0 -6003
  990. package/node_modules/koffi/lib/native/base/crc.inc +0 -2214
  991. package/node_modules/koffi/lib/native/base/crc_gen.py +0 -72
  992. package/node_modules/koffi/lib/native/base/mimetypes.inc +0 -1248
  993. package/node_modules/koffi/lib/native/base/mimetypes_gen.py +0 -58
  994. package/node_modules/koffi/lib/native/base/tower.cc +0 -821
  995. package/node_modules/koffi/lib/native/base/tower.hh +0 -81
  996. package/node_modules/koffi/lib/native/base/unicode.inc +0 -408
  997. package/node_modules/koffi/lib/native/base/unicode_gen.py +0 -152
  998. package/node_modules/koffi/package.json +0 -38
  999. package/node_modules/koffi/src/cnoke/LICENSE.txt +0 -22
  1000. package/node_modules/koffi/src/cnoke/README.md +0 -99
  1001. package/node_modules/koffi/src/cnoke/assets/FindCNoke.cmake +0 -127
  1002. package/node_modules/koffi/src/cnoke/assets/toolchains.json +0 -126
  1003. package/node_modules/koffi/src/cnoke/assets/win_delay_hook.c +0 -36
  1004. package/node_modules/koffi/src/cnoke/cnoke.js +0 -170
  1005. package/node_modules/koffi/src/cnoke/package.json +0 -24
  1006. package/node_modules/koffi/src/cnoke/src/builder.js +0 -511
  1007. package/node_modules/koffi/src/cnoke/src/index.js +0 -10
  1008. package/node_modules/koffi/src/cnoke/src/tools.js +0 -407
  1009. package/node_modules/koffi/src/koffi/CMakeLists.txt +0 -182
  1010. package/node_modules/koffi/src/koffi/src/abi_arm32.cc +0 -1018
  1011. package/node_modules/koffi/src/koffi/src/abi_arm32_asm.S +0 -169
  1012. package/node_modules/koffi/src/koffi/src/abi_arm64.cc +0 -1295
  1013. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.S +0 -195
  1014. package/node_modules/koffi/src/koffi/src/abi_arm64_asm.asm +0 -174
  1015. package/node_modules/koffi/src/koffi/src/abi_loong64.cc +0 -5
  1016. package/node_modules/koffi/src/koffi/src/abi_loong64_asm.S +0 -204
  1017. package/node_modules/koffi/src/koffi/src/abi_riscv64.cc +0 -915
  1018. package/node_modules/koffi/src/koffi/src/abi_riscv64_asm.S +0 -203
  1019. package/node_modules/koffi/src/koffi/src/abi_x64_sysv.cc +0 -939
  1020. package/node_modules/koffi/src/koffi/src/abi_x64_sysv_asm.S +0 -231
  1021. package/node_modules/koffi/src/koffi/src/abi_x64_win.cc +0 -715
  1022. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.S +0 -166
  1023. package/node_modules/koffi/src/koffi/src/abi_x64_win_asm.asm +0 -192
  1024. package/node_modules/koffi/src/koffi/src/abi_x86.cc +0 -860
  1025. package/node_modules/koffi/src/koffi/src/abi_x86_asm.S +0 -193
  1026. package/node_modules/koffi/src/koffi/src/abi_x86_asm.asm +0 -177
  1027. package/node_modules/koffi/src/koffi/src/call.cc +0 -1326
  1028. package/node_modules/koffi/src/koffi/src/call.hh +0 -179
  1029. package/node_modules/koffi/src/koffi/src/errno.inc +0 -462
  1030. package/node_modules/koffi/src/koffi/src/ffi.cc +0 -2702
  1031. package/node_modules/koffi/src/koffi/src/ffi.hh +0 -354
  1032. package/node_modules/koffi/src/koffi/src/init.js +0 -105
  1033. package/node_modules/koffi/src/koffi/src/parser.cc +0 -220
  1034. package/node_modules/koffi/src/koffi/src/parser.hh +0 -54
  1035. package/node_modules/koffi/src/koffi/src/util.cc +0 -1807
  1036. package/node_modules/koffi/src/koffi/src/util.hh +0 -221
  1037. package/node_modules/koffi/src/koffi/src/uv.cc +0 -193
  1038. package/node_modules/koffi/src/koffi/src/uv.def +0 -10
  1039. package/node_modules/koffi/src/koffi/src/uv.hh +0 -40
  1040. package/node_modules/koffi/src/koffi/src/win32.cc +0 -198
  1041. package/node_modules/koffi/src/koffi/src/win32.hh +0 -119
  1042. package/node_modules/koffi/src/koffi/tools/write_trampolines.js +0 -77
  1043. package/node_modules/koffi/vendor/node-addon-api/LICENSE.md +0 -9
  1044. package/node_modules/koffi/vendor/node-addon-api/README.md +0 -95
  1045. package/node_modules/koffi/vendor/node-addon-api/napi-inl.deprecated.h +0 -186
  1046. package/node_modules/koffi/vendor/node-addon-api/napi-inl.h +0 -7033
  1047. package/node_modules/koffi/vendor/node-addon-api/napi.h +0 -3309
  1048. package/node_modules/koffi/vendor/node-api-headers/LICENSE +0 -21
  1049. package/node_modules/koffi/vendor/node-api-headers/README.md +0 -95
  1050. package/node_modules/koffi/vendor/node-api-headers/def/js_native_api.def +0 -125
  1051. package/node_modules/koffi/vendor/node-api-headers/def/node_api.def +0 -157
  1052. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api.h +0 -591
  1053. package/node_modules/koffi/vendor/node-api-headers/include/js_native_api_types.h +0 -210
  1054. package/node_modules/koffi/vendor/node-api-headers/include/node_api.h +0 -265
  1055. package/node_modules/koffi/vendor/node-api-headers/include/node_api_types.h +0 -58
  1056. package/node_modules/koffi/vendor/node-api-headers/include/uv/aix.h +0 -32
  1057. package/node_modules/koffi/vendor/node-api-headers/include/uv/bsd.h +0 -34
  1058. package/node_modules/koffi/vendor/node-api-headers/include/uv/darwin.h +0 -61
  1059. package/node_modules/koffi/vendor/node-api-headers/include/uv/errno.h +0 -483
  1060. package/node_modules/koffi/vendor/node-api-headers/include/uv/linux.h +0 -34
  1061. package/node_modules/koffi/vendor/node-api-headers/include/uv/os390.h +0 -33
  1062. package/node_modules/koffi/vendor/node-api-headers/include/uv/posix.h +0 -31
  1063. package/node_modules/koffi/vendor/node-api-headers/include/uv/sunos.h +0 -44
  1064. package/node_modules/koffi/vendor/node-api-headers/include/uv/threadpool.h +0 -37
  1065. package/node_modules/koffi/vendor/node-api-headers/include/uv/tree.h +0 -521
  1066. package/node_modules/koffi/vendor/node-api-headers/include/uv/unix.h +0 -512
  1067. package/node_modules/koffi/vendor/node-api-headers/include/uv/version.h +0 -43
  1068. package/node_modules/koffi/vendor/node-api-headers/include/uv/win.h +0 -698
  1069. package/node_modules/koffi/vendor/node-api-headers/include/uv.h +0 -1990
@@ -1,1326 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- // SPDX-FileCopyrightText: 2025 Niels Martignène <niels.martignene@protonmail.com>
3
-
4
- #include "lib/native/base/base.hh"
5
- #include "call.hh"
6
- #include "ffi.hh"
7
- #include "util.hh"
8
-
9
- #include <napi.h>
10
-
11
- namespace K {
12
-
13
- struct RelayContext {
14
- CallData *call;
15
-
16
- Size idx;
17
- uint8_t *sp;
18
-
19
- std::mutex mutex = {};
20
- std::condition_variable cv = {};
21
- bool done = false;
22
- };
23
-
24
- extern "C" void *FindTrampolineStart();
25
- extern "C" void *FindTrampolineEnd();
26
-
27
- static const uint8_t *TrampolineStart = (const uint8_t *)FindTrampolineStart();
28
- static const Size TrampolineSize = ((const uint8_t *)FindTrampolineEnd() - TrampolineStart) / MaxTrampolines;
29
-
30
- CallData::CallData(Napi::Env env, InstanceData *instance, InstanceMemory *mem)
31
- : env(env), instance(instance),
32
- mem(mem), old_stack_mem(mem->stack), old_heap_mem(mem->heap)
33
- {
34
- mem->depth++;
35
-
36
- K_ASSERT(AlignUp(mem->stack.ptr, 16) == mem->stack.ptr);
37
- }
38
-
39
- CallData::~CallData()
40
- {
41
- if (!instance)
42
- return;
43
-
44
- Dispose();
45
- }
46
-
47
- void CallData::Dispose()
48
- {
49
- for (const OutArgument &out: out_arguments) {
50
- napi_delete_reference(env, out.ref);
51
- }
52
-
53
- mem->stack = old_stack_mem;
54
- mem->heap = old_heap_mem;
55
-
56
- if (used_trampolines.len) {
57
- std::lock_guard<std::mutex> lock(shared.mutex);
58
-
59
- for (Size i = used_trampolines.len - 1; i >= 0; i--) {
60
- int16_t idx = used_trampolines[i];
61
- TrampolineInfo *trampoline = &shared.trampolines[idx];
62
-
63
- K_ASSERT(trampoline->instance == instance);
64
- K_ASSERT(!trampoline->func.IsEmpty());
65
-
66
- trampoline->func.Reset();
67
- trampoline->recv.Reset();
68
- trampoline->used = false;
69
-
70
- shared.available.Append(idx);
71
- }
72
- }
73
-
74
- ReleaseMemory(instance, mem);
75
-
76
- instance = nullptr;
77
- }
78
-
79
- void CallData::RelayAsync(Size idx, uint8_t *sp)
80
- {
81
- // JS/V8 is single-threaded, and runs on main_thread_id. Forward the call
82
- // to the JS event loop.
83
-
84
- RelayContext ctx = {
85
- .call = this,
86
- .idx = idx,
87
- .sp = sp
88
- };
89
-
90
- napi_call_threadsafe_function(instance->broker, &ctx, napi_tsfn_blocking);
91
-
92
- // Wait until it executes
93
- std::unique_lock<std::mutex> lock(ctx.mutex);
94
- while (!ctx.done) {
95
- ctx.cv.wait(lock);
96
- }
97
- }
98
-
99
- bool CallData::PushString(Napi::Value value, int directions, const char **out_str)
100
- {
101
- // Fast path
102
- if (value.IsString()) {
103
- if (directions & 2) [[unlikely]] {
104
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected [string]", GetValueType(instance, value));
105
- return false;
106
- }
107
-
108
- PushStringValue(value, out_str);
109
- return true;
110
- }
111
-
112
- return PushPointer(value, instance->str_type, directions, (void **)out_str);
113
- }
114
-
115
- bool CallData::PushString16(Napi::Value value, int directions, const char16_t **out_str16)
116
- {
117
- // Fast path
118
- if (value.IsString()) {
119
- if (directions & 2) [[unlikely]] {
120
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected [string]", GetValueType(instance, value));
121
- return false;
122
- }
123
-
124
- PushString16Value(value, out_str16);
125
- return true;
126
- }
127
-
128
- return PushPointer(value, instance->str16_type, directions, (void **)out_str16);
129
- }
130
-
131
- bool CallData::PushString32(Napi::Value value, int directions, const char32_t **out_str32)
132
- {
133
- // Fast path
134
- if (value.IsString()) {
135
- if (directions & 2) [[unlikely]] {
136
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected [string]", GetValueType(instance, value));
137
- return false;
138
- }
139
-
140
- PushString32Value(value, out_str32);
141
- return true;
142
- }
143
-
144
- return PushPointer(value, instance->str32_type, directions, (void **)out_str32);
145
- }
146
-
147
- Size CallData::PushStringValue(Napi::Value value, const char **out_str)
148
- {
149
- Span<char> buf;
150
- size_t len = 0;
151
- napi_status status;
152
-
153
- buf.ptr = (char *)mem->heap.ptr;
154
- buf.len = mem->heap.len;
155
-
156
- status = napi_get_value_string_utf8(env, value, buf.ptr, (size_t)buf.len, &len);
157
- K_ASSERT(status == napi_ok);
158
-
159
- len++;
160
-
161
- // V8 can truncate the string and return a length that is less than the real string
162
- // length in several cases, such as when it flattens string ropes.
163
- // This was the cause of a truncation bug (see https://github.com/Koromix/koffi/issues/266),
164
- // which went unnoticed for a long time.
165
- // We don't want to query the length beforehand, because it's slow. Instead, check that the
166
- // returned lengfth is much shorter than the available buffer capacity, and if so, we know
167
- // we're okay because V8 flattens strings ~32 KiB at a time.
168
-
169
- if ((Size)len < buf.len - Kibibytes(64)) [[likely]] {
170
- mem->heap.ptr += (Size)len;
171
- mem->heap.len -= (Size)len;
172
- } else {
173
- status = napi_get_value_string_utf8(env, value, nullptr, 0, &len);
174
- K_ASSERT(status == napi_ok);
175
-
176
- len++;
177
- buf = AllocateSpan<char>(&alloc, (Size)len);
178
-
179
- status = napi_get_value_string_utf8(env, value, buf.ptr, (size_t)buf.len, &len);
180
- K_ASSERT(status == napi_ok);
181
-
182
- len++;
183
- }
184
-
185
- *out_str = buf.ptr;
186
- return (Size)len;
187
- }
188
-
189
- Size CallData::PushString16Value(Napi::Value value, const char16_t **out_str16)
190
- {
191
- Span<char16_t> buf;
192
- size_t len = 0;
193
- napi_status status;
194
-
195
- mem->heap.ptr = AlignUp(mem->heap.ptr, 2);
196
- buf.ptr = (char16_t *)mem->heap.ptr;
197
- buf.len = mem->heap.len / 2;
198
-
199
- status = napi_get_value_string_utf16(env, value, buf.ptr, (size_t)buf.len, &len);
200
- K_ASSERT(status == napi_ok);
201
-
202
- len++;
203
-
204
- if ((Size)len < buf.len - Kibibytes(64) / 2) [[likely]] {
205
- mem->heap.ptr += (Size)len * 2;
206
- mem->heap.len -= (Size)len * 2;
207
- } else {
208
- status = napi_get_value_string_utf16(env, value, nullptr, 0, &len);
209
- K_ASSERT(status == napi_ok);
210
-
211
- len++;
212
- buf = AllocateSpan<char16_t>(&alloc, (Size)len);
213
-
214
- status = napi_get_value_string_utf16(env, value, buf.ptr, (size_t)buf.len, &len);
215
- K_ASSERT(status == napi_ok);
216
-
217
- len++;
218
- }
219
-
220
- *out_str16 = buf.ptr;
221
- return (Size)len;
222
- }
223
-
224
- Size CallData::PushString32Value(Napi::Value value, const char32_t **out_str32)
225
- {
226
- static const char32_t ReplacementChar = 0x0000FFFD;
227
-
228
- Span<char32_t> buf;
229
-
230
- Span<const char16_t> buf16;
231
- buf16.len = PushString16Value(value, &buf16.ptr);
232
- if (buf16.len < 0) [[unlikely]]
233
- return -1;
234
-
235
- mem->heap.ptr = AlignUp(mem->heap.ptr, 4);
236
- buf.ptr = (char32_t *)mem->heap.ptr;
237
- buf.len = mem->heap.len / 4;
238
-
239
- if (buf16.len < buf.len) [[likely]] {
240
- mem->heap.ptr += buf16.len * 4;
241
- mem->heap.len -= buf16.len * 4;
242
- } else {
243
- buf = AllocateSpan<char32_t>(&alloc, buf16.len);
244
- }
245
-
246
- Size j = 0;
247
- for (Size i = 0; i < buf16.len; i++) {
248
- char32_t uc = buf16[i];
249
-
250
- if (uc >= 0xD800 && uc <= 0xDBFF) {
251
- if (++i < buf16.len) {
252
- char16_t uc2 = buf16.ptr[i];
253
-
254
- if (uc2 >= 0xDC00 && uc2 <= 0xDFFF) [[likely]] {
255
- uc = ((uc - 0xD800) << 10) + (uc2 - 0xDC00) + 0x10000u;
256
- } else {
257
- uc = ReplacementChar;
258
- }
259
- } else {
260
- uc = ReplacementChar;
261
- }
262
- } else if (uc >= 0xDC00 && uc <= 0xDFFF) [[unlikely]] {
263
- uc = ReplacementChar;
264
- }
265
-
266
- buf[j++] = uc;
267
- }
268
-
269
- *out_str32 = buf.ptr;
270
- return j;
271
- }
272
-
273
- bool CallData::PushObject(Napi::Object obj, const TypeInfo *type, uint8_t *origin)
274
- {
275
- K_ASSERT(IsObject(obj));
276
- K_ASSERT(type->primitive == PrimitiveKind::Record ||
277
- type->primitive == PrimitiveKind::Union);
278
-
279
- Span<const RecordMember> members = {};
280
-
281
- if (type->primitive == PrimitiveKind::Record) {
282
- members = type->members;
283
- } else if (type->primitive == PrimitiveKind::Union) {
284
- if (CheckValueTag(obj, &MagicUnionMarker)) {
285
- MagicUnion *u = MagicUnion::Unwrap(obj);
286
- const uint8_t *raw = u->GetRaw();
287
-
288
- if (u->GetType() != type) [[unlikely]] {
289
- ThrowError<Napi::TypeError>(env, "Expected union type %1, got %2", type->name, u->GetType()->name);
290
- return false;
291
- }
292
-
293
- // Fast path: encoded value already exists, just copy!
294
- if (raw) {
295
- memcpy(origin, raw, type->size);
296
- return true;
297
- }
298
-
299
- members.ptr = u->GetMember();
300
- members.len = 1;
301
-
302
- if (!members.ptr) [[unlikely]] {
303
- ThrowError<Napi::Error>(env, "Cannot use ambiguous empty union");
304
- return false;
305
- }
306
- } else {
307
- Napi::Array properties = GetOwnPropertyNames(obj);
308
-
309
- if (properties.Length() != 1 || !properties.Get(0u).IsString()) [[unlikely]] {
310
- ThrowError<Napi::Error>(env, "Expected object with single property name for union");
311
- return false;
312
- }
313
-
314
- std::string property = properties.Get(0u).As<Napi::String>();
315
-
316
- members.ptr = std::find_if(type->members.begin(), type->members.end(),
317
- [&](const RecordMember &member) { return TestStr(property.c_str(), member.name); });
318
- members.len = 1;
319
-
320
- if (members.ptr == type->members.end()) [[unlikely]] {
321
- ThrowError<Napi::Error>(env, "Unknown member %1 in union type %2", property.c_str(), type->name);
322
- return false;
323
- }
324
- }
325
- } else {
326
- K_UNREACHABLE();
327
- }
328
-
329
- MemSet(origin, 0, type->size);
330
-
331
- for (Size i = 0; i < members.len; i++) {
332
- const RecordMember &member = members[i];
333
- Napi::Value value = obj.Get(member.name);
334
-
335
- if (member.countedby >= 0) {
336
- const char *countedby = members[member.countedby].name;
337
-
338
- if (!CheckDynamicLength(obj, member.type->ref.type->size, countedby, value)) [[unlikely]]
339
- return false;
340
- }
341
-
342
- if (value.IsUndefined())
343
- continue;
344
-
345
- uint8_t *dest = origin + member.offset;
346
-
347
- switch (member.type->primitive) {
348
- case PrimitiveKind::Void: { K_UNREACHABLE(); } break;
349
-
350
- case PrimitiveKind::Bool: {
351
- if (!value.IsBoolean()) [[unlikely]] {
352
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected boolean", GetValueType(instance, value));
353
- return false;
354
- }
355
-
356
- bool b = value.As<Napi::Boolean>();
357
- *(bool *)dest = b;
358
- } break;
359
- case PrimitiveKind::Int8: {
360
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
361
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
362
- return false;
363
- }
364
-
365
- int8_t v = GetNumber<int8_t>(value);
366
- *(int8_t *)dest = v;
367
- } break;
368
- case PrimitiveKind::UInt8: {
369
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
370
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
371
- return false;
372
- }
373
-
374
- uint8_t v = GetNumber<uint8_t>(value);
375
- *(uint8_t *)dest = v;
376
- } break;
377
- case PrimitiveKind::Int16: {
378
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
379
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
380
- return false;
381
- }
382
-
383
- int16_t v = GetNumber<int16_t>(value);
384
- *(int16_t *)dest = v;
385
- } break;
386
- case PrimitiveKind::Int16S: {
387
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
388
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
389
- return false;
390
- }
391
-
392
- int16_t v = GetNumber<int16_t>(value);
393
- *(int16_t *)dest = ReverseBytes(v);
394
- } break;
395
- case PrimitiveKind::UInt16: {
396
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
397
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
398
- return false;
399
- }
400
-
401
- uint16_t v = GetNumber<uint16_t>(value);
402
- *(uint16_t *)dest = v;
403
- } break;
404
- case PrimitiveKind::UInt16S: {
405
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
406
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
407
- return false;
408
- }
409
-
410
- uint16_t v = GetNumber<uint16_t>(value);
411
- *(uint16_t *)dest = ReverseBytes(v);
412
- } break;
413
- case PrimitiveKind::Int32: {
414
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
415
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
416
- return false;
417
- }
418
-
419
- int32_t v = GetNumber<int32_t>(value);
420
- *(int32_t *)dest = v;
421
- } break;
422
- case PrimitiveKind::Int32S: {
423
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
424
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
425
- return false;
426
- }
427
-
428
- int32_t v = GetNumber<int32_t>(value);
429
- *(int32_t *)dest = ReverseBytes(v);
430
- } break;
431
- case PrimitiveKind::UInt32: {
432
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
433
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
434
- return false;
435
- }
436
-
437
- uint32_t v = GetNumber<uint32_t>(value);
438
- *(uint32_t *)dest = v;
439
- } break;
440
- case PrimitiveKind::UInt32S: {
441
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
442
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
443
- return false;
444
- }
445
-
446
- uint32_t v = GetNumber<uint32_t>(value);
447
- *(uint32_t *)dest = ReverseBytes(v);
448
- } break;
449
- case PrimitiveKind::Int64: {
450
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
451
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
452
- return false;
453
- }
454
-
455
- int64_t v = GetNumber<int64_t>(value);
456
- *(int64_t *)dest = v;
457
- } break;
458
- case PrimitiveKind::Int64S: {
459
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
460
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
461
- return false;
462
- }
463
-
464
- int64_t v = GetNumber<int64_t>(value);
465
- *(int64_t *)dest = ReverseBytes(v);
466
- } break;
467
- case PrimitiveKind::UInt64: {
468
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
469
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
470
- return false;
471
- }
472
-
473
- uint64_t v = GetNumber<uint64_t>(value);
474
- *(uint64_t *)dest = v;
475
- } break;
476
- case PrimitiveKind::UInt64S: {
477
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
478
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
479
- return false;
480
- }
481
-
482
- uint64_t v = GetNumber<uint64_t>(value);
483
- *(uint64_t *)dest = ReverseBytes(v);
484
- } break;
485
- case PrimitiveKind::String: {
486
- const char *str;
487
- if (!PushString(value, 1, &str)) [[unlikely]]
488
- return false;
489
-
490
- *(const char **)dest = str;
491
- } break;
492
- case PrimitiveKind::String16: {
493
- const char16_t *str16;
494
- if (!PushString16(value, 1, &str16)) [[unlikely]]
495
- return false;
496
-
497
- *(const char16_t **)dest = str16;
498
- } break;
499
- case PrimitiveKind::String32: {
500
- const char32_t *str32;
501
- if (!PushString32(value, 1, &str32)) [[unlikely]]
502
- return false;
503
-
504
- *(const char32_t **)dest = str32;
505
- } break;
506
- case PrimitiveKind::Pointer: {
507
- void *ptr;
508
- if (!PushPointer(value, member.type, 1, &ptr)) [[unlikely]]
509
- return false;
510
-
511
- *(void **)dest = ptr;
512
- } break;
513
- case PrimitiveKind::Record:
514
- case PrimitiveKind::Union: {
515
- if (!IsObject(value)) [[unlikely]] {
516
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected object", GetValueType(instance, value));
517
- return false;
518
- }
519
-
520
- Napi::Object obj2 = value.As<Napi::Object>();
521
- if (!PushObject(obj2, member.type, dest))
522
- return false;
523
- } break;
524
- case PrimitiveKind::Array: {
525
- if (value.IsArray()) {
526
- Napi::Array array = value.As<Napi::Array>();
527
- if (!PushNormalArray(array, member.type, member.type->size, dest))
528
- return false;
529
- } else if (IsRawBuffer(value)) {
530
- Span<const uint8_t> buffer = GetRawBuffer(value);
531
- PushBuffer(buffer, member.type, dest);
532
- } else if (value.IsString()) {
533
- if (!PushStringArray(value, member.type, dest))
534
- return false;
535
- } else {
536
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected array", GetValueType(instance, value));
537
- return false;
538
- }
539
- } break;
540
- case PrimitiveKind::Float32: {
541
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
542
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
543
- return false;
544
- }
545
-
546
- float f = GetNumber<float>(value);
547
- *(float *)dest = f;
548
- } break;
549
- case PrimitiveKind::Float64: {
550
- if (!value.IsNumber() && !value.IsBigInt()) [[unlikely]] {
551
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected number", GetValueType(instance, value));
552
- return false;
553
- }
554
-
555
- double d = GetNumber<double>(value);
556
- *(double *)dest = d;
557
- } break;
558
- case PrimitiveKind::Callback: {
559
- void *ptr;
560
- if (!PushCallback(value, member.type, &ptr))
561
- return false;
562
-
563
- *(void **)dest = ptr;
564
- } break;
565
-
566
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
567
- }
568
- }
569
-
570
- return true;
571
- }
572
-
573
- bool CallData::PushNormalArray(Napi::Array array, const TypeInfo *type, Size size, uint8_t *origin)
574
- {
575
- K_ASSERT(array.IsArray());
576
-
577
- const TypeInfo *ref = type->ref.type;
578
- Size len = (Size)array.Length();
579
- Size available = len * ref->size;
580
-
581
- if (available > size) {
582
- len = size / ref->size;
583
- } else {
584
- MemSet(origin + available, 0, size - available);
585
- }
586
-
587
- Size offset = 0;
588
-
589
- #define PUSH_ARRAY(Check, Expected, GetCode) \
590
- do { \
591
- for (Size i = 0; i < len; i++) { \
592
- Napi::Value value = array[(uint32_t)i]; \
593
- \
594
- offset = AlignLen(offset, ref->align); \
595
- uint8_t *dest = origin + offset; \
596
- \
597
- if (!(Check)) [[unlikely]] { \
598
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected %2", GetValueType(instance, value), (Expected)); \
599
- return false; \
600
- } \
601
- \
602
- GetCode \
603
- \
604
- offset += ref->size; \
605
- } \
606
- } while (false)
607
-
608
- switch (ref->primitive) {
609
- case PrimitiveKind::Void: {
610
- ThrowError<Napi::TypeError>(env, "Ambigous parameter type %1, use koffi.as(value, type)", type->name); \
611
- return false;
612
- } break;
613
-
614
- case PrimitiveKind::Bool: {
615
- PUSH_ARRAY(value.IsBoolean(), "boolean", {
616
- bool b = value.As<Napi::Boolean>();
617
- *(bool *)dest = b;
618
- });
619
- } break;
620
- case PrimitiveKind::Int8: {
621
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
622
- int8_t v = GetNumber<int8_t>(value);
623
- *(int8_t *)dest = v;
624
- });
625
- } break;
626
- case PrimitiveKind::UInt8: {
627
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
628
- uint8_t v = GetNumber<uint8_t>(value);
629
- *(uint8_t *)dest = v;
630
- });
631
- } break;
632
- case PrimitiveKind::Int16: {
633
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
634
- int16_t v = GetNumber<int16_t>(value);
635
- *(int16_t *)dest = v;
636
- });
637
- } break;
638
- case PrimitiveKind::Int16S: {
639
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
640
- int16_t v = GetNumber<int16_t>(value);
641
- *(int16_t *)dest = ReverseBytes(v);
642
- });
643
- } break;
644
- case PrimitiveKind::UInt16: {
645
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
646
- uint16_t v = GetNumber<uint16_t>(value);
647
- *(uint16_t *)dest = v;
648
- });
649
- } break;
650
- case PrimitiveKind::UInt16S: {
651
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
652
- uint16_t v = GetNumber<uint16_t>(value);
653
- *(uint16_t *)dest = ReverseBytes(v);
654
- });
655
- } break;
656
- case PrimitiveKind::Int32: {
657
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
658
- int32_t v = GetNumber<int32_t>(value);
659
- *(int32_t *)dest = v;
660
- });
661
- } break;
662
- case PrimitiveKind::Int32S: {
663
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
664
- int32_t v = GetNumber<int32_t>(value);
665
- *(int32_t *)dest = ReverseBytes(v);
666
- });
667
- } break;
668
- case PrimitiveKind::UInt32: {
669
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
670
- uint32_t v = GetNumber<uint32_t>(value);
671
- *(uint32_t *)dest = v;
672
- });
673
- } break;
674
- case PrimitiveKind::UInt32S: {
675
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
676
- uint32_t v = GetNumber<uint32_t>(value);
677
- *(uint32_t *)dest = ReverseBytes(v);
678
- });
679
- } break;
680
- case PrimitiveKind::Int64: {
681
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
682
- int64_t v = GetNumber<int64_t>(value);
683
- *(int64_t *)dest = v;
684
- });
685
- } break;
686
- case PrimitiveKind::Int64S: {
687
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
688
- int64_t v = GetNumber<int64_t>(value);
689
- *(int64_t *)dest = ReverseBytes(v);
690
- });
691
- } break;
692
- case PrimitiveKind::UInt64: {
693
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
694
- uint64_t v = GetNumber<uint64_t>(value);
695
- *(uint64_t *)dest = v;
696
- });
697
- } break;
698
- case PrimitiveKind::UInt64S: {
699
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
700
- uint64_t v = GetNumber<uint64_t>(value);
701
- *(uint64_t *)dest = ReverseBytes(v);
702
- });
703
- } break;
704
- case PrimitiveKind::String: {
705
- PUSH_ARRAY(true, "string", {
706
- const char *str;
707
- if (!PushString(value, 1, &str)) [[unlikely]]
708
- return false;
709
-
710
- *(const char **)dest = str;
711
- });
712
- } break;
713
- case PrimitiveKind::String16: {
714
- PUSH_ARRAY(true, "string", {
715
- const char16_t *str16;
716
- if (!PushString16(value, 1, &str16)) [[unlikely]]
717
- return false;
718
-
719
- *(const char16_t **)dest = str16;
720
- });
721
- } break;
722
- case PrimitiveKind::String32: {
723
- PUSH_ARRAY(true, "string", {
724
- const char32_t *str32;
725
- if (!PushString32(value, 1, &str32)) [[unlikely]]
726
- return false;
727
-
728
- *(const char32_t **)dest = str32;
729
- });
730
- } break;
731
- case PrimitiveKind::Pointer: {
732
- PUSH_ARRAY(true, ref->name, {
733
- void *ptr;
734
- if (!PushPointer(value, ref, 1, &ptr)) [[unlikely]]
735
- return false;
736
-
737
- *(const void **)dest = ptr;
738
- });
739
- } break;
740
- case PrimitiveKind::Record:
741
- case PrimitiveKind::Union: {
742
- PUSH_ARRAY(IsObject(value), "object", {
743
- Napi::Object obj2 = value.As<Napi::Object>();
744
- if (!PushObject(obj2, ref, dest))
745
- return false;
746
- });
747
- } break;
748
- case PrimitiveKind::Array: {
749
- for (Size i = 0; i < len; i++) {
750
- Napi::Value value = array[(uint32_t)i];
751
-
752
- offset = AlignLen(offset, ref->align);
753
-
754
- uint8_t *dest = origin + offset;
755
-
756
- if (value.IsArray()) {
757
- Napi::Array array2 = value.As<Napi::Array>();
758
- if (!PushNormalArray(array2, ref, (Size)ref->size, dest))
759
- return false;
760
- } else if (IsRawBuffer(value)) {
761
- Span<const uint8_t> buffer = GetRawBuffer(value);
762
- PushBuffer(buffer, ref, dest);
763
- } else if (value.IsString()) {
764
- if (!PushStringArray(value, ref, dest))
765
- return false;
766
- } else {
767
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected array", GetValueType(instance, value));
768
- return false;
769
- }
770
-
771
- offset += ref->size;
772
- }
773
- } break;
774
- case PrimitiveKind::Float32: {
775
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
776
- float f = GetNumber<float>(value);
777
- *(float *)dest = f;
778
- });
779
- } break;
780
- case PrimitiveKind::Float64: {
781
- PUSH_ARRAY(value.IsNumber() || value.IsBigInt(), "number", {
782
- double d = GetNumber<double>(value);
783
- *(double *)dest = d;
784
- });
785
- } break;
786
- case PrimitiveKind::Callback: {
787
- for (Size i = 0; i < len; i++) {
788
- Napi::Value value = array[(uint32_t)i];
789
-
790
- offset = AlignLen(offset, ref->align);
791
-
792
- uint8_t *dest = origin + offset;
793
-
794
- void *ptr;
795
- if (!PushCallback(value, ref, &ptr))
796
- return false;
797
-
798
- *(void **)dest = ptr;
799
-
800
- offset += ref->size;
801
- }
802
- } break;
803
-
804
- case PrimitiveKind::Prototype: { K_UNREACHABLE(); } break;
805
- }
806
-
807
- #undef PUSH_ARRAY
808
-
809
- return true;
810
- }
811
-
812
- void CallData::PushBuffer(Span<const uint8_t> buffer, const TypeInfo *type, uint8_t *origin)
813
- {
814
- buffer.len = std::min(buffer.len, (Size)type->size);
815
-
816
- // Go fast brrrrrrr :)
817
- MemCpy(origin, buffer.ptr, buffer.len);
818
- MemSet(origin + buffer.len, 0, (Size)type->size - buffer.len);
819
-
820
- #define SWAP(CType) \
821
- do { \
822
- CType *data = (CType *)origin; \
823
- Size len = buffer.len / K_SIZE(CType); \
824
- \
825
- for (Size i = 0; i < len; i++) { \
826
- data[i] = ReverseBytes(data[i]); \
827
- } \
828
- } while (false)
829
-
830
- if (type->primitive == PrimitiveKind::Array || type->primitive == PrimitiveKind::Pointer) {
831
- const TypeInfo *ref = type->ref.type;
832
-
833
- if (ref->primitive == PrimitiveKind::Int16S || ref->primitive == PrimitiveKind::UInt16S) {
834
- SWAP(uint16_t);
835
- } else if (ref->primitive == PrimitiveKind::Int32S || ref->primitive == PrimitiveKind::UInt32S) {
836
- SWAP(uint32_t);
837
- } else if (ref->primitive == PrimitiveKind::Int64S || ref->primitive == PrimitiveKind::UInt64S) {
838
- SWAP(uint64_t);
839
- }
840
- }
841
-
842
- #undef SWAP
843
- }
844
-
845
- bool CallData::PushStringArray(Napi::Value obj, const TypeInfo *type, uint8_t *origin)
846
- {
847
- K_ASSERT(obj.IsString());
848
- K_ASSERT(type->primitive == PrimitiveKind::Array);
849
-
850
- size_t encoded = 0;
851
-
852
- switch (type->ref.type->primitive) {
853
- case PrimitiveKind::Int8: {
854
- napi_status status = napi_get_value_string_utf8(env, obj, (char *)origin, type->size, &encoded);
855
- K_ASSERT(status == napi_ok);
856
- } break;
857
- case PrimitiveKind::Int16: {
858
- napi_status status = napi_get_value_string_utf16(env, obj, (char16_t *)origin, type->size / 2, &encoded);
859
- K_ASSERT(status == napi_ok);
860
-
861
- encoded *= 2;
862
- } break;
863
-
864
- default: {
865
- ThrowError<Napi::TypeError>(env, "Strings cannot be converted to %1 array", type->ref.type->name);
866
- return false;
867
- } break;
868
- }
869
-
870
- MemSet(origin + encoded, 0, type->size - encoded);
871
-
872
- return true;
873
- }
874
-
875
- bool CallData::PushPointer(Napi::Value value, const TypeInfo *type, int directions, void **out_ptr)
876
- {
877
- if (CheckValueTag(value, &CastMarker)) {
878
- Napi::External<ValueCast> external = value.As<Napi::External<ValueCast>>();
879
- ValueCast *cast = external.Data();
880
-
881
- value = cast->ref.Value();
882
- type = cast->type;
883
- }
884
-
885
- const TypeInfo *ref = type->ref.type;
886
-
887
- switch (value.Type()) {
888
- case napi_undefined:
889
- case napi_null: {
890
- *out_ptr = nullptr;
891
- return true;
892
- } break;
893
-
894
- case napi_external: {
895
- K_ASSERT(type->primitive == PrimitiveKind::Pointer ||
896
- type->primitive == PrimitiveKind::String ||
897
- type->primitive == PrimitiveKind::String16 ||
898
- type->primitive == PrimitiveKind::String32);
899
-
900
- if (!CheckValueTag(value, type->ref.marker) &&
901
- !CheckValueTag(value, instance->void_type) &&
902
- ref != instance->void_type) [[unlikely]]
903
- goto unexpected;
904
-
905
- *out_ptr = value.As<Napi::External<uint8_t>>().Data();
906
- return true;
907
- } break;
908
-
909
- case napi_object: {
910
- uint8_t *ptr = nullptr;
911
-
912
- OutArgument::Kind out_kind;
913
- Size out_max_len = -1;
914
-
915
- if (value.IsArray()) {
916
- Napi::Array array = value.As<Napi::Array>();
917
- Size len = PushIndirectString(array, ref, &ptr);
918
-
919
- if (len >= 0) {
920
- if (!ref->size && ref != instance->void_type) [[unlikely]] {
921
- ThrowError<Napi::TypeError>(env, "Cannot pass [string] value to %1", type->name);
922
- return false;
923
- }
924
-
925
- switch (ref->size) {
926
- default: { out_kind = OutArgument::Kind::String; } break;
927
- case 2: { out_kind = OutArgument::Kind::String16; } break;
928
- case 4: { out_kind = OutArgument::Kind::String32; } break;
929
- }
930
- out_max_len = len;
931
- } else {
932
- if (!ref->size) [[unlikely]] {
933
- ThrowError<Napi::TypeError>(env, "Cannot pass %1 value to %2, use koffi.as()",
934
- ref != instance->void_type ? "opaque" : "ambiguous", type->name);
935
- return false;
936
- }
937
-
938
- Size len = (Size)array.Length();
939
- Size size = len * ref->size;
940
-
941
- ptr = AllocHeap(size, 16);
942
-
943
- if (directions & 1) {
944
- if (!PushNormalArray(array, type, size, ptr))
945
- return false;
946
- } else {
947
- MemSet(ptr, 0, size);
948
- }
949
-
950
- out_kind = OutArgument::Kind::Array;
951
- }
952
- } else if (IsRawBuffer(value)) {
953
- Span<uint8_t> buffer = GetRawBuffer(value);
954
-
955
- // We can fast path
956
- ptr = buffer.ptr;
957
- directions = 1;
958
-
959
- out_kind = OutArgument::Kind::Buffer;
960
- } else if (ref->primitive == PrimitiveKind::Record ||
961
- ref->primitive == PrimitiveKind::Union) [[likely]] {
962
- Napi::Object obj = value.As<Napi::Object>();
963
- K_ASSERT(IsObject(value));
964
-
965
- ptr = AllocHeap(ref->size, 16);
966
-
967
- if (ref->primitive == PrimitiveKind::Union &&
968
- (directions & 2) && !CheckValueTag(obj, &MagicUnionMarker)) [[unlikely]] {
969
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected union value", GetValueType(instance, obj));
970
- return false;
971
- }
972
-
973
- if (directions & 1) {
974
- if (!PushObject(obj, ref, ptr))
975
- return false;
976
- } else {
977
- MemSet(ptr, 0, ref->size);
978
- }
979
-
980
- out_kind = OutArgument::Kind::Object;
981
- } else {
982
- goto unexpected;
983
- }
984
-
985
- if (directions & 2) {
986
- OutArgument *out = out_arguments.AppendDefault();
987
-
988
- napi_status status = napi_create_reference(env, value, 1, &out->ref);
989
- K_ASSERT(status == napi_ok);
990
-
991
- out->kind = out_kind;
992
- out->ptr = ptr;
993
- out->type = ref;
994
- out->max_len = out_max_len;
995
- }
996
-
997
- *out_ptr = ptr;
998
- return true;
999
- } break;
1000
-
1001
- case napi_string: {
1002
- K_ASSERT(type->primitive == PrimitiveKind::Pointer);
1003
-
1004
- if (directions & 2) [[unlikely]]
1005
- goto unexpected;
1006
-
1007
- if (ref == instance->void_type) {
1008
- PushStringValue(value, (const char **)out_ptr);
1009
- return true;
1010
- } else if (ref->primitive == PrimitiveKind::Int8) {
1011
- PushStringValue(value, (const char **)out_ptr);
1012
- return true;
1013
- } else if (ref->primitive == PrimitiveKind::Int16) {
1014
- PushString16Value(value, (const char16_t **)out_ptr);
1015
- return true;
1016
- } else if (ref->primitive == PrimitiveKind::Int32) {
1017
- PushString32Value(value, (const char32_t **)out_ptr);
1018
- return true;
1019
- } else {
1020
- goto unexpected;
1021
- }
1022
- } break;
1023
-
1024
- case napi_function: {
1025
- if (type->primitive != PrimitiveKind::Callback) [[unlikely]] {
1026
- ThrowError<Napi::TypeError>(env, "Cannot pass function to type %1", type->name);
1027
- return false;
1028
- }
1029
-
1030
- Napi::Function func = value.As<Napi::Function>();
1031
-
1032
- void *ptr = ReserveTrampoline(type->ref.proto, func);
1033
- if (!ptr) [[unlikely]]
1034
- return false;
1035
-
1036
- *out_ptr = (void *)ptr;
1037
- return true;
1038
- } break;
1039
-
1040
- case napi_number: {
1041
- Napi::Number number = value.As<Napi::Number>();
1042
- intptr_t ptr = (intptr_t)number.Int32Value();
1043
-
1044
- *out_ptr = (void *)ptr;
1045
- return true;
1046
- } break;
1047
-
1048
- case napi_bigint: {
1049
- Napi::BigInt bigint = value.As<Napi::BigInt>();
1050
-
1051
- bool lossless;
1052
- intptr_t ptr = (intptr_t)bigint.Int64Value(&lossless);
1053
-
1054
- *out_ptr = (void *)ptr;
1055
- return true;
1056
- } break;
1057
-
1058
- default: {} break;
1059
- }
1060
-
1061
- unexpected:
1062
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected %2", GetValueType(instance, value), type->name);
1063
- return false;
1064
- }
1065
-
1066
- bool CallData::PushCallback(Napi::Value value, const TypeInfo *type, void **out_ptr)
1067
- {
1068
- if (value.IsFunction()) {
1069
- Napi::Function func = value.As<Napi::Function>();
1070
-
1071
- void *ptr = ReserveTrampoline(type->ref.proto, func);
1072
- if (!ptr) [[unlikely]]
1073
- return false;
1074
-
1075
- *out_ptr = ptr;
1076
- } else if (CheckValueTag(value, type->ref.marker)) {
1077
- *out_ptr = value.As<Napi::External<void>>().Data();
1078
- } else if (CheckValueTag(value, &CastMarker)) {
1079
- Napi::External<ValueCast> external = value.As<Napi::External<ValueCast>>();
1080
- ValueCast *cast = external.Data();
1081
-
1082
- value = cast->ref.Value();
1083
-
1084
- if (!value.IsExternal() || cast->type != type)
1085
- goto unexpected;
1086
-
1087
- *out_ptr = value.As<Napi::External<void>>().Data();
1088
- } else if (IsNullOrUndefined(value)) {
1089
- *out_ptr = nullptr;
1090
- } else {
1091
- goto unexpected;
1092
- }
1093
-
1094
- return true;
1095
-
1096
- unexpected:
1097
- ThrowError<Napi::TypeError>(env, "Unexpected %1 value, expected %2", GetValueType(instance, value), type->name);
1098
- return false;
1099
- }
1100
-
1101
- Size CallData::PushIndirectString(Napi::Array array, const TypeInfo *ref, uint8_t **out_ptr)
1102
- {
1103
- if (array.Length() != 1)
1104
- return -1;
1105
-
1106
- Napi::Value value = array[0u];
1107
-
1108
- if (!value.IsString())
1109
- return -1;
1110
-
1111
- if (ref == instance->void_type) {
1112
- return PushStringValue(value, (const char **)out_ptr);
1113
- } else if (ref->primitive == PrimitiveKind::Int8) {
1114
- return PushStringValue(value, (const char **)out_ptr);
1115
- } else if (ref->primitive == PrimitiveKind::Int16) {
1116
- return PushString16Value(value, (const char16_t **)out_ptr);
1117
- } else if (ref->primitive == PrimitiveKind::Int32) {
1118
- return PushString32Value(value, (const char32_t **)out_ptr);
1119
- } else {
1120
- return -1;
1121
- }
1122
- }
1123
-
1124
- void *CallData::ReserveTrampoline(const FunctionInfo *proto, Napi::Function func)
1125
- {
1126
- if (!InitAsyncBroker(env, instance)) [[unlikely]]
1127
- return nullptr;
1128
-
1129
- int16_t idx;
1130
- {
1131
- std::lock_guard<std::mutex> lock(shared.mutex);
1132
-
1133
- if (!shared.available.len) [[unlikely]] {
1134
- ThrowError<Napi::Error>(env, "Too many callbacks are in use (max = %1)", MaxTrampolines);
1135
- return env.Null();
1136
- }
1137
- if (!used_trampolines.Available()) [[unlikely]] {
1138
- ThrowError<Napi::Error>(env, "This call uses too many temporary callbacks (max = %1)", K_LEN(used_trampolines.data));
1139
- return env.Null();
1140
- }
1141
-
1142
- idx = shared.available.data[--shared.available.len];
1143
- used_trampolines.Append(idx);
1144
- }
1145
-
1146
- TrampolineInfo *trampoline = &shared.trampolines[idx];
1147
-
1148
- trampoline->instance = instance;
1149
- trampoline->proto = proto;
1150
- trampoline->func.Reset(func, 1);
1151
- trampoline->recv.Reset();
1152
- trampoline->used = true;
1153
-
1154
- void *ptr = GetTrampoline(idx);
1155
-
1156
- return ptr;
1157
- }
1158
-
1159
- void CallData::DumpForward(const FunctionInfo *func) const
1160
- {
1161
- PrintLn(StdErr, "%!..+---- %1 (%2) ----%!0", func->name, CallConventionNames[(int)func->convention]);
1162
-
1163
- if (func->parameters.len) {
1164
- PrintLn(StdErr, "Parameters:");
1165
- for (Size i = 0; i < func->parameters.len; i++) {
1166
- const ParameterInfo &param = func->parameters[i];
1167
- PrintLn(StdErr, " %1 = %2 (%3)", i, param.type->name, FmtMemSize(param.type->size));
1168
- }
1169
- }
1170
- PrintLn(StdErr, "Return: %1 (%2)", func->ret.type->name, FmtMemSize(func->ret.type->size));
1171
-
1172
- Span<const uint8_t> stack = MakeSpan(mem->stack.end(), old_stack_mem.end() - mem->stack.end());
1173
- Span<const uint8_t> heap = MakeSpan(old_heap_mem.ptr, mem->heap.ptr - old_heap_mem.ptr);
1174
-
1175
- DumpMemory("Stack", stack);
1176
- DumpMemory("Heap", heap);
1177
- }
1178
-
1179
- bool CallData::CheckDynamicLength(Napi::Object obj, Size element, const char *countedby, Napi::Value value)
1180
- {
1181
- int64_t expected = -1;
1182
- int64_t size = -1;
1183
-
1184
- // Get expected size
1185
- {
1186
- Napi::Value by = obj.Get(countedby);
1187
-
1188
- if (!by.IsNumber() && !by.IsBigInt()) [[unlikely]] {
1189
- ThrowError<Napi::Error>(env, "Unexpected %1 value for dynamic length, expected number", GetValueType(instance, by));
1190
- return false;
1191
- }
1192
-
1193
- // If we get anywhere near overflow there are other problems to worry about.
1194
- // So let's not worry about that.
1195
- expected = GetNumber<int64_t>(by) * element;
1196
- }
1197
-
1198
- // Get actual size
1199
- if (value.IsArray()) {
1200
- Napi::Array array = value.As<Napi::Array>();
1201
- size = array.Length() * element;
1202
- } else if (value.IsTypedArray()) {
1203
- Napi::TypedArray typed = value.As<Napi::TypedArray>();
1204
- size = typed.ByteLength();
1205
- } else if (value.IsArrayBuffer()) {
1206
- Napi::ArrayBuffer buffer = value.As<Napi::ArrayBuffer>();
1207
- size = buffer.ByteLength();
1208
- } else if (!IsNullOrUndefined(value)) {
1209
- size = element;
1210
- } else {
1211
- size = 0;
1212
- }
1213
-
1214
- if (size != expected) {
1215
- ThrowError<Napi::Error>(env, "Mismatched dynamic length between '%1' and actual array", countedby);
1216
- return false;
1217
- }
1218
-
1219
- return true;
1220
- }
1221
-
1222
- static inline Napi::Value GetReferenceValue(Napi::Env env, napi_ref ref)
1223
- {
1224
- napi_value value;
1225
-
1226
- napi_status status = napi_get_reference_value(env, ref, &value);
1227
- K_ASSERT(status == napi_ok);
1228
-
1229
- return Napi::Value(env, value);
1230
- }
1231
-
1232
- void CallData::PopOutArguments()
1233
- {
1234
- for (const OutArgument &out: out_arguments) {
1235
- Napi::Value value = GetReferenceValue(env, out.ref);
1236
- K_ASSERT(!value.IsEmpty());
1237
-
1238
- switch (out.kind) {
1239
- case OutArgument::Kind::Array: {
1240
- K_ASSERT(value.IsArray());
1241
-
1242
- Napi::Array array(env, value);
1243
- DecodeNormalArray(array, out.ptr, out.type);
1244
- } break;
1245
-
1246
- case OutArgument::Kind::Buffer: {
1247
- K_ASSERT(IsRawBuffer(value));
1248
-
1249
- Span<uint8_t> buffer = GetRawBuffer(value);
1250
- DecodeBuffer(buffer, out.ptr, out.type);
1251
- } break;
1252
-
1253
- case OutArgument::Kind::String: {
1254
- Napi::Array array(env, value);
1255
-
1256
- K_ASSERT(array.IsArray());
1257
- K_ASSERT(array.Length() == 1);
1258
-
1259
- Size len = strnlen((const char *)out.ptr, out.max_len);
1260
- Napi::String str = Napi::String::New(env, (const char *)out.ptr, len);
1261
-
1262
- array.Set(0u, str);
1263
- } break;
1264
-
1265
- case OutArgument::Kind::String16: {
1266
- Napi::Array array(env, value);
1267
-
1268
- K_ASSERT(array.IsArray());
1269
- K_ASSERT(array.Length() == 1);
1270
-
1271
- Size len = NullTerminatedLength((const char16_t *)out.ptr, out.max_len);
1272
- Napi::String str = Napi::String::New(env, (const char16_t *)out.ptr, len);
1273
-
1274
- array.Set(0u, str);
1275
- } break;
1276
-
1277
- case OutArgument::Kind::String32: {
1278
- Napi::Array array(env, value);
1279
-
1280
- K_ASSERT(array.IsArray());
1281
- K_ASSERT(array.Length() == 1);
1282
-
1283
- Size len = NullTerminatedLength((const char32_t *)out.ptr, out.max_len);
1284
- Napi::String str = MakeStringFromUTF32(env, (const char32_t *)out.ptr, len);
1285
-
1286
- array.Set(0u, str);
1287
- } break;
1288
-
1289
- case OutArgument::Kind::Object: {
1290
- Napi::Object obj = value.As<Napi::Object>();
1291
-
1292
- if (CheckValueTag(value, &MagicUnionMarker)) {
1293
- MagicUnion *u = MagicUnion::Unwrap(obj);
1294
- u->SetRaw(out.ptr);
1295
- } else {
1296
- DecodeObject(obj, out.ptr, out.type);
1297
- }
1298
- } break;
1299
- }
1300
- }
1301
- }
1302
-
1303
- void PerformAsyncRelay(napi_env, napi_value, void *, void *udata)
1304
- {
1305
- RelayContext *ctx = (RelayContext *)udata;
1306
- CallData *call = ctx->call;
1307
-
1308
- call->Relay(ctx->idx, ctx->sp);
1309
-
1310
- // This CallData was created artificially just to perform the callback. Which means the
1311
- // creator may not run on the main thread, and cannot properly destroy it, because some
1312
- // members are managed by Node.
1313
- call->Dispose();
1314
-
1315
- // We're done!
1316
- std::lock_guard<std::mutex> lock(ctx->mutex);
1317
- ctx->done = true;
1318
- ctx->cv.notify_one();
1319
- }
1320
-
1321
- void *GetTrampoline(int idx)
1322
- {
1323
- return (void *)(TrampolineStart + TrampolineSize * idx);
1324
- }
1325
-
1326
- }