@agent-native/creative-context 0.7.25 → 0.8.0-nightly-20260915020720
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/client/actions.d.ts +3 -1
- package/dist/client/actions.d.ts.map +1 -1
- package/dist/client/actions.js +2 -2
- package/dist/client/actions.js.map +1 -1
- package/dist/client/agent-tab.d.ts.map +1 -1
- package/dist/client/agent-tab.js +5 -7
- package/dist/client/agent-tab.js.map +1 -1
- package/dist/client/application-state.d.ts +3 -1
- package/dist/client/application-state.d.ts.map +1 -1
- package/dist/client/application-state.js +9 -2
- package/dist/client/application-state.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/useCreativeContextLab.d.ts +8 -0
- package/dist/client/useCreativeContextLab.d.ts.map +1 -0
- package/dist/client/useCreativeContextLab.js +9 -0
- package/dist/client/useCreativeContextLab.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/labs.d.ts +2 -0
- package/dist/labs.d.ts.map +1 -0
- package/dist/labs.js +6 -0
- package/dist/labs.js.map +1 -0
- package/dist/server/context.d.ts +1 -0
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +2 -0
- package/dist/server/context.js.map +1 -1
- package/dist/server/generation-context.d.ts +1 -1
- package/dist/server/generation-context.d.ts.map +1 -1
- package/dist/server/generation-context.js +35 -8
- package/dist/server/generation-context.js.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/labs.d.ts +5 -0
- package/dist/server/labs.d.ts.map +1 -0
- package/dist/server/labs.js +33 -0
- package/dist/server/labs.js.map +1 -0
- package/dist/server/media.d.ts.map +1 -1
- package/dist/server/media.js +4 -0
- package/dist/server/media.js.map +1 -1
- package/dist/server/native-context-clone.d.ts +7 -0
- package/dist/server/native-context-clone.d.ts.map +1 -0
- package/dist/server/native-context-clone.js +7 -0
- package/dist/server/native-context-clone.js.map +1 -0
- package/dist/server/prompt-provider.d.ts.map +1 -1
- package/dist/server/prompt-provider.js +8 -2
- package/dist/server/prompt-provider.js.map +1 -1
- package/package.json +5 -5
- package/src/client/actions.ts +5 -1
- package/src/client/agent-tab.tsx +6 -7
- package/src/client/application-state.spec.ts +55 -2
- package/src/client/application-state.ts +10 -2
- package/src/client/index.ts +4 -0
- package/src/client/useCreativeContextLab.ts +11 -0
- package/src/index.ts +1 -0
- package/src/labs.ts +6 -0
- package/src/server/context.ts +3 -0
- package/src/server/generation-artifact-record-role.spec.ts +6 -0
- package/src/server/generation-context-a2a.spec.ts +37 -0
- package/src/server/generation-context-off.spec.ts +71 -0
- package/src/server/generation-context.ts +40 -14
- package/src/server/index.ts +9 -2
- package/src/server/labs.spec.ts +116 -0
- package/src/server/labs.ts +53 -0
- package/src/server/media.spec.ts +56 -1
- package/src/server/media.ts +9 -0
- package/src/server/native-context-clone.spec.ts +55 -0
- package/src/server/native-context-clone.ts +9 -0
- package/src/server/prompt-provider.spec.ts +55 -0
- package/src/server/prompt-provider.ts +13 -2
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { resolveNativeContextCloneReference as resolveFromStore } from "../store/contexts.js";
|
|
2
|
+
import { assertCreativeContextLabEnabled } from "./labs.js";
|
|
3
|
+
|
|
4
|
+
export async function resolveNativeContextCloneReference(
|
|
5
|
+
input: Parameters<typeof resolveFromStore>[0],
|
|
6
|
+
) {
|
|
7
|
+
await assertCreativeContextLabEnabled();
|
|
8
|
+
return resolveFromStore(input);
|
|
9
|
+
}
|
|
@@ -3,7 +3,10 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
|
3
3
|
const mocks = vi.hoisted(() => ({
|
|
4
4
|
readAppState: vi.fn(),
|
|
5
5
|
getBrandProfile: vi.fn(),
|
|
6
|
+
isCreativeContextLabAvailable: vi.fn(),
|
|
7
|
+
getCreativeContext: vi.fn(),
|
|
6
8
|
provider: null as null | {
|
|
9
|
+
failOnError?: boolean;
|
|
7
10
|
load: (context: {
|
|
8
11
|
owner: string;
|
|
9
12
|
compact: boolean;
|
|
@@ -29,6 +32,14 @@ vi.mock("../store/brand.js", () => ({
|
|
|
29
32
|
getBrandProfile: mocks.getBrandProfile,
|
|
30
33
|
}));
|
|
31
34
|
|
|
35
|
+
vi.mock("./labs.js", () => ({
|
|
36
|
+
isCreativeContextLabAvailable: mocks.isCreativeContextLabAvailable,
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
vi.mock("./context.js", () => ({
|
|
40
|
+
getCreativeContext: mocks.getCreativeContext,
|
|
41
|
+
}));
|
|
42
|
+
|
|
32
43
|
import {
|
|
33
44
|
publishedBrandContextInput,
|
|
34
45
|
registerCreativeContextPromptProvider,
|
|
@@ -38,6 +49,11 @@ describe("creative context prompt provider", () => {
|
|
|
38
49
|
beforeEach(() => {
|
|
39
50
|
mocks.readAppState.mockReset();
|
|
40
51
|
mocks.getBrandProfile.mockReset();
|
|
52
|
+
mocks.isCreativeContextLabAvailable.mockReset();
|
|
53
|
+
mocks.getCreativeContext.mockReturnValue({
|
|
54
|
+
labKey: "creative-context.library",
|
|
55
|
+
});
|
|
56
|
+
mocks.isCreativeContextLabAvailable.mockResolvedValue(true);
|
|
41
57
|
});
|
|
42
58
|
|
|
43
59
|
it("maps only structured published payload fields into the compiler", () => {
|
|
@@ -75,4 +91,43 @@ describe("creative context prompt provider", () => {
|
|
|
75
91
|
expect(mocks.getBrandProfile).not.toHaveBeenCalled();
|
|
76
92
|
unregister();
|
|
77
93
|
});
|
|
94
|
+
|
|
95
|
+
it("omits published brand context while its Lab is disabled", async () => {
|
|
96
|
+
mocks.isCreativeContextLabAvailable.mockResolvedValue(false);
|
|
97
|
+
const unregister = registerCreativeContextPromptProvider();
|
|
98
|
+
|
|
99
|
+
await expect(
|
|
100
|
+
mocks.provider?.load({
|
|
101
|
+
owner: "user@example.test",
|
|
102
|
+
compact: false,
|
|
103
|
+
orgId: null,
|
|
104
|
+
}),
|
|
105
|
+
).resolves.toBeNull();
|
|
106
|
+
expect(mocks.isCreativeContextLabAvailable).toHaveBeenCalledWith(
|
|
107
|
+
"user@example.test",
|
|
108
|
+
"creative-context.library",
|
|
109
|
+
);
|
|
110
|
+
expect(mocks.readAppState).not.toHaveBeenCalled();
|
|
111
|
+
expect(mocks.getBrandProfile).not.toHaveBeenCalled();
|
|
112
|
+
unregister();
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("surfaces an unreadable Lab state instead of loading brand context", async () => {
|
|
116
|
+
mocks.isCreativeContextLabAvailable.mockRejectedValue(
|
|
117
|
+
new Error("settings unavailable"),
|
|
118
|
+
);
|
|
119
|
+
const unregister = registerCreativeContextPromptProvider();
|
|
120
|
+
expect(mocks.provider?.failOnError).toBe(true);
|
|
121
|
+
|
|
122
|
+
await expect(
|
|
123
|
+
mocks.provider?.load({
|
|
124
|
+
owner: "user@example.test",
|
|
125
|
+
compact: false,
|
|
126
|
+
orgId: null,
|
|
127
|
+
}),
|
|
128
|
+
).rejects.toThrow("settings unavailable");
|
|
129
|
+
expect(mocks.readAppState).not.toHaveBeenCalled();
|
|
130
|
+
expect(mocks.getBrandProfile).not.toHaveBeenCalled();
|
|
131
|
+
unregister();
|
|
132
|
+
});
|
|
78
133
|
});
|
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
compilePublishedBrandContext,
|
|
8
8
|
type PublishedBrandContextInput,
|
|
9
9
|
} from "./brand-context.js";
|
|
10
|
+
import { getCreativeContext } from "./context.js";
|
|
11
|
+
import { isCreativeContextLabAvailable } from "./labs.js";
|
|
10
12
|
|
|
11
13
|
const PROVIDER_ID = "creative-context";
|
|
12
14
|
let unregisterProvider: (() => void) | null = null;
|
|
@@ -46,8 +48,17 @@ export function registerCreativeContextPromptProvider(): () => void {
|
|
|
46
48
|
if (unregisterProvider) return unregisterProvider;
|
|
47
49
|
const unregister = registerPromptContextProvider({
|
|
48
50
|
id: PROVIDER_ID,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
failOnError: true,
|
|
52
|
+
async load(context) {
|
|
53
|
+
if (
|
|
54
|
+
!(await isCreativeContextLabAvailable(
|
|
55
|
+
context.owner,
|
|
56
|
+
getCreativeContext().labKey,
|
|
57
|
+
))
|
|
58
|
+
) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const state = await readAppState("creative-context");
|
|
51
62
|
if (state?.contextMode === "off") return null;
|
|
52
63
|
const { profile, dna } = await getBrandProfile({});
|
|
53
64
|
if (!profile || !dna || dna.status !== "published") return null;
|