Skip to content

Commit 81a6ec5

Browse files
authored
feat(cloud): resume logic and tree tracking (#679)
1 parent f0bc788 commit 81a6ec5

35 files changed

Lines changed: 4258 additions & 38 deletions

.github/workflows/agent-release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ jobs:
5959
- name: Install dependencies
6060
run: pnpm install --frozen-lockfile
6161

62+
- name: Build shared (agent dependency)
63+
run: pnpm --filter @posthog/shared run build
64+
6265
- name: Build the package
6366
run: pnpm --filter agent run build
6467

.github/workflows/build.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ jobs:
3333
- name: Build electron-trpc
3434
run: pnpm --filter @posthog/electron-trpc build
3535

36+
- name: Build shared
37+
run: pnpm --filter @posthog/shared build
38+
3639
- name: Build agent
3740
run: pnpm --filter agent build
3841

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ jobs:
7878
- name: Build packages
7979
run: |
8080
pnpm --filter @posthog/electron-trpc build &
81+
pnpm --filter @posthog/shared build
8182
pnpm --filter agent build &
8283
wait
8384

.github/workflows/twig-release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ jobs:
6767
- name: Build electron-trpc package
6868
run: pnpm --filter @posthog/electron-trpc run build
6969

70+
- name: Build shared package
71+
run: pnpm --filter @posthog/shared run build
72+
7073
- name: Build agent package
7174
run: pnpm --filter @posthog/agent run build
7275

CLAUDE.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- `packages/agent` - TypeScript agent framework wrapping Claude Agent SDK
1010
- `packages/core` - Shared business logic for jj/GitHub operations
1111
- `packages/electron-trpc` - Custom tRPC package for Electron IPC
12+
- `packages/shared` - Shared utilities (Saga pattern, etc.) used across packages
1213

1314
## Commands
1415

@@ -35,6 +36,12 @@
3536
- `pnpm --filter agent dev` - Watch mode build
3637
- `pnpm --filter agent typecheck` - Type check agent
3738

39+
### Shared Package Specific
40+
41+
- `pnpm --filter @posthog/shared build` - Build shared with tsup
42+
- `pnpm --filter @posthog/shared dev` - Watch mode build
43+
- `pnpm --filter @posthog/shared typecheck` - Type check shared
44+
3845
## Code Style
3946

4047
- Prefer writing our own solution over adding external packages when the fix is simple
@@ -92,6 +99,12 @@ See [ARCHITECTURE.md](./apps/twig/ARCHITECTURE.md) for detailed patterns (DI, se
9299

93100
- Shared business logic for jj/GitHub operations
94101

102+
### Shared Package (packages/shared)
103+
104+
- Zero-dependency shared utilities used across packages
105+
- Saga pattern for atomic multi-step operations with automatic rollback
106+
- Built with tsup, outputs ESM
107+
95108
## Agent Integration Guidelines
96109

97110
- **No rawInput**: Don't use Claude Code SDK's `rawInput` - only use Zod validated meta fields. This keeps us agent agnostic and gives us a maintainable, extensible format for logs.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ twig/
5858
├── packages/
5959
│ ├── agent/ # TypeScript agent framework
6060
│ ├── core/ # Shared business logic
61-
│ └── electron-trpc/ # tRPC for Electron IPC
61+
│ ├── electron-trpc/ # tRPC for Electron IPC
62+
│ └── shared/ # Shared utilities (Saga pattern, etc.)
6263
```
6364

6465
## Documentation

apps/twig/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
"@phosphor-icons/react": "^2.1.10",
109109
"@posthog/agent": "workspace:*",
110110
"@posthog/electron-trpc": "workspace:*",
111+
"@posthog/shared": "workspace:*",
111112
"@radix-ui/react-collapsible": "^1.1.12",
112113
"@radix-ui/react-icons": "^1.3.2",
113114
"@radix-ui/themes": "^3.2.1",

apps/twig/src/renderer/sagas/task/task-creation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import type { PostHogAPIClient } from "@api/posthogClient";
22
import { buildPromptBlocks } from "@features/editor/utils/prompt-builder";
33
import { getSessionActions } from "@features/sessions/stores/sessionStore";
44
import { useWorkspaceStore } from "@features/workspace/stores/workspaceStore";
5+
import { Saga, type SagaLogger } from "@posthog/shared";
56
import { logger } from "@renderer/lib/logger";
67
import { useTaskDirectoryStore } from "@renderer/stores/taskDirectoryStore";
78
import { trpcVanilla } from "@renderer/trpc";
89
import { getTaskRepository } from "@renderer/utils/repository";
9-
import { Saga, type SagaLogger } from "@shared/lib/saga";
1010
import type {
1111
ExecutionMode,
1212
Task,

apps/twig/src/renderer/services/task/service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import { useDraftStore } from "@features/message-editor/stores/draftStore";
33
import { useSettingsStore } from "@features/settings/stores/settingsStore";
44
import { useTaskExecutionStore } from "@features/task-detail/stores/taskExecutionStore";
55
import { useWorkspaceStore } from "@features/workspace/stores/workspaceStore";
6+
import type { SagaResult } from "@posthog/shared";
67
import { logger } from "@renderer/lib/logger";
7-
import type { SagaResult } from "@shared/lib/saga";
88
import { injectable } from "inversify";
99
import {
1010
type TaskCreationInput,

apps/twig/src/renderer/stores/sagas/focusSagas.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { FocusResult, FocusSession } from "@main/services/focus/schemas";
2+
import { Saga, type SagaLogger } from "@posthog/shared";
23
import { logger } from "@renderer/lib/logger";
34
import { trpcVanilla } from "@renderer/trpc";
4-
import { Saga, type SagaLogger } from "@shared/lib/saga";
55

66
const log = logger.scope("focus-saga");
77

0 commit comments

Comments
 (0)