@agentuity/cli 0.0.94 → 0.0.96
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/AGENTS.md +54 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +8 -5
- package/dist/auth.js.map +1 -1
- package/dist/banner.js +1 -1
- package/dist/banner.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +190 -27
- package/dist/cli.js.map +1 -1
- package/dist/cmd/auth/signup.js +1 -1
- package/dist/cmd/auth/signup.js.map +1 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +7 -0
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts +20 -0
- package/dist/cmd/build/entry-generator.d.ts.map +1 -0
- package/dist/cmd/build/entry-generator.js +366 -0
- package/dist/cmd/build/entry-generator.js.map +1 -0
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +5 -23
- package/dist/cmd/build/index.js.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.d.ts +33 -0
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -0
- package/dist/cmd/build/vite/agent-discovery.js +297 -0
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -0
- package/dist/cmd/build/vite/browser-env-plugin.d.ts +9 -0
- package/dist/cmd/build/vite/browser-env-plugin.d.ts.map +1 -0
- package/dist/cmd/build/vite/browser-env-plugin.js +28 -0
- package/dist/cmd/build/vite/browser-env-plugin.js.map +1 -0
- package/dist/cmd/build/vite/bun-dev-server.d.ts +29 -0
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -0
- package/dist/cmd/build/vite/bun-dev-server.js +54 -0
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -0
- package/dist/cmd/build/vite/config-loader.d.ts +23 -0
- package/dist/cmd/build/vite/config-loader.d.ts.map +1 -0
- package/dist/cmd/build/vite/config-loader.js +50 -0
- package/dist/cmd/build/vite/config-loader.js.map +1 -0
- package/dist/cmd/build/vite/index.d.ts +26 -0
- package/dist/cmd/build/vite/index.d.ts.map +1 -0
- package/dist/cmd/build/vite/index.js +127 -0
- package/dist/cmd/build/vite/index.js.map +1 -0
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +11 -0
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/lifecycle-generator.js +35 -0
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -0
- package/dist/cmd/build/vite/metadata-generator.d.ts +32 -0
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/metadata-generator.js +489 -0
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -0
- package/dist/cmd/build/vite/patch-plugin.d.ts +21 -0
- package/dist/cmd/build/vite/patch-plugin.d.ts.map +1 -0
- package/dist/cmd/build/vite/patch-plugin.js +70 -0
- package/dist/cmd/build/vite/patch-plugin.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts +19 -0
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -0
- package/dist/cmd/build/{route-registry.js → vite/registry-generator.js} +126 -48
- package/dist/cmd/build/vite/registry-generator.js.map +1 -0
- package/dist/cmd/build/vite/route-discovery.d.ts +58 -0
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -0
- package/dist/cmd/build/vite/route-discovery.js +125 -0
- package/dist/cmd/build/vite/route-discovery.js.map +1 -0
- package/dist/cmd/build/vite/server-bundler.d.ts +16 -0
- package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -0
- package/dist/cmd/build/vite/server-bundler.js +194 -0
- package/dist/cmd/build/vite/server-bundler.js.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts +19 -0
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js +105 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server.d.ts +23 -0
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-asset-server.js +40 -0
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -0
- package/dist/cmd/build/vite/vite-builder.d.ts +44 -0
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -0
- package/dist/cmd/build/vite/vite-builder.js +232 -0
- package/dist/cmd/build/vite/vite-builder.js.map +1 -0
- package/dist/cmd/build/vite/workbench-generator.d.ts +10 -0
- package/dist/cmd/build/vite/workbench-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/workbench-generator.js +135 -0
- package/dist/cmd/build/vite/workbench-generator.js.map +1 -0
- package/dist/cmd/build/vite-bundler.d.ts +23 -0
- package/dist/cmd/build/vite-bundler.d.ts.map +1 -0
- package/dist/cmd/build/vite-bundler.js +79 -0
- package/dist/cmd/build/vite-bundler.js.map +1 -0
- package/dist/cmd/cloud/agent/get.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/get.js +1 -0
- package/dist/cmd/cloud/agent/get.js.map +1 -1
- package/dist/cmd/cloud/agent/list.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/list.js +1 -0
- package/dist/cmd/cloud/agent/list.js.map +1 -1
- package/dist/cmd/cloud/db/get.d.ts.map +1 -1
- package/dist/cmd/cloud/db/get.js +1 -0
- package/dist/cmd/cloud/db/get.js.map +1 -1
- package/dist/cmd/cloud/db/list.d.ts.map +1 -1
- package/dist/cmd/cloud/db/list.js +1 -0
- package/dist/cmd/cloud/db/list.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +152 -128
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/deployment/list.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/list.js +4 -0
- package/dist/cmd/cloud/deployment/list.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +1 -0
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.js +1 -0
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js +1 -0
- package/dist/cmd/cloud/keyvalue/keys.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/list-namespaces.js +1 -0
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js +1 -0
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
- package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/list.js +1 -0
- package/dist/cmd/cloud/secret/list.js.map +1 -1
- package/dist/cmd/cloud/session/list.d.ts.map +1 -1
- package/dist/cmd/cloud/session/list.js +4 -0
- package/dist/cmd/cloud/session/list.js.map +1 -1
- package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/get.js +1 -0
- package/dist/cmd/cloud/storage/get.js.map +1 -1
- package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/list.js +3 -0
- package/dist/cmd/cloud/storage/list.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +1 -0
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +1 -0
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/cloud/vector/get.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/get.js +1 -0
- package/dist/cmd/cloud/vector/get.js.map +1 -1
- package/dist/cmd/cloud/vector/search.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/search.js +1 -0
- package/dist/cmd/cloud/vector/search.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +291 -751
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/dev/sync.d.ts +1 -1
- package/dist/cmd/dev/sync.d.ts.map +1 -1
- package/dist/cmd/dev/sync.js +3 -0
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/cmd/profile/show.d.ts.map +1 -1
- package/dist/cmd/profile/show.js +3 -4
- package/dist/cmd/profile/show.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +3 -4
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/list.d.ts.map +1 -1
- package/dist/cmd/project/list.js +1 -0
- package/dist/cmd/project/list.js.map +1 -1
- package/dist/cmd/project/show.d.ts.map +1 -1
- package/dist/cmd/project/show.js +1 -0
- package/dist/cmd/project/show.js.map +1 -1
- package/dist/cmd/upgrade/index.d.ts.map +1 -1
- package/dist/cmd/upgrade/index.js +5 -3
- package/dist/cmd/upgrade/index.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -11
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime-bootstrap.d.ts +3 -2
- package/dist/runtime-bootstrap.d.ts.map +1 -1
- package/dist/runtime-bootstrap.js +7 -2
- package/dist/runtime-bootstrap.js.map +1 -1
- package/dist/schemas/deploy.d.ts +1 -1
- package/dist/types.d.ts +40 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/bun-version-checker.d.ts +11 -0
- package/dist/utils/bun-version-checker.d.ts.map +1 -0
- package/dist/utils/bun-version-checker.js +56 -0
- package/dist/utils/bun-version-checker.js.map +1 -0
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +5 -2
- package/dist/version-check.js.map +1 -1
- package/package.json +10 -3
- package/src/auth.ts +9 -5
- package/src/banner.ts +1 -1
- package/src/cli.ts +228 -29
- package/src/cmd/auth/signup.ts +1 -1
- package/src/cmd/build/ast.ts +7 -0
- package/src/cmd/build/entry-generator.ts +404 -0
- package/src/cmd/build/index.ts +7 -28
- package/src/cmd/build/vite/agent-discovery.ts +467 -0
- package/src/cmd/build/vite/browser-env-plugin.ts +34 -0
- package/src/cmd/build/vite/bun-dev-server.ts +78 -0
- package/src/cmd/build/vite/config-loader.ts +70 -0
- package/src/cmd/build/vite/index.ts +166 -0
- package/src/cmd/build/vite/lifecycle-generator.ts +43 -0
- package/src/cmd/build/vite/metadata-generator.ts +602 -0
- package/src/cmd/build/vite/patch-plugin.ts +88 -0
- package/src/cmd/build/vite/registry-generator.ts +288 -0
- package/src/cmd/build/vite/route-discovery.ts +186 -0
- package/src/cmd/build/vite/server-bundler.ts +258 -0
- package/src/cmd/build/vite/vite-asset-server-config.ts +134 -0
- package/src/cmd/build/vite/vite-asset-server.ts +63 -0
- package/src/cmd/build/vite/vite-builder.ts +284 -0
- package/src/cmd/build/vite/workbench-generator.ts +152 -0
- package/src/cmd/build/vite-bundler.ts +110 -0
- package/src/cmd/cloud/agent/get.ts +2 -0
- package/src/cmd/cloud/agent/list.ts +1 -0
- package/src/cmd/cloud/db/get.ts +1 -0
- package/src/cmd/cloud/db/list.ts +1 -0
- package/src/cmd/cloud/deploy.ts +175 -144
- package/src/cmd/cloud/deployment/list.ts +4 -0
- package/src/cmd/cloud/env/list.ts +1 -0
- package/src/cmd/cloud/keyvalue/get.ts +1 -0
- package/src/cmd/cloud/keyvalue/keys.ts +1 -0
- package/src/cmd/cloud/keyvalue/list-namespaces.ts +1 -0
- package/src/cmd/cloud/keyvalue/stats.ts +2 -0
- package/src/cmd/cloud/secret/list.ts +1 -0
- package/src/cmd/cloud/session/list.ts +4 -0
- package/src/cmd/cloud/storage/get.ts +1 -0
- package/src/cmd/cloud/storage/list.ts +4 -0
- package/src/cmd/cloud/stream/get.ts +1 -0
- package/src/cmd/cloud/stream/list.ts +1 -0
- package/src/cmd/cloud/vector/get.ts +1 -0
- package/src/cmd/cloud/vector/search.ts +1 -0
- package/src/cmd/dev/index.ts +323 -914
- package/src/cmd/dev/sync.ts +5 -1
- package/src/cmd/profile/show.ts +3 -4
- package/src/cmd/project/create.ts +3 -4
- package/src/cmd/project/list.ts +1 -0
- package/src/cmd/project/show.ts +1 -0
- package/src/cmd/upgrade/index.ts +6 -3
- package/src/config.ts +31 -11
- package/src/index.ts +2 -0
- package/src/runtime-bootstrap.ts +8 -2
- package/src/types.ts +48 -1
- package/src/utils/bun-version-checker.ts +70 -0
- package/src/version-check.ts +6 -2
- package/dist/cmd/build/bundler.d.ts +0 -22
- package/dist/cmd/build/bundler.d.ts.map +0 -1
- package/dist/cmd/build/bundler.js +0 -766
- package/dist/cmd/build/bundler.js.map +0 -1
- package/dist/cmd/build/config-loader.d.ts +0 -16
- package/dist/cmd/build/config-loader.d.ts.map +0 -1
- package/dist/cmd/build/config-loader.js +0 -227
- package/dist/cmd/build/config-loader.js.map +0 -1
- package/dist/cmd/build/file.d.ts +0 -2
- package/dist/cmd/build/file.d.ts.map +0 -1
- package/dist/cmd/build/file.js +0 -10
- package/dist/cmd/build/file.js.map +0 -1
- package/dist/cmd/build/fix-duplicate-exports.d.ts +0 -2
- package/dist/cmd/build/fix-duplicate-exports.d.ts.map +0 -1
- package/dist/cmd/build/fix-duplicate-exports.js +0 -170
- package/dist/cmd/build/fix-duplicate-exports.js.map +0 -1
- package/dist/cmd/build/plugin.d.ts +0 -6
- package/dist/cmd/build/plugin.d.ts.map +0 -1
- package/dist/cmd/build/plugin.js +0 -645
- package/dist/cmd/build/plugin.js.map +0 -1
- package/dist/cmd/build/route-discovery.d.ts +0 -54
- package/dist/cmd/build/route-discovery.d.ts.map +0 -1
- package/dist/cmd/build/route-discovery.js +0 -148
- package/dist/cmd/build/route-discovery.js.map +0 -1
- package/dist/cmd/build/route-registry.d.ts +0 -38
- package/dist/cmd/build/route-registry.d.ts.map +0 -1
- package/dist/cmd/build/route-registry.js.map +0 -1
- package/src/cmd/build/bundler.ts +0 -927
- package/src/cmd/build/config-loader.ts +0 -268
- package/src/cmd/build/file.ts +0 -10
- package/src/cmd/build/fix-duplicate-exports.ts +0 -207
- package/src/cmd/build/plugin.ts +0 -782
- package/src/cmd/build/route-discovery.ts +0 -202
- package/src/cmd/build/route-registry.ts +0 -222
package/AGENTS.md
CHANGED
|
@@ -124,6 +124,60 @@ export const deployCommand: CommandDefinition = {
|
|
|
124
124
|
export default deployCommand;
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
+
## Build Architecture (Vite + Bun)
|
|
128
|
+
|
|
129
|
+
The CLI uses a hybrid Vite + Bun build system:
|
|
130
|
+
|
|
131
|
+
### Production Builds (`agentuity build`)
|
|
132
|
+
|
|
133
|
+
1. **Client Assets** - Vite builds frontend code:
|
|
134
|
+
- Input: `src/web/index.html` + React components
|
|
135
|
+
- Output: `.agentuity/client/` with manifest
|
|
136
|
+
- CDN support for production deployments
|
|
137
|
+
- Environment variables: `VITE_*`, `AGENTUITY_PUBLIC_*`, `PUBLIC_*`
|
|
138
|
+
|
|
139
|
+
2. **Workbench** - Vite builds workbench UI (if enabled):
|
|
140
|
+
- Input: `.agentuity/workbench-src/` (generated)
|
|
141
|
+
- Output: `.agentuity/workbench/` with manifest
|
|
142
|
+
- Base path: configured workbench route
|
|
143
|
+
|
|
144
|
+
3. **Server Bundle** - Bun.build creates single server file:
|
|
145
|
+
- Input: `.agentuity/app.generated.ts`
|
|
146
|
+
- Output: `.agentuity/app.js`
|
|
147
|
+
- Externals: Heavy runtime deps (bun, fsevents, sharp, ws, etc.)
|
|
148
|
+
- Minification: Controlled by `--dev` flag
|
|
149
|
+
|
|
150
|
+
### Development Server (`agentuity dev`)
|
|
151
|
+
|
|
152
|
+
Single Bun server + Vite asset server architecture:
|
|
153
|
+
|
|
154
|
+
- **Bun Server (port 3500):**
|
|
155
|
+
- Handles ALL HTTP + WebSocket requests
|
|
156
|
+
- Routes API calls, serves workbench
|
|
157
|
+
- Proxies frontend assets to Vite
|
|
158
|
+
- Uses native Bun WebSocket support (`hono/bun`)
|
|
159
|
+
|
|
160
|
+
- **Vite Asset Server (dynamic port, typically 5173):**
|
|
161
|
+
- HMR and React Fast Refresh ONLY
|
|
162
|
+
- Asset transformation (TypeScript, JSX, CSS)
|
|
163
|
+
- Browser never connects directly to Vite
|
|
164
|
+
- Proxied through Bun server
|
|
165
|
+
|
|
166
|
+
### Build Utilities
|
|
167
|
+
|
|
168
|
+
- **`bun-version-checker.ts`** - Enforces minimum Bun version (>=1.3.3)
|
|
169
|
+
- **`dependency-checker.ts`** - Auto-upgrades `@agentuity/*` packages
|
|
170
|
+
- **`metadata-generator.ts`** - Creates `agentuity.metadata.json`
|
|
171
|
+
- **`agent-discovery.ts`** - AST-based agent discovery
|
|
172
|
+
- **`route-discovery.ts`** - AST-based route discovery
|
|
173
|
+
- **`registry-generator.ts`** - Generates type-safe registries
|
|
174
|
+
|
|
175
|
+
### Build Flags
|
|
176
|
+
|
|
177
|
+
- `--dev` - Development build (no minification, inline sourcemaps, faster)
|
|
178
|
+
- `--skipTypeCheck` - Skip TypeScript validation after build
|
|
179
|
+
- `--outdir` - Custom output directory (default: `.agentuity`)
|
|
180
|
+
|
|
127
181
|
## Testing
|
|
128
182
|
|
|
129
183
|
- Test by running: `bun bin/cli.ts [command]`
|
package/dist/auth.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CommandContext, AuthData } from './types';
|
|
2
2
|
import { type APIClient as APIClientType } from './api';
|
|
3
3
|
export declare function isTTY(): boolean;
|
|
4
|
-
export declare function hasLoggedInBefore(): boolean
|
|
4
|
+
export declare function hasLoggedInBefore(): Promise<boolean>;
|
|
5
5
|
export declare function isAuthenticated(): Promise<boolean>;
|
|
6
6
|
export declare function requireAuth(ctx: CommandContext<undefined>): Promise<AuthData>;
|
|
7
7
|
export declare function optionalAuth(ctx: CommandContext<undefined>, continueText?: string): Promise<AuthData | null>;
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAA4B,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,OAAO,CAAC;AAElF,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAMxD;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmEnF;AAED,wBAAsB,YAAY,CACjC,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,EAC9B,YAAY,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAmH1B;AAED,wBAAsB,UAAU,CAC/B,GAAG,EAAE,cAAc,GAAG;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,GAChD,OAAO,CAAC,MAAM,CAAC,CAoCjB;AAED,wBAAsB,WAAW,CAChC,GAAG,EAAE,cAAc,GAAG;IAAE,SAAS,CAAC,EAAE,aAAa,CAAC;IAAC,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GAClE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwC7B"}
|
package/dist/auth.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
1
|
import enquirer from 'enquirer';
|
|
3
2
|
import { getDefaultConfigDir, getAuth, saveConfig, loadConfig, saveOrgId } from './config';
|
|
4
3
|
import { getCommand } from './command-prefix';
|
|
@@ -9,9 +8,9 @@ import { APIClient, getAPIBaseURL } from './api';
|
|
|
9
8
|
export function isTTY() {
|
|
10
9
|
return process.stdin.isTTY === true && process.stdout.isTTY === true;
|
|
11
10
|
}
|
|
12
|
-
export function hasLoggedInBefore() {
|
|
11
|
+
export async function hasLoggedInBefore() {
|
|
13
12
|
const configDir = getDefaultConfigDir();
|
|
14
|
-
return
|
|
13
|
+
return await Bun.file(configDir).exists();
|
|
15
14
|
}
|
|
16
15
|
export async function isAuthenticated() {
|
|
17
16
|
const auth = await getAuth();
|
|
@@ -27,7 +26,7 @@ export async function requireAuth(ctx) {
|
|
|
27
26
|
return auth;
|
|
28
27
|
}
|
|
29
28
|
const loginCmd = getCommand('auth login');
|
|
30
|
-
const hasConfig = hasLoggedInBefore();
|
|
29
|
+
const hasConfig = await hasLoggedInBefore();
|
|
31
30
|
if (!isTTY()) {
|
|
32
31
|
if (hasConfig) {
|
|
33
32
|
logger.fatal(`You are not currently logged in or your session has expired.\n` +
|
|
@@ -78,7 +77,7 @@ export async function optionalAuth(ctx, continueText) {
|
|
|
78
77
|
const config = await loadConfig();
|
|
79
78
|
// check to see if we've shown the banner or logged in before
|
|
80
79
|
const benefitsShown = config?.preferences?.signup_banner_shown === true;
|
|
81
|
-
const hasLoggedIn = hasLoggedInBefore();
|
|
80
|
+
const hasLoggedIn = await hasLoggedInBefore();
|
|
82
81
|
// if we haven't shown it, show it once and then remember that we've shown it
|
|
83
82
|
if (!benefitsShown && hasLoggedIn) {
|
|
84
83
|
tui.showSignupBenefits();
|
|
@@ -203,6 +202,10 @@ export async function optionalOrg(ctx) {
|
|
|
203
202
|
if (!auth || !apiClient) {
|
|
204
203
|
return undefined;
|
|
205
204
|
}
|
|
205
|
+
// If auth exists but has no API key, skip (likely unauthenticated or test scenario)
|
|
206
|
+
if (!auth.apiKey) {
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
206
209
|
// Check if org is provided via --org-id flag
|
|
207
210
|
if (options.orgId) {
|
|
208
211
|
return options.orgId;
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/banner.js
CHANGED
|
@@ -35,7 +35,7 @@ export function generateBanner(version, compact) {
|
|
|
35
35
|
compact
|
|
36
36
|
? undefined
|
|
37
37
|
: CYAN +
|
|
38
|
-
`│ Docs: ${link('https://agentuity.dev', undefined, WHITE)}${CYAN}
|
|
38
|
+
`│ Docs: ${link('https://preview.agentuity.dev', undefined, WHITE)}${CYAN} │` +
|
|
39
39
|
RESET,
|
|
40
40
|
compact
|
|
41
41
|
? undefined
|
package/dist/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACN,eAAe,EACf,UAAU,EACV,IAAI,EACJ,kBAAkB,EAClB,eAAe,EACf,SAAS,GACT,MAAM,OAAO,CAAC;AAEf,MAAM,UAAU,cAAc,CAAC,OAAgB,EAAE,OAAc;IAC9D,MAAM,QAAQ,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,UAAU;QACtB,CAAC,CAAC,IAAI;YACL,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;YAC/B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC;QACnC,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,KAAK,GAAG,UAAU;QACvB,CAAC,CAAC,IAAI;YACL,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC;QACjC,CAAC,CAAC,EAAE,CAAC;IACN,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;IAEnC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,8BAA8B;IAChD,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,wBAAwB;IAClE,MAAM,WAAW,GAAG,KAAK;QACxB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,IAAI,SAAS,CAAC;QAC7D,CAAC,CAAC,QAAQ,CAAC;IACZ,MAAM,gBAAgB,GAAG,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,KAAK,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,GAAG,CAAC,CAAC;IAE1E,MAAM,KAAK,GAAG;QACb,IAAI,GAAG,wDAAwD,GAAG,KAAK;QACvE,IAAI,GAAG,kBAAkB,KAAK,wCAAwC,IAAI,IAAI,GAAG,KAAK;QACtF,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,wDAAwD,GAAG,KAAK;QAC7F,OAAO;YACN,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI;gBACL,IAAI,YAAY,GAAG,KAAK,GAAG,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,IAAI,IAAI;gBAC7E,KAAK;QACP,OAAO;YACN,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI;gBACL,qBAAqB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../src/banner.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACX,iBAAiB,EAEjB,cAAc,EAQd,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACX,iBAAiB,EAEjB,cAAc,EAQd,MAAM,SAAS,CAAC;AAqUjB,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2MjE;AAs2BD,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC,CAgMf"}
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import enquirer from 'enquirer';
|
|
|
8
8
|
import * as tui from './tui';
|
|
9
9
|
import { parseArgsSchema, parseOptionsSchema, buildValidationInput } from './schema-parser';
|
|
10
10
|
import { defaultProfileName, loadProjectConfig } from './config';
|
|
11
|
-
import { APIClient, getAPIBaseURL } from './api';
|
|
11
|
+
import { APIClient, getAPIBaseURL, getAppBaseURL } from './api';
|
|
12
12
|
import { ErrorCode, ExitCode, createError, exitWithError } from './errors';
|
|
13
13
|
import { getCommand } from './command-prefix';
|
|
14
14
|
import { isValidateMode, outputValidation } from './output';
|
|
@@ -38,10 +38,39 @@ function createAPIClient(baseCtx, config) {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
+
function resolveWebUrl(ctx, spec) {
|
|
42
|
+
if (!spec)
|
|
43
|
+
return undefined;
|
|
44
|
+
const raw = typeof spec === 'function' ? spec(ctx) : spec;
|
|
45
|
+
if (!raw)
|
|
46
|
+
return undefined;
|
|
47
|
+
if (raw.startsWith('http://') || raw.startsWith('https://')) {
|
|
48
|
+
return raw;
|
|
49
|
+
}
|
|
50
|
+
const appBase = getAppBaseURL(ctx.config ?? null).replace(/\/$/, '');
|
|
51
|
+
const path = raw.startsWith('/') ? raw : `/${raw}`;
|
|
52
|
+
return `${appBase}${path}`;
|
|
53
|
+
}
|
|
54
|
+
function maybeRenderWebLink(ctx, spec) {
|
|
55
|
+
if (ctx.options.json)
|
|
56
|
+
return;
|
|
57
|
+
if (isValidateMode(ctx.options))
|
|
58
|
+
return;
|
|
59
|
+
const url = resolveWebUrl(ctx, spec);
|
|
60
|
+
if (!url)
|
|
61
|
+
return;
|
|
62
|
+
if (tui.supportsHyperlinks()) {
|
|
63
|
+
tui.output(tui.muted(`→ ${tui.link(url, 'View on the web', '')}`));
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
tui.output(tui.muted(`→ View on the web: ${url}`));
|
|
67
|
+
}
|
|
68
|
+
tui.newline();
|
|
69
|
+
}
|
|
41
70
|
/**
|
|
42
71
|
* Execute handler or output validation result based on mode
|
|
43
72
|
*/
|
|
44
|
-
async function executeOrValidate(ctx, commandName, handler, hasResponseSchema) {
|
|
73
|
+
async function executeOrValidate(ctx, commandName, handler, hasResponseSchema, webUrl) {
|
|
45
74
|
if (isValidateMode(ctx.options)) {
|
|
46
75
|
// In validate mode, just output success (validation already passed via Zod)
|
|
47
76
|
const result = {
|
|
@@ -51,6 +80,8 @@ async function executeOrValidate(ctx, commandName, handler, hasResponseSchema) {
|
|
|
51
80
|
outputValidation(result, ctx.options);
|
|
52
81
|
}
|
|
53
82
|
else if (handler) {
|
|
83
|
+
// Render "View on the web" link before normal execution
|
|
84
|
+
maybeRenderWebLink(ctx, webUrl);
|
|
54
85
|
// Normal execution
|
|
55
86
|
const result = await handler(ctx);
|
|
56
87
|
// If --json flag is set
|
|
@@ -152,6 +183,70 @@ function handleProjectConfigError(error, requiresProject, logger, errorFormat) {
|
|
|
152
183
|
}
|
|
153
184
|
throw error;
|
|
154
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Prompt user to select a project from their available projects
|
|
188
|
+
*/
|
|
189
|
+
async function promptProjectSelection(baseCtx) {
|
|
190
|
+
const { config } = baseCtx;
|
|
191
|
+
// Need auth and API client to fetch projects
|
|
192
|
+
const auth = await requireAuth(baseCtx);
|
|
193
|
+
if (!auth) {
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const apiClient = createAPIClient(baseCtx, config);
|
|
197
|
+
// Fetch available projects
|
|
198
|
+
const { projectList } = await import('@agentuity/server');
|
|
199
|
+
const projects = await projectList(apiClient);
|
|
200
|
+
if (!projects || projects.length === 0) {
|
|
201
|
+
tui.warning('No projects found. Please create a project first.');
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
// Sort projects: prioritize those matching orgId in preferences
|
|
205
|
+
const preferredOrgId = config?.preferences?.orgId;
|
|
206
|
+
const sortedProjects = [...projects].sort((a, b) => {
|
|
207
|
+
// Prioritize preferred org
|
|
208
|
+
if (preferredOrgId) {
|
|
209
|
+
if (a.orgId === preferredOrgId && b.orgId !== preferredOrgId)
|
|
210
|
+
return -1;
|
|
211
|
+
if (b.orgId === preferredOrgId && a.orgId !== preferredOrgId)
|
|
212
|
+
return 1;
|
|
213
|
+
}
|
|
214
|
+
// Otherwise sort by name
|
|
215
|
+
return a.name.localeCompare(b.name);
|
|
216
|
+
});
|
|
217
|
+
// Build select options with aligned formatting
|
|
218
|
+
const { createPrompt } = tui;
|
|
219
|
+
const prompt = createPrompt();
|
|
220
|
+
// Calculate max name length for padding (with reasonable max)
|
|
221
|
+
const maxNameLength = Math.min(40, Math.max(...sortedProjects.map((p) => p.name.length)));
|
|
222
|
+
const selectedProjectId = await prompt.select({
|
|
223
|
+
message: 'Select a project',
|
|
224
|
+
options: sortedProjects.map((p) => {
|
|
225
|
+
// Truncate and pad name for alignment
|
|
226
|
+
const displayName = p.name.length > maxNameLength
|
|
227
|
+
? p.name.substring(0, maxNameLength - 1) + '…'
|
|
228
|
+
: p.name.padEnd(maxNameLength);
|
|
229
|
+
return {
|
|
230
|
+
value: p.id,
|
|
231
|
+
label: `${displayName} ${tui.muted(p.id)}`,
|
|
232
|
+
};
|
|
233
|
+
}),
|
|
234
|
+
});
|
|
235
|
+
// Cleanup stdin after prompt to prevent hanging
|
|
236
|
+
if (process.stdin.isTTY) {
|
|
237
|
+
process.stdin.pause();
|
|
238
|
+
}
|
|
239
|
+
const selectedProject = sortedProjects.find((p) => p.id === selectedProjectId);
|
|
240
|
+
if (!selectedProject) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
// Convert to ProjectConfig format
|
|
244
|
+
return {
|
|
245
|
+
projectId: selectedProject.id,
|
|
246
|
+
orgId: selectedProject.orgId,
|
|
247
|
+
region: selectedProject.cloudRegion || '',
|
|
248
|
+
};
|
|
249
|
+
}
|
|
155
250
|
export async function createCLI(version) {
|
|
156
251
|
const program = new Command();
|
|
157
252
|
program
|
|
@@ -277,12 +372,15 @@ export async function createCLI(version) {
|
|
|
277
372
|
}
|
|
278
373
|
// Format each section (show banner for root command)
|
|
279
374
|
let output = '';
|
|
280
|
-
// Show banner
|
|
375
|
+
// Show banner (full for root, compact for subcommands)
|
|
281
376
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
282
377
|
const isRootCommand = !cmd.parent;
|
|
283
378
|
if (isRootCommand) {
|
|
284
379
|
output += `${generateBanner(version)}\n\n`;
|
|
285
380
|
}
|
|
381
|
+
else {
|
|
382
|
+
output += `${generateBanner(version, true)}\n`;
|
|
383
|
+
}
|
|
286
384
|
// Description
|
|
287
385
|
const description = helper.commandDescription(cmd);
|
|
288
386
|
if (description) {
|
|
@@ -444,6 +542,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
444
542
|
.action(() => {
|
|
445
543
|
cmd.help();
|
|
446
544
|
});
|
|
545
|
+
// Don't add options to parent commands - only to leaf commands
|
|
447
546
|
return;
|
|
448
547
|
}
|
|
449
548
|
const { requiresProject, optionalProject, requiresOrg, optionalOrg, requiresRegion, optionalRegion, } = normalizeReqs(subcommand);
|
|
@@ -469,6 +568,8 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
469
568
|
cmd.argument(argSyntax);
|
|
470
569
|
}
|
|
471
570
|
}
|
|
571
|
+
// Track if projectId is defined in schema options
|
|
572
|
+
let hasProjectIdInSchema = false;
|
|
472
573
|
if (subcommand.schema?.options) {
|
|
473
574
|
const parsed = parseOptionsSchema(subcommand.schema.options);
|
|
474
575
|
for (const opt of parsed) {
|
|
@@ -476,6 +577,10 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
476
577
|
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
|
|
477
578
|
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
|
478
579
|
.toLowerCase();
|
|
580
|
+
// Track if this schema defines projectId (as 'projectId' or 'project-id')
|
|
581
|
+
if (opt.name === 'projectId' || opt.name === 'project-id' || flag === 'project-id') {
|
|
582
|
+
hasProjectIdInSchema = true;
|
|
583
|
+
}
|
|
479
584
|
const desc = opt.description || '';
|
|
480
585
|
// Add short flag alias for verbose
|
|
481
586
|
const flagSpec = flag === 'verbose' ? `-v, --${flag}` : `--${flag}`;
|
|
@@ -528,6 +633,10 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
528
633
|
}
|
|
529
634
|
}
|
|
530
635
|
}
|
|
636
|
+
// Add --project-id if command requires/optional project and doesn't define it in schema
|
|
637
|
+
if ((requiresProject || optionalProject) && !hasProjectIdInSchema) {
|
|
638
|
+
cmd.option('--project-id <id>', 'project ID (alternative to --dir)');
|
|
639
|
+
}
|
|
531
640
|
cmd.action(async (...rawArgs) => {
|
|
532
641
|
const cmdObj = rawArgs[rawArgs.length - 1];
|
|
533
642
|
const options = cmdObj.opts();
|
|
@@ -540,30 +649,81 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
540
649
|
let projectDir;
|
|
541
650
|
const dirNeeded = normalized.requiresProject || normalized.optionalProject;
|
|
542
651
|
if (dirNeeded) {
|
|
543
|
-
const
|
|
544
|
-
|
|
545
|
-
if (
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
652
|
+
const projectId = options.projectId;
|
|
653
|
+
// If --project-id is provided, fetch project details from API
|
|
654
|
+
if (projectId) {
|
|
655
|
+
try {
|
|
656
|
+
const auth = await requireAuth(baseCtx);
|
|
657
|
+
if (auth) {
|
|
658
|
+
const apiClient = createAPIClient(baseCtx, baseCtx.config);
|
|
659
|
+
const { projectGet } = await import('@agentuity/server');
|
|
660
|
+
const projectDetails = await projectGet(apiClient, { id: projectId, mask: true });
|
|
661
|
+
project = {
|
|
662
|
+
projectId: projectDetails.id,
|
|
663
|
+
orgId: projectDetails.orgId,
|
|
664
|
+
region: projectDetails.cloudRegion || '',
|
|
665
|
+
};
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
catch (_error) {
|
|
669
|
+
if (normalized.requiresProject) {
|
|
670
|
+
exitWithError(createError(ErrorCode.PROJECT_NOT_FOUND, `Project not found: ${projectId}`, undefined, [
|
|
671
|
+
'Verify the project ID is correct',
|
|
672
|
+
`Run "${getCommand('project list')}" to see available projects`,
|
|
562
673
|
]), baseCtx.logger, baseCtx.options.errorFormat);
|
|
563
674
|
}
|
|
564
|
-
throw error;
|
|
565
675
|
}
|
|
566
|
-
|
|
676
|
+
}
|
|
677
|
+
else {
|
|
678
|
+
// Try to load from directory
|
|
679
|
+
const dir = options.dir ?? process.cwd();
|
|
680
|
+
projectDir = dir;
|
|
681
|
+
if (projectDir.startsWith('~/')) {
|
|
682
|
+
projectDir = projectDir.replace('~/', homedir());
|
|
683
|
+
}
|
|
684
|
+
projectDir = resolve(projectDir);
|
|
685
|
+
try {
|
|
686
|
+
project = await loadProjectConfig(dir, baseCtx.config);
|
|
687
|
+
}
|
|
688
|
+
catch (error) {
|
|
689
|
+
if (normalized.requiresProject) {
|
|
690
|
+
if (error &&
|
|
691
|
+
typeof error === 'object' &&
|
|
692
|
+
'name' in error &&
|
|
693
|
+
error.name === 'ProjectConfigNotFoundExpection') {
|
|
694
|
+
// If TTY is available, prompt user to select a project
|
|
695
|
+
const hasTTY = process.stdin.isTTY && process.stdout.isTTY;
|
|
696
|
+
if (hasTTY) {
|
|
697
|
+
// Try to prompt for project selection
|
|
698
|
+
try {
|
|
699
|
+
const selectedProject = await promptProjectSelection(baseCtx);
|
|
700
|
+
if (selectedProject) {
|
|
701
|
+
// Set the project ID in options so it can be used by the command
|
|
702
|
+
options.projectId =
|
|
703
|
+
selectedProject.projectId;
|
|
704
|
+
project = selectedProject;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
catch (promptError) {
|
|
708
|
+
// If prompting fails, fall through to the original error
|
|
709
|
+
baseCtx.logger.trace('Project selection prompt failed: %s', promptError);
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
if (!project) {
|
|
713
|
+
exitWithError(createError(ErrorCode.PROJECT_NOT_FOUND, 'Invalid project folder', undefined, [
|
|
714
|
+
'Use --dir to specify a different directory',
|
|
715
|
+
'Use --project-id to specify a project by ID',
|
|
716
|
+
'Change to a directory containing agentuity.json',
|
|
717
|
+
`Run "${getCommand('project create')}" to create a new project`,
|
|
718
|
+
]), baseCtx.logger, baseCtx.options.errorFormat);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
throw error;
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
// For optional projects, silently continue without project config
|
|
726
|
+
}
|
|
567
727
|
}
|
|
568
728
|
}
|
|
569
729
|
if (normalized.requiresAuth) {
|
|
@@ -628,7 +788,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
628
788
|
ctx.region = region;
|
|
629
789
|
}
|
|
630
790
|
}
|
|
631
|
-
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response);
|
|
791
|
+
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response, subcommand.webUrl);
|
|
632
792
|
}
|
|
633
793
|
catch (error) {
|
|
634
794
|
if (error && typeof error === 'object' && 'issues' in error) {
|
|
@@ -685,6 +845,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
685
845
|
}
|
|
686
846
|
}
|
|
687
847
|
if (subcommand.handler) {
|
|
848
|
+
maybeRenderWebLink(ctx, subcommand.webUrl);
|
|
688
849
|
const result = await subcommand.handler(ctx);
|
|
689
850
|
// If --json flag is set
|
|
690
851
|
if (baseCtx.options.json) {
|
|
@@ -767,7 +928,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
767
928
|
ctx.region = region;
|
|
768
929
|
}
|
|
769
930
|
}
|
|
770
|
-
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response);
|
|
931
|
+
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response, subcommand.webUrl);
|
|
771
932
|
}
|
|
772
933
|
catch (error) {
|
|
773
934
|
if (error && typeof error === 'object' && 'issues' in error) {
|
|
@@ -820,6 +981,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
820
981
|
}
|
|
821
982
|
}
|
|
822
983
|
if (subcommand.handler) {
|
|
984
|
+
maybeRenderWebLink(ctx, subcommand.webUrl);
|
|
823
985
|
const result = await subcommand.handler(ctx);
|
|
824
986
|
// If --json flag is set
|
|
825
987
|
if (baseCtx.options.json) {
|
|
@@ -867,7 +1029,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
867
1029
|
if (normalized.optionalOrg && ctx.apiClient && ctx.auth) {
|
|
868
1030
|
ctx.orgId = await requireOrg(ctx);
|
|
869
1031
|
}
|
|
870
|
-
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response);
|
|
1032
|
+
await executeOrValidate(ctx, `${parent.name()} ${subcommand.name}`, subcommand.handler, !!subcommand.schema?.response, subcommand.webUrl);
|
|
871
1033
|
}
|
|
872
1034
|
catch (error) {
|
|
873
1035
|
if (error && typeof error === 'object' && 'issues' in error) {
|
|
@@ -909,6 +1071,7 @@ async function registerSubcommand(parent, subcommand, baseCtx, hidden) {
|
|
|
909
1071
|
}
|
|
910
1072
|
}
|
|
911
1073
|
if (subcommand.handler) {
|
|
1074
|
+
maybeRenderWebLink(ctx, subcommand.webUrl);
|
|
912
1075
|
const result = await subcommand.handler(ctx);
|
|
913
1076
|
// If --json flag is set
|
|
914
1077
|
if (baseCtx.options.json) {
|