backpack-ontology 0.7.8 → 0.7.9
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/dist/sync/sync-relay.js +32 -11
- package/dist/sync/sync-relay.js.map +1 -1
- package/package.json +1 -1
package/dist/sync/sync-relay.js
CHANGED
|
@@ -36,35 +36,35 @@ export class SyncRelayClient {
|
|
|
36
36
|
/** POST /api/sync/register — idempotent. Returns the canonical record. */
|
|
37
37
|
async register(input) {
|
|
38
38
|
const res = await this.request("POST", "/api/sync/register", input);
|
|
39
|
-
if (!res.ok) {
|
|
39
|
+
if (!res.ok || isHtmlResponse(res)) {
|
|
40
40
|
throw await errorFromResponse(res, "register failed");
|
|
41
41
|
}
|
|
42
|
-
return (await res
|
|
42
|
+
return (await safeJson(res, "register"));
|
|
43
43
|
}
|
|
44
44
|
/** GET /api/sync/backpacks — list the user's sync backpacks. */
|
|
45
45
|
async listBackpacks() {
|
|
46
46
|
const res = await this.request("GET", "/api/sync/backpacks");
|
|
47
|
-
if (!res.ok) {
|
|
47
|
+
if (!res.ok || isHtmlResponse(res)) {
|
|
48
48
|
throw await errorFromResponse(res, "listBackpacks failed");
|
|
49
49
|
}
|
|
50
|
-
const body =
|
|
51
|
-
return body
|
|
50
|
+
const body = await safeJson(res, "listBackpacks");
|
|
51
|
+
return body?.backpacks ?? [];
|
|
52
52
|
}
|
|
53
53
|
/** GET /api/sync/backpacks/{id}/manifest. */
|
|
54
54
|
async manifest(backpackId) {
|
|
55
55
|
const res = await this.request("GET", `/api/sync/backpacks/${encodeURIComponent(backpackId)}/manifest`);
|
|
56
|
-
if (!res.ok) {
|
|
56
|
+
if (!res.ok || isHtmlResponse(res)) {
|
|
57
57
|
throw await errorFromResponse(res, "manifest failed");
|
|
58
58
|
}
|
|
59
|
-
return (await res
|
|
59
|
+
return (await safeJson(res, "manifest"));
|
|
60
60
|
}
|
|
61
61
|
/** GET one artifact. */
|
|
62
62
|
async getArtifact(backpackId, artifactId) {
|
|
63
63
|
const res = await this.request("GET", `/api/sync/backpacks/${encodeURIComponent(backpackId)}/artifacts/${encodeURIComponent(artifactId)}`);
|
|
64
|
-
if (!res.ok) {
|
|
64
|
+
if (!res.ok || isHtmlResponse(res)) {
|
|
65
65
|
throw await errorFromResponse(res, "getArtifact failed");
|
|
66
66
|
}
|
|
67
|
-
return (await res
|
|
67
|
+
return (await safeJson(res, "getArtifact"));
|
|
68
68
|
}
|
|
69
69
|
/**
|
|
70
70
|
* PUT one artifact. expectedVersion is the version the client believes the
|
|
@@ -78,10 +78,10 @@ export class SyncRelayClient {
|
|
|
78
78
|
const cur = body.current;
|
|
79
79
|
throw new SyncVersionConflictError(artifactId, cur?.version ?? 0, cur?.content_hash ?? "");
|
|
80
80
|
}
|
|
81
|
-
if (!res.ok) {
|
|
81
|
+
if (!res.ok || isHtmlResponse(res)) {
|
|
82
82
|
throw await errorFromResponse(res, "putArtifact failed");
|
|
83
83
|
}
|
|
84
|
-
return (await res
|
|
84
|
+
return (await safeJson(res, "putArtifact"));
|
|
85
85
|
}
|
|
86
86
|
/** DELETE one artifact (tombstones it). */
|
|
87
87
|
async deleteArtifact(backpackId, artifactId) {
|
|
@@ -104,6 +104,14 @@ export class SyncRelayClient {
|
|
|
104
104
|
}
|
|
105
105
|
async function errorFromResponse(res, prefix) {
|
|
106
106
|
const text = await res.text().catch(() => "");
|
|
107
|
+
// Special-case the oauth2-proxy redirect-to-IDP HTML response: that means
|
|
108
|
+
// the bearer token was rejected (typically expired). Surface a clear
|
|
109
|
+
// message instead of the raw HTML.
|
|
110
|
+
if (res.status === 302 ||
|
|
111
|
+
res.headers.get("content-type")?.includes("text/html") ||
|
|
112
|
+
/^\s*<(!doctype|html|\?xml)/i.test(text)) {
|
|
113
|
+
return new Error(`${prefix}: relay token rejected (likely expired). Re-sign-in via the Share extension and try again.`);
|
|
114
|
+
}
|
|
107
115
|
let detail = text;
|
|
108
116
|
try {
|
|
109
117
|
const parsed = JSON.parse(text);
|
|
@@ -115,4 +123,17 @@ async function errorFromResponse(res, prefix) {
|
|
|
115
123
|
}
|
|
116
124
|
return new Error(`${prefix}: ${res.status} ${res.statusText}${detail ? ` — ${detail}` : ""}`);
|
|
117
125
|
}
|
|
126
|
+
function isHtmlResponse(res) {
|
|
127
|
+
const ct = res.headers.get("content-type") ?? "";
|
|
128
|
+
return ct.includes("text/html");
|
|
129
|
+
}
|
|
130
|
+
async function safeJson(res, op) {
|
|
131
|
+
const text = await res.text();
|
|
132
|
+
try {
|
|
133
|
+
return JSON.parse(text);
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
throw new Error(`${op} returned non-JSON body (status ${res.status})`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
118
139
|
//# sourceMappingURL=sync-relay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-relay.js","sourceRoot":"","sources":["../../src/sync/sync-relay.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,iFAAiF;AAOjF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAWpB,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,QAAQ,CAAwB;IAChC,SAAS,CAAe;IAEzC,YAAY,IAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YACX,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAA8B;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,kBAAkB;YAClC,0BAA0B,EAAE,qBAAqB;YACjD,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc;QAEd,MAAM,IAAI,GAAgB;YACxB,MAAM;YACN,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;SAC9B,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,QAAQ,CAAC,KAKd;QACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-relay.js","sourceRoot":"","sources":["../../src/sync/sync-relay.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,iFAAiF;AAOjF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAWpB,MAAM,OAAO,eAAe;IACT,OAAO,CAAS;IAChB,QAAQ,CAAwB;IAChC,SAAS,CAAe;IAEzC,YAAY,IAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ;YACX,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;gBAC5B,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAe,CAAC;gBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,KAA8B;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACpC,OAAO;YACL,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,kBAAkB;YAClC,0BAA0B,EAAE,qBAAqB;YACjD,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACjB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc;QAEd,MAAM,IAAI,GAAgB;YACxB,MAAM;YACN,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;SAC9B,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,QAAQ,CAAC,KAKd;QACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAe,GAAG,EAAE,UAAU,CAAC,CAAE,CAAC;IAC1D,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;QAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAgC,GAAG,EAAE,eAAe,CAAC,CAAC;QACjF,OAAO,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,QAAQ,CAAC,UAAkB;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,uBAAuB,kBAAkB,CAAC,UAAU,CAAC,WAAW,CACjE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAe,GAAG,EAAE,UAAU,CAAC,CAAE,CAAC;IAC1D,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,UAAkB;QACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,uBAAuB,kBAAkB,CAAC,UAAU,CAAC,cAAc,kBAAkB,CAAC,UAAU,CAAC,EAAE,CACpG,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAe,GAAG,EAAE,aAAa,CAAC,CAAE,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,UAAkB,EAClB,OAAgB,EAChB,eAAuB;QAEvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,uBAAuB,kBAAkB,CAAC,UAAU,CAAC,cAAc,kBAAkB,CAAC,UAAU,CAAC,EAAE,EACnG,EAAE,gBAAgB,EAAE,eAAe,EAAE,OAAO,EAAE,CAC/C,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAG/C,CAAC;YACF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;YACzB,MAAM,IAAI,wBAAwB,CAChC,UAAU,EACV,GAAG,EAAE,OAAO,IAAI,CAAC,EACjB,GAAG,EAAE,YAAY,IAAI,EAAE,CACxB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,CAAC,MAAM,QAAQ,CAAe,GAAG,EAAE,aAAa,CAAC,CAAE,CAAC;IAC7D,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,cAAc,CAAC,UAAkB,EAAE,UAAkB;QACzD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,QAAQ,EACR,uBAAuB,kBAAkB,CAAC,UAAU,CAAC,cAAc,kBAAkB,CAAC,UAAU,CAAC,EAAE,CACpG,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,CAAC,2BAA2B;QAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,cAAc,CAAC,UAAkB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,QAAQ,EACR,uBAAuB,kBAAkB,CAAC,UAAU,CAAC,EAAE,CACxD,CAAC;QACF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO;QAC/B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,iBAAiB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAa,EAAE,MAAc;IAC5D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,0EAA0E;IAC1E,qEAAqE;IACrE,mCAAmC;IACnC,IACE,GAAG,CAAC,MAAM,KAAK,GAAG;QAClB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;QACtD,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EACxC,CAAC;QACD,OAAO,IAAI,KAAK,CACd,GAAG,MAAM,4FAA4F,CACtG,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;QACtD,IAAI,MAAM,EAAE,KAAK;YAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,GAAG,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,cAAc,CAAC,GAAa;IACnC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,QAAQ,CAAI,GAAa,EAAE,EAAU;IAClD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,mCAAmC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACzE,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "backpack-ontology",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.9",
|
|
4
4
|
"description": "A persistent learning graph engine for Claude Code via MCP — structured knowledge that carries forward across sessions",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Noah Irzinger",
|