@jingyi0605/codingns 0.1.5 → 0.2.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.
Files changed (72) hide show
  1. package/dist/public/assets/{TerminalPage-4p6EBqrR.js → TerminalPage-BlbQuWi1.js} +1 -1
  2. package/dist/public/assets/index-1VIm8lVL.css +1 -0
  3. package/dist/public/assets/index-Dti93O2S.js +109 -0
  4. package/dist/public/index.html +2 -2
  5. package/dist/server/config/env.d.ts +1 -0
  6. package/dist/server/config/env.js +5 -1
  7. package/dist/server/config/env.js.map +1 -1
  8. package/dist/server/modules/file/file-controller.d.ts +12 -1
  9. package/dist/server/modules/file/file-controller.js +72 -1
  10. package/dist/server/modules/file/file-controller.js.map +1 -1
  11. package/dist/server/modules/file/file-preview-link-service.d.ts +22 -0
  12. package/dist/server/modules/file/file-preview-link-service.js +160 -0
  13. package/dist/server/modules/file/file-preview-link-service.js.map +1 -0
  14. package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +2 -1
  15. package/dist/server/modules/sessions/codex-app-server-helper-client.js +103 -0
  16. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  17. package/dist/server/modules/sessions/codex-app-server-helper-process.js +106 -1
  18. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  19. package/dist/server/modules/sessions/session-controller.d.ts +21 -0
  20. package/dist/server/modules/sessions/session-controller.js +23 -1
  21. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  22. package/dist/server/modules/sessions/session-history-service.d.ts +34 -2
  23. package/dist/server/modules/sessions/session-history-service.js +591 -27
  24. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  25. package/dist/server/modules/sessions/session-live-runtime-service.d.ts +5 -0
  26. package/dist/server/modules/sessions/session-live-runtime-service.js +59 -2
  27. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  28. package/dist/server/modules/sessions/session-provider-error-mapper.js +66 -0
  29. package/dist/server/modules/sessions/session-provider-error-mapper.js.map +1 -1
  30. package/dist/server/routes/files.js +2 -0
  31. package/dist/server/routes/files.js.map +1 -1
  32. package/dist/server/routes/sessions.js +1 -0
  33. package/dist/server/routes/sessions.js.map +1 -1
  34. package/dist/server/server/create-server.d.ts +4 -0
  35. package/dist/server/server/create-server.js +7 -2
  36. package/dist/server/server/create-server.js.map +1 -1
  37. package/dist/server/shared/utils/command-availability.d.ts +1 -0
  38. package/dist/server/shared/utils/command-availability.js +83 -0
  39. package/dist/server/shared/utils/command-availability.js.map +1 -0
  40. package/dist/server/storage/repositories/session-fork-repository.d.ts +8 -0
  41. package/dist/server/storage/repositories/session-fork-repository.js +69 -0
  42. package/dist/server/storage/repositories/session-fork-repository.js.map +1 -0
  43. package/dist/server/storage/repositories/session-index-repository.js +40 -2
  44. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  45. package/dist/server/storage/sqlite/client.js +107 -0
  46. package/dist/server/storage/sqlite/client.js.map +1 -1
  47. package/dist/server/storage/sqlite/schema.sql +30 -0
  48. package/dist/server/types/domain.d.ts +25 -1
  49. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.d.ts +6 -1
  50. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js +228 -7
  51. package/node_modules/@codingns/session-sync-core/dist/providers/claude-code.js.map +1 -1
  52. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +26 -1
  53. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +495 -2
  54. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  55. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js +94 -5
  56. package/node_modules/@codingns/session-sync-core/dist/providers/gemini.js.map +1 -1
  57. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.d.ts +5 -1
  58. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js +269 -3
  59. package/node_modules/@codingns/session-sync-core/dist/providers/opencode.js.map +1 -1
  60. package/node_modules/@codingns/session-sync-core/dist/providers/utils.d.ts +1 -0
  61. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js +117 -17
  62. package/node_modules/@codingns/session-sync-core/dist/providers/utils.js.map +1 -1
  63. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +10 -0
  64. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +128 -8
  65. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  66. package/node_modules/@codingns/session-sync-core/dist/services.d.ts +2 -1
  67. package/node_modules/@codingns/session-sync-core/dist/services.js +55 -8
  68. package/node_modules/@codingns/session-sync-core/dist/services.js.map +1 -1
  69. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +27 -0
  70. package/package.json +1 -1
  71. package/dist/public/assets/index-CxeghocY.css +0 -1
  72. package/dist/public/assets/index-DXusStl0.js +0 -108
@@ -6,20 +6,60 @@ export class SessionSyncService {
6
6
  this.registry = registry;
7
7
  }
8
8
  async discoverWorkspaceSessions(workspacePath, options) {
9
- const discoveries = await Promise.all(this.registry.list().map(async (provider) => {
10
- if (provider.detectSessionsDetailed) {
11
- return provider.detectSessionsDetailed(workspacePath, options);
9
+ const providers = this.registry.list();
10
+ const diagnostics = [];
11
+ const results = await Promise.allSettled(providers.map(async (provider) => {
12
+ const startedAt = Date.now();
13
+ try {
14
+ if (provider.detectSessionsDetailed) {
15
+ const discovery = await provider.detectSessionsDetailed(workspacePath, options);
16
+ diagnostics.push({
17
+ provider: provider.providerId,
18
+ status: discovery.isComplete ? "success" : "partial",
19
+ durationMs: Date.now() - startedAt,
20
+ sessionCount: discovery.sessions.length,
21
+ isComplete: discovery.isComplete,
22
+ errorMessage: null
23
+ });
24
+ return discovery;
25
+ }
26
+ const discovery = {
27
+ sessions: await provider.detectSessions(workspacePath, options),
28
+ isComplete: true
29
+ };
30
+ diagnostics.push({
31
+ provider: provider.providerId,
32
+ status: "success",
33
+ durationMs: Date.now() - startedAt,
34
+ sessionCount: discovery.sessions.length,
35
+ isComplete: discovery.isComplete,
36
+ errorMessage: null
37
+ });
38
+ return discovery;
39
+ }
40
+ catch (error) {
41
+ diagnostics.push({
42
+ provider: provider.providerId,
43
+ status: "failed",
44
+ durationMs: Date.now() - startedAt,
45
+ sessionCount: 0,
46
+ isComplete: false,
47
+ errorMessage: error instanceof Error ? error.message : String(error)
48
+ });
49
+ throw error;
12
50
  }
13
- return {
14
- sessions: await provider.detectSessions(workspacePath, options),
15
- isComplete: true
16
- };
17
51
  }));
52
+ const discoveries = results
53
+ .filter((result) => result.status === "fulfilled")
54
+ .map((result) => result.value);
18
55
  return {
19
56
  sessions: discoveries
20
57
  .flatMap((discovery) => discovery.sessions)
21
58
  .sort((left, right) => (right.lastMessageAt ?? "").localeCompare(left.lastMessageAt ?? "")),
22
- isComplete: discoveries.every((discovery) => discovery.isComplete)
59
+ // 任何一个 provider 没拿全,或者直接失败,这次发现都只能算部分成功。
60
+ isComplete: results.length > 0
61
+ && results.every((result) => result.status === "fulfilled" && result.value.isComplete),
62
+ providerDiagnostics: diagnostics.sort((left, right) => left.provider.localeCompare(right.provider))
23
63
  };
24
64
  }
25
65
  async readHistory(providerId, providerSessionId, rawStoreRef, cursor, limit, direction = "forward") {
@@ -46,6 +86,13 @@ export class SessionSyncService {
46
86
  async startSession(providerId, workspacePath, options) {
47
87
  return this.registry.get(providerId).startSession(workspacePath, options);
48
88
  }
89
+ async forkSession(providerId, providerSessionId, workspacePath, options) {
90
+ const provider = this.registry.get(providerId);
91
+ if (!provider.forkSession) {
92
+ throw new Error("PROVIDER_FORK_NOT_SUPPORTED");
93
+ }
94
+ return provider.forkSession(providerSessionId, workspacePath, options);
95
+ }
49
96
  async sendMessage(providerId, providerSessionId, rawStoreRef, content, clientRequestId, permissionMode) {
50
97
  return this.registry
51
98
  .get(providerId)
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,9 @@ export type SyncStatus = "idle" | "syncing" | "error";
7
7
  export type MessageKind = "text" | "thinking" | "tool_call" | "tool_result";
8
8
  export type HistoryDirection = "forward" | "backward";
9
9
  export type InRunInputMode = "none" | "streaming_guidance" | "queued_guidance";
10
+ export type ForkSourceType = "session" | "message";
11
+ export type ForkMethod = "native_session_fork" | "native_message_fork" | "reconstructed_session_fork" | "reconstructed_message_fork";
12
+ export type ForkStrategy = "auto" | "native-only" | "reconstruct-only";
10
13
  export interface NormalizedMessageAttachment {
11
14
  id: string;
12
15
  kind: "image";
@@ -85,9 +88,19 @@ export interface ProviderArchiveUpdateResult {
85
88
  rawStoreRef: string;
86
89
  isArchived: boolean;
87
90
  }
91
+ export type ProviderDiscoveryStatus = "success" | "partial" | "failed";
92
+ export interface ProviderDiscoveryDiagnostic {
93
+ provider: ProviderId;
94
+ status: ProviderDiscoveryStatus;
95
+ durationMs: number;
96
+ sessionCount: number;
97
+ isComplete: boolean;
98
+ errorMessage?: string | null;
99
+ }
88
100
  export interface ProviderSessionDiscovery {
89
101
  sessions: ProviderSessionSummary[];
90
102
  isComplete: boolean;
103
+ providerDiagnostics?: ProviderDiscoveryDiagnostic[];
91
104
  }
92
105
  export interface DetectSessionsOptions {
93
106
  knownSessions?: ProviderSessionSummary[];
@@ -133,6 +146,19 @@ export interface SendMessageResult {
133
146
  clientRequestId: string | null;
134
147
  message: NormalizedMessage;
135
148
  }
149
+ export interface ForkSessionOptions {
150
+ rawStoreRef: string;
151
+ sourceType: ForkSourceType;
152
+ sourceMessageId?: string | null;
153
+ strategy?: ForkStrategy;
154
+ }
155
+ export interface ForkSessionResult {
156
+ session: ProviderSessionSummary;
157
+ forkMethod: ForkMethod;
158
+ forkSourceType: ForkSourceType;
159
+ inheritedPrefixMessageCount: number;
160
+ providerSourceMessageId?: string | null;
161
+ }
136
162
  export interface ProviderSubscription {
137
163
  close(): void;
138
164
  }
@@ -145,6 +171,7 @@ export interface ProviderAdapter {
145
171
  subscribeSession(providerSessionId: string, rawStoreRef: string, cursor: string | null, limit: number, onEvent: (event: ProviderRealtimeEvent) => Promise<void> | void): ProviderSubscription;
146
172
  resumeSession(providerSessionId: string, rawStoreRef: string): Promise<ResumeSessionResult>;
147
173
  startSession(workspacePath: string, options: StartSessionOptions): Promise<StartSessionResult>;
174
+ forkSession?(providerSessionId: string, workspacePath: string, options: ForkSessionOptions): Promise<ForkSessionResult>;
148
175
  sendMessage(providerSessionId: string, rawStoreRef: string, content: string, clientRequestId: string | null, permissionMode?: string | null): Promise<SendMessageResult>;
149
176
  readSessionTitle(providerSessionId: string, rawStoreRef: string): Promise<string>;
150
177
  renameSessionTitle(providerSessionId: string, rawStoreRef: string, title: string): Promise<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jingyi0605/codingns",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "codingns": "./bin/codingns.mjs"