@odla-ai/cli 0.10.1 → 0.10.2
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/README.md +4 -4
- package/REQUIREMENTS.md +3 -1
- package/package.json +7 -9
- package/skills/odla/SKILL.md +4 -2
- package/skills/odla/references/build.md +6 -5
- package/skills/odla/references/sdks.md +6 -5
- package/skills/odla-migrate/SKILL.md +3 -2
- package/skills/odla-migrate/references/phase-2-db.md +6 -5
- package/skills/odla-migrate/references/phase-2b-calendar.md +2 -2
- package/skills/odla-migrate/references/phase-4-ai.md +4 -3
- package/skills/odla-migrate/references/phase-5-cutover.md +2 -2
- package/skills/odla-migrate/references/troubleshooting.md +3 -3
- package/llms.txt +0 -1270
package/README.md
CHANGED
|
@@ -29,8 +29,8 @@ For a project you keep working in, install it as a dev dependency so the
|
|
|
29
29
|
shorter `npx odla-ai` form works and the version is pinned by your lockfile:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
|
-
npm view @odla-ai/cli@0.10.
|
|
33
|
-
npm i -D --save-exact @odla-ai/cli@0.10.
|
|
32
|
+
npm view @odla-ai/cli@0.10.2 version
|
|
33
|
+
npm i -D --save-exact @odla-ai/cli@0.10.2
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
## Prerequisites
|
|
@@ -215,7 +215,7 @@ mutation-id control. Public health remains aggregate rather than per calendar.
|
|
|
215
215
|
|
|
216
216
|
The bundled build/migration skills add a passive pre-ship gate with
|
|
217
217
|
`@odla-ai/security`: after the exact-version availability check, run
|
|
218
|
-
`npm i -D --save-exact @odla-ai/security@0.
|
|
218
|
+
`npm i -D --save-exact @odla-ai/security@0.3.1`, then
|
|
219
219
|
`npx odla-security scan . --profile odla --out .odla/security/pre-ship --fail-on high --fail-on-candidates critical`.
|
|
220
220
|
The passive scan remains a separate binary: it makes no model calls and does
|
|
221
221
|
not execute target code. After explicit redacted-source approval,
|
|
@@ -240,7 +240,7 @@ carries a bounded `Retry-After` only when the upstream supplied one. The CLI
|
|
|
240
240
|
does not echo arbitrary response text or silently change the admin-selected
|
|
241
241
|
model.
|
|
242
242
|
Before installing the exact release, require
|
|
243
|
-
`npm view @odla-ai/security@0.
|
|
243
|
+
`npm view @odla-ai/security@0.3.1 version` to succeed before installation. An
|
|
244
244
|
exact-version `E404` means the release is unavailable, not that the security
|
|
245
245
|
preflight passed, and does not prove the package name is absent. odla's own
|
|
246
246
|
engineering environment uses an equivalent internal gate; customer projects
|
package/REQUIREMENTS.md
CHANGED
|
@@ -97,4 +97,6 @@ Agnacl, but none should mention or special-case Agnacl.
|
|
|
97
97
|
- Every command must produce machine-readable enough output for an LLM to decide
|
|
98
98
|
the next action from stdout alone.
|
|
99
99
|
- Failures should name the exact config key or external capability missing.
|
|
100
|
-
- The package must ship
|
|
100
|
+
- The package must ship its offline skills and README so agents have the
|
|
101
|
+
operational contract without reading private source; exported TypeScript
|
|
102
|
+
declarations/JSDoc remain the version-matched programmatic reference.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odla-ai/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Agent-operable CLI for odla provisioning, calendar consent and sync lifecycle, System AI administration, Worker secrets, security jobs, and smoke checks.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://odla.ai/docs/packages/cli",
|
|
@@ -27,8 +27,7 @@
|
|
|
27
27
|
"dist",
|
|
28
28
|
"skills",
|
|
29
29
|
"README.md",
|
|
30
|
-
"REQUIREMENTS.md"
|
|
31
|
-
"llms.txt"
|
|
30
|
+
"REQUIREMENTS.md"
|
|
32
31
|
],
|
|
33
32
|
"sideEffects": false,
|
|
34
33
|
"engines": {
|
|
@@ -55,14 +54,13 @@
|
|
|
55
54
|
"typecheck": "tsc --noEmit",
|
|
56
55
|
"test": "vitest run",
|
|
57
56
|
"coverage": "vitest run --coverage",
|
|
58
|
-
"
|
|
59
|
-
"prepublishOnly": "npm run build && npm run gen:llms"
|
|
57
|
+
"prepublishOnly": "npm run build"
|
|
60
58
|
},
|
|
61
59
|
"dependencies": {
|
|
62
|
-
"@odla-ai/ai": "^0.
|
|
63
|
-
"@odla-ai/apps": "^0.8.
|
|
64
|
-
"@odla-ai/db": "^0.6.
|
|
65
|
-
"@odla-ai/security": "^0.
|
|
60
|
+
"@odla-ai/ai": "^0.4.0",
|
|
61
|
+
"@odla-ai/apps": "^0.8.1",
|
|
62
|
+
"@odla-ai/db": "^0.6.4",
|
|
63
|
+
"@odla-ai/security": "^0.3.1"
|
|
66
64
|
},
|
|
67
65
|
"devDependencies": {
|
|
68
66
|
"@types/node": "^22.10.0",
|
package/skills/odla/SKILL.md
CHANGED
|
@@ -124,5 +124,7 @@ code, paste a publishable key, run a command) — and wait for a nod.
|
|
|
124
124
|
- `references/build.md` — the greenfield build, step by step, with the exact
|
|
125
125
|
commands and what to verify at each one.
|
|
126
126
|
- `references/sdks.md` — SDK cheat-sheet (what each does + minimal real usage).
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
For the full, version-matched API, read the installed package's README and
|
|
128
|
+
exported TypeScript declarations/JSDoc (resolve entry points through its
|
|
129
|
+
`package.json` `exports`). Rendered references are also public at
|
|
130
|
+
`https://odla.ai/docs/packages/<pkg>`.
|
|
@@ -30,9 +30,10 @@ deployed-secret transfer. With o11y, install `@odla-ai/o11y`, add
|
|
|
30
30
|
`"nodejs_compat"` to `compatibility_flags`, and wrap the entrypoint with
|
|
31
31
|
`withObservability`.
|
|
32
32
|
|
|
33
|
-
Each installed package's
|
|
34
|
-
|
|
35
|
-
|
|
33
|
+
Each installed package's README and exported TypeScript declarations/JSDoc are
|
|
34
|
+
the version-matched API contract; resolve public entry points through its
|
|
35
|
+
`package.json` `exports`. The npm artifacts contain everything required for
|
|
36
|
+
this flow; private service source or online documentation is not setup context.
|
|
36
37
|
|
|
37
38
|
## 3. Provision ⏸ device-code approval
|
|
38
39
|
|
|
@@ -87,12 +88,12 @@ code. Browser code uses db subscriptions under explicit rules or pure
|
|
|
87
88
|
Install the passive harness and scan before any production secret or deploy:
|
|
88
89
|
|
|
89
90
|
Before installing the exact release, first verify
|
|
90
|
-
`npm view @odla-ai/security@0.
|
|
91
|
+
`npm view @odla-ai/security@0.3.1 version`. An exact-version `E404` means the
|
|
91
92
|
release is unavailable and blocks this preflight; it is not a clean scan and
|
|
92
93
|
does not prove the package name is absent.
|
|
93
94
|
|
|
94
95
|
```
|
|
95
|
-
npm i -D --save-exact @odla-ai/security@0.
|
|
96
|
+
npm i -D --save-exact @odla-ai/security@0.3.1
|
|
96
97
|
npx odla-security scan . --profile odla --out .odla/security/pre-ship --fail-on high --fail-on-candidates critical
|
|
97
98
|
```
|
|
98
99
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# odla SDK cheat-sheet
|
|
2
2
|
|
|
3
|
-
Install only what the app needs.
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Install only what the app needs. Prefer the installed package's README and
|
|
4
|
+
exported TypeScript declarations/JSDoc over training memory; resolve public
|
|
5
|
+
entry points through its `package.json` `exports`. Rendered references are also
|
|
6
|
+
available at `https://odla.ai/docs/packages/<pkg>`. Minimal real usage follows.
|
|
6
7
|
|
|
7
8
|
## @odla-ai/db — realtime graph database
|
|
8
9
|
|
|
@@ -99,12 +100,12 @@ Run the passive CLI in local/CI development; do not import it into the running
|
|
|
99
100
|
Worker:
|
|
100
101
|
|
|
101
102
|
Before installing the exact release, require
|
|
102
|
-
`npm view @odla-ai/security@0.
|
|
103
|
+
`npm view @odla-ai/security@0.3.1 version` to succeed before installing it. An
|
|
103
104
|
exact-version `E404` means the release is unavailable, not that the preflight
|
|
104
105
|
passed, and does not prove the package name is absent.
|
|
105
106
|
|
|
106
107
|
```
|
|
107
|
-
npm i -D --save-exact @odla-ai/security@0.
|
|
108
|
+
npm i -D --save-exact @odla-ai/security@0.3.1
|
|
108
109
|
npx odla-security scan . --profile odla --out .odla/security/pre-ship --fail-on high --fail-on-candidates critical
|
|
109
110
|
```
|
|
110
111
|
|
|
@@ -121,5 +121,6 @@ On any failure, read references/troubleshooting.md before improvising.
|
|
|
121
121
|
This installed skill and its `references/` directory are the complete migration
|
|
122
122
|
runbook; do not fetch a website or private source repository to reconstruct it.
|
|
123
123
|
Read only the current phase file as directed above. After `npm install`, prefer
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
each installed package's README and exported TypeScript declarations/JSDoc over
|
|
125
|
+
training memory; resolve entry points through its `package.json` `exports`.
|
|
126
|
+
Those artifacts describe the version this project actually uses.
|
|
@@ -11,8 +11,8 @@ opens the review page in interactive terminals; loading it alone is inert.
|
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
13
|
|
|
14
|
-
1. Require `npm view @odla-ai/cli@0.10.
|
|
15
|
-
`npm i -D --save-exact @odla-ai/cli@0.10.
|
|
14
|
+
1. Require `npm view @odla-ai/cli@0.10.2 version` to succeed, then run
|
|
15
|
+
`npm i -D --save-exact @odla-ai/cli@0.10.2` and `npm i @odla-ai/db`.
|
|
16
16
|
2. `npx @odla-ai/cli init --app-id <id> --name "<Name>" --env dev --services db`
|
|
17
17
|
Review `odla.config.mjs`. Keep `envs: ["dev"]` — prod is Phase 5. Set
|
|
18
18
|
`links.dev` to the URL the Phase 1 `wrangler deploy` **actually printed** —
|
|
@@ -22,7 +22,7 @@ opens the review page in interactive terminals; loading it alone is inert.
|
|
|
22
22
|
public-config show where the app runs. (`links.prod` is set the same way at
|
|
23
23
|
Phase 5, from the prod deploy's printed URL.)
|
|
24
24
|
3. STOP before touching schema: read "Porting relational code" in
|
|
25
|
-
`node_modules/@odla-ai/db/
|
|
25
|
+
`node_modules/@odla-ai/db/README.md`. The traps are silent: entity ids
|
|
26
26
|
are not attrs (mirror an id attr), there is no NULL (omit on write,
|
|
27
27
|
re-project on read), lists need explicit `order`, uniques are
|
|
28
28
|
single-attr (derive composite keys), ON CONFLICT maps to `mutationId`
|
|
@@ -49,8 +49,9 @@ opens the review page in interactive terminals; loading it alone is inert.
|
|
|
49
49
|
10. Add `/api/*` routes before the assets fall-through, using
|
|
50
50
|
`init({ appId: env.ODLA_TENANT, adminToken: env.ODLA_API_KEY,
|
|
51
51
|
endpoint: env.ODLA_ENDPOINT })` from `@odla-ai/db`. Read the installed
|
|
52
|
-
package's
|
|
53
|
-
error contracts.
|
|
52
|
+
package's README and exported TypeScript declarations/JSDoc for query,
|
|
53
|
+
transaction, and error contracts. The rendered reference is at
|
|
54
|
+
`https://odla.ai/docs/packages/db` when online.
|
|
54
55
|
11. `wrangler dev` + curl each route; then `npm run deploy:app:dev` and
|
|
55
56
|
curl the workers.dev URL.
|
|
56
57
|
|
|
@@ -9,8 +9,8 @@ server-issued Google consent page. They never paste an OAuth code or token.
|
|
|
9
9
|
|
|
10
10
|
1. Inventory the old behavior. Distinguish a public appointment-page link from
|
|
11
11
|
actual event create/reschedule/cancel APIs. Do not promise more than exists.
|
|
12
|
-
2. Require `npm view @odla-ai/calendar@0.1.
|
|
13
|
-
`npm i --save-exact @odla-ai/calendar@0.1.
|
|
12
|
+
2. Require `npm view @odla-ai/calendar@0.1.1 version` to succeed, then install
|
|
13
|
+
`npm i --save-exact @odla-ai/calendar@0.1.1` as a runtime dependency. An
|
|
14
14
|
exact-version `E404` blocks this phase; do not substitute a git checkout or
|
|
15
15
|
another version. Add `"calendar"` beside
|
|
16
16
|
`"db"` in services and configure:
|
|
@@ -24,9 +24,10 @@ own terminal so you never see the value.
|
|
|
24
24
|
3. `npm i @odla-ai/ai`. In the worker, use `initFromPlatform` — it reads
|
|
25
25
|
provider/model from public-config (cached ~60s) and resolves the key
|
|
26
26
|
from the vault at call time using only the app's db key. Provider and
|
|
27
|
-
model are switchable in Studio with no redeploy. Read
|
|
28
|
-
`node_modules/@odla-ai/ai/
|
|
29
|
-
|
|
27
|
+
model are switchable in Studio with no redeploy. Read the installed
|
|
28
|
+
`node_modules/@odla-ai/ai/README.md` and exported TypeScript
|
|
29
|
+
declarations/JSDoc for the version-matched API; the rendered reference at
|
|
30
|
+
`https://odla.ai/docs/packages/ai` covers the public platform composition.
|
|
30
31
|
4. Add one `/api/*` route that round-trips the model; deploy dev.
|
|
31
32
|
|
|
32
33
|
## Verification checklist
|
|
@@ -24,10 +24,10 @@ instance, never a second Clerk app per env; final go/no-go at each step.
|
|
|
24
24
|
`secrets push --env prod --yes` only to retry the transfer (see
|
|
25
25
|
references/secrets-map.md).
|
|
26
26
|
3. Build, then run the passive pre-cutover security gate:
|
|
27
|
-
first require `npm view @odla-ai/security@0.
|
|
27
|
+
first require `npm view @odla-ai/security@0.3.1 version` to succeed. An
|
|
28
28
|
exact-version `E404` means the release is unavailable and blocks cutover;
|
|
29
29
|
it is not a clean scan and does not prove the package name is absent. Run
|
|
30
|
-
`npm i -D --save-exact @odla-ai/security@0.
|
|
30
|
+
`npm i -D --save-exact @odla-ai/security@0.3.1` followed by
|
|
31
31
|
`npx odla-security scan . --profile odla --out .odla/security/pre-cutover --fail-on high --fail-on-candidates critical`.
|
|
32
32
|
Review `REPORT.md`; a candidate is a lead, not confirmation, and a baseline
|
|
33
33
|
requires a concrete reason, owner, and expiry.
|
|
@@ -80,6 +80,6 @@ the printed `secrets push --env ...` retry and do not rotate again.
|
|
|
80
80
|
## Something not covered here
|
|
81
81
|
|
|
82
82
|
Check, in order: `npx @odla-ai/cli doctor` output; this skill's current phase
|
|
83
|
-
and troubleshooting references; then the relevant installed
|
|
84
|
-
|
|
85
|
-
unblock yourself — surface the blocker to the human instead.
|
|
83
|
+
and troubleshooting references; then the relevant installed package README and
|
|
84
|
+
exported TypeScript declarations/JSDoc. Do not improvise around a safety rule
|
|
85
|
+
to unblock yourself — surface the blocker to the human instead.
|