@officexapp/vidfarm-devcli 0.21.62 → 0.21.64

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 (28) hide show
  1. package/.agents/skills/dollarplatoon-skill/SKILL.md +163 -1174
  2. package/.agents/skills/dollarplatoon-skill/SOURCE.md +62 -0
  3. package/.agents/skills/dollarplatoon-skill/skill/clients.md +234 -0
  4. package/.agents/skills/dollarplatoon-skill/skill/feeds.md +326 -0
  5. package/.agents/skills/dollarplatoon-skill/skill/gigs.md +395 -0
  6. package/.agents/skills/dollarplatoon-skill/skill/gigworkers.md +324 -0
  7. package/.agents/skills/dollarplatoon-skill/skill/orders.md +573 -0
  8. package/.agents/skills/dollarplatoon-skill/skill/payouts.md +234 -0
  9. package/.agents/skills/dollarplatoon-skill/skill/platform.md +174 -0
  10. package/.agents/skills/dollarplatoon-skill/skill/prices.md +75 -0
  11. package/.agents/skills/dollarplatoon-skill/skill/pricing-and-tags.md +255 -0
  12. package/.agents/skills/dollarplatoon-skill/skill/proofs.md +555 -0
  13. package/.agents/skills/dollarplatoon-skill/skill/queue.md +404 -0
  14. package/.agents/skills/dollarplatoon-skill/skill/quickstart.md +191 -0
  15. package/.agents/skills/dollarplatoon-skill/skill/staging.md +178 -0
  16. package/.agents/skills/dollarplatoon-skill/skill/tasks.md +588 -0
  17. package/.agents/skills/dollarplatoon-skill/skill/web-pages.md +586 -0
  18. package/.agents/skills/vidfarm/SKILL.md +3 -3
  19. package/.agents/skills/vidfarm/references/core-workflows.md +107 -3
  20. package/SKILL.director.md +109 -5
  21. package/SKILL.md +3 -1
  22. package/clipper.md +20 -0
  23. package/dist/src/cli.js +50 -6
  24. package/dist/src/devcli/delivery-seal.js +119 -0
  25. package/dist/src/devcli/marketplace-console.js +1418 -0
  26. package/dist/src/devcli/marketplace-gigs.js +162 -16
  27. package/marketplace.md +299 -1
  28. package/package.json +24 -3
@@ -0,0 +1,178 @@
1
+ # Building against staging
2
+
3
+ Staging is a complete, independent copy of Dollar Platoon on a test chain. It is the environment
4
+ to build against: same code, same API surface, its own accounts, and money that costs nothing to
5
+ be wrong with.
6
+
7
+ ## Contents
8
+
9
+ - The two stages, side by side
10
+ - Where the documentation lives on each stage
11
+ - Getting an account and a key
12
+ - Getting testnet money
13
+ - Autologin, so a link lands somewhere useful
14
+ - What staging has that production does not
15
+ - What is NOT production-ready — read before you ship
16
+ - Moving an integration from staging to production
17
+
18
+ ---
19
+
20
+ ## The two stages, side by side
21
+
22
+ | | Staging | Production |
23
+ |---|---|---|
24
+ | Frontend | `https://staging.dollarplatoon.com` | `https://dollarplatoon.com` |
25
+ | API | `https://staging.dollarplatoon.com/api` | `https://dollarplatoon.com/api` |
26
+ | Chain | **Base Sepolia** (chain id `84532`) | Base mainnet (chain id `8453`) |
27
+ | USDC | **MockUSDC** `0xE4E5…c6a8` — worthless by design | Real USDC `0x8335…2913` |
28
+ | Treasury | `0x932B9D4CA0e11D7859C43F7e58492F2C6206D485` | `0xE4E5…c6a8` |
29
+ | Accounts | Entirely separate. Your production key does **not** work here. | |
30
+ | `inbound_order` | **Available** | Not deployed — see below |
31
+ | Inbound email | `…@fwd.zoomgtm.com`, with a `staging.` infix in the address | same domain, no infix |
32
+
33
+ The two Treasury addresses are not a copy-paste error, and neither is production's Treasury
34
+ matching staging's MockUSDC: they are the same deployer account at the same nonce on two
35
+ different chains. Nothing is shared between them.
36
+
37
+ Everything in the rest of this skill is written with production URLs. To read it as a staging
38
+ integrator, substitute the host — every path is identical. `POST /gigs` means
39
+ `POST https://staging.dollarplatoon.com/api/gigs`.
40
+
41
+ ## Where the documentation lives on each stage
42
+
43
+ This skill is served as plain Markdown from whichever stage you are pointed at:
44
+
45
+ ```
46
+ https://staging.dollarplatoon.com/SKILL.md the index
47
+ https://staging.dollarplatoon.com/skill/orders.md any linked page
48
+ ```
49
+
50
+ `/skill.md`, `/skill` and `/skill/` all resolve to the index too, case-insensitively.
51
+
52
+ **The links inside these files are absolute production URLs.** That is a deliberate trade — one
53
+ copy of the text, not one per stage — but it means an agent following them from staging silently
54
+ crosses over to production's copy. The two are kept identical, so the *content* is the same; if
55
+ you are pinning a version, fetch siblings from the host you started on rather than following the
56
+ link as written.
57
+
58
+ ## Getting an account and a key
59
+
60
+ Accounts are email plus a one-time code. There are no passwords, and a staging account is
61
+ created by the first login.
62
+
63
+ ```json
64
+ POST /auth/send-otp { "email": "you@example.com" }
65
+ POST /auth/verify-otp { "email": "you@example.com", "code": "1234" }
66
+ → { "email": "you@example.com", "api_key": "…" }
67
+ ```
68
+
69
+ A first login also **auto-provisions a hot wallet** on Base Sepolia. Logging in again returns the
70
+ existing key rather than rotating it, so a login never breaks a running agent. For a fleet of
71
+ agents, `POST /admin/users/provision` with an `x-admin-key` header is idempotent — see
72
+ [quickstart.md](https://dollarplatoon.com/skill/quickstart.md).
73
+
74
+ **Membership is the credential for everything gig-shaped.** There is no public marketplace on
75
+ either stage: `GET /gigs` answers `410`. A worker needs an active mailbox in a gig before they
76
+ can poll it, and — on an order machine — a buyer needs an active mailbox before they can place
77
+ an order at all. The way in is always an invite link from the gig owner
78
+ (`POST /gigs/:id/invites`). A `pending_approval` mailbox is not enough.
79
+
80
+ ## Getting testnet money
81
+
82
+ Two different tokens, and you need both:
83
+
84
+ - **MockUSDC** is what gigs and orders are denominated in. It has no faucet route on the API. Ask
85
+ the platform owner to mint some to your hot wallet address, which you can read from
86
+ `GET /wallets`.
87
+ - **Base Sepolia ETH** is gas. It matters more than it looks: on an order machine the **buyer**
88
+ signs their own deposit transaction from their own hot wallet, so a buyer with no gas cannot
89
+ place an order however much MockUSDC they hold. Any public Base Sepolia faucet works.
90
+
91
+ Balances: `GET /wallets/:alias_id/balances` returns both.
92
+
93
+ ## Autologin, so a link lands somewhere useful
94
+
95
+ Append `?api_key=` to **any** staging URL to sign in and land on that exact page in one step:
96
+
97
+ ```
98
+ https://staging.dollarplatoon.com/gigs?api_key=YOUR_API_KEY
99
+ https://staging.dollarplatoon.com/gigs/GIG_01HX...?api_key=YOUR_API_KEY
100
+ ```
101
+
102
+ The key is validated, the session stored, and `api_key` scrubbed from the address bar and
103
+ history. Compose it with `?hide_navbar=true&hide_logo=true` for an embed. See
104
+ [web-pages.md](https://dollarplatoon.com/skill/web-pages.md) for every page and param.
105
+
106
+ > **A URL containing `api_key` grants full account access to anyone who sees it.** On staging the
107
+ > money is fake and the risk is only your test data; the habit still matters, because the same
108
+ > link shape works in production.
109
+
110
+ ## What staging has that production does not
111
+
112
+ **`inbound_order` — the order machine mode — runs on staging only.** A full order has been taken
113
+ end to end there on Base Sepolia: deposit, deliver, approve, settle, reveal. Production has none
114
+ of it, and would refuse: its Treasury migration has not run and its deposit-id secret is unset,
115
+ so a publish-with-deposit would `500` by design rather than take money it could not settle.
116
+
117
+ If you are building against `inbound_order`, staging is not a rehearsal — it is the only place it
118
+ exists. See [orders.md](https://dollarplatoon.com/skill/orders.md).
119
+
120
+ ## What is NOT production-ready — read before you ship
121
+
122
+ Stated plainly, because the difference between the stages is not only "one has fake money".
123
+
124
+ - **The wallet encryption key rotation has not run — on either stage.** Hot wallet private keys
125
+ are encrypted with a key that is the published development default. On production that is 782
126
+ real wallets. The dual-key read path that makes rotation possible is deployed to staging only.
127
+ **Do not treat a Dollar Platoon hot wallet as cold storage on either stage.** Withdraw earnings
128
+ to a wallet you control (`POST /wallets/:alias_id/transfer`).
129
+ - **The production Treasury migration has not happened.** Production still runs the old contract,
130
+ which has no per-task deposits, no undo, and no reserved-balance guard. Every `inbound_order`
131
+ feature depends on the new one.
132
+ - **The maintenance flag does not exist.** There is no way to quiesce the money routes on either
133
+ stage, so a platform migration cannot cleanly stop the world. This is the platform's problem,
134
+ not yours, but it means a production cutover is not a background event.
135
+ - **`GET /public/read-url` signs any S3 key for any share-token holder.** Unfixed on both stages.
136
+ Anything offloaded to S3 — a large task body, an uploaded file — should be treated as readable
137
+ by anyone holding any share token on the platform. Keep secrets in `private_details` and
138
+ `private_note`, which are not S3-backed.
139
+ - **Staging carries test debris.** Some gigs sit on retired Treasuries with stale MockUSDC and
140
+ unsettled rollups, and a little unattributed dust exists in old contracts. If a *very* old
141
+ staging gig behaves oddly around money, check its `contract_address` before assuming a bug.
142
+
143
+ ## Moving an integration from staging to production
144
+
145
+ Three things change and nothing else does:
146
+
147
+ 1. **The host.** `staging.dollarplatoon.com` → `dollarplatoon.com`. Every path is the same.
148
+ 2. **The API key.** Accounts do not cross over. Provision or log in again against production.
149
+ 3. **The money is real.** Same code paths, same rounding, same 110% budgeting rule on outbound
150
+ gigs — and the same total absence of a reversal. There is no dispute resolution and no refund
151
+ after a payout on either stage. See
152
+ [platform.md](https://dollarplatoon.com/skill/platform.md).
153
+
154
+ What does **not** carry over: any `inbound_order` shop, because production has no such mode yet.
155
+ Build the rest of your integration against production if you like; build that half against
156
+ staging and wait.
157
+
158
+ `GET /health` tells you which stage answered, which is worth asserting once at startup:
159
+
160
+ ```json
161
+ GET /health → { "status": "ok", "stage": "staging", "timestamp": "..." }
162
+ ```
163
+
164
+ ## Tell the two apart without trusting a hostname
165
+
166
+ ```bash
167
+ curl -s https://staging.dollarplatoon.com/api/health
168
+ ```
169
+
170
+ ```json
171
+ { "stage": "staging",
172
+ "chain": { "chain_id": 84532, "chain_name": "Base Sepolia", "is_testnet": true },
173
+ "treasury_address": "0x932B…D485", "usdc_address": "0xE4E5…c6a8" }
174
+ ```
175
+
176
+ `is_testnet` is the field to branch on. `stage` is a label somebody typed into an env file;
177
+ `chain_id` is asked of the node, and it is the one that decides whether the money is real. Treat an
178
+ unrecognised chain id as a testnet — the safe default is "do not send real funds here".