patchwork-os 0.2.0-beta.9.canary.92 → 1.1.0-beta.1

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 (739) hide show
  1. package/README.bridge.md +15 -16
  2. package/README.md +46 -458
  3. package/dist/activationMetrics.js +2 -3
  4. package/dist/activationMetrics.js.map +1 -1
  5. package/dist/activityLog.d.ts +1 -0
  6. package/dist/activityLog.js +8 -3
  7. package/dist/activityLog.js.map +1 -1
  8. package/dist/adapters/gemini.js +2 -2
  9. package/dist/adapters/gemini.js.map +1 -1
  10. package/dist/adapters/grok.js +6 -1
  11. package/dist/adapters/grok.js.map +1 -1
  12. package/dist/adapters/openai.js +4 -0
  13. package/dist/adapters/openai.js.map +1 -1
  14. package/dist/approvalHttp.d.ts +9 -0
  15. package/dist/approvalHttp.js +210 -171
  16. package/dist/approvalHttp.js.map +1 -1
  17. package/dist/approvalKpi.d.ts +102 -0
  18. package/dist/approvalKpi.js +282 -0
  19. package/dist/approvalKpi.js.map +1 -0
  20. package/dist/approvalQueue.d.ts +1 -1
  21. package/dist/approvalQueue.js.map +1 -1
  22. package/dist/automation.d.ts +45 -4
  23. package/dist/automation.js +123 -15
  24. package/dist/automation.js.map +1 -1
  25. package/dist/bridge.d.ts +10 -0
  26. package/dist/bridge.js +225 -46
  27. package/dist/bridge.js.map +1 -1
  28. package/dist/bridgeLockDiscovery.d.ts +16 -1
  29. package/dist/bridgeLockDiscovery.js +38 -4
  30. package/dist/bridgeLockDiscovery.js.map +1 -1
  31. package/dist/bridgeToolsRules.js +3 -18
  32. package/dist/bridgeToolsRules.js.map +1 -1
  33. package/dist/claudeAuthHttp.d.ts +25 -0
  34. package/dist/claudeAuthHttp.js +219 -0
  35. package/dist/claudeAuthHttp.js.map +1 -0
  36. package/dist/claudeDriver.js +4 -1
  37. package/dist/claudeDriver.js.map +1 -1
  38. package/dist/claudeOrchestrator.d.ts +15 -0
  39. package/dist/claudeOrchestrator.js +44 -0
  40. package/dist/claudeOrchestrator.js.map +1 -1
  41. package/dist/commands/connect.d.ts +47 -0
  42. package/dist/commands/connect.js +419 -0
  43. package/dist/commands/connect.js.map +1 -0
  44. package/dist/commands/install.js +3 -10
  45. package/dist/commands/install.js.map +1 -1
  46. package/dist/commands/launchd.d.ts +7 -0
  47. package/dist/commands/launchd.js +20 -2
  48. package/dist/commands/launchd.js.map +1 -1
  49. package/dist/commands/patchworkInit.d.ts +7 -0
  50. package/dist/commands/patchworkInit.js +26 -0
  51. package/dist/commands/patchworkInit.js.map +1 -1
  52. package/dist/commands/recipe.d.ts +59 -4
  53. package/dist/commands/recipe.js +206 -5
  54. package/dist/commands/recipe.js.map +1 -1
  55. package/dist/commands/recipeInstall.d.ts +9 -0
  56. package/dist/commands/recipeInstall.js +56 -3
  57. package/dist/commands/recipeInstall.js.map +1 -1
  58. package/dist/commands/task.d.ts +25 -0
  59. package/dist/commands/task.js +61 -41
  60. package/dist/commands/task.js.map +1 -1
  61. package/dist/commands/tokenEfficiency.d.ts +4 -0
  62. package/dist/commands/tokenEfficiency.js +23 -26
  63. package/dist/commands/tokenEfficiency.js.map +1 -1
  64. package/dist/commands/tracesExport.d.ts +15 -1
  65. package/dist/commands/tracesExport.js +39 -5
  66. package/dist/commands/tracesExport.js.map +1 -1
  67. package/dist/config.js +16 -0
  68. package/dist/config.js.map +1 -1
  69. package/dist/connectorRoutes.js +613 -62
  70. package/dist/connectorRoutes.js.map +1 -1
  71. package/dist/connectors/asana.js +9 -3
  72. package/dist/connectors/asana.js.map +1 -1
  73. package/dist/connectors/baseConnector.d.ts +16 -0
  74. package/dist/connectors/baseConnector.js +2 -0
  75. package/dist/connectors/baseConnector.js.map +1 -1
  76. package/dist/connectors/caldiy.js +34 -0
  77. package/dist/connectors/caldiy.js.map +1 -1
  78. package/dist/connectors/confluence.js +9 -2
  79. package/dist/connectors/confluence.js.map +1 -1
  80. package/dist/connectors/connectorActivity.d.ts +24 -0
  81. package/dist/connectors/connectorActivity.js +32 -0
  82. package/dist/connectors/connectorActivity.js.map +1 -0
  83. package/dist/connectors/connectorRedirectUri.js +22 -2
  84. package/dist/connectors/connectorRedirectUri.js.map +1 -1
  85. package/dist/connectors/connectorRegistry.d.ts +0 -3
  86. package/dist/connectors/connectorRegistry.js +8 -8
  87. package/dist/connectors/connectorRegistry.js.map +1 -1
  88. package/dist/connectors/datadog.js +8 -1
  89. package/dist/connectors/datadog.js.map +1 -1
  90. package/dist/connectors/discord.js +4 -3
  91. package/dist/connectors/discord.js.map +1 -1
  92. package/dist/connectors/elasticsearch.js +22 -0
  93. package/dist/connectors/elasticsearch.js.map +1 -1
  94. package/dist/connectors/github.d.ts +38 -0
  95. package/dist/connectors/github.js +91 -5
  96. package/dist/connectors/github.js.map +1 -1
  97. package/dist/connectors/gitlab.js +19 -16
  98. package/dist/connectors/gitlab.js.map +1 -1
  99. package/dist/connectors/gmail.d.ts +5 -0
  100. package/dist/connectors/gmail.js +53 -11
  101. package/dist/connectors/gmail.js.map +1 -1
  102. package/dist/connectors/googleCalendar.js +5 -4
  103. package/dist/connectors/googleCalendar.js.map +1 -1
  104. package/dist/connectors/googleDocs.js +7 -6
  105. package/dist/connectors/googleDocs.js.map +1 -1
  106. package/dist/connectors/googleDrive.js +15 -8
  107. package/dist/connectors/googleDrive.js.map +1 -1
  108. package/dist/connectors/grafana.js +39 -3
  109. package/dist/connectors/grafana.js.map +1 -1
  110. package/dist/connectors/jira.d.ts +1 -1
  111. package/dist/connectors/jira.js +19 -4
  112. package/dist/connectors/jira.js.map +1 -1
  113. package/dist/connectors/linear.js +2 -2
  114. package/dist/connectors/linear.js.map +1 -1
  115. package/dist/connectors/mcpClient.d.ts +29 -1
  116. package/dist/connectors/mcpClient.js +114 -44
  117. package/dist/connectors/mcpClient.js.map +1 -1
  118. package/dist/connectors/mcpOAuth.d.ts +1 -0
  119. package/dist/connectors/mcpOAuth.js +49 -4
  120. package/dist/connectors/mcpOAuth.js.map +1 -1
  121. package/dist/connectors/monday.js +5 -4
  122. package/dist/connectors/monday.js.map +1 -1
  123. package/dist/connectors/mongodb.js +32 -5
  124. package/dist/connectors/mongodb.js.map +1 -1
  125. package/dist/connectors/notion.d.ts +1 -1
  126. package/dist/connectors/notion.js +22 -6
  127. package/dist/connectors/notion.js.map +1 -1
  128. package/dist/connectors/oauthError.d.ts +17 -0
  129. package/dist/connectors/oauthError.js +50 -0
  130. package/dist/connectors/oauthError.js.map +1 -0
  131. package/dist/connectors/postgres.d.ts +7 -0
  132. package/dist/connectors/postgres.js +32 -2
  133. package/dist/connectors/postgres.js.map +1 -1
  134. package/dist/connectors/posthog.js +26 -0
  135. package/dist/connectors/posthog.js.map +1 -1
  136. package/dist/connectors/redis.d.ts +1 -0
  137. package/dist/connectors/redis.js +47 -20
  138. package/dist/connectors/redis.js.map +1 -1
  139. package/dist/connectors/salesforce.js +66 -5
  140. package/dist/connectors/salesforce.js.map +1 -1
  141. package/dist/connectors/sentry.js +2 -2
  142. package/dist/connectors/sentry.js.map +1 -1
  143. package/dist/connectors/slack.js +37 -14
  144. package/dist/connectors/slack.js.map +1 -1
  145. package/dist/connectors/snowflake.js +24 -0
  146. package/dist/connectors/snowflake.js.map +1 -1
  147. package/dist/connectors/stripe.js +9 -2
  148. package/dist/connectors/stripe.js.map +1 -1
  149. package/dist/connectors/supabase.js +34 -0
  150. package/dist/connectors/supabase.js.map +1 -1
  151. package/dist/connectors/tokenStorage.d.ts +20 -0
  152. package/dist/connectors/tokenStorage.js +196 -64
  153. package/dist/connectors/tokenStorage.js.map +1 -1
  154. package/dist/connectors/woocommerce.js +34 -0
  155. package/dist/connectors/woocommerce.js.map +1 -1
  156. package/dist/copilot/parseIntent.d.ts +58 -0
  157. package/dist/copilot/parseIntent.js +149 -0
  158. package/dist/copilot/parseIntent.js.map +1 -0
  159. package/dist/decisionReplay.d.ts +8 -6
  160. package/dist/decisionReplay.js +35 -11
  161. package/dist/decisionReplay.js.map +1 -1
  162. package/dist/decisionTraceLog.d.ts +9 -0
  163. package/dist/decisionTraceLog.js +6 -0
  164. package/dist/decisionTraceLog.js.map +1 -1
  165. package/dist/drivers/claude/api.js +49 -7
  166. package/dist/drivers/claude/api.js.map +1 -1
  167. package/dist/drivers/claude/envSanitizer.d.ts +9 -1
  168. package/dist/drivers/claude/envSanitizer.js +41 -3
  169. package/dist/drivers/claude/envSanitizer.js.map +1 -1
  170. package/dist/drivers/claude/streamParser.d.ts +13 -0
  171. package/dist/drivers/claude/streamParser.js.map +1 -1
  172. package/dist/drivers/claude/subprocess.js +131 -16
  173. package/dist/drivers/claude/subprocess.js.map +1 -1
  174. package/dist/drivers/claude/subprocessSettings.d.ts +1 -1
  175. package/dist/drivers/claude/subprocessSettings.js +18 -4
  176. package/dist/drivers/claude/subprocessSettings.js.map +1 -1
  177. package/dist/drivers/gemini/index.d.ts +13 -0
  178. package/dist/drivers/gemini/index.js +211 -67
  179. package/dist/drivers/gemini/index.js.map +1 -1
  180. package/dist/drivers/local/index.d.ts +2 -17
  181. package/dist/drivers/local/index.js +5 -92
  182. package/dist/drivers/local/index.js.map +1 -1
  183. package/dist/drivers/openai/index.js +69 -9
  184. package/dist/drivers/openai/index.js.map +1 -1
  185. package/dist/drivers/outputCap.d.ts +27 -0
  186. package/dist/drivers/outputCap.js +50 -0
  187. package/dist/drivers/outputCap.js.map +1 -0
  188. package/dist/embeddings/cosine.d.ts +23 -0
  189. package/dist/embeddings/cosine.js +59 -0
  190. package/dist/embeddings/cosine.js.map +1 -0
  191. package/dist/embeddings/index.d.ts +19 -0
  192. package/dist/embeddings/index.js +35 -0
  193. package/dist/embeddings/index.js.map +1 -0
  194. package/dist/embeddings/localEmbeddings.d.ts +29 -0
  195. package/dist/embeddings/localEmbeddings.js +103 -0
  196. package/dist/embeddings/localEmbeddings.js.map +1 -0
  197. package/dist/embeddings/localEndpoints.d.ts +24 -0
  198. package/dist/embeddings/localEndpoints.js +37 -0
  199. package/dist/embeddings/localEndpoints.js.map +1 -0
  200. package/dist/embeddings/types.d.ts +32 -0
  201. package/dist/embeddings/types.js +12 -0
  202. package/dist/embeddings/types.js.map +1 -0
  203. package/dist/featureFlags.d.ts +18 -0
  204. package/dist/featureFlags.js +32 -0
  205. package/dist/featureFlags.js.map +1 -1
  206. package/dist/fp/automationInterpreter.js +118 -39
  207. package/dist/fp/automationInterpreter.js.map +1 -1
  208. package/dist/fp/automationProgram.d.ts +10 -0
  209. package/dist/fp/automationProgram.js.map +1 -1
  210. package/dist/fp/automationState.d.ts +6 -0
  211. package/dist/fp/automationState.js +38 -0
  212. package/dist/fp/automationState.js.map +1 -1
  213. package/dist/fp/commandDescription.d.ts +6 -0
  214. package/dist/fp/commandDescription.js +18 -5
  215. package/dist/fp/commandDescription.js.map +1 -1
  216. package/dist/fp/interpreterContext.d.ts +16 -5
  217. package/dist/fp/interpreterContext.js +59 -3
  218. package/dist/fp/interpreterContext.js.map +1 -1
  219. package/dist/fp/policyParser.js +18 -8
  220. package/dist/fp/policyParser.js.map +1 -1
  221. package/dist/haltPushDispatch.d.ts +4 -0
  222. package/dist/haltPushDispatch.js +7 -22
  223. package/dist/haltPushDispatch.js.map +1 -1
  224. package/dist/inboxRoutes.js +2 -2
  225. package/dist/inboxRoutes.js.map +1 -1
  226. package/dist/index.js +672 -135
  227. package/dist/index.js.map +1 -1
  228. package/dist/installGuard.js +6 -0
  229. package/dist/installGuard.js.map +1 -1
  230. package/dist/localEndpointGuard.d.ts +25 -0
  231. package/dist/localEndpointGuard.js +101 -0
  232. package/dist/localEndpointGuard.js.map +1 -0
  233. package/dist/mcpRoutes.js +1 -1
  234. package/dist/mcpRoutes.js.map +1 -1
  235. package/dist/oauth.d.ts +13 -0
  236. package/dist/oauth.js +53 -9
  237. package/dist/oauth.js.map +1 -1
  238. package/dist/orchestrator/childBridgeClient.d.ts +7 -0
  239. package/dist/orchestrator/childBridgeClient.js +42 -1
  240. package/dist/orchestrator/childBridgeClient.js.map +1 -1
  241. package/dist/orchestrator/orchestratorBridge.d.ts +33 -0
  242. package/dist/orchestrator/orchestratorBridge.js +75 -9
  243. package/dist/orchestrator/orchestratorBridge.js.map +1 -1
  244. package/dist/patchworkConfig.d.ts +4 -0
  245. package/dist/patchworkConfig.js +33 -4
  246. package/dist/patchworkConfig.js.map +1 -1
  247. package/dist/probe.js +39 -5
  248. package/dist/probe.js.map +1 -1
  249. package/dist/recipeOrchestration.d.ts +59 -0
  250. package/dist/recipeOrchestration.js +314 -60
  251. package/dist/recipeOrchestration.js.map +1 -1
  252. package/dist/recipeRoutes.d.ts +93 -0
  253. package/dist/recipeRoutes.js +664 -27
  254. package/dist/recipeRoutes.js.map +1 -1
  255. package/dist/recipes/RecipeOrchestrator.d.ts +14 -0
  256. package/dist/recipes/RecipeOrchestrator.js +42 -2
  257. package/dist/recipes/RecipeOrchestrator.js.map +1 -1
  258. package/dist/recipes/agentExecutor.d.ts +51 -2
  259. package/dist/recipes/agentExecutor.js +86 -13
  260. package/dist/recipes/agentExecutor.js.map +1 -1
  261. package/dist/recipes/chainedRunner.d.ts +111 -3
  262. package/dist/recipes/chainedRunner.js +440 -45
  263. package/dist/recipes/chainedRunner.js.map +1 -1
  264. package/dist/recipes/compiler.js +42 -29
  265. package/dist/recipes/compiler.js.map +1 -1
  266. package/dist/recipes/connectorPreflight.js +31 -0
  267. package/dist/recipes/connectorPreflight.js.map +1 -1
  268. package/dist/recipes/dependencyGraph.d.ts +16 -0
  269. package/dist/recipes/dependencyGraph.js +37 -2
  270. package/dist/recipes/dependencyGraph.js.map +1 -1
  271. package/dist/recipes/eventTriggerPrograms.d.ts +36 -0
  272. package/dist/recipes/eventTriggerPrograms.js +158 -0
  273. package/dist/recipes/eventTriggerPrograms.js.map +1 -0
  274. package/dist/recipes/githubInstallSource.d.ts +9 -2
  275. package/dist/recipes/githubInstallSource.js +36 -6
  276. package/dist/recipes/githubInstallSource.js.map +1 -1
  277. package/dist/recipes/haltCategory.d.ts +10 -0
  278. package/dist/recipes/haltCategory.js +11 -1
  279. package/dist/recipes/haltCategory.js.map +1 -1
  280. package/dist/recipes/idempotencyKey.d.ts +30 -3
  281. package/dist/recipes/idempotencyKey.js +89 -5
  282. package/dist/recipes/idempotencyKey.js.map +1 -1
  283. package/dist/recipes/installer.js +12 -35
  284. package/dist/recipes/installer.js.map +1 -1
  285. package/dist/recipes/judgeVerdict.d.ts +11 -1
  286. package/dist/recipes/judgeVerdict.js +47 -7
  287. package/dist/recipes/judgeVerdict.js.map +1 -1
  288. package/dist/recipes/names.d.ts +5 -0
  289. package/dist/recipes/names.js +10 -5
  290. package/dist/recipes/names.js.map +1 -1
  291. package/dist/recipes/parser.js +74 -10
  292. package/dist/recipes/parser.js.map +1 -1
  293. package/dist/recipes/pricing/costRouter.d.ts +43 -0
  294. package/dist/recipes/pricing/costRouter.js +44 -0
  295. package/dist/recipes/pricing/costRouter.js.map +1 -0
  296. package/dist/recipes/pricing/priceTable.d.ts +76 -0
  297. package/dist/recipes/pricing/priceTable.js +144 -0
  298. package/dist/recipes/pricing/priceTable.js.map +1 -0
  299. package/dist/recipes/replayRun.js +5 -2
  300. package/dist/recipes/replayRun.js.map +1 -1
  301. package/dist/recipes/resolveRecipePath.js +15 -1
  302. package/dist/recipes/resolveRecipePath.js.map +1 -1
  303. package/dist/recipes/runBudget.d.ts +93 -32
  304. package/dist/recipes/runBudget.js +213 -49
  305. package/dist/recipes/runBudget.js.map +1 -1
  306. package/dist/recipes/runRegistry.d.ts +32 -0
  307. package/dist/recipes/runRegistry.js +54 -0
  308. package/dist/recipes/runRegistry.js.map +1 -0
  309. package/dist/recipes/scheduler.js +6 -2
  310. package/dist/recipes/scheduler.js.map +1 -1
  311. package/dist/recipes/schema.d.ts +59 -6
  312. package/dist/recipes/schemaGenerator.d.ts +9 -0
  313. package/dist/recipes/schemaGenerator.js +446 -77
  314. package/dist/recipes/schemaGenerator.js.map +1 -1
  315. package/dist/recipes/simulation/aggregateRunRisk.d.ts +46 -0
  316. package/dist/recipes/simulation/aggregateRunRisk.js +120 -0
  317. package/dist/recipes/simulation/aggregateRunRisk.js.map +1 -0
  318. package/dist/recipes/simulation/costProjector.d.ts +32 -0
  319. package/dist/recipes/simulation/costProjector.js +194 -0
  320. package/dist/recipes/simulation/costProjector.js.map +1 -0
  321. package/dist/recipes/simulation/sideEffects.d.ts +32 -0
  322. package/dist/recipes/simulation/sideEffects.js +62 -0
  323. package/dist/recipes/simulation/sideEffects.js.map +1 -0
  324. package/dist/recipes/simulation/simulate.d.ts +36 -0
  325. package/dist/recipes/simulation/simulate.js +264 -0
  326. package/dist/recipes/simulation/simulate.js.map +1 -0
  327. package/dist/recipes/simulation/simulateMockedRun.d.ts +52 -0
  328. package/dist/recipes/simulation/simulateMockedRun.js +84 -0
  329. package/dist/recipes/simulation/simulateMockedRun.js.map +1 -0
  330. package/dist/recipes/simulation/synthesizeMockedOutputs.d.ts +31 -0
  331. package/dist/recipes/simulation/synthesizeMockedOutputs.js +50 -0
  332. package/dist/recipes/simulation/synthesizeMockedOutputs.js.map +1 -0
  333. package/dist/recipes/simulation/types.d.ts +198 -0
  334. package/dist/recipes/simulation/types.js +30 -0
  335. package/dist/recipes/simulation/types.js.map +1 -0
  336. package/dist/recipes/stepObservation.d.ts +12 -0
  337. package/dist/recipes/stepObservation.js +21 -1
  338. package/dist/recipes/stepObservation.js.map +1 -1
  339. package/dist/recipes/toolRegistry.js +61 -24
  340. package/dist/recipes/toolRegistry.js.map +1 -1
  341. package/dist/recipes/tools/airtable.d.ts +15 -0
  342. package/dist/recipes/tools/airtable.js +240 -0
  343. package/dist/recipes/tools/airtable.js.map +1 -0
  344. package/dist/recipes/tools/caldiy.d.ts +13 -0
  345. package/dist/recipes/tools/caldiy.js +215 -0
  346. package/dist/recipes/tools/caldiy.js.map +1 -0
  347. package/dist/recipes/tools/circleci.d.ts +10 -0
  348. package/dist/recipes/tools/circleci.js +204 -0
  349. package/dist/recipes/tools/circleci.js.map +1 -0
  350. package/dist/recipes/tools/cloudflare.d.ts +13 -0
  351. package/dist/recipes/tools/cloudflare.js +211 -0
  352. package/dist/recipes/tools/cloudflare.js.map +1 -0
  353. package/dist/recipes/tools/confluence.js +11 -10
  354. package/dist/recipes/tools/confluence.js.map +1 -1
  355. package/dist/recipes/tools/datadog.js +13 -12
  356. package/dist/recipes/tools/datadog.js.map +1 -1
  357. package/dist/recipes/tools/docs.d.ts +18 -0
  358. package/dist/recipes/tools/docs.js +95 -0
  359. package/dist/recipes/tools/docs.js.map +1 -0
  360. package/dist/recipes/tools/elasticsearch.d.ts +11 -0
  361. package/dist/recipes/tools/elasticsearch.js +157 -0
  362. package/dist/recipes/tools/elasticsearch.js.map +1 -0
  363. package/dist/recipes/tools/fanOut.js +4 -4
  364. package/dist/recipes/tools/fanOut.js.map +1 -1
  365. package/dist/recipes/tools/figma.d.ts +12 -0
  366. package/dist/recipes/tools/figma.js +195 -0
  367. package/dist/recipes/tools/figma.js.map +1 -0
  368. package/dist/recipes/tools/file.js +43 -22
  369. package/dist/recipes/tools/file.js.map +1 -1
  370. package/dist/recipes/tools/github.js +162 -5
  371. package/dist/recipes/tools/github.js.map +1 -1
  372. package/dist/recipes/tools/gmail.js +45 -33
  373. package/dist/recipes/tools/gmail.js.map +1 -1
  374. package/dist/recipes/tools/grafana.d.ts +11 -0
  375. package/dist/recipes/tools/grafana.js +216 -0
  376. package/dist/recipes/tools/grafana.js.map +1 -0
  377. package/dist/recipes/tools/http.d.ts +1 -1
  378. package/dist/recipes/tools/http.js +10 -28
  379. package/dist/recipes/tools/http.js.map +1 -1
  380. package/dist/recipes/tools/hubspot.js +13 -12
  381. package/dist/recipes/tools/hubspot.js.map +1 -1
  382. package/dist/recipes/tools/index.d.ts +28 -0
  383. package/dist/recipes/tools/index.js +28 -0
  384. package/dist/recipes/tools/index.js.map +1 -1
  385. package/dist/recipes/tools/intercom.js +11 -10
  386. package/dist/recipes/tools/intercom.js.map +1 -1
  387. package/dist/recipes/tools/jira.js +13 -0
  388. package/dist/recipes/tools/jira.js.map +1 -1
  389. package/dist/recipes/tools/meetingNotes.js +2 -2
  390. package/dist/recipes/tools/monday.d.ts +22 -0
  391. package/dist/recipes/tools/monday.js +242 -0
  392. package/dist/recipes/tools/monday.js.map +1 -0
  393. package/dist/recipes/tools/mongodb.d.ts +19 -0
  394. package/dist/recipes/tools/mongodb.js +194 -0
  395. package/dist/recipes/tools/mongodb.js.map +1 -0
  396. package/dist/recipes/tools/notion.js +11 -10
  397. package/dist/recipes/tools/notion.js.map +1 -1
  398. package/dist/recipes/tools/obsidian.d.ts +15 -0
  399. package/dist/recipes/tools/obsidian.js +173 -0
  400. package/dist/recipes/tools/obsidian.js.map +1 -0
  401. package/dist/recipes/tools/outcomes.d.ts +15 -0
  402. package/dist/recipes/tools/outcomes.js +111 -0
  403. package/dist/recipes/tools/outcomes.js.map +1 -0
  404. package/dist/recipes/tools/paystack.d.ts +11 -0
  405. package/dist/recipes/tools/paystack.js +212 -0
  406. package/dist/recipes/tools/paystack.js.map +1 -0
  407. package/dist/recipes/tools/pipedrive.d.ts +16 -0
  408. package/dist/recipes/tools/pipedrive.js +234 -0
  409. package/dist/recipes/tools/pipedrive.js.map +1 -0
  410. package/dist/recipes/tools/postgres.d.ts +15 -0
  411. package/dist/recipes/tools/postgres.js +186 -0
  412. package/dist/recipes/tools/postgres.js.map +1 -0
  413. package/dist/recipes/tools/posthog.d.ts +16 -0
  414. package/dist/recipes/tools/posthog.js +219 -0
  415. package/dist/recipes/tools/posthog.js.map +1 -0
  416. package/dist/recipes/tools/redis.d.ts +9 -0
  417. package/dist/recipes/tools/redis.js +141 -0
  418. package/dist/recipes/tools/redis.js.map +1 -0
  419. package/dist/recipes/tools/resend.d.ts +8 -0
  420. package/dist/recipes/tools/resend.js +153 -0
  421. package/dist/recipes/tools/resend.js.map +1 -0
  422. package/dist/recipes/tools/salesforce.d.ts +16 -0
  423. package/dist/recipes/tools/salesforce.js +184 -0
  424. package/dist/recipes/tools/salesforce.js.map +1 -0
  425. package/dist/recipes/tools/sendgrid.d.ts +9 -0
  426. package/dist/recipes/tools/sendgrid.js +175 -0
  427. package/dist/recipes/tools/sendgrid.js.map +1 -0
  428. package/dist/recipes/tools/shopify.d.ts +16 -0
  429. package/dist/recipes/tools/shopify.js +266 -0
  430. package/dist/recipes/tools/shopify.js.map +1 -0
  431. package/dist/recipes/tools/snowflake.d.ts +16 -0
  432. package/dist/recipes/tools/snowflake.js +173 -0
  433. package/dist/recipes/tools/snowflake.js.map +1 -0
  434. package/dist/recipes/tools/stripe.js +13 -12
  435. package/dist/recipes/tools/stripe.js.map +1 -1
  436. package/dist/recipes/tools/supabase.d.ts +9 -0
  437. package/dist/recipes/tools/supabase.js +133 -0
  438. package/dist/recipes/tools/supabase.js.map +1 -0
  439. package/dist/recipes/tools/todoist.d.ts +15 -0
  440. package/dist/recipes/tools/todoist.js +228 -0
  441. package/dist/recipes/tools/todoist.js.map +1 -0
  442. package/dist/recipes/tools/twilio.d.ts +11 -0
  443. package/dist/recipes/tools/twilio.js +180 -0
  444. package/dist/recipes/tools/twilio.js.map +1 -0
  445. package/dist/recipes/tools/vercel.d.ts +9 -0
  446. package/dist/recipes/tools/vercel.js +146 -0
  447. package/dist/recipes/tools/vercel.js.map +1 -0
  448. package/dist/recipes/tools/webflow.d.ts +11 -0
  449. package/dist/recipes/tools/webflow.js +244 -0
  450. package/dist/recipes/tools/webflow.js.map +1 -0
  451. package/dist/recipes/tools/woocommerce.d.ts +18 -0
  452. package/dist/recipes/tools/woocommerce.js +260 -0
  453. package/dist/recipes/tools/woocommerce.js.map +1 -0
  454. package/dist/recipes/tools/wrapConnectorExecute.d.ts +25 -0
  455. package/dist/recipes/tools/wrapConnectorExecute.js +37 -0
  456. package/dist/recipes/tools/wrapConnectorExecute.js.map +1 -0
  457. package/dist/recipes/tools/zendesk.js +11 -10
  458. package/dist/recipes/tools/zendesk.js.map +1 -1
  459. package/dist/recipes/triggerVars.d.ts +15 -0
  460. package/dist/recipes/triggerVars.js +57 -0
  461. package/dist/recipes/triggerVars.js.map +1 -0
  462. package/dist/recipes/validation.d.ts +1 -1
  463. package/dist/recipes/validation.js +536 -12
  464. package/dist/recipes/validation.js.map +1 -1
  465. package/dist/recipes/yamlPositions.d.ts +1 -1
  466. package/dist/recipes/yamlPositions.js +7 -2
  467. package/dist/recipes/yamlPositions.js.map +1 -1
  468. package/dist/recipes/yamlRunner.d.ts +216 -4
  469. package/dist/recipes/yamlRunner.js +1030 -96
  470. package/dist/recipes/yamlRunner.js.map +1 -1
  471. package/dist/recipesHttp.d.ts +5 -0
  472. package/dist/recipesHttp.js +68 -6
  473. package/dist/recipesHttp.js.map +1 -1
  474. package/dist/resources.js +14 -1
  475. package/dist/resources.js.map +1 -1
  476. package/dist/riskSignals.d.ts +42 -0
  477. package/dist/riskSignals.js +197 -0
  478. package/dist/riskSignals.js.map +1 -0
  479. package/dist/riskTier.d.ts +9 -0
  480. package/dist/riskTier.js +48 -0
  481. package/dist/riskTier.js.map +1 -1
  482. package/dist/runLog.d.ts +53 -0
  483. package/dist/runLog.js +75 -16
  484. package/dist/runLog.js.map +1 -1
  485. package/dist/schemas/recipe.v1.json +360 -16
  486. package/dist/server.d.ts +60 -0
  487. package/dist/server.js +192 -31
  488. package/dist/server.js.map +1 -1
  489. package/dist/sessionCheckpoint.js +4 -1
  490. package/dist/sessionCheckpoint.js.map +1 -1
  491. package/dist/sessionDetail.d.ts +43 -0
  492. package/dist/sessionDetail.js +59 -0
  493. package/dist/sessionDetail.js.map +1 -0
  494. package/dist/settingsEnv.d.ts +47 -0
  495. package/dist/settingsEnv.js +88 -0
  496. package/dist/settingsEnv.js.map +1 -0
  497. package/dist/streamableHttp.js +44 -10
  498. package/dist/streamableHttp.js.map +1 -1
  499. package/dist/ta/backtest/abnday.d.ts +53 -0
  500. package/dist/ta/backtest/abnday.js +123 -0
  501. package/dist/ta/backtest/abnday.js.map +1 -0
  502. package/dist/ta/backtest/directional.d.ts +48 -0
  503. package/dist/ta/backtest/directional.js +103 -0
  504. package/dist/ta/backtest/directional.js.map +1 -0
  505. package/dist/ta/backtest/fundx.d.ts +67 -0
  506. package/dist/ta/backtest/fundx.js +264 -0
  507. package/dist/ta/backtest/fundx.js.map +1 -0
  508. package/dist/ta/backtest/fvg.d.ts +62 -0
  509. package/dist/ta/backtest/fvg.js +236 -0
  510. package/dist/ta/backtest/fvg.js.map +1 -0
  511. package/dist/ta/backtest/ichimoku.d.ts +41 -0
  512. package/dist/ta/backtest/ichimoku.js +146 -0
  513. package/dist/ta/backtest/ichimoku.js.map +1 -0
  514. package/dist/ta/backtest/ingest.d.ts +20 -0
  515. package/dist/ta/backtest/ingest.js +104 -0
  516. package/dist/ta/backtest/ingest.js.map +1 -0
  517. package/dist/ta/backtest/msb.d.ts +49 -0
  518. package/dist/ta/backtest/msb.js +162 -0
  519. package/dist/ta/backtest/msb.js.map +1 -0
  520. package/dist/ta/backtest/scoring.d.ts +33 -0
  521. package/dist/ta/backtest/scoring.js +82 -0
  522. package/dist/ta/backtest/scoring.js.map +1 -0
  523. package/dist/ta/backtest/summary.d.ts +20 -0
  524. package/dist/ta/backtest/summary.js +42 -0
  525. package/dist/ta/backtest/summary.js.map +1 -0
  526. package/dist/ta/backtest/tsmom.d.ts +72 -0
  527. package/dist/ta/backtest/tsmom.js +202 -0
  528. package/dist/ta/backtest/tsmom.js.map +1 -0
  529. package/dist/ta/backtest/volsq.d.ts +34 -0
  530. package/dist/ta/backtest/volsq.js +154 -0
  531. package/dist/ta/backtest/volsq.js.map +1 -0
  532. package/dist/ta/backtest/walkForward.d.ts +45 -0
  533. package/dist/ta/backtest/walkForward.js +136 -0
  534. package/dist/ta/backtest/walkForward.js.map +1 -0
  535. package/dist/ta/cycles.d.ts +15 -0
  536. package/dist/ta/cycles.js +31 -0
  537. package/dist/ta/cycles.js.map +1 -0
  538. package/dist/ta/desk/accrualEmitter.d.ts +59 -0
  539. package/dist/ta/desk/accrualEmitter.js +136 -0
  540. package/dist/ta/desk/accrualEmitter.js.map +1 -0
  541. package/dist/ta/desk/cellBacktest.d.ts +179 -0
  542. package/dist/ta/desk/cellBacktest.js +514 -0
  543. package/dist/ta/desk/cellBacktest.js.map +1 -0
  544. package/dist/ta/desk/cells/wpMaRejection.d.ts +49 -0
  545. package/dist/ta/desk/cells/wpMaRejection.js +141 -0
  546. package/dist/ta/desk/cells/wpMaRejection.js.map +1 -0
  547. package/dist/ta/desk/cells/wpVolumeClimax.d.ts +57 -0
  548. package/dist/ta/desk/cells/wpVolumeClimax.js +193 -0
  549. package/dist/ta/desk/cells/wpVolumeClimax.js.map +1 -0
  550. package/dist/ta/desk/collectors.d.ts +18 -0
  551. package/dist/ta/desk/collectors.js +450 -0
  552. package/dist/ta/desk/collectors.js.map +1 -0
  553. package/dist/ta/desk/contract.d.ts +51 -0
  554. package/dist/ta/desk/contract.js +261 -0
  555. package/dist/ta/desk/contract.js.map +1 -0
  556. package/dist/ta/desk/deskLedger.d.ts +36 -0
  557. package/dist/ta/desk/deskLedger.js +239 -0
  558. package/dist/ta/desk/deskLedger.js.map +1 -0
  559. package/dist/ta/desk/liqTape.d.ts +37 -0
  560. package/dist/ta/desk/liqTape.js +99 -0
  561. package/dist/ta/desk/liqTape.js.map +1 -0
  562. package/dist/ta/desk/post.d.ts +20 -0
  563. package/dist/ta/desk/post.js +65 -0
  564. package/dist/ta/desk/post.js.map +1 -0
  565. package/dist/ta/desk/render.d.ts +25 -0
  566. package/dist/ta/desk/render.js +398 -0
  567. package/dist/ta/desk/render.js.map +1 -0
  568. package/dist/ta/desk/surfaces.d.ts +216 -0
  569. package/dist/ta/desk/surfaces.js +472 -0
  570. package/dist/ta/desk/surfaces.js.map +1 -0
  571. package/dist/ta/desk/types.d.ts +174 -0
  572. package/dist/ta/desk/types.js +104 -0
  573. package/dist/ta/desk/types.js.map +1 -0
  574. package/dist/ta/index.d.ts +23 -0
  575. package/dist/ta/index.js +54 -0
  576. package/dist/ta/index.js.map +1 -0
  577. package/dist/ta/ledger.d.ts +44 -0
  578. package/dist/ta/ledger.js +95 -0
  579. package/dist/ta/ledger.js.map +1 -0
  580. package/dist/ta/levels.d.ts +21 -0
  581. package/dist/ta/levels.js +41 -0
  582. package/dist/ta/levels.js.map +1 -0
  583. package/dist/ta/swings.d.ts +30 -0
  584. package/dist/ta/swings.js +83 -0
  585. package/dist/ta/swings.js.map +1 -0
  586. package/dist/ta/types.d.ts +81 -0
  587. package/dist/ta/types.js +20 -0
  588. package/dist/ta/types.js.map +1 -0
  589. package/dist/telemetry.js +20 -9
  590. package/dist/telemetry.js.map +1 -1
  591. package/dist/tokenUsageTracker.d.ts +2 -1
  592. package/dist/tokenUsageTracker.js +38 -20
  593. package/dist/tokenUsageTracker.js.map +1 -1
  594. package/dist/tools/contextBundle.js +13 -9
  595. package/dist/tools/contextBundle.js.map +1 -1
  596. package/dist/tools/ctxGetTaskContext.js +8 -3
  597. package/dist/tools/ctxGetTaskContext.js.map +1 -1
  598. package/dist/tools/ctxQueryTraces.d.ts +18 -1
  599. package/dist/tools/ctxQueryTraces.js +176 -27
  600. package/dist/tools/ctxQueryTraces.js.map +1 -1
  601. package/dist/tools/enrichCommit.js +5 -2
  602. package/dist/tools/enrichCommit.js.map +1 -1
  603. package/dist/tools/getDependencyTree.js +2 -2
  604. package/dist/tools/getDependencyTree.js.map +1 -1
  605. package/dist/tools/getDiagnostics.js +3 -0
  606. package/dist/tools/getDiagnostics.js.map +1 -1
  607. package/dist/tools/getDocumentSymbols.js +5 -1
  608. package/dist/tools/getDocumentSymbols.js.map +1 -1
  609. package/dist/tools/getGitHotspots.js +12 -1
  610. package/dist/tools/getGitHotspots.js.map +1 -1
  611. package/dist/tools/getGitLog.js +5 -2
  612. package/dist/tools/getGitLog.js.map +1 -1
  613. package/dist/tools/getGitStatus.js +6 -1
  614. package/dist/tools/getGitStatus.js.map +1 -1
  615. package/dist/tools/getProjectContext.js +3 -1
  616. package/dist/tools/getProjectContext.js.map +1 -1
  617. package/dist/tools/getToolCapabilities.js +39 -4
  618. package/dist/tools/getToolCapabilities.js.map +1 -1
  619. package/dist/tools/gitWrite.js +12 -3
  620. package/dist/tools/gitWrite.js.map +1 -1
  621. package/dist/tools/github/composite.d.ts +1 -1
  622. package/dist/tools/github/composite.js +7 -7
  623. package/dist/tools/github/composite.js.map +1 -1
  624. package/dist/tools/github/pr.d.ts +6 -6
  625. package/dist/tools/github/pr.js +18 -11
  626. package/dist/tools/github/pr.js.map +1 -1
  627. package/dist/tools/httpClient.js +55 -3
  628. package/dist/tools/httpClient.js.map +1 -1
  629. package/dist/tools/index.d.ts +2 -1
  630. package/dist/tools/index.js +19 -12
  631. package/dist/tools/index.js.map +1 -1
  632. package/dist/tools/lsp.d.ts +6 -0
  633. package/dist/tools/lsp.js +81 -12
  634. package/dist/tools/lsp.js.map +1 -1
  635. package/dist/tools/previewEdit.js +16 -1
  636. package/dist/tools/previewEdit.js.map +1 -1
  637. package/dist/tools/resumeClaudeTask.js +17 -0
  638. package/dist/tools/resumeClaudeTask.js.map +1 -1
  639. package/dist/tools/searchAndReplace.js +9 -5
  640. package/dist/tools/searchAndReplace.js.map +1 -1
  641. package/dist/tools/searchTools.d.ts +26 -0
  642. package/dist/tools/searchTools.js +42 -2
  643. package/dist/tools/searchTools.js.map +1 -1
  644. package/dist/tools/terminal.js +23 -51
  645. package/dist/tools/terminal.js.map +1 -1
  646. package/dist/tools/transaction.d.ts +9 -1
  647. package/dist/tools/transaction.js +59 -4
  648. package/dist/tools/transaction.js.map +1 -1
  649. package/dist/tools/utils.d.ts +16 -0
  650. package/dist/tools/utils.js +77 -7
  651. package/dist/tools/utils.js.map +1 -1
  652. package/dist/transport.d.ts +31 -0
  653. package/dist/transport.js +117 -14
  654. package/dist/transport.js.map +1 -1
  655. package/dist/wireHaltPushDispatch.js +12 -0
  656. package/dist/wireHaltPushDispatch.js.map +1 -1
  657. package/dist/workerGateDecisionLog.d.ts +141 -0
  658. package/dist/workerGateDecisionLog.js +361 -0
  659. package/dist/workerGateDecisionLog.js.map +1 -0
  660. package/dist/workers/actionClass.d.ts +38 -0
  661. package/dist/workers/actionClass.js +155 -0
  662. package/dist/workers/actionClass.js.map +1 -0
  663. package/dist/workers/backtest.d.ts +68 -0
  664. package/dist/workers/backtest.js +113 -0
  665. package/dist/workers/backtest.js.map +1 -0
  666. package/dist/workers/contextRisk.d.ts +35 -0
  667. package/dist/workers/contextRisk.js +20 -0
  668. package/dist/workers/contextRisk.js.map +1 -0
  669. package/dist/workers/contextRiskScorer.d.ts +48 -0
  670. package/dist/workers/contextRiskScorer.js +94 -0
  671. package/dist/workers/contextRiskScorer.js.map +1 -0
  672. package/dist/workers/graduation.d.ts +61 -0
  673. package/dist/workers/graduation.js +112 -0
  674. package/dist/workers/graduation.js.map +1 -0
  675. package/dist/workers/outcomeStore.d.ts +98 -0
  676. package/dist/workers/outcomeStore.js +146 -0
  677. package/dist/workers/outcomeStore.js.map +1 -0
  678. package/dist/workers/outcomesCli.d.ts +34 -0
  679. package/dist/workers/outcomesCli.js +91 -0
  680. package/dist/workers/outcomesCli.js.map +1 -0
  681. package/dist/workers/runWorkerShadow.d.ts +90 -0
  682. package/dist/workers/runWorkerShadow.js +323 -0
  683. package/dist/workers/runWorkerShadow.js.map +1 -0
  684. package/dist/workers/shadowGate.d.ts +30 -0
  685. package/dist/workers/shadowGate.js +58 -0
  686. package/dist/workers/shadowGate.js.map +1 -0
  687. package/dist/workers/shadowObserver.d.ts +165 -0
  688. package/dist/workers/shadowObserver.js +203 -0
  689. package/dist/workers/shadowObserver.js.map +1 -0
  690. package/dist/workers/shadowReport.d.ts +16 -0
  691. package/dist/workers/shadowReport.js +61 -0
  692. package/dist/workers/shadowReport.js.map +1 -0
  693. package/dist/workers/shadowRun.d.ts +38 -0
  694. package/dist/workers/shadowRun.js +44 -0
  695. package/dist/workers/shadowRun.js.map +1 -0
  696. package/dist/workers/trustLevel.d.ts +82 -0
  697. package/dist/workers/trustLevel.js +100 -0
  698. package/dist/workers/trustLevel.js.map +1 -0
  699. package/dist/workers/worker.d.ts +49 -0
  700. package/dist/workers/worker.js +88 -0
  701. package/dist/workers/worker.js.map +1 -0
  702. package/dist/workers/workerGate.d.ts +101 -0
  703. package/dist/workers/workerGate.js +210 -0
  704. package/dist/workers/workerGate.js.map +1 -0
  705. package/dist/workers/workerLevelStore.d.ts +33 -0
  706. package/dist/workers/workerLevelStore.js +87 -0
  707. package/dist/workers/workerLevelStore.js.map +1 -0
  708. package/dist/workers/workerLoader.d.ts +7 -0
  709. package/dist/workers/workerLoader.js +31 -0
  710. package/dist/workers/workerLoader.js.map +1 -0
  711. package/dist/writeFileAtomic.js +40 -13
  712. package/dist/writeFileAtomic.js.map +1 -1
  713. package/package.json +14 -6
  714. package/scripts/mcp-stdio-shim.cjs +247 -87
  715. package/templates/CLAUDE.bridge.md +1 -1
  716. package/templates/recipes/dependency-bump.yaml +33 -0
  717. package/templates/recipes/incident-to-pr.yaml +187 -0
  718. package/templates/recipes/outcome-ingester.yaml +53 -0
  719. package/templates/recipes/release-notes.yaml +30 -0
  720. package/templates/recipes/triage-failing-tests-autofile.yaml +152 -0
  721. package/templates/recipes/triage-failing-tests.yaml +38 -0
  722. package/templates/workers/dependency-upkeep.worker.yaml +26 -0
  723. package/templates/workers/release-notes.worker.yaml +17 -0
  724. package/templates/workers/test-guardian.worker.yaml +24 -0
  725. package/deploy/README.md +0 -172
  726. package/deploy/bootstrap-new-vps.sh +0 -364
  727. package/deploy/bootstrap-vps.sh +0 -192
  728. package/deploy/claude-ide-bridge.service.template +0 -67
  729. package/deploy/claude-ide-bridge@.service +0 -31
  730. package/deploy/deploy-dashboard.sh +0 -198
  731. package/deploy/deploy-landing.sh +0 -136
  732. package/deploy/ecosystem.config.js.example +0 -36
  733. package/deploy/install-vps-service.sh +0 -240
  734. package/deploy/macos/README.md +0 -153
  735. package/deploy/macos/com.patchwork.bridge.plist.template +0 -54
  736. package/deploy/macos/com.patchwork.tunnel.plist.template +0 -76
  737. package/deploy/macos/install-mac-bridge.sh +0 -244
  738. package/deploy/macos/uninstall-mac-bridge.sh +0 -22
  739. package/deploy/nginx-claude-bridge.conf.template +0 -129
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surfaces.js","sourceRoot":"","sources":["../../../src/ta/desk/surfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * QUMO-style Honest Desk — shared types for the off-box engine.
3
+ *
4
+ * See /tmp/qumo-design/DESIGN.md §3 (data contract) + §4 (honesty matrix).
5
+ * The engine emits a FLAT object of pre-rendered compact markdown-fragment
6
+ * strings (one per surface) + numbersIndex, asserted < 7000 bytes before POST.
7
+ * No nested objects/arrays on the wire (yamlRunner.ts:2369 has no array-index
8
+ * support; recipeOrchestration.ts:420 truncates the payload at 8000 chars).
9
+ */
10
+ import type { Candle } from "../types.js";
11
+ /** Per-feed health state. `offline-paid` = no free source in v1 (permanent). */
12
+ export type FeedState = "live" | "stale" | "offline" | "offline-paid" | "offline-deferred";
13
+ /** A single collector result. `value` is null on failure (degrade visibly). */
14
+ export interface FeedResult<T = unknown> {
15
+ value: T | null;
16
+ asOf: string | null;
17
+ source: string;
18
+ state: FeedState;
19
+ }
20
+ /** The closed desk-posture vocabulary (the user's one authorized addition). */
21
+ export type Posture = "Holding" | "Holding-defensive" | "Standing aside" | "Watching X" | "Alarm fired";
22
+ export declare const ALLOWED_POSTURES: readonly Posture[];
23
+ /** A user-supplied hypothetical trade (watched file ~/.patchwork/qumo-trade.json). */
24
+ export interface QumoTrade {
25
+ symbol: string;
26
+ side: "long" | "short";
27
+ entry: number;
28
+ stop: number;
29
+ target: number;
30
+ leverage: number;
31
+ timeframe?: string;
32
+ }
33
+ /** The full set of collected feeds the surfaces read. */
34
+ export interface Collected {
35
+ /** BTC 1d candles (price-only validated substrate). */
36
+ btc1d: FeedResult<Candle[]>;
37
+ /** 24h percent change for BTC (verbatim). */
38
+ btc24hPct: FeedResult<number>;
39
+ /** Current funding rate (fraction, e.g. -0.00006). */
40
+ funding: FeedResult<number>;
41
+ /** Taker buy ratio percent (archived, no lean). */
42
+ takerBuyPct: FeedResult<number>;
43
+ /** Global crowd long percent (archived, no lean). */
44
+ crowdLongPct: FeedResult<number>;
45
+ /** OI change percent first→last (archived, no lean). */
46
+ oiChangePct: FeedResult<number>;
47
+ /** Latest absolute perp-OI notional ($) — last sumOpenInterestValue (reused). */
48
+ oiNotional: FeedResult<number>;
49
+ /** Fear & Greed value 0-100. */
50
+ feargreed: FeedResult<number>;
51
+ /** Breadth: spot price map (alt-universe). */
52
+ breadth: FeedResult<{
53
+ green: number;
54
+ red: number;
55
+ universe: number;
56
+ }>;
57
+ /** Atlas: CoinGecko categories 24h sector returns + leader symbols. */
58
+ atlas: FeedResult<SectorRow[]>;
59
+ /** Order-book depth snapshot (Binance USDM futures, BTC v1). */
60
+ depth: FeedResult<DepthBook>;
61
+ /** Deribit BTC options book summary (front-expiry max-pain). */
62
+ options: FeedResult<OptionRow[]>;
63
+ }
64
+ /** Raw order-book depth snapshot — price/qty already numeric (BTC qty). */
65
+ export interface DepthBook {
66
+ /** [price, qtyBtc] ascending-by-relevance bids (highest price first). */
67
+ bids: Array<[number, number]>;
68
+ /** [price, qtyBtc] asks (lowest price first). */
69
+ asks: Array<[number, number]>;
70
+ }
71
+ /** One parsed Deribit option instrument (front-expiry filtering done in surface). */
72
+ export interface OptionRow {
73
+ /** Strike price in USD. */
74
+ strike: number;
75
+ /** "C" | "P". */
76
+ kind: "C" | "P";
77
+ /** Expiry token as parsed from instrument_name (e.g. "27JUN26"). */
78
+ expiry: string;
79
+ /** Expiry as ms epoch (for nearest-front selection). */
80
+ expiryMs: number;
81
+ /** Open interest in BTC. */
82
+ openInterest: number;
83
+ }
84
+ export interface SectorRow {
85
+ name: string;
86
+ /** 24h market-cap change percent — the honest realized number /coins/categories serves. */
87
+ change24hPct: number;
88
+ /** Leader coin symbols only (location); the free endpoint serves NO per-leader %. */
89
+ leaders: string[];
90
+ }
91
+ /** Provenance kinds for every numbersIndex token. */
92
+ export type Provenance = "det" | "live-feed" | "matured-ledger";
93
+ /** A numeric token with its provenance (the byte-level traceability spine). */
94
+ export interface NumberToken {
95
+ token: string;
96
+ provenance: Provenance;
97
+ }
98
+ /** What the engine assembles per surface before rendering numbersIndex. */
99
+ export interface SurfaceFragment {
100
+ md: string;
101
+ /** numeric tokens emitted by this fragment (each provenance-backed). */
102
+ numbers: NumberToken[];
103
+ }
104
+ /** The flat payload POSTed to /hooks/qumo-desk. */
105
+ export interface QumoPayload {
106
+ schemaVersion: 1;
107
+ generatedAt: string;
108
+ asOfData: string;
109
+ feedHealthMd: string;
110
+ allowedPostures: string;
111
+ todaysReadMd: string;
112
+ rektShieldMd: string;
113
+ btcDnaMd: string;
114
+ atlasMd: string;
115
+ depthMd: string;
116
+ maxPainMd: string;
117
+ liqGeoMd: string;
118
+ liqTapeMd?: string;
119
+ ledgerMd: string;
120
+ navMd: string;
121
+ numbersIndex: string;
122
+ }
123
+ /** Banned field/token names — assertion aborts the POST if any appears. */
124
+ export declare const BANNED_TOKENS: readonly string[];
125
+ /**
126
+ * Falsified/banned claim names + magnet/reversion English — never shown as a
127
+ * positive cell or lean. Mirrors the recipe judge rubric so the deterministic
128
+ * engine assert is at least as strict as the advertised moat (no longer relies
129
+ * on the fail-soft Sonnet judge to catch these). Matched as whole identifiers /
130
+ * word-runs, and exempted ONLY inside an explicit closed/location audit label.
131
+ */
132
+ export declare const BANNED_CLAIM_VOCAB: readonly string[];
133
+ /** Ledger cell render state. */
134
+ export type CellStatus = "GRADED" | "WATCH" | "FALSIFIED" | "BANNED" | "PENDING";
135
+ /** A single ledger cell (real ScoreSummary fields only; no R / no grade). */
136
+ export interface LedgerCell {
137
+ type: string;
138
+ timeframe: string;
139
+ status: CellStatus;
140
+ matured?: number;
141
+ scorable?: number;
142
+ holds?: number;
143
+ holdRate?: number;
144
+ baselineRate?: number;
145
+ edge?: number;
146
+ /** WATCH (altsetup arms): decided per arm toward the gate. */
147
+ decided?: number;
148
+ gate?: number;
149
+ /** GRADED altsetup arms: permutation p. */
150
+ permutationP?: number;
151
+ note?: string;
152
+ }
153
+ export declare const SCHEMA_VERSION: 1;
154
+ export declare const PAYLOAD_BYTE_BUDGET = 7000;
155
+ /**
156
+ * Extract every narrated NUMERIC CLAIM from a markdown surface — i.e. every
157
+ * number that asserts a fact and therefore MUST trace to numbersIndex. Excludes
158
+ * three identifier/label classes that are NOT numeric claims and so are exempt:
159
+ *
160
+ * 1. ISO date-times (`YYYY-MM-DD[THH:MM:SS…]`) — temporal labels. The engine
161
+ * normalises EVERY date (incl. the Deribit DDMMMYY option expiry) to ISO
162
+ * before rendering, so this single rule covers the whole temporal class.
163
+ * 2. Alphanumeric identifiers — any digit glued to a letter: timeframe/window
164
+ * labels (`4h`, `24h`, `1d`), sector names (`Layer 1`→`L1`, `Web3`), leader
165
+ * tickers (`C98`, `1INCH`), and the legacy `27JUN26` expiry token. These
166
+ * are names, not claims. Bounding numeric tokens by non-letter edges is the
167
+ * principled "claim vs identifier" line.
168
+ * 3. Numeric ranges (`2-8`, `64321.5-65500`): the joining hyphen is a
169
+ * separator, not a sign, so the second operand is not a negative number.
170
+ *
171
+ * What survives is exactly the standalone fact numbers (`65000`, `1.18`,
172
+ * `2691.2`, `19.5`, `-12.3456`, `999`) the byte-traceability spine must back.
173
+ */
174
+ export declare function narratedNumbers(markdown: string): string[];
@@ -0,0 +1,104 @@
1
+ /**
2
+ * QUMO-style Honest Desk — shared types for the off-box engine.
3
+ *
4
+ * See /tmp/qumo-design/DESIGN.md §3 (data contract) + §4 (honesty matrix).
5
+ * The engine emits a FLAT object of pre-rendered compact markdown-fragment
6
+ * strings (one per surface) + numbersIndex, asserted < 7000 bytes before POST.
7
+ * No nested objects/arrays on the wire (yamlRunner.ts:2369 has no array-index
8
+ * support; recipeOrchestration.ts:420 truncates the payload at 8000 chars).
9
+ */
10
+ export const ALLOWED_POSTURES = [
11
+ "Holding",
12
+ "Holding-defensive",
13
+ "Standing aside",
14
+ "Watching X",
15
+ "Alarm fired",
16
+ ];
17
+ /** Banned field/token names — assertion aborts the POST if any appears. */
18
+ export const BANNED_TOKENS = [
19
+ "probabilityPct",
20
+ "confScore",
21
+ "dangerScore",
22
+ "strandScore",
23
+ "sweepPct",
24
+ "grade",
25
+ "avgR",
26
+ "totalR",
27
+ "weightedWinPct",
28
+ ];
29
+ /**
30
+ * Falsified/banned claim names + magnet/reversion English — never shown as a
31
+ * positive cell or lean. Mirrors the recipe judge rubric so the deterministic
32
+ * engine assert is at least as strict as the advertised moat (no longer relies
33
+ * on the fail-soft Sonnet judge to catch these). Matched as whole identifiers /
34
+ * word-runs, and exempted ONLY inside an explicit closed/location audit label.
35
+ */
36
+ export const BANNED_CLAIM_VOCAB = [
37
+ "ichimoku",
38
+ "tenkan",
39
+ "kijun",
40
+ "kumo",
41
+ "chikou",
42
+ "price-fifty",
43
+ "price-thirds",
44
+ "seeks",
45
+ "magnet",
46
+ "reverts to",
47
+ "draws toward",
48
+ "due at",
49
+ "gravitates",
50
+ "pins toward",
51
+ "pin toward",
52
+ "pulls toward",
53
+ ];
54
+ export const SCHEMA_VERSION = 1;
55
+ export const PAYLOAD_BYTE_BUDGET = 7000;
56
+ /**
57
+ * The numbers spine's date/time-exempt class. A narrated number is exempt from
58
+ * the numbersIndex requirement ONLY when it is part of a canonical ISO
59
+ * date-time — `YYYY-MM-DD` optionally followed by `THH:MM:SS(.sss)(Z|±hh:mm)`.
60
+ * This is the SOLE temporal format any surface may print — the engine
61
+ * normalises every date (incl. the Deribit DDMMMYY option expiry) to ISO before
62
+ * rendering, so this one rule fully covers the temporal class (date AND the
63
+ * time-of-day fragments of a grade-at timestamp). Shared by the runtime contract
64
+ * assert (printed-number → index) and the CI grep test so they can never drift.
65
+ */
66
+ const ISO_DATETIME_RE = /\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})?)?/g;
67
+ /**
68
+ * Extract every narrated NUMERIC CLAIM from a markdown surface — i.e. every
69
+ * number that asserts a fact and therefore MUST trace to numbersIndex. Excludes
70
+ * three identifier/label classes that are NOT numeric claims and so are exempt:
71
+ *
72
+ * 1. ISO date-times (`YYYY-MM-DD[THH:MM:SS…]`) — temporal labels. The engine
73
+ * normalises EVERY date (incl. the Deribit DDMMMYY option expiry) to ISO
74
+ * before rendering, so this single rule covers the whole temporal class.
75
+ * 2. Alphanumeric identifiers — any digit glued to a letter: timeframe/window
76
+ * labels (`4h`, `24h`, `1d`), sector names (`Layer 1`→`L1`, `Web3`), leader
77
+ * tickers (`C98`, `1INCH`), and the legacy `27JUN26` expiry token. These
78
+ * are names, not claims. Bounding numeric tokens by non-letter edges is the
79
+ * principled "claim vs identifier" line.
80
+ * 3. Numeric ranges (`2-8`, `64321.5-65500`): the joining hyphen is a
81
+ * separator, not a sign, so the second operand is not a negative number.
82
+ *
83
+ * What survives is exactly the standalone fact numbers (`65000`, `1.18`,
84
+ * `2691.2`, `19.5`, `-12.3456`, `999`) the byte-traceability spine must back.
85
+ */
86
+ export function narratedNumbers(markdown) {
87
+ // 1. blank ISO date-times (incl. their H:M:S + hyphen fragments).
88
+ const dateless = markdown.replace(ISO_DATETIME_RE, " ");
89
+ // 2. peel SCALE-UNIT suffixes off fact numbers FIRST: `$5m`, `$30m`, `2.5k`,
90
+ // `1.2b` → the trailing m/k/b is a magnitude unit, the digits are the FACT
91
+ // and MUST still be traced. Strip the unit letter so the number survives
92
+ // step 3's identifier blanking. (Percent uses `%`, not a letter, so it is
93
+ // already safe.) Bounded by a word edge so it never eats a real identifier.
94
+ const unitless = dateless.replace(/(\d+(?:\.\d+)?)[mkb](?![A-Za-z0-9])/gi, "$1 ");
95
+ // 3. blank alphanumeric identifier tokens — a maximal [A-Za-z0-9]+ run that
96
+ // mixes letters AND digits (timeframes `4h`/`1d`, windows `24h`, tickers
97
+ // `C98`/`1INCH`, sector tags `L1`/`Web3`, legacy `27JUN26`). NOT preceded
98
+ // by `<digit>.` so the fractional tail of a decimal is not consumed.
99
+ const identifierless = unitless.replace(/(?<!\d\.)\b(?=[A-Za-z0-9]*[A-Za-z])(?=[A-Za-z0-9]*\d)[A-Za-z0-9]+\b/g, " ");
100
+ // 4. de-range: digit(.digit)? '-' digit → the hyphen is a separator.
101
+ const deranged = identifierless.replace(/(\d(?:\.\d+)?)-(?=\d)/g, "$1 ");
102
+ return deranged.match(/-?\d+(?:\.\d+)?/g) ?? [];
103
+ }
104
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ta/desk/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA4BH,MAAM,CAAC,MAAM,gBAAgB,GAAuB;IAClD,SAAS;IACT,mBAAmB;IACnB,gBAAgB;IAChB,YAAY;IACZ,aAAa;CACL,CAAC;AA8GX,2EAA2E;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAsB;IAC9C,gBAAgB;IAChB,WAAW;IACX,aAAa;IACb,aAAa;IACb,UAAU;IACV,OAAO;IACP,MAAM;IACN,QAAQ;IACR,gBAAgB;CACR,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,aAAa;IACb,cAAc;IACd,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,cAAc;CACN,CAAC;AA6BX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAU,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,eAAe,GACnB,gFAAgF,CAAC;AAEnF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,kEAAkE;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACxD,6EAA6E;IAC7E,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAC/B,uCAAuC,EACvC,KAAK,CACN,CAAC;IACF,4EAA4E;IAC5E,4EAA4E;IAC5E,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CACrC,sEAAsE,EACtE,GAAG,CACJ,CAAC;IACF,qEAAqE;IACrE,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;IACzE,OAAO,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TA-cycles signal orchestrator.
3
+ *
4
+ * `computeSignals` runs the frozen rule set over a candle series and returns
5
+ * the current price levels (from the most recent confirmed swing-low →
6
+ * swing-high range) and the time-cycle pivots projected from the most recent
7
+ * reversal. For a walk-forward backtest, pass a slice of candles ending at the
8
+ * cursor — the no-lookahead guarantee is structural (detectSwings excludes the
9
+ * trailing N bars).
10
+ */
11
+ import { type Candle, type SignalResult, type Timeframe } from "./types.js";
12
+ export interface ComputeOptions {
13
+ timeframe: Timeframe;
14
+ /** Fractal half-width. Default 2 (5-bar). Pinned by METHOD_VERSION. */
15
+ fractalN?: number;
16
+ /** Ladder depth in R/3 steps. Default 9. */
17
+ maxK?: number;
18
+ }
19
+ export declare function computeSignals(candles: Candle[], opts: ComputeOptions): SignalResult;
20
+ export { projectTimePivots } from "./cycles.js";
21
+ export { computeLevels, FOURTH_LEVEL_TOP_HINT } from "./levels.js";
22
+ export { detectSwings, latestReversal, latestSwing } from "./swings.js";
23
+ export * from "./types.js";
@@ -0,0 +1,54 @@
1
+ /**
2
+ * TA-cycles signal orchestrator.
3
+ *
4
+ * `computeSignals` runs the frozen rule set over a candle series and returns
5
+ * the current price levels (from the most recent confirmed swing-low →
6
+ * swing-high range) and the time-cycle pivots projected from the most recent
7
+ * reversal. For a walk-forward backtest, pass a slice of candles ending at the
8
+ * cursor — the no-lookahead guarantee is structural (detectSwings excludes the
9
+ * trailing N bars).
10
+ */
11
+ import { projectTimePivots } from "./cycles.js";
12
+ import { computeLevels } from "./levels.js";
13
+ import { detectSwings, latestReversal, latestSwing } from "./swings.js";
14
+ import { METHOD_VERSION, } from "./types.js";
15
+ export function computeSignals(candles, opts) {
16
+ const fractalN = opts.fractalN ?? 2;
17
+ const warnings = [];
18
+ const asOfTime = candles.length > 0 ? candles[candles.length - 1].closeTime : 0;
19
+ const swings = detectSwings(candles, fractalN);
20
+ const latestSwingHigh = latestSwing(swings, "high");
21
+ const latestSwingLow = latestSwing(swings, "low");
22
+ let levels = null;
23
+ if (latestSwingLow && latestSwingHigh) {
24
+ levels = computeLevels(latestSwingLow.price, latestSwingHigh.price, opts.maxK);
25
+ if (!levels) {
26
+ warnings.push("latest swing high is not above latest swing low — no level range");
27
+ }
28
+ }
29
+ else {
30
+ warnings.push("insufficient confirmed swings to define a level range");
31
+ }
32
+ const reversal = latestReversal(swings);
33
+ const timePivots = reversal
34
+ ? projectTimePivots(reversal, opts.timeframe)
35
+ : [];
36
+ if (!reversal)
37
+ warnings.push("no confirmed swing to project cycles from");
38
+ return {
39
+ methodVersion: METHOD_VERSION,
40
+ asOfTime,
41
+ timeframe: opts.timeframe,
42
+ fractalN,
43
+ latestSwingHigh,
44
+ latestSwingLow,
45
+ levels,
46
+ timePivots,
47
+ warnings,
48
+ };
49
+ }
50
+ export { projectTimePivots } from "./cycles.js";
51
+ export { computeLevels, FOURTH_LEVEL_TOP_HINT } from "./levels.js";
52
+ export { detectSwings, latestReversal, latestSwing } from "./swings.js";
53
+ export * from "./types.js";
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ta/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAEL,cAAc,GAGf,MAAM,YAAY,CAAC;AAUpB,MAAM,UAAU,cAAc,CAC5B,OAAiB,EACjB,IAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GACZ,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAElD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,GAAG,aAAa,CACpB,cAAc,CAAC,KAAK,EACpB,eAAe,CAAC,KAAK,EACrB,IAAI,CAAC,IAAI,CACV,CAAC;QACF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CACX,kEAAkE,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,CAAC,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAE1E,OAAO;QACL,aAAa,EAAE,cAAc;QAC7B,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ;QACR,eAAe;QACf,cAAc;QACd,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxE,cAAc,YAAY,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Falsification ledger — append-only, live-scored.
3
+ *
4
+ * Pre-registered predictions are appended one JSON object per line (never
5
+ * mutated). Scoring is derived, not stored: given candles covering a
6
+ * prediction's outcome window, we recompute whether the level HELD using the
7
+ * exact directional definition from the backtest (resolveTouch), and report
8
+ * hold-rate minus the backtest baseline. Deriving outcomes (rather than writing
9
+ * them back) keeps the file strictly append-only and always consistent with the
10
+ * frozen rules under `methodVersion`.
11
+ */
12
+ import type { Candle, Timeframe } from "./types.js";
13
+ /** Backtest directional baselines (random in-range level hold-rate), per TF. */
14
+ export declare const LEDGER_BASELINE: Record<Timeframe, number>;
15
+ export interface LedgerRow {
16
+ id: string;
17
+ asset: string;
18
+ type: string;
19
+ predictedLevel: number | null;
20
+ margin: number;
21
+ timeframe: Timeframe;
22
+ madeAt: string;
23
+ outcomeWindowEndsAt: string;
24
+ methodVersion: string;
25
+ }
26
+ export declare function serializeRow(row: LedgerRow): string;
27
+ export declare function parseLedger(text: string): LedgerRow[];
28
+ export interface ScoreSummary {
29
+ key: string;
30
+ type: string;
31
+ timeframe: string;
32
+ matured: number;
33
+ scorable: number;
34
+ holds: number;
35
+ holdRate: number;
36
+ baselineRate: number;
37
+ edge: number;
38
+ }
39
+ /**
40
+ * Score matured predictions against provided candles. A row is matured once
41
+ * `nowMs >= outcomeWindowEndsAt`; it is scorable only if the candle series
42
+ * covers its window. Outcome = the level held (directional bounce).
43
+ */
44
+ export declare function scoreLedger(rows: LedgerRow[], candles: Candle[], nowMs: number): ScoreSummary[];
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Falsification ledger — append-only, live-scored.
3
+ *
4
+ * Pre-registered predictions are appended one JSON object per line (never
5
+ * mutated). Scoring is derived, not stored: given candles covering a
6
+ * prediction's outcome window, we recompute whether the level HELD using the
7
+ * exact directional definition from the backtest (resolveTouch), and report
8
+ * hold-rate minus the backtest baseline. Deriving outcomes (rather than writing
9
+ * them back) keeps the file strictly append-only and always consistent with the
10
+ * frozen rules under `methodVersion`.
11
+ */
12
+ import { resolveTouch } from "./backtest/directional.js";
13
+ import { firstTouchIndex } from "./backtest/scoring.js";
14
+ /** Backtest directional baselines (random in-range level hold-rate), per TF. */
15
+ export const LEDGER_BASELINE = {
16
+ "4h": 0.53,
17
+ "1d": 0.43,
18
+ };
19
+ export function serializeRow(row) {
20
+ return `${JSON.stringify(row)}\n`;
21
+ }
22
+ export function parseLedger(text) {
23
+ const out = [];
24
+ for (const line of text.split("\n")) {
25
+ const t = line.trim();
26
+ if (!t)
27
+ continue;
28
+ try {
29
+ const r = JSON.parse(t);
30
+ if (r && typeof r.id === "string" && typeof r.type === "string")
31
+ out.push(r);
32
+ }
33
+ catch {
34
+ // skip a corrupt line rather than fail the whole read
35
+ }
36
+ }
37
+ return out;
38
+ }
39
+ /**
40
+ * Score matured predictions against provided candles. A row is matured once
41
+ * `nowMs >= outcomeWindowEndsAt`; it is scorable only if the candle series
42
+ * covers its window. Outcome = the level held (directional bounce).
43
+ */
44
+ export function scoreLedger(rows, candles, nowMs) {
45
+ const groups = new Map();
46
+ for (const r of rows) {
47
+ if (r.predictedLevel === null)
48
+ continue;
49
+ const endMs = Date.parse(r.outcomeWindowEndsAt);
50
+ if (!(nowMs >= endMs))
51
+ continue; // not matured yet
52
+ const key = `${r.type}@${r.timeframe}`;
53
+ const g = groups.get(key) ?? {
54
+ type: r.type,
55
+ tf: r.timeframe,
56
+ matured: 0,
57
+ scorable: 0,
58
+ holds: 0,
59
+ };
60
+ g.matured++;
61
+ const startMs = Date.parse(r.madeAt);
62
+ const window = candles.filter((c) => c.openTime >= startMs && c.openTime <= endMs);
63
+ if (window.length >= 2) {
64
+ const touch = firstTouchIndex(r.predictedLevel, window, 0, window.length - 1, r.margin);
65
+ if (touch !== -1) {
66
+ const res = resolveTouch(window, touch, r.predictedLevel);
67
+ if (res !== "none") {
68
+ g.scorable++;
69
+ if (res === "hold")
70
+ g.holds++;
71
+ }
72
+ }
73
+ }
74
+ groups.set(key, g);
75
+ }
76
+ const out = [];
77
+ for (const [key, g] of groups) {
78
+ const holdRate = g.scorable ? g.holds / g.scorable : 0;
79
+ const baselineRate = LEDGER_BASELINE[g.tf] ?? 0.5;
80
+ out.push({
81
+ key,
82
+ type: g.type,
83
+ timeframe: g.tf,
84
+ matured: g.matured,
85
+ scorable: g.scorable,
86
+ holds: g.holds,
87
+ holdRate,
88
+ baselineRate,
89
+ edge: holdRate - baselineRate,
90
+ });
91
+ }
92
+ out.sort((a, b) => b.edge - a.edge);
93
+ return out;
94
+ }
95
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/ta/ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Range-thirds price levels.
3
+ *
4
+ * From a swing-low → swing-high range R, the ladder is `low + k·(R/3)` for
5
+ * k = 0..maxK. k=0 is the low, k=3 is the high ("full cycle"), and k=4
6
+ * (`high + R/3`) is the level the method claims tops ~78% of the time. The 50%
7
+ * retracement is tracked separately because the method uses it as its own
8
+ * support/resistance, distinct from the thirds ladder.
9
+ *
10
+ * The 137 / fine-structure-constant levels from the source material are
11
+ * deliberately NOT implemented — pure numerology, no mechanism.
12
+ */
13
+ import type { PriceLevels } from "./types.js";
14
+ /** Static annotation of the source material's claimed fourth-level top rate. */
15
+ export declare const FOURTH_LEVEL_TOP_HINT = 0.78;
16
+ /**
17
+ * Compute levels for a swing-low → swing-high range. Returns null when the
18
+ * range is non-positive (caller picked a high at/below the low — the method
19
+ * always measures low → high, so that input is meaningless).
20
+ */
21
+ export declare function computeLevels(swingLow: number, swingHigh: number, maxK?: number): PriceLevels | null;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Range-thirds price levels.
3
+ *
4
+ * From a swing-low → swing-high range R, the ladder is `low + k·(R/3)` for
5
+ * k = 0..maxK. k=0 is the low, k=3 is the high ("full cycle"), and k=4
6
+ * (`high + R/3`) is the level the method claims tops ~78% of the time. The 50%
7
+ * retracement is tracked separately because the method uses it as its own
8
+ * support/resistance, distinct from the thirds ladder.
9
+ *
10
+ * The 137 / fine-structure-constant levels from the source material are
11
+ * deliberately NOT implemented — pure numerology, no mechanism.
12
+ */
13
+ /** Static annotation of the source material's claimed fourth-level top rate. */
14
+ export const FOURTH_LEVEL_TOP_HINT = 0.78;
15
+ /**
16
+ * Compute levels for a swing-low → swing-high range. Returns null when the
17
+ * range is non-positive (caller picked a high at/below the low — the method
18
+ * always measures low → high, so that input is meaningless).
19
+ */
20
+ export function computeLevels(swingLow, swingHigh, maxK = 9) {
21
+ const range = swingHigh - swingLow;
22
+ if (!(range > 0) || !Number.isFinite(range))
23
+ return null;
24
+ if (maxK < 3)
25
+ throw new Error(`maxK must be >= 3 (to reach the high), got ${maxK}`);
26
+ const step = range / 3;
27
+ const ladder = [];
28
+ for (let k = 0; k <= maxK; k++) {
29
+ ladder.push({ k, price: swingLow + k * step });
30
+ }
31
+ return {
32
+ swingLow,
33
+ swingHigh,
34
+ range,
35
+ fifty: swingLow + range / 2,
36
+ ladder,
37
+ fourthLevel: maxK >= 4 ? swingLow + 4 * step : null,
38
+ fourthLevelTopProbabilityHint: FOURTH_LEVEL_TOP_HINT,
39
+ };
40
+ }
41
+ //# sourceMappingURL=levels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels.js","sourceRoot":"","sources":["../../src/ta/levels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,SAAiB,EACjB,IAAI,GAAG,CAAC;IAER,MAAM,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;IACnC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,IAAI,GAAG,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;IACvB,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,QAAQ;QACR,SAAS;QACT,KAAK;QACL,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,CAAC;QAC3B,MAAM;QACN,WAAW,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI;QACnD,6BAA6B,EAAE,qBAAqB;KACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Fractal swing detection — the frozen, no-lookahead foundation.
3
+ *
4
+ * A bar is a swing high iff its high is STRICTLY greater than the highs of the
5
+ * `n` bars on each side (symmetric for lows). Strictness means ties are not
6
+ * swings. Because a swing needs `n` bars on BOTH sides, the most recent `n`
7
+ * bars of any array can never be classified — that is the structural guarantee
8
+ * that a walk-forward backtest (which slices candles to the cursor) can never
9
+ * "see" a swing that depends on future bars.
10
+ */
11
+ import type { Candle, Swing, SwingKind } from "./types.js";
12
+ /**
13
+ * Is bar `i` a fractal high — high strictly greater than the `n` bars on each
14
+ * side? Returns false if `i` is too close to either edge to be confirmed.
15
+ * Exported so the backtest scorer shares one definition of "reversal extreme".
16
+ */
17
+ export declare function isFractalHigh(candles: Candle[], i: number, n: number): boolean;
18
+ /** Is bar `i` a fractal low — low strictly less than the `n` bars on each side? */
19
+ export declare function isFractalLow(candles: Candle[], i: number, n: number): boolean;
20
+ /**
21
+ * All confirmed swings in `candles`, in chronological order. Only indices in
22
+ * [n, length-1-n] are considered, so the trailing `n` bars (unconfirmed) are
23
+ * never returned. A bar that is both a high and a low (degenerate flat window)
24
+ * is impossible under strict comparison; highs are checked first regardless.
25
+ */
26
+ export declare function detectSwings(candles: Candle[], n?: number): Swing[];
27
+ /** The most recent swing of `kind` in a chronological swing list, or null. */
28
+ export declare function latestSwing(swings: Swing[], kind: SwingKind): Swing | null;
29
+ /** The most recent swing of either kind (the latest reversal), or null. */
30
+ export declare function latestReversal(swings: Swing[]): Swing | null;