@pencil-agent/nano-pencil 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +267 -267
- package/dist/build-meta.json +3 -3
- package/dist/core/export-html/AGENT.md +11 -11
- package/dist/core/export-html/template.css +971 -971
- package/dist/core/export-html/template.html +54 -54
- package/dist/core/mcp/mcp-client.d.ts +3 -1
- package/dist/core/mcp/mcp-client.js +6 -6
- package/dist/core/mcp/mcp-config.d.ts +3 -3
- package/dist/core/mcp/mcp-config.js +1 -1
- package/dist/core/mcp/mcp-manager.d.ts +5 -1
- package/dist/core/mcp/mcp-manager.js +1 -1
- package/dist/core/platform/config/resource-loader.d.ts +2 -0
- package/dist/core/platform/config/resource-loader.js +2 -2
- package/dist/core/runtime/agent-session.d.ts +12 -0
- package/dist/core/runtime/agent-session.js +8 -8
- package/dist/core/runtime/sdk.d.ts +8 -0
- package/dist/core/runtime/sdk.js +1 -1
- package/dist/extensions/builtin/AGENT.md +115 -115
- package/dist/extensions/builtin/browser/AGENT.md +17 -17
- package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -12
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -198
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -341
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -311
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -333
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -70
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -578
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -440
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -110
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -325
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -463
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -360
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -390
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -568
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -323
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -349
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -435
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -506
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -363
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -168
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -236
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -295
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -108
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -493
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -580
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -511
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -65
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -184
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -543
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -122
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -461
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -383
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -243
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -473
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -271
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -436
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -1021
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -349
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -109
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -170
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -537
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -120
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -414
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -477
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -478
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -339
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -205
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -472
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -470
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -490
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -478
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -234
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -307
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -421
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -364
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -352
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -124
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -233
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -361
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -36
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -72
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -109
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -137
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -362
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -339
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -435
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -575
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -338
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -52
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -107
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -309
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -88
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -375
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -444
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -306
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -398
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -596
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -356
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -84
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -418
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -433
- package/dist/extensions/builtin/browser/browser.md +73 -73
- package/dist/extensions/builtin/browser/install.md +142 -142
- package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -48
- package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -64
- package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -90
- package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -17
- package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -3
- package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -69
- package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -1
- package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -3
- package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -15
- package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -8
- package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -90
- package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -722
- package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -328
- package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -396
- package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -103
- package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -33
- package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -22
- package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -31
- package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -28
- package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -32
- package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -25
- package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -27
- package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -26
- package/dist/extensions/builtin/goal/README.md +67 -67
- package/dist/extensions/builtin/grub/README.md +112 -112
- package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -16
- package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -65
- package/dist/extensions/builtin/link-world/link-world-agent.md +82 -82
- package/dist/extensions/builtin/link-world/linkworld.md +313 -313
- package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -67
- package/dist/extensions/builtin/loop/README.md +92 -92
- package/dist/extensions/builtin/mcp/figma-design.md +68 -68
- package/dist/extensions/builtin/mcp/mcp-management.md +85 -85
- package/dist/extensions/builtin/recap/AGENT.md +15 -15
- package/dist/extensions/builtin/sal/README.md +72 -72
- package/dist/extensions/builtin/security-audit/README.md +289 -289
- package/dist/extensions/builtin/team/AGENT.md +112 -112
- package/dist/extensions/builtin/team/TESTING.md +299 -299
- package/dist/extensions/builtin/token-save/README.md +56 -56
- package/dist/extensions/optional/AGENT.md +10 -10
- package/dist/modes/interactive/interactive-mode.js +36 -36
- package/dist/modes/interactive/theme/dark.json +85 -85
- package/dist/modes/interactive/theme/light.json +84 -84
- package/dist/modes/interactive/theme/theme-schema.json +335 -335
- package/dist/modes/interactive/theme/warm.json +81 -81
- package/dist/node_modules/@pencil-agent/agent-core/dist/agent-loop.js +3 -2
- package/dist/node_modules/@pencil-agent/agent-core/dist/structured-adaptive-agent-loop.js +2 -1
- package/dist/node_modules/@pencil-agent/ai/dist/cli.js +0 -0
- package/docs/cc-agent-design.md +1297 -0
- package/docs/cc-tui-design.md +1333 -0
- package/docs/codex-goal-command-impl.md +1055 -1055
- package/docs/codex-goal-vs-grub.md +500 -500
- package/docs/custom-provider.md +27 -27
- package/docs/extensions.md +27 -27
- package/docs/keybindings.md +27 -27
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +250 -250
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +122 -122
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -1222
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -158
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -128
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +320 -320
- package/docs/loop-usage-examples.md +214 -214
- package/docs/models.md +27 -27
- package/docs/nanoPencil-/345/255/246/344/271/240/350/256/241/345/210/222.md +170 -0
- package/docs/packages.md +27 -27
- package/docs/pi-design-philosophy.md +457 -457
- package/docs/planmode.md +1987 -1987
- package/docs/prompt-templates.md +27 -27
- package/docs/providers.md +27 -27
- package/docs/scan-report.md +3820 -0
- package/docs/sdk.md +27 -27
- package/docs/skills.md +27 -27
- package/docs/themes.md +27 -27
- package/docs/tui.md +27 -27
- package/docs//345/257/271/346/240/207Claude-Code.md +1775 -0
- package/docs//351/230/277/351/207/214/345/267/264/345/267/264/350/264/242/346/212/245/345/210/206/346/236/220/344/271/246.md +261 -0
- package/package.json +190 -190
- package/docs/ACP/345/215/217/350/256/256/351/233/206/346/210/220/345/274/200/345/217/221/346/226/207/346/241/243.md +0 -851
- package/docs/SDK-TESTING.md +0 -364
- package/docs/mem-core/346/212/200/346/234/257/346/226/207/346/241/243.md +0 -593
- package/docs/startup-performance-optimization.md +0 -301
- package/docs//350/256/244/347/237/245/345/234/260/345/233/276.md +0 -47
package/docs/SDK-TESTING.md
DELETED
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
# SDK Testing Guide
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
This document describes the testing strategy and procedures for the NanoPencil SDK.
|
|
6
|
-
|
|
7
|
-
## Build Verification
|
|
8
|
-
|
|
9
|
-
### Prerequisites
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
# Ensure Node.js 20+
|
|
13
|
-
node --version
|
|
14
|
-
|
|
15
|
-
# Install dependencies
|
|
16
|
-
npm install
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
### Build Test
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# Full build
|
|
23
|
-
npm run build
|
|
24
|
-
|
|
25
|
-
# Expected output:
|
|
26
|
-
# - dist/ directory created
|
|
27
|
-
# - TypeScript compiled successfully
|
|
28
|
-
# - All packages bundled
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Pack Verification
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# Create tarball
|
|
35
|
-
npm pack
|
|
36
|
-
|
|
37
|
-
# Expected output:
|
|
38
|
-
# - nanopencil-{version}.tgz created
|
|
39
|
-
# - Contains dist/, docs/, README.md
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### Install Verification
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# Create test directory
|
|
46
|
-
mkdir /tmp/sdk-test
|
|
47
|
-
cd /tmp/sdk-test
|
|
48
|
-
|
|
49
|
-
# Install from tarball
|
|
50
|
-
npm install /path/to/nanopencil-{version}.tgz
|
|
51
|
-
|
|
52
|
-
# Verify imports
|
|
53
|
-
node -e "
|
|
54
|
-
const sdk = require('@pencil-agent/nano-pencil');
|
|
55
|
-
console.log('Exports:', Object.keys(sdk).slice(0, 10));
|
|
56
|
-
console.log('PencilAgent:', typeof sdk.PencilAgent);
|
|
57
|
-
console.log('createAgentSession:', typeof sdk.createAgentSession);
|
|
58
|
-
"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## TypeScript Verification
|
|
64
|
-
|
|
65
|
-
### Type Imports
|
|
66
|
-
|
|
67
|
-
```typescript
|
|
68
|
-
import type {
|
|
69
|
-
PencilAgent,
|
|
70
|
-
PencilAgentOptions,
|
|
71
|
-
AgentSession,
|
|
72
|
-
AgentSessionEvent,
|
|
73
|
-
CreateAgentSessionOptions,
|
|
74
|
-
SDKLogger,
|
|
75
|
-
Tool,
|
|
76
|
-
ToolDefinition,
|
|
77
|
-
} from '@pencil-agent/nano-pencil'
|
|
78
|
-
|
|
79
|
-
// All types should be available
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### Compilation Test
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Create test file
|
|
86
|
-
cat > test-types.ts << 'EOF'
|
|
87
|
-
import { PencilAgent, createAgentSession } from '@pencil-agent/nano-pencil'
|
|
88
|
-
|
|
89
|
-
const agent = new PencilAgent({ silent: true })
|
|
90
|
-
const session = await createAgentSession({ silent: true })
|
|
91
|
-
EOF
|
|
92
|
-
|
|
93
|
-
# Compile with tsc
|
|
94
|
-
tsc test-types.ts --noEmit --skipLibCheck
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## Functional Tests
|
|
100
|
-
|
|
101
|
-
### Basic Session Creation
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
import { createAgentSession } from '@pencil-agent/nano-pencil'
|
|
105
|
-
|
|
106
|
-
async function testBasicSession() {
|
|
107
|
-
const { session, modelFallbackMessage } = await createAgentSession({
|
|
108
|
-
cwd: process.cwd(),
|
|
109
|
-
silent: true,
|
|
110
|
-
inMemory: true,
|
|
111
|
-
})
|
|
112
|
-
|
|
113
|
-
console.log('Session created:', !!session)
|
|
114
|
-
console.log('Model fallback:', modelFallbackMessage)
|
|
115
|
-
|
|
116
|
-
// Send a prompt
|
|
117
|
-
await session.prompt('Say hello')
|
|
118
|
-
|
|
119
|
-
console.log('Prompt sent successfully')
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
testBasicSession()
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
### PencilAgent Wrapper
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
import { PencilAgent, quickAgent } from '@pencil-agent/nano-pencil'
|
|
129
|
-
|
|
130
|
-
async function testPencilAgent() {
|
|
131
|
-
// Test manual init
|
|
132
|
-
const agent1 = new PencilAgent({ silent: true })
|
|
133
|
-
await agent1.init()
|
|
134
|
-
console.log('Manual init:', agent1.isInitialized())
|
|
135
|
-
|
|
136
|
-
// Test quickAgent factory
|
|
137
|
-
const agent2 = await quickAgent({ silent: true })
|
|
138
|
-
console.log('quickAgent init:', agent2.isInitialized())
|
|
139
|
-
|
|
140
|
-
// Test run
|
|
141
|
-
const result = await agent2.run('What is 2+2?')
|
|
142
|
-
console.log('Run result:', result.length > 0)
|
|
143
|
-
|
|
144
|
-
// Test subscription
|
|
145
|
-
let eventCount = 0
|
|
146
|
-
agent2.subscribe((event) => {
|
|
147
|
-
eventCount++
|
|
148
|
-
})
|
|
149
|
-
await agent2.run('Count this')
|
|
150
|
-
console.log('Events received:', eventCount > 0)
|
|
151
|
-
|
|
152
|
-
// Test shutdown
|
|
153
|
-
await agent2.shutdown()
|
|
154
|
-
console.log('Shutdown complete:', !agent2.isInitialized())
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
testPencilAgent()
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### Logger Interface
|
|
161
|
-
|
|
162
|
-
```typescript
|
|
163
|
-
import { createAgentSession, type SDKLogger } from '@pencil-agent/nano-pencil'
|
|
164
|
-
|
|
165
|
-
async function testCustomLogger() {
|
|
166
|
-
const logs: string[] = []
|
|
167
|
-
|
|
168
|
-
const customLogger: SDKLogger = {
|
|
169
|
-
error: (msg) => logs.push(`ERROR: ${msg}`),
|
|
170
|
-
warn: (msg) => logs.push(`WARN: ${msg}`),
|
|
171
|
-
info: (msg) => logs.push(`INFO: ${msg}`),
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const { session } = await createAgentSession({
|
|
175
|
-
silent: false,
|
|
176
|
-
logger: customLogger,
|
|
177
|
-
inMemory: true,
|
|
178
|
-
})
|
|
179
|
-
|
|
180
|
-
console.log('Logger received:', logs.length)
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
testCustomLogger()
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Silent Mode
|
|
187
|
-
|
|
188
|
-
```typescript
|
|
189
|
-
import { createAgentSession, silentLogger } from '@pencil-agent/nano-pencil'
|
|
190
|
-
|
|
191
|
-
async function testSilentMode() {
|
|
192
|
-
// Option 1: silent flag
|
|
193
|
-
const { session: s1 } = await createAgentSession({
|
|
194
|
-
silent: true,
|
|
195
|
-
inMemory: true,
|
|
196
|
-
})
|
|
197
|
-
|
|
198
|
-
// Option 2: explicit silent logger
|
|
199
|
-
const { session: s2 } = await createAgentSession({
|
|
200
|
-
logger: silentLogger,
|
|
201
|
-
inMemory: true,
|
|
202
|
-
})
|
|
203
|
-
|
|
204
|
-
console.log('Both sessions created silently')
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
testSilentMode()
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
---
|
|
211
|
-
|
|
212
|
-
## Event System Test
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
import { createAgentSession } from '@pencil-agent/nano-pencil'
|
|
216
|
-
|
|
217
|
-
async function testEventSystem() {
|
|
218
|
-
const events: string[] = []
|
|
219
|
-
|
|
220
|
-
const { session } = await createAgentSession({
|
|
221
|
-
silent: true,
|
|
222
|
-
inMemory: true,
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
// Subscribe to events
|
|
226
|
-
session.subscribe((event) => {
|
|
227
|
-
events.push(event.type)
|
|
228
|
-
})
|
|
229
|
-
|
|
230
|
-
await session.prompt('Hello')
|
|
231
|
-
|
|
232
|
-
// Expected events:
|
|
233
|
-
// - message_start
|
|
234
|
-
// - message_update (multiple)
|
|
235
|
-
// - message_end
|
|
236
|
-
// - turn_end
|
|
237
|
-
|
|
238
|
-
console.log('Events captured:', events)
|
|
239
|
-
console.log('Has message_start:', events.includes('message_start'))
|
|
240
|
-
console.log('Has turn_end:', events.includes('turn_end'))
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
testEventSystem()
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
---
|
|
247
|
-
|
|
248
|
-
## Error Handling
|
|
249
|
-
|
|
250
|
-
### SDK Error Event
|
|
251
|
-
|
|
252
|
-
```typescript
|
|
253
|
-
import { createAgentSession } from '@pencil-agent/nano-pencil'
|
|
254
|
-
|
|
255
|
-
async function testErrorHandling() {
|
|
256
|
-
const errors: any[] = []
|
|
257
|
-
|
|
258
|
-
const { session } = await createAgentSession({
|
|
259
|
-
silent: true,
|
|
260
|
-
inMemory: true,
|
|
261
|
-
enableSoul: true, // May trigger sdk:error if soul not available
|
|
262
|
-
})
|
|
263
|
-
|
|
264
|
-
session.subscribe((event) => {
|
|
265
|
-
if (event.type === 'sdk:error') {
|
|
266
|
-
errors.push(event)
|
|
267
|
-
}
|
|
268
|
-
})
|
|
269
|
-
|
|
270
|
-
console.log('SDK errors captured:', errors.length)
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
testErrorHandling()
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## Integration Test Checklist
|
|
279
|
-
|
|
280
|
-
| Test | Command | Expected |
|
|
281
|
-
|------|---------|----------|
|
|
282
|
-
| Build | `npm run build` | Success, no errors |
|
|
283
|
-
| Pack | `npm pack` | Tarball created |
|
|
284
|
-
| Types | `tsc test.ts --noEmit` | Success |
|
|
285
|
-
| Session | `createAgentSession()` | Returns session |
|
|
286
|
-
| PencilAgent | `new PencilAgent().init()` | Initializes |
|
|
287
|
-
| quickAgent | `quickAgent()` | Returns initialized agent |
|
|
288
|
-
| Run | `agent.run('hello')` | Returns string |
|
|
289
|
-
| Subscribe | `agent.subscribe(fn)` | Receives events |
|
|
290
|
-
| Logger | `{ logger: customLogger }` | Logs captured |
|
|
291
|
-
| Silent | `{ silent: true }` | No console output |
|
|
292
|
-
| Shutdown | `agent.shutdown()` | Session cleared |
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## Automated Test Script
|
|
297
|
-
|
|
298
|
-
```bash
|
|
299
|
-
#!/bin/bash
|
|
300
|
-
# scripts/verify-sdk.sh
|
|
301
|
-
|
|
302
|
-
set -e
|
|
303
|
-
|
|
304
|
-
echo "=== SDK Verification ==="
|
|
305
|
-
|
|
306
|
-
# Build
|
|
307
|
-
echo "1. Building..."
|
|
308
|
-
npm run build
|
|
309
|
-
|
|
310
|
-
# Pack
|
|
311
|
-
echo "2. Packing..."
|
|
312
|
-
npm pack
|
|
313
|
-
TARBALL=$(ls nanopencil-*.tgz | head -1)
|
|
314
|
-
echo "Tarball: $TARBALL"
|
|
315
|
-
|
|
316
|
-
# Test install
|
|
317
|
-
echo "3. Testing install..."
|
|
318
|
-
TEST_DIR=/tmp/sdk-test-$(date +%s)
|
|
319
|
-
mkdir -p $TEST_DIR
|
|
320
|
-
cd $TEST_DIR
|
|
321
|
-
npm install $OLDPWD/$TARBALL
|
|
322
|
-
|
|
323
|
-
# Verify exports
|
|
324
|
-
echo "4. Verifying exports..."
|
|
325
|
-
node -e "
|
|
326
|
-
const sdk = require('@pencil-agent/nano-pencil');
|
|
327
|
-
const exports = ['PencilAgent', 'quickAgent', 'createAgentSession', 'AgentSession', 'silentLogger', 'defaultLogger'];
|
|
328
|
-
for (const e of exports) {
|
|
329
|
-
if (!sdk[e]) throw new Error('Missing export: ' + e);
|
|
330
|
-
}
|
|
331
|
-
console.log('All exports OK');
|
|
332
|
-
"
|
|
333
|
-
|
|
334
|
-
# Cleanup
|
|
335
|
-
cd $OLDPWD
|
|
336
|
-
rm -rf $TEST_DIR
|
|
337
|
-
rm -f $TARBALL
|
|
338
|
-
|
|
339
|
-
echo "=== SDK Verification Complete ==="
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
## Known Limitations
|
|
345
|
-
|
|
346
|
-
1. **fork()**: Not supported in current version - use separate PencilAgent instances for parallel tasks
|
|
347
|
-
2. **Dynamic tool switching**: Requires session recreation - tools are set at init time
|
|
348
|
-
3. **Streaming API**: Use event subscription instead of async generators - `agent.subscribe()` captures `message_update` events
|
|
349
|
-
4. **Custom tools**: Must be passed via `createAgentSession({ customTools: [...] })` at creation time
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## Version Compatibility
|
|
354
|
-
|
|
355
|
-
- Node.js >= 20
|
|
356
|
-
- TypeScript >= 5.3
|
|
357
|
-
- ES Modules (type: "module" in package.json)
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## See Also
|
|
362
|
-
|
|
363
|
-
- [SDK.md](./SDK.md) - Full API documentation
|
|
364
|
-
- [API.md](./API.md) - Type definitions reference
|