sqlew 3.2.5 → 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 +288 -1011
- package/README.md +80 -263
- package/assets/config.example.toml +97 -0
- package/assets/schema.sql +6 -1
- 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 +46 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +155 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/types.d.ts +86 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +28 -0
- package/dist/config/types.js.map +1 -0
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +10 -0
- package/dist/constants.js.map +1 -1
- package/dist/database.d.ts +44 -122
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +145 -349
- package/dist/database.js.map +1 -1
- package/dist/index.js +223 -175
- 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/add-v3.5.0-pruned-files.d.ts +26 -0
- package/dist/migrations/add-v3.5.0-pruned-files.d.ts.map +1 -0
- package/dist/migrations/add-v3.5.0-pruned-files.js +107 -0
- package/dist/migrations/add-v3.5.0-pruned-files.js.map +1 -0
- package/dist/migrations/index.d.ts +26 -12
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +162 -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.d.ts +6 -0
- package/dist/tests/git-aware-completion.test.d.ts.map +1 -0
- package/dist/tests/git-aware-completion.test.js +160 -0
- package/dist/tests/git-aware-completion.test.js.map +1 -0
- 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.d.ts +6 -0
- package/dist/tests/tasks.auto-pruning-decision-link.test.d.ts.map +1 -0
- package/dist/tests/tasks.auto-pruning-decision-link.test.js +264 -0
- package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-partial.test.d.ts +6 -0
- package/dist/tests/tasks.auto-pruning-partial.test.d.ts.map +1 -0
- package/dist/tests/tasks.auto-pruning-partial.test.js +285 -0
- package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-persistence.test.d.ts +6 -0
- package/dist/tests/tasks.auto-pruning-persistence.test.d.ts.map +1 -0
- package/dist/tests/tasks.auto-pruning-persistence.test.js +250 -0
- package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-safety.test.d.ts +12 -0
- package/dist/tests/tasks.auto-pruning-safety.test.d.ts.map +1 -0
- package/dist/tests/tasks.auto-pruning-safety.test.js +217 -0
- package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -0
- 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.d.ts +6 -0
- package/dist/tests/tasks.link-file-backward-compat.test.d.ts.map +1 -0
- package/dist/tests/tasks.link-file-backward-compat.test.js +247 -0
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -0
- package/dist/tests/tasks.watch-files-action.test.d.ts +6 -0
- package/dist/tests/tasks.watch-files-action.test.d.ts.map +1 -0
- package/dist/tests/tasks.watch-files-action.test.js +372 -0
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -0
- package/dist/tests/tasks.watch-files-parameter.test.d.ts +6 -0
- package/dist/tests/tasks.watch-files-parameter.test.d.ts.map +1 -0
- package/dist/tests/tasks.watch-files-parameter.test.js +260 -0
- package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -0
- package/dist/tests/two-step-git-completion.test.d.ts +6 -0
- package/dist/tests/two-step-git-completion.test.d.ts.map +1 -0
- package/dist/tests/two-step-git-completion.test.js +326 -0
- package/dist/tests/two-step-git-completion.test.js.map +1 -0
- package/dist/tests/vcs-staging.test.d.ts +6 -0
- package/dist/tests/vcs-staging.test.d.ts.map +1 -0
- package/dist/tests/vcs-staging.test.js +137 -0
- package/dist/tests/vcs-staging.test.js.map +1 -0
- package/dist/tools/config.d.ts +9 -4
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +16 -12
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/constraints.d.ts +9 -3
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +66 -45
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts +35 -16
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +374 -314
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts +11 -4
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +173 -91
- 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 +13 -6
- package/dist/tools/messaging.d.ts.map +1 -1
- package/dist/tools/messaging.js +217 -129
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/tasks.d.ts +42 -12
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +809 -347
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +13 -5
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +92 -115
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.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/file-pruning.d.ts +69 -0
- package/dist/utils/file-pruning.d.ts.map +1 -0
- package/dist/utils/file-pruning.js +185 -0
- package/dist/utils/file-pruning.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/quality-checks.d.ts +60 -0
- package/dist/utils/quality-checks.d.ts.map +1 -0
- package/dist/utils/quality-checks.js +228 -0
- package/dist/utils/quality-checks.js.map +1 -0
- package/dist/utils/retention.d.ts +13 -5
- package/dist/utils/retention.d.ts.map +1 -1
- package/dist/utils/retention.js +20 -8
- package/dist/utils/retention.js.map +1 -1
- package/dist/utils/task-stale-detection.d.ts +77 -7
- package/dist/utils/task-stale-detection.d.ts.map +1 -1
- package/dist/utils/task-stale-detection.js +309 -34
- 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/vcs-adapter.d.ts +68 -0
- package/dist/utils/vcs-adapter.d.ts.map +1 -0
- package/dist/utils/vcs-adapter.js +187 -0
- package/dist/utils/vcs-adapter.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 +54 -4
- package/dist/watcher/file-watcher.d.ts.map +1 -1
- package/dist/watcher/file-watcher.js +329 -33
- package/dist/watcher/file-watcher.js.map +1 -1
- package/dist/watcher/gitignore-parser.d.ts +70 -0
- package/dist/watcher/gitignore-parser.d.ts.map +1 -0
- package/dist/watcher/gitignore-parser.js +191 -0
- package/dist/watcher/gitignore-parser.js.map +1 -0
- package/dist/watcher/index.d.ts +1 -0
- package/dist/watcher/index.d.ts.map +1 -1
- package/dist/watcher/index.js +1 -0
- package/dist/watcher/index.js.map +1 -1
- package/docs/AI_AGENT_GUIDE.md +1 -1
- package/docs/ARCHITECTURE.md +12 -0
- package/docs/AUTO_FILE_TRACKING.md +486 -82
- package/docs/BEST_PRACTICES.md +56 -448
- package/docs/CONFIGURATION.md +908 -0
- package/docs/GIT_AWARE_AUTO_COMPLETE.md +645 -0
- package/docs/MIGRATION_v3.3.md +602 -0
- package/docs/MIGRATION_v3.6.0.md +170 -0
- package/docs/SHARED_CONCEPTS.md +65 -209
- package/docs/TASK_ACTIONS.md +12 -0
- package/docs/TASK_OVERVIEW.md +125 -24
- package/docs/TASK_PRUNING.md +589 -0
- package/docs/TASK_SYSTEM.md +83 -13
- package/docs/TOOL_REFERENCE.md +94 -6
- package/docs/TOOL_SELECTION.md +41 -248
- package/package.json +21 -7
package/README.md
CHANGED
|
@@ -8,74 +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
|
-
- **Auto-Stale Detection**: Tasks automatically transition when idle
|
|
76
|
-
- **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
|
|
77
38
|
- **Batch Operations**: Process up to 50 items atomically
|
|
78
39
|
|
|
40
|
+
See [docs/TASK_OVERVIEW.md](docs/TASK_OVERVIEW.md) and [docs/DECISION_CONTEXT.md](docs/DECISION_CONTEXT.md) for details.
|
|
41
|
+
|
|
79
42
|
### 🔖Kanban-style AI Scrum
|
|
80
43
|

|
|
81
44
|
|
|
@@ -106,63 +69,46 @@ Edit `claude_desktop_config.json`:
|
|
|
106
69
|
}
|
|
107
70
|
```
|
|
108
71
|
|
|
109
|
-
|
|
72
|
+
Restart Claude Desktop. Done!
|
|
110
73
|
|
|
111
|
-
|
|
74
|
+
**Custom database path:** Add path as argument: `"args": ["sqlew", "/path/to/db.db"]`
|
|
75
|
+
**Default location:** `.sqlew/sqlew.db`
|
|
112
76
|
|
|
113
|
-
|
|
114
|
-
{
|
|
115
|
-
"mcpServers": {
|
|
116
|
-
"sqlew": {
|
|
117
|
-
"command": "npx",
|
|
118
|
-
"args": ["sqlew", "/path/to/database.db"]
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
```
|
|
77
|
+
## Configuration
|
|
123
78
|
|
|
124
|
-
|
|
79
|
+
### Optional Config File
|
|
125
80
|
|
|
126
|
-
|
|
81
|
+
Create `.sqlew/config.toml` for persistent settings:
|
|
127
82
|
|
|
128
|
-
|
|
83
|
+
```toml
|
|
84
|
+
[database]
|
|
85
|
+
path = ".sqlew/custom.db"
|
|
129
86
|
|
|
130
|
-
|
|
87
|
+
[autodelete]
|
|
88
|
+
ignore_weekend = true
|
|
89
|
+
message_hours = 48
|
|
90
|
+
```
|
|
131
91
|
|
|
132
|
-
|
|
133
|
-
// ❌ WRONG
|
|
134
|
-
{key: "auth_method", value: "jwt"}
|
|
92
|
+
**Priority:** CLI args > config.toml > database defaults
|
|
135
93
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
94
|
+
See [docs/CONFIGURATION.md](docs/CONFIGURATION.md) for all options and validation rules.
|
|
95
|
+
|
|
96
|
+
## Quick Start
|
|
139
97
|
|
|
140
98
|
### Basic Usage
|
|
141
99
|
|
|
100
|
+
All tools require an `action` parameter. Example:
|
|
101
|
+
|
|
142
102
|
```javascript
|
|
143
103
|
// Store a decision
|
|
144
|
-
{
|
|
145
|
-
action: "set",
|
|
146
|
-
key: "auth_method",
|
|
147
|
-
value: "JWT with refresh tokens",
|
|
148
|
-
layer: "business",
|
|
149
|
-
tags: ["authentication", "security"]
|
|
150
|
-
}
|
|
104
|
+
{action: "set", key: "auth_method", value: "JWT", layer: "business", tags: ["security"]}
|
|
151
105
|
|
|
152
|
-
// Query
|
|
153
|
-
{
|
|
154
|
-
action: "get",
|
|
155
|
-
key: "auth_method"
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Search by tags
|
|
159
|
-
{
|
|
160
|
-
action: "search_tags",
|
|
161
|
-
tags: ["security"],
|
|
162
|
-
status: "active"
|
|
163
|
-
}
|
|
106
|
+
// Query later
|
|
107
|
+
{action: "get", key: "auth_method"}
|
|
164
108
|
```
|
|
165
109
|
|
|
110
|
+
For detailed examples, see [docs/TOOL_REFERENCE.md](docs/TOOL_REFERENCE.md).
|
|
111
|
+
|
|
166
112
|
### Available Tools
|
|
167
113
|
|
|
168
114
|
| Tool | Purpose | Example Use |
|
|
@@ -181,155 +127,49 @@ Each tool supports `action: "help"` for full documentation and `action: "example
|
|
|
181
127
|
|
|
182
128
|
### On-Demand Documentation
|
|
183
129
|
|
|
184
|
-
|
|
185
|
-
- `action: "help"` -
|
|
186
|
-
- `action: "example"` -
|
|
130
|
+
All tools support:
|
|
131
|
+
- `action: "help"` - Parameter reference and descriptions
|
|
132
|
+
- `action: "example"` - Usage scenarios and examples
|
|
187
133
|
|
|
188
|
-
|
|
189
|
-
```javascript
|
|
190
|
-
// Get detailed help for decision tool
|
|
191
|
-
{action: "help"}
|
|
192
|
-
|
|
193
|
-
// Get comprehensive examples for task tool
|
|
194
|
-
{action: "example"}
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### For AI Agents (68% Token Reduction)
|
|
134
|
+
### For AI Agents
|
|
198
135
|
|
|
199
|
-
**
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
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
|
|
204
141
|
|
|
205
142
|
**Task System:**
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
**
|
|
213
|
-
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
- 🏗️ **[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
|
|
222
158
|
|
|
223
159
|
### For Developers
|
|
224
160
|
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
## Examples
|
|
230
|
-
|
|
231
|
-
### Multi-Agent Coordination
|
|
232
|
-
|
|
233
|
-
```javascript
|
|
234
|
-
// Orchestrator creates tasks
|
|
235
|
-
{
|
|
236
|
-
action: "batch_create",
|
|
237
|
-
tasks: [
|
|
238
|
-
{title: "Setup database", assigned_agent: "db-agent"},
|
|
239
|
-
{title: "Create API", assigned_agent: "api-agent"}
|
|
240
|
-
]
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// Agents send status updates
|
|
244
|
-
{
|
|
245
|
-
action: "send",
|
|
246
|
-
from_agent: "db-agent",
|
|
247
|
-
to_agent: "orchestrator",
|
|
248
|
-
message: "Database ready",
|
|
249
|
-
priority: "high"
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### Breaking Change Management
|
|
254
|
-
|
|
255
|
-
```javascript
|
|
256
|
-
// Record deprecation
|
|
257
|
-
{
|
|
258
|
-
action: "set",
|
|
259
|
-
key: "api_v1_deprecated",
|
|
260
|
-
value: "/v1 endpoints deprecated, use /v2",
|
|
261
|
-
tags: ["breaking-change", "api"]
|
|
262
|
-
}
|
|
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
|
|
263
164
|
|
|
264
|
-
|
|
265
|
-
{
|
|
266
|
-
action: "add",
|
|
267
|
-
category: "architecture",
|
|
268
|
-
constraint_text: "All endpoints must use /v2 prefix",
|
|
269
|
-
priority: "high"
|
|
270
|
-
}
|
|
271
|
-
```
|
|
165
|
+
## Use Cases
|
|
272
166
|
|
|
273
|
-
|
|
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
|
|
274
171
|
|
|
275
|
-
|
|
276
|
-
// Record a decision with rich context
|
|
277
|
-
{
|
|
278
|
-
action: "set",
|
|
279
|
-
key: "database_choice",
|
|
280
|
-
value: "PostgreSQL over MongoDB",
|
|
281
|
-
layer: "data",
|
|
282
|
-
tags: ["architecture", "database"]
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Add rationale and tradeoffs
|
|
286
|
-
{
|
|
287
|
-
action: "add_decision_context",
|
|
288
|
-
key: "database_choice",
|
|
289
|
-
rationale: "Selected PostgreSQL because: (1) Complex relational queries required for reporting, (2) ACID compliance critical for financial data, (3) Team has strong SQL expertise",
|
|
290
|
-
alternatives_considered: [
|
|
291
|
-
{
|
|
292
|
-
option: "MongoDB",
|
|
293
|
-
reason: "Rejected due to weak consistency guarantees for financial data"
|
|
294
|
-
},
|
|
295
|
-
{
|
|
296
|
-
option: "MySQL",
|
|
297
|
-
reason: "Rejected due to limited JSON support needed for metadata"
|
|
298
|
-
}
|
|
299
|
-
],
|
|
300
|
-
tradeoffs: {
|
|
301
|
-
pros: ["Strong consistency", "Complex queries", "Team expertise"],
|
|
302
|
-
cons: ["Less flexible schema", "Vertical scaling limitations"]
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// Retrieve decision with full context
|
|
307
|
-
{
|
|
308
|
-
action: "get",
|
|
309
|
-
key: "database_choice",
|
|
310
|
-
include_context: true
|
|
311
|
-
}
|
|
312
|
-
// → Returns decision + rationale + alternatives + tradeoffs
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
### Session Continuity
|
|
316
|
-
|
|
317
|
-
```javascript
|
|
318
|
-
// Session 1: Save state
|
|
319
|
-
{
|
|
320
|
-
action: "set",
|
|
321
|
-
key: "refactor_progress",
|
|
322
|
-
value: "Completed 3/5 modules",
|
|
323
|
-
tags: ["session-state"]
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
// Session 2: Resume work
|
|
327
|
-
{
|
|
328
|
-
action: "get",
|
|
329
|
-
key: "refactor_progress"
|
|
330
|
-
}
|
|
331
|
-
// → Returns: "Completed 3/5 modules"
|
|
332
|
-
```
|
|
172
|
+
See [docs/WORKFLOWS.md](docs/WORKFLOWS.md) for detailed multi-step examples.
|
|
333
173
|
|
|
334
174
|
## Performance
|
|
335
175
|
|
|
@@ -338,41 +178,18 @@ Each tool supports `action: "help"` for full documentation and `action: "example
|
|
|
338
178
|
- **Storage efficiency**: ~140 bytes per decision
|
|
339
179
|
- **Token savings**: 60-75% in typical projects
|
|
340
180
|
|
|
341
|
-
##
|
|
342
|
-
|
|
343
|
-
### One-time Support
|
|
344
|
-
Perfect for trying out sponsorship!
|
|
345
|
-
- ☕ $5 - Buy me a coffee
|
|
346
|
-
- 🍕 $10 - Buy me a pizza
|
|
347
|
-
|
|
348
|
-
### Monthly Support
|
|
349
|
-
For ongoing development support:
|
|
350
|
-
- ⭐ $1/month - Support Continual Development
|
|
351
|
-
- 🚀 $5/month - Active support for Request
|
|
352
|
-
- 💼 $10/month - Buy me more AI tokens
|
|
181
|
+
## Support
|
|
353
182
|
|
|
354
|
-
|
|
183
|
+
Support development via [GitHub Sponsors](https://github.com/sponsors/sin5ddd) - One-time or monthly options available.
|
|
355
184
|
|
|
356
185
|
## Version
|
|
357
186
|
|
|
358
|
-
Current version: **3.
|
|
187
|
+
Current version: **3.3.0**
|
|
359
188
|
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
360
189
|
|
|
361
190
|
## License
|
|
362
191
|
|
|
363
|
-
AGPLv3 -
|
|
364
|
-
|
|
365
|
-
See [LICENSE](LICENSE) file for details.
|
|
366
|
-
|
|
367
|
-
**Free to use for:**
|
|
368
|
-
- Personal and commercial projects
|
|
369
|
-
- Using sqlew as-is in Claude Desktop
|
|
370
|
-
- Managing AI agent context
|
|
371
|
-
|
|
372
|
-
**Open-source required when:**
|
|
373
|
-
- Embedding sqlew into your application
|
|
374
|
-
- Modifying and distributing sqlew
|
|
375
|
-
- Offering sqlew as a network service
|
|
192
|
+
AGPLv3 - Free to use. Open-source required when embedding or modifying. See [LICENSE](LICENSE) for details.
|
|
376
193
|
|
|
377
194
|
## Links
|
|
378
195
|
|
|
@@ -380,10 +197,10 @@ See [LICENSE](LICENSE) file for details.
|
|
|
380
197
|
- [GitHub repository](https://github.com/sin5ddd/mcp-sqlew)
|
|
381
198
|
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
382
199
|
|
|
383
|
-
## Support
|
|
200
|
+
## Support & Documentation
|
|
384
201
|
|
|
385
|
-
-
|
|
386
|
-
-
|
|
202
|
+
- Issues: [GitHub Issues](https://github.com/sin5ddd/mcp-sqlew/issues)
|
|
203
|
+
- Docs: [docs/](docs/) directory
|
|
387
204
|
|
|
388
205
|
## Acknowledgments
|
|
389
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
|
package/assets/schema.sql
CHANGED
|
@@ -539,7 +539,12 @@ INSERT OR IGNORE INTO m_config (key, value) VALUES
|
|
|
539
539
|
('autodelete_file_history_days', '7'),
|
|
540
540
|
('task_stale_hours_in_progress', '2'),
|
|
541
541
|
('task_stale_hours_waiting_review', '24'),
|
|
542
|
-
('task_auto_stale_enabled', '1')
|
|
542
|
+
('task_auto_stale_enabled', '1'),
|
|
543
|
+
('auto_archive_done_days', '2'),
|
|
544
|
+
('review_idle_minutes', '15'),
|
|
545
|
+
('review_require_all_files_modified', '1'),
|
|
546
|
+
('review_require_tests_pass', '1'),
|
|
547
|
+
('review_require_compile', '1');
|
|
543
548
|
|
|
544
549
|
-- Task Statuses (1=todo, 2=in_progress, 3=waiting_review, 4=blocked, 5=done, 6=archived)
|
|
545
550
|
INSERT OR IGNORE INTO m_task_statuses (id, name) VALUES
|
|
@@ -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"}
|