@agentuity/cli 0.0.60 → 0.0.61
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/bin/cli.ts +15 -4
- package/dist/banner.d.ts +1 -0
- package/dist/banner.d.ts.map +1 -1
- package/dist/banner.js +28 -13
- package/dist/banner.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +85 -9
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/capabilities/index.d.ts.map +1 -1
- package/dist/cmd/ai/capabilities/index.js +4 -0
- package/dist/cmd/ai/capabilities/index.js.map +1 -1
- package/dist/cmd/ai/capabilities/show.d.ts.map +1 -1
- package/dist/cmd/ai/capabilities/show.js +13 -2
- package/dist/cmd/ai/capabilities/show.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +11 -0
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/prompt/agent.d.ts +3 -0
- package/dist/cmd/ai/prompt/agent.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/agent.js +340 -0
- package/dist/cmd/ai/prompt/agent.js.map +1 -0
- package/dist/cmd/ai/prompt/api.d.ts +3 -0
- package/dist/cmd/ai/prompt/api.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/api.js +272 -0
- package/dist/cmd/ai/prompt/api.js.map +1 -0
- package/dist/cmd/ai/prompt/index.d.ts +1 -2
- package/dist/cmd/ai/prompt/index.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/index.js +17 -1
- package/dist/cmd/ai/prompt/index.js.map +1 -1
- package/dist/cmd/ai/prompt/llm.d.ts +1 -0
- package/dist/cmd/ai/prompt/llm.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/llm.js +2 -2
- package/dist/cmd/ai/prompt/llm.js.map +1 -1
- package/dist/cmd/ai/prompt/web.d.ts +3 -0
- package/dist/cmd/ai/prompt/web.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/web.js +299 -0
- package/dist/cmd/ai/prompt/web.js.map +1 -0
- package/dist/cmd/ai/schema/generate.js +1 -1
- package/dist/cmd/ai/schema/generate.js.map +1 -1
- package/dist/cmd/ai/schema/index.d.ts.map +1 -1
- package/dist/cmd/ai/schema/index.js +2 -0
- package/dist/cmd/ai/schema/index.js.map +1 -1
- package/dist/cmd/ai/schema/show.d.ts.map +1 -1
- package/dist/cmd/ai/schema/show.js +4 -1
- package/dist/cmd/ai/schema/show.js.map +1 -1
- package/dist/cmd/auth/api.d.ts.map +1 -1
- package/dist/cmd/auth/api.js +12 -6
- package/dist/cmd/auth/api.js.map +1 -1
- package/dist/cmd/auth/index.d.ts.map +1 -1
- package/dist/cmd/auth/index.js +5 -0
- package/dist/cmd/auth/index.js.map +1 -1
- package/dist/cmd/auth/login.d.ts.map +1 -1
- package/dist/cmd/auth/login.js +5 -22
- package/dist/cmd/auth/login.js.map +1 -1
- package/dist/cmd/auth/logout.d.ts.map +1 -1
- package/dist/cmd/auth/logout.js +4 -1
- package/dist/cmd/auth/logout.js.map +1 -1
- package/dist/cmd/auth/signup.d.ts.map +1 -1
- package/dist/cmd/auth/signup.js +4 -1
- package/dist/cmd/auth/signup.js.map +1 -1
- package/dist/cmd/auth/ssh/add.d.ts.map +1 -1
- package/dist/cmd/auth/ssh/add.js +13 -4
- package/dist/cmd/auth/ssh/add.js.map +1 -1
- package/dist/cmd/auth/ssh/api.d.ts.map +1 -1
- package/dist/cmd/auth/ssh/api.js +11 -5
- package/dist/cmd/auth/ssh/api.js.map +1 -1
- package/dist/cmd/auth/ssh/delete.js +4 -4
- package/dist/cmd/auth/ssh/delete.js.map +1 -1
- package/dist/cmd/auth/ssh/index.d.ts.map +1 -1
- package/dist/cmd/auth/ssh/index.js +5 -0
- package/dist/cmd/auth/ssh/index.js.map +1 -1
- package/dist/cmd/auth/ssh/list.js +3 -3
- package/dist/cmd/auth/ssh/list.js.map +1 -1
- package/dist/cmd/auth/whoami.d.ts.map +1 -1
- package/dist/cmd/auth/whoami.js +4 -4
- package/dist/cmd/auth/whoami.js.map +1 -1
- package/dist/cmd/build/ast.d.ts +24 -1
- package/dist/cmd/build/ast.d.ts.map +1 -1
- package/dist/cmd/build/ast.js +526 -14
- package/dist/cmd/build/ast.js.map +1 -1
- package/dist/cmd/build/bundler.d.ts +3 -1
- package/dist/cmd/build/bundler.d.ts.map +1 -1
- package/dist/cmd/build/bundler.js +89 -38
- package/dist/cmd/build/bundler.js.map +1 -1
- package/dist/cmd/build/file.js +1 -1
- package/dist/cmd/build/file.js.map +1 -1
- package/dist/cmd/build/fix-duplicate-exports.d.ts.map +1 -1
- package/dist/cmd/build/fix-duplicate-exports.js +4 -1
- package/dist/cmd/build/fix-duplicate-exports.js.map +1 -1
- package/dist/cmd/build/index.d.ts.map +1 -1
- package/dist/cmd/build/index.js +55 -13
- package/dist/cmd/build/index.js.map +1 -1
- package/dist/cmd/build/plugin.d.ts.map +1 -1
- package/dist/cmd/build/plugin.js +183 -38
- package/dist/cmd/build/plugin.js.map +1 -1
- package/dist/cmd/cloud/agent/get.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/get.js +5 -2
- package/dist/cmd/cloud/agent/get.js.map +1 -1
- package/dist/cmd/cloud/agent/index.d.ts.map +1 -1
- package/dist/cmd/cloud/agent/index.js +5 -0
- package/dist/cmd/cloud/agent/index.js.map +1 -1
- package/dist/cmd/cloud/agent/list.js +3 -3
- package/dist/cmd/cloud/agent/list.js.map +1 -1
- package/dist/cmd/cloud/apikey/create.d.ts.map +1 -1
- package/dist/cmd/cloud/apikey/create.js +12 -3
- package/dist/cmd/cloud/apikey/create.js.map +1 -1
- package/dist/cmd/cloud/apikey/delete.js +3 -3
- package/dist/cmd/cloud/apikey/delete.js.map +1 -1
- package/dist/cmd/cloud/apikey/get.js +1 -1
- package/dist/cmd/cloud/apikey/get.js.map +1 -1
- package/dist/cmd/cloud/apikey/index.d.ts.map +1 -1
- package/dist/cmd/cloud/apikey/index.js +8 -0
- package/dist/cmd/cloud/apikey/index.js.map +1 -1
- package/dist/cmd/cloud/apikey/list.d.ts.map +1 -1
- package/dist/cmd/cloud/apikey/list.js +4 -1
- package/dist/cmd/cloud/apikey/list.js.map +1 -1
- package/dist/cmd/cloud/db/create.d.ts.map +1 -1
- package/dist/cmd/cloud/db/create.js +35 -21
- package/dist/cmd/cloud/db/create.js.map +1 -1
- package/dist/cmd/cloud/db/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/db/delete.js +34 -21
- package/dist/cmd/cloud/db/delete.js.map +1 -1
- package/dist/cmd/cloud/db/get.d.ts.map +1 -1
- package/dist/cmd/cloud/db/get.js +9 -3
- package/dist/cmd/cloud/db/get.js.map +1 -1
- package/dist/cmd/cloud/db/index.d.ts.map +1 -1
- package/dist/cmd/cloud/db/index.js +5 -0
- package/dist/cmd/cloud/db/index.js.map +1 -1
- package/dist/cmd/cloud/db/list.d.ts.map +1 -1
- package/dist/cmd/cloud/db/list.js +16 -6
- package/dist/cmd/cloud/db/list.js.map +1 -1
- package/dist/cmd/cloud/db/sql.d.ts.map +1 -1
- package/dist/cmd/cloud/db/sql.js +12 -3
- package/dist/cmd/cloud/db/sql.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +9 -3
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/deployment/index.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/index.js +5 -0
- package/dist/cmd/cloud/deployment/index.js.map +1 -1
- package/dist/cmd/cloud/deployment/list.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/list.js +12 -3
- package/dist/cmd/cloud/deployment/list.js.map +1 -1
- package/dist/cmd/cloud/deployment/logs.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/logs.js +16 -4
- package/dist/cmd/cloud/deployment/logs.js.map +1 -1
- package/dist/cmd/cloud/deployment/remove.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/remove.js +12 -3
- package/dist/cmd/cloud/deployment/remove.js.map +1 -1
- package/dist/cmd/cloud/deployment/rollback.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/rollback.js +8 -2
- package/dist/cmd/cloud/deployment/rollback.js.map +1 -1
- package/dist/cmd/cloud/deployment/show.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/show.js +8 -2
- package/dist/cmd/cloud/deployment/show.js.map +1 -1
- package/dist/cmd/cloud/deployment/undeploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/undeploy.js +12 -3
- package/dist/cmd/cloud/deployment/undeploy.js.map +1 -1
- package/dist/cmd/cloud/deployment/utils.d.ts.map +1 -1
- package/dist/cmd/cloud/deployment/utils.js +3 -1
- package/dist/cmd/cloud/deployment/utils.js.map +1 -1
- package/dist/cmd/cloud/domain.d.ts.map +1 -1
- package/dist/cmd/cloud/domain.js +4 -2
- package/dist/cmd/cloud/domain.js.map +1 -1
- package/dist/cmd/cloud/env/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/env/delete.js +4 -1
- package/dist/cmd/cloud/env/delete.js.map +1 -1
- package/dist/cmd/cloud/env/get.d.ts.map +1 -1
- package/dist/cmd/cloud/env/get.js +4 -1
- package/dist/cmd/cloud/env/get.js.map +1 -1
- package/dist/cmd/cloud/env/import.d.ts.map +1 -1
- package/dist/cmd/cloud/env/import.js +10 -0
- package/dist/cmd/cloud/env/import.js.map +1 -1
- package/dist/cmd/cloud/env/index.d.ts.map +1 -1
- package/dist/cmd/cloud/env/index.js +8 -0
- package/dist/cmd/cloud/env/index.js.map +1 -1
- package/dist/cmd/cloud/env/list.d.ts.map +1 -1
- package/dist/cmd/cloud/env/list.js +4 -1
- package/dist/cmd/cloud/env/list.js.map +1 -1
- package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/env/pull.js +4 -1
- package/dist/cmd/cloud/env/pull.js.map +1 -1
- package/dist/cmd/cloud/env/push.js +1 -1
- package/dist/cmd/cloud/env/push.js.map +1 -1
- package/dist/cmd/cloud/env/set.js +3 -3
- package/dist/cmd/cloud/env/set.js.map +1 -1
- package/dist/cmd/cloud/index.d.ts.map +1 -1
- package/dist/cmd/cloud/index.js +5 -0
- package/dist/cmd/cloud/index.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js +9 -3
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +12 -3
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +6 -3
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/get.js +3 -3
- package/dist/cmd/cloud/keyvalue/get.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/index.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/index.js +8 -0
- package/dist/cmd/cloud/keyvalue/index.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/keys.js +3 -3
- 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 +3 -3
- package/dist/cmd/cloud/keyvalue/list-namespaces.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/repl.js +1 -1
- package/dist/cmd/cloud/keyvalue/repl.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/search.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/search.js +9 -3
- package/dist/cmd/cloud/keyvalue/search.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +12 -3
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/stats.js +6 -3
- package/dist/cmd/cloud/keyvalue/stats.js.map +1 -1
- package/dist/cmd/cloud/objectstore/delete-bucket.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/delete-bucket.js +8 -2
- package/dist/cmd/cloud/objectstore/delete-bucket.js.map +1 -1
- package/dist/cmd/cloud/objectstore/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/delete.js +12 -3
- package/dist/cmd/cloud/objectstore/delete.js.map +1 -1
- package/dist/cmd/cloud/objectstore/get.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/get.js +12 -3
- package/dist/cmd/cloud/objectstore/get.js.map +1 -1
- package/dist/cmd/cloud/objectstore/index.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/index.js +8 -0
- package/dist/cmd/cloud/objectstore/index.js.map +1 -1
- package/dist/cmd/cloud/objectstore/list-buckets.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/list-buckets.js +6 -1
- package/dist/cmd/cloud/objectstore/list-buckets.js.map +1 -1
- package/dist/cmd/cloud/objectstore/list-keys.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/list-keys.js +6 -3
- package/dist/cmd/cloud/objectstore/list-keys.js.map +1 -1
- package/dist/cmd/cloud/objectstore/put.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/put.js +12 -3
- package/dist/cmd/cloud/objectstore/put.js.map +1 -1
- package/dist/cmd/cloud/objectstore/repl.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/repl.js +6 -1
- package/dist/cmd/cloud/objectstore/repl.js.map +1 -1
- package/dist/cmd/cloud/objectstore/url.d.ts.map +1 -1
- package/dist/cmd/cloud/objectstore/url.js +12 -3
- package/dist/cmd/cloud/objectstore/url.js.map +1 -1
- package/dist/cmd/cloud/scp/download.d.ts.map +1 -1
- package/dist/cmd/cloud/scp/download.js +16 -4
- package/dist/cmd/cloud/scp/download.js.map +1 -1
- package/dist/cmd/cloud/scp/index.d.ts.map +1 -1
- package/dist/cmd/cloud/scp/index.js +11 -0
- package/dist/cmd/cloud/scp/index.js.map +1 -1
- package/dist/cmd/cloud/scp/upload.d.ts.map +1 -1
- package/dist/cmd/cloud/scp/upload.js +16 -4
- package/dist/cmd/cloud/scp/upload.js.map +1 -1
- package/dist/cmd/cloud/secret/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/delete.js +4 -1
- package/dist/cmd/cloud/secret/delete.js.map +1 -1
- package/dist/cmd/cloud/secret/get.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/get.js +5 -2
- package/dist/cmd/cloud/secret/get.js.map +1 -1
- package/dist/cmd/cloud/secret/import.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/import.js +5 -2
- package/dist/cmd/cloud/secret/import.js.map +1 -1
- package/dist/cmd/cloud/secret/index.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/index.js +8 -0
- package/dist/cmd/cloud/secret/index.js.map +1 -1
- package/dist/cmd/cloud/secret/list.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/list.js +4 -1
- package/dist/cmd/cloud/secret/list.js.map +1 -1
- package/dist/cmd/cloud/secret/pull.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/pull.js +4 -1
- package/dist/cmd/cloud/secret/pull.js.map +1 -1
- package/dist/cmd/cloud/secret/push.js +1 -1
- package/dist/cmd/cloud/secret/push.js.map +1 -1
- package/dist/cmd/cloud/secret/set.d.ts.map +1 -1
- package/dist/cmd/cloud/secret/set.js +8 -2
- package/dist/cmd/cloud/secret/set.js.map +1 -1
- package/dist/cmd/cloud/session/get.js +1 -1
- package/dist/cmd/cloud/session/get.js.map +1 -1
- package/dist/cmd/cloud/session/index.d.ts.map +1 -1
- package/dist/cmd/cloud/session/index.js +5 -0
- package/dist/cmd/cloud/session/index.js.map +1 -1
- package/dist/cmd/cloud/session/list.d.ts.map +1 -1
- package/dist/cmd/cloud/session/list.js +29 -8
- package/dist/cmd/cloud/session/list.js.map +1 -1
- package/dist/cmd/cloud/session/logs.d.ts.map +1 -1
- package/dist/cmd/cloud/session/logs.js +8 -2
- package/dist/cmd/cloud/session/logs.js.map +1 -1
- package/dist/cmd/cloud/ssh.d.ts.map +1 -1
- package/dist/cmd/cloud/ssh.js +15 -6
- package/dist/cmd/cloud/ssh.js.map +1 -1
- package/dist/cmd/cloud/storage/create.js +3 -3
- package/dist/cmd/cloud/storage/create.js.map +1 -1
- package/dist/cmd/cloud/storage/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/delete.js +7 -4
- package/dist/cmd/cloud/storage/delete.js.map +1 -1
- package/dist/cmd/cloud/storage/download.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/download.js +16 -4
- package/dist/cmd/cloud/storage/download.js.map +1 -1
- package/dist/cmd/cloud/storage/get.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/get.js +12 -3
- package/dist/cmd/cloud/storage/get.js.map +1 -1
- package/dist/cmd/cloud/storage/index.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/index.js +8 -0
- package/dist/cmd/cloud/storage/index.js.map +1 -1
- package/dist/cmd/cloud/storage/list.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/list.js +35 -12
- package/dist/cmd/cloud/storage/list.js.map +1 -1
- package/dist/cmd/cloud/storage/upload.d.ts.map +1 -1
- package/dist/cmd/cloud/storage/upload.js +21 -9
- package/dist/cmd/cloud/storage/upload.js.map +1 -1
- package/dist/cmd/cloud/stream/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/delete.js +9 -3
- package/dist/cmd/cloud/stream/delete.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +10 -4
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/stream/index.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/index.js +5 -0
- package/dist/cmd/cloud/stream/index.js.map +1 -1
- package/dist/cmd/cloud/stream/list.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/list.js +8 -5
- package/dist/cmd/cloud/stream/list.js.map +1 -1
- package/dist/cmd/cloud/vector/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/delete.js +12 -3
- package/dist/cmd/cloud/vector/delete.js.map +1 -1
- package/dist/cmd/cloud/vector/get.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/get.js +12 -3
- package/dist/cmd/cloud/vector/get.js.map +1 -1
- package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/index.js +8 -0
- package/dist/cmd/cloud/vector/index.js.map +1 -1
- package/dist/cmd/cloud/vector/search.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/search.js +20 -5
- package/dist/cmd/cloud/vector/search.js.map +1 -1
- package/dist/cmd/dev/agents.d.ts.map +1 -1
- package/dist/cmd/dev/agents.js +7 -2
- package/dist/cmd/dev/agents.js.map +1 -1
- package/dist/cmd/dev/api.d.ts.map +1 -1
- package/dist/cmd/dev/api.js +3 -1
- package/dist/cmd/dev/api.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +13 -5
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/help/index.d.ts +2 -0
- package/dist/cmd/help/index.d.ts.map +1 -0
- package/dist/cmd/help/index.js +35 -0
- package/dist/cmd/help/index.js.map +1 -0
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +1 -0
- package/dist/cmd/index.js.map +1 -1
- package/dist/cmd/profile/create.js +3 -3
- package/dist/cmd/profile/create.js.map +1 -1
- package/dist/cmd/profile/delete.d.ts.map +1 -1
- package/dist/cmd/profile/delete.js +6 -3
- package/dist/cmd/profile/delete.js.map +1 -1
- package/dist/cmd/profile/index.d.ts.map +1 -1
- package/dist/cmd/profile/index.js +8 -0
- package/dist/cmd/profile/index.js.map +1 -1
- package/dist/cmd/profile/list.d.ts.map +1 -1
- package/dist/cmd/profile/list.js +4 -1
- package/dist/cmd/profile/list.js.map +1 -1
- package/dist/cmd/profile/show.d.ts.map +1 -1
- package/dist/cmd/profile/show.js +6 -3
- package/dist/cmd/profile/show.js.map +1 -1
- package/dist/cmd/profile/use.js +3 -3
- package/dist/cmd/profile/use.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +11 -5
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/delete.d.ts.map +1 -1
- package/dist/cmd/project/delete.js +15 -6
- package/dist/cmd/project/delete.js.map +1 -1
- package/dist/cmd/project/download.d.ts +1 -1
- package/dist/cmd/project/download.d.ts.map +1 -1
- package/dist/cmd/project/download.js +28 -2
- package/dist/cmd/project/download.js.map +1 -1
- package/dist/cmd/project/index.d.ts.map +1 -1
- package/dist/cmd/project/index.js +5 -0
- package/dist/cmd/project/index.js.map +1 -1
- package/dist/cmd/project/list.js +3 -3
- 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 +6 -3
- package/dist/cmd/project/show.js.map +1 -1
- package/dist/cmd/project/templates.d.ts.map +1 -1
- package/dist/cmd/project/templates.js +10 -2
- package/dist/cmd/project/templates.js.map +1 -1
- package/dist/cmd/repl/index.js +1 -1
- package/dist/cmd/repl/index.js.map +1 -1
- package/dist/cmd/version/index.d.ts.map +1 -1
- package/dist/cmd/version/index.js +4 -1
- package/dist/cmd/version/index.js.map +1 -1
- package/dist/command-prefix.d.ts.map +1 -1
- package/dist/command-prefix.js +5 -3
- package/dist/command-prefix.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/crypto/box.d.ts.map +1 -1
- package/dist/crypto/box.js +31 -17
- package/dist/crypto/box.js.map +1 -1
- package/dist/download.d.ts.map +1 -1
- package/dist/download.js +7 -1
- package/dist/download.js.map +1 -1
- package/dist/env-util.d.ts +3 -0
- package/dist/env-util.d.ts.map +1 -1
- package/dist/env-util.js +43 -2
- package/dist/env-util.js.map +1 -1
- package/dist/errors.d.ts +4 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema-generator.d.ts +5 -1
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-generator.js +1 -0
- package/dist/schema-generator.js.map +1 -1
- package/dist/steps.js +17 -13
- package/dist/steps.js.map +1 -1
- package/dist/tui.d.ts +2 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +21 -14
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +10 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/date.d.ts.map +1 -1
- package/dist/utils/date.js +7 -2
- package/dist/utils/date.js.map +1 -1
- package/package.json +3 -3
- package/src/banner.ts +29 -13
- package/src/cli.ts +109 -13
- package/src/cmd/ai/capabilities/index.ts +4 -0
- package/src/cmd/ai/capabilities/show.ts +13 -2
- package/src/cmd/ai/index.ts +11 -0
- package/src/cmd/ai/prompt/agent.ts +342 -0
- package/src/cmd/ai/prompt/api.ts +274 -0
- package/src/cmd/ai/prompt/index.ts +18 -3
- package/src/cmd/ai/prompt/llm.ts +2 -2
- package/src/cmd/ai/prompt/web.ts +301 -0
- package/src/cmd/ai/schema/generate.ts +1 -1
- package/src/cmd/ai/schema/index.ts +2 -0
- package/src/cmd/ai/schema/show.ts +4 -1
- package/src/cmd/auth/api.ts +28 -6
- package/src/cmd/auth/index.ts +5 -0
- package/src/cmd/auth/login.ts +5 -22
- package/src/cmd/auth/logout.ts +4 -1
- package/src/cmd/auth/signup.ts +4 -1
- package/src/cmd/auth/ssh/add.ts +13 -4
- package/src/cmd/auth/ssh/api.ts +21 -5
- package/src/cmd/auth/ssh/delete.ts +4 -4
- package/src/cmd/auth/ssh/index.ts +5 -0
- package/src/cmd/auth/ssh/list.ts +3 -3
- package/src/cmd/auth/whoami.ts +4 -7
- package/src/cmd/build/ast.ts +605 -31
- package/src/cmd/build/bundler.ts +110 -37
- package/src/cmd/build/file.ts +1 -1
- package/src/cmd/build/fix-duplicate-exports.ts +4 -1
- package/src/cmd/build/index.ts +58 -13
- package/src/cmd/build/plugin.ts +210 -46
- package/src/cmd/cloud/agent/get.ts +5 -2
- package/src/cmd/cloud/agent/index.ts +5 -0
- package/src/cmd/cloud/agent/list.ts +3 -3
- package/src/cmd/cloud/apikey/create.ts +14 -5
- package/src/cmd/cloud/apikey/delete.ts +3 -3
- package/src/cmd/cloud/apikey/get.ts +1 -1
- package/src/cmd/cloud/apikey/index.ts +8 -0
- package/src/cmd/cloud/apikey/list.ts +4 -1
- package/src/cmd/cloud/db/create.ts +37 -22
- package/src/cmd/cloud/db/delete.ts +36 -21
- package/src/cmd/cloud/db/get.ts +12 -4
- package/src/cmd/cloud/db/index.ts +5 -0
- package/src/cmd/cloud/db/list.ts +19 -7
- package/src/cmd/cloud/db/sql.ts +12 -3
- package/src/cmd/cloud/deploy.ts +9 -3
- package/src/cmd/cloud/deployment/index.ts +5 -0
- package/src/cmd/cloud/deployment/list.ts +12 -3
- package/src/cmd/cloud/deployment/logs.ts +16 -4
- package/src/cmd/cloud/deployment/remove.ts +14 -4
- package/src/cmd/cloud/deployment/rollback.ts +8 -3
- package/src/cmd/cloud/deployment/show.ts +8 -2
- package/src/cmd/cloud/deployment/undeploy.ts +12 -4
- package/src/cmd/cloud/deployment/utils.ts +7 -1
- package/src/cmd/cloud/domain.ts +9 -2
- package/src/cmd/cloud/env/delete.ts +4 -1
- package/src/cmd/cloud/env/get.ts +4 -1
- package/src/cmd/cloud/env/import.ts +10 -0
- package/src/cmd/cloud/env/index.ts +8 -0
- package/src/cmd/cloud/env/list.ts +4 -1
- package/src/cmd/cloud/env/pull.ts +4 -1
- package/src/cmd/cloud/env/push.ts +1 -1
- package/src/cmd/cloud/env/set.ts +3 -3
- package/src/cmd/cloud/index.ts +5 -1
- package/src/cmd/cloud/keyvalue/create-namespace.ts +9 -4
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +12 -4
- package/src/cmd/cloud/keyvalue/delete.ts +6 -4
- package/src/cmd/cloud/keyvalue/get.ts +3 -4
- package/src/cmd/cloud/keyvalue/index.ts +8 -0
- package/src/cmd/cloud/keyvalue/keys.ts +3 -4
- package/src/cmd/cloud/keyvalue/list-namespaces.ts +3 -4
- package/src/cmd/cloud/keyvalue/repl.ts +1 -2
- package/src/cmd/cloud/keyvalue/search.ts +9 -4
- package/src/cmd/cloud/keyvalue/set.ts +14 -4
- package/src/cmd/cloud/keyvalue/stats.ts +6 -4
- package/src/cmd/cloud/objectstore/delete-bucket.ts +8 -3
- package/src/cmd/cloud/objectstore/delete.ts +12 -4
- package/src/cmd/cloud/objectstore/get.ts +12 -4
- package/src/cmd/cloud/objectstore/index.ts +8 -0
- package/src/cmd/cloud/objectstore/list-buckets.ts +6 -2
- package/src/cmd/cloud/objectstore/list-keys.ts +6 -4
- package/src/cmd/cloud/objectstore/put.ts +16 -4
- package/src/cmd/cloud/objectstore/repl.ts +6 -2
- package/src/cmd/cloud/objectstore/url.ts +12 -4
- package/src/cmd/cloud/scp/download.ts +16 -5
- package/src/cmd/cloud/scp/index.ts +11 -0
- package/src/cmd/cloud/scp/upload.ts +16 -5
- package/src/cmd/cloud/secret/delete.ts +4 -1
- package/src/cmd/cloud/secret/get.ts +5 -2
- package/src/cmd/cloud/secret/import.ts +5 -2
- package/src/cmd/cloud/secret/index.ts +8 -0
- package/src/cmd/cloud/secret/list.ts +4 -1
- package/src/cmd/cloud/secret/pull.ts +4 -1
- package/src/cmd/cloud/secret/push.ts +1 -1
- package/src/cmd/cloud/secret/set.ts +8 -2
- package/src/cmd/cloud/session/get.ts +1 -1
- package/src/cmd/cloud/session/index.ts +5 -0
- package/src/cmd/cloud/session/list.ts +29 -8
- package/src/cmd/cloud/session/logs.ts +8 -2
- package/src/cmd/cloud/ssh.ts +15 -7
- package/src/cmd/cloud/storage/create.ts +3 -3
- package/src/cmd/cloud/storage/delete.ts +7 -4
- package/src/cmd/cloud/storage/download.ts +16 -4
- package/src/cmd/cloud/storage/get.ts +12 -3
- package/src/cmd/cloud/storage/index.ts +8 -0
- package/src/cmd/cloud/storage/list.ts +39 -15
- package/src/cmd/cloud/storage/upload.ts +24 -9
- package/src/cmd/cloud/stream/delete.ts +9 -4
- package/src/cmd/cloud/stream/get.ts +10 -5
- package/src/cmd/cloud/stream/index.ts +5 -0
- package/src/cmd/cloud/stream/list.ts +8 -6
- package/src/cmd/cloud/vector/delete.ts +17 -6
- package/src/cmd/cloud/vector/get.ts +12 -4
- package/src/cmd/cloud/vector/index.ts +8 -0
- package/src/cmd/cloud/vector/search.ts +20 -6
- package/src/cmd/dev/agents.ts +7 -2
- package/src/cmd/dev/api.ts +4 -1
- package/src/cmd/dev/index.ts +16 -5
- package/src/cmd/help/index.ts +40 -0
- package/src/cmd/index.ts +1 -0
- package/src/cmd/profile/create.ts +3 -3
- package/src/cmd/profile/delete.ts +6 -3
- package/src/cmd/profile/index.ts +8 -0
- package/src/cmd/profile/list.ts +4 -1
- package/src/cmd/profile/show.ts +6 -3
- package/src/cmd/profile/use.ts +3 -3
- package/src/cmd/project/create.ts +11 -5
- package/src/cmd/project/delete.ts +15 -6
- package/src/cmd/project/download.ts +35 -3
- package/src/cmd/project/index.ts +5 -0
- package/src/cmd/project/list.ts +3 -3
- package/src/cmd/project/show.ts +6 -3
- package/src/cmd/project/templates.ts +12 -2
- package/src/cmd/repl/index.ts +1 -1
- package/src/cmd/version/index.ts +4 -1
- package/src/command-prefix.ts +5 -3
- package/src/config.ts +4 -2
- package/src/crypto/box.ts +69 -17
- package/src/download.ts +7 -1
- package/src/env-util.ts +44 -2
- package/src/errors.ts +9 -1
- package/src/index.ts +6 -1
- package/src/schema-generator.ts +7 -1
- package/src/steps.ts +22 -13
- package/src/tui.ts +28 -16
- package/src/types.ts +11 -6
- package/src/utils/date.ts +9 -4
package/src/crypto/box.ts
CHANGED
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
import { createCipheriv, createDecipheriv, createECDH, randomBytes, KeyObject } from 'node:crypto';
|
|
63
63
|
import { Readable, Writable } from 'node:stream';
|
|
64
64
|
import { createHash } from 'node:crypto';
|
|
65
|
+
import { StructuredError } from '@agentuity/core';
|
|
65
66
|
|
|
66
67
|
const FRAME = 65519;
|
|
67
68
|
const DEK_SIZE = 32;
|
|
@@ -87,13 +88,64 @@ function concatKDFSHA256(z: Buffer, keyDataLen: number, ...otherInfo: Buffer[]):
|
|
|
87
88
|
return h.digest();
|
|
88
89
|
}
|
|
89
90
|
|
|
91
|
+
const InvalidECPublicKeyError = StructuredError('InvalidECPublicKeyError', 'Invalid EC public key');
|
|
92
|
+
const InvalidECPrivateKeyError = StructuredError(
|
|
93
|
+
'InvalidECPrivateKeyError',
|
|
94
|
+
'Invalid EC private key'
|
|
95
|
+
);
|
|
96
|
+
const InvalidDEKTooShortError = StructuredError(
|
|
97
|
+
'InvalidDEKTooShortError',
|
|
98
|
+
'Invalid DEK too short (wrapped)'
|
|
99
|
+
);
|
|
100
|
+
const InvalidDEKFormatError = StructuredError(
|
|
101
|
+
'InvalidDEKFormatError',
|
|
102
|
+
'Invalid DEK format (wrapped)'
|
|
103
|
+
);
|
|
104
|
+
const DEKUnwrappedFailedError = StructuredError('DEKUnwrappedFailedError', 'DEK unwrap failed');
|
|
105
|
+
|
|
106
|
+
const InvalidKeyECOnlyError = StructuredError(
|
|
107
|
+
'InvalidKeyECOnlyError',
|
|
108
|
+
'Invalid Key: only EC keys supported'
|
|
109
|
+
);
|
|
110
|
+
const InvalidKeyP256OnlyError = StructuredError(
|
|
111
|
+
'InvalidKeyP256OnlyError',
|
|
112
|
+
'Invalid Key: only P-256 keys supported'
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
const InvalidCipherTextLengthError = StructuredError(
|
|
116
|
+
'InvalidCipherTextLengthError',
|
|
117
|
+
'ciphertext length exceeds uint16 limit'
|
|
118
|
+
);
|
|
119
|
+
|
|
120
|
+
const InvalidWrappedDEKLengthError = StructuredError(
|
|
121
|
+
'InvalidWrappedDEKLengthError',
|
|
122
|
+
'invalid wrapped DEK length'
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
const UnexpectedEOFChunkLengthError = StructuredError(
|
|
126
|
+
'UnexpectedEOFChunkLengthError',
|
|
127
|
+
'unexpected EOF reading chunk length'
|
|
128
|
+
);
|
|
129
|
+
|
|
130
|
+
const UnexpectedChunkTooLargeError = StructuredError(
|
|
131
|
+
'UnexpectedChunkTooLargeError',
|
|
132
|
+
'chunk too large'
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
const UnexpectedChunkTooShortError = StructuredError(
|
|
136
|
+
'UnexpectedChunkTooShortError',
|
|
137
|
+
'chunk too short for auth tag'
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
const UnexpectedEOFError = StructuredError('UnexpectedEOFError', 'unexpected EOF');
|
|
141
|
+
|
|
90
142
|
function wrapDEKWithECDH(dek: Buffer, recipientPub: KeyObject): Buffer {
|
|
91
143
|
const ephemeral = createECDH('prime256v1');
|
|
92
144
|
ephemeral.generateKeys();
|
|
93
145
|
|
|
94
146
|
const jwk = recipientPub.export({ format: 'jwk' });
|
|
95
147
|
if (!jwk.x || !jwk.y) {
|
|
96
|
-
throw new
|
|
148
|
+
throw new InvalidECPublicKeyError();
|
|
97
149
|
}
|
|
98
150
|
|
|
99
151
|
const xBuf = Buffer.from(jwk.x, 'base64url');
|
|
@@ -116,7 +168,7 @@ function wrapDEKWithECDH(dek: Buffer, recipientPub: KeyObject): Buffer {
|
|
|
116
168
|
|
|
117
169
|
function unwrapDEKWithECDH(wrapped: Buffer, recipientPriv: KeyObject): Buffer {
|
|
118
170
|
if (wrapped.length < PUBKEY_LEN + 12 + DEK_SIZE + GCM_TAG) {
|
|
119
|
-
throw new
|
|
171
|
+
throw new InvalidDEKTooShortError();
|
|
120
172
|
}
|
|
121
173
|
|
|
122
174
|
const ephemeralPubBytes = wrapped.subarray(0, PUBKEY_LEN);
|
|
@@ -124,7 +176,7 @@ function unwrapDEKWithECDH(wrapped: Buffer, recipientPriv: KeyObject): Buffer {
|
|
|
124
176
|
|
|
125
177
|
const jwk = recipientPriv.export({ format: 'jwk' });
|
|
126
178
|
if (!jwk.d) {
|
|
127
|
-
throw new
|
|
179
|
+
throw new InvalidECPrivateKeyError();
|
|
128
180
|
}
|
|
129
181
|
|
|
130
182
|
const ecdh = createECDH('prime256v1');
|
|
@@ -139,14 +191,14 @@ function unwrapDEKWithECDH(wrapped: Buffer, recipientPriv: KeyObject): Buffer {
|
|
|
139
191
|
|
|
140
192
|
const nonceSize = 12;
|
|
141
193
|
if (remaining.length < nonceSize) {
|
|
142
|
-
throw new
|
|
194
|
+
throw new InvalidDEKFormatError();
|
|
143
195
|
}
|
|
144
196
|
|
|
145
197
|
const nonce = remaining.subarray(0, nonceSize);
|
|
146
198
|
const ciphertextAndTag = remaining.subarray(nonceSize);
|
|
147
199
|
|
|
148
200
|
if (ciphertextAndTag.length < GCM_TAG) {
|
|
149
|
-
throw new
|
|
201
|
+
throw new InvalidDEKFormatError();
|
|
150
202
|
}
|
|
151
203
|
|
|
152
204
|
const ciphertext = ciphertextAndTag.subarray(0, ciphertextAndTag.length - GCM_TAG);
|
|
@@ -158,8 +210,8 @@ function unwrapDEKWithECDH(wrapped: Buffer, recipientPriv: KeyObject): Buffer {
|
|
|
158
210
|
let plaintext: Buffer;
|
|
159
211
|
try {
|
|
160
212
|
plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
|
|
161
|
-
} catch (
|
|
162
|
-
throw new
|
|
213
|
+
} catch (err) {
|
|
214
|
+
throw new DEKUnwrappedFailedError({ cause: err });
|
|
163
215
|
}
|
|
164
216
|
|
|
165
217
|
kek.fill(0);
|
|
@@ -182,11 +234,11 @@ export async function encryptFIPSKEMDEMStream(
|
|
|
182
234
|
dst: Writable
|
|
183
235
|
): Promise<number> {
|
|
184
236
|
if (pub.asymmetricKeyType !== 'ec') {
|
|
185
|
-
throw new
|
|
237
|
+
throw new InvalidKeyECOnlyError();
|
|
186
238
|
}
|
|
187
239
|
const keyDetails = pub.asymmetricKeyDetails;
|
|
188
240
|
if (!keyDetails || keyDetails.namedCurve !== 'prime256v1') {
|
|
189
|
-
throw new
|
|
241
|
+
throw new InvalidKeyP256OnlyError();
|
|
190
242
|
}
|
|
191
243
|
|
|
192
244
|
const dek = randomBytes(DEK_SIZE);
|
|
@@ -234,7 +286,7 @@ export async function encryptFIPSKEMDEMStream(
|
|
|
234
286
|
const ct = Buffer.concat([ciphertext, tag]);
|
|
235
287
|
|
|
236
288
|
if (ct.length > 0xffff) {
|
|
237
|
-
throw new
|
|
289
|
+
throw new InvalidCipherTextLengthError();
|
|
238
290
|
}
|
|
239
291
|
|
|
240
292
|
const ctLenBuf = Buffer.alloc(2);
|
|
@@ -264,11 +316,11 @@ export async function decryptFIPSKEMDEMStream(
|
|
|
264
316
|
dst: Writable
|
|
265
317
|
): Promise<number> {
|
|
266
318
|
if (priv.asymmetricKeyType !== 'ec') {
|
|
267
|
-
throw new
|
|
319
|
+
throw new InvalidKeyECOnlyError();
|
|
268
320
|
}
|
|
269
321
|
const keyDetails = priv.asymmetricKeyDetails;
|
|
270
322
|
if (!keyDetails || keyDetails.namedCurve !== 'prime256v1') {
|
|
271
|
-
throw new
|
|
323
|
+
throw new InvalidKeyP256OnlyError();
|
|
272
324
|
}
|
|
273
325
|
|
|
274
326
|
const it = src[Symbol.asyncIterator]();
|
|
@@ -279,7 +331,7 @@ export async function decryptFIPSKEMDEMStream(
|
|
|
279
331
|
const wrappedLen = lenBuf.readUInt16BE(0);
|
|
280
332
|
|
|
281
333
|
if (wrappedLen === 0 || wrappedLen > 200) {
|
|
282
|
-
throw new
|
|
334
|
+
throw new InvalidWrappedDEKLengthError();
|
|
283
335
|
}
|
|
284
336
|
|
|
285
337
|
const wrapped = Buffer.alloc(wrappedLen);
|
|
@@ -305,19 +357,19 @@ export async function decryptFIPSKEMDEMStream(
|
|
|
305
357
|
break;
|
|
306
358
|
}
|
|
307
359
|
if (chunkLenRead < 2) {
|
|
308
|
-
throw new
|
|
360
|
+
throw new UnexpectedEOFChunkLengthError();
|
|
309
361
|
}
|
|
310
362
|
|
|
311
363
|
const chunkLen = chunkLenBuf.readUInt16BE(0);
|
|
312
364
|
if (chunkLen > FRAME + GCM_TAG) {
|
|
313
|
-
throw new
|
|
365
|
+
throw new UnexpectedChunkTooLargeError();
|
|
314
366
|
}
|
|
315
367
|
|
|
316
368
|
const cipherBuf = Buffer.alloc(chunkLen);
|
|
317
369
|
await readExact(it, src, cipherBuf);
|
|
318
370
|
|
|
319
371
|
if (cipherBuf.length < GCM_TAG) {
|
|
320
|
-
throw new
|
|
372
|
+
throw new UnexpectedChunkTooShortError();
|
|
321
373
|
}
|
|
322
374
|
|
|
323
375
|
const ciphertext = cipherBuf.subarray(0, cipherBuf.length - GCM_TAG);
|
|
@@ -438,7 +490,7 @@ async function readExact(
|
|
|
438
490
|
while (offset < buf.length) {
|
|
439
491
|
const result = await iterator.next();
|
|
440
492
|
if (result.done) {
|
|
441
|
-
throw new
|
|
493
|
+
throw new UnexpectedEOFError();
|
|
442
494
|
}
|
|
443
495
|
|
|
444
496
|
const chunk = result.value;
|
package/src/download.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Transform, Readable } from 'node:stream';
|
|
2
2
|
import * as tui from './tui';
|
|
3
|
+
import { APIError } from '@agentuity/server';
|
|
3
4
|
|
|
4
5
|
export interface DownloadOptions {
|
|
5
6
|
url: string;
|
|
@@ -25,7 +26,12 @@ export async function downloadWithProgress(
|
|
|
25
26
|
|
|
26
27
|
const response = await fetch(url, { headers: requestHeaders });
|
|
27
28
|
if (!response.ok) {
|
|
28
|
-
throw new
|
|
29
|
+
throw new APIError({
|
|
30
|
+
url,
|
|
31
|
+
status: response.status,
|
|
32
|
+
sessionId: response.headers.get('x-session-id'),
|
|
33
|
+
error: `Download failed: ${response.statusText}`,
|
|
34
|
+
});
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
const contentLength = parseInt(response.headers.get('content-length') || '0', 10);
|
package/src/env-util.ts
CHANGED
|
@@ -204,6 +204,9 @@ export function splitEnvAndSecrets(vars: EnvVars): {
|
|
|
204
204
|
|
|
205
205
|
/**
|
|
206
206
|
* Mask a secret value for display
|
|
207
|
+
* - For URLs with credentials: parses and masks username/password partially
|
|
208
|
+
* - For long strings: shows more context (first 6 and last 6 chars)
|
|
209
|
+
* - For short strings: shows generic masking
|
|
207
210
|
*/
|
|
208
211
|
export function maskSecret(value: string): string {
|
|
209
212
|
if (!value) {
|
|
@@ -214,8 +217,47 @@ export function maskSecret(value: string): string {
|
|
|
214
217
|
return '***';
|
|
215
218
|
}
|
|
216
219
|
|
|
217
|
-
//
|
|
218
|
-
|
|
220
|
+
// Try to parse as URL with credentials
|
|
221
|
+
try {
|
|
222
|
+
const url = new URL(value);
|
|
223
|
+
|
|
224
|
+
// If URL has username or password, mask them partially
|
|
225
|
+
if (url.username || url.password) {
|
|
226
|
+
let maskedAuth = '';
|
|
227
|
+
|
|
228
|
+
if (url.username) {
|
|
229
|
+
// Show first 2 and last 2 chars of username
|
|
230
|
+
const len = url.username.length;
|
|
231
|
+
if (len <= 4) {
|
|
232
|
+
maskedAuth = '***';
|
|
233
|
+
} else {
|
|
234
|
+
maskedAuth = `${url.username.slice(0, 2)}***${url.username.slice(-2)}`;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (url.password) {
|
|
239
|
+
// Show first 3 and last 3 chars of password
|
|
240
|
+
const len = url.password.length;
|
|
241
|
+
if (len <= 6) {
|
|
242
|
+
maskedAuth += ':***';
|
|
243
|
+
} else {
|
|
244
|
+
maskedAuth += `:${url.password.slice(0, 3)}***${url.password.slice(-3)}`;
|
|
245
|
+
}
|
|
246
|
+
} else if (url.username) {
|
|
247
|
+
// Username but no password
|
|
248
|
+
maskedAuth += ':***';
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Reconstruct URL with masked credentials
|
|
252
|
+
const maskedUrl = `${url.protocol}//${maskedAuth}@${url.host}${url.pathname}${url.search}${url.hash}`;
|
|
253
|
+
return maskedUrl;
|
|
254
|
+
}
|
|
255
|
+
} catch {
|
|
256
|
+
// Not a valid URL, fall through to regular masking
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
// For long strings, show first 6 and last 6 characters for better context
|
|
260
|
+
return `${value.slice(0, 6)}...${value.slice(-6)}`;
|
|
219
261
|
}
|
|
220
262
|
|
|
221
263
|
/**
|
package/src/errors.ts
CHANGED
|
@@ -13,6 +13,7 @@ export enum ExitCode {
|
|
|
13
13
|
NETWORK_ERROR = 6,
|
|
14
14
|
FILE_ERROR = 7,
|
|
15
15
|
USER_CANCELLED = 8,
|
|
16
|
+
BUILD_FAILED = 9,
|
|
16
17
|
}
|
|
17
18
|
|
|
18
19
|
/**
|
|
@@ -68,6 +69,9 @@ export enum ErrorCode {
|
|
|
68
69
|
|
|
69
70
|
// User cancellation
|
|
70
71
|
USER_CANCELLED = 'USER_CANCELLED',
|
|
72
|
+
|
|
73
|
+
// Build failed error
|
|
74
|
+
BUILD_FAILED = 'BUILD_FAILED',
|
|
71
75
|
}
|
|
72
76
|
|
|
73
77
|
/**
|
|
@@ -121,6 +125,10 @@ export function getExitCode(errorCode: ErrorCode): ExitCode {
|
|
|
121
125
|
case ErrorCode.USER_CANCELLED:
|
|
122
126
|
return ExitCode.USER_CANCELLED;
|
|
123
127
|
|
|
128
|
+
// Build errors
|
|
129
|
+
case ErrorCode.BUILD_FAILED:
|
|
130
|
+
return ExitCode.BUILD_FAILED;
|
|
131
|
+
|
|
124
132
|
// Resource conflicts and other errors
|
|
125
133
|
case ErrorCode.RESOURCE_ALREADY_EXISTS:
|
|
126
134
|
case ErrorCode.RESOURCE_CONFLICT:
|
|
@@ -203,7 +211,7 @@ export function exitWithError(
|
|
|
203
211
|
if (errorFormat === 'json') {
|
|
204
212
|
console.error(formatErrorJSON(error));
|
|
205
213
|
} else {
|
|
206
|
-
|
|
214
|
+
logger.error(formatErrorHuman(error));
|
|
207
215
|
}
|
|
208
216
|
const exitCode = error.exitCode ?? getExitCode(error.code);
|
|
209
217
|
process.exit(exitCode);
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export { createCLI, registerCommands } from './cli';
|
|
2
2
|
export { validateRuntime, isBun } from './runtime';
|
|
3
|
-
export {
|
|
3
|
+
export {
|
|
4
|
+
generateCLISchema,
|
|
5
|
+
type CLISchema,
|
|
6
|
+
type SchemaCommand,
|
|
7
|
+
type SchemaExample,
|
|
8
|
+
} from './schema-generator';
|
|
4
9
|
export {
|
|
5
10
|
ErrorCode,
|
|
6
11
|
createError,
|
package/src/schema-generator.ts
CHANGED
|
@@ -31,13 +31,18 @@ export interface SchemaPagination {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
export interface SchemaExample {
|
|
35
|
+
command: string;
|
|
36
|
+
description: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
export interface SchemaCommand {
|
|
35
40
|
name: string;
|
|
36
41
|
description: string;
|
|
37
42
|
aliases?: string[];
|
|
38
43
|
arguments?: SchemaArgument[];
|
|
39
44
|
options?: SchemaOption[];
|
|
40
|
-
examples?:
|
|
45
|
+
examples?: SchemaExample[];
|
|
41
46
|
response?: unknown;
|
|
42
47
|
idempotent?: boolean;
|
|
43
48
|
prerequisites?: string[];
|
|
@@ -280,6 +285,7 @@ export function generateCLISchema(
|
|
|
280
285
|
6: 'Network error (API unreachable or timeout)',
|
|
281
286
|
7: 'File system error (file read/write failed)',
|
|
282
287
|
8: 'User cancelled (operation aborted by user)',
|
|
288
|
+
9: 'Build failed',
|
|
283
289
|
},
|
|
284
290
|
globalOptions: [
|
|
285
291
|
{
|
package/src/steps.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
import type { ColorScheme } from './terminal';
|
|
9
9
|
import type { LogLevel } from './types';
|
|
10
|
-
import {
|
|
10
|
+
import { ValidationInputError, ValidationOutputError, type IssuesType } from '@agentuity/server';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Get the appropriate exit function (Bun.exit or process.exit)
|
|
@@ -201,6 +201,17 @@ export async function runSteps(steps: Step[], logLevel?: LogLevel): Promise<void
|
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
+
function printValidationIssues(issues?: IssuesType) {
|
|
205
|
+
const errorColor = getColor('red');
|
|
206
|
+
console.error(`${errorColor}Validation details:${COLORS.reset}`);
|
|
207
|
+
if (issues) {
|
|
208
|
+
for (const issue of issues) {
|
|
209
|
+
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
210
|
+
console.error(` ${path}: ${issue.message}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
204
215
|
/**
|
|
205
216
|
* Run steps with animated TUI (original behavior)
|
|
206
217
|
*/
|
|
@@ -283,12 +294,11 @@ async function runStepsTUI(state: StepState[]): Promise<void> {
|
|
|
283
294
|
if (step.outcome?.status === 'error') {
|
|
284
295
|
const errorColor = getColor('red');
|
|
285
296
|
console.error(`\n${errorColor}Error: ${step.outcome.message}${COLORS.reset}`);
|
|
286
|
-
if (
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
}
|
|
297
|
+
if (
|
|
298
|
+
step.outcome.cause instanceof ValidationInputError ||
|
|
299
|
+
step.outcome.cause instanceof ValidationOutputError
|
|
300
|
+
) {
|
|
301
|
+
printValidationIssues(step.outcome.cause.issues);
|
|
292
302
|
}
|
|
293
303
|
console.error('');
|
|
294
304
|
process.stdout.write('\x1B[?25h'); // Show cursor
|
|
@@ -342,12 +352,11 @@ async function runStepsPlain(state: StepState[]): Promise<void> {
|
|
|
342
352
|
console.log(`${redColor}${ICONS.error}${COLORS.reset} ${step.label}`);
|
|
343
353
|
const errorColor = getColor('red');
|
|
344
354
|
console.error(`\n${errorColor}Error: ${step.outcome.message}${COLORS.reset}`);
|
|
345
|
-
if (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
355
|
+
if (
|
|
356
|
+
step.outcome.cause instanceof ValidationInputError ||
|
|
357
|
+
step.outcome.cause instanceof ValidationOutputError
|
|
358
|
+
) {
|
|
359
|
+
printValidationIssues(step.outcome.cause.issues);
|
|
351
360
|
}
|
|
352
361
|
console.error('');
|
|
353
362
|
process.exit(1);
|
package/src/tui.ts
CHANGED
|
@@ -49,6 +49,7 @@ function getColors() {
|
|
|
49
49
|
muted: { light: '', dark: '' },
|
|
50
50
|
bold: { light: '', dark: '' },
|
|
51
51
|
link: { light: '', dark: '' },
|
|
52
|
+
primary: { light: '', dark: '' },
|
|
52
53
|
reset: '',
|
|
53
54
|
} as const;
|
|
54
55
|
}
|
|
@@ -82,6 +83,10 @@ function getColors() {
|
|
|
82
83
|
light: '\x1b[34;4m', // blue underline (need ANSI for underline)
|
|
83
84
|
dark: '\x1b[94;4m', // bright blue underline
|
|
84
85
|
},
|
|
86
|
+
primary: {
|
|
87
|
+
light: Bun.color('#000000', 'ansi') || '\x1b[30m', // black
|
|
88
|
+
dark: Bun.color('#FFFFFF', 'ansi') || '\x1b[97m', // white
|
|
89
|
+
},
|
|
85
90
|
reset: '\x1b[0m',
|
|
86
91
|
} as const;
|
|
87
92
|
}
|
|
@@ -139,6 +144,12 @@ export function colorMuted(text: string): string {
|
|
|
139
144
|
return `${color}${text}${reset}`;
|
|
140
145
|
}
|
|
141
146
|
|
|
147
|
+
export function colorPrimary(text: string): string {
|
|
148
|
+
const color = getColor('primary');
|
|
149
|
+
const reset = getColor('reset');
|
|
150
|
+
return `${color}${text}${reset}`;
|
|
151
|
+
}
|
|
152
|
+
|
|
142
153
|
/**
|
|
143
154
|
* Get the appropriate color function for a log severity level
|
|
144
155
|
*/
|
|
@@ -241,25 +252,15 @@ export function bold(text: string): string {
|
|
|
241
252
|
* Used for table headings
|
|
242
253
|
*/
|
|
243
254
|
export function heading(text: string): string {
|
|
244
|
-
const
|
|
245
|
-
if (!USE_COLORS) {
|
|
246
|
-
return text;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// For light mode: use inverse (black bg, white text)
|
|
250
|
-
// For dark mode: use white bold
|
|
251
|
-
const style = isDarkMode()
|
|
252
|
-
? '\x1b[1;37m' // bold white
|
|
253
|
-
: '\x1b[7m'; // inverse
|
|
255
|
+
const color = getColor('info');
|
|
254
256
|
const reset = getColor('reset');
|
|
255
|
-
return `${
|
|
257
|
+
return `${color}${text}${reset}`;
|
|
256
258
|
}
|
|
257
259
|
|
|
258
260
|
/**
|
|
259
261
|
* Format text as a link (blue and underlined)
|
|
260
262
|
*/
|
|
261
|
-
export function link(url: string, title?: string): string {
|
|
262
|
-
const color = getColor('link');
|
|
263
|
+
export function link(url: string, title?: string, color = getColor('link')): string {
|
|
263
264
|
const reset = getColor('reset');
|
|
264
265
|
|
|
265
266
|
// Check if terminal supports hyperlinks (OSC 8) and colors are enabled
|
|
@@ -1439,6 +1440,11 @@ export function table<T extends Record<string, unknown>>(
|
|
|
1439
1440
|
head?: string[];
|
|
1440
1441
|
colAligns?: Array<'left' | 'right' | 'center'>;
|
|
1441
1442
|
wordWrap?: boolean;
|
|
1443
|
+
style?: {
|
|
1444
|
+
head?: string[];
|
|
1445
|
+
border?: string[];
|
|
1446
|
+
};
|
|
1447
|
+
colors?: boolean;
|
|
1442
1448
|
}) => {
|
|
1443
1449
|
push(row: unknown[]): void;
|
|
1444
1450
|
toString(): string;
|
|
@@ -1454,11 +1460,14 @@ export function table<T extends Record<string, unknown>>(
|
|
|
1454
1460
|
let columnNames: string[];
|
|
1455
1461
|
let colAligns: Array<'left' | 'right' | 'center'>;
|
|
1456
1462
|
|
|
1463
|
+
let headings: string[];
|
|
1464
|
+
|
|
1457
1465
|
if (isAdvancedMode) {
|
|
1458
1466
|
// Advanced mode: use provided column configurations
|
|
1459
1467
|
const columnConfigs = columns as TableColumn[];
|
|
1460
1468
|
columnNames = columnConfigs.map((col) => col.name);
|
|
1461
1469
|
colAligns = columnConfigs.map((col) => col.alignment || 'left');
|
|
1470
|
+
headings = columnNames.map((name) => heading(name));
|
|
1462
1471
|
} else {
|
|
1463
1472
|
// Simple mode: determine column names from data or columns parameter
|
|
1464
1473
|
columnNames = columns
|
|
@@ -1467,15 +1476,18 @@ export function table<T extends Record<string, unknown>>(
|
|
|
1467
1476
|
? Object.keys(data[0])
|
|
1468
1477
|
: [];
|
|
1469
1478
|
colAligns = columnNames.map(() => 'left' as const);
|
|
1479
|
+
headings = columnNames.map((name) => heading(name));
|
|
1470
1480
|
}
|
|
1471
1481
|
|
|
1472
|
-
// Apply heading style to column names
|
|
1473
|
-
const headings = columnNames.map((name) => heading(name));
|
|
1474
|
-
|
|
1475
1482
|
const t = new Table({
|
|
1476
1483
|
head: headings,
|
|
1477
1484
|
colAligns,
|
|
1478
1485
|
wordWrap: true,
|
|
1486
|
+
style: {
|
|
1487
|
+
head: [], // Disable cli-table3's default red styling - we apply our own via heading()
|
|
1488
|
+
border: [], // Disable default border styling too
|
|
1489
|
+
},
|
|
1490
|
+
colors: false, // Completely disable cli-table3's color system to preserve our ANSI codes
|
|
1479
1491
|
});
|
|
1480
1492
|
|
|
1481
1493
|
// Add rows to table
|
package/src/types.ts
CHANGED
|
@@ -127,6 +127,11 @@ export interface PaginationInfo {
|
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
export interface CommandExample {
|
|
131
|
+
command: string;
|
|
132
|
+
description: string;
|
|
133
|
+
}
|
|
134
|
+
|
|
130
135
|
export interface CommandSchemas {
|
|
131
136
|
args?: z.ZodType;
|
|
132
137
|
options?: z.ZodType;
|
|
@@ -263,7 +268,7 @@ export function createSubcommand<
|
|
|
263
268
|
toplevel?: boolean;
|
|
264
269
|
requires?: R;
|
|
265
270
|
optional?: O;
|
|
266
|
-
examples?:
|
|
271
|
+
examples?: CommandExample[];
|
|
267
272
|
idempotent?: boolean;
|
|
268
273
|
prerequisites?: string[];
|
|
269
274
|
pagination?: PaginationInfo;
|
|
@@ -304,7 +309,7 @@ export function createCommand<
|
|
|
304
309
|
hidden?: boolean;
|
|
305
310
|
requires?: R;
|
|
306
311
|
optional?: O;
|
|
307
|
-
examples?:
|
|
312
|
+
examples?: CommandExample[];
|
|
308
313
|
idempotent?: boolean;
|
|
309
314
|
prerequisites?: string[];
|
|
310
315
|
pagination?: PaginationInfo;
|
|
@@ -338,7 +343,7 @@ type CommandDefBase =
|
|
|
338
343
|
description: string;
|
|
339
344
|
aliases?: string[];
|
|
340
345
|
banner?: boolean;
|
|
341
|
-
examples?:
|
|
346
|
+
examples?: CommandExample[];
|
|
342
347
|
idempotent?: boolean;
|
|
343
348
|
prerequisites?: string[];
|
|
344
349
|
pagination?: PaginationInfo;
|
|
@@ -352,7 +357,7 @@ type CommandDefBase =
|
|
|
352
357
|
description: string;
|
|
353
358
|
aliases?: string[];
|
|
354
359
|
banner?: boolean;
|
|
355
|
-
examples?:
|
|
360
|
+
examples?: CommandExample[];
|
|
356
361
|
idempotent?: boolean;
|
|
357
362
|
prerequisites?: string[];
|
|
358
363
|
pagination?: PaginationInfo;
|
|
@@ -369,7 +374,7 @@ type SubcommandDefBase =
|
|
|
369
374
|
aliases?: string[];
|
|
370
375
|
toplevel?: boolean;
|
|
371
376
|
banner?: boolean;
|
|
372
|
-
examples?:
|
|
377
|
+
examples?: CommandExample[];
|
|
373
378
|
idempotent?: boolean;
|
|
374
379
|
prerequisites?: string[];
|
|
375
380
|
pagination?: PaginationInfo;
|
|
@@ -384,7 +389,7 @@ type SubcommandDefBase =
|
|
|
384
389
|
aliases?: string[];
|
|
385
390
|
toplevel?: boolean;
|
|
386
391
|
banner?: boolean;
|
|
387
|
-
examples?:
|
|
392
|
+
examples?: CommandExample[];
|
|
388
393
|
idempotent?: boolean;
|
|
389
394
|
prerequisites?: string[];
|
|
390
395
|
pagination?: PaginationInfo;
|
package/src/utils/date.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { StructuredError } from '@agentuity/core';
|
|
2
|
+
|
|
3
|
+
const InvalidDateFormatError = StructuredError('InvalidDateFormatError')<{ input: string }>();
|
|
4
|
+
|
|
1
5
|
/**
|
|
2
6
|
* Parse duration string (e.g., "1h", "2d", "1y") or ISO date to ISO date string
|
|
3
7
|
*
|
|
@@ -16,7 +20,7 @@ export function parseExpiresAt(input: string): string {
|
|
|
16
20
|
// Validate it's a valid date
|
|
17
21
|
const date = new Date(input);
|
|
18
22
|
if (isNaN(date.getTime())) {
|
|
19
|
-
throw new
|
|
23
|
+
throw new InvalidDateFormatError({ input, message: `Invalid date format: ${input}` });
|
|
20
24
|
}
|
|
21
25
|
return date.toISOString();
|
|
22
26
|
}
|
|
@@ -26,9 +30,10 @@ export function parseExpiresAt(input: string): string {
|
|
|
26
30
|
const match = input.match(durationRegex);
|
|
27
31
|
|
|
28
32
|
if (!match) {
|
|
29
|
-
throw new
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
throw new InvalidDateFormatError({
|
|
34
|
+
input,
|
|
35
|
+
message: `Invalid expires-at format: ${input}. Use ISO date (2025-12-31T23:59:59Z) or duration (1h, 2d, 1y)`,
|
|
36
|
+
});
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
const [, amount, unit] = match;
|