sqlew 3.5.3 → 3.6.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/CHANGELOG.md +247 -1772
- package/README.md +70 -304
- package/assets/config.example.toml +97 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +21 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mysql-adapter.d.ts +31 -0
- package/dist/adapters/mysql-adapter.d.ts.map +1 -0
- package/dist/adapters/mysql-adapter.js +63 -0
- package/dist/adapters/mysql-adapter.js.map +1 -0
- package/dist/adapters/postgresql-adapter.d.ts +31 -0
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -0
- package/dist/adapters/postgresql-adapter.js +63 -0
- package/dist/adapters/postgresql-adapter.js.map +1 -0
- package/dist/adapters/sqlite-adapter.d.ts +37 -0
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-adapter.js +129 -0
- package/dist/adapters/sqlite-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +33 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/cli.js +55 -54
- package/dist/cli.js.map +1 -1
- package/dist/config/example-generator.d.ts +11 -0
- package/dist/config/example-generator.d.ts.map +1 -0
- package/dist/config/example-generator.js +48 -0
- package/dist/config/example-generator.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +4 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database.d.ts +44 -122
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +145 -416
- package/dist/database.js.map +1 -1
- package/dist/index.js +215 -185
- package/dist/index.js.map +1 -1
- package/dist/knexfile.d.ts +6 -0
- package/dist/knexfile.d.ts.map +1 -0
- package/dist/knexfile.js +85 -0
- package/dist/knexfile.js.map +1 -0
- package/dist/migrations/add-help-system-tables.d.ts +35 -0
- package/dist/migrations/add-help-system-tables.d.ts.map +1 -0
- package/dist/migrations/add-help-system-tables.js +206 -0
- package/dist/migrations/add-help-system-tables.js.map +1 -0
- package/dist/migrations/add-token-tracking.d.ts +28 -0
- package/dist/migrations/add-token-tracking.d.ts.map +1 -0
- package/dist/migrations/add-token-tracking.js +108 -0
- package/dist/migrations/add-token-tracking.js.map +1 -0
- package/dist/migrations/index.d.ts +25 -12
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +147 -20
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/knex/20251025020452_create_master_tables.d.ts +4 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.js +65 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.js.map +1 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts +4 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.js +235 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/migrations/knex/20251025021351_create_indexes.d.ts +4 -0
- package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021351_create_indexes.js +62 -0
- package/dist/migrations/knex/20251025021351_create_indexes.js.map +1 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.d.ts +4 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.js +58 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.js.map +1 -0
- package/dist/migrations/knex/20251025070349_create_views.d.ts +4 -0
- package/dist/migrations/knex/20251025070349_create_views.d.ts.map +1 -0
- package/dist/migrations/knex/20251025070349_create_views.js +143 -0
- package/dist/migrations/knex/20251025070349_create_views.js.map +1 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts +4 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js +15 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts +8 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js +12 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts +19 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.js +115 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts +13 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js +377 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts +15 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.js +253 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts +16 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js +276 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts +8 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js +64 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/migrations/seed-help-data.d.ts +48 -0
- package/dist/migrations/seed-help-data.d.ts.map +1 -0
- package/dist/migrations/seed-help-data.js +1466 -0
- package/dist/migrations/seed-help-data.js.map +1 -0
- package/dist/migrations/seed-tool-metadata.d.ts +24 -0
- package/dist/migrations/seed-tool-metadata.d.ts.map +1 -0
- package/dist/migrations/seed-tool-metadata.js +392 -0
- package/dist/migrations/seed-tool-metadata.js.map +1 -0
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts +46 -0
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +1 -0
- package/dist/migrations/v3.6.0-help-system-refactor.js +223 -0
- package/dist/migrations/v3.6.0-help-system-refactor.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -1
- package/dist/tests/git-aware-completion.test.js +89 -70
- package/dist/tests/git-aware-completion.test.js.map +1 -1
- package/dist/tests/help-system.test.d.ts +23 -0
- package/dist/tests/help-system.test.d.ts.map +1 -0
- package/dist/tests/help-system.test.js +374 -0
- package/dist/tests/help-system.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-decision-link.test.js +92 -78
- package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-partial.test.js +106 -95
- package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-persistence.test.js +115 -97
- package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-safety.test.js +124 -103
- package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -1
- package/dist/tests/tasks.dependencies.test.js +338 -307
- package/dist/tests/tasks.dependencies.test.js.map +1 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js +116 -104
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +122 -101
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-parameter.test.js +105 -94
- package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
- package/dist/tests/two-step-git-completion.test.js +176 -133
- package/dist/tests/two-step-git-completion.test.js.map +1 -1
- package/dist/tests/vcs-staging.test.js +1 -1
- package/dist/tests/vcs-staging.test.js.map +1 -1
- package/dist/tools/config.d.ts +9 -6
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +16 -14
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/constraints.d.ts +10 -7
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +66 -48
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts +36 -33
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +374 -330
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts +12 -9
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +173 -95
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/help-queries.d.ts +130 -0
- package/dist/tools/help-queries.d.ts.map +1 -0
- package/dist/tools/help-queries.js +393 -0
- package/dist/tools/help-queries.js.map +1 -0
- package/dist/tools/messaging.d.ts +14 -11
- package/dist/tools/messaging.d.ts.map +1 -1
- package/dist/tools/messaging.js +217 -133
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/tasks.d.ts +18 -16
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +513 -439
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +14 -11
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +86 -121
- package/dist/tools/utils.js.map +1 -1
- package/dist/utils/activity-logging.d.ts +114 -0
- package/dist/utils/activity-logging.d.ts.map +1 -0
- package/dist/utils/activity-logging.js +162 -0
- package/dist/utils/activity-logging.js.map +1 -0
- package/dist/utils/batch.d.ts +2 -2
- package/dist/utils/batch.d.ts.map +1 -1
- package/dist/utils/batch.js +8 -8
- package/dist/utils/batch.js.map +1 -1
- package/dist/utils/cleanup.d.ts +21 -13
- package/dist/utils/cleanup.d.ts.map +1 -1
- package/dist/utils/cleanup.js +31 -24
- package/dist/utils/cleanup.js.map +1 -1
- package/dist/utils/debug-logger.d.ts +44 -0
- package/dist/utils/debug-logger.d.ts.map +1 -0
- package/dist/utils/debug-logger.js +116 -0
- package/dist/utils/debug-logger.js.map +1 -0
- package/dist/utils/help-tracking.d.ts +55 -0
- package/dist/utils/help-tracking.d.ts.map +1 -0
- package/dist/utils/help-tracking.js +88 -0
- package/dist/utils/help-tracking.js.map +1 -0
- package/dist/utils/retention.d.ts +7 -7
- package/dist/utils/retention.d.ts.map +1 -1
- package/dist/utils/retention.js +12 -12
- package/dist/utils/retention.js.map +1 -1
- package/dist/utils/task-stale-detection.d.ts +15 -13
- package/dist/utils/task-stale-detection.d.ts.map +1 -1
- package/dist/utils/task-stale-detection.js +100 -302
- package/dist/utils/task-stale-detection.js.map +1 -1
- package/dist/utils/token-estimation.d.ts +72 -0
- package/dist/utils/token-estimation.d.ts.map +1 -0
- package/dist/utils/token-estimation.js +71 -0
- package/dist/utils/token-estimation.js.map +1 -0
- package/dist/utils/token-logging.d.ts +48 -0
- package/dist/utils/token-logging.d.ts.map +1 -0
- package/dist/utils/token-logging.js +112 -0
- package/dist/utils/token-logging.js.map +1 -0
- package/dist/utils/view-queries.d.ts +34 -0
- package/dist/utils/view-queries.d.ts.map +1 -0
- package/dist/utils/view-queries.js +192 -0
- package/dist/utils/view-queries.js.map +1 -0
- package/dist/watcher/file-watcher.d.ts.map +1 -1
- package/dist/watcher/file-watcher.js +25 -11
- package/dist/watcher/file-watcher.js.map +1 -1
- package/docs/BEST_PRACTICES.md +56 -448
- package/docs/MIGRATION_v3.6.0.md +170 -0
- package/docs/SHARED_CONCEPTS.md +63 -208
- package/docs/TASK_OVERVIEW.md +2 -2
- package/docs/TOOL_SELECTION.md +41 -248
- package/package.json +16 -4
package/README.md
CHANGED
|
@@ -8,82 +8,37 @@
|
|
|
8
8
|
|
|
9
9
|
## What is sqlew?
|
|
10
10
|
|
|
11
|
-
**sqlew** is a Model Context Protocol (MCP) server that gives AI agents organizational memory
|
|
11
|
+
**sqlew** is a Model Context Protocol (MCP) server that gives AI agents organizational memory across sessions.
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
**The Problem:** Without sqlew, every Claude session starts with zero context. You must re-explain decisions, agents can reintroduce bugs, and there's no way to track WHY decisions were made.
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- 🔴 Every new Claude session starts with zero context
|
|
17
|
-
- 🔴 Must re-explain architectural decisions every time
|
|
18
|
-
- 🔴 Agents can reintroduce bugs that were already fixed
|
|
19
|
-
- 🔴 No way to track WHY decisions were made
|
|
15
|
+
**The Solution:** sqlew lets agents remember decisions, query past context, prevent regressions with constraints, and coordinate via messaging and tasks.
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
With sqlew, AI agents can:
|
|
24
|
-
- ✅ **Remember** architectural decisions across sessions
|
|
25
|
-
- ✅ **Query** past context: "What breaking changes were made to the API?"
|
|
26
|
-
- ✅ **Prevent** regressions by storing constraints: "Duration must NOT occur in Loom module"
|
|
27
|
-
- ✅ **Coordinate** between multiple agents with messaging and task tracking
|
|
28
|
-
|
|
29
|
-
**Real-World Example:**
|
|
30
|
-
```typescript
|
|
31
|
-
// Agent in Session 1 records:
|
|
32
|
-
{
|
|
33
|
-
key: "api_v1_deprecated",
|
|
34
|
-
value: "/v1/users endpoint deprecated, use /v2/users",
|
|
35
|
-
tags: ["api", "breaking-change"]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Agent in Session 2 (days later) queries:
|
|
39
|
-
"What API changes should I know about?"
|
|
40
|
-
→ Finds the deprecation decision
|
|
41
|
-
→ Uses /v2/users endpoint automatically!
|
|
42
|
-
```
|
|
17
|
+
**Example:** Session 1 records "API v1 deprecated". Session 2 (days later) queries and automatically uses v2.
|
|
43
18
|
|
|
44
19
|
## Why Use sqlew?
|
|
45
20
|
|
|
46
21
|
### 🧠 Organizational Memory
|
|
47
|
-
Traditional code
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
- **sqlew decisions** → **WHY** it was changed
|
|
51
|
-
- **sqlew constraints** → **WHY** it must work this way
|
|
22
|
+
Traditional code tells you **WHAT** and **HOW**. sqlew adds **WHY**:
|
|
23
|
+
- **Decisions** → WHY it was changed
|
|
24
|
+
- **Constraints** → WHY it must work this way
|
|
52
25
|
|
|
53
26
|
### ⚡ Token Efficiency
|
|
54
|
-
**60-75% token reduction** in multi-session projects
|
|
55
|
-
- Store decisions once, query selectively
|
|
56
|
-
- Structured data (20-30 tokens) vs prose (50-200 tokens)
|
|
57
|
-
- Cross-session persistence eliminates context re-explanation
|
|
27
|
+
**60-75% token reduction** in multi-session projects through structured data storage and selective querying.
|
|
58
28
|
|
|
59
29
|
### 🎯 Key Features
|
|
60
30
|
- **7 Specialized Tools**: decisions, messages, tasks, files, constraints, stats, config
|
|
61
31
|
- **Metadata-Driven**: Tag, layer, scope, and version everything
|
|
62
|
-
- **Decision Context
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
- **
|
|
68
|
-
- Sequential workflow management (API before UI, DB before ORM)
|
|
69
|
-
- Bidirectional queries (find blockers and blocking tasks)
|
|
70
|
-
- Token-efficient metadata-only queries (~88% reduction)
|
|
71
|
-
- **Auto-File Tracking** (v3.0.2): Zero-token task management via automatic file watching
|
|
72
|
-
- Auto-transition: `todo` → `in_progress` on file edit
|
|
73
|
-
- Auto-complete: `in_progress` → `done` when acceptance criteria pass
|
|
74
|
-
- 97% token reduction (4,650 tokens saved per 6-task session)
|
|
75
|
-
- **Smart Review Detection** (v3.4.1): Quality-based auto-transition to `waiting_review`
|
|
76
|
-
- All watched files modified + TypeScript compiles + Tests pass + 15min idle
|
|
77
|
-
- Purely algorithmic - no AI instructions needed
|
|
78
|
-
- Configurable quality gates via `.sqlew/config.toml`
|
|
79
|
-
- Hybrid mode: Tasks with acceptance_criteria skip review → go directly to `done`
|
|
80
|
-
- **Auto-Stale Detection & Auto-Archive**: Tasks automatically transition when idle
|
|
81
|
-
- `in_progress` → `waiting_review` (quality gates or >2 hours idle)
|
|
82
|
-
- `waiting_review` → `todo` (>24 hours idle)
|
|
83
|
-
- `done` → `archived` (>48 hours idle, weekend-aware)
|
|
84
|
-
- **Weekend-Aware Cleanup**: Smart retention that pauses during weekends
|
|
32
|
+
- **Decision Context**: Document WHY with rationale, alternatives, and trade-offs
|
|
33
|
+
- **Task Dependencies**: Blocking relationships with circular detection
|
|
34
|
+
- **Auto-File Tracking**: Zero-token task management via file watching
|
|
35
|
+
- **Smart Review Detection**: Quality-based auto-transition to `waiting_review`
|
|
36
|
+
- **Auto-Stale Detection**: Tasks auto-transition when idle
|
|
37
|
+
- **Weekend-Aware Cleanup**: Smart retention during weekends
|
|
85
38
|
- **Batch Operations**: Process up to 50 items atomically
|
|
86
39
|
|
|
40
|
+
See [docs/TASK_OVERVIEW.md](docs/TASK_OVERVIEW.md) and [docs/DECISION_CONTEXT.md](docs/DECISION_CONTEXT.md) for details.
|
|
41
|
+
|
|
87
42
|
### 🔖Kanban-style AI Scrum
|
|
88
43
|

|
|
89
44
|
|
|
@@ -114,104 +69,46 @@ Edit `claude_desktop_config.json`:
|
|
|
114
69
|
}
|
|
115
70
|
```
|
|
116
71
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
### Custom Database Path (Optional)
|
|
120
|
-
|
|
121
|
-
```json
|
|
122
|
-
{
|
|
123
|
-
"mcpServers": {
|
|
124
|
-
"sqlew": {
|
|
125
|
-
"command": "npx",
|
|
126
|
-
"args": ["sqlew", "/path/to/database.db"]
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
```
|
|
72
|
+
Restart Claude Desktop. Done!
|
|
131
73
|
|
|
132
|
-
|
|
74
|
+
**Custom database path:** Add path as argument: `"args": ["sqlew", "/path/to/db.db"]`
|
|
75
|
+
**Default location:** `.sqlew/sqlew.db`
|
|
133
76
|
|
|
134
77
|
## Configuration
|
|
135
78
|
|
|
136
79
|
### Optional Config File
|
|
137
80
|
|
|
138
|
-
|
|
81
|
+
Create `.sqlew/config.toml` for persistent settings:
|
|
139
82
|
|
|
140
83
|
```toml
|
|
141
84
|
[database]
|
|
142
|
-
path = ".sqlew/custom.db"
|
|
85
|
+
path = ".sqlew/custom.db"
|
|
143
86
|
|
|
144
87
|
[autodelete]
|
|
145
|
-
ignore_weekend = true
|
|
146
|
-
message_hours = 48
|
|
147
|
-
file_history_days = 14 # Keep file history 14 days
|
|
148
|
-
|
|
149
|
-
[tasks]
|
|
150
|
-
auto_archive_done_days = 2
|
|
151
|
-
stale_hours_in_progress = 2
|
|
152
|
-
auto_stale_enabled = true
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**Setup:**
|
|
156
|
-
```bash
|
|
157
|
-
# Copy example config
|
|
158
|
-
cp .sqlew/config.toml.example .sqlew/config.toml
|
|
159
|
-
|
|
160
|
-
# Edit settings
|
|
161
|
-
nano .sqlew/config.toml
|
|
162
|
-
|
|
163
|
-
# Start sqlew (automatically loads config)
|
|
164
|
-
npx sqlew
|
|
88
|
+
ignore_weekend = true
|
|
89
|
+
message_hours = 48
|
|
165
90
|
```
|
|
166
91
|
|
|
167
92
|
**Priority:** CLI args > config.toml > database defaults
|
|
168
93
|
|
|
169
|
-
|
|
170
|
-
- All configuration options and validation rules
|
|
171
|
-
- Common configurations (dev/prod/weekend-aware)
|
|
172
|
-
- Runtime updates via MCP tools
|
|
173
|
-
- Troubleshooting
|
|
94
|
+
See [docs/CONFIGURATION.md](docs/CONFIGURATION.md) for all options and validation rules.
|
|
174
95
|
|
|
175
96
|
## Quick Start
|
|
176
97
|
|
|
177
|
-
### For AI Agents
|
|
178
|
-
|
|
179
|
-
⚠️ **Most Important Rule**: ALWAYS include the `action` parameter in every tool call.
|
|
180
|
-
|
|
181
|
-
```javascript
|
|
182
|
-
// ❌ WRONG
|
|
183
|
-
{key: "auth_method", value: "jwt"}
|
|
184
|
-
|
|
185
|
-
// ✅ CORRECT
|
|
186
|
-
{action: "set", key: "auth_method", value: "jwt", layer: "business"}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
98
|
### Basic Usage
|
|
190
99
|
|
|
100
|
+
All tools require an `action` parameter. Example:
|
|
101
|
+
|
|
191
102
|
```javascript
|
|
192
103
|
// Store a decision
|
|
193
|
-
{
|
|
194
|
-
action: "set",
|
|
195
|
-
key: "auth_method",
|
|
196
|
-
value: "JWT with refresh tokens",
|
|
197
|
-
layer: "business",
|
|
198
|
-
tags: ["authentication", "security"]
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Query it later
|
|
202
|
-
{
|
|
203
|
-
action: "get",
|
|
204
|
-
key: "auth_method"
|
|
205
|
-
}
|
|
104
|
+
{action: "set", key: "auth_method", value: "JWT", layer: "business", tags: ["security"]}
|
|
206
105
|
|
|
207
|
-
//
|
|
208
|
-
{
|
|
209
|
-
action: "search_tags",
|
|
210
|
-
tags: ["security"],
|
|
211
|
-
status: "active"
|
|
212
|
-
}
|
|
106
|
+
// Query later
|
|
107
|
+
{action: "get", key: "auth_method"}
|
|
213
108
|
```
|
|
214
109
|
|
|
110
|
+
For detailed examples, see [docs/TOOL_REFERENCE.md](docs/TOOL_REFERENCE.md).
|
|
111
|
+
|
|
215
112
|
### Available Tools
|
|
216
113
|
|
|
217
114
|
| Tool | Purpose | Example Use |
|
|
@@ -230,157 +127,49 @@ Each tool supports `action: "help"` for full documentation and `action: "example
|
|
|
230
127
|
|
|
231
128
|
### On-Demand Documentation
|
|
232
129
|
|
|
233
|
-
|
|
234
|
-
- `action: "help"` -
|
|
235
|
-
- `action: "example"` -
|
|
130
|
+
All tools support:
|
|
131
|
+
- `action: "help"` - Parameter reference and descriptions
|
|
132
|
+
- `action: "example"` - Usage scenarios and examples
|
|
236
133
|
|
|
237
|
-
|
|
238
|
-
```javascript
|
|
239
|
-
// Get detailed help for decision tool
|
|
240
|
-
{action: "help"}
|
|
241
|
-
|
|
242
|
-
// Get comprehensive examples for task tool
|
|
243
|
-
{action: "example"}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### For AI Agents (68% Token Reduction)
|
|
134
|
+
### For AI Agents
|
|
247
135
|
|
|
248
|
-
**
|
|
249
|
-
-
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
136
|
+
**Essential Guides:**
|
|
137
|
+
- [Tool Selection](docs/TOOL_SELECTION.md) - Decision tree, when to use each tool
|
|
138
|
+
- [Workflows](docs/WORKFLOWS.md) - Multi-step examples, multi-agent coordination
|
|
139
|
+
- [Tool Reference](docs/TOOL_REFERENCE.md) - Parameters, batch operations, templates
|
|
140
|
+
- [Best Practices](docs/BEST_PRACTICES.md) - Common errors, troubleshooting
|
|
253
141
|
|
|
254
142
|
**Task System:**
|
|
255
|
-
-
|
|
256
|
-
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
|
|
261
|
-
**
|
|
262
|
-
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
-
|
|
270
|
-
- ⚙️ **[Configuration](docs/CONFIGURATION.md)** - Config file setup, all options, validation rules (800+ lines, ~20k tokens) **NEW v3.4.1**
|
|
271
|
-
- 🏗️ **[Architecture](docs/ARCHITECTURE.md)** - Technical architecture and database schema
|
|
143
|
+
- [Task Overview](docs/TASK_OVERVIEW.md) - Lifecycle, status transitions
|
|
144
|
+
- [Task Actions](docs/TASK_ACTIONS.md) - All actions with examples
|
|
145
|
+
- [Task Dependencies](docs/TASK_DEPENDENCIES.md) - Blocking relationships
|
|
146
|
+
- [Task Linking](docs/TASK_LINKING.md) - Link to decisions/constraints/files
|
|
147
|
+
- [Task Migration](docs/TASK_MIGRATION.md) - Migrate from decision-based tracking
|
|
148
|
+
|
|
149
|
+
**Advanced Features:**
|
|
150
|
+
- [Decision Context](docs/DECISION_CONTEXT.md) - Rich decision documentation
|
|
151
|
+
- [Auto File Tracking](docs/AUTO_FILE_TRACKING.md) - Zero-token task management
|
|
152
|
+
- [Acceptance Criteria](docs/ACCEPTANCE_CRITERIA.md) - All check types
|
|
153
|
+
|
|
154
|
+
**Reference:**
|
|
155
|
+
- [Shared Concepts](docs/SHARED_CONCEPTS.md) - Layer definitions, enum values
|
|
156
|
+
- [Configuration](docs/CONFIGURATION.md) - Config file setup, all options
|
|
157
|
+
- [Architecture](docs/ARCHITECTURE.md) - Technical architecture
|
|
272
158
|
|
|
273
159
|
### For Developers
|
|
274
160
|
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
278
|
-
- **[CLI Tool](docs/AI_AGENT_GUIDE.md#cli-usage)** - Query database from terminal
|
|
161
|
+
- [Configuration Guide](docs/CONFIGURATION.md) - TOML config file setup
|
|
162
|
+
- [Building from Source](docs/ARCHITECTURE.md#development) - Setup instructions
|
|
163
|
+
- [Migration Guides](docs/MIGRATION_v2.md) - Version upgrade guides
|
|
279
164
|
|
|
280
|
-
##
|
|
165
|
+
## Use Cases
|
|
281
166
|
|
|
282
|
-
|
|
167
|
+
- **Multi-Agent Coordination**: Orchestrators create tasks, agents send status updates
|
|
168
|
+
- **Breaking Change Management**: Record deprecations and add architectural constraints
|
|
169
|
+
- **Decision Context**: Document rationale, alternatives considered, and trade-offs
|
|
170
|
+
- **Session Continuity**: Save progress in Session 1, resume in Session 2
|
|
283
171
|
|
|
284
|
-
|
|
285
|
-
// Orchestrator creates tasks
|
|
286
|
-
{
|
|
287
|
-
action: "batch_create",
|
|
288
|
-
tasks: [
|
|
289
|
-
{title: "Setup database", assigned_agent: "db-agent"},
|
|
290
|
-
{title: "Create API", assigned_agent: "api-agent"}
|
|
291
|
-
]
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// Agents send status updates
|
|
295
|
-
{
|
|
296
|
-
action: "send",
|
|
297
|
-
from_agent: "db-agent",
|
|
298
|
-
to_agent: "orchestrator",
|
|
299
|
-
message: "Database ready",
|
|
300
|
-
priority: "high"
|
|
301
|
-
}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### Breaking Change Management
|
|
305
|
-
|
|
306
|
-
```javascript
|
|
307
|
-
// Record deprecation
|
|
308
|
-
{
|
|
309
|
-
action: "set",
|
|
310
|
-
key: "api_v1_deprecated",
|
|
311
|
-
value: "/v1 endpoints deprecated, use /v2",
|
|
312
|
-
tags: ["breaking-change", "api"]
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// Add constraint
|
|
316
|
-
{
|
|
317
|
-
action: "add",
|
|
318
|
-
category: "architecture",
|
|
319
|
-
constraint_text: "All endpoints must use /v2 prefix",
|
|
320
|
-
priority: "high"
|
|
321
|
-
}
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### Decision Context (v3.2.2)
|
|
325
|
-
|
|
326
|
-
```javascript
|
|
327
|
-
// Record a decision with rich context
|
|
328
|
-
{
|
|
329
|
-
action: "set",
|
|
330
|
-
key: "database_choice",
|
|
331
|
-
value: "PostgreSQL over MongoDB",
|
|
332
|
-
layer: "data",
|
|
333
|
-
tags: ["architecture", "database"]
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
// Add rationale and tradeoffs
|
|
337
|
-
{
|
|
338
|
-
action: "add_decision_context",
|
|
339
|
-
key: "database_choice",
|
|
340
|
-
rationale: "Selected PostgreSQL because: (1) Complex relational queries required for reporting, (2) ACID compliance critical for financial data, (3) Team has strong SQL expertise",
|
|
341
|
-
alternatives_considered: [
|
|
342
|
-
{
|
|
343
|
-
option: "MongoDB",
|
|
344
|
-
reason: "Rejected due to weak consistency guarantees for financial data"
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
option: "MySQL",
|
|
348
|
-
reason: "Rejected due to limited JSON support needed for metadata"
|
|
349
|
-
}
|
|
350
|
-
],
|
|
351
|
-
tradeoffs: {
|
|
352
|
-
pros: ["Strong consistency", "Complex queries", "Team expertise"],
|
|
353
|
-
cons: ["Less flexible schema", "Vertical scaling limitations"]
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// Retrieve decision with full context
|
|
358
|
-
{
|
|
359
|
-
action: "get",
|
|
360
|
-
key: "database_choice",
|
|
361
|
-
include_context: true
|
|
362
|
-
}
|
|
363
|
-
// → Returns decision + rationale + alternatives + tradeoffs
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
### Session Continuity
|
|
367
|
-
|
|
368
|
-
```javascript
|
|
369
|
-
// Session 1: Save state
|
|
370
|
-
{
|
|
371
|
-
action: "set",
|
|
372
|
-
key: "refactor_progress",
|
|
373
|
-
value: "Completed 3/5 modules",
|
|
374
|
-
tags: ["session-state"]
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
// Session 2: Resume work
|
|
378
|
-
{
|
|
379
|
-
action: "get",
|
|
380
|
-
key: "refactor_progress"
|
|
381
|
-
}
|
|
382
|
-
// → Returns: "Completed 3/5 modules"
|
|
383
|
-
```
|
|
172
|
+
See [docs/WORKFLOWS.md](docs/WORKFLOWS.md) for detailed multi-step examples.
|
|
384
173
|
|
|
385
174
|
## Performance
|
|
386
175
|
|
|
@@ -389,20 +178,9 @@ Each tool supports `action: "help"` for full documentation and `action: "example
|
|
|
389
178
|
- **Storage efficiency**: ~140 bytes per decision
|
|
390
179
|
- **Token savings**: 60-75% in typical projects
|
|
391
180
|
|
|
392
|
-
##
|
|
393
|
-
|
|
394
|
-
### One-time Support
|
|
395
|
-
Perfect for trying out sponsorship!
|
|
396
|
-
- ☕ $5 - Buy me a coffee
|
|
397
|
-
- 🍕 $10 - Buy me a pizza
|
|
398
|
-
|
|
399
|
-
### Monthly Support
|
|
400
|
-
For ongoing development support:
|
|
401
|
-
- ⭐ $1/month - Support Continual Development
|
|
402
|
-
- 🚀 $5/month - Active support for Request
|
|
403
|
-
- 💼 $10/month - Buy me more AI tokens
|
|
181
|
+
## Support
|
|
404
182
|
|
|
405
|
-
|
|
183
|
+
Support development via [GitHub Sponsors](https://github.com/sponsors/sin5ddd) - One-time or monthly options available.
|
|
406
184
|
|
|
407
185
|
## Version
|
|
408
186
|
|
|
@@ -411,19 +189,7 @@ See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
|
411
189
|
|
|
412
190
|
## License
|
|
413
191
|
|
|
414
|
-
AGPLv3 -
|
|
415
|
-
|
|
416
|
-
See [LICENSE](LICENSE) file for details.
|
|
417
|
-
|
|
418
|
-
**Free to use for:**
|
|
419
|
-
- Personal and commercial projects
|
|
420
|
-
- Using sqlew as-is in Claude Desktop
|
|
421
|
-
- Managing AI agent context
|
|
422
|
-
|
|
423
|
-
**Open-source required when:**
|
|
424
|
-
- Embedding sqlew into your application
|
|
425
|
-
- Modifying and distributing sqlew
|
|
426
|
-
- Offering sqlew as a network service
|
|
192
|
+
AGPLv3 - Free to use. Open-source required when embedding or modifying. See [LICENSE](LICENSE) for details.
|
|
427
193
|
|
|
428
194
|
## Links
|
|
429
195
|
|
|
@@ -431,10 +197,10 @@ See [LICENSE](LICENSE) file for details.
|
|
|
431
197
|
- [GitHub repository](https://github.com/sin5ddd/mcp-sqlew)
|
|
432
198
|
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
433
199
|
|
|
434
|
-
## Support
|
|
200
|
+
## Support & Documentation
|
|
435
201
|
|
|
436
|
-
-
|
|
437
|
-
-
|
|
202
|
+
- Issues: [GitHub Issues](https://github.com/sin5ddd/mcp-sqlew/issues)
|
|
203
|
+
- Docs: [docs/](docs/) directory
|
|
438
204
|
|
|
439
205
|
## Acknowledgments
|
|
440
206
|
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# sqlew Configuration File
|
|
2
|
+
# Copy this file to .sqlew/config.toml and customize as needed
|
|
3
|
+
#
|
|
4
|
+
# Priority: CLI arguments > config.toml > database m_config > defaults
|
|
5
|
+
# Documentation: docs/CONFIGURATION.md
|
|
6
|
+
|
|
7
|
+
# ============================================================================
|
|
8
|
+
# Database Settings
|
|
9
|
+
# ============================================================================
|
|
10
|
+
[database]
|
|
11
|
+
# Database file path (relative to project root or absolute)
|
|
12
|
+
# Default: ".sqlew/sqlew.db"
|
|
13
|
+
# path = ".sqlew/custom.db"
|
|
14
|
+
# path = "/absolute/path/to/database.db"
|
|
15
|
+
|
|
16
|
+
# ============================================================================
|
|
17
|
+
# Auto-Deletion Settings
|
|
18
|
+
# ============================================================================
|
|
19
|
+
[autodelete]
|
|
20
|
+
# Skip weekends when calculating retention periods
|
|
21
|
+
# When true: 24 hours on Monday = previous Friday (skips Sat/Sun)
|
|
22
|
+
# When false: 24 hours = exactly 24 hours ago
|
|
23
|
+
# Default: false
|
|
24
|
+
ignore_weekend = false
|
|
25
|
+
|
|
26
|
+
# Message retention period in hours (1-720)
|
|
27
|
+
# Messages older than this are automatically deleted
|
|
28
|
+
# Default: 24 (1 day)
|
|
29
|
+
message_hours = 24
|
|
30
|
+
|
|
31
|
+
# File change history retention in days (1-365)
|
|
32
|
+
# File changes older than this are automatically deleted
|
|
33
|
+
# Default: 7 (1 week)
|
|
34
|
+
file_history_days = 7
|
|
35
|
+
|
|
36
|
+
# ============================================================================
|
|
37
|
+
# Debug Logging Settings (v3.5.4)
|
|
38
|
+
# ============================================================================
|
|
39
|
+
[debug]
|
|
40
|
+
# Debug log file path (optional)
|
|
41
|
+
# When set, enables detailed debug logging for troubleshooting
|
|
42
|
+
# Environment variable SQLEW_DEBUG takes precedence over this setting
|
|
43
|
+
# Default: not set (logging disabled)
|
|
44
|
+
# log_path = "/home/user/.sqlew/debug.log"
|
|
45
|
+
# log_path = ".sqlew/debug.log"
|
|
46
|
+
|
|
47
|
+
# ============================================================================
|
|
48
|
+
# Task Management Settings
|
|
49
|
+
# ============================================================================
|
|
50
|
+
[tasks]
|
|
51
|
+
# Auto-archive done tasks after N days (1-365)
|
|
52
|
+
# Tasks in 'done' status older than this are moved to 'archived'
|
|
53
|
+
# Keeps task list clean while preserving history
|
|
54
|
+
# Default: 2 (48 hours)
|
|
55
|
+
auto_archive_done_days = 2
|
|
56
|
+
|
|
57
|
+
# Stale detection threshold for 'in_progress' tasks (hours, 1-168)
|
|
58
|
+
# Tasks stuck in 'in_progress' longer than this → move to 'waiting_review'
|
|
59
|
+
# Helps recover from interrupted AI sessions
|
|
60
|
+
# Default: 2 (2 hours)
|
|
61
|
+
stale_hours_in_progress = 2
|
|
62
|
+
|
|
63
|
+
# Stale detection threshold for 'waiting_review' tasks (hours, 1-720)
|
|
64
|
+
# Tasks stuck in 'waiting_review' longer than this → move back to 'todo'
|
|
65
|
+
# Prevents abandoned reviews from blocking workflow
|
|
66
|
+
# Default: 24 (1 day)
|
|
67
|
+
stale_hours_waiting_review = 24
|
|
68
|
+
|
|
69
|
+
# Enable automatic stale detection
|
|
70
|
+
# When true: Runs stale detection on startup and before task operations
|
|
71
|
+
# When false: Stale detection disabled (manual only)
|
|
72
|
+
# Default: true
|
|
73
|
+
auto_stale_enabled = true
|
|
74
|
+
|
|
75
|
+
# ============================================================================
|
|
76
|
+
# Example Configurations
|
|
77
|
+
# ============================================================================
|
|
78
|
+
|
|
79
|
+
# Aggressive cleanup (development)
|
|
80
|
+
# [autodelete]
|
|
81
|
+
# message_hours = 1
|
|
82
|
+
# file_history_days = 1
|
|
83
|
+
# [tasks]
|
|
84
|
+
# auto_archive_done_days = 1
|
|
85
|
+
|
|
86
|
+
# Conservative cleanup (production)
|
|
87
|
+
# [autodelete]
|
|
88
|
+
# message_hours = 168 # 7 days
|
|
89
|
+
# file_history_days = 30
|
|
90
|
+
# [tasks]
|
|
91
|
+
# auto_archive_done_days = 7
|
|
92
|
+
|
|
93
|
+
# Weekend-aware workflow (for developers)
|
|
94
|
+
# [autodelete]
|
|
95
|
+
# ignore_weekend = true
|
|
96
|
+
# message_hours = 48
|
|
97
|
+
# file_history_days = 14
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type { DatabaseAdapter } from './types.js';
|
|
2
|
+
import { SQLiteAdapter } from './sqlite-adapter.js';
|
|
3
|
+
import { PostgreSQLAdapter } from './postgresql-adapter.js';
|
|
4
|
+
import { MySQLAdapter } from './mysql-adapter.js';
|
|
5
|
+
import type { DatabaseAdapter } from './types.js';
|
|
6
|
+
export { SQLiteAdapter, PostgreSQLAdapter, MySQLAdapter };
|
|
7
|
+
/**
|
|
8
|
+
* Factory function to create database adapter
|
|
9
|
+
*/
|
|
10
|
+
export declare function createDatabaseAdapter(databaseType: 'sqlite' | 'postgresql' | 'mysql'): DatabaseAdapter;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAE1D;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,GAC9C,eAAe,CAWjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Import adapter implementations
|
|
2
|
+
import { SQLiteAdapter } from './sqlite-adapter.js';
|
|
3
|
+
import { PostgreSQLAdapter } from './postgresql-adapter.js';
|
|
4
|
+
import { MySQLAdapter } from './mysql-adapter.js';
|
|
5
|
+
export { SQLiteAdapter, PostgreSQLAdapter, MySQLAdapter };
|
|
6
|
+
/**
|
|
7
|
+
* Factory function to create database adapter
|
|
8
|
+
*/
|
|
9
|
+
export function createDatabaseAdapter(databaseType) {
|
|
10
|
+
switch (databaseType) {
|
|
11
|
+
case 'sqlite':
|
|
12
|
+
return new SQLiteAdapter();
|
|
13
|
+
case 'postgresql':
|
|
14
|
+
return new PostgreSQLAdapter();
|
|
15
|
+
case 'mysql':
|
|
16
|
+
return new MySQLAdapter();
|
|
17
|
+
default:
|
|
18
|
+
throw new Error(`Unsupported database type: ${databaseType}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAIA,iCAAiC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAA+C;IAE/C,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,IAAI,aAAa,EAAE,CAAC;QAC7B,KAAK,YAAY;YACf,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,IAAI,YAAY,EAAE,CAAC;QAC5B;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Knex } from 'knex';
|
|
2
|
+
import type { DatabaseAdapter } from './types.js';
|
|
3
|
+
export declare class MySQLAdapter implements DatabaseAdapter {
|
|
4
|
+
private knexInstance;
|
|
5
|
+
readonly supportsReturning = false;
|
|
6
|
+
readonly supportsJSON = true;
|
|
7
|
+
readonly supportsUpsert = true;
|
|
8
|
+
readonly supportsCTE = true;
|
|
9
|
+
readonly supportsWindowFunctions = true;
|
|
10
|
+
readonly supportsSavepoints = true;
|
|
11
|
+
readonly databaseName: "mysql";
|
|
12
|
+
connect(config: Knex.Config): Promise<Knex>;
|
|
13
|
+
disconnect(): Promise<void>;
|
|
14
|
+
getKnex(): Knex;
|
|
15
|
+
insertReturning<T extends Record<string, any>>(table: string, data: Partial<T>): Promise<T>;
|
|
16
|
+
upsert<T extends Record<string, any>>(table: string, data: Partial<T>, conflictColumns: string[], updateColumns?: string[]): Promise<number>;
|
|
17
|
+
jsonExtract(column: string, path: string): Knex.Raw;
|
|
18
|
+
jsonBuildObject(fields: Record<string, any>): Knex.Raw;
|
|
19
|
+
currentTimestamp(): Knex.Raw;
|
|
20
|
+
fromUnixEpoch(epochColumn: string): Knex.Raw;
|
|
21
|
+
toUnixEpoch(timestampColumn: string): Knex.Raw;
|
|
22
|
+
concat(...values: Array<string | Knex.Raw>): Knex.Raw;
|
|
23
|
+
stringAgg(column: string, separator?: string): Knex.Raw;
|
|
24
|
+
transaction<T>(callback: (trx: Knex.Transaction) => Promise<T>, options?: {
|
|
25
|
+
isolationLevel?: 'serializable' | 'read committed' | 'repeatable read';
|
|
26
|
+
}): Promise<T>;
|
|
27
|
+
savepoint<T>(trx: Knex.Transaction, callback: (sp: Knex.Transaction) => Promise<T>): Promise<T>;
|
|
28
|
+
tableExists(tableName: string): Promise<boolean>;
|
|
29
|
+
autoIncrementColumn(table: Knex.CreateTableBuilder, columnName?: string): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=mysql-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/mysql-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,qBAAa,YAAa,YAAW,eAAe;IAClD,OAAO,CAAC,YAAY,CAAqB;IAGzC,QAAQ,CAAC,iBAAiB,SAAS;IACnC,QAAQ,CAAC,YAAY,QAAQ;IAC7B,QAAQ,CAAC,cAAc,QAAQ;IAC/B,QAAQ,CAAC,WAAW,QAAQ;IAC5B,QAAQ,CAAC,uBAAuB,QAAQ;IACxC,QAAQ,CAAC,kBAAkB,QAAQ;IACnC,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAU;IAEnC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,OAAO,IAAI,IAAI;IAIT,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,CAAC,CAAC;IAIP,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,MAAM,CAAC;IAIlB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAInD,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;IAItD,gBAAgB,IAAI,IAAI,CAAC,GAAG;IAI5B,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAI5C,WAAW,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAI9C,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG;IAIrD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAIjD,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAC/C,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;KAAE,GACnF,OAAO,CAAC,CAAC,CAAC;IAIP,SAAS,CAAC,CAAC,EACf,GAAG,EAAE,IAAI,CAAC,WAAW,EACrB,QAAQ,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7C,OAAO,CAAC,CAAC,CAAC;IAIP,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItD,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAG/E"}
|