@jamesaphoenix/tx 0.4.0 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,68 +1,479 @@
1
- # @jamesaphoenix/tx
1
+ # tx
2
2
 
3
- **TanStack for AI agents.** Headless primitives for memory, tasks, and orchestration.
3
+ **TanStack for AI agents.** Primitives, not frameworks.
4
4
 
5
- ## Installation
5
+ Headless infrastructure for memory, tasks, and orchestration.
6
6
 
7
7
  ```bash
8
- npm install @jamesaphoenix/tx better-sqlite3 effect
8
+ npm install -g @jamesaphoenix/tx
9
+ tx init
10
+ ```
11
+
12
+ ---
13
+
14
+ ## The Problem
15
+
16
+ Your agents lose context between sessions. Tasks collide when multiple agents work in parallel. Learnings vanish into conversation history. You're rebuilding the same infrastructure every project.
17
+
18
+ ## The Solution
19
+
20
+ Composable primitives that handle the hard parts. You keep control of the orchestration.
21
+
22
+ ```
23
+ ┌─────────────────────────────────────────────────────────┐
24
+ │ Your Orchestration (your code, your rules) │
25
+ ├─────────────────────────────────────────────────────────┤
26
+ │ tx primitives │
27
+ │ │
28
+ │ tx ready tx done tx context tx learn │
29
+ │ tx claim tx block tx handoff tx sync │
30
+ │ │
31
+ └─────────────────────────────────────────────────────────┘
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Primitives
37
+
38
+ ### Memory
39
+
40
+ Learnings that persist and surface when relevant.
41
+
42
+ ```bash
43
+ # Store knowledge (with optional file path)
44
+ tx learning:add "Use bcrypt for passwords, not SHA256" --file src/auth/hash.ts
45
+ tx learning:add "Redis cache invalidation has race conditions"
46
+
47
+ # Retrieve via search or task context
48
+ tx learning:search "authentication"
49
+ tx context tx-abc123 # Get relevant learnings for a task
50
+ ```
51
+
52
+ Learnings can be tagged with file paths for organization. Hybrid search (BM25 + vector) finds relevant knowledge.
53
+
54
+ ### Tasks
55
+
56
+ Dependency-aware task management. Agents only see work they can actually do.
57
+
58
+ ```bash
59
+ # Create with dependencies
60
+ tx add "Implement auth service" --score 800
61
+ tx add "Design auth schema" --score 900
62
+ tx block tx-impl tx-schema # impl waits for schema
63
+
64
+ # Work on what's ready
65
+ tx ready # Only unblocked tasks
66
+ tx done tx-schema # Completes → unblocks dependents
67
+ ```
68
+
69
+ Full hierarchy support. Epics contain milestones contain tasks contain subtasks.
70
+
71
+ ### Coordination
72
+
73
+ Primitives for multi-agent workflows without prescribing the pattern.
74
+
75
+ ```bash
76
+ tx claim tx-abc123 # Prevent collisions
77
+ tx checkpoint tx-abc123 \
78
+ --note "API done, UI next" # Save progress
79
+ tx handoff tx-abc123 \
80
+ --to reviewer # Transfer with context
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Your Loop, Your Rules
86
+
87
+ We ship **example loops**, not **the loop**:
88
+
89
+ ```bash
90
+ # Simple: one agent, one task
91
+ while task=$(tx ready --limit 1 --json | jq -r '.[0].id'); do
92
+ claude "Work on task $task, then run: tx done $task"
93
+ done
94
+ ```
95
+
96
+ ```bash
97
+ # Parallel: N agents pulling from queue
98
+ for i in {1..5}; do
99
+ (while task=$(tx claim --next); do
100
+ claude "Complete $task" && tx done $task
101
+ done) &
102
+ done
103
+ wait
104
+ ```
105
+
106
+ ```bash
107
+ # Human-in-loop: agent proposes, human approves
108
+ task=$(tx ready --limit 1)
109
+ claude "Plan implementation for $task" > plan.md
110
+ read -p "Approve? [y/n] " && claude "Execute plan.md"
111
+ tx done $task
112
+ ```
113
+
114
+ **The flow is yours.** Serial, parallel, swarm, human-in-loop. Your call.
115
+
116
+ ---
117
+
118
+ ## Why tx?
119
+
120
+ | | Native Tasks | CLAUDE.md | tx |
121
+ |---|---|---|---|
122
+ | **Persistence** | Session-scoped | File grows forever | Git-native, branch-aware |
123
+ | **Multi-agent** | Collisions | Manual coordination | Claim, block, handoff |
124
+ | **Knowledge** | Lost each session | Static dump | Graph RAG, contextual retrieval |
125
+ | **Orchestration** | None | None | Primitives for any pattern |
126
+
127
+ ---
128
+
129
+ ## Design Principles
130
+
131
+ - **No opinions on orchestration.** Serial, parallel, swarm, human-in-loop. Your call.
132
+ - **Powerful defaults.** `tx ready` just works. So does dependency resolution.
133
+ - **Escape hatches everywhere.** Raw SQL access, JSONL export, custom scoring.
134
+ - **Framework agnostic.** CLI, MCP, REST API, TypeScript SDK. Use what fits.
135
+ - **Local-first.** SQLite + git. No server required. Works offline.
136
+
137
+ ---
138
+
139
+ ## Non-Goals
140
+
141
+ - **Not an agent framework.** You bring your own orchestration.
142
+ - **Not a hosted memory product.** Local-first, your data stays yours.
143
+ - **Not a prompt library.** Primitives, not templates.
144
+ - **Not a replacement for your issue tracker.** (Unless you want it to be.)
145
+
146
+ ---
147
+
148
+ ## Three Systems
149
+
150
+ ### 1. Knowledge System
151
+
152
+ **Working today:**
153
+ - Learnings stored with file path tags
154
+ - Basic hybrid search (BM25 + vector)
155
+ - Retrieval by task ID via `tx context`
156
+
157
+ ```bash
158
+ tx learning:add "Use bcrypt for passwords" --file src/auth/hash.ts
159
+ tx learning:search "authentication"
160
+ tx context tx-abc123 # Get learnings relevant to a task
161
+ ```
162
+
163
+ **Research in progress:**
164
+ - Symbol anchoring (AST-based code references, not just file paths)
165
+ - Knowledge graph expansion (automatic relationship discovery)
166
+ - Auto-invalidation when code changes
167
+
168
+ ### 2. Task System
169
+
170
+ **Working today:**
171
+ - N-level hierarchy (epics → tasks → subtasks)
172
+ - Explicit dependencies with cycle detection
173
+ - Priority scoring
174
+ - Claim/release with lease expiry
175
+
176
+ ```
177
+ Epic: "User Authentication"
178
+ ├── Task: "Design schema" ✓ done
179
+ ├── Task: "Implement service" ● ready (unblocked)
180
+ │ └── blocks: "Write tests", "Add endpoints"
181
+ └── Task: "Write tests" ○ blocked
182
+ ```
183
+
184
+ **Research in progress:**
185
+ - LLM-based reprioritization
186
+ - Automatic task decomposition
187
+
188
+ ### 3. Worker System
189
+
190
+ **Working today:**
191
+ - `runWorker()` with execute/captureIO hooks
192
+ - Lease-based claims (prevents collisions)
193
+ - Automatic lease renewal
194
+ - Coordinator reconciliation (dead worker recovery)
195
+
196
+ ```typescript
197
+ runWorker({
198
+ execute: async (task, ctx) => {
199
+ await ctx.renewLease() // For long tasks
200
+ return { success: true }
201
+ }
202
+ })
9
203
  ```
10
204
 
11
- ## Quick Start
205
+ **Research in progress:**
206
+ - Daemon watching `~/.claude/projects/**/*.jsonl`
207
+ - Automatic learning extraction from sessions
208
+ - Confidence scoring for auto-promotion
209
+
210
+ ---
211
+
212
+ ## Worker Orchestration (TypeScript SDK)
213
+
214
+ For programmatic control, the TypeScript SDK provides `runWorker()` — a headless worker that executes tasks using your hooks.
215
+
216
+ ### Two Hooks. That's It.
12
217
 
13
218
  ```typescript
14
- import { createTx } from '@jamesaphoenix/tx'
219
+ import { runWorker } from "@jamesaphoenix/tx-core"
15
220
 
16
- // Initialize tx
17
- const tx = createTx()
221
+ runWorker({
222
+ name: "my-worker",
223
+ execute: async (task, ctx) => {
224
+ // YOUR LOGIC HERE
225
+ console.log(`Working on: ${task.title}`)
18
226
 
19
- // Create a task
20
- const task = await tx.add({
21
- title: 'Implement feature X',
22
- status: 'ready'
227
+ // Use ctx.renewLease() for long tasks
228
+ await ctx.renewLease()
229
+
230
+ // Return success or failure
231
+ return { success: true, output: "Done!" }
232
+ },
233
+ captureIO: (runId, task) => ({
234
+ transcriptPath: `.tx/runs/${runId}.jsonl`,
235
+ stderrPath: `.tx/runs/${runId}.stderr`
236
+ })
23
237
  })
238
+ ```
24
239
 
25
- // Get next workable task
26
- const next = await tx.ready()
240
+ | Hook | Required | Purpose |
241
+ |------|----------|---------|
242
+ | `execute` | Yes | Your task execution logic |
243
+ | `captureIO` | No | Paths for transcript/stderr/stdout capture |
27
244
 
28
- // Complete a task
29
- await tx.done(task.id)
245
+ ### WorkerContext
246
+
247
+ The `ctx` object provides tx primitives:
248
+
249
+ ```typescript
250
+ interface WorkerContext {
251
+ workerId: string // This worker's ID
252
+ runId: string // Unique ID for this execution
253
+ renewLease: () => Promise<void> // Extend lease for long tasks
254
+ log: (message: string) => void // Log with worker prefix
255
+ state: Record<string, unknown> // Mutable state within task
256
+ }
30
257
  ```
31
258
 
32
- ## CLI Usage
259
+ ### Custom Context
260
+
261
+ Pass your own primitives via generics:
262
+
263
+ ```typescript
264
+ interface MyContext {
265
+ llm: AnthropicClient
266
+ db: Database
267
+ }
268
+
269
+ runWorker<MyContext>({
270
+ context: {
271
+ llm: new Anthropic(),
272
+ db: myDatabase
273
+ },
274
+ execute: async (task, ctx) => {
275
+ // ctx.llm and ctx.db available here
276
+ const response = await ctx.llm.messages.create(...)
277
+ return { success: true }
278
+ }
279
+ })
280
+ ```
281
+
282
+ ### Claims and Leases
283
+
284
+ Workers use a lease-based system to prevent collisions:
285
+
286
+ ```
287
+ Worker A claims task → Lease expires in 30 min → Renew or lose it
288
+ Worker B tries to claim same task → Rejected (already claimed)
289
+ Worker A dies → Lease expires → Coordinator reclaims task
290
+ ```
291
+
292
+ Key points:
293
+ - **Claims are atomic** — only one worker can claim a task
294
+ - **Leases expire** — prevents stuck tasks from dead workers
295
+ - **Auto-renewal** — `runWorker()` renews automatically; use `ctx.renewLease()` for extra-long tasks
296
+ - **Coordinator reconciles** — dead workers detected, orphaned tasks recovered
297
+
298
+ ### Example Worker Loops
299
+
300
+ #### Basic: One Worker
301
+
302
+ ```typescript
303
+ import { Effect, Layer } from "effect"
304
+ import { runWorker, makeMinimalLayer, SqliteClientLive } from "@jamesaphoenix/tx-core"
305
+
306
+ const layer = makeMinimalLayer.pipe(
307
+ Layer.provide(SqliteClientLive(".tx/tasks.db"))
308
+ )
309
+
310
+ Effect.runPromise(
311
+ runWorker({
312
+ execute: async (task, ctx) => {
313
+ ctx.log(`Processing: ${task.title}`)
314
+ // ... your logic
315
+ return { success: true }
316
+ }
317
+ }).pipe(Effect.provide(layer))
318
+ )
319
+ ```
320
+
321
+ #### With Claude Code
322
+
323
+ ```typescript
324
+ import { spawn } from "child_process"
325
+
326
+ runWorker({
327
+ execute: async (task, ctx) => {
328
+ return new Promise((resolve) => {
329
+ const proc = spawn("claude", [
330
+ "--print",
331
+ `Work on task ${task.id}: ${task.title}`
332
+ ])
333
+
334
+ proc.on("close", (code) => {
335
+ resolve({
336
+ success: code === 0,
337
+ error: code !== 0 ? `Exit code ${code}` : undefined
338
+ })
339
+ })
340
+ })
341
+ }
342
+ })
343
+ ```
344
+
345
+ #### Parallel Workers
346
+
347
+ ```typescript
348
+ // Start N workers (each in its own process or fiber)
349
+ for (let i = 0; i < 5; i++) {
350
+ Effect.fork(
351
+ runWorker({
352
+ name: `worker-${i}`,
353
+ execute: async (task, ctx) => {
354
+ // Workers automatically coordinate via claims
355
+ return { success: true }
356
+ }
357
+ })
358
+ )
359
+ }
360
+ ```
361
+
362
+ #### Long-Running Tasks
363
+
364
+ ```typescript
365
+ runWorker({
366
+ execute: async (task, ctx) => {
367
+ for (let step = 0; step < 100; step++) {
368
+ // Periodic lease renewal for tasks > 30 min
369
+ if (step % 10 === 0) {
370
+ await ctx.renewLease()
371
+ }
372
+
373
+ // Track progress in mutable state
374
+ ctx.state.progress = step
375
+
376
+ await doExpensiveWork(step)
377
+ }
378
+ return { success: true }
379
+ }
380
+ })
381
+ ```
382
+
383
+ ---
384
+
385
+ ## Interfaces
386
+
387
+ | Interface | Use Case |
388
+ |-----------|----------|
389
+ | **CLI** | Scripts, terminal workflows, RALPH loops |
390
+ | **MCP Server** | Claude Code integration (16 tools) |
391
+ | **REST API** | Custom dashboards, external integrations |
392
+ | **TypeScript SDK** | Programmatic access from your agents |
393
+ | **Dashboard** | Visual monitoring and management |
394
+
395
+ ---
396
+
397
+ ## Quick Reference
33
398
 
34
399
  ```bash
35
- # Install globally
36
- npm install -g @jamesaphoenix/tx
400
+ # Tasks
401
+ tx add <title> # Create
402
+ tx ready # List unblocked
403
+ tx done <id> # Complete
404
+ tx block <id> <blocker> # Add dependency
405
+ tx tree <id> # Show hierarchy
37
406
 
38
- # Create tasks
39
- tx add "Implement feature X"
407
+ # Memory
408
+ tx learning:add <content> # Store
409
+ tx learning:search <query> # Find
410
+ tx context <task-id> # Contextual retrieval
40
411
 
41
- # Get next ready task
42
- tx ready
412
+ # Coordination
413
+ tx claim <id> # Prevent collisions
414
+ tx handoff <id> --to <agent>
415
+ tx checkpoint <id> --note "..."
416
+
417
+ # Sync
418
+ tx sync export # SQLite → JSONL (git-friendly)
419
+ tx sync import # JSONL → SQLite
420
+ ```
43
421
 
44
- # Complete a task
45
- tx done <task-id>
422
+ ---
46
423
 
47
- # View task tree
48
- tx tree <task-id>
424
+ ## Storage
425
+
426
+ ```
427
+ .tx/
428
+ ├── tasks.db # SQLite (gitignored)
429
+ ├── tasks.jsonl # Git-tracked
430
+ ├── learnings.jsonl # Git-tracked
431
+ └── runs.jsonl # Git-tracked
49
432
  ```
50
433
 
51
- ## Philosophy: Primitives, Not Frameworks
434
+ Local SQLite for speed. JSONL for git sync. Branch your knowledge with your code.
435
+
436
+ ---
437
+
438
+ ## Status
52
439
 
53
- tx provides headless infrastructure for AI agent orchestration. You own your orchestration logic - tx owns the primitives.
440
+ **Shipping now (concrete, tested):**
441
+ - Core task primitives: add, ready, done, block, claim, handoff
442
+ - Dependency management with cycle detection
443
+ - Worker orchestration via `runWorker()` with claims/leases
444
+ - Learnings with file path tagging
445
+ - Hybrid search (BM25 + vector)
446
+ - CLI (20+ commands), MCP server (16 tools)
447
+ - 389+ tests
54
448
 
55
- | Primitive | Purpose |
56
- |-----------|---------|
57
- | `tx ready` | Get next workable task (unblocked, highest priority) |
58
- | `tx claim <id>` | Mark task as being worked by an agent |
59
- | `tx done <id>` | Complete task, potentially unblocking others |
60
- | `tx block <id> <blocker>` | Declare dependencies |
61
- | `tx handoff <id> --to <agent>` | Transfer task with context |
449
+ **Research in progress (not yet stable):**
450
+ - Symbol anchoring (AST-based code references)
451
+ - Knowledge graph expansion
452
+ - Auto-invalidation when code changes
453
+ - Daemon-based learning extraction
454
+ - LLM reprioritization
455
+
456
+ ---
62
457
 
63
458
  ## Documentation
64
459
 
65
- Full documentation: [github.com/jamesaphoenix/tx](https://github.com/jamesaphoenix/tx)
460
+ - **[CLAUDE.md](CLAUDE.md)**: Doctrine and quick reference
461
+ - **[docs/](docs/)**: Full documentation (17 PRDs, 17 Design Docs)
462
+
463
+ ### Docs Site
464
+
465
+ Run the documentation site locally:
466
+
467
+ ```bash
468
+ cd apps/docs
469
+ npm run dev # Development server at http://localhost:3000
470
+ npm run build # Production build
471
+ npm run start # Serve production build
472
+ ```
473
+
474
+ The docs site is built with [Fumadocs](https://fumadocs.vercel.app/) and Next.js, featuring full-text search, syntax highlighting, and automatic navigation from the markdown files in `docs/`.
475
+
476
+ ---
66
477
 
67
478
  ## License
68
479
 
@@ -28,7 +28,7 @@
28
28
  * ```
29
29
  */
30
30
  import { Effect, Exit, Layer } from "effect";
31
- import { RetrieverService } from "@tx/core";
31
+ import { RetrieverService } from "@jamesaphoenix/tx-core";
32
32
  /**
33
33
  * Options for configuring createTx().
34
34
  *
@@ -143,5 +143,5 @@ export interface TxClient {
143
143
  * ```
144
144
  */
145
145
  export declare const createTx: (options?: CreateTxOptions) => TxClient;
146
- export { RetrieverService } from "@tx/core";
146
+ export { RetrieverService } from "@jamesaphoenix/tx-core";
147
147
  //# sourceMappingURL=create-tx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-tx.d.ts","sourceRoot":"","sources":["../src/create-tx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAEL,gBAAgB,EACjB,MAAM,UAAU,CAAA;AAEjB;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;CACnD;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAEtE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAE9F;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAE1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAS,eAAoB,KAAG,QAiCxD,CAAA;AAGD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"create-tx.d.ts","sourceRoot":"","sources":["../src/create-tx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAEL,gBAAgB,EACjB,MAAM,wBAAwB,CAAA;AAE/B;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IAExB;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;CACnD;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAEtE;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IAE9F;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAE1C;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAS,eAAoB,KAAG,QAiCxD,CAAA;AAGD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/create-tx.js CHANGED
@@ -28,7 +28,7 @@
28
28
  * ```
29
29
  */
30
30
  import { Layer, ManagedRuntime } from "effect";
31
- import { makeAppLayer } from "@tx/core";
31
+ import { makeAppLayer } from "@jamesaphoenix/tx-core";
32
32
  /**
33
33
  * Create a tx client with optional configuration.
34
34
  *
@@ -98,5 +98,5 @@ export const createTx = (options = {}) => {
98
98
  };
99
99
  };
100
100
  // Re-export RetrieverService for custom retriever implementations
101
- export { RetrieverService } from "@tx/core";
101
+ export { RetrieverService } from "@jamesaphoenix/tx-core";
102
102
  //# sourceMappingURL=create-tx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-tx.js","sourceRoot":"","sources":["../src/create-tx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAgB,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EACL,YAAY,EAEb,MAAM,UAAU,CAAA;AA6EjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,UAA2B,EAAE,EAAY,EAAE;IAClE,MAAM,EACJ,MAAM,GAAG,cAAc,EACvB,SAAS,EACV,GAAG,OAAO,CAAA;IAEX,2BAA2B;IAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEtC,wEAAwE;IACxE,gFAAgF;IAChF,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1C,CAAC,CAAC,SAAS,CAAA;IAEb,2DAA2D;IAC3D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpD,OAAO;QACL,GAAG,EAAE,KAAK,EAAQ,MAAkC,EAAc,EAAE;YAClE,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,EAAE,KAAK,EAAQ,MAAkC,EAAkC,EAAE;YAC1F,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,KAAK,EAAE,QAAQ;QAEf,KAAK,EAAE,KAAK,IAAmB,EAAE;YAC/B,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;QAChC,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,kEAAkE;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"create-tx.js","sourceRoot":"","sources":["../src/create-tx.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAgB,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EACL,YAAY,EAEb,MAAM,wBAAwB,CAAA;AA6E/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,UAA2B,EAAE,EAAY,EAAE;IAClE,MAAM,EACJ,MAAM,GAAG,cAAc,EACvB,SAAS,EACV,GAAG,OAAO,CAAA;IAEX,2BAA2B;IAC3B,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEtC,wEAAwE;IACxE,gFAAgF;IAChF,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC;QAC1C,CAAC,CAAC,SAAS,CAAA;IAEb,2DAA2D;IAC3D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAEpD,OAAO;QACL,GAAG,EAAE,KAAK,EAAQ,MAAkC,EAAc,EAAE;YAClE,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,EAAE,KAAK,EAAQ,MAAkC,EAAkC,EAAE;YAC1F,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;QAED,KAAK,EAAE,QAAQ;QAEf,KAAK,EAAE,KAAK,IAAmB,EAAE;YAC/B,MAAM,cAAc,CAAC,OAAO,EAAE,CAAA;QAChC,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,kEAAkE;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -34,8 +34,8 @@
34
34
  * });
35
35
  * ```
36
36
  */
37
- export * from "@tx/core";
37
+ export * from "@jamesaphoenix/tx-core";
38
38
  export { createTx, type CreateTxOptions, type TxClient } from "./create-tx.js";
39
- export type { TaskStatus, TaskId, Task, TaskWithDeps, TaskTree, TaskDependency, CreateTaskInput, UpdateTaskInput, TaskFilter, LearningSourceType, LearningId, Learning, LearningWithScore, CreateLearningInput, UpdateLearningInput, LearningQuery, ContextOptions, ContextResult, RetrievalOptions, AttemptOutcome, AttemptId, Attempt, CreateAttemptInput, RunId, RunStatus, Run, CreateRunInput, UpdateRunInput, AnchorId, AnchorType, AnchorStatus, Anchor, CreateAnchorInput, EdgeId, NodeType, EdgeType, Edge, CreateEdgeInput, } from "@tx/types";
40
- export { TASK_STATUSES, VALID_TRANSITIONS, LEARNING_SOURCE_TYPES, ATTEMPT_OUTCOMES, RUN_STATUSES, ANCHOR_TYPES, ANCHOR_STATUSES, NODE_TYPES, EDGE_TYPES, } from "@tx/types";
39
+ export type { TaskStatus, TaskId, Task, TaskWithDeps, TaskTree, TaskDependency, CreateTaskInput, UpdateTaskInput, TaskFilter, LearningSourceType, LearningId, Learning, LearningWithScore, CreateLearningInput, UpdateLearningInput, LearningQuery, ContextOptions, ContextResult, RetrievalOptions, AttemptOutcome, AttemptId, Attempt, CreateAttemptInput, RunId, RunStatus, Run, CreateRunInput, UpdateRunInput, } from "@jamesaphoenix/tx-types";
40
+ export { TASK_STATUSES, VALID_TRANSITIONS, LEARNING_SOURCE_TYPES, ATTEMPT_OUTCOMES, RUN_STATUSES, } from "@jamesaphoenix/tx-types";
41
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAGH,cAAc,UAAU,CAAC;AAGzB,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/E,YAAY,EAEV,UAAU,EACV,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,EAEV,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAEhB,cAAc,EACd,SAAS,EACT,OAAO,EACP,kBAAkB,EAElB,KAAK,EACL,SAAS,EACT,GAAG,EACH,cAAc,EACd,cAAc,EAEd,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,MAAM,EACN,iBAAiB,EAEjB,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAGH,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/E,YAAY,EAEV,UAAU,EACV,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,EAEV,kBAAkB,EAClB,UAAU,EACV,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAEhB,cAAc,EACd,SAAS,EACT,OAAO,EACP,kBAAkB,EAElB,KAAK,EACL,SAAS,EACT,GAAG,EACH,cAAc,EACd,cAAc,GACf,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,GACb,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -34,10 +34,10 @@
34
34
  * });
35
35
  * ```
36
36
  */
37
- // Re-export everything from @tx/core
38
- export * from "@tx/core";
37
+ // Re-export everything from @jamesaphoenix/tx-core
38
+ export * from "@jamesaphoenix/tx-core";
39
39
  // Export createTx and related types
40
40
  export { createTx } from "./create-tx.js";
41
41
  // Re-export constants from types
42
- export { TASK_STATUSES, VALID_TRANSITIONS, LEARNING_SOURCE_TYPES, ATTEMPT_OUTCOMES, RUN_STATUSES, ANCHOR_TYPES, ANCHOR_STATUSES, NODE_TYPES, EDGE_TYPES, } from "@tx/types";
42
+ export { TASK_STATUSES, VALID_TRANSITIONS, LEARNING_SOURCE_TYPES, ATTEMPT_OUTCOMES, RUN_STATUSES, } from "@jamesaphoenix/tx-types";
43
43
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,qCAAqC;AACrC,cAAc,UAAU,CAAC;AAEzB,oCAAoC;AACpC,OAAO,EAAE,QAAQ,EAAuC,MAAM,gBAAgB,CAAC;AAkD/E,iCAAiC;AACjC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,mDAAmD;AACnD,cAAc,wBAAwB,CAAC;AAEvC,oCAAoC;AACpC,OAAO,EAAE,QAAQ,EAAuC,MAAM,gBAAgB,CAAC;AAsC/E,iCAAiC;AACjC,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,GACb,MAAM,yBAAyB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -8,5 +8,5 @@
8
8
  * import type { Task, Learning } from "@jamesaphoenix/tx/types";
9
9
  * ```
10
10
  */
11
- export * from "@tx/types";
11
+ export * from "@jamesaphoenix/tx-types";
12
12
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,yBAAyB,CAAC"}
package/dist/types.js CHANGED
@@ -8,5 +8,5 @@
8
8
  * import type { Task, Learning } from "@jamesaphoenix/tx/types";
9
9
  * ```
10
10
  */
11
- export * from "@tx/types";
11
+ export * from "@jamesaphoenix/tx-types";
12
12
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,yBAAyB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamesaphoenix/tx",
3
- "version": "0.4.0",
3
+ "version": "0.4.3",
4
4
  "description": "TanStack for AI agents - headless primitives for memory, tasks, and orchestration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,21 +25,16 @@
25
25
  "prepublishOnly": "npm run build"
26
26
  },
27
27
  "dependencies": {
28
- "@tx/core": "*",
29
- "@tx/types": "*"
28
+ "@jamesaphoenix/tx-core": "*",
29
+ "@jamesaphoenix/tx-types": "*"
30
30
  },
31
31
  "peerDependencies": {
32
- "better-sqlite3": "^11.0.0",
33
32
  "effect": "^3.0.0"
34
33
  },
35
- "peerDependenciesMeta": {
36
- "better-sqlite3": {
37
- "optional": false
38
- }
39
- },
40
34
  "repository": {
41
35
  "type": "git",
42
- "url": "https://github.com/jamesaphoenix/tx.git"
36
+ "url": "https://github.com/jamesaphoenix/tx.git",
37
+ "directory": "packages/tx"
43
38
  },
44
39
  "keywords": [
45
40
  "task-management",