@onride/agent 0.0.0-stage → 0.5.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +31 -0
- package/LICENSE +21 -0
- package/README.md +174 -2
- package/dist/account_balances.js +435 -0
- package/dist/account_reads.js +199 -0
- package/dist/agent/adapter.js +115 -0
- package/dist/agent/analytics.js +174 -0
- package/dist/agent/backend.js +237 -0
- package/dist/agent/card_hosts.js +9 -0
- package/dist/agent/contracts.js +276 -0
- package/dist/agent/conversational.js +86 -0
- package/dist/agent/core_bridge.js +1155 -0
- package/dist/agent/deposits.js +309 -0
- package/dist/agent/discovery.js +205 -0
- package/dist/agent/domain.js +507 -0
- package/dist/agent/firebase.js +34 -0
- package/dist/agent/funding.js +230 -0
- package/dist/agent/http.js +40 -0
- package/dist/agent/human.js +298 -0
- package/dist/agent/human_handoffs.js +39 -0
- package/dist/agent/ledger.js +137 -0
- package/dist/agent/mcp.js +245 -0
- package/dist/agent/order_rules.js +61 -0
- package/dist/agent/perps_account.js +41 -0
- package/dist/agent/prediction.js +607 -0
- package/dist/agent/prediction_equity_history.js +910 -0
- package/dist/agent/prediction_history.js +336 -0
- package/dist/agent/preferences.js +114 -0
- package/dist/agent/repository.js +106 -0
- package/dist/agent/runner.js +683 -0
- package/dist/agent/service.js +1347 -0
- package/dist/backend.js +6 -0
- package/dist/bridge.js +6 -0
- package/dist/cli/clients.js +99 -0
- package/dist/cli/commands.js +332 -0
- package/dist/cli/onboarding.js +53 -0
- package/dist/cli/session.js +224 -0
- package/dist/cli/setup.js +256 -0
- package/dist/cli.js +16 -0
- package/dist/guide.js +92 -0
- package/dist/http_security.js +79 -0
- package/dist/mcp-cli.js +7 -0
- package/dist/oauth.js +1032 -0
- package/dist/server.js +171 -0
- package/dist/start.js +18 -0
- package/dist/version.js +25 -0
- package/docs/confirmation-cards.md +118 -0
- package/docs/conversation-v050.md +30 -0
- package/docs/conversational-v17.md +48 -0
- package/docs/deployment.md +58 -0
- package/docs/perps-leverage.md +43 -0
- package/docs/prediction-history.md +28 -0
- package/docs/preferences-funding-v042.md +17 -0
- package/docs/ride-agent-migration.md +127 -0
- package/docs/v17-completion-checklist.md +31 -0
- package/docs/v17-rollout.md +44 -0
- package/docs/widget-account-v043.md +17 -0
- package/package.json +75 -4
- package/public/agent.html +2313 -0
- package/public/confirm.html +2373 -0
- package/public/fund.html +563 -0
- package/skills/ride/SKILL.md +18 -0
- package/skills/ride/references/commands.md +47 -0
- package/skills/ride/references/workflow.md +47 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Ride Agent distribution migration
|
|
2
|
+
|
|
3
|
+
Ride Agent is the **AI Copy-Trading Agent**. It helps you discover traders, build a personalized copy-trading portfolio, and start copying after your confirmation.
|
|
4
|
+
|
|
5
|
+
## Release state
|
|
6
|
+
|
|
7
|
+
This migration introduces **@onride/agent 0.5.1** in the company npm organization and the company GitHub repository **onride-app/ride-agent**. Registry publication, GitHub release integrity and hosted deployment each have separate acceptance checks below.
|
|
8
|
+
|
|
9
|
+
Company ownership and transfer verified on 2026-10-17:
|
|
10
|
+
|
|
11
|
+
| Item | Verified state |
|
|
12
|
+
| --- | --- |
|
|
13
|
+
| Company name | `onride`; independent GitHub organization registered under Corporate terms, Free plan |
|
|
14
|
+
| Old public npm latest | `@glenyang/ride-cli@0.5.0` |
|
|
15
|
+
| New package/release | `@onride/agent@0.5.1`, `onride-app/ride-agent#v0.5.1`; use registry/install checks below to verify availability |
|
|
16
|
+
| npm CLI | Authenticated as `glenyang`; account 2FA enabled for authorization and publishing |
|
|
17
|
+
| npm organization | `onride` exists; Free plan, unlimited public packages, $0 monthly; sole current Owner `glenyang`, account 2FA and organization 2FA enforcement enabled |
|
|
18
|
+
| GitHub source | Original `Glen-yang/ride-mcp` transferred in place; leave the old location unused to retain redirects |
|
|
19
|
+
| GitHub destination | `onride-app/ride-agent`, public, same repository ID; all 50 pre-transfer Git refs, 14 releases and 13 issue/PR records retained |
|
|
20
|
+
| Company ownership | Founder Glen confirmed as final responsible owner: GitHub `Glen-yang` is organization Owner, npm `glenyang` is organization Owner; `admin@onride.me` verified on npm and set as GitHub organization billing email |
|
|
21
|
+
| Developer access | Only the founder is currently a member; add independent developer accounts through repository/team permissions when their usernames are supplied |
|
|
22
|
+
| Production MCP | Retain `https://mcp.onride.me/mcp` and its OAuth issuer |
|
|
23
|
+
| Website/directories | `onride.me` is the Ride App website; update actual Agent entries after package acceptance and record each existing directory listing separately |
|
|
24
|
+
|
|
25
|
+
Release maintainers must pass the registry installation checks below before announcing a new version or deprecating the old package. Namespace ownership alone does not establish that a package version is downloadable.
|
|
26
|
+
|
|
27
|
+
## New installation and existing-user upgrade
|
|
28
|
+
|
|
29
|
+
New users run:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
npx -y @onride/agent
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Existing users run once on their original computer:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
npx -y --prefer-online @onride/agent@latest setup --skip-login
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Add `--client codex`, `--client claude-code` or `--client cursor` to choose a client explicitly. Run once per client if several are installed. Omit `--server` to preserve the installed URL; an environment override `RIDE_MCP_URL` is an explicit server selection and must match the existing registration. Reconnect MCP or open a new chat afterwards.
|
|
42
|
+
|
|
43
|
+
The CLI command, MCP registration key and Skill directory remain `ride`. MCP implementations advertise the independent display title `Ride Agent`. Tool names, `ride:read`/`ride:trade` scopes and the `~/.ride` session path remain unchanged. Codex keeps its native OAuth store and HTTP entry; Claude Code/Cursor retain their stdio session. Migration does not request login or broader scopes when `--skip-login` is used.
|
|
44
|
+
|
|
45
|
+
The installer recognizes released fixed-version npm/GitHub launchers and the old npm `latest` launcher, including the actual published 0.5.0 Skill tree. It replaces only managed registrations and known unmodified Skills. Custom servers and unrelated client settings survive. Custom arguments, environment entries, wrappers, unrecognized versions or edited Skills require manual review; conflicts leave the original files untouched and report their paths.
|
|
46
|
+
|
|
47
|
+
An old namespace cannot redirect its `latest` dist-tag to another package. The explicit command above performs the namespace migration. A globally installed old `ride` binary also stays on its installed package. Prefer the npx command for migration. To switch the optional global binary after the new package is verified:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
npm uninstall -g @glenyang/ride-cli
|
|
51
|
+
npm install -g @onride/agent@latest
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
If global installation fails, restore the previous binary with `npm install -g @glenyang/ride-cli@0.5.0` or keep using the new npx command. Neither global operation deletes `~/.ride`.
|
|
55
|
+
|
|
56
|
+
For a fixed source/version:
|
|
57
|
+
|
|
58
|
+
```sh
|
|
59
|
+
npx -y @onride/agent@0.5.1 setup --client cursor --skip-login
|
|
60
|
+
npx -y github:onride-app/ride-agent#v0.5.1 setup --client cursor --skip-login --distribution github
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The first command pins the installer; generated npm MCP launches deliberately follow `@onride/agent@latest`. Explicit GitHub distribution pins subsequent launches to the release tag. The GitHub tag must point to the exact reviewed release commit.
|
|
64
|
+
|
|
65
|
+
## Conflicts and failure recovery
|
|
66
|
+
|
|
67
|
+
Back up a custom client's configuration and `skills/ride` before reviewing it. In a custom stdio registration, update only the package argument after checking its flags and server; keep `ride`, unrelated MCP entries and user options. Merge the packaged Skill with the user's notes manually. Setup will continue refusing to overwrite a customized Skill; the merged instructions can be used as a deliberately user-managed installation.
|
|
68
|
+
|
|
69
|
+
Setup stages its configuration and Skill, checks that both originals still match, and commits using rename. If the configuration commit fails after a Skill replacement, it restores the old Skill and leaves the original configuration and session untouched. Resolve the reported file/access error and rerun the same upgrade command. Login failure after a successful installation retains the valid installation; retry login separately. Never delete the user's session or original configuration to force a migration.
|
|
70
|
+
|
|
71
|
+
## Company ownership and repository transfer
|
|
72
|
+
|
|
73
|
+
1. Create/confirm npm `onride` using the **Unlimited public packages** free plan. Verify availability during creation, not from a public 404. Confirm the company/founder Owner and developer account names. Enforce 2FA and give developers package publishing access through an appropriate team; do not distribute passwords or tokens.
|
|
74
|
+
2. Finish the GitHub **onride-app** Free organization as a business-owned organization, using business name `onride` and the owner-confirmed contact email. Accept its agreement only with the authorized person's approval. Confirm company/founder Owner access, developer repository access and 2FA.
|
|
75
|
+
3. Transfer the existing repository to that organization and rename it **ride-agent**. Do not create a replacement empty repository, rewrite history or recreate releases. Before/after evidence must compare commit and tag refs, releases, issues/PRs and project access. Check installed GitHub Apps, Actions/environment protection, webhooks, Railway source integration and deployment configuration.
|
|
76
|
+
4. Update `origin` only after transfer is confirmed. Preserve the old GitHub redirect by leaving the previous repository location unused. Confirm clone/fetch and fixed release-tag installs at the new URL. Package repository metadata, homepage and issues links must all resolve to the company repository.
|
|
77
|
+
|
|
78
|
+
Official references: [npm organization creation](https://docs.npmjs.com/creating-an-organization/), [GitHub repository transfer](https://docs.github.com/en/repositories/creating-and-managing-repositories/transferring-a-repository).
|
|
79
|
+
|
|
80
|
+
## Publish and distribution sequence
|
|
81
|
+
|
|
82
|
+
Run the source checks, isolated database tests, package verification and online release checks from the reviewed/tagged company repository:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
npm ci
|
|
86
|
+
npm run check
|
|
87
|
+
RIDE_AGENT_TEST_DATABASE_URL=postgresql://LOCAL_DISPOSABLE_DATABASE npm test
|
|
88
|
+
RIDE_AGENT_FUNCTIONAL_DATABASE_URL=postgresql://LOCAL_DISPOSABLE_DATABASE npm run test:functional
|
|
89
|
+
npm run verify:package
|
|
90
|
+
npm run verify:release -- --online
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
`verify:package` rebuilds, packs and installs a local tarball, checks its file list/common credential formats, exercises fresh and repeat setup for all three clients, and initializes the built stdio MCP. `verify:release -- --online` requires an accessible company-owned repository, an exact release tag and an unused npm version. Passing the local metadata check alone does not establish ownership or publication.
|
|
94
|
+
|
|
95
|
+
For the initial authenticated publish, use `npm publish --access public` only after owner/team/2FA checks. For CI, bind npm trusted publishing to **onride-app / ride-agent / publish.yml / npm-production**, allowing direct publish. Configure the GitHub `npm-production` environment with company release reviewers and tag restrictions before using it. The manual workflow runs only from a version tag, checks the repository/ref against package metadata and uses GitHub OIDC without storing a publishing token. Node 24 supplies the supported npm client. See [npm trusted publishing](https://docs.npmjs.com/trusted-publishers/).
|
|
96
|
+
|
|
97
|
+
After publishing, verify public registry metadata/integrity; run both `npx -y @onride/agent --help` and `npx -y --prefer-online @onride/agent@latest --help`; install the fixed version and GitHub tag into isolated client homes; initialize each supported transport and perform read-only queries. Exercise proposal confirmation and execution only with the isolated simulated venue. Local/CI tests do not establish a live client login or real exchange execution.
|
|
98
|
+
|
|
99
|
+
Deploy the reviewed display changes to the existing hosted gateway using the normal deployment sequence; check OAuth display, MCP title, live guide and read paths separately. Do not change endpoints, scopes, tool identifiers, trading flags or service role identifiers as part of the branding rollout.
|
|
100
|
+
|
|
101
|
+
Update actual Agent website/install entries and existing plugin/MCP listings only after registry and hosted acceptance. The public `onride.me` homepage currently presents the Ride App; its App branding is a separate surface. Obtain its editing access and identify the actual Agent entry/listings before changing it. Do not claim an unverified directory submission or replace the native App brand globally.
|
|
102
|
+
|
|
103
|
+
Finally publish the old-package migration notice/deprecation. Example **only after new-package acceptance**:
|
|
104
|
+
|
|
105
|
+
```sh
|
|
106
|
+
npm deprecate '@glenyang/ride-cli@*' 'Renamed to @onride/agent. Upgrade once: npx -y --prefer-online @onride/agent@latest setup --skip-login. Details: https://github.com/onride-app/ride-agent/blob/main/docs/ride-agent-migration.md'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Keep the old package downloadable. Do not unpublish it or move its latest tag as a substitute for migration.
|
|
110
|
+
|
|
111
|
+
## Acceptance evidence
|
|
112
|
+
|
|
113
|
+
| Check | Local result |
|
|
114
|
+
| --- | --- |
|
|
115
|
+
| TypeScript check / Skill validation | Passed |
|
|
116
|
+
| Regression tests with isolated PostgreSQL | 211 passed, 0 failed, 0 skipped, including current main's confirmation-card compatibility fixes |
|
|
117
|
+
| Functional OAuth/MCP/CLI/Pg and simulated execution | 45 passed, 0 failed; no real funds moved |
|
|
118
|
+
| Packed files / installed CLI / all-client fresh and repeat setup | Passed; see the verification JSON for the final file count and tarball size |
|
|
119
|
+
| Built MCP identity | `name=ride`, `title=Ride Agent`, release 0.5.1 |
|
|
120
|
+
| Published 0.5.0 upgrades | Fixed npm, old npm latest and GitHub launchers on all 3 clients passed |
|
|
121
|
+
| Custom server, unrelated settings and session preservation | Passed |
|
|
122
|
+
| Custom configuration refusal / failed commit rollback and retry | Passed |
|
|
123
|
+
| GitHub transfer integrity | Same repository ID and all pre-transfer refs, releases, issue/PR records and environments preserved |
|
|
124
|
+
| Online release gate | Must verify the company repository, exact release tag and unused npm version immediately before publishing |
|
|
125
|
+
| Registry, hosted service and external entries | Verify and record separately using the release checks above; local tests alone do not establish publication or deployment |
|
|
126
|
+
|
|
127
|
+
Compatibility strings remain intentionally in `src/cli/setup.ts`, migration tests/fixtures and upgrade/rollback documentation. Historical service names such as Railway `ride-mcp`, internal health identifiers, App names, existing OAuth scopes and storage keys retain their meanings.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Ride V17 completion and release checklist
|
|
2
|
+
|
|
3
|
+
Scope: finish the supplied conversational HTML in isolated Ride MCP services. Old App service sources, GraphQL/RPC contracts, copy tables and client notification branches remain unchanged.
|
|
4
|
+
|
|
5
|
+
Implemented:
|
|
6
|
+
- Single trader and explicit 2–8 trader baskets; old plans keep 3–6.
|
|
7
|
+
- Independent risk tolerance, Fixed/proportional settings and amount/leverage editing.
|
|
8
|
+
- Verified source-fill entry sizing and same-window reductions; gaps block increases.
|
|
9
|
+
- New 30% pause / 70% emergency exit, portfolio stop precedence; legacy single-threshold semantics retained.
|
|
10
|
+
- Persisted free preview batches, quota enforcement, cross-batch basket editing.
|
|
11
|
+
- Overlap warnings, improving alternatives, frozen-plan acknowledgment.
|
|
12
|
+
- Supported deposit routes, owned receiving address/QR, owner-isolated status; wallet/bridge receipt and trade-ready collateral are separate.
|
|
13
|
+
- Once-per-local-day check-in, daily/weekly/inception reports, profit/value chart and recorded fills.
|
|
14
|
+
- Real RWA taxonomy, exact qualified symbols, Standard mode and scoped USDC collateral.
|
|
15
|
+
- CLI/Skill parity and upgrade from the released 0.3.4 tree.
|
|
16
|
+
|
|
17
|
+
Observed validation before deployment: 92 TypeScript tests passed with dedicated PostgreSQL; 35 functional HTTP/MCP/OAuth/CLI/PostgreSQL scenarios passed using simulated identities/fills; Skill validation passed; package verification passed for three clients and bare setup. The final Fixed regression proves that new assets and direction flips require fills even when a source history response reports complete coverage. Core: 8 Strategy gRPC tests, 37 execution tests, and a disposable-schema PostgreSQL trigger test passed.
|
|
18
|
+
|
|
19
|
+
Browser acceptance after the final edits passed: single Fixed trader selection and replacement, amount/leverage recalculation, zero-balance rejection, funding-route restrictions and QR/status/resume, immutable proposal confirmation, unrecalculated edits staying disabled after overlap acknowledgment, profit/account-value switching, notification settings, and 390px layout without horizontal overflow. Evidence is in the ignored `output/deployment/v17-acceptance/` directory.
|
|
20
|
+
|
|
21
|
+
Production checks completed: independent Core API/gRPC and dedicated worker are online with one running replica each; service authentication and API route isolation passed; four Agent guards are present and the shared 206-entry migration registry is unchanged. All three MCP services run Fixed safety revision `271081b` and release 0.4.0. Public health/OAuth metadata, 21-tool discovery and reviewed-card hash parity passed. Bridge uses the independent Core with RWA enabled, returned 30 candidates and nine funding routes. Authenticated App copy/portfolio reads have complete coverage; owned deposit address, QR and awaiting-deposit status passed. Empty performance/daily-check-in behavior and notification delivery readiness passed for the signed-in account without an Agent portfolio. Official RWA taxonomy and `xyz` USDC metadata passed; the current strict pool has no RWA-tagged traders and correctly returns no executable RWA plan. Funded fills and physical pushes remain unverified.
|
|
22
|
+
|
|
23
|
+
Live new-flow acceptance: a 500 USDC single-trader preview returned nine eligible crypto candidates, one Fixed allocation with 20 USDC entry margin, and the opt-in pause/70% emergency-exit policy. No order was submitted.
|
|
24
|
+
|
|
25
|
+
Account/device acceptance still required:
|
|
26
|
+
- Native report PR 20 is prepared but still separate from the MCP release.
|
|
27
|
+
- Actual wallet transfer, real funded fills and physical-device push require appropriate account/device acceptance; fixture results do not establish those outcomes.
|
|
28
|
+
|
|
29
|
+
Distribution gate: publish only after server acceptance, complete npm's per-release publisher 2FA, and verify the publicly downloaded package. The release receipt records registry/GitHub URLs separately from runtime and device acceptance.
|
|
30
|
+
|
|
31
|
+
The six-service Agent rollout has settled. Existing App API/gRPC/worker deployment IDs match the baseline and App readiness/GraphQL reads returned 200; scheduler had a separate deployment outside this Agent patch. Railway permission was explicitly changed by the user to a plugin-specific `Allow all actions` override to remove repeated deployment confirmation. See `v17-rollout.md` for deployment evidence, sequence and rollback boundary.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Ride V17 rollout: 0.4.0
|
|
2
|
+
|
|
3
|
+
Complete the supplied conversational HTML in the independent Agent services. Keep existing App API/gRPC/worker/scheduler sources, environment flags, GraphQL/RPC contracts, copy tables and mobile release unchanged.
|
|
4
|
+
|
|
5
|
+
## Reviewed source
|
|
6
|
+
|
|
7
|
+
- MCP branch `codex/ride-v17-complete`, based on the account/login fixes from PR 3. Its new changes are reviewed separately from those prerequisite fixes.
|
|
8
|
+
- Core branch `codex/ride-rwa-worker-v17`, commit `22cc5c0446432b94db88c7b1d48c2dc16b1104fd`, PR 6. It modifies Agent execution handling and adds an internal-only API mode. Qualified markets remain opt-in and require an Agent binding.
|
|
9
|
+
- New Core gRPC initialization applies only Agent execution-table guards and leaves SQLx migration history unchanged. Lock/statement timeouts bound initialization. Non-Agent bindings retain their core-only market restrictions.
|
|
10
|
+
|
|
11
|
+
## Deployment sequence
|
|
12
|
+
|
|
13
|
+
1. In `generous-quietude/production`, create `ride-agent-core-grpc-v17` and `ride-agent-core-api-v17` from the pinned Core commit. gRPC listens on 50051; API listens on 8001, checks `/ready`, exposes only health/readiness and authenticated `/internal/agent-core/*`, and starts no legacy forwarders or Meme sync. Set `DIRECT_DEPOSIT_INDEXER_ENABLED=false` on the independent API to avoid duplicating the existing indexer.
|
|
14
|
+
2. Wait for both deployments and readiness, and check the four Agent market guards. Generate an HTTPS API domain for the bridge in the separate Railway project. Verify GraphQL/public App routes are unavailable on this Agent API and internal operations reject missing/invalid service auth.
|
|
15
|
+
3. Point only `ride-agent-execution-prod` at `http://ride-agent-core-grpc-v17.railway.internal:50051`, set its RWA opt-in, and deploy the pinned Core commit. Preserve existing execution/signing/epoch flags and worker mode. Its current baseline is deployment `37f05cc8-c559-4723-85c2-706ed4c97820`.
|
|
16
|
+
4. In `ride-mcp/production`, deploy `agent-bridge` and `agent-backend` from the reviewed MCP commit. Point the bridge to the new protected HTTPS API and set `RIDE_AGENT_RWA_ENABLED=true`. Preserve Firebase, signing credentials, identity URLs and current execution activation flags. Keep one backend monitor and its current zero-overlap setting.
|
|
17
|
+
5. Once bridge/backend health and authenticated read probes pass, deploy `ride-mcp` from the same MCP commit. Verify release 0.4.0, OAuth metadata, MCP tool discovery, cards, owned account reads, deposit options/address/status, performance and report settings without placing orders.
|
|
18
|
+
6. Compare legacy App service deployment IDs/configs against `output/deployment/v17-acceptance/legacy-deployment-baseline.json`, then check App health and representative read paths. Publish npm/GitHub 0.4.0 only after server acceptance; npm requires the publisher's per-release 2FA.
|
|
19
|
+
|
|
20
|
+
## Current production evidence (2026-10-12)
|
|
21
|
+
|
|
22
|
+
The independent Core API, gRPC and dedicated execution worker are running pinned revision `22cc5c0`; all three Railway deployments succeeded with one running replica each. The worker connects to the new Agent gRPC in strategy-only mode with the existing Privy signer. Its superseded deployment was retired after the new instance started. Core `/ready` returns 200, missing/invalid service credentials return 401, an authenticated trader-pool read returns 81 rows, and GraphQL returns 404 on the independent API.
|
|
23
|
+
|
|
24
|
+
The four Agent market guards are installed. The shared SQLx registry remains at 206 entries with the same checksum fingerprint as the pre-deploy baseline. Existing App API, gRPC and worker deployment IDs match the baseline. The App scheduler received a separate deployment during this window; its source branch remains unchanged and it was not included in any Agent patch.
|
|
25
|
+
|
|
26
|
+
All three MCP services are running safety revision `271081b` and release 0.4.0. Bridge uses `https://ride-agent-core-api-v17-production.up.railway.app` with RWA enabled. Public health, both OAuth metadata endpoints, 21-tool discovery and MCP cards passed; the served card SHA-256 equals the reviewed build. Authenticated App copies and portfolio reads report complete coverage. Funding exposes nine supported routes, the account-owned Arbitrum USDC address and QR are valid, and status correctly reports awaiting deposit without trade-ready funds. Performance returns empty for this account's absent Agent portfolio, daily check-in reports no review, and notification preferences report delivery readiness without claiming a physical push. Live bridge candidate reads returned 30 candidates. Official RWA metadata exposes 207 qualified symbols and verifies USDC collateral for `xyz`; the current strict trader pool contains no RWA-tagged traders, and an RWA recommendation returns empty with `NO_EXECUTABLE_PLAN`.
|
|
27
|
+
|
|
28
|
+
The final gateway/bridge source patch was applied and both deployments succeeded. During rollout, Railway inherited `Allow low-risk actions` and its approval layer cancelled deployment submission despite the user's authorization. The user explicitly selected a Railway-only `Allow all actions` override; it was set and read back successfully, and submission no longer returns cancellation. Other plugin defaults are unchanged. Registry publication still uses npm's publisher 2FA, which is independent of Railway permission.
|
|
29
|
+
|
|
30
|
+
A public single-trader Fixed preview returned nine eligible crypto candidates and one allocation, with 20 USDC fixed entry margin and the opt-in pause/70% exit policy. No trading proposal was confirmed and no transfer or order was submitted.
|
|
31
|
+
|
|
32
|
+
## Validation completed
|
|
33
|
+
|
|
34
|
+
- TypeScript check and 92 automated tests, including legacy plan limits/stop behavior and new Fixed/proportional, two-stage stop, ownership and preview batch behavior. An additional Fixed regression requires source fills for new assets and direction flips; a complete-history flag with no supporting fills cannot introduce exposure.
|
|
35
|
+
- 35 HTTP/MCP/OAuth/CLI/PostgreSQL scenarios with simulated identities/fills.
|
|
36
|
+
- Package verification: three client setups, three bare-command setups, legacy upgrades, no private history. Skill validation passed.
|
|
37
|
+
- Browser: single Fixed plans and trader replacement; precise edits/recalculation; zero-balance rejection; funding route/address/QR/status and saved-plan resume; frozen confirmation; dirty edits cannot be enabled by toggling the compatibility acknowledgment; portfolio management; chart switching; daily report time/timezone persistence; 390px no horizontal overflow.
|
|
38
|
+
- Core evidence from the original continuation: 8 Strategy gRPC tests, 37 execution tests, disposable PostgreSQL trigger coverage, API/gRPC compilation.
|
|
39
|
+
|
|
40
|
+
Browser screenshots and local acceptance records are deliberately excluded from the public package. These checks do not establish real-money fills, actual wallet transfers, physical-device push delivery or a mobile App release.
|
|
41
|
+
|
|
42
|
+
## Rollback
|
|
43
|
+
|
|
44
|
+
Stop accepting new scoped portfolios if scoped-market acceptance fails. Keep the updated worker reconciling owned scoped inventory and unknown submissions; never restore a core-only worker while such inventory remains. Preserve all receipts and the Agent state/guards. The legacy App release and rollback are independent.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Widget, accounts and trader-count repair (0.4.3)
|
|
2
|
+
|
|
3
|
+
The preference form previously injected Crypto/BTC/ETH restrictions, and `market=both` required cross-market allocation. Eleven otherwise eligible Perps traders could therefore fail with a hardcoded three-trader diversification message. The form now has one asset preference control, defaulting to `any`, `[]`, and `allow_altcoins=true`. Existing explicit saved choices remain visible. Market selects the allowed universe: either market may be the only market in a returned plan, and that coverage is disclosed.
|
|
4
|
+
|
|
5
|
+
Candidates are returned and rendered independently of plan generation, including structured error responses. The list shows scores, assets, eligibility, budget qualification, total count, detail/selection controls and local pagination. Single and 2–8 trader plans share one count control. An explicit count is never silently reduced; failures offer feasible alternatives with unchanged risk and loss settings. Allocation minimums are applied before selection. Diagnostics include an ID, failure stage, sequential counts, per-trader exclusions, affected fields, current/required values and count actions. There is no generic success-status text in the Widget.
|
|
6
|
+
|
|
7
|
+
`get_portfolio` returns `account_balances` separately from Agent and App copies. Copy allocation remaining and Agent bookkeeping are not additional account cash. Perps reads authenticated wallet generations and deduplicates them, matching the App's Classic/Unified equity and Spot valuation rules. Prediction verifies pUSD/USDC.e/native-USDC balances at one Polygon block, independently of the legacy GraphQL zero fallback, and reads complete owned position inventory with pagination. Retained Prediction cash is included in equity but separated from current-wallet availability; the response explains any App display difference. Native USDC funding cash is reported separately from trading equity. Source times and fetch times remain distinct. Reserves absent from the source stay null.
|
|
8
|
+
|
|
9
|
+
Meme is a separate App wallet/inventory module. Its complete authenticated multi-chain valuation is not exposed by the current account API, so it is explicitly unsupported with null values. The full account total remains null; the verified subtotal includes covered modules only. Every failed, foreign, stale, incomplete or unpriced source remains unavailable rather than zero. Public venue/RPC reads receive only addresses verified by the authenticated Core session; they never receive a Ride token. A shared 22-second deadline bounds balance reads.
|
|
10
|
+
|
|
11
|
+
New plans carry internal asset-filter metadata. Previously approved plans/portfolios retain their prior execution semantics. Editing an old unrestricted plan produces a new canonical preview and does not mutate the old one. Account coverage cannot overwrite authoritative partial-fill, uncertain or settling execution states. MCP public input schemas remain compatible with the released 0.4.2 clients. The live guide explains the new defaults, candidate errors, account data and count semantics without a new login.
|
|
12
|
+
|
|
13
|
+
Validation before rollout: TypeScript checks, PostgreSQL-backed unit tests, HTTP/MCP/OAuth/CLI/Pg functional scenarios, package install/setup checks for Codex/Claude Code/Cursor, and browser use of the actual cards and backend with simulated account/venue sources. Regression inputs include 200 USDC, both markets, any assets, medium risk, 10% loss trigger and eleven Perps candidates, with exact 1/2/3/4 trader previews; two candidates retain the list and offer 1/2 instead of changing a four-person request silently. Browser confirmation is simulated and proves no real transfer, signature or exchange fill.
|
|
14
|
+
|
|
15
|
+
Rollout scope: the independent ride-mcp gateway and agent-backend only. No Rust service, App binary, legacy API/gRPC/worker, schema migration or production preference rewrite is required. Apple login remains deferred. Before/after deployment IDs and legacy readiness are acceptance evidence; local success alone is not production verification.
|
|
16
|
+
|
|
17
|
+
Local reproduction: `RIDE_AGENT_TEST_DATABASE_URL=postgresql:///DISPOSABLE_DB npm test`; `RIDE_AGENT_FUNCTIONAL_DATABASE_URL=postgresql:///DISPOSABLE_DB npm run test:functional`. Widget fixture: `RIDE_PREVIEW_PORT=17870 RIDE_PREVIEW_POOL_SIZE=11 RIDE_PREVIEW_WIDGET_REGRESSIONS=1 npm run preview:cards`. Loopback fixture endpoints and simulated financial actions are not production features.
|
package/package.json
CHANGED
|
@@ -1,6 +1,77 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onride/agent",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.5.1-rc.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "node scripts-build-ui.mjs && tsc",
|
|
8
|
+
"start": "node dist/start.js",
|
|
9
|
+
"test": "tsx --test src/*.test.ts src/agent/*.test.ts src/cli/*.test.ts",
|
|
10
|
+
"test:functional": "npm run build && tsx scripts/functional-acceptance.ts",
|
|
11
|
+
"preview:cards": "npm run build && tsx scripts/conversational-preview.ts",
|
|
12
|
+
"prepare": "npm run build",
|
|
13
|
+
"prepack": "npm run build",
|
|
14
|
+
"start:backend": "node dist/backend.js",
|
|
15
|
+
"start:bridge": "node dist/bridge.js",
|
|
16
|
+
"check": "tsc --noEmit -p tsconfig.test.json",
|
|
17
|
+
"dev": "tsx src/server.ts",
|
|
18
|
+
"verify:package": "node scripts/verify-package.mjs",
|
|
19
|
+
"verify:release": "node scripts/verify-release.mjs"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@iarna/toml": "^2.2.5",
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
24
|
+
"decimal.js": "^10.6.0",
|
|
25
|
+
"dotenv": "^17.4.2",
|
|
26
|
+
"ethers": "^6.17.0",
|
|
27
|
+
"express": "^5.2.1",
|
|
28
|
+
"fflate": "0.8.3",
|
|
29
|
+
"pg": "^8.23.1",
|
|
30
|
+
"qrcode": "^1.5.4",
|
|
31
|
+
"redis": "^6.0.0",
|
|
32
|
+
"zod": "^4.1.13"
|
|
33
|
+
},
|
|
34
|
+
"overrides": {
|
|
35
|
+
"body-parser": "2.3.0",
|
|
36
|
+
"fast-uri": "4.2.1"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/express": "^5.0.6",
|
|
40
|
+
"@types/node": "^24.10.1",
|
|
41
|
+
"@types/pg": "^8.23.1",
|
|
42
|
+
"@types/qrcode": "^1.5.5",
|
|
43
|
+
"prettier": "^3.9.9",
|
|
44
|
+
"tsx": "^4.20.6",
|
|
45
|
+
"typescript": "^5.9.3"
|
|
46
|
+
},
|
|
47
|
+
"engines": {
|
|
48
|
+
"node": ">=20"
|
|
49
|
+
},
|
|
50
|
+
"description": "Ride Agent helps you discover traders, build a personalized copy-trading portfolio, and start copying after your confirmation.",
|
|
51
|
+
"license": "MIT",
|
|
52
|
+
"repository": {
|
|
53
|
+
"type": "git",
|
|
54
|
+
"url": "git+https://github.com/onride-app/ride-agent.git"
|
|
55
|
+
},
|
|
56
|
+
"homepage": "https://github.com/onride-app/ride-agent#readme",
|
|
57
|
+
"bugs": {
|
|
58
|
+
"url": "https://github.com/onride-app/ride-agent/issues"
|
|
59
|
+
},
|
|
60
|
+
"bin": {
|
|
61
|
+
"ride": "dist/cli.js"
|
|
62
|
+
},
|
|
63
|
+
"files": [
|
|
64
|
+
"dist",
|
|
65
|
+
"public/agent.html",
|
|
66
|
+
"public/confirm.html",
|
|
67
|
+
"public/fund.html",
|
|
68
|
+
"skills",
|
|
69
|
+
"README.md",
|
|
70
|
+
"LICENSE",
|
|
71
|
+
"docs",
|
|
72
|
+
".env.example"
|
|
73
|
+
],
|
|
74
|
+
"publishConfig": {
|
|
75
|
+
"access": "public"
|
|
76
|
+
}
|
|
77
|
+
}
|