pi-harness-runtime 0.9.18 → 0.9.19
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/index.ts +47 -45
- package/package.json +2 -1
- package/packages/auth/src/minimax-browser-auth.ts +2 -0
- package/packages/cookie-sanitizer/dist/sync.d.ts.map +1 -1
- package/packages/cookie-sanitizer/dist/sync.js +4 -1
- package/packages/cookie-sanitizer/dist/sync.js.map +1 -1
- package/packages/cookie-sanitizer/src/sync.ts +9 -1
package/index.ts
CHANGED
|
@@ -62,10 +62,7 @@ import {
|
|
|
62
62
|
type SharedBlackboard,
|
|
63
63
|
createBlackboard,
|
|
64
64
|
} from "./harness/blackboard.ts";
|
|
65
|
-
import {
|
|
66
|
-
scheduleAutoResume,
|
|
67
|
-
cancelAutoResume,
|
|
68
|
-
} from "./harness/index.js";
|
|
65
|
+
import { scheduleAutoResume, cancelAutoResume } from "./harness/index.js";
|
|
69
66
|
import { homedir } from "node:os";
|
|
70
67
|
import { existsSync, mkdirSync } from "node:fs";
|
|
71
68
|
import { join } from "node:path";
|
|
@@ -121,6 +118,11 @@ function ensureHarnessDir() {
|
|
|
121
118
|
if (!existsSync(HARNESS_ROOT_DIR)) {
|
|
122
119
|
mkdirSync(HARNESS_ROOT_DIR, { recursive: true });
|
|
123
120
|
}
|
|
121
|
+
// Also ensure the shared cookie drop folder exists
|
|
122
|
+
const cookieDropDir = join(homedir(), ".pi-harness-runtime", "cookies");
|
|
123
|
+
if (!existsSync(cookieDropDir)) {
|
|
124
|
+
mkdirSync(cookieDropDir, { recursive: true });
|
|
125
|
+
}
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
async function getCheckpointManager(): Promise<CheckpointManager> {
|
|
@@ -800,51 +802,51 @@ export default function (pi: ExtensionAPI) {
|
|
|
800
802
|
return;
|
|
801
803
|
}
|
|
802
804
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
805
|
+
const checkpoint = currentSession.machine.getCheckpoint();
|
|
806
|
+
if (!checkpoint) {
|
|
807
|
+
ctx.ui.notify("Failed to get checkpoint.", "error");
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
808
810
|
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
811
|
+
// Read 5h reset epoch from mirror so we can schedule auto-resume
|
|
812
|
+
const mirror = mirrorStore.readProvider("minimax");
|
|
813
|
+
const resumeAtIso = mirror?.h5_resets_at_epoch
|
|
814
|
+
? new Date(mirror.h5_resets_at_epoch).toISOString()
|
|
815
|
+
: undefined;
|
|
814
816
|
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
817
|
+
const result = await currentSession.machine.transition("paused_quota");
|
|
818
|
+
if (!result.success) {
|
|
819
|
+
ctx.ui.notify(`Failed to pause: ${result.error}`, "error");
|
|
820
|
+
return;
|
|
821
|
+
}
|
|
820
822
|
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
823
|
+
// Persist resumeAt so auto-resume survives worker restart
|
|
824
|
+
if (resumeAtIso) {
|
|
825
|
+
await currentSession.machine.setResumeTime(resumeAtIso);
|
|
826
|
+
}
|
|
825
827
|
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
}
|
|
828
|
+
// Schedule auto-resume for 5h quota
|
|
829
|
+
if (resumeAtIso) {
|
|
830
|
+
const scheduled = scheduleAutoResume(
|
|
831
|
+
"minimax",
|
|
832
|
+
currentSession.machine,
|
|
833
|
+
mirrorStore,
|
|
834
|
+
);
|
|
835
|
+
ctx.ui.notify(
|
|
836
|
+
`Job paused.\n` +
|
|
837
|
+
`Auto-resume at ${scheduled ?? resumeAtIso} (5h quota exhausted).\n` +
|
|
838
|
+
`Run /harness cancel to abort.`,
|
|
839
|
+
"info",
|
|
840
|
+
);
|
|
841
|
+
} else {
|
|
842
|
+
ctx.ui.notify(
|
|
843
|
+
`Job ${currentSession.jobId} paused.\n` +
|
|
844
|
+
`Current status: paused_quota\n` +
|
|
845
|
+
`Run /harness resume to continue.`,
|
|
846
|
+
"info",
|
|
847
|
+
);
|
|
848
|
+
}
|
|
849
|
+
},
|
|
848
850
|
});
|
|
849
851
|
|
|
850
852
|
// ─── /harness resume — Resume the harness job ───────────────────────
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-harness-runtime",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.19",
|
|
4
4
|
"description": "[BETA] Codex-style /usage status + autonomous coding harness for pi. Not production ready — expect breaking changes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "node --test",
|
|
8
|
+
"postinstall": "mkdir -p ~/.pi-harness-runtime/cookies",
|
|
8
9
|
"release": "bun scripts/release-all.ts",
|
|
9
10
|
"release:patch": "bun scripts/release-all.ts --release-as patch",
|
|
10
11
|
"release:minor": "bun scripts/release-all.ts --release-as minor",
|
|
@@ -100,6 +100,8 @@ function ensureDirs(config: MinimaxBrowserAuthConfig): void {
|
|
|
100
100
|
const statusPath = config.statusPath ?? getStatusPath();
|
|
101
101
|
fs.mkdirSync(path.dirname(profileDir), { recursive: true });
|
|
102
102
|
fs.mkdirSync(path.dirname(statusPath), { recursive: true });
|
|
103
|
+
// Also ensure the cookie drop folder exists
|
|
104
|
+
fs.mkdirSync(path.join(getRuntimeDir(), "cookies"), { recursive: true });
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
export function saveAuthStatus(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,OAAO,KAAK,EAAmB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAY3E,oCAAoC;AACpC,eAAO,MAAM,gBAAgB,QAI5B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,GAClB,MAAM,EAAE,CA6CV;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB,CAmBA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,IAAI,GAAE,WAAgB,GAAG,UAAU,CAmHvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,GAAE,MAAyB,GAChC,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC7B,OAAO,GAAE,MAAyB,GAChC,MAAM,GAAG,IAAI,CAqBf;AAED,OAAO,EACN,aAAa,EACb,yBAAyB,EACzB,wBAAwB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,YAAY,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACZ,MAAM,YAAY,CAAC"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Sec-001: Cookie VALUES never appear in any log line. Diagnostics
|
|
15
15
|
* use file basenames and 64-char previews with values redacted.
|
|
16
16
|
*/
|
|
17
|
-
import { readdirSync, readFileSync, statSync,
|
|
17
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, } from "node:fs";
|
|
18
18
|
import { join } from "node:path";
|
|
19
19
|
import { buildDetectedFile, safePreview } from "./detect-format.js";
|
|
20
20
|
import { parseNetscape, serializeNetscape } from "./parse-netscape.js";
|
|
@@ -125,6 +125,9 @@ export function readInputFile(filePath) {
|
|
|
125
125
|
*/
|
|
126
126
|
export function sync(opts = {}) {
|
|
127
127
|
const dropDir = opts.dropDir ?? DEFAULT_DROP_DIR;
|
|
128
|
+
// Ensure the drop directory exists so users don't need to mkdir manually
|
|
129
|
+
if (!existsSync(dropDir))
|
|
130
|
+
mkdirSync(dropDir, { recursive: true });
|
|
128
131
|
const tmpResult = {
|
|
129
132
|
provider: null,
|
|
130
133
|
processedFiles: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
* use file basenames and 64-char previews with values redacted.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
existsSync,
|
|
20
|
+
mkdirSync,
|
|
21
|
+
readdirSync,
|
|
22
|
+
readFileSync,
|
|
23
|
+
statSync,
|
|
24
|
+
} from "node:fs";
|
|
19
25
|
import { join } from "node:path";
|
|
20
26
|
import type { CanonicalCookie, SyncOptions, SyncResult } from "./types.js";
|
|
21
27
|
import { buildDetectedFile, safePreview } from "./detect-format.js";
|
|
@@ -134,6 +140,8 @@ export function readInputFile(filePath: string): {
|
|
|
134
140
|
*/
|
|
135
141
|
export function sync(opts: SyncOptions = {}): SyncResult {
|
|
136
142
|
const dropDir = opts.dropDir ?? DEFAULT_DROP_DIR;
|
|
143
|
+
// Ensure the drop directory exists so users don't need to mkdir manually
|
|
144
|
+
if (!existsSync(dropDir)) mkdirSync(dropDir, { recursive: true });
|
|
137
145
|
|
|
138
146
|
const tmpResult: SyncResult = {
|
|
139
147
|
provider: null,
|