@agent-native/creative-context 0.8.29 → 0.8.30-nightly-20261003140129

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.
@@ -6,6 +6,7 @@ export declare function useCreativeContextLabState(): {
6
6
  isLoading: boolean;
7
7
  isError: boolean;
8
8
  isSuccess: boolean;
9
+ isStateError: boolean;
9
10
  };
10
11
  export declare function useCreativeContextLab(): boolean;
11
12
  //# sourceMappingURL=useCreativeContextLab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCreativeContextLab.d.ts","sourceRoot":"","sources":["../../src/client/useCreativeContextLab.ts"],"names":[],"mappings":"AAIA,wBAAgB,0BAA0B;;;;;;;;EAEzC;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
1
+ {"version":3,"file":"useCreativeContextLab.d.ts","sourceRoot":"","sources":["../../src/client/useCreativeContextLab.ts"],"names":[],"mappings":"AAIA,wBAAgB,0BAA0B;;;;;;;;;EAEzC;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"labs.d.ts","sourceRoot":"","sources":["../../src/server/labs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAM7D,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,SAAmC,GACxC,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,wBAAsB,+BAA+B,CACnD,SAAS,qBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf;AAuBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAS7B"}
1
+ {"version":3,"file":"labs.d.ts","sourceRoot":"","sources":["../../src/server/labs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAM7D,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,SAAmC,GACxC,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED,wBAAsB,+BAA+B,CACnD,SAAS,qBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAYf;AAuBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAS7B"}
@@ -1,13 +1,12 @@
1
1
  import { fail } from "@agent-native/core/action";
2
- import { getUserLabs } from "@agent-native/core/labs/server";
2
+ import { getUserLabEnabled } from "@agent-native/core/labs/server";
3
3
  import { getRequestUserEmail } from "@agent-native/core/server/request-context";
4
4
  import { CREATIVE_CONTEXT_LIBRARY_LAB } from "../labs.js";
5
5
  import { getCreativeContext } from "./context.js";
6
6
  export async function isCreativeContextLabAvailable(userEmail, labKey = CREATIVE_CONTEXT_LIBRARY_LAB.key) {
7
7
  if (!userEmail)
8
8
  return false;
9
- const labs = await getUserLabs(userEmail);
10
- return labs[labKey] === true;
9
+ return getUserLabEnabled(userEmail, labKey);
11
10
  }
12
11
  export async function assertCreativeContextLabEnabled(userEmail = getRequestUserEmail()) {
13
12
  if (!(await isCreativeContextLabAvailable(userEmail, getCreativeContext().labKey))) {
@@ -1 +1 @@
1
- {"version":3,"file":"labs.js","sourceRoot":"","sources":["../../src/server/labs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,SAA6B,EAC7B,MAAM,GAAG,4BAA4B,CAAC,GAAG;IAEzC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,SAAS,GAAG,mBAAmB,EAAE;IAEjC,IACE,CAAC,CAAC,MAAM,6BAA6B,CACnC,SAAS,EACT,kBAAkB,EAAE,CAAC,MAAM,CAC5B,CAAC,EACF,CAAC;QACD,IAAI,CAAC,sCAAsC,EAAE;YAC3C,SAAS,EAAE,2BAA2B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,8BAA8B,GAEhC,CAAC,OAAO,EAAE,EAAE,CACd,6BAA6B,CAC3B,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,EAC3C,kBAAkB,EAAE,CAAC,MAAM,CAC5B,CAAC;AAEJ,SAAS,yBAAyB,CAAC,MAAmB;IACpD,OAAO;QACL,GAAG,MAAM;QACT,uBAAuB,EAAE,8BAA8B;QACvD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO;YACrB,MAAM,+BAA+B,CACnC,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,CAC5C,CAAC;YACF,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAoC;IAEpC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI;QACJ,IAAI,KAAK,uBAAuB;YAC9B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC;KACtC,CAAC,CACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"labs.js","sourceRoot":"","sources":["../../src/server/labs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,SAA6B,EAC7B,MAAM,GAAG,4BAA4B,CAAC,GAAG;IAEzC,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,SAAS,GAAG,mBAAmB,EAAE;IAEjC,IACE,CAAC,CAAC,MAAM,6BAA6B,CACnC,SAAS,EACT,kBAAkB,EAAE,CAAC,MAAM,CAC5B,CAAC,EACF,CAAC;QACD,IAAI,CAAC,sCAAsC,EAAE;YAC3C,SAAS,EAAE,2BAA2B;YACtC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,8BAA8B,GAEhC,CAAC,OAAO,EAAE,EAAE,CACd,6BAA6B,CAC3B,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,EAC3C,kBAAkB,EAAE,CAAC,MAAM,CAC5B,CAAC;AAEJ,SAAS,yBAAyB,CAAC,MAAmB;IACpD,OAAO;QACL,GAAG,MAAM;QACT,uBAAuB,EAAE,8BAA8B;QACvD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO;YACrB,MAAM,+BAA+B,CACnC,OAAO,EAAE,SAAS,IAAI,mBAAmB,EAAE,CAC5C,CAAC;YACF,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAoC;IAEpC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI;QACJ,IAAI,KAAK,uBAAuB;YAC9B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC;KACtC,CAAC,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/creative-context",
3
- "version": "0.8.29",
3
+ "version": "0.8.30-nightly-20261003140129",
4
4
  "description": "Shared creative context ingestion, versioning, search, brand DNA, and context-pack primitives for agent-native apps.",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -58,12 +58,12 @@
58
58
  "react-dom": "^19.2.7",
59
59
  "typescript-7": "npm:typescript@^7.0.2",
60
60
  "vitest": "^4.1.5",
61
- "@agent-native/toolkit": "^0.200.0",
62
- "@agent-native/core": "0.200.0"
61
+ "@agent-native/core": "0.201.0-nightly-20261003140129",
62
+ "@agent-native/toolkit": "^0.201.0-nightly-20261003140129"
63
63
  },
64
64
  "peerDependencies": {
65
- "@agent-native/core": ">=0.190.0",
66
- "@agent-native/toolkit": ">=0.1.0",
65
+ "@agent-native/core": "0.201.0-nightly-20261003140129",
66
+ "@agent-native/toolkit": "0.201.0-nightly-20261003140129",
67
67
  "@tabler/icons-react": ">=3.41.1",
68
68
  "@tanstack/react-query": ">=5.101.4",
69
69
  "drizzle-orm": ">=0.45",
@@ -2,7 +2,7 @@ import type { ActionEntry } from "@agent-native/core/server";
2
2
  import { beforeEach, describe, expect, it, vi } from "vitest";
3
3
 
4
4
  const mocks = vi.hoisted(() => ({
5
- getUserLabs: vi.fn(),
5
+ getUserLabEnabled: vi.fn(),
6
6
  getRequestUserEmail: vi.fn(),
7
7
  getCreativeContext: vi.fn(),
8
8
  }));
@@ -27,20 +27,23 @@ beforeEach(() => {
27
27
  describe("isCreativeContextLabAvailable", () => {
28
28
  it("does not expose the library without an authenticated user", async () => {
29
29
  await expect(isCreativeContextLabAvailable(undefined)).resolves.toBe(false);
30
- expect(mocks.getUserLabs).not.toHaveBeenCalled();
30
+ expect(mocks.getUserLabEnabled).not.toHaveBeenCalled();
31
31
  });
32
32
 
33
33
  it("uses the shared Creative Context Lab by default", async () => {
34
- mocks.getUserLabs.mockResolvedValue({ "creative-context.library": true });
34
+ mocks.getUserLabEnabled.mockResolvedValue(true);
35
35
 
36
36
  await expect(
37
37
  isCreativeContextLabAvailable("user@example.com"),
38
38
  ).resolves.toBe(true);
39
- expect(mocks.getUserLabs).toHaveBeenCalledWith("user@example.com");
39
+ expect(mocks.getUserLabEnabled).toHaveBeenCalledWith(
40
+ "user@example.com",
41
+ "creative-context.library",
42
+ );
40
43
  });
41
44
 
42
45
  it("supports an app's existing Creative Context Lab key", async () => {
43
- mocks.getUserLabs.mockResolvedValue({ "content.creative-context": true });
46
+ mocks.getUserLabEnabled.mockResolvedValue(true);
44
47
 
45
48
  await expect(
46
49
  isCreativeContextLabAvailable(
@@ -51,7 +54,9 @@ describe("isCreativeContextLabAvailable", () => {
51
54
  });
52
55
 
53
56
  it("preserves unreadable lab state as an error", async () => {
54
- mocks.getUserLabs.mockRejectedValue(new Error("settings unavailable"));
57
+ mocks.getUserLabEnabled.mockRejectedValue(
58
+ new Error("settings unavailable"),
59
+ );
55
60
 
56
61
  await expect(
57
62
  isCreativeContextLabAvailable("user@example.com"),
@@ -59,14 +64,17 @@ describe("isCreativeContextLabAvailable", () => {
59
64
  });
60
65
 
61
66
  it("requires the configured app Lab before Creative Context operations", async () => {
62
- mocks.getUserLabs.mockResolvedValue({ "content.creative-context": true });
67
+ mocks.getUserLabEnabled.mockResolvedValue(true);
63
68
  await expect(
64
69
  assertCreativeContextLabEnabled("user@example.com"),
65
70
  ).resolves.toBeUndefined();
66
- expect(mocks.getUserLabs).toHaveBeenCalledWith("user@example.com");
71
+ expect(mocks.getUserLabEnabled).toHaveBeenCalledWith(
72
+ "user@example.com",
73
+ "content.creative-context",
74
+ );
67
75
  expect(mocks.getCreativeContext).toHaveBeenCalled();
68
76
 
69
- mocks.getUserLabs.mockResolvedValue({ "content.creative-context": false });
77
+ mocks.getUserLabEnabled.mockResolvedValue(false);
70
78
  await expect(
71
79
  assertCreativeContextLabEnabled("user@example.com"),
72
80
  ).rejects.toMatchObject({
@@ -86,15 +94,18 @@ describe("isCreativeContextLabAvailable", () => {
86
94
  });
87
95
  const action = actions["manage-creative-context"];
88
96
 
89
- mocks.getUserLabs.mockResolvedValue({ "content.creative-context": true });
97
+ mocks.getUserLabEnabled.mockResolvedValue(true);
90
98
  await expect(
91
99
  action.run({}, { caller: "tool", userEmail: "user@example.test" }),
92
100
  ).resolves.toEqual({ ok: true });
93
- expect(mocks.getUserLabs).toHaveBeenCalledWith("user@example.test");
101
+ expect(mocks.getUserLabEnabled).toHaveBeenCalledWith(
102
+ "user@example.test",
103
+ "content.creative-context",
104
+ );
94
105
  expect(mocks.getCreativeContext).toHaveBeenCalled();
95
106
  expect(run).toHaveBeenCalledOnce();
96
107
 
97
- mocks.getUserLabs.mockResolvedValue({ "content.creative-context": false });
108
+ mocks.getUserLabEnabled.mockResolvedValue(false);
98
109
  await expect(
99
110
  action.run({}, { caller: "tool", userEmail: "user@example.test" }),
100
111
  ).rejects.toThrow("Creative Context is disabled in Labs");
@@ -109,9 +120,9 @@ describe("isCreativeContextLabAvailable", () => {
109
120
  },
110
121
  });
111
122
  const action = actions["manage-creative-context"];
112
- mocks.getUserLabs.mockImplementation(async (email: string) => ({
113
- "content.creative-context": email === "enabled@example.test",
114
- }));
123
+ mocks.getUserLabEnabled.mockImplementation(
124
+ async (email: string) => email === "enabled@example.test",
125
+ );
115
126
 
116
127
  await expect(
117
128
  action.agentDiscoveryAvailable?.({
@@ -125,9 +136,9 @@ describe("isCreativeContextLabAvailable", () => {
125
136
  userEmail: "enabled@example.test",
126
137
  }),
127
138
  ).resolves.toBe(true);
128
- expect(mocks.getUserLabs.mock.calls.map(([email]) => email)).toEqual([
129
- "disabled@example.test",
130
- "enabled@example.test",
139
+ expect(mocks.getUserLabEnabled.mock.calls).toEqual([
140
+ ["disabled@example.test", "content.creative-context"],
141
+ ["enabled@example.test", "content.creative-context"],
131
142
  ]);
132
143
  });
133
144
 
@@ -139,12 +150,14 @@ describe("isCreativeContextLabAvailable", () => {
139
150
  run,
140
151
  },
141
152
  });
142
- mocks.getUserLabs.mockRejectedValue(new Error("settings unavailable"));
153
+ mocks.getUserLabEnabled.mockRejectedValue(
154
+ new Error("settings unavailable"),
155
+ );
143
156
 
144
157
  await expect(actions["process-context-purge"].run({})).resolves.toEqual({
145
158
  ok: true,
146
159
  });
147
- expect(mocks.getUserLabs).not.toHaveBeenCalled();
160
+ expect(mocks.getUserLabEnabled).not.toHaveBeenCalled();
148
161
  expect(run).toHaveBeenCalledOnce();
149
162
  });
150
163
  });
@@ -1,5 +1,5 @@
1
1
  import { fail } from "@agent-native/core/action";
2
- import { getUserLabs } from "@agent-native/core/labs/server";
2
+ import { getUserLabEnabled } from "@agent-native/core/labs/server";
3
3
  import type { ActionEntry } from "@agent-native/core/server";
4
4
  import { getRequestUserEmail } from "@agent-native/core/server/request-context";
5
5
 
@@ -11,8 +11,7 @@ export async function isCreativeContextLabAvailable(
11
11
  labKey = CREATIVE_CONTEXT_LIBRARY_LAB.key,
12
12
  ): Promise<boolean> {
13
13
  if (!userEmail) return false;
14
- const labs = await getUserLabs(userEmail);
15
- return labs[labKey] === true;
14
+ return getUserLabEnabled(userEmail, labKey);
16
15
  }
17
16
 
18
17
  export async function assertCreativeContextLabEnabled(