praxis-agent 0.4.0 → 0.5.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/README.md CHANGED
@@ -84,8 +84,9 @@ troubleshooting. Run `praxis --help` for the authoritative command surface.
84
84
  thinking, grouped multi-file reads, globally expandable tool results,
85
85
  command-specific `/add-dir`, `/copy`, `/branch`, `/rename`, `/export`,
86
86
  provider-backed `/compact`, native `/rewind`, runtime `/cd`, transcript-free
87
- `/btw` side questions with background-Agent handoff, `/config`, `/usage`,
88
- `/mcp`, and live extension-reload controls,
87
+ `/btw` side questions with background-Agent handoff, interactive
88
+ `/background` terminal handoff, `/config`, `/usage`, `/mcp`, and live
89
+ extension-reload controls,
89
90
  cursor/history composer, per-session model/effort/permission controls,
90
91
  context/status/skill/task dashboards, prompt stash and continuation shortcuts,
91
92
  filterable `@` file and agent references, composer undo, `Ctrl+G` external
@@ -103,6 +103,10 @@ export interface ForkResult {
103
103
  sessionId: string;
104
104
  parentSessionId: string;
105
105
  }
106
+ export interface SessionForkCheckpoint {
107
+ resumeSessionAt: string;
108
+ entryCount: number;
109
+ }
106
110
  export interface ManualCompactResult {
107
111
  summary: string;
108
112
  usage: ModelUsage;
@@ -157,8 +161,12 @@ export declare class ClaudeSessionService {
157
161
  changeCwd(sessionId: string | undefined, requestedCwd: string): Promise<string>;
158
162
  recordCdUsage(sessionId: string): Promise<void>;
159
163
  recordBtwUsage(sessionId: string | undefined, permissionMode?: ClaudePermissionMode): Promise<string>;
164
+ recordBackgroundUsage(sessionId: string | undefined, permissionMode?: ClaudePermissionMode): Promise<string>;
165
+ recordBackgroundLaunch(sessionId: string): Promise<SessionForkCheckpoint>;
160
166
  compact(sessionId: string, signal?: AbortSignal, selection?: ManualCompactSelection): Promise<ManualCompactResult>;
161
167
  fork(parentSessionId: string, sessionId?: string, resumeSessionAt?: string): Promise<ForkResult>;
168
+ ensureFork(parentSessionId: string, sessionId: string, checkpoint?: SessionForkCheckpoint): Promise<ForkResult>;
169
+ private nativeForkEntries;
162
170
  rewindFiles(sessionId: string, userMessageId: string): Promise<void>;
163
171
  rewindPoints(sessionId: string): Promise<RewindPoint[]>;
164
172
  setPermissionMode(sessionId: string, permissionMode: ClaudePermissionMode): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"session-service.d.ts","sourceRoot":"","sources":["../../src/application/session-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-service.d.ts","sourceRoot":"","sources":["../../src/application/session-service.ts"],"names":[],"mappings":"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"}
@@ -837,6 +837,86 @@ export class ClaudeSessionService {
837
837
  await new Promise((resolve) => setTimeout(resolve, 25));
838
838
  }
839
839
  }
840
+ async recordBackgroundUsage(sessionId, permissionMode = 'default') {
841
+ this.assertWritable();
842
+ const activeSessionId = await this.ensureLocalSession(sessionId, permissionMode);
843
+ await this.appendInputHistory('/background', activeSessionId);
844
+ while (true) {
845
+ const result = await this.turnStore(activeSessionId).withLease(async (lease) => {
846
+ const snapshot = await lease.load();
847
+ if (snapshot.entries.length === 0) {
848
+ throw new Error(`Claude session not found: ${activeSessionId}`);
849
+ }
850
+ const timestamp = new Date().toISOString();
851
+ const promptId = randomUUID();
852
+ const firstUuid = randomUUID();
853
+ const commandUuid = randomUUID();
854
+ const common = {
855
+ isSidechain: false,
856
+ promptId,
857
+ timestamp,
858
+ userType: 'external',
859
+ entrypoint: 'cli',
860
+ cwd: this.activeCwd(),
861
+ sessionId: activeSessionId,
862
+ version: this.options.claudeVersion,
863
+ gitBranch: null,
864
+ };
865
+ const appended = await lease.appendMany(snapshot.tail, [
866
+ {
867
+ ...common,
868
+ parentUuid: this.logicalTailUuid(snapshot.tail),
869
+ type: 'user',
870
+ message: {
871
+ role: 'user',
872
+ content: '<local-command-caveat>Caveat: The messages below were generated by the user while running local commands. DO NOT respond to these messages or otherwise consider them in your response unless the user explicitly asks you to.</local-command-caveat>',
873
+ },
874
+ isMeta: true,
875
+ uuid: firstUuid,
876
+ },
877
+ {
878
+ ...common,
879
+ parentUuid: firstUuid,
880
+ type: 'user',
881
+ message: {
882
+ role: 'user',
883
+ content: '<command-name>/background</command-name>\n <command-message>background</command-message>\n <command-args></command-args>',
884
+ },
885
+ uuid: commandUuid,
886
+ },
887
+ {
888
+ ...common,
889
+ parentUuid: commandUuid,
890
+ type: 'user',
891
+ message: {
892
+ role: 'user',
893
+ content: '<local-command-stdout>Nothing to background yet — send a message first.</local-command-stdout>',
894
+ },
895
+ uuid: randomUUID(),
896
+ },
897
+ ]);
898
+ if (appended.status === 'conflict') {
899
+ throw new Error(`Claude background command append conflict: ${appended.reason}`);
900
+ }
901
+ });
902
+ if (result.status === 'completed')
903
+ return activeSessionId;
904
+ await new Promise((resolve) => setTimeout(resolve, 25));
905
+ }
906
+ }
907
+ async recordBackgroundLaunch(sessionId) {
908
+ this.assertWritable();
909
+ const result = await this.turnStore(sessionId).withLease((lease) => lease.load());
910
+ if (result.status === 'conflict') {
911
+ throw new Error(`Claude background checkpoint conflict: ${result.reason}`);
912
+ }
913
+ const resumeSessionAt = this.logicalTailUuid(result.value.tail);
914
+ if (!resumeSessionAt) {
915
+ throw new Error(`Claude session not found: ${sessionId}`);
916
+ }
917
+ await this.appendInputHistory('/background', sessionId);
918
+ return { resumeSessionAt, entryCount: result.value.entries.length };
919
+ }
840
920
  async compact(sessionId, signal, selection) {
841
921
  this.assertWritable();
842
922
  const provider = this.provider();
@@ -959,6 +1039,33 @@ export class ClaudeSessionService {
959
1039
  async fork(parentSessionId, sessionId = randomUUID(), resumeSessionAt) {
960
1040
  this.assertSessionPersistence();
961
1041
  this.assertWritable();
1042
+ const entries = await this.nativeForkEntries(parentSessionId, sessionId, resumeSessionAt);
1043
+ const result = await this.store(sessionId).create(entries);
1044
+ if (result.status === 'conflict') {
1045
+ throw new Error('Generated Claude fork session already exists');
1046
+ }
1047
+ return { sessionId, parentSessionId };
1048
+ }
1049
+ async ensureFork(parentSessionId, sessionId, checkpoint) {
1050
+ this.assertSessionPersistence();
1051
+ this.assertWritable();
1052
+ const expected = await this.nativeForkEntries(parentSessionId, sessionId, checkpoint?.resumeSessionAt, checkpoint?.entryCount);
1053
+ const target = this.store(sessionId);
1054
+ const created = await target.create(expected);
1055
+ if (created.status === 'created')
1056
+ return { sessionId, parentSessionId };
1057
+ const existing = await target.withLease((lease) => lease.load());
1058
+ if (existing.status === 'conflict') {
1059
+ throw new Error(`Claude transcript fork conflict: ${existing.reason}`);
1060
+ }
1061
+ if (existing.value.entries.length < expected.length ||
1062
+ expected.some((entry, index) => JSON.stringify(existing.value.entries[index]) !==
1063
+ JSON.stringify(entry))) {
1064
+ throw new Error('Claude handoff target is not the expected native fork');
1065
+ }
1066
+ return { sessionId, parentSessionId };
1067
+ }
1068
+ async nativeForkEntries(parentSessionId, sessionId, resumeSessionAt, sourceEntryCount) {
962
1069
  const sourceResult = await this.store(parentSessionId).withLease((lease) => lease.load());
963
1070
  if (sourceResult.status === 'conflict') {
964
1071
  throw new Error(`Claude transcript fork conflict: ${sourceResult.reason}`);
@@ -967,17 +1074,18 @@ export class ClaudeSessionService {
967
1074
  if (source.entries.length === 0) {
968
1075
  throw new Error(`Claude session not found: ${parentSessionId}`);
969
1076
  }
970
- const target = this.store(sessionId);
971
- const result = await target.create(createClaudeNativeFork({
972
- source: source.entries,
1077
+ if (sourceEntryCount !== undefined &&
1078
+ (sourceEntryCount <= 0 || sourceEntryCount > source.entries.length)) {
1079
+ throw new Error('Claude handoff source checkpoint is no longer available');
1080
+ }
1081
+ return createClaudeNativeFork({
1082
+ source: sourceEntryCount === undefined
1083
+ ? source.entries
1084
+ : source.entries.slice(0, sourceEntryCount),
973
1085
  sourceSessionId: parentSessionId,
974
1086
  sessionId,
975
1087
  ...(resumeSessionAt === undefined ? {} : { resumeSessionAt }),
976
- }));
977
- if (result.status === 'conflict') {
978
- throw new Error('Generated Claude fork session already exists');
979
- }
980
- return { sessionId, parentSessionId };
1088
+ });
981
1089
  }
982
1090
  async rewindFiles(sessionId, userMessageId) {
983
1091
  const result = await this.store(sessionId).withLease(async (lease) => {