@amplitude/ai 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.claude/commands/instrument-with-amplitude-ai.md +12 -0
  2. package/.cursor/skills/instrument-with-amplitude-ai/SKILL.md +4 -42
  3. package/AGENTS.md +86 -28
  4. package/README.md +190 -111
  5. package/amplitude-ai.md +463 -0
  6. package/bin/amplitude-ai-doctor.mjs +0 -0
  7. package/bin/amplitude-ai-instrument.mjs +0 -0
  8. package/bin/amplitude-ai-mcp.mjs +0 -0
  9. package/bin/amplitude-ai-register-catalog.mjs +0 -0
  10. package/bin/amplitude-ai-status.mjs +0 -0
  11. package/bin/amplitude-ai.mjs +14 -5
  12. package/data/agent_event_catalog.json +52 -2
  13. package/dist/bound-agent.d.ts +18 -14
  14. package/dist/bound-agent.d.ts.map +1 -1
  15. package/dist/bound-agent.js +4 -1
  16. package/dist/bound-agent.js.map +1 -1
  17. package/dist/cli/status.d.ts.map +1 -1
  18. package/dist/cli/status.js +31 -19
  19. package/dist/cli/status.js.map +1 -1
  20. package/dist/client.d.ts +14 -14
  21. package/dist/client.d.ts.map +1 -1
  22. package/dist/client.js +38 -0
  23. package/dist/client.js.map +1 -1
  24. package/dist/context.d.ts +5 -0
  25. package/dist/context.d.ts.map +1 -1
  26. package/dist/context.js +4 -0
  27. package/dist/context.js.map +1 -1
  28. package/dist/core/constants.d.ts +3 -1
  29. package/dist/core/constants.d.ts.map +1 -1
  30. package/dist/core/constants.js +3 -1
  31. package/dist/core/constants.js.map +1 -1
  32. package/dist/core/tracking.d.ts +12 -2
  33. package/dist/core/tracking.d.ts.map +1 -1
  34. package/dist/core/tracking.js +13 -2
  35. package/dist/core/tracking.js.map +1 -1
  36. package/dist/decorators.d.ts +1 -1
  37. package/dist/decorators.d.ts.map +1 -1
  38. package/dist/decorators.js +4 -3
  39. package/dist/decorators.js.map +1 -1
  40. package/dist/index.d.ts +7 -4
  41. package/dist/index.js +5 -2
  42. package/dist/mcp/contract.d.ts +4 -0
  43. package/dist/mcp/contract.d.ts.map +1 -1
  44. package/dist/mcp/contract.js +6 -2
  45. package/dist/mcp/contract.js.map +1 -1
  46. package/dist/mcp/generate-verify-test.d.ts +7 -0
  47. package/dist/mcp/generate-verify-test.d.ts.map +1 -0
  48. package/dist/mcp/generate-verify-test.js +25 -0
  49. package/dist/mcp/generate-verify-test.js.map +1 -0
  50. package/dist/mcp/index.d.ts +2 -1
  51. package/dist/mcp/index.js +2 -1
  52. package/dist/mcp/instrument-file.d.ts +14 -0
  53. package/dist/mcp/instrument-file.d.ts.map +1 -0
  54. package/dist/mcp/instrument-file.js +139 -0
  55. package/dist/mcp/instrument-file.js.map +1 -0
  56. package/dist/mcp/scan-project.d.ts +52 -0
  57. package/dist/mcp/scan-project.d.ts.map +1 -0
  58. package/dist/mcp/scan-project.js +309 -0
  59. package/dist/mcp/scan-project.js.map +1 -0
  60. package/dist/mcp/server.d.ts.map +1 -1
  61. package/dist/mcp/server.js +79 -4
  62. package/dist/mcp/server.js.map +1 -1
  63. package/dist/mcp/validate-file.d.ts +4 -0
  64. package/dist/mcp/validate-file.d.ts.map +1 -1
  65. package/dist/mcp/validate-file.js +559 -11
  66. package/dist/mcp/validate-file.js.map +1 -1
  67. package/dist/middleware.js +2 -1
  68. package/dist/middleware.js.map +1 -1
  69. package/dist/node_modules/.pnpm/acorn-typescript@1.4.13_acorn@8.16.0/node_modules/acorn-typescript/lib/index.js +2389 -0
  70. package/dist/node_modules/.pnpm/acorn-typescript@1.4.13_acorn@8.16.0/node_modules/acorn-typescript/lib/index.js.map +1 -0
  71. package/dist/node_modules/.pnpm/acorn@8.16.0/node_modules/acorn/dist/acorn.js +5128 -0
  72. package/dist/node_modules/.pnpm/acorn@8.16.0/node_modules/acorn/dist/acorn.js.map +1 -0
  73. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js +1 -1
  74. package/dist/providers/anthropic.d.ts.map +1 -1
  75. package/dist/providers/anthropic.js +1 -0
  76. package/dist/providers/anthropic.js.map +1 -1
  77. package/dist/providers/base.d.ts +2 -1
  78. package/dist/providers/base.d.ts.map +1 -1
  79. package/dist/providers/base.js +4 -0
  80. package/dist/providers/base.js.map +1 -1
  81. package/dist/providers/openai.d.ts.map +1 -1
  82. package/dist/providers/openai.js +2 -0
  83. package/dist/providers/openai.js.map +1 -1
  84. package/dist/serverless.d.ts +19 -0
  85. package/dist/serverless.d.ts.map +1 -0
  86. package/dist/serverless.js +35 -0
  87. package/dist/serverless.js.map +1 -0
  88. package/dist/session.d.ts +24 -8
  89. package/dist/session.d.ts.map +1 -1
  90. package/dist/session.js +20 -1
  91. package/dist/session.js.map +1 -1
  92. package/dist/types.d.ts +1 -0
  93. package/dist/types.d.ts.map +1 -1
  94. package/dist/types.js.map +1 -1
  95. package/dist/utils/costs.d.ts.map +1 -1
  96. package/dist/utils/costs.js +5 -1
  97. package/dist/utils/costs.js.map +1 -1
  98. package/llms-full.txt +353 -69
  99. package/llms.txt +6 -2
  100. package/mcp.schema.json +7 -3
  101. package/package.json +10 -5
  102. package/bin/amplitude-ai-init.mjs +0 -27
  103. package/dist/cli/init.d.ts +0 -14
  104. package/dist/cli/init.d.ts.map +0 -1
  105. package/dist/cli/init.js +0 -40
  106. package/dist/cli/init.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Auto-instrument a JS/TS AI app with @amplitude/ai.
3
+ allowed-tools: mcp__amplitude-ai__scan_project, mcp__amplitude-ai__validate_file, mcp__amplitude-ai__instrument_file, mcp__amplitude-ai__generate_verify_test, mcp__amplitude-ai__validate_setup, mcp__amplitude-ai__suggest_instrumentation, mcp__amplitude-ai__get_event_schema, mcp__amplitude-ai__get_integration_pattern, mcp__amplitude-ai__search_docs, Bash, Read, Write, Edit, Glob, Grep
4
+ ---
5
+
6
+ # /instrument-with-amplitude-ai
7
+
8
+ Read and follow `node_modules/@amplitude/ai/amplitude-ai.md` step by step.
9
+
10
+ That file contains the complete 4-phase workflow: **Detect → Discover → Instrument → Verify**.
11
+
12
+ If the `amplitude-ai` MCP server is connected, use `scan_project`, `validate_file`, `instrument_file`, and `generate_verify_test` tools to accelerate each phase.
@@ -1,50 +1,12 @@
1
1
  ---
2
2
  name: instrument-with-amplitude-ai
3
- description: Detect framework, install @amplitude/ai dependencies, scaffold init code, and identify likely LLM call sites in JavaScript/TypeScript projects.
3
+ description: Auto-instrument a JS/TS AI app with @amplitude/ai. Detects framework, discovers agents and LLM call sites, applies instrumentation, and verifies with tests.
4
4
  ---
5
5
 
6
6
  # /instrument-with-amplitude-ai
7
7
 
8
- ## Goal
8
+ Read and follow `node_modules/@amplitude/ai/amplitude-ai.md` step by step.
9
9
 
10
- Instrument a JS/TS app with `@amplitude/ai` quickly and safely.
10
+ That file contains the complete 4-phase workflow: **Detect → Discover → Instrument → Verify**.
11
11
 
12
- ## Steps
13
-
14
- 1. Detect project type from `package.json` and lockfiles:
15
- - web apps: `next`, `react`, `vite`
16
- - APIs: `express`, `fastify`, `hono`
17
- - workers/CLI: no web framework, but provider SDKs present
18
- 2. Install deps:
19
- - `pnpm add @amplitude/ai`
20
- - provider packages used by the app (`openai`, `@anthropic-ai/sdk`, etc.)
21
- 3. Scaffold bootstrap:
22
- - run `amplitude-ai init`
23
- - ensure `AMPLITUDE_AI_API_KEY` is documented in `.env.example`
24
- 4. Identify likely LLM call sites (priority order):
25
- - provider SDK direct calls:
26
- - `openai.chat.completions.create`
27
- - `openai.responses.create`
28
- - `anthropic.messages.create`
29
- - framework integrations:
30
- - route handlers (`app.get/post`, `router.*`, Next route handlers)
31
- - agent orchestration loops and tool executors
32
- 5. Add instrumentation (choose one path):
33
- - zero-code: `patch({ amplitudeAI })`
34
- - explicit wrappers: `wrap(existingClient, amplitudeAI)`
35
- - explicit lifecycle: `ai.agent(agentId, { userId }).session({ sessionId })`
36
- - function tracing: `tool(...)` / `observe(...)`
37
- 6. Validate:
38
- - run `amplitude-ai doctor`
39
- - run tests and typecheck
40
- - verify generated files are fresh: `pnpm --filter @amplitude/ai check:generated`
41
- 7. Suggested ripgrep probes:
42
- - `openai|anthropic|chat\\.completions|responses\\.create|messages\\.create`
43
- - `agent\\(|session\\(|tool\\(|observe\\(`
44
-
45
- ## Safety checks
46
-
47
- - Do not modify unrelated files.
48
- - Prefer adding instrumentation near existing provider calls.
49
- - Keep content mode explicit if privacy constraints apply.
50
- - Do not duplicate instrumentation (avoid wrapping and patching the same call path twice).
12
+ If the `amplitude-ai` MCP server is connected, use `scan_project`, `validate_file`, `instrument_file`, and `generate_verify_test` tools to accelerate each phase.
package/AGENTS.md CHANGED
@@ -1,12 +1,55 @@
1
- <!-- GENERATED FILE: do not edit manually -->
2
-
3
1
  # AGENTS.md
4
2
 
5
- Package: `@amplitude/ai` v0.2.0
3
+ Package: `@amplitude/ai` v0.3.0
6
4
 
7
5
  ## Install
8
6
 
9
- - `pnpm add @amplitude/ai`
7
+ ```bash
8
+ pnpm add @amplitude/ai
9
+ ```
10
+
11
+ ## MCP Server Setup
12
+
13
+ The SDK ships an MCP server for AI coding agents. It provides project scanning,
14
+ file validation, instrumentation, test generation, and the complete API reference.
15
+
16
+ ### Cursor
17
+
18
+ Add to `.cursor/mcp.json` in your project root:
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "amplitude-ai": {
23
+ "command": "npx",
24
+ "args": ["amplitude-ai", "mcp"]
25
+ }
26
+ }
27
+ }
28
+ ```
29
+ Then point the agent at the instrumentation guide: `node_modules/@amplitude/ai/amplitude-ai.md`
30
+
31
+ ### Claude Code
32
+
33
+ ```bash
34
+ claude mcp add amplitude-ai -- npx amplitude-ai mcp
35
+ ```
36
+ Then point the agent at the instrumentation guide: `node_modules/@amplitude/ai/amplitude-ai.md`
37
+
38
+ ### OpenAI Codex CLI
39
+
40
+ Add to `~/.codex/config.toml`:
41
+ ```toml
42
+ [mcp_servers.amplitude-ai]
43
+ command = "npx"
44
+ args = ["amplitude-ai", "mcp"]
45
+ ```
46
+ Codex auto-reads this `AGENTS.md` file for context.
47
+
48
+ ### Generic (any MCP-compatible agent)
49
+
50
+ ```json
51
+ { "amplitude-ai": { "command": "npx", "args": ["amplitude-ai", "mcp"] } }
52
+ ```
10
53
 
11
54
  ## Decision Tree
12
55
 
@@ -15,28 +58,53 @@ Package: `@amplitude/ai` v0.2.0
15
58
  - Need user/session lineage: use `ai.agent(...).session(...)`.
16
59
  - Multiple agents collaborating: use `session.runAs(childAgent, fn)` for automatic identity propagation.
17
60
  - Need tool telemetry: use `tool()`.
61
+ - Need span/observability: use `observe()`.
18
62
  - Need agent-assistant guidance: run MCP prompt `instrument_app`.
19
63
 
20
- ## Canonical Patterns
64
+ ## MCP Surface
21
65
 
22
- - zero-code patching
23
- - wrap-openai
24
- - bound-agent-session
25
- - multi-agent-runas
26
- - tool-decorator
27
- - express-middleware
66
+ Tools:
67
+ - `get_event_schema`
68
+ - `get_integration_pattern`
69
+ - `validate_setup`
70
+ - `suggest_instrumentation`
71
+ - `validate_file`
72
+ - `search_docs`
73
+ - `scan_project`
74
+ - `generate_verify_test`
75
+ - `instrument_file`
76
+
77
+ Resources:
78
+ - `amplitude-ai://event-schema`
79
+ - `amplitude-ai://integration-patterns`
80
+ - `amplitude-ai://instrument-guide`
81
+
82
+ Prompt:
83
+ - `instrument_app` — Full guided instrumentation with embedded SKILL.md
28
84
 
29
- ## MCP Surface
85
+ ## Canonical Patterns
30
86
 
31
- - Tools: `get_event_schema`, `get_integration_pattern`, `validate_setup`, `suggest_instrumentation`, `validate_file`, `search_docs`
32
- - Resources: `amplitude-ai://event-schema`, `amplitude-ai://integration-patterns`
33
- - Prompt: `instrument_app`
87
+ - zero-code patching `patch({ amplitudeAI: ai })`
88
+ - wrap-openai `wrap(existingClient, ai)`
89
+ - bound-agent-session `ai.agent('id').session({ userId }).run(fn)`
90
+ - multi-agent-runas — `s.runAs(childAgent, fn)`
91
+ - tool-decorator — `tool(fn, { name: 'tool_name' })`
92
+ - observe-spans — `observe(fn, { name: 'span-name' })`
93
+ - express-middleware — `createAmplitudeAIMiddleware({ amplitudeAI: ai, userIdResolver })`
34
94
 
35
95
  ## Gotchas
36
96
 
37
97
  - `tool()` in Node requires explicit JSON schema for robust agent input shaping.
38
98
  - Keep `AMPLITUDE_AI_API_KEY` available in runtime env for telemetry delivery.
39
99
  - Use `MockAmplitudeAI` for deterministic tests.
100
+ - Call `ai.flush()` before returning from serverless handlers (Next.js, Lambda, Vercel).
101
+ - `session.run()` relies on `AsyncLocalStorage`; not available in Edge Runtime.
102
+
103
+ ## CLI
104
+
105
+ - `amplitude-ai mcp` — Start the MCP server for AI coding agents
106
+ - `amplitude-ai doctor [--json]` — Validate environment, deps, and event pipeline
107
+ - `amplitude-ai status [--json]` — Show SDK version, installed providers, and env config
40
108
 
41
109
  ## Testing
42
110
 
@@ -44,13 +112,6 @@ Package: `@amplitude/ai` v0.2.0
44
112
  - Run typecheck: `pnpm --filter @amplitude/ai test:typescript`
45
113
  - Run docs freshness: `node scripts/generate-agent-docs.mjs --check`
46
114
 
47
- ## CLI
48
-
49
- - `amplitude-ai init [--dry-run] [--force]`
50
- - `amplitude-ai doctor`
51
- - `amplitude-ai status`
52
- - `amplitude-ai mcp`
53
-
54
115
  ## Examples
55
116
 
56
117
  - `examples/zero-code.ts`
@@ -59,13 +120,10 @@ Package: `@amplitude/ai` v0.2.0
59
120
  - `examples/framework-integration.ts`
60
121
  - `examples/real-openai.ts` (requires OPENAI_API_KEY)
61
122
 
62
- ## Extended Reference
63
-
64
- - `llms-full.txt` — Full API signatures and canonical patterns for LLM agents
65
-
66
- ## Cursor Skill
123
+ ## Instrumentation Guide
67
124
 
68
- - `.cursor/skills/instrument-with-amplitude-ai/SKILL.md`
125
+ - `amplitude-ai.md` — **Start here.** Complete 4-phase instrumentation workflow + API reference. Paste into any coding agent.
126
+ - `llms-full.txt` — Extended API reference with MCP tools and patterns
69
127
 
70
128
  ## Event Schema (names)
71
129