@danceiny/gotry 0.0.1-rc.8 → 0.2.0-rc.27

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 (506) hide show
  1. package/README.md +172 -217
  2. package/README.zh-CN.md +222 -0
  3. package/bin/gotry-backend.js +53 -0
  4. package/bin/gotry-booking-copilot.js +53 -0
  5. package/bin/gotry-bootstrap.js +1744 -0
  6. package/bin/gotry-inner.js +733 -83
  7. package/bin/gotry-process-liveness.d.ts +27 -0
  8. package/bin/gotry-process-liveness.js +97 -0
  9. package/bin/gotry-runtime-resolution.d.ts +27 -0
  10. package/bin/gotry-runtime-resolution.js +49 -0
  11. package/bin/gotry.js +1 -1
  12. package/client/client.js +203 -0
  13. package/cordis.gotry-patch.yml +80 -49
  14. package/data/airline-airports.json +39 -0
  15. package/data/stations-12306-verify.json +524 -0
  16. package/dist/capabilities/agent-reach-deep.js +45 -122
  17. package/dist/capabilities/agent-reach.js +101 -146
  18. package/dist/capabilities/anything.js +135 -94
  19. package/dist/capabilities/artifacts.js +370 -0
  20. package/dist/capabilities/channel-health.js +131 -0
  21. package/dist/capabilities/channel-registry.js +256 -0
  22. package/dist/capabilities/doctor.js +546 -0
  23. package/dist/capabilities/effect.js +394 -0
  24. package/dist/capabilities/external-event.js +149 -0
  25. package/dist/capabilities/fact-log.js +55 -0
  26. package/dist/capabilities/flyai-config.js +337 -0
  27. package/dist/capabilities/flyai.js +968 -0
  28. package/dist/capabilities/fx-contract.js +293 -0
  29. package/dist/capabilities/geo-atlas.js +246 -0
  30. package/dist/capabilities/ground-transfer.js +509 -0
  31. package/dist/capabilities/hbcli.js +260 -123
  32. package/dist/capabilities/hotelbyte-transaction.js +194 -0
  33. package/dist/capabilities/incident-log.js +131 -61
  34. package/dist/capabilities/itinerary-artifact.js +190 -0
  35. package/dist/capabilities/itinerary-deck-artifact.js +194 -0
  36. package/dist/capabilities/itinerary-deck-export.js +339 -0
  37. package/dist/capabilities/lavish-local.js +924 -0
  38. package/dist/capabilities/model-override.js +38 -0
  39. package/dist/capabilities/opensky.js +54 -43
  40. package/dist/capabilities/resilience.js +191 -0
  41. package/dist/capabilities/session/action-cache.js +126 -0
  42. package/dist/capabilities/session/adapters/ctrip-flight.js +141 -0
  43. package/dist/capabilities/session/adapters/ctrip-hotel.js +222 -0
  44. package/dist/capabilities/session/adapters/dida-portal.js +274 -0
  45. package/dist/capabilities/session/adapters/meituan-local.js +54 -0
  46. package/dist/capabilities/session/adapters/rail-12306.js +342 -0
  47. package/dist/capabilities/session/benchmark.js +189 -0
  48. package/dist/capabilities/session/bridge-ledger.js +224 -0
  49. package/dist/capabilities/session/extension-bridge.js +636 -0
  50. package/dist/capabilities/session/extension-channel.js +109 -0
  51. package/dist/capabilities/session/extension-distribution.js +230 -0
  52. package/dist/capabilities/session/extract.js +50 -0
  53. package/dist/capabilities/session/golden-score.js +114 -0
  54. package/dist/capabilities/session/health-watch.js +215 -0
  55. package/dist/capabilities/session/read-guard.js +107 -0
  56. package/dist/capabilities/session/static-flight-golden.js +150 -0
  57. package/dist/capabilities/session/transport.js +109 -0
  58. package/dist/capabilities/session/wizard.js +117 -0
  59. package/dist/capabilities/session-consent.js +178 -0
  60. package/dist/capabilities/session-login.js +170 -0
  61. package/dist/capabilities/session-search.js +686 -0
  62. package/dist/capabilities/spawn-bounded.js +203 -0
  63. package/dist/capabilities/sponsor-plugin.js +341 -0
  64. package/dist/capabilities/visa-policy.js +140 -0
  65. package/dist/capabilities/weather.js +243 -138
  66. package/dist/data/session-golden-20.json +25 -0
  67. package/dist/data/sf-golden-manifest.json +103 -0
  68. package/dist/data/sf-static-routes.json +91 -0
  69. package/dist/scripts/action-cache-tests.js +72 -0
  70. package/dist/scripts/agent-planning-turn-deadline-e2e.js +242 -0
  71. package/dist/scripts/agent-planning-turn-deadline-tests.js +185 -0
  72. package/dist/scripts/agent-reach-deep-tests.js +30 -40
  73. package/dist/scripts/agent-reach-error-tests.js +354 -0
  74. package/dist/scripts/agent-reach-tests.js +26 -18
  75. package/dist/scripts/agent-reach-wrapper-tests.js +50 -50
  76. package/dist/scripts/anything-tests.js +116 -60
  77. package/dist/scripts/artifact-client-contract-tests.js +220 -0
  78. package/dist/scripts/artifacts-capability-tests.js +727 -0
  79. package/dist/scripts/async-collect.js +68 -10
  80. package/dist/scripts/benchmark-environment-bridge-e2e.js +741 -0
  81. package/dist/scripts/benchmark-environment-bridge-tests.js +1452 -0
  82. package/dist/scripts/booking-copilot-availability-ledger-binding-tests.js +126 -0
  83. package/dist/scripts/booking-copilot-availability-policy-tests.js +265 -0
  84. package/dist/scripts/booking-copilot-bin-proof-tests.js +66 -0
  85. package/dist/scripts/booking-copilot-cleanup-proof-helper.js +76 -0
  86. package/dist/scripts/booking-copilot-crossrepo-fixture-server.js +144 -0
  87. package/dist/scripts/booking-copilot-dsh-core-proof-tests.js +424 -0
  88. package/dist/scripts/booking-copilot-dsh-planner-proof-tests.js +2839 -0
  89. package/dist/scripts/booking-copilot-dsh-plugin-proof-tests.js +309 -0
  90. package/dist/scripts/booking-copilot-dsh-readiness-proof.js +238 -0
  91. package/dist/scripts/booking-copilot-dsh-warmer-proof.js +123 -0
  92. package/dist/scripts/booking-copilot-event-sequence-concurrency-proof-tests.js +156 -0
  93. package/dist/scripts/booking-copilot-gap-code-contract-proof-tests.js +70 -0
  94. package/dist/scripts/booking-copilot-intent-proof-tests.js +422 -0
  95. package/dist/scripts/booking-copilot-operation-ledger-concurrency-proof-tests.js +184 -0
  96. package/dist/scripts/booking-copilot-planner-live-probe.js +95 -0
  97. package/dist/scripts/booking-copilot-proof-runtime.js +42 -0
  98. package/dist/scripts/booking-copilot-receipt-ledger-concurrency-proof-tests.js +210 -0
  99. package/dist/scripts/booking-copilot-runtime-proof-tests.js +2349 -0
  100. package/dist/scripts/booking-copilot-server-proof-tests.js +784 -0
  101. package/dist/scripts/booking-copilot-startup-proof-tests.js +94 -0
  102. package/dist/scripts/booking-executor-tests.js +80 -0
  103. package/dist/scripts/booking-recovery-chain-tests.js +182 -0
  104. package/dist/scripts/booking-saga-tests.js +125 -0
  105. package/dist/scripts/booking-surface-contract-proof-tests.js +212 -0
  106. package/dist/scripts/bootstrap-tests.js +1479 -0
  107. package/dist/scripts/bridge-events-tests.js +239 -0
  108. package/dist/scripts/bridge-ledger-tests.js +428 -0
  109. package/dist/scripts/build-changelog.js +238 -0
  110. package/dist/scripts/build-metrics-report.js +331 -0
  111. package/dist/scripts/changelog-tests.js +118 -0
  112. package/dist/scripts/channel-probe-tests.js +103 -0
  113. package/dist/scripts/channel-probe.js +169 -0
  114. package/dist/scripts/channel-registry-tests.js +208 -0
  115. package/dist/scripts/companion-tests.js +67 -0
  116. package/dist/scripts/dida-cookie-probe.js +87 -0
  117. package/dist/scripts/dida-runner-stop-tests.js +311 -0
  118. package/dist/scripts/dida-sw-probe.js +114 -0
  119. package/dist/scripts/diff-test.js +17 -12
  120. package/dist/scripts/doctor-tests.js +564 -0
  121. package/dist/scripts/dsh-artifact-e2e.js +279 -0
  122. package/dist/scripts/dsh-artifact-web-e2e.js +675 -0
  123. package/dist/scripts/dsh-http-proxy-sse-proof.js +90 -0
  124. package/dist/scripts/dsh-runtime-closure-tests.js +182 -0
  125. package/dist/scripts/dsh-runtime-closure.js +162 -0
  126. package/dist/scripts/dsh-session-v3-migration-proof.js +109 -0
  127. package/dist/scripts/dsh-subprocess-local-proof.js +150 -0
  128. package/dist/scripts/dsh-target-closure-proof.js +178 -0
  129. package/dist/scripts/effect-tests.js +539 -0
  130. package/dist/scripts/engine-run.js +1 -3
  131. package/dist/scripts/engine-tests.js +16 -10
  132. package/dist/scripts/evaluation-cadence-tests.js +174 -0
  133. package/dist/scripts/evaluation-contract-tests.js +268 -0
  134. package/dist/scripts/extension-distribution-cli.js +39 -0
  135. package/dist/scripts/extension-distribution-tests.js +443 -0
  136. package/dist/scripts/extension-tests.js +988 -0
  137. package/dist/scripts/external-event-tests.js +350 -0
  138. package/dist/scripts/fact-gate-tests.js +869 -0
  139. package/dist/scripts/fixtures/extension-bridge-unref-child.mjs +21 -0
  140. package/dist/scripts/flight-hotel-anchor-363-registered-e2e.js +169 -0
  141. package/dist/scripts/flight-malformed-tests.js +159 -0
  142. package/dist/scripts/flyai-setup-tests.js +228 -0
  143. package/dist/scripts/flyai-setup-tool-tests.js +54 -0
  144. package/dist/scripts/flyai-tests.js +692 -0
  145. package/dist/scripts/flyai-tool-registration-contract-tests.js +91 -0
  146. package/dist/scripts/fx-contract-tests.js +201 -0
  147. package/dist/scripts/g5-guard-tests.js +131 -0
  148. package/dist/scripts/g5-guard.js +189 -0
  149. package/dist/scripts/gen-lunar-anchors.js +106 -0
  150. package/dist/scripts/geo-atlas-tests.js +283 -0
  151. package/dist/scripts/gotry-backend-kernel-tests.js +206 -0
  152. package/dist/scripts/gotry-try-demo-tests.js +79 -0
  153. package/dist/scripts/gotry-try-demo.js +49 -0
  154. package/dist/scripts/ground-transfer-tests.js +956 -0
  155. package/dist/scripts/hbcli-e2e-tests.js +159 -0
  156. package/dist/scripts/hbcli-live-optin-tests.js +96 -0
  157. package/dist/scripts/hbcli-release-contract-tests.js +122 -0
  158. package/dist/scripts/hbcli-tests.js +121 -69
  159. package/dist/scripts/health-watch-cli.js +73 -0
  160. package/dist/scripts/hotel-date-gate-tests.js +496 -0
  161. package/dist/scripts/hotelbyte-reconcile-tests.js +141 -0
  162. package/dist/scripts/hotelbyte-spawn-e2e-tests.js +373 -0
  163. package/dist/scripts/i18n-tests.js +41 -0
  164. package/dist/scripts/incident-tests.js +281 -87
  165. package/dist/scripts/issue-194-job-id-guard-tests.js +106 -0
  166. package/dist/scripts/issue-233-cancel-refund-commission-tests.js +392 -0
  167. package/dist/scripts/issue-271-liveness-tests.js +569 -0
  168. package/dist/scripts/issue-289-model-retry-real-tests.js +296 -0
  169. package/dist/scripts/issue-289-model-retry-tests.js +441 -0
  170. package/dist/scripts/issue-289-web-retry-e2e.js +630 -0
  171. package/dist/scripts/issue-338-home-city-e2e.js +577 -0
  172. package/dist/scripts/issue343-real-entry-e2e.js +160 -0
  173. package/dist/scripts/issue436-persisted-routing-e2e.js +247 -0
  174. package/dist/scripts/itinerary-artifact-tests.js +368 -0
  175. package/dist/scripts/itinerary-deck-artifact-tests.js +416 -0
  176. package/dist/scripts/itinerary-deck-export-tests.js +552 -0
  177. package/dist/scripts/itinerary-deck-tests.js +435 -0
  178. package/dist/scripts/itinerary-html-tests.js +426 -0
  179. package/dist/scripts/journey-tests.js +22 -27
  180. package/dist/scripts/kernel-manifest-evidence.js +109 -0
  181. package/dist/scripts/kernel-manifest-gate.js +126 -0
  182. package/dist/scripts/kernel-manifest-tests.js +212 -0
  183. package/dist/scripts/kernel-manifest-trace-entry.js +7 -0
  184. package/dist/scripts/kernel-manifest-trace-hook.mjs +28 -0
  185. package/dist/scripts/kernel-manifest.js +369 -0
  186. package/dist/scripts/lavish-local-tests.js +1226 -0
  187. package/dist/scripts/lavish-product-tools-tests.js +537 -0
  188. package/dist/scripts/ledger-repair-apply-tests.js +316 -0
  189. package/dist/scripts/ledger-repair-plan-tests.js +375 -0
  190. package/dist/scripts/ledger-tests.js +480 -0
  191. package/dist/scripts/ledger-workflow-crash.js +32 -0
  192. package/dist/scripts/managed-dsh-cleanup-diagnostic-proof.js +184 -0
  193. package/dist/scripts/managed-dsh-close-failure-proof.js +172 -0
  194. package/dist/scripts/managed-dsh-run-port-proof.js +153 -0
  195. package/dist/scripts/managed-dsh-terminal-proof.js +252 -0
  196. package/dist/scripts/map-tools-vendor-package-proof.js +365 -0
  197. package/dist/scripts/memory-capture-tests.js +242 -61
  198. package/dist/scripts/memory-decay-tests.js +49 -0
  199. package/dist/scripts/memory-lifecycle-tests.js +657 -0
  200. package/dist/scripts/memory-lifecycle.js +196 -0
  201. package/dist/scripts/memory-metrics.js +29 -31
  202. package/dist/scripts/memory-value-report.js +631 -0
  203. package/dist/scripts/memory-value-tests.js +328 -0
  204. package/dist/scripts/metrics-report-tests.js +151 -0
  205. package/dist/scripts/model-override-e2e.js +137 -0
  206. package/dist/scripts/nightly-evidence-tests.js +161 -0
  207. package/dist/scripts/nightly-evidence.js +286 -0
  208. package/dist/scripts/nudge-digest.js +43 -42
  209. package/dist/scripts/observability-tests.js +381 -0
  210. package/dist/scripts/onboarding-tests.js +161 -0
  211. package/dist/scripts/opensky-check.js +18 -13
  212. package/dist/scripts/opensky-tests.js +28 -28
  213. package/dist/scripts/persona-surface-guard-tests.js +49 -0
  214. package/dist/scripts/pnpm-dsh-closure-proof.js +17 -0
  215. package/dist/scripts/policy-anchor-359-registered-e2e.js +214 -0
  216. package/dist/scripts/price-drift-tests.js +340 -0
  217. package/dist/scripts/price-drift-watch.js +447 -0
  218. package/dist/scripts/probe-poi-tests.js +53 -45
  219. package/dist/scripts/product-metrics.js +483 -0
  220. package/dist/scripts/publish-preverify.js +110 -0
  221. package/dist/scripts/realtime-pricing-tests.js +76 -0
  222. package/dist/scripts/recall-tests.js +513 -0
  223. package/dist/scripts/replay-async.js +20 -18
  224. package/dist/scripts/replay-real.js +18 -18
  225. package/dist/scripts/replay.js +52 -82
  226. package/dist/scripts/session-attach-diagnose.js +31 -0
  227. package/dist/scripts/session-attach-poc.js +62 -0
  228. package/dist/scripts/session-benchmark.js +180 -0
  229. package/dist/scripts/session-dida-live-e2e.js +199 -0
  230. package/dist/scripts/session-extract-tests.js +60 -0
  231. package/dist/scripts/session-link-tests.js +478 -0
  232. package/dist/scripts/session-login.js +29 -0
  233. package/dist/scripts/session-tests.js +862 -0
  234. package/dist/scripts/session-zones-tests.js +358 -0
  235. package/dist/scripts/sf-live-benchmark.js +367 -0
  236. package/dist/scripts/sf-live-challenge-stop-tests.js +453 -0
  237. package/dist/scripts/sf-live-cli-tests.js +92 -0
  238. package/dist/scripts/sf-live-options.js +46 -0
  239. package/dist/scripts/sf-manifest-tests.js +30 -0
  240. package/dist/scripts/sf-manifest.js +33 -0
  241. package/dist/scripts/sf-soft-score-tests.js +67 -0
  242. package/dist/scripts/sf-summary-tests.js +324 -0
  243. package/dist/scripts/sf-summary.js +525 -0
  244. package/dist/scripts/share-tests.js +432 -0
  245. package/dist/scripts/skeleton-check.js +16 -14
  246. package/dist/scripts/skeleton-integration-test.js +28 -11
  247. package/dist/scripts/skills-contract-tests.js +51 -46
  248. package/dist/scripts/smoke-session-gate-tests.js +21 -0
  249. package/dist/scripts/smoke.js +703 -219
  250. package/dist/scripts/spawn-bounded-abort-tests.js +241 -0
  251. package/dist/scripts/sponsor-reuse-tests.js +262 -0
  252. package/dist/scripts/state-cli-tests.js +261 -0
  253. package/dist/scripts/state-cli.js +585 -0
  254. package/dist/scripts/state-repair-cli.js +66 -0
  255. package/dist/scripts/state-repair-tests.js +140 -0
  256. package/dist/scripts/static-golden-tests.js +165 -0
  257. package/dist/scripts/time-eval-tests.js +210 -192
  258. package/dist/scripts/travel-timeline-tests.js +59 -0
  259. package/dist/scripts/turn-handoff-collect-tests.js +169 -0
  260. package/dist/scripts/turn-handoff-collect.js +161 -0
  261. package/dist/scripts/turn-policy-tests.js +55 -0
  262. package/dist/scripts/typed-contract-canary.js +176 -0
  263. package/dist/scripts/tz-resolver-sanity.js +50 -0
  264. package/dist/scripts/tz-resolver-tests.js +584 -0
  265. package/dist/scripts/unified-tests.js +23 -19
  266. package/dist/scripts/visa-policy-tests.js +62 -0
  267. package/dist/scripts/weather-tests.js +276 -41
  268. package/dist/scripts/wish-channel-gate-tests.js +54 -0
  269. package/dist/scripts/write-gate-tests.js +522 -0
  270. package/dist/scripts/z3-lifecycle-fault-tests.js +188 -0
  271. package/dist/scripts/z3-lifecycle-tests.js +170 -0
  272. package/dist/scripts/z3-race-repeat-tests.js +39 -0
  273. package/dist/scripts/z3-race-tests.js +41 -0
  274. package/dist/src/artifact-gate.js +829 -0
  275. package/dist/src/backend/kernel.js +91 -0
  276. package/dist/src/backend/modules/booking-copilot.js +92 -0
  277. package/dist/src/backend/modules/booking-executor.js +124 -0
  278. package/dist/src/backend/modules/session-search.js +551 -0
  279. package/dist/src/benchmark-agent-conformance.js +578 -0
  280. package/dist/src/benchmark-environment-bridge.js +515 -0
  281. package/dist/src/benchmark-headless-child-diagnostics.js +166 -0
  282. package/dist/src/benchmark-tool-isolation.js +151 -0
  283. package/dist/src/bookable-facts.js +533 -0
  284. package/dist/src/booking-saga.js +97 -0
  285. package/dist/src/booking-surface/availability-policy.js +697 -0
  286. package/dist/src/booking-surface/booking-intent.js +43 -0
  287. package/dist/src/booking-surface/cancel-refund-commission.js +379 -0
  288. package/dist/src/booking-surface/canonical-schema.js +116 -0
  289. package/dist/src/booking-surface/contracts.js +75 -0
  290. package/dist/src/booking-surface/dsh-planner.js +1854 -0
  291. package/dist/src/booking-surface/dsh-plugin.js +378 -0
  292. package/dist/src/booking-surface/dsh-worker.js +98 -0
  293. package/dist/src/booking-surface/error-codes.js +231 -0
  294. package/dist/src/booking-surface/index.js +9 -0
  295. package/dist/src/booking-surface/managed-dsh-cleanup-diagnostic.js +97 -0
  296. package/dist/src/booking-surface/managed-dsh-run-port.js +244 -0
  297. package/dist/src/booking-surface/profile.js +24 -0
  298. package/dist/src/booking-surface/recovery-chain.js +367 -0
  299. package/dist/src/booking-surface/runtime.js +1968 -0
  300. package/dist/src/booking-surface/server.js +674 -0
  301. package/dist/src/booking-surface/startup.js +168 -0
  302. package/dist/src/booking-surface/validation.js +261 -0
  303. package/dist/src/bridge.js +20 -13
  304. package/dist/src/companions.js +86 -0
  305. package/dist/src/contracts.js +21 -43
  306. package/dist/src/dsh-llm.js +97 -111
  307. package/dist/src/engine.js +276 -193
  308. package/dist/src/evaluation-cadence.js +97 -0
  309. package/dist/src/evaluation-contracts.js +283 -0
  310. package/dist/src/flight-pack-adapter.js +54 -0
  311. package/dist/src/flight-pack-contract.js +2 -0
  312. package/dist/src/flyai-setup-tool.js +70 -0
  313. package/dist/src/gotry-backend.js +125 -0
  314. package/dist/src/hotel-date-gate.js +118 -0
  315. package/dist/src/i18n.js +88 -0
  316. package/dist/src/index.js +2305 -731
  317. package/dist/src/itinerary-deck.js +139 -0
  318. package/dist/src/itinerary-doc-shared.js +661 -0
  319. package/dist/src/itinerary-html.js +131 -0
  320. package/dist/src/journey.js +155 -108
  321. package/dist/src/lavish-tools.js +400 -0
  322. package/dist/src/ledger-repair-apply.js +538 -0
  323. package/dist/src/ledger-repair-plan.js +463 -0
  324. package/dist/src/loop.js +358 -162
  325. package/dist/src/memory-capture.js +180 -32
  326. package/dist/src/memory-decay.js +47 -0
  327. package/dist/src/memory-lifecycle.js +1310 -0
  328. package/dist/src/memory-utility.js +27 -40
  329. package/dist/src/mock-llm.js +36 -61
  330. package/dist/src/model.js +81 -36
  331. package/dist/src/realtime-pricing.js +103 -0
  332. package/dist/src/recall/card.js +74 -0
  333. package/dist/src/recall/evaluator.js +140 -0
  334. package/dist/src/recall/integration.js +17 -0
  335. package/dist/src/recall/tick.js +166 -0
  336. package/dist/src/session-link/plan-it-action.js +48 -0
  337. package/dist/src/session-link/session-link.js +248 -0
  338. package/dist/src/session-zones.js +507 -0
  339. package/dist/src/share/adapters.js +51 -0
  340. package/dist/src/share/share-consent.js +76 -0
  341. package/dist/src/share/share-deck.js +58 -0
  342. package/dist/src/share/share-token.js +146 -0
  343. package/dist/src/slot-spec.js +84 -106
  344. package/dist/src/state-ledger.js +767 -0
  345. package/dist/src/state-repair.js +299 -0
  346. package/dist/src/subagent-job-id-guard.js +58 -0
  347. package/dist/src/time-anchor.js +231 -33
  348. package/dist/src/tool-packet.js +20 -8
  349. package/dist/src/travel-slots.js +58 -35
  350. package/dist/src/travel-timeline.js +59 -0
  351. package/dist/src/turn-deadline.js +287 -0
  352. package/dist/src/turn-policy.js +118 -0
  353. package/dist/src/tz-resolver.js +143 -0
  354. package/dist/src/unified.js +538 -360
  355. package/dist/src/wish-pool.js +42 -12
  356. package/dist/src/write-gate.js +495 -0
  357. package/dist/src/z3-shared.js +284 -0
  358. package/extension/README.md +21 -0
  359. package/extension/README.zh-CN.md +21 -0
  360. package/extension/background.js +463 -0
  361. package/extension/content-bridge.js +270 -0
  362. package/extension/content-main.js +111 -0
  363. package/extension/manifest.json +60 -0
  364. package/package.json +407 -14
  365. package/schemas/booking.intent.schema.json +193 -0
  366. package/schemas/booking.surface.schema.json +2622 -0
  367. package/ts/capabilities/agent-reach-deep.ts +114 -0
  368. package/ts/capabilities/agent-reach.ts +198 -0
  369. package/ts/capabilities/anything.ts +255 -0
  370. package/ts/capabilities/artifacts.ts +428 -0
  371. package/ts/capabilities/fact-log.ts +54 -0
  372. package/ts/capabilities/flyai-config.ts +388 -0
  373. package/ts/capabilities/flyai.ts +1274 -0
  374. package/ts/capabilities/hbcli.ts +253 -71
  375. package/ts/capabilities/incident-log.ts +88 -59
  376. package/ts/capabilities/itinerary-artifact.ts +214 -0
  377. package/ts/capabilities/itinerary-deck-artifact.ts +218 -0
  378. package/ts/capabilities/itinerary-deck-export.ts +378 -0
  379. package/ts/capabilities/opensky.ts +121 -0
  380. package/ts/capabilities/session/action-cache.ts +148 -0
  381. package/ts/capabilities/session/adapters/ctrip-flight.ts +181 -0
  382. package/ts/capabilities/session/adapters/ctrip-hotel.ts +238 -0
  383. package/ts/capabilities/session/adapters/dida-portal.ts +338 -0
  384. package/ts/capabilities/session/adapters/meituan-local.ts +70 -0
  385. package/ts/capabilities/session/adapters/rail-12306.ts +392 -0
  386. package/ts/capabilities/session/benchmark.ts +276 -0
  387. package/ts/capabilities/session/bridge-ledger.ts +333 -0
  388. package/ts/capabilities/session/extension-bridge.ts +794 -0
  389. package/ts/capabilities/session/extension-channel.ts +144 -0
  390. package/ts/capabilities/session/extension-distribution.ts +266 -0
  391. package/ts/capabilities/session/extract.ts +54 -0
  392. package/ts/capabilities/session/golden-score.ts +139 -0
  393. package/ts/capabilities/session/health-watch.ts +264 -0
  394. package/ts/capabilities/session/read-guard.ts +141 -0
  395. package/ts/capabilities/session/static-flight-golden.ts +209 -0
  396. package/ts/capabilities/session/transport.ts +146 -0
  397. package/ts/capabilities/session/wizard.ts +140 -0
  398. package/ts/capabilities/session-consent.ts +211 -0
  399. package/ts/capabilities/session-login.ts +208 -0
  400. package/ts/capabilities/session-search.ts +893 -0
  401. package/ts/capabilities/weather.ts +330 -0
  402. package/ts/dsh-runtime/vendor/README.md +68 -0
  403. package/ts/dsh-runtime/vendor/dsh-map-tools/LICENSE +21 -0
  404. package/ts/dsh-runtime/vendor/dsh-map-tools/README.en.md +405 -0
  405. package/ts/dsh-runtime/vendor/dsh-map-tools/README.md +404 -0
  406. package/ts/dsh-runtime/vendor/dsh-map-tools/client/client.js +1584 -0
  407. package/ts/dsh-runtime/vendor/dsh-map-tools/cordis.patch.yml +5 -0
  408. package/ts/dsh-runtime/vendor/dsh-map-tools/icon.svg +5 -0
  409. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/clients/amap.js +595 -0
  410. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/clients/nominatim.js +63 -0
  411. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/clients/osrm.js +58 -0
  412. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/clients/photon.js +55 -0
  413. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/config-file.js +87 -0
  414. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/config-route.js +131 -0
  415. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/config.js +16 -0
  416. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/geo.js +232 -0
  417. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/index.js +120 -0
  418. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/settings-ns.js +40 -0
  419. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/staticmap-route.js +115 -0
  420. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/tools/geocode.js +127 -0
  421. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/tools/poi.js +84 -0
  422. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/tools/routes.js +267 -0
  423. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/clients/amap.d.ts +90 -0
  424. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/clients/nominatim.d.ts +17 -0
  425. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/clients/osrm.d.ts +15 -0
  426. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/clients/photon.d.ts +22 -0
  427. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/config-file.d.ts +33 -0
  428. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/config-route.d.ts +23 -0
  429. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/config.d.ts +23 -0
  430. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/geo.d.ts +61 -0
  431. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/index.d.ts +18 -0
  432. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/settings-ns.d.ts +14 -0
  433. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/staticmap-route.d.ts +31 -0
  434. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/tools/geocode.d.ts +11 -0
  435. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/tools/poi.d.ts +9 -0
  436. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/tools/routes.d.ts +75 -0
  437. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types/types.d.ts +68 -0
  438. package/ts/dsh-runtime/vendor/dsh-map-tools/lib/types.js +16 -0
  439. package/ts/dsh-runtime/vendor/dsh-map-tools/package.json +97 -0
  440. package/ts/package.json +296 -3
  441. package/ts/scripts/async-collect.ts +91 -0
  442. package/ts/scripts/map-tools-vendor-package-proof.ts +404 -0
  443. package/ts/scripts/skeleton-check.ts +1 -1
  444. package/ts/scripts/skeleton-integration-test.ts +23 -1
  445. package/ts/scripts/state-cli.ts +568 -0
  446. package/ts/scripts/turn-handoff-collect.ts +178 -0
  447. package/ts/src/artifact-gate.ts +991 -0
  448. package/ts/src/benchmark-agent-conformance.ts +619 -0
  449. package/ts/src/benchmark-environment-bridge.ts +538 -0
  450. package/ts/src/benchmark-headless-child-diagnostics.ts +184 -0
  451. package/ts/src/benchmark-tool-isolation.ts +166 -0
  452. package/ts/src/bookable-facts.ts +837 -0
  453. package/ts/src/booking-saga.ts +133 -0
  454. package/ts/src/booking-surface/availability-policy.ts +522 -0
  455. package/ts/src/booking-surface/booking-intent.ts +86 -0
  456. package/ts/src/booking-surface/cancel-refund-commission.ts +488 -0
  457. package/ts/src/booking-surface/canonical-schema.js +116 -0
  458. package/ts/src/booking-surface/contracts.ts +475 -0
  459. package/ts/src/booking-surface/dsh-planner.ts +1949 -0
  460. package/ts/src/booking-surface/dsh-plugin.js +378 -0
  461. package/ts/src/booking-surface/dsh-worker.ts +110 -0
  462. package/ts/src/booking-surface/error-codes.ts +241 -0
  463. package/ts/src/booking-surface/index.ts +9 -0
  464. package/ts/src/booking-surface/managed-dsh-cleanup-diagnostic.ts +151 -0
  465. package/ts/src/booking-surface/managed-dsh-run-port.ts +273 -0
  466. package/ts/src/booking-surface/profile.ts +42 -0
  467. package/ts/src/booking-surface/recovery-chain.ts +409 -0
  468. package/ts/src/booking-surface/runtime.ts +1793 -0
  469. package/ts/src/booking-surface/server.ts +733 -0
  470. package/ts/src/booking-surface/startup.ts +201 -0
  471. package/ts/src/booking-surface/validation.ts +217 -0
  472. package/ts/src/companions.ts +113 -0
  473. package/ts/src/contracts.ts +13 -3
  474. package/ts/src/dsh-llm.ts +44 -11
  475. package/ts/src/flyai-setup-tool.ts +77 -0
  476. package/ts/src/index.ts +2107 -224
  477. package/ts/src/itinerary-deck.ts +189 -0
  478. package/ts/src/itinerary-doc-shared.ts +741 -0
  479. package/ts/src/itinerary-html.ts +171 -0
  480. package/ts/src/loop.ts +278 -40
  481. package/ts/src/memory-capture.ts +283 -0
  482. package/ts/src/memory-decay.ts +55 -0
  483. package/ts/src/memory-utility.ts +70 -0
  484. package/ts/src/mock-llm.ts +4 -8
  485. package/ts/src/model.ts +88 -2
  486. package/ts/src/recall/card.ts +106 -0
  487. package/ts/src/recall/evaluator.ts +170 -0
  488. package/ts/src/recall/integration.ts +35 -0
  489. package/ts/src/recall/tick.ts +213 -0
  490. package/ts/src/session-link/plan-it-action.ts +78 -0
  491. package/ts/src/session-link/session-link.ts +275 -0
  492. package/ts/src/share/adapters.ts +93 -0
  493. package/ts/src/share/share-consent.ts +105 -0
  494. package/ts/src/share/share-deck.ts +85 -0
  495. package/ts/src/share/share-token.ts +166 -0
  496. package/ts/src/slot-spec.ts +172 -0
  497. package/ts/src/state-ledger.ts +912 -0
  498. package/ts/src/subagent-job-id-guard.ts +72 -0
  499. package/ts/src/time-anchor.ts +338 -0
  500. package/ts/src/tool-packet.ts +32 -0
  501. package/ts/src/travel-slots.ts +219 -0
  502. package/ts/src/travel-timeline.ts +83 -0
  503. package/ts/src/turn-deadline.ts +366 -0
  504. package/ts/src/turn-policy.ts +154 -0
  505. package/ts/src/unified.ts +360 -89
  506. package/ts/src/wish-pool.ts +79 -0
@@ -0,0 +1,222 @@
1
+ [English](README.md) | [简体中文](README.zh-CN.md)
2
+
3
+ # GoTry
4
+
5
+ > **身体和灵魂,更多旅行,更少旅游。**
6
+ > *Body and soul — more travel, less tourism.*
7
+
8
+ **GoTry 是「从出发到下一次出发」的 AI 旅行 Agent**:你只管说想去哪、为什么出发;它把该问的问清楚,然后让代码替你拍板——能不能去、怎么去、真实代价多少,每个数字都带出处,不靠模型脑补。
9
+
10
+ [![GitHub Stars](https://img.shields.io/github/stars/Danceiny/gotry?style=social)](https://github.com/Danceiny/gotry/stargazers)
11
+ [![CI](https://github.com/Danceiny/gotry/actions/workflows/ci.yml/badge.svg)](https://github.com/Danceiny/gotry/actions/workflows/ci.yml)
12
+ [![npm](https://img.shields.io/npm/v/@danceiny/gotry)](https://www.npmjs.com/package/@danceiny/gotry)
13
+ [![License: MIT](https://img.shields.io/badge/License-MIT-informational)](LICENSE)
14
+ [![Node](https://img.shields.io/badge/node-%E2%89%A5%2022.15-blue)](https://www.npmjs.com/package/@danceiny/gotry)
15
+ [![Docs](https://img.shields.io/badge/docs-architecture.md-blue)](docs/architecture.zh-CN.md)
16
+
17
+ **[它做什么](#它做什么)** · **[工作原理](#工作原理)** · **[一段对话](#一段对话)** · **[同题横评](#同题横评)** · **[快速开始](#快速开始)** · **[隐私与可信](#隐私与可信)** · **[状态与路线图](#状态与路线图)** · **[参与开发](#参与开发)** · **[文档](#文档)**
18
+
19
+ ## 它做什么
20
+
21
+ 把「想去哪」变成「能不能去、怎么去、真实代价是多少」。这周末去不了?它不会把你的念头一丢了之——目的地连同一个「满足就再试」的条件一起存进愿望池。
22
+
23
+ - **给旅行者** —— 先问对人问题(哪几天能走 / 从哪出发 / 预算多少),再给每个目的地一句痛快话:能去、不能去、为什么,以及让它能去的最小改动。
24
+ - **给 Agent 工程师** —— LLM 只负责听懂、翻译、解释;数字由代码算,判决由代码下。交付的每个数字带来源标签;写操作从设计上被闸住。
25
+
26
+ ## 工作原理
27
+
28
+ 模型只占语言密集的两端,数值全部归确定性代码:
29
+
30
+ ```mermaid
31
+ flowchart LR
32
+ U(["旅行者:「我想去大理躺三天」"]) --> A
33
+ subgraph LANG["LLM 负责——语言"]
34
+ A["动机访谈<br/>工作窗口 · 已订资源 · 出发城市"] --> B["事实抽取<br/>工时与休假语义"]
35
+ end
36
+ subgraph NUM["确定性 TypeScript 内核——普通候选路径"]
37
+ C["候选枚举<br/>solveChoiceSegment"] --> D["逐个评估选择<br/>evaluateChoice · 真成本检查"] --> V["选择判决<br/>可行 / 不可行 · 推荐"]
38
+ end
39
+ subgraph Z3PATH["独立脚本/控制面入口"]
40
+ Z["solveUnified<br/>脚本/控制面航班链 · Z3"]
41
+ end
42
+ subgraph GATE["闸与记忆"]
43
+ E["证据链<br/>每个数字带来源标签"] --> F{"事实闸"}
44
+ F -->|"全部可回溯到 exact-date 工具"| G["交付已验证行程"]
45
+ F -->|"回溯不到"| H["blocked——绝不冒充已验证"]
46
+ I[("愿望池<br/>带显式召回条件")]
47
+ end
48
+ B --> C
49
+ V --> E
50
+ B -.->|"独立脚本/控制面入口"| Z
51
+ Z --> E
52
+ V -.->|"今天装不下"| I
53
+ I -.->|"条件满足,重新枚举"| C
54
+ classDef llm fill:#1f6feb22,stroke:#1f6feb,color:#1f6feb;
55
+ classDef solver fill:#2ea04322,stroke:#2ea043,color:#2ea043;
56
+ classDef gate fill:#d2992222,stroke:#d29922,color:#9e6a03;
57
+ class A,B llm;
58
+ class C,D solver;
59
+ class E,F,G,H,I gate;
60
+ ```
61
+
62
+ 架构——同步主链从对话经内核到事实闸,外加状态与异步控制面、只读数据层:
63
+
64
+ <a href="docs/assets/gotry-system-architecture.html">
65
+ <picture>
66
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/gotry-system-architecture.dark.png" />
67
+ <source media="(prefers-color-scheme: light)" srcset="docs/assets/gotry-system-architecture.light.png" />
68
+ <img alt="GoTry 系统架构——同步主链从对话经 TypeScript 候选枚举、评估与选择到事实闸,另示显式航班链 Z3 路径,外加状态与异步控制面、只读数据层" src="docs/assets/gotry-system-architecture.light.png" />
69
+ </picture>
70
+ </a>
71
+
72
+ > 交互版:[`docs/assets/gotry-system-architecture.html`](docs/assets/gotry-system-architecture.html)(archify 生成,showcase 校验通过)。分层:L2 dsh 插件 · L3 `ts/src/unified.ts` 内核 · L4 效应解译 + 实时桥 · L5 loopx 治理。ADR:[`docs/architecture.md`](docs/architecture.zh-CN.md)。
73
+
74
+ 能力分组:
75
+
76
+ - **证据优先的检索与路由** —— 实时来源与本人浏览器会话保持只读,并明确来源标签、通道健康建议和 fail-closed 事实边界。见[`docs/tools.md`](docs/tools.zh-CN.md)、[`docs/data-sources.md`](docs/data-sources.zh-CN.md)与[会话数据 RFC](docs/rfc/user-session-data-rfc.zh-CN.md)。
77
+ - **产物与本地复核** —— 行程 Markdown/HTML 产物可列出并作为源码阅读;原生预览与显式选择的 Lavish 反馈保持为独立宿主能力。见[产物与 Lavish 契约](docs/design/lavish-local.zh-CN.md#9-注册到产品工具面)。
78
+ - **外部事件** —— W2A 信封默认有界且 inert;监听器与传感器激活仍属于独立接缝。见[外部事件设计](docs/design/external-event-seam.zh-CN.md)。
79
+
80
+
81
+
82
+ ## 一段对话
83
+
84
+ https://github.com/user-attachments/assets/6d537bb7-7992-4cc7-8e89-6f111ef6793b
85
+
86
+ *说明性 animation-harness 对精简对话的录制——不是 `gotry web` 产品 UI 的真实 E2E(源文件:[SVG](docs/assets/demo.zh-CN.svg) · [webm](docs/assets/demo.zh-CN.webm)):*
87
+
88
+ ```
89
+ > 我想去洱海边发呆两三天,上海出发,预算 3000,年假别让我办公。
90
+
91
+ GoTry: 收到。先把约束记下来——
92
+ • 窗口: 2 天 • 出发: 上海 • 预算: ¥3000 全含
93
+ • 动机: 休整 / [escape_rest: 0.7] • 还没订任何东西
94
+
95
+ 引擎判定:
96
+ **大理·洱海: 现在不行** —— 2 天窗口装不下「至少 5 天的洱海休整」。
97
+ 放宽方案: 行程延长到 5 天,约 ¥4950。★已放入「下一次出发」清单。
98
+ **千岛湖: 可行** (G7315 06:35 出发,¥996,到达精力 84%,有效休整 4.4h)
99
+ **太湖: 可行** (G101 09:00 出发,¥716,有效休整 4.6h)
100
+ 建议: 千岛湖(意象匹配 80%)。
101
+
102
+ [骨架:openflights] ✓ SZX↔PVG 已校验 [实时API:hbcli] 上海机场在跑
103
+ [静态包:估算] G7315/G7316 价格按 7-8 月淡季估算
104
+ ```
105
+
106
+ > 标签:`[骨架:openflights]` 航线经公开航线库校验 · `[实时API:*]` 刚从实时接口拉回 · `[静态包:估算]` 估算,**订前核实**。标签由渲染层附加,模型无权染指。
107
+
108
+ ## 同题横评
109
+
110
+ 同一段真实的跨国 workation prompt(埋了考点:不给年份、模糊指代「万xx」、用户已自行消解的歧义)逐字投喂各家主流 AI,回答逐字存档、对照地面真值打分([`docs/evaluation/persona-bench/`](docs/evaluation/persona-bench/README.zh-CN.md))。
111
+
112
+ | 维度 | 通用助手(Kimi,真实 13 轮) | OTA Agent(飞猪开放平台,单轮) | GoTry 契约 |
113
+ |---|---|---|---|
114
+ | 日历 grounding | ✗ 2025 年历;用户三次纠正、三次道歉式重排 | ✗ 派生星期落 2025 年历,与同页自答自相矛盾 | (2)(8)(9)+时间锚点卡 |
115
+ | 约束访谈 | ✗ 零提问;两个要害约束第 6 轮才由用户说出 | △ 只问销售资质(预算/星级/靠海),必答题零命中 | (1)(10) |
116
+ | 可行性与时间账 | ✗ 密度幻觉,被用户点破 | ✗ 香港办事+当天飞普吉无时间账;「约8小时」与自己的到达时刻矛盾 | (4)+门到门全成本 |
117
+ | 事实可证性 | △ 目的地研究经得起对 | ✗ 停业航司(2020 年歇业)仍在售;价格全部无出处 | (3)(7)(13)(20) |
118
+ | 结构完整性 | △ 第 13 轮才长出像样的对比表 | ✓✓ 单轮骨架最全——完整是基本盘 | 验证过的完整(事实闸) |
119
+ | 人格一句话 | 博学但无状态的聊天者——用户被迫干四份工 | 版式完美的 OTA 导购——每段止于价格表 | 可信赖的行程工程师:访谈先行、求解器判决、不可行明说 |
120
+
121
+ > **证据边界:**这是定性比较,不是分数表。Kimi/飞猪两列来自存档 transcript(13 轮 vs 单轮);GoTry 一列是仓库行为契约。不主张排名或提升。
122
+
123
+ 单条最有价值的发现:两家互不相关的产品,星期全落在 2025 年历上——日历锚定必须是产品机制,不是模型运气([复盘全文](docs/research/kimi-postmortem.zh-CN.md))。
124
+
125
+ ## 快速开始
126
+
127
+ ```bash
128
+ npx @danceiny/gotry web # → 浏览器打开 http://127.0.0.1:3080
129
+ npx @danceiny/gotry doctor # 可选渠道体检(--fix 补装)
130
+ npx @danceiny/gotry "我想从深圳休整两天,预算 3000" # headless 一问一答
131
+ ```
132
+
133
+ 前置 Node ≥ 22.15。LLM key 由 dsh 宿主 UI 配(OpenAI 兼容端点同),gotry 不问也不回显。任何 npm 兼容 registry 皆可;镜像 `latest` 滞后时钉精确版本。仓内请走源码入口 `./gotry web`(裸名 npx 在仓内会失败)。符合条件的启动可能提供一次可选能力检查;CI / 非 TTY 不询问、不安装。onboarding 细节与运维脚本:[`docs/tools.md`](docs/tools.zh-CN.md)。源码安装:`npm ci && npm --prefix ts ci && node scripts/build-dist.mjs`——与 npm 包同一组钉死的 DSH `0.2.0-rc.2` closure。全栈验证:`./scripts/run-all-tests.sh`。
134
+
135
+ ## 隐私与可信
136
+
137
+ 个人桌面账号会话通道用**你本人已登录的 Chrome** 读实时数据,四条规则:
138
+
139
+ 1. **登录在外部网站完成** —— 不碰密码、验证码、cookie 值;只读 cookie **名字**。
140
+ 2. **授权卡,每会话一次** —— 拒绝即吊销;总闸 `sessionAccess: ask|allow|off`。
141
+ 3. **物理只读** —— ReadGuard 在网络层中止写请求;遇验证码立即停。
142
+ 4. **绝不劫持你的浏览器** —— 只开独立标签页;测试永不自动开窗。
143
+
144
+ 前置(一次性):[Stai Travel Bridge 扩展](https://chromewebstore.google.com/detail/gotry-session-bridge/oeajpiccmonococjcegddlooeeohlbgd)(一键装、自动更新);未安装时工具返回 `needs-extension` 并附链接,不消耗配额。独立的 HotelByte 员工门户形态可将检索数据发往获准的后端桥,也会在内存中处理一次性供应商登录凭据;详见[扩展隐私政策](docs/ops/extension-privacy.zh-CN.md)。
145
+
146
+ 可信不靠承诺,靠构造:
147
+
148
+ 1. **模型只翻译,代码才判决** —— LLM 不产出可行性判决与算术。
149
+ 2. **每个数字带来源标签** —— 渲染层附加,降级如实更换。
150
+ 3. **不存在已激活的供应商预订/支付写路径** —— 机制存在但尚未激活;此类工具必须先过 WriteGate。
151
+ 4. **回溯不到就是 blocked** —— 无法回溯到 exact-date 工具结果的 claim 绝不交付为「已验证」;锚点带指纹。
152
+ 5. **价格 fail-closed** —— 未知模型不猜价;价表只经 PR 变更。
153
+ 6. **你的数据是你的** —— 状态在 `gotry-state/`;测试用隔离 state root。
154
+
155
+ ## 状态与路线图
156
+ 当前边界:确定性规划与有证据边界的只读能力已经可用;预订与真实用户验收仍不属于当前交付声明。见[架构权威文档](docs/architecture.zh-CN.md)与[路线图](docs/roadmap.zh-CN.md)。
157
+
158
+ npm `latest`:**v0.0.1-rc.24**。未到 1.0:核心链路已端到端可用;评测仍停留在确定性合同与校验器阶段,无外部分数、无 uplift 声明。外部 W2A 事件仍是合同层、默认 inert;尚无真实 sensor 桥或 consumer 激活。
159
+
160
+ **今天可用**
161
+
162
+ - 访谈、确定性可行性判决,以及带门到门真成本的行程。
163
+ - 只读实时检索,事实 typed、与调用绑定,并明确标注来源。
164
+ - tenant-scoped 记忆,覆盖动机、愿望、同行人、时间线与 durable 工单。
165
+ - 从注册的会话事实生成不覆盖的行程 HTML,并提供有范围的自检和经批准的修复路径。
166
+
167
+ **还没有**
168
+
169
+ - 当前没有供应商预订或支付路径;未来写入仍受 WriteGate 与可信用户确认约束。
170
+ - 实时可订证据仍部分覆盖,真实用户 cohort 尚未达到退出口径。
171
+ - 英文仍只覆盖求解输出层。
172
+
173
+ ```mermaid
174
+ timeline
175
+ title 从出发到下一次出发
176
+ M0 ✅ : 确定性管道——双引擎对账
177
+ M1 ✅ : Agent 形态——对话即界面
178
+ M2 ✅ : 实时数据——证据链换实时标签
179
+ M3 ◀ 当前 : MVP——最小 Web 面 + 50–200 种子用户,evidence 未收口
180
+ M4 : 记忆与「下一次出发」——愿望池 · cohort 证据
181
+ M5 : 交易闭环——WriteGate 闸下的预订
182
+ M6 : B2B 包裹——内核零改动的 sponsor 插件
183
+ ```
184
+
185
+ 里程碑进出闸:[`docs/roadmap.md`](docs/roadmap.zh-CN.md) · 工程状态:[`docs/architecture.md`](docs/architecture.zh-CN.md) · 逐版本决策:[`docs/release-notes.md`](docs/release-notes.zh-CN.md) + [CHANGELOG.md](CHANGELOG.md)。
186
+
187
+ ## 参与开发
188
+
189
+ 从最新 `main` 切 `feat/ · fix/ · docs/ · chore/` 分支,typecheck + 全栈回归全绿后开 PR。**测试红着不许合。** 指南:[CONTRIBUTING.md](CONTRIBUTING.zh-CN.md)。
190
+
191
+ AI agent:[`AGENTS.md`](AGENTS.zh-CN.md) 是绑定契约——入场先清扫异步工单 · 算术只在 evaluate 层、求解只在 `unified.*` · 绝不写共享状态(`ts/dsh-runtime/gotry-state/`)· 只更新 `architecture.md` §11 定义的受影响文档权威 · 只暂存具名文件,禁止 `git add -A`。
192
+
193
+ ## 文档
194
+
195
+ 每篇文档以双语对(英文 `x.md` + 中文 `x.zh-CN.md`)为准绳,成对不一致视为 bug(机器生成的 `CHANGELOG.md` 与工具自管的 `superpowers/` 豁免)。
196
+
197
+ | 文档 | 内容 |
198
+ |---|---|
199
+ | [`docs/architecture.md`](docs/architecture.zh-CN.md) | 系统 / ADR / 演进 / 债务(权威) |
200
+ | [`docs/roadmap.md`](docs/roadmap.zh-CN.md) | M0–M6 时间线与当前位置 |
201
+ | [`docs/user-guide.md`](docs/user-guide.zh-CN.md) | 终端用户使用指南 |
202
+ | [`docs/tools.md`](docs/tools.zh-CN.md) | 工具参考面:契约 · 路由 · onboarding |
203
+ | [`docs/data-sources.md`](docs/data-sources.zh-CN.md) | 数据源与证据链政策 |
204
+ | [`docs/release-notes.md`](docs/release-notes.zh-CN.md) | 逐版本发布决策(「为什么」) |
205
+ | [`CHANGELOG.md`](CHANGELOG.md) | 机器衍生变更日志 |
206
+ | [`docs/README.md`](docs/README.zh-CN.md) | 文档规范与总索引 |
207
+
208
+ ## License
209
+
210
+ **MIT**——与上游 dsh 一致。文本见 [LICENSE](LICENSE)。
211
+
212
+ **Built with**: DeepSeek Harness 0.2.0-rc.2 (root-pinned) · Cordis · Z3 (WASM) · loopx (pipx) · hotelbyte-cli · Agent-Reach v1.5.0 · OpenFlights · TypeScript
213
+
214
+ **版本基线:`v0.0.1-rc.24`(npm `latest`)。** 验证闸:`scripts/run-all-tests.sh`;发布流程:`scripts/publish-npm.sh`。
215
+
216
+ <a href="https://www.star-history.com/?repos=danceiny%2Fgotry&type=date&legend=top-left">
217
+ <picture>
218
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=danceiny/gotry&type=date&theme=dark&legend=top-left" />
219
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=danceiny/gotry&type=date&theme=light&legend=top-left" />
220
+ <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=danceiny/gotry&type=date&legend=top-left" />
221
+ </picture>
222
+ </a>
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env node
2
+ /** Standalone GoTry backend — one service, modules mount routes (booking-copilot, session-search). */
3
+
4
+ import { existsSync, readFileSync } from 'node:fs'
5
+ import { dirname, join } from 'node:path'
6
+ import { fileURLToPath, pathToFileURL } from 'node:url'
7
+
8
+ const here = dirname(fileURLToPath(import.meta.url))
9
+ const root = join(here, '..')
10
+ const entryPath = join(root, 'dist/src/gotry-backend.js')
11
+
12
+ function safeError(error) {
13
+ let message = error instanceof Error ? error.message : String(error)
14
+ for (const secret of [
15
+ process.env.GOTRY_BOOKING_COPILOT_API_KEY,
16
+ process.env.GOTRY_BACKEND_SESSION_API_KEY,
17
+ process.env.DEEPSEEK_API_KEY,
18
+ process.env.LLM_API_KEY,
19
+ ]) {
20
+ if (secret) message = message.replaceAll(secret, '[REDACTED]')
21
+ }
22
+ return message.slice(0, 512)
23
+ }
24
+
25
+ async function main() {
26
+ if (!existsSync(entryPath)) throw new Error('gotry_backend_compiled_runtime_missing')
27
+ const artifactPath = join(root, 'ARTIFACT_ID')
28
+ if (existsSync(artifactPath)) {
29
+ const artifactId = readFileSync(artifactPath, 'utf8').trim()
30
+ if (!/^[0-9a-f]{40}$/.test(artifactId)) throw new Error('gotry_backend_artifact_id_invalid')
31
+ process.env.GOTRY_BOOKING_COPILOT_ARTIFACT_ID = artifactId
32
+ }
33
+ const backend = await import(pathToFileURL(entryPath).href)
34
+ const handle = await backend.startGotryBackendFromEnvironment(process.env)
35
+ process.stderr.write(`[gotry-backend] listening on http://127.0.0.1:${handle.port}; modules=${handle.moduleNames.join(',')}\n`)
36
+
37
+ let stopping = false
38
+ const stop = () => {
39
+ if (stopping) return
40
+ stopping = true
41
+ void handle.close().then(() => process.exit(0), (error) => {
42
+ process.stderr.write(`[gotry-backend] shutdown failed: ${safeError(error)}\n`)
43
+ process.exit(1)
44
+ })
45
+ }
46
+ process.once('SIGINT', stop)
47
+ process.once('SIGTERM', stop)
48
+ }
49
+
50
+ main().catch((error) => {
51
+ process.stderr.write(`[gotry-backend] startup failed: ${safeError(error)}\n`)
52
+ process.exitCode = 1
53
+ })
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env node
2
+ /** Standalone, BFF-only Booking Copilot HTTP/SSE service. */
3
+
4
+ import { existsSync, readFileSync } from 'node:fs'
5
+ import { dirname, join } from 'node:path'
6
+ import { fileURLToPath, pathToFileURL } from 'node:url'
7
+
8
+ const here = dirname(fileURLToPath(import.meta.url))
9
+ const root = join(here, '..')
10
+ const startupPath = join(root, 'dist/src/booking-surface/startup.js')
11
+
12
+ function safeError(error) {
13
+ let message = error instanceof Error ? error.message : String(error)
14
+ for (const secret of [
15
+ process.env.GOTRY_BOOKING_COPILOT_API_KEY,
16
+ process.env.DEEPSEEK_API_KEY,
17
+ process.env.LLM_API_KEY,
18
+ ]) {
19
+ if (secret) message = message.replaceAll(secret, '[REDACTED]')
20
+ }
21
+ return message.slice(0, 512)
22
+ }
23
+
24
+ async function main() {
25
+ if (!existsSync(startupPath)) throw new Error('booking_copilot_compiled_runtime_missing')
26
+ const artifactPath = join(root, 'ARTIFACT_ID')
27
+ if (existsSync(artifactPath)) {
28
+ const artifactId = readFileSync(artifactPath, 'utf8').trim()
29
+ if (!/^[0-9a-f]{40}$/.test(artifactId)) throw new Error('booking_copilot_artifact_id_invalid')
30
+ process.env.GOTRY_BOOKING_COPILOT_ARTIFACT_ID = artifactId
31
+ }
32
+ const startup = await import(pathToFileURL(startupPath).href)
33
+ const config = startup.resolveBookingCopilotStartupConfig(process.env)
34
+ const handle = await startup.startBookingCopilotFromEnvironment(process.env)
35
+ process.stderr.write(`[gotry-booking-copilot] listening on http://${config.host}:${handle.port}/a2a/booking-copilot/turn\n`)
36
+
37
+ let stopping = false
38
+ const stop = () => {
39
+ if (stopping) return
40
+ stopping = true
41
+ void handle.close().then(() => process.exit(0), (error) => {
42
+ process.stderr.write(`[gotry-booking-copilot] shutdown failed: ${safeError(error)}\n`)
43
+ process.exit(1)
44
+ })
45
+ }
46
+ process.once('SIGINT', stop)
47
+ process.once('SIGTERM', stop)
48
+ }
49
+
50
+ main().catch((error) => {
51
+ process.stderr.write(`[gotry-booking-copilot] startup failed: ${safeError(error)}\n`)
52
+ process.exitCode = 1
53
+ })