package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "my-ax",
"version": "0.0.1",
"type": "module",
"private": true,
"description": "A personal AI agent operating environment you self-host on Cloudflare.",
"scripts": {
"dev": "npm run build:assets && wrangler dev --env dev",
"dev:e2e": "node scripts/dev-e2e.mjs",
"dev:e2e:keep": "node scripts/dev-e2e.mjs --keep",
"dev:access": "bash scripts/dev-access.sh worker",
"dev:access:tunnel": "bash scripts/dev-access.sh tunnel",
"deploy": "npm run build:assets && wrangler deploy",
"deploy:dev": "npm run build:assets && wrangler deploy --env dev",
"tail": "wrangler tail",
"typecheck": "tsc --noEmit",
"effect:inventory": "node scripts/effect-backend-inventory.mjs",
"effect:inventory:write": "node scripts/effect-backend-inventory.mjs --write",
"effect:architecture": "node scripts/verify-effect-architecture.mjs",
"test:effect-backend": "tsx --test proof/plan-program.test.ts proof/terminal-gh-probe-program.test.mjs proof/terminal-live-client-program.test.mjs proof/terminal-upgrade-probe-program.test.mjs src/conversation-starters.test.ts src/cycle-costs.test.ts src/decision-response.test.ts src/desk-write.test.ts src/dead-session.test.ts src/dead-session-scan.test.ts src/gateway-retry-fetch.test.ts src/mcp-probe.test.ts src/notify.test.ts src/pantry-client.test.ts src/reusable-tool-preferences.test.ts src/session-pinning.test.ts src/voice-check-prompt.test.ts src/workspace-snapshot-ordering.test.ts src/web-search.test.ts src/workspace-mcp.test.ts",
"build:effect-workers": "npm run build:assets && wrangler deploy --dry-run --env= --outdir .wrangler/effect-main",
"verify:effect-backend": "npm run effect:inventory && npm run effect:architecture && npm run test:effect-backend && npm run build:effect-workers && npm run verify:public",
"check": "npm run build:assets && npm run typecheck && npm run test:unit",
"cf-typegen": "wrangler types",
"db:migrate": "wrangler d1 migrations apply my-ax-db --remote",
"db:migrate:local": "wrangler d1 migrations apply my-ax-db --local --env dev",
"build:css": "tailwindcss -i src/styles/app.css -o public/static/styles.css --minify",
"build:brand": "node scripts/build-brand.mjs",
"build:assets": "npm run build:css && npm run build:brand && npm run build:vendor && npm run build:docs && npm run build:svelte",
"build:docs": "node scripts/build-docs.mjs",
"build:svelte": "node src/ui/build.mjs",
"test:tool-widgets": "node src/ui/tool-result-widgets-smoke.mjs",
"test:code-diff": "tsx --test src/code-diff.test.ts src/show-diff.test.ts src/ui/d1-transcript.test.ts src/ui/durable-conversation.test.ts",
"test:code-diff-widget": "node src/ui/code-diff-widget-smoke.mjs && npm run build:svelte && node src/ui/pierre-diffs-bundle-smoke.mjs",
"test:image-lightbox": "node src/ui/image-lightbox-smoke.mjs",
"test:chat-composer": "node src/ui/chat-composer-smoke.mjs",
"test:page-registry": "tsx --test src/ui/page-registry.test.ts src/page-connection.test.ts",
"test:artifact-tools": "tsx --test src/ui/artifact-tools.test.ts",
"test:composer-keys": "tsx --test src/ui/composer-keys.test.ts src/ui/session-create.test.ts",
"test:ios-safe-area-frame": "node src/ui/ios-safe-area-frame.test.mjs",
"test:settings-snippets": "node src/ui/settings-snippets-smoke.mjs",
"test:appbar-controls": "node src/ui/appbar-controls-smoke.mjs && node src/ui/history-beneath-live-turn-smoke.mjs",
"test:attention-modal": "node src/ui/attention-modal-smoke.mjs",
"test:run-receipt-modal": "node src/ui/run-receipt-modal-smoke.mjs",
"test:semantic-guards": "node src/ui/semantic-guards-smoke.mjs",
"test:conversation-context": "node src/ui/conversation-context-smoke.mjs",
"test:check-in-shell": "tsx --test src/ui/check-in-display-href.test.ts && node src/ui/check-in-shell-smoke.mjs",
"test:owner-routes": "node src/ui/owner-routes-smoke.mjs",
"test:tool-output-limit": "tsx --test src/tool-output-limit.test.ts",
"test:machinectl-output": "tsx --test src/machinectl-output.test.ts src/cmux-delivery-verification.test.ts",
"test:grant-crypto": "tsx --test src/grant-crypto.test.ts",
"test:runs": "tsx --test src/routes/runs.test.ts",
"test:jobs-route": "tsx --test src/routes/jobs.test.ts src/morning-pick.test.ts src/ui/session-tiles-width.test.ts src/ui/task-timer-placement.test.ts",
"test:attention-route": "tsx --test src/routes/attention.test.ts",
"test:browser-route": "tsx --test src/routes/browser.test.ts",
"test:run-receipts": "node --import tsx scripts/test-run-receipts.mjs",
"prove": "bun proof/plan.ts",
"prove:artifacts": "node scripts/prove-artifacts.mjs",
"prove:browser": "node proof/browser-e2e.mjs",
"prove:models": "node scripts/prove-all-models-http.mjs",
"prove:all": "npm run check && npm run prove && npm run prove:browser",
"test:session-entries": "tsx scripts/test-session-entries.mjs",
"test:public-url": "node scripts/test-public-url.mjs",
"test:uploads": "tsx --test src/uploads.test.ts",
"test:audio-messages": "tsx --test src/audio-messages.test.ts",
"test:mcp-code-mode": "tsx --test src/mcp-code-mode-policy.test.ts src/code-mode-runtime.test.ts",
"test:bridge-replay": "tsx --test src/bridge-replay.test.ts",
"test:workspace-snapshot-ordering": "tsx --test src/workspace-snapshot-ordering.test.ts",
"test:computer": "tsx --test src/computer-workspace.test.ts src/computer-retained-write-budget.test.ts src/computer-work-budget.test.ts src/work-code-call-collector.test.ts src/work-code-output.test.ts src/workspace-snapshot-classification.test.ts src/computer-id.test.ts src/named-computer-wiring.test.ts src/named-computer-restore.test.ts src/ui/named-computer-widget.test.ts src/routes/computers.test.ts && npm run test:computer:integration",
"test:computer:integration": "node scripts/test-computer-integration.mjs",
"test:dead-session": "tsx --test src/dead-session.test.ts",
"test:dead-session-scan": "tsx --test src/dead-session-scan.test.ts src/ui/local-queue.test.ts src/pi-engine/machine-tools.test.ts src/desk-board-store.test.ts src/pi-engine/fork.test.ts src/zdr-request.test.ts src/observe.test.ts src/pi-engine/conversation-index.test.ts src/observe-events.test.ts src/ui/scroll-follow.test.ts src/ui/session-groups.test.ts src/ui/side-panel-layout.test.ts src/turn-watchdog.test.ts src/ui/tab-session.test.ts src/ui/turn-duration.test.ts src/pi-engine/last-turn-failed.test.ts src/pi-engine/slim-entries.test.ts src/ui/snapshot-store.test.ts",
"test:memory-block": "tsx --test src/memory-block.test.ts",
"test:notify": "tsx --test src/notify.test.ts",
"test:push-decision-actions": "tsx --test src/push-decision-actions.test.ts",
"test:sw-decision-click": "tsx --test src/sw-decision-click.test.ts",
"test:push-progress-tag": "tsx --test src/push-progress-tag.test.ts",
"test:sw-dismissal-sweep": "tsx --test src/sw-dismissal-sweep.test.ts",
"test:desk-board": "tsx --test src/desk-board.test.ts",
"test:deep-links": "tsx --test src/ui/deep-links.test.ts src/source-href.test.ts",
"test:attention-state": "tsx --test src/ui/attention-state.test.ts",
"test:session-generation": "tsx --test src/ui/session-generation.test.ts",
"test:reconnecting-socket": "tsx --test src/ui/reconnecting-socket.test.ts src/ui/pending-send.test.ts",
"test:session-latch": "tsx --test src/ui/session-latch.test.ts",
"test:voice-half-duplex": "tsx --test src/ui/voice-half-duplex.test.ts src/ui/voice-continue.test.ts",
"test:voice-chime": "tsx --test src/ui/voice-chime.test.ts",
"test:voice-transcript-guard": "tsx --test src/ui/voice-transcript-guard.test.ts",
"test:webcam-frame": "tsx --test src/ui/webcam-frame.test.ts",
"test:sw-navigation-ack": "tsx --test src/ui/sw-navigation-ack.test.ts",
"test:sw-cache-strategy": "node --test src/ui/sw-cache-strategy.test.mjs",
"test:delegation": "tsx --test src/delegate-receipt.test.ts src/delegate-serial.test.ts src/delegate-many.test.ts src/read-only-delegate-workspace.test.ts src/think-workspace-fs.test.ts",
"test:recipes": "tsx --test src/operational-recipe-defaults.test.ts src/saved-recipes.test.ts src/saved-recipe-execution-budget.test.ts src/work-tools-recipes.test.ts src/cm-snippets.test.ts src/auto-trust.test.ts src/capability-intersect.test.ts src/recipe-approval-policy.test.ts src/reusable-tool-candidate.test.ts src/reusable-tool-promotion.test.ts src/reusable-tool-approval-route.test.ts src/reusable-tool-preferences.test.ts src/reusable-tool-enable-e2e.test.ts",
"test:pantry-sync": "tsx --test src/pantry-sync.test.ts",
"test:root": "tsx --test src/root-session.test.ts src/agent-tree.test.ts src/ui/pi-turn-error.test.ts src/ui/session-list-empty.test.ts src/ui/session-binding.test.ts src/ui/root-pip.test.ts",
"test:unit": "npm run test:root && npm run test:fsm && npm run test:commands && npm run test:desk-board && npm run test:connector-health && npm run test:models && npm run test:workspace-reliability && npm run test:workspace-owner && npm run test:auth && npm run test:check-in && npm run test:cycle-costs && npm run test:runs && npm run test:rpc && npm run test:rig-pipeline && npm run test:jobs-route && npm run test:attention-route && npm run test:browser-route && npm run test:recovery-exhaustion && npm run test:assistant-backfill && npm run test:recurring-job-receipt && npm run test:recurring-job-run && npm run test:upstream-rate-limit && npm run test:gateway-retry-fetch && npm run test:voice-narration && npm run test:voice-turn-narration && npm run test:session-pinning && npm run test:pinned-reorder && npm run test:pinned-ui && npm run test:job-health && npm run test:attention-affordance && npm run test:notification-stream && npm run test:conversation-starters && npm run test:starters-ui && npm run test:tool-output-limit && npm run test:machinectl-output && npm run test:grant-crypto && npm run test:tool-id-sanitize && npm run test:dead-session && npm run test:dead-session-scan && npm run test:memory-block && npm run test:workspace-mcp && npm run test:notify && npm run test:push-decision-actions && npm run test:sw-decision-click && npm run test:push-progress-tag && npm run test:sw-dismissal-sweep && npm run test:tool-widgets && npm run test:code-diff && npm run test:code-diff-widget && npm run test:image-lightbox && npm run test:chat-composer && npm run test:page-registry && npm run test:artifact-tools && npm run test:composer-keys && npm run test:ios-safe-area-frame && npm run test:settings-snippets && npm run test:appbar-controls && npm run test:attention-modal && npm run test:run-receipt-modal && npm run test:semantic-guards && npm run test:conversation-context && npm run test:run-receipts && npm run test:session-entries && npm run test:public-url && npm run test:uploads && npm run test:audio-messages && npm run test:mcp-code-mode && npm run test:bridge-replay && npm run test:bridge-origin && npm run test:workspace-snapshot-ordering && npm run test:computer && npm run test:deep-links && npm run test:attention-state && npm run test:session-generation && npm run test:reconnecting-socket && npm run test:session-latch && npm run test:voice-client-options && npm run test:tapped-voice-transport && npm run test:voice-half-duplex && npm run test:voice-chime && npm run test:voice-transcript-guard && npm run test:webcam-frame && npm run test:sw-navigation-ack && npm run test:sw-cache-strategy && npm run test:deploy-refresh && npm run test:streaming-turn-fsm && tsx --test src/ui/pi-transcript.test.ts src/pi-engine/gateway-models.test.ts src/pi-engine/radar-connector.test.ts src/voice-engine-turn.test.ts && npm run test:delegation && npm run test:recipes && npm run test:pantry-sync && tsx --test src/saved-recipes-gating.test.ts && npm run test:decision-response && npm run test:capability-review && npm run test:voice-session-ownership && npm run test:voice-check-prompt && npm run test:voice-docs-tool && npm run test:voice-facet-lifecycle && npm run test:voice-think-agent && npm run test:session-ownership && npm run test:ask-user && tsx --test src/publication-authority.test.ts && npm run test:error-report && npm run test:job-state && npm run test:client-error-evidence && npm run test:deployable-config && npm run test:preview-isolation && npm run test:bootstrap-resume && npm run test:mcp-method-names && npm run test:image-attachment && npm run test:desk-app && npm run test:turn-stall && npm run test:terminal && npm run test:recovered-orphans && npm run test:verify && npm run test:usage && npm run test:email && npm run test:amber && npm run test:inventory",
"prove:resume": "node scripts/prove-resume.mjs",
"verify:public": "node --test scripts/verify-public-clean.test.mjs && node scripts/verify-public-clean.mjs",
"verify:public-text": "node scripts/scan-public-text.mjs",
"verify:public:staged": "node scripts/verify-public-clean.mjs --staged",
"verify:legacy-surface": "node scripts/verify-legacy-surface.mjs",
"build:vendor": "node scripts/build-vendor.mjs",
"test:error-report": "tsx --test src/error-report.test.ts src/error-issue.test.ts src/transient-client-errors.test.ts src/model-message-urls.test.ts src/ui-history-urls.test.ts",
"test:job-state": "tsx --test src/job-state-transition.test.ts src/job-service.test.ts",
"test:voice-session-ownership": "tsx --test src/voice-session-ownership.test.ts",
"test:voice-think-agent": "tsx --test src/voice-think-agent.test.ts",
"test:session-ownership": "tsx --test src/session-ownership.test.ts",
"test:fsm": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/fsm/session-status.test.ts src/fsm/run-status.test.ts src/fsm/job-status.test.ts src/fsm/recipe-status.test.ts src/fsm/attention-item.test.ts src/fsm/desk-card.test.ts src/fsm/workspace-verification.test.ts src/fsm/machine-connection.test.ts src/fsm/socket-connection.test.ts src/fsm/chat-message.test.ts src/fsm/voice-status.test.ts scripts/fsm-audit.test.mjs",
"test:commands": "tsx --test src/commands/commands.test.ts src/message-times.test.ts src/ui/slash-menu-layout.test.ts",
"test:email": "tsx --test src/email-in.test.ts",
"test:amber": "tsx --test src/amber.test.ts",
"test:verify": "tsx --test verify/replays/job-pause-exhaust.replay.test.ts verify/replays/session-scan-live-turn.replay.test.ts verify/replays/socket-exhaustive.test.ts",
"test:usage": "tsx --test src/usage-meter.test.ts",
"test:rpc": "tsx --test src/rpc/rpc.test.ts src/rpc/deadline-signal.test.ts src/rpc/machine-host-client.test.ts src/rpc/op-id.test.ts src/rpc/contract.test.ts src/rpc/bounded-stub.test.ts scripts/rpc-audit.test.mjs && node scripts/rpc-audit.mjs",
"test:decision-response": "tsx --test src/decision-forgery-guard.test.ts src/decision-response.test.ts src/decision-reuse.test.ts src/decision-page-xss.test.ts src/ui/safe-markdown.test.ts src/ui/user-message-markdown.test.ts src/request-origin-guard.test.ts",
"test:capability-review": "tsx --test src/capability-review.test.ts",
"test:recovery-exhaustion": "tsx --test src/recovery-exhaustion.test.ts",
"test:recurring-job-receipt": "tsx --test src/recurring-job-receipt.test.ts",
"loop:disagree": "node scripts/loop-disagree.mjs",
"verify:changed": "npm run build:assets && npm run typecheck && npm run test:unit && npm run test:check-in-shell && npm run test:owner-routes && npm run verify:public && npm run verify:legacy-surface",
"verify:release": "npm run build:assets && npm run typecheck && npm run test:unit && npm run test:check-in-shell && npm run test:owner-routes && npm run verify:public && npm run verify:legacy-surface",
"test:recurring-job-run": "tsx --test src/recurring-job-run.test.ts src/recurring-job-semantics.test.ts",
"test:upstream-rate-limit": "tsx --test src/upstream-rate-limit.test.ts",
"test:gateway-retry-fetch": "tsx --test src/gateway-retry-fetch.test.ts",
"test:voice-narration": "tsx --test src/voice-narration.test.ts src/voice-channel.test.ts src/client-snapshot.test.ts",
"test:session-pinning": "tsx --test src/fractional-index.test.ts src/session-pinning.test.ts",
"test:job-health": "tsx --test src/ui/job-health.test.ts",
"test:assistant-backfill": "tsx --test src/assistant-backfill.test.ts",
"test:conversation-starters": "tsx --test src/conversation-starters.test.ts",
"test:starters-ui": "node src/ui/starters-ui-smoke.mjs",
"test:attention-affordance": "tsx --test src/ui/attention-item-affordance.test.ts",
"test:notification-stream": "tsx --test src/ui/notification-stream.test.ts",
"test:pinned-reorder": "tsx --test src/ui/pinned-reorder.test.ts",
"test:pinned-ui": "node src/ui/pinned-ui-smoke.mjs",
"test:voice-turn-narration": "node src/ui/voice-turn-narration-smoke.mjs",
"test:check-in": "tsx --test src/check-in.test.ts",
"test:models": "tsx --test src/models.test.ts src/llm.test.ts src/gateway-workers-ai-route.test.ts",
"test:workspace-reliability": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/workspace-init.test.ts src/workspace-exec.test.ts src/tool-output-spill.test.ts src/job-list-query.test.ts src/conversation-log-durability.test.ts src/ui/transcript-merge-durability.test.ts src/issue-context.test.ts src/issue-286-partial-results.test.ts src/turn-continuation.test.ts src/workspace-policy.test.ts src/workspace-path-resolve.test.ts src/web-search-failure.test.ts src/web-search-binding.test.ts src/pi-engine/pi-engine.test.ts",
"test:auth": "tsx --test src/auth.test.ts",
"test:cycle-costs": "tsx --test src/cycle-costs.test.ts",
"test:tool-id-sanitize": "tsx --test src/tool-id-sanitize.test.ts",
"test:streaming-turn-fsm": "tsx --test src/ui/streaming-turn-fsm.test.ts",
"test:bridge-origin": "tsx --test src/bridge-origin.test.ts",
"test": "npm run test:unit",
"test:deploy-refresh": "tsx --test src/deploy-version.test.ts && node src/ui/deploy-refresh-smoke.mjs",
"prepare": "husky",
"test:connector-health": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/connector-health.test.ts src/connector-health-store.test.ts",
"test:ask-user": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/tools.test.ts",
"test:tapped-voice-transport": "tsx --test src/ui/tapped-voice-transport.test.ts",
"test:voice-client-options": "tsx --test src/ui/voice-client-options.test.ts",
"test:voice-check-prompt": "tsx --test src/voice-check-prompt.test.ts",
"test:voice-docs-tool": "tsx --test src/voice-docs-tool.test.ts",
"test:voice-facet-lifecycle": "tsx --test src/voice-facet-lifecycle.test.ts",
"test:workspace-mcp": "tsx --test src/workspace-mcp.test.ts src/session-turn.test.ts src/control-plane-mcp.test.ts",
"test:client-error-evidence": "tsx --test src/ui/client-error-evidence.test.ts",
"test:deployable-config": "tsx --test src/deployable-config.test.ts",
"test:preview-isolation": "tsx --test src/preview-isolation.test.ts",
"verify:preview-isolation": "node scripts/verify-preview-isolation.mjs",
"test:bootstrap-resume": "tsx --test src/ui/bootstrap-resume.test.ts",
"test:image-attachment": "tsx --test src/attachment-reference.test.ts src/attachment-alignment.test.ts src/attachment-part-shape.test.ts",
"test:mcp-method-names": "tsx --test src/mcp-method-names.test.ts src/send-and-wait.test.ts && node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/coordinator-code.test.ts src/computer-screen-tools.test.ts",
"test:terminal": "tsx --test src/terminal-protocol.test.ts src/ui/terminal-socket.test.ts",
"test:desk-app": "tsx --test src/widget-names.test.ts src/desk-write.test.ts src/desk-app.test.ts src/ui/artifact-outbound.test.ts src/artifact-runtime.test.ts src/ui/desk-host.test.ts src/page-verb-parity.test.ts src/artifact-theme.test.ts src/desk-live-app.test.ts src/desk-promote.test.ts",
"test:turn-stall": "tsx --test src/ui/turn-stall.test.ts",
"test:inventory": "node --test scripts/test-inventory.test.mjs && node scripts/test-inventory.mjs",
"test:recovered-orphans": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test proof/plan-program.test.ts proof/terminal-gh-probe-program.test.mjs proof/terminal-live-client-program.test.mjs proof/terminal-upgrade-probe-program.test.mjs scripts/loop-disagree.test.mjs scripts/verify-public-clean.test.mjs src/artifacts.test.ts src/cmux-observer.test.ts src/compaction-summary.test.ts src/desk-live.test.ts src/error-meta.test.ts src/inject-onstart.test.ts src/mcp-probe.test.ts src/model-auth.test.ts src/notification-session.test.ts src/owner-instructions-wiring.test.ts src/owner-instructions.test.ts src/pantry-client.test.ts src/recurring-job-limits.test.ts src/routes/desk.test.ts src/user-agent-broadcast.test.ts src/think-workspace-read.test.ts src/schedule-api.test.ts src/turn-snapshot-detach.test.ts src/pi-engine/pi-harness-wake.test.ts src/routes/sessions.test.ts src/sequence-integrity.test.ts src/session-entries.test.ts src/session-fork.test.ts src/session-title.test.ts src/suggest-recipe-name.test.ts src/turn-visible-receipt.test.ts src/ui/assistant-visible.test.ts src/ui/auth-recovery.test.ts src/ui/browser-replay-fallback.test.ts src/ui/chat-outbound-whitespace.test.ts src/ui/check-in-display-href.test.ts src/ui/owner-error.test.ts src/ui/transcript-merge.test.ts src/ui/voice-activation.test.ts src/ui/voice-lifecycle-source.test.ts src/web-search.test.ts src/work-sandbox-only.test.ts src/workspace-durability.test.ts src/workspace-recycle.test.ts src/workspace-write-path.test.ts",
"test:workspace-owner": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/workspace-owner.test.ts src/workspace-exec.test.ts",
"test:rig-pipeline": "node --import ./scripts/cloudflare-test-loader.mjs --import tsx --test src/rig-pipeline.test.ts src/rig-pipeline-routes.test.ts"
},
"dependencies": {
"@ai-sdk/anthropic": "4.0.94",
"@ai-sdk/openai": "4.0.106",
"@ai-sdk/react": "4.0.163",
"@cloudflare/codemode": "0.5.6",
"@cloudflare/computer": "0.8.0",
"@cloudflare/puppeteer": "^1.4.0",
"@cloudflare/sandbox": "0.12.14",
"@cloudflare/shell": "0.5.0",
"@cloudflare/think": "0.23.0",
"@cloudflare/voice": "0.5.0",
"@earendil-works/chord": "1.4.0",
"@earendil-works/pi-ai": "1.4.0",
"@earendil-works/pi-durable": "1.4.0",
"@pierre/diffs": "1.6.2",
"@pierre/theme": "2.0.0",
"agents": "0.32.0",
"agents-pi": "npm:agents@0.32.0",
"ai": "7.0.159",
"cloudterm": "github:acoyfellow/cloudterm#v0.0.14",
"dompurify": "3.4.17",
"effect": "4.1.2",
"hono": "^4.13.16",
"jose": "6.2.15",
"just-bash": "3.6.0",
"marked": "18.1.2",
"rrweb-player": "2.2.0",
"svelte": "5.57.3",
"svelte-hono": "0.1.2",
"workers-ai-provider": "4.0.1",
"zod": "^4.6.7"
},
"devDependencies": {
"@tailwindcss/cli": "4.3.3",
"@tailwindcss/forms": "0.5.11",
"@tailwindcss/typography": "0.5.20",
"@types/jsdom": "30.0.0",
"@types/node": "26.6.6",
"esbuild": "0.28.2",
"esbuild-svelte": "^0.9.5",
"husky": "^9.1.7",
"jsdom": "30.1.3",
"jsonc-parser": "^3.3.1",
"sharp": "0.35.5",
"tailwindcss": "4.3.3",
"tsx": "^4.23.15",
"typescript": "7.0.2",
"wrangler": "^4.156.1"
},
"author": "Jordan Coeyman (https://coey.dev)",
"license": "MIT",
"repository": {
"type": "git",
"url": "git+https://github.com/acoyfellow/my-ax.git"
},
"homepage": "https://ax.coey.dev",
"overrides": {
"esbuild": "0.28.2",
"undici@>=7.0.0 <7.30.1": "7.30.1",
"postcss-selector-parser@<6.1.5": "6.1.5",
"basic-ftp": "6.2.4",
"@puppeteer/browsers": "3.2.6"
},
"engines": {
"node": ">=22"
},
"packageManager": "npm@11.13.0"
}