@hasna/oldpal 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Hasna
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,134 @@
1
+ # oldpal
2
+
3
+ Your personal AI assistant - terminal first, voice enabled, connector powered.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ # Install globally with bun
9
+ bun install -g @hasnaxyz/oldpal
10
+
11
+ # Or with npm
12
+ npm install -g @hasnaxyz/oldpal
13
+
14
+ # Run
15
+ oldpal
16
+ ```
17
+
18
+ **Requirements:**
19
+ - [Bun](https://bun.sh) 1.0+ (runtime)
20
+ - `ANTHROPIC_API_KEY` environment variable
21
+
22
+ ## Features
23
+
24
+ - **Terminal-first**: Beautiful Ink-based TUI, just like Claude Code
25
+ - **Connector-powered**: Uses your existing `connect-*` CLIs (Notion, Google Drive, Gmail, etc.)
26
+ - **Skills**: Reusable instruction sets with `SKILL.md` files (Claude Code compatible)
27
+ - **Hooks**: Event-driven automation with command/prompt/agent hooks
28
+ - **Voice-ready**: ElevenLabs TTS + Whisper STT (coming soon)
29
+
30
+ ## Quick Start
31
+
32
+ ```bash
33
+ # Set your API key
34
+ export ANTHROPIC_API_KEY="your-key-here"
35
+
36
+ # Run oldpal
37
+ oldpal
38
+ ```
39
+
40
+ ## Configuration
41
+
42
+ ### User config (`~/.oldpal/settings.json`)
43
+
44
+ ```json
45
+ {
46
+ "llm": {
47
+ "provider": "anthropic",
48
+ "model": "claude-sonnet-4-20250514"
49
+ },
50
+ "connectors": ["notion", "googledrive", "gmail", "linear", "slack"]
51
+ }
52
+ ```
53
+
54
+ ### Project config (`.oldpal/settings.json`)
55
+
56
+ Override settings per-project.
57
+
58
+ ## Skills
59
+
60
+ Skills are reusable instructions in `SKILL.md` files:
61
+
62
+ ```yaml
63
+ ---
64
+ name: daily-standup
65
+ description: Generate daily standup from calendar and tasks
66
+ argument-hint: [date]
67
+ allowed-tools: bash, googlecalendar, linear
68
+ ---
69
+
70
+ ## Instructions
71
+
72
+ Generate a daily standup report for $ARGUMENTS...
73
+ ```
74
+
75
+ Invoke with `/skill-name` or let oldpal auto-invoke based on context.
76
+
77
+ ## Hooks
78
+
79
+ Hooks run at specific lifecycle points:
80
+
81
+ ```json
82
+ {
83
+ "hooks": {
84
+ "PreToolUse": [
85
+ {
86
+ "matcher": "bash",
87
+ "hooks": [
88
+ {
89
+ "type": "command",
90
+ "command": "./scripts/validate-command.sh"
91
+ }
92
+ ]
93
+ }
94
+ ]
95
+ }
96
+ }
97
+ ```
98
+
99
+ ## Development
100
+
101
+ ```bash
102
+ # Clone the repo
103
+ git clone https://github.com/hasnaxyz/oldpal.git
104
+ cd oldpal
105
+
106
+ # Install dependencies
107
+ pnpm install
108
+
109
+ # Run in development
110
+ pnpm dev
111
+
112
+ # Type check
113
+ pnpm typecheck
114
+
115
+ # Run tests
116
+ pnpm test
117
+
118
+ # Build
119
+ pnpm build
120
+ ```
121
+
122
+ ## Architecture
123
+
124
+ ```
125
+ packages/
126
+ ├── core/ # Agent loop, tools, skills, hooks, memory
127
+ ├── terminal/ # Ink-based TUI
128
+ ├── web/ # React web UI (future)
129
+ └── shared/ # Shared types and utilities
130
+ ```
131
+
132
+ ## License
133
+
134
+ MIT
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: calendar
3
+ description: View and manage Google Calendar events
4
+ argument-hint: [today|tomorrow|week|add "event"]
5
+ allowed-tools: bash, googlecalendar
6
+ ---
7
+
8
+ ## Instructions
9
+
10
+ Manage calendar events based on the command: $ARGUMENTS
11
+
12
+ ### Commands
13
+
14
+ **View today's events:**
15
+ ```bash
16
+ connect-googlecalendar events list --today
17
+ ```
18
+
19
+ **View tomorrow's events:**
20
+ ```bash
21
+ connect-googlecalendar events list --tomorrow
22
+ ```
23
+
24
+ **View this week's events:**
25
+ ```bash
26
+ connect-googlecalendar events list --week
27
+ ```
28
+
29
+ **Add an event:**
30
+ Parse the event details from the arguments and create the event:
31
+ ```bash
32
+ connect-googlecalendar events create "Event Title" --start "2025-01-31T10:00:00" --end "2025-01-31T11:00:00"
33
+ ```
34
+
35
+ ### Output Format
36
+
37
+ Present events in a clean list:
38
+ - **Time** - Event Title (Location if available)
39
+
40
+ For conflicts or busy periods, highlight them.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: email
3
+ description: Check and manage Gmail inbox
4
+ argument-hint: [inbox|unread|send "to" "subject" "body"]
5
+ allowed-tools: bash, gmail
6
+ ---
7
+
8
+ ## Instructions
9
+
10
+ Manage email based on the command: $ARGUMENTS
11
+
12
+ ### Commands
13
+
14
+ **View inbox:**
15
+ ```bash
16
+ connect-gmail messages list --max 10
17
+ ```
18
+
19
+ **View unread:**
20
+ ```bash
21
+ connect-gmail messages list --unread --max 10
22
+ ```
23
+
24
+ **Send email:**
25
+ Parse the recipient, subject, and body from arguments:
26
+ ```bash
27
+ connect-gmail messages send --to "recipient@example.com" --subject "Subject" --body "Body text"
28
+ ```
29
+
30
+ **Search emails:**
31
+ ```bash
32
+ connect-gmail messages search "query" --max 10
33
+ ```
34
+
35
+ ### Output Format
36
+
37
+ Present emails as:
38
+ - **From** | Subject | Date
39
+ Preview of body (first 100 chars)
40
+
41
+ Flag important or urgent emails.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: notes
3
+ description: Create and manage notes in Notion
4
+ argument-hint: [list|create "title"|search "query"]
5
+ allowed-tools: bash, notion
6
+ ---
7
+
8
+ ## Instructions
9
+
10
+ Manage notes in Notion based on the command: $ARGUMENTS
11
+
12
+ ### Commands
13
+
14
+ **List recent notes:**
15
+ ```bash
16
+ connect-notion pages list --max 10
17
+ ```
18
+
19
+ **Create a note:**
20
+ Parse the title and optional content from arguments:
21
+ ```bash
22
+ connect-notion pages create "PARENT_PAGE_ID" "Note Title" --content "Note content here"
23
+ ```
24
+
25
+ Note: You'll need to know the parent page ID. List pages first to find it.
26
+
27
+ **Search notes:**
28
+ ```bash
29
+ connect-notion search "query" --pages
30
+ ```
31
+
32
+ **Get note content:**
33
+ ```bash
34
+ connect-notion blocks children "PAGE_ID"
35
+ ```
36
+
37
+ ### Output Format
38
+
39
+ Present notes with:
40
+ - Title
41
+ - Last edited date
42
+ - Preview of content
43
+
44
+ For search results, show relevance highlights.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: search
3
+ description: Search the web for information using Exa
4
+ argument-hint: [query]
5
+ allowed-tools: bash, exa
6
+ ---
7
+
8
+ ## Instructions
9
+
10
+ Search the web for information about: $ARGUMENTS
11
+
12
+ Use the `connect-exa` CLI to perform the search:
13
+
14
+ ```bash
15
+ connect-exa search "$ARGUMENTS" --max 5
16
+ ```
17
+
18
+ Summarize the results in a clear, concise format with:
19
+ 1. Key findings
20
+ 2. Relevant links
21
+ 3. Any important caveats
22
+
23
+ If no results are found, suggest alternative search queries.
@@ -0,0 +1,15 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ {
5
+ "matcher": "*",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "echo '{\"continue\": true, \"additionalContext\": \"Session started at '$(date)'\"}'"
10
+ }
11
+ ]
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "llm": {
3
+ "provider": "anthropic",
4
+ "model": "claude-sonnet-4-20250514",
5
+ "maxTokens": 8192
6
+ },
7
+ "voice": {
8
+ "enabled": false,
9
+ "stt": {
10
+ "provider": "whisper",
11
+ "model": "whisper-1",
12
+ "language": "en"
13
+ },
14
+ "tts": {
15
+ "provider": "elevenlabs",
16
+ "voiceId": "",
17
+ "model": "eleven_turbo_v2_5"
18
+ }
19
+ },
20
+ "connectors": [
21
+ "notion",
22
+ "googledrive",
23
+ "gmail",
24
+ "googlecalendar",
25
+ "linear",
26
+ "slack"
27
+ ]
28
+ }