@mj-biz-apps/marketing-server 0.2.0 → 0.4.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/dist/__tests__/linkedInTargeting.test.d.ts +2 -0
- package/dist/__tests__/linkedInTargeting.test.d.ts.map +1 -0
- package/dist/__tests__/linkedInTargeting.test.js +65 -0
- package/dist/__tests__/linkedInTargeting.test.js.map +1 -0
- package/dist/agents/BaseMarketingAgent.d.ts.map +1 -1
- package/dist/agents/BaseMarketingAgent.js +22 -1
- package/dist/agents/BaseMarketingAgent.js.map +1 -1
- package/dist/agents/MarketingCreativeAgent.d.ts +16 -0
- package/dist/agents/MarketingCreativeAgent.d.ts.map +1 -0
- package/dist/agents/MarketingCreativeAgent.js +28 -0
- package/dist/agents/MarketingCreativeAgent.js.map +1 -0
- package/dist/agents/MarketingExperimentationAgent.d.ts +53 -0
- package/dist/agents/MarketingExperimentationAgent.d.ts.map +1 -1
- package/dist/agents/MarketingExperimentationAgent.js +241 -15
- package/dist/agents/MarketingExperimentationAgent.js.map +1 -1
- package/dist/agents/MarketingStrategyOnboardingAgent.d.ts.map +1 -1
- package/dist/agents/MarketingStrategyOnboardingAgent.js +38 -4
- package/dist/agents/MarketingStrategyOnboardingAgent.js.map +1 -1
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +3 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/generated/graphql-schemas/__mj_BizAppsMarketing.d.ts +397 -310
- package/dist/generated/graphql-schemas/__mj_BizAppsMarketing.d.ts.map +1 -1
- package/dist/generated/graphql-schemas/__mj_BizAppsMarketing.js +678 -326
- package/dist/generated/graphql-schemas/__mj_BizAppsMarketing.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/programs/ContentPostProgramDriver.d.ts +4 -8
- package/dist/programs/ContentPostProgramDriver.d.ts.map +1 -1
- package/dist/programs/ContentPostProgramDriver.js +16 -46
- package/dist/programs/ContentPostProgramDriver.js.map +1 -1
- package/dist/programs/EmailProgramDriver.d.ts +3 -5
- package/dist/programs/EmailProgramDriver.d.ts.map +1 -1
- package/dist/programs/EmailProgramDriver.js +15 -21
- package/dist/programs/EmailProgramDriver.js.map +1 -1
- package/dist/programs/google/GoogleAdsProgramDriver.d.ts +3 -5
- package/dist/programs/google/GoogleAdsProgramDriver.d.ts.map +1 -1
- package/dist/programs/google/GoogleAdsProgramDriver.js +40 -28
- package/dist/programs/google/GoogleAdsProgramDriver.js.map +1 -1
- package/dist/programs/google/googleBrandAssets.d.ts +5 -0
- package/dist/programs/google/googleBrandAssets.d.ts.map +1 -1
- package/dist/programs/google/googleBrandAssets.js +20 -15
- package/dist/programs/google/googleBrandAssets.js.map +1 -1
- package/dist/programs/index.d.ts +6 -0
- package/dist/programs/index.d.ts.map +1 -1
- package/dist/programs/index.js +5 -0
- package/dist/programs/index.js.map +1 -1
- package/dist/programs/linkedin/LinkedInAdsClient.d.ts +123 -2
- package/dist/programs/linkedin/LinkedInAdsClient.d.ts.map +1 -1
- package/dist/programs/linkedin/LinkedInAdsClient.js +196 -29
- package/dist/programs/linkedin/LinkedInAdsClient.js.map +1 -1
- package/dist/programs/linkedin/LinkedInAdsProgramDriver.d.ts +40 -11
- package/dist/programs/linkedin/LinkedInAdsProgramDriver.d.ts.map +1 -1
- package/dist/programs/linkedin/LinkedInAdsProgramDriver.js +397 -94
- package/dist/programs/linkedin/LinkedInAdsProgramDriver.js.map +1 -1
- package/dist/programs/linkedin/linkedInExecutionContext.d.ts +6 -0
- package/dist/programs/linkedin/linkedInExecutionContext.d.ts.map +1 -1
- package/dist/programs/linkedin/linkedInExecutionContext.js +2 -1
- package/dist/programs/linkedin/linkedInExecutionContext.js.map +1 -1
- package/dist/programs/meta/MetaAdsClient.d.ts +101 -0
- package/dist/programs/meta/MetaAdsClient.d.ts.map +1 -0
- package/dist/programs/meta/MetaAdsClient.js +239 -0
- package/dist/programs/meta/MetaAdsClient.js.map +1 -0
- package/dist/programs/meta/MetaAdsProgramDriver.d.ts +76 -0
- package/dist/programs/meta/MetaAdsProgramDriver.d.ts.map +1 -0
- package/dist/programs/meta/MetaAdsProgramDriver.js +431 -0
- package/dist/programs/meta/MetaAdsProgramDriver.js.map +1 -0
- package/dist/programs/meta/metaAdsExecutionContext.d.ts +39 -0
- package/dist/programs/meta/metaAdsExecutionContext.d.ts.map +1 -0
- package/dist/programs/meta/metaAdsExecutionContext.js +99 -0
- package/dist/programs/meta/metaAdsExecutionContext.js.map +1 -0
- package/package.json +9 -8
|
@@ -8,8 +8,9 @@ var MarketingExperimentationAgent_1;
|
|
|
8
8
|
import { EscapeSQLString, RegisterClass } from '@memberjunction/global';
|
|
9
9
|
import { BaseAgent } from '@memberjunction/ai-agents';
|
|
10
10
|
import { LogStatus, LogError, Metadata, RunView } from '@memberjunction/core';
|
|
11
|
-
import { enrichFinding, loadProgramKnowledge, renderKnowledgeBase, toMarketingEntityName, } from '@mj-biz-apps/marketing-core';
|
|
11
|
+
import { blockingLearningErrors, blockingErrors, driverProposalIssues, ProgramMetadataEngine, decidedProgramFromTaskInput, parseTaskInput, enrichFinding, loadProgramKnowledge, renderKnowledgeBase, toMarketingEntityName, validateLearning, creativeImageProvenance, } from '@mj-biz-apps/marketing-core';
|
|
12
12
|
import { BaseMarketingAgent } from './BaseMarketingAgent.js';
|
|
13
|
+
import { CREATIVE_AGENT_NAME } from './MarketingCreativeAgent.js';
|
|
13
14
|
/** Below this, a request is too short to rank a corpus against. */
|
|
14
15
|
const MIN_RETRIEVAL_QUERY_CHARS = 25;
|
|
15
16
|
/**
|
|
@@ -70,9 +71,26 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
70
71
|
async preparePromptParams(config, payload, params) {
|
|
71
72
|
const result = await super.preparePromptParams(config, payload, params);
|
|
72
73
|
const bag = (payload ?? {});
|
|
74
|
+
// The brand is on the payload (BaseMarketingAgent seeds it from a task input when the workflow runner
|
|
75
|
+
// passes none). The decided program, when this is the workflow's fifth step, is only in the task input.
|
|
73
76
|
const brandId = typeof bag['brandId'] === 'string' ? bag['brandId'] : null;
|
|
74
77
|
if (!brandId || !result.data)
|
|
75
78
|
return result;
|
|
79
|
+
const firstUser = (params.conversationMessages ?? []).find(m => m.role === 'user');
|
|
80
|
+
const taskInput = parseTaskInput(typeof firstUser?.content === 'string' ? firstUser.content : null);
|
|
81
|
+
// Interpret mode (KI-99): the workflow's fifth step handed over a recorded decision. Code assembles the
|
|
82
|
+
// facts the mechanism may rest on; the template shows them as {{ decidedProgramFacts }}.
|
|
83
|
+
const decided = decidedProgramFromTaskInput(taskInput);
|
|
84
|
+
if (decided) {
|
|
85
|
+
try {
|
|
86
|
+
result.data['decidedProgramFacts'] = await this.renderDecidedProgramFacts(decided.programId, params.contextUser);
|
|
87
|
+
LogStatus(`MarketingExperimentationAgent: interpret mode for program ${decided.programId} (${decided.decision}).`);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
LogError('MarketingExperimentationAgent: decided-program facts failed to load — '
|
|
91
|
+
+ (e instanceof Error ? e.message : String(e)));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
76
94
|
try {
|
|
77
95
|
// Rank the corpus against what is actually being asked, when there is something to rank
|
|
78
96
|
// against. The draft hypothesis does not exist yet at injection time — the model has not
|
|
@@ -95,6 +113,51 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
95
113
|
}
|
|
96
114
|
return result;
|
|
97
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* The facts an interpretation may rest on, as text for the prompt: the program's hypothesis, thresholds,
|
|
118
|
+
* decision and reason; its newest program-sourced learning (the finding the workflow wrote); and every
|
|
119
|
+
* observation and segment result it has. Numbers here are exactly the numbers the hook later allows.
|
|
120
|
+
*/
|
|
121
|
+
async renderDecidedProgramFacts(programId, contextUser) {
|
|
122
|
+
const rv = new RunView();
|
|
123
|
+
const [prog, learnings, observations, segments] = await rv.RunViews([
|
|
124
|
+
{
|
|
125
|
+
EntityName: toMarketingEntityName('Programs'), ExtraFilter: `ID='${EscapeSQLString(programId)}'`,
|
|
126
|
+
Fields: ['ID', 'Code', 'Name', 'Hypothesis', 'MetricName', 'MetricBaseline', 'KeepThreshold', 'IterateRangeMin',
|
|
127
|
+
'IterateRangeMax', 'KillThreshold', 'MinSampleSize', 'Decision', 'DecisionReason', 'DecidedEarly', 'Status'],
|
|
128
|
+
MaxRows: 1, ResultType: 'simple', BypassCache: true,
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
EntityName: toMarketingEntityName('Agent Learnings'),
|
|
132
|
+
ExtraFilter: `RelatedProgramID='${EscapeSQLString(programId)}' AND Source='program'`,
|
|
133
|
+
Fields: ['Finding', 'EvidenceBasis', 'Confidence', 'ObservedEventCount', 'ObservedActivityCount', 'DateRecorded'],
|
|
134
|
+
OrderBy: '__mj_CreatedAt DESC', MaxRows: 1, ResultType: 'simple', BypassCache: true,
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
EntityName: toMarketingEntityName('Program Observations'), ExtraFilter: `ProgramID='${EscapeSQLString(programId)}'`,
|
|
138
|
+
Fields: ['Sprint', 'AttributionSource', 'SourceRef', 'ObservedMetric', 'ConversionsCount', 'ActivityCount', 'WindowStart', 'WindowEnd'],
|
|
139
|
+
OrderBy: '__mj_UpdatedAt DESC', MaxRows: 20, ResultType: 'simple', BypassCache: true,
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
EntityName: toMarketingEntityName('Program Segment Results'), ExtraFilter: `ProgramID='${EscapeSQLString(programId)}'`,
|
|
143
|
+
Fields: ['SegmentLabel', 'ObservedMetric', 'ConversionsCount', 'RecommendedDecision'],
|
|
144
|
+
MaxRows: 50, ResultType: 'simple', BypassCache: true,
|
|
145
|
+
},
|
|
146
|
+
], contextUser);
|
|
147
|
+
for (const r of [prog, learnings, observations, segments]) {
|
|
148
|
+
if (!r.Success)
|
|
149
|
+
throw new Error(r.ErrorMessage ?? 'lookup failed');
|
|
150
|
+
}
|
|
151
|
+
const program = prog.Results?.[0] ?? null;
|
|
152
|
+
if (!program)
|
|
153
|
+
throw new Error(`program ${programId} not found`);
|
|
154
|
+
return JSON.stringify({
|
|
155
|
+
program,
|
|
156
|
+
learning: learnings.Results?.[0] ?? null,
|
|
157
|
+
observations: observations.Results ?? [],
|
|
158
|
+
segmentResults: segments.Results ?? [],
|
|
159
|
+
}, null, 2);
|
|
160
|
+
}
|
|
98
161
|
/**
|
|
99
162
|
* The text findings are ranked against, drawn from the conversation.
|
|
100
163
|
*
|
|
@@ -154,6 +217,112 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
154
217
|
await this.attachProposals(baseResult, currentPayload, agentRun, params.contextUser);
|
|
155
218
|
return baseResult;
|
|
156
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* The type driver's proposal gate on the model's OWN `Propose Program` call, before it executes (KI-107) — MJ's
|
|
222
|
+
* `validateActionsNextStep` hook, which the framework itself uses to bounce unknown actions and execution limits
|
|
223
|
+
* with a Retry. A headline over Google's 30 characters comes back to the model as the field-level message it can
|
|
224
|
+
* act on, instead of a refused action result a turn later. The action refuses the same draft anyway (Propose runs
|
|
225
|
+
* the gate; the entity runs it on save) — this is the cheaper, earlier door, not the only one.
|
|
226
|
+
*/
|
|
227
|
+
async validateActionsNextStep(params, nextStep, currentPayload, agentRun, currentStep) {
|
|
228
|
+
const base = await super.validateActionsNextStep(params, nextStep, currentPayload, agentRun, currentStep);
|
|
229
|
+
if (base.step !== nextStep.step)
|
|
230
|
+
return base; // the framework already refused it
|
|
231
|
+
const proposals = (nextStep.actions ?? []).filter(a => a.name.trim().toLowerCase() === 'propose program');
|
|
232
|
+
if (proposals.length === 0)
|
|
233
|
+
return base;
|
|
234
|
+
const bag = (currentPayload ?? {});
|
|
235
|
+
for (const call of proposals) {
|
|
236
|
+
const p = call.params ?? {};
|
|
237
|
+
const str = (k) => typeof p[k] === 'string' ? p[k] : null;
|
|
238
|
+
// Who proposed is a fact of THIS run, not the model's to declare (KI-108: the model wrote ProposedBy=user
|
|
239
|
+
// on CG-06 and agent_strategy on CE-10 — its instructions say which, it sometimes doesn't). An agent's
|
|
240
|
+
// proposal is agent_signal when it rests on a Learning, agent_strategy when it rests on Foundation/Plan.
|
|
241
|
+
const proposedBy = str('ConnectsToType') === 'Learning' ? 'agent_signal' : 'agent_strategy';
|
|
242
|
+
if (p['ProposedBy'] !== proposedBy) {
|
|
243
|
+
LogStatus(`MarketingExperimentationAgent: ProposedBy set to ${proposedBy} on the model's Propose Program call (it sent ${JSON.stringify(p['ProposedBy'] ?? null)}).`);
|
|
244
|
+
call.params = { ...p, ProposedBy: proposedBy };
|
|
245
|
+
}
|
|
246
|
+
const num = (k) => typeof p[k] === 'number' ? p[k] : typeof p[k] === 'string' && p[k] !== '' && !Number.isNaN(Number(p[k])) ? Number(p[k]) : null;
|
|
247
|
+
const brandId = str('BrandID') ?? (typeof bag['brandId'] === 'string' ? bag['brandId'] : null);
|
|
248
|
+
if (!brandId)
|
|
249
|
+
continue;
|
|
250
|
+
try {
|
|
251
|
+
await ProgramMetadataEngine.Instance.Config(false, params.contextUser);
|
|
252
|
+
const typeKey = str('ProgramTypeName') ?? str('ProgramTypeID');
|
|
253
|
+
const typeRow = typeKey ? ProgramMetadataEngine.Instance.Types.find(t => t.Name.trim().toLowerCase() === typeKey.trim().toLowerCase())
|
|
254
|
+
?? ProgramMetadataEngine.Instance.TypeByID(typeKey) : undefined;
|
|
255
|
+
if (!typeRow)
|
|
256
|
+
continue; // Propose Program reports an unresolved type itself
|
|
257
|
+
const levers = p['TacticConfigJSON'];
|
|
258
|
+
const tacticConfigJSON = typeof levers === 'string' ? levers : levers != null ? JSON.stringify(levers) : null;
|
|
259
|
+
// KI-131: an ad image URL must be one this run RECEIVED — the Creative Agent's payload block or the
|
|
260
|
+
// founder's words. The first live run invented one; the prompt's "never invent" is advice, this is the rule.
|
|
261
|
+
const imageBounce = this.creativeImageBounce(tacticConfigJSON, bag, params);
|
|
262
|
+
if (imageBounce) {
|
|
263
|
+
LogStatus(`MarketingExperimentationAgent: Propose Program call bounced — creativeImageUrl provenance`);
|
|
264
|
+
return { step: 'Retry', terminate: false, errorMessage: imageBounce };
|
|
265
|
+
}
|
|
266
|
+
const issues = blockingErrors(await driverProposalIssues({
|
|
267
|
+
Name: str('Name'), Hypothesis: str('Hypothesis'), MetricName: str('MetricName'), MetricBaseline: num('MetricBaseline'),
|
|
268
|
+
Budget: num('Budget'), SegmentCuts: str('SegmentCuts'), ProgramTypeID: typeRow.ID, TacticConfigJSON: tacticConfigJSON,
|
|
269
|
+
}, brandId, params.contextUser));
|
|
270
|
+
if (issues.length > 0) {
|
|
271
|
+
LogStatus(`MarketingExperimentationAgent: Propose Program call bounced before execution — ${issues.map(i => i.code).join(', ')}`);
|
|
272
|
+
return {
|
|
273
|
+
step: 'Retry',
|
|
274
|
+
terminate: false,
|
|
275
|
+
errorMessage: `Propose Program would be refused as written — fix these before calling it: `
|
|
276
|
+
+ issues.map((i, n) => `${n + 1}. ${i.message}`).join(' '),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (e) {
|
|
281
|
+
// Never block on the gate's own failure: the action runs the same gate and reports it properly.
|
|
282
|
+
LogError(`MarketingExperimentationAgent: proposal pre-validation failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return base;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* A Creative delegation never ends the parent's run (KI-134) — MJ's `validateSubAgentNextStep` hook, the
|
|
289
|
+
* sub-agent twin of the action hook above. On the adapt follow-up ("use the Ascend cover, make it square") the
|
|
290
|
+
* model delegated with `terminateAfter: true`; the framework honoured it, so the run ended the moment the
|
|
291
|
+
* Creative agent returned: the square image was generated and hosted, `payload.creative` carried it, but the
|
|
292
|
+
* founder saw a bare "completed" with no message and `creativeImageUrl` never changed. The parent is the only
|
|
293
|
+
* one who can merge `creative` into the levers and answer, so the delegation is forced to hand control back.
|
|
294
|
+
*/
|
|
295
|
+
async validateSubAgentNextStep(params, nextStep, currentPayload, agentRun, currentStep) {
|
|
296
|
+
const base = await super.validateSubAgentNextStep(params, nextStep, currentPayload, agentRun, currentStep);
|
|
297
|
+
if (base.step !== nextStep.step)
|
|
298
|
+
return base; // the framework already refused it
|
|
299
|
+
for (const req of this.getRequestedSubAgents(base)) {
|
|
300
|
+
if (req.name.trim().toLowerCase() === CREATIVE_AGENT_NAME.toLowerCase() && req.terminateAfter) {
|
|
301
|
+
LogStatus(`MarketingExperimentationAgent: ${CREATIVE_AGENT_NAME} delegation asked to terminate the run — overridden, the parent must merge the creative and answer (KI-134)`);
|
|
302
|
+
req.terminateAfter = false;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
return base;
|
|
306
|
+
}
|
|
307
|
+
/** The provenance verdict for a proposal's creativeImageUrl, or null when there is nothing to bounce. */
|
|
308
|
+
creativeImageBounce(tacticConfigJSON, bag, params) {
|
|
309
|
+
if (!tacticConfigJSON)
|
|
310
|
+
return null;
|
|
311
|
+
let url;
|
|
312
|
+
try {
|
|
313
|
+
url = JSON.parse(tacticConfigJSON)['creativeImageUrl'];
|
|
314
|
+
}
|
|
315
|
+
catch {
|
|
316
|
+
return null;
|
|
317
|
+
} // the parser reports bad JSON
|
|
318
|
+
if (typeof url !== 'string' || !url.trim())
|
|
319
|
+
return null;
|
|
320
|
+
const founderTexts = (params.conversationMessages ?? [])
|
|
321
|
+
.filter(m => m.role === 'user')
|
|
322
|
+
.map(m => typeof m.content === 'string' ? m.content : m.content.map(b => (b.type === 'text' ? b.content : '')).join('\n'));
|
|
323
|
+
const verdict = creativeImageProvenance(url.trim(), { payloadCreative: bag['creative'], founderTexts });
|
|
324
|
+
return verdict.ok ? null : verdict.message;
|
|
325
|
+
}
|
|
157
326
|
/**
|
|
158
327
|
* Decides, in code, whether this run may SAVE a proposal or only DRAFT one.
|
|
159
328
|
*
|
|
@@ -197,9 +366,9 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
197
366
|
LogError(`MarketingExperimentationAgent: could not read this run's proposal steps — ${res.ErrorMessage}`);
|
|
198
367
|
return;
|
|
199
368
|
}
|
|
200
|
-
const proposals = (res.Results ?? [])
|
|
369
|
+
const proposals = dedupeProposals((res.Results ?? [])
|
|
201
370
|
.map(step => this.proposalFromStep(step.OutputData))
|
|
202
|
-
.filter((p) => p !== null);
|
|
371
|
+
.filter((p) => p !== null));
|
|
203
372
|
if (proposals.length === 0)
|
|
204
373
|
return;
|
|
205
374
|
bag['proposals'] = proposals;
|
|
@@ -236,6 +405,14 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
236
405
|
if (!draftKey)
|
|
237
406
|
return null;
|
|
238
407
|
delete inputs['DraftOnly']; // the re-submit on Approve must COMMIT
|
|
408
|
+
// D-32: budgets are computed by Propose; the card shows the computed figures, not what the model typed.
|
|
409
|
+
if (outputs['ComputedBudget'] !== undefined)
|
|
410
|
+
inputs['Budget'] = outputs['ComputedBudget'];
|
|
411
|
+
if (outputs['ComputedBudgetPerSprint'] !== undefined)
|
|
412
|
+
inputs['BudgetPerSprint'] = outputs['ComputedBudgetPerSprint'];
|
|
413
|
+
// D-34: the levers with the platform's names cached beside the ids — what the card and the commit carry.
|
|
414
|
+
if (typeof outputs['ResolvedTacticConfigJSON'] === 'string' && outputs['ResolvedTacticConfigJSON'])
|
|
415
|
+
inputs['TacticConfigJSON'] = outputs['ResolvedTacticConfigJSON'];
|
|
239
416
|
return {
|
|
240
417
|
programId: null, code: null, name: text(inputs['Name']), approvalRequestId: null,
|
|
241
418
|
draft: {
|
|
@@ -290,10 +467,11 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
290
467
|
+ 'An interpretation cannot precede the decision it interprets — dropped.');
|
|
291
468
|
return;
|
|
292
469
|
}
|
|
293
|
-
// The
|
|
470
|
+
// The PROGRAM learning the writeback already created — not an override row written in the same
|
|
471
|
+
// second (an early Kill writes both). Read fresh: it was written moments ago.
|
|
294
472
|
const learningRow = (await rv.RunView({
|
|
295
473
|
EntityName: toMarketingEntityName('Agent Learnings'),
|
|
296
|
-
ExtraFilter: `RelatedProgramID='${EscapeSQLString(programId)}'`,
|
|
474
|
+
ExtraFilter: `RelatedProgramID='${EscapeSQLString(programId)}' AND Source='program'`,
|
|
297
475
|
Fields: ['ID', 'Finding'],
|
|
298
476
|
OrderBy: '__mj_CreatedAt DESC', MaxRows: 1, ResultType: 'simple', BypassCache: true,
|
|
299
477
|
}, contextUser)).Results?.[0];
|
|
@@ -302,15 +480,36 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
302
480
|
+ 'nothing to enrich. The decision writeback runs first.');
|
|
303
481
|
return;
|
|
304
482
|
}
|
|
305
|
-
// Observed values live on the segment results the
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
483
|
+
// Observed values live on the segment results AND the observations the pollers wrote — the same facts
|
|
484
|
+
// the interpret turn was shown.
|
|
485
|
+
const [segRes, obsRes] = await rv.RunViews([
|
|
486
|
+
{
|
|
487
|
+
EntityName: toMarketingEntityName('Program Segment Results'),
|
|
488
|
+
ExtraFilter: `ProgramID='${EscapeSQLString(programId)}'`,
|
|
489
|
+
Fields: ['ObservedMetric', 'ConversionsCount'], ResultType: 'simple', BypassCache: true,
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
EntityName: toMarketingEntityName('Program Observations'),
|
|
493
|
+
ExtraFilter: `ProgramID='${EscapeSQLString(programId)}'`,
|
|
494
|
+
Fields: ['ObservedMetric', 'ConversionsCount', 'ActivityCount'], MaxRows: 50, ResultType: 'simple', BypassCache: true,
|
|
495
|
+
},
|
|
496
|
+
], contextUser);
|
|
497
|
+
const observed = (segRes.Success ? segRes.Results ?? [] : []);
|
|
498
|
+
const rows = (obsRes.Success ? obsRes.Results ?? [] : []);
|
|
499
|
+
// The allow-list is EVERY number in the facts the interpret turn was shown (`decidedProgramFacts`: the
|
|
500
|
+
// program row incl. its sample floor and budget, the learning's counts, observations, segment results) —
|
|
501
|
+
// derived from the same object, so the two cannot drift. A hand-picked list once omitted MinSampleSize and
|
|
502
|
+
// refused CG-06's honest "0 events vs 30 required" (KI-109). The observation/segment reads above stay as the
|
|
503
|
+
// hook's own second source for rows written after the facts were rendered.
|
|
504
|
+
const factsText = await this.renderDecidedProgramFacts(programId, contextUser).catch((e) => {
|
|
505
|
+
LogError(`MarketingExperimentationAgent: facts for the allow-list failed — ${e instanceof Error ? e.message : String(e)}`);
|
|
506
|
+
return '';
|
|
507
|
+
});
|
|
311
508
|
const allowedNumbers = [
|
|
312
509
|
exp.MetricBaseline, exp.KeepThreshold, exp.KillThreshold, exp.IterateRangeMin, exp.IterateRangeMax,
|
|
313
510
|
...observed.flatMap(o => [o.ObservedMetric, o.ConversionsCount]),
|
|
511
|
+
...rows.flatMap(o => [o.ObservedMetric, o.ConversionsCount, o.ActivityCount]),
|
|
512
|
+
...(factsText.match(/\d+(?:\.\d+)?/g) ?? []).map(Number),
|
|
314
513
|
];
|
|
315
514
|
const result = enrichFinding(learningRow.Finding ?? '', interpretation, {
|
|
316
515
|
decision: this.toDecisionOutcome(exp.Decision),
|
|
@@ -329,11 +528,23 @@ let MarketingExperimentationAgent = class MarketingExperimentationAgent extends
|
|
|
329
528
|
LogError(`MarketingExperimentationAgent: could not load Learning ${learningRow.ID}.`);
|
|
330
529
|
return;
|
|
331
530
|
}
|
|
531
|
+
// The learning-quality bar at the authoring boundary (KI-51): the enriched text must still
|
|
532
|
+
// state the number, an implication (the mechanism IS the implication), a confidence, and no
|
|
533
|
+
// consultant-speak. A rejected enrichment leaves the factual finding untouched.
|
|
534
|
+
const quality = blockingLearningErrors(validateLearning({
|
|
535
|
+
Finding: result.finding, Implication: interpretation, Confidence: learning.Confidence,
|
|
536
|
+
}));
|
|
537
|
+
if (quality.length > 0) {
|
|
538
|
+
LogStatus(`MarketingExperimentationAgent: interpretation REJECTED by the learning validator for ${exp.Code ?? programId} `
|
|
539
|
+
+ `(${quality.map(q => q.code).join(', ')}). The factual finding stands unchanged.`);
|
|
540
|
+
return;
|
|
541
|
+
}
|
|
332
542
|
learning.Finding = result.finding;
|
|
333
|
-
// Source
|
|
334
|
-
//
|
|
335
|
-
//
|
|
336
|
-
|
|
543
|
+
// Source STAYS 'program' (KI-51): the finding still rests on the measured outcome — the agent
|
|
544
|
+
// added mechanism, not evidence. Flipping it to 'analysis' used to erase the row from
|
|
545
|
+
// scanPriorWork.killedMatches and the approver's PRIOR WORK warning. The agent's
|
|
546
|
+
// contribution is recorded in Evidence so it stays distinguishable from a mechanical row.
|
|
547
|
+
learning.Evidence = `${(learning.Evidence ?? '').trim()}\n\nAgent interpretation (run ${agentRunId}): ${interpretation.trim()}`.trim();
|
|
337
548
|
if (!await learning.Save()) {
|
|
338
549
|
LogError(`MarketingExperimentationAgent: Learning ${learningRow.ID} save failed — `
|
|
339
550
|
+ `${learning.LatestResult?.CompleteMessage ?? 'unknown'}`);
|
|
@@ -368,4 +579,19 @@ MarketingExperimentationAgent = MarketingExperimentationAgent_1 = __decorate([
|
|
|
368
579
|
export { MarketingExperimentationAgent };
|
|
369
580
|
/** Anti-tree-shaking loader — the @RegisterClass above is a side effect. */
|
|
370
581
|
export function LoadMarketingExperimentationAgent() { }
|
|
582
|
+
/**
|
|
583
|
+
* One card per program (KI-124): the model sometimes calls Propose Program twice in a run for the same program (a
|
|
584
|
+
* revision after the user's follow-up, or a plain repeat — CP-Meta drafted twice three seconds apart), and the card
|
|
585
|
+
* showed "(+1 more)" with two identical drafts. The LATER call is the proposal: drafts collapse by name, committed
|
|
586
|
+
* programs by id. Steps arrive in StepNumber order, so last wins.
|
|
587
|
+
*/
|
|
588
|
+
export function dedupeProposals(proposals) {
|
|
589
|
+
const byKey = new Map();
|
|
590
|
+
for (const p of proposals) {
|
|
591
|
+
const key = p.programId ? `id:${p.programId.toLowerCase()}` : `name:${(p.name ?? '').trim().toLowerCase()}`;
|
|
592
|
+
byKey.delete(key);
|
|
593
|
+
byKey.set(key, p);
|
|
594
|
+
}
|
|
595
|
+
return [...byKey.values()];
|
|
596
|
+
}
|
|
371
597
|
//# sourceMappingURL=MarketingExperimentationAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketingExperimentationAgent.js","sourceRoot":"","sources":["../../src/agents/MarketingExperimentationAgent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MarketingExperimentationAgent.js","sourceRoot":"","sources":["../../src/agents/MarketingExperimentationAgent.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAiB,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EACH,sBAAsB,EACtB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,2BAA2B,EAC3B,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAEhB,uBAAuB,GAC1B,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAuBlE,mEAAmE;AACnE,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC;;;;GAIG;AACH,MAAM,qBAAqB,GACvB,wOAAwO,CAAC;AAG7O;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,kBAAkB;;IACjE;;;;;;OAMG;aACqB,uBAAkB,GAAG,wBAAwB,AAA3B,CAA4B;IAEtE,4EAA4E;aACpD,gBAAW,GAAG,sBAAsB,AAAzB,CAA0B;IAE7D;;;;;;;;;;;;OAYG;IACgB,KAAK,CAAC,mBAAmB,CACxC,MAA0B,EAC1B,OAAU,EACV,MAA0B;QAE1B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QACvD,sGAAsG;QACtG,wGAAwG;QACxG,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC;QAC5C,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,SAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEpG,wGAAwG;QACxG,yFAAyF;QACzF,MAAM,OAAO,GAAG,2BAA2B,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACV,IAAI,CAAC;gBACD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBACjH,SAAS,CAAC,6DAA6D,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;YACvH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,QAAQ,CAAC,wEAAwE;sBAC3E,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,wFAAwF;YACxF,yFAAyF;YACzF,yFAAyF;YACzF,mCAAmC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAE/C,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC;gBAClC,OAAO;gBACP,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAC1D,SAAS,CAAC,2CAA2C,EAAE,CAAC,SAAS,CAAC,MAAM,kBAAkB;kBACpF,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,0BAA0B,EAAE,CAAC,qBAAqB,6BAA6B;kBACnG,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,mCAAmC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;QAClI,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,qFAAqF;kBACxF,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,yBAAyB,CAAC,SAAiB,EAAE,WAAqB;QAC5E,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;YAChE;gBACI,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG;gBAChG,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB;oBAC3G,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,CAAC;gBAChH,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACtD;YACD;gBACI,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;gBACpD,WAAW,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,wBAAwB;gBACpF,MAAM,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,cAAc,CAAC;gBACjH,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACtF;YACD;gBACI,UAAU,EAAE,qBAAqB,CAAC,sBAAsB,CAAC,EAAE,WAAW,EAAE,cAAc,eAAe,CAAC,SAAS,CAAC,GAAG;gBACnH,MAAM,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;gBACvI,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACvF;YACD;gBACI,UAAU,EAAE,qBAAqB,CAAC,yBAAyB,CAAC,EAAE,WAAW,EAAE,cAAc,eAAe,CAAC,SAAS,CAAC,GAAG;gBACtH,MAAM,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;gBACrF,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACvD;SACJ,EAAE,WAAW,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,CAAC,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,OAAO;YACP,QAAQ,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;YACxC,YAAY,EAAE,YAAY,CAAC,OAAO,IAAI,EAAE;YACxC,cAAc,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;SACzC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;OAWG;IACK,cAAc,CAAC,MAA0B;QAC7C,kFAAkF;QAClF,yFAAyF;QACzF,sFAAsF;QACtF,8EAA8E;QAC9E,mFAAmF;QACnF,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,OAAO,SAAS,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,IAAI,CAAC,MAAM,GAAG,yBAAyB;YAAE,OAAO,IAAI,CAAC;QAEzD,oEAAoE;QACpE,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACzG,IAAI,aAAa,CAAC,MAAM,GAAG,yBAAyB;YAAE,OAAO,IAAI,CAAC;QAElE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACgB,KAAK,CAAC,uBAAuB,CAC5C,MAA0B,EAC1B,QAA8B,EAC9B,cAAiB,EACjB,QAAoC,EACpC,WAA2C;QAE3C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChH,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,UAAU,CAAC;QAEnD,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,2BAA2B,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,+DAA+D,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1H,CAAC;QACD,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrF,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,0FAA0F;IACvE,KAAK,CAAC,oBAAoB,CACzC,MAA0B,EAC1B,QAA8B,EAC9B,cAAiB,EACjB,QAAoC,EACpC,WAA2C;QAE3C,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7G,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrF,OAAO,UAAU,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACgB,KAAK,CAAC,uBAAuB,CAC5C,MAA0B,EAC1B,QAA8B,EAC9B,cAAiB,EACjB,QAAoC,EACpC,WAA2C;QAE3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1G,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;QACjF,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,CAAC;QAC1G,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,cAAc,IAAI,EAAE,CAA4B,CAAC;QAC9D,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,CAAC,CAAS,EAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3F,0GAA0G;YAC1G,uGAAuG;YACvG,yGAAyG;YACzG,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC5F,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,UAAU,EAAE,CAAC;gBACjC,SAAS,CAAC,oDAAoD,UAAU,iDAAiD,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtK,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;YACnD,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAiB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACnL,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/F,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACD,MAAM,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;uBAC/H,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,IAAI,CAAC,OAAO;oBAAE,SAAS,CAAC,oDAAoD;gBAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBACrC,MAAM,gBAAgB,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9G,oGAAoG;gBACpG,6GAA6G;gBAC7G,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC5E,IAAI,WAAW,EAAE,CAAC;oBACd,SAAS,CAAC,2FAA2F,CAAC,CAAC;oBACvG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;gBAC1E,CAAC;gBACD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,oBAAoB,CAAC;oBACrD,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,GAAG,CAAC,gBAAgB,CAAC;oBACtH,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,EAAE,gBAAgB,EAAE,gBAAgB;iBACxH,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBACjC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpB,SAAS,CAAC,kFAAkF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClI,OAAO;wBACH,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,KAAK;wBAChB,YAAY,EAAE,6EAA6E;8BACrF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;qBACjE,CAAC;gBACN,CAAC;YACL,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,gGAAgG;gBAChG,QAAQ,CAAC,mEAAmE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9H,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACgB,KAAK,CAAC,wBAAwB,CAC7C,MAA0B,EAC1B,QAA8B,EAC9B,cAAiB,EACjB,QAAoC,EACpC,WAA2C;QAE3C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3G,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,mCAAmC;QACjF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,mBAAmB,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC5F,SAAS,CAAC,kCAAkC,mBAAmB,6GAA6G,CAAC,CAAC;gBAC9K,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,yGAAyG;IACjG,mBAAmB,CAAC,gBAA+B,EAAE,GAA4B,EAAE,MAA0B;QACjH,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YAAC,GAAG,GAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAA6B,CAAC,kBAAkB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC,CAAC,8BAA8B;QAClJ,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACxD,MAAM,YAAY,GAAG,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/H,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QACxG,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;OAWG;IACgB,KAAK,CAAC,yBAAyB,CAAc,MAAsC;QAClG,MAAM,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAA8C,CAAC;QACtE,IAAI,OAAO;YAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjG,CAAC;IAED;;;;;;;;;;;OAWG;IACK,KAAK,CAAC,eAAe,CACzB,QAA8B,EAC9B,cAAiB,EACjB,QAAoC,EACpC,WAAqB;QAErB,MAAM,GAAG,GAAG,CAAC,cAAc,IAAI,EAAE,CAA4B,CAAC;QAC9D,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC,OAAO,CAAgC;gBACnE,UAAU,EAAE,wBAAwB;gBACpC,WAAW,EAAE,eAAe,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,uFAAuF;gBAC/I,MAAM,EAAE,CAAC,YAAY,CAAC;gBACtB,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACrE,EAAE,WAAW,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACf,QAAQ,CAAC,6EAA6E,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;gBAC1G,OAAO;YACX,CAAC;YAED,MAAM,SAAS,GAAG,eAAe,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;iBAChD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACnD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;YAClD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEnC,GAAG,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAiD,CAAC;YACxE,IAAI,IAAI,IAAI,IAAI,KAAK,GAAG;gBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YACxD,SAAS,CAAC,kCAAkC,SAAS,CAAC,MAAM,qDAAqD;kBAC3G,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,UAAU,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,+DAA+D,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1H,CAAC;IACL,CAAC;IAED,mGAAmG;IAC3F,gBAAgB,CAAC,UAAyB;QAC9C,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,MAAyI,CAAC;QAC9I,IAAI,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC,CAAC,yDAAyD;QAC1E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvE,MAAM,MAAM,GAAG,CAAC,IAAY,EAA2B,EAAE,CAAC,MAAM,CAAC,WAAW,CACxE,MAAM,CAAC,UAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9H,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE3F,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,uCAAuC;YACnE,wGAAwG;YACxG,IAAI,OAAO,CAAC,gBAAgB,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC1F,IAAI,OAAO,CAAC,yBAAyB,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;YACrH,yGAAyG;YACzG,IAAI,OAAO,OAAO,CAAC,0BAA0B,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,0BAA0B,CAAC;gBAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACrK,OAAO;gBACH,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI;gBAChF,KAAK,EAAE;oBACH,GAAG,EAAE,QAAQ;oBACb,MAAM;oBACN,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACzC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACzC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;oBACvD,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,KAAK,IAAI;iBACzD;aACJ,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,OAAO;YACH,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAClE,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI;SACrE,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,2BAA2B,CAAI,OAAU,EAAE,WAAqB,EAAE,UAAkB;QAC9F,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;QACvD,MAAM,cAAc,GAAG,GAAG,CAAC,+BAA6B,CAAC,kBAAkB,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,GAAG,CAAC,+BAA6B,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAAE,OAAO;QACzE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACrD,QAAQ,CAAC,wEAAwE;kBAC3E,GAAG,+BAA6B,CAAC,WAAW,mDAAmD,CAAC,CAAC;YACvG,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QAEzB,sEAAsE;QACtE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CACmG;YAC5H,UAAU,EAAE,qBAAqB,CAAC,UAAU,CAAC;YAC7C,WAAW,EAAE,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG;YACjD,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;YAC5H,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;SACtD,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,QAAQ,CAAC,0CAA0C,SAAS,qCAAqC,CAAC,CAAC;YACnG,OAAO;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAChB,QAAQ,CAAC,0CAA0C,GAAG,CAAC,IAAI,IAAI,SAAS,6BAA6B;kBAC/F,wEAAwE,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,+FAA+F;QAC/F,8EAA8E;QAC9E,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAgE;YACjG,UAAU,EAAE,qBAAqB,CAAC,iBAAiB,CAAC;YACpD,WAAW,EAAE,qBAAqB,eAAe,CAAC,SAAS,CAAC,wBAAwB;YACpF,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;YACzB,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;SACtF,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,QAAQ,CAAC,2DAA2D,GAAG,CAAC,IAAI,IAAI,SAAS,QAAQ;kBAC3F,uDAAuD,CAAC,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,sGAAsG;QACtG,gCAAgC;QAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC;YACvC;gBACI,UAAU,EAAE,qBAAqB,CAAC,yBAAyB,CAAC;gBAC5D,WAAW,EAAE,cAAc,eAAe,CAAC,SAAS,CAAC,GAAG;gBACxD,MAAM,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aAC1F;YACD;gBACI,UAAU,EAAE,qBAAqB,CAAC,sBAAsB,CAAC;gBACzD,WAAW,EAAE,cAAc,eAAe,CAAC,SAAS,CAAC,GAAG;gBACxD,MAAM,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI;aACxH;SACJ,EAAE,WAAW,CAAC,CAAC;QAChB,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAA8E,CAAC;QAC3I,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAA4G,CAAC;QAErK,uGAAuG;QACvG,yGAAyG;QACzG,2GAA2G;QAC3G,6GAA6G;QAC7G,2EAA2E;QAC3E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YAChG,QAAQ,CAAC,oEAAoE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3H,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,cAAc,GAAqC;YACrD,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,eAAe;YAClG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC;YAChE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC;YAC7E,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;SAC3D,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,CAAC,OAAO,IAAI,EAAE,EAAE,cAAc,EAAE;YACpE,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9C,cAAc;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnB,sFAAsF;YACtF,+DAA+D;YAC/D,SAAS,CAAC,8DAA8D,GAAG,CAAC,IAAI,IAAI,SAAS,GAAG;kBAC1F,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAChF,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,eAAe,CACrC,qBAAqB,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACvC,QAAQ,CAAC,0DAA0D,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QACD,2FAA2F;QAC3F,4FAA4F;QAC5F,gFAAgF;QAChF,MAAM,OAAO,GAAG,sBAAsB,CAAC,gBAAgB,CAAC;YACpD,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU;SACxF,CAAC,CAAC,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,wFAAwF,GAAG,CAAC,IAAI,IAAI,SAAS,GAAG;kBACpH,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACzF,OAAO;QACX,CAAC;QACD,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,8FAA8F;QAC9F,sFAAsF;QACtF,iFAAiF;QACjF,0FAA0F;QAC1F,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,iCAAiC,UAAU,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QACvI,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YACzB,QAAQ,CAAC,2CAA2C,WAAW,CAAC,EAAE,iBAAiB;kBAC7E,GAAG,QAAQ,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO;QACX,CAAC;QACD,SAAS,CAAC,oDAAoD,WAAW,CAAC,EAAE,QAAQ,GAAG,CAAC,IAAI,IAAI,SAAS,GAAG;cACtG,cAAc,UAAU,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,QAAgB;QACtC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,CAAK,OAAO,MAAM,CAAC;YAC/B,KAAK,SAAS,CAAC,CAAE,OAAO,SAAS,CAAC;YAClC,KAAK,MAAM,CAAC,CAAK,OAAO,MAAM,CAAC;YAC/B,KAAK,UAAU,CAAC,CAAC,OAAO,UAAU,CAAC;YACnC;gBACI,wEAAwE;gBACxE,sEAAsE;gBACtE,QAAQ,CAAC,yDAAyD,QAAQ,MAAM;sBAC1E,sDAAsD,CAAC,CAAC;gBAC9D,OAAO,SAAS,CAAC;QACzB,CAAC;IACL,CAAC;;AAjjBQ,6BAA6B;IADzC,aAAa,CAAC,SAAS,EAAE,+BAA+B,CAAC;GAC7C,6BAA6B,CAkjBzC;;AAED,4EAA4E;AAC5E,MAAM,UAAU,iCAAiC,KAAU,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,SAAwB;IACpD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5G,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarketingStrategyOnboardingAgent.d.ts","sourceRoot":"","sources":["../../src/agents/MarketingStrategyOnboardingAgent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAErL,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"MarketingStrategyOnboardingAgent.d.ts","sourceRoot":"","sources":["../../src/agents/MarketingStrategyOnboardingAgent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAErL,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAyF7D,qBACa,gCAAiC,SAAQ,kBAAkB;cAC3C,yBAAyB,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;cAc7F,mBAAmB,CAAC,CAAC,EAC1C,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,kBAAkB,GAC3B,OAAO,CAAC,cAAc,CAAC;IAO1B;;;;;;;;;;;;;OAaG;IACH,+DAA+D;IAC/D,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,4BAA4B;IAiDpC;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;;;;;;;;;;;;;;;;OAiBG;IAEH;;;;;;;OAOG;cACsB,oBAAoB,CAAC,CAAC,EAC3C,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,cAAc,EAAE,CAAC,EACjB,QAAQ,EAAE,0BAA0B,EACpC,WAAW,EAAE,8BAA8B,GAC5C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAYhC,kFAAkF;YACpE,wBAAwB;IAoDtC;;;;;;;;;;;;OAYG;cACsB,qBAAqB,CAAC,CAAC,EAC5C,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC9B,cAAc,EAAE,CAAC,EACjB,QAAQ,EAAE,0BAA0B,EACpC,WAAW,EAAE,8BAA8B,GAC5C,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAiBhC;;;;;;;;;;OAUG;YACW,mBAAmB;IAqBjC;;;;;;;;;;;;;;;;OAgBG;YACW,8BAA8B;IAuC5C,2FAA2F;IAC3F,OAAO,CAAC,4BAA4B;IAapC,yEAAyE;IACzE,OAAO,CAAC,sBAAsB;IAsB9B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;;;;;;;;;;OAWG;cACgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;cAIxD,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAIzE,OAAO,CAAC,eAAe;IA0BvB,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB;IAQ3B;;;;;OAKG;IACH,OAAO,CAAC,iCAAiC;IASzC,8GAA8G;YAChG,kBAAkB;IA+ZhC;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;;;;;;;;OASG;IACH;;;;;;;;;;;;OAYG;YACW,2BAA2B;IAsFzC;;;;;;OAMG;YACW,iBAAiB;IAuB/B;;;;;;;;OAQG;YACW,gCAAgC;IA2C9C,OAAO,CAAC,YAAY;IAqDpB;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;CA0DpB;AAsCD,wBAAgB,oCAAoC,SAAK"}
|
|
@@ -13,7 +13,7 @@ import { getGuidance, decideOnboardingStep, MESSAGING_SECTION_KEY, renderSpecMar
|
|
|
13
13
|
// These are marketing-core services (they moved out of the Actions package on 2026-08-08 to
|
|
14
14
|
// sit where every other open app keeps services). Imported from their defining package rather
|
|
15
15
|
// than re-exported through Actions — see typescript-style.md, no cross-package re-exports.
|
|
16
|
-
import { getOnboardingSnapshot, synthesizeFoundations, synthesizeSection, createStrategyApprovalRequest, synthesizePlan, materializeStrategyVersion, recordStrategyApprovalDecision, writeFinalizeRecommendations, } from '@mj-biz-apps/marketing-core';
|
|
16
|
+
import { getOnboardingSnapshot, synthesizeFoundations, synthesizeSection, sectionKeysFromFailures, readValidationFailures, StrategyMaterializationError, createStrategyApprovalRequest, synthesizePlan, materializeStrategyVersion, recordStrategyApprovalDecision, writeFinalizeRecommendations, } from '@mj-biz-apps/marketing-core';
|
|
17
17
|
/**
|
|
18
18
|
* Marketing Strategy Onboarding Agent — driver class.
|
|
19
19
|
*
|
|
@@ -643,10 +643,16 @@ let MarketingStrategyOnboardingAgent = class MarketingStrategyOnboardingAgent ex
|
|
|
643
643
|
const formAction = typeof formAnswer?.action === 'string' ? formAnswer.action : null;
|
|
644
644
|
const formFeedback = typeof formAnswer?.feedback === 'string' ? formAnswer.feedback.trim() : '';
|
|
645
645
|
payload.founderApproved = formAction === 'approved';
|
|
646
|
-
// Notes typed alongside an approval are approval provenance
|
|
647
|
-
//
|
|
648
|
-
|
|
646
|
+
// Notes typed alongside an approval are approval provenance (stamped on the published
|
|
647
|
+
// version) AND a founder answer (KI-25): they join the objective every re-synthesis reads,
|
|
648
|
+
// so a figure given in the approval box reaches the spec instead of being lost.
|
|
649
|
+
if (formAction === 'approved' && formFeedback) {
|
|
649
650
|
payload.approvalNotes = formFeedback;
|
|
651
|
+
const marker = `[Founder note at approval]: ${formFeedback}`;
|
|
652
|
+
const current = String(payload.augmentedBusinessObjective ?? '');
|
|
653
|
+
if (!current.includes(marker))
|
|
654
|
+
payload.augmentedBusinessObjective = `${current}\n${marker}`.trim();
|
|
655
|
+
}
|
|
650
656
|
if (formAction === 'revise') {
|
|
651
657
|
// An explicit "revise" is a change request — it must clear any
|
|
652
658
|
// finalize intent, not sit alongside it.
|
|
@@ -856,6 +862,29 @@ let MarketingStrategyOnboardingAgent = class MarketingStrategyOnboardingAgent ex
|
|
|
856
862
|
// engine note the prompt reads — the founder fixes the gap in THIS
|
|
857
863
|
// conversation instead of starting over.
|
|
858
864
|
payload.founderApproved = false;
|
|
865
|
+
// KI-25: re-synthesize the sections the refusal names NOW, with the
|
|
866
|
+
// founder's approval note already in the objective, so the re-presented
|
|
867
|
+
// document carries their answer and the next approve publishes.
|
|
868
|
+
// Only Foundations re-synthesize per section; a Plan slot is rebuilt by the plan
|
|
869
|
+
// synthesis at finalize (the missing-plan-keys branch above).
|
|
870
|
+
const refused = sectionKeysFromFailures(readValidationFailures(payload.materializationFailures)).filter(isFoundationKey);
|
|
871
|
+
const resynthed = [];
|
|
872
|
+
if (refused.length > 0 && payload.synthesisDisabled !== true) {
|
|
873
|
+
for (const sectionKey of refused) {
|
|
874
|
+
try {
|
|
875
|
+
const result = await synthesizeSection({ brandId, evidence, businessObjective: String(payload.augmentedBusinessObjective ?? objective), sectionKey, agentRunId, contextUser: params.contextUser, overrideStrong: true });
|
|
876
|
+
this.mergeSpec(payload, brandId, result.persisted ? [result] : [], evidence);
|
|
877
|
+
payload.lastSynthSectionKey = sectionKey;
|
|
878
|
+
resynthed.push(sectionKey);
|
|
879
|
+
}
|
|
880
|
+
catch (synthErr) {
|
|
881
|
+
LogError(`OnboardingShell: re-synthesis of ${sectionKey} after a refused publish failed: ${synthErr instanceof Error ? synthErr.message : synthErr}`);
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
this.commitConsumedTurns(payload, evidence);
|
|
885
|
+
payload.rawSources = [];
|
|
886
|
+
}
|
|
887
|
+
payload.resynthesizedAfterRefusal = resynthed;
|
|
859
888
|
decision = {
|
|
860
889
|
...decision,
|
|
861
890
|
phase: 'Finalize',
|
|
@@ -991,6 +1020,7 @@ let MarketingStrategyOnboardingAgent = class MarketingStrategyOnboardingAgent ex
|
|
|
991
1020
|
payload.materializedVersionNumber = result.versionNumber;
|
|
992
1021
|
payload.materializedSections = result.sectionsWritten;
|
|
993
1022
|
payload.materializationError = undefined;
|
|
1023
|
+
payload.materializationFailures = undefined;
|
|
994
1024
|
// Stamp the working spec, in CODE (the contract: "approved is set by the
|
|
995
1025
|
// materialization step, never by an agent"). Until now nothing did — the
|
|
996
1026
|
// run's own artifact kept saying ready-for-review and the viewer kept
|
|
@@ -1014,6 +1044,8 @@ let MarketingStrategyOnboardingAgent = class MarketingStrategyOnboardingAgent ex
|
|
|
1014
1044
|
}
|
|
1015
1045
|
catch (err) {
|
|
1016
1046
|
payload.materializationError = err instanceof Error ? err.message : String(err);
|
|
1047
|
+
// The problems as data (KI-25 re-synthesis reads the section keys from these, not the text).
|
|
1048
|
+
payload.materializationFailures = err instanceof StrategyMaterializationError ? err.failures : [];
|
|
1017
1049
|
LogError(`OnboardingShell: materialization FAILED — strategy remains Draft: ${payload.materializationError}`);
|
|
1018
1050
|
return;
|
|
1019
1051
|
}
|
|
@@ -1147,6 +1179,8 @@ let MarketingStrategyOnboardingAgent = class MarketingStrategyOnboardingAgent ex
|
|
|
1147
1179
|
publishedVersionNumber: payload.materializedVersionNumber ?? null,
|
|
1148
1180
|
publishedSections: payload.materializedSections ?? null,
|
|
1149
1181
|
publishError: payload.materializationError ?? null,
|
|
1182
|
+
// KI-25: sections re-synthesized with the founder's approval note after a refusal.
|
|
1183
|
+
resynthesizedAfterRefusal: asStringArray(payload.resynthesizedAfterRefusal),
|
|
1150
1184
|
specReadiness: spec?.readiness ?? null,
|
|
1151
1185
|
foundationSlots: spec ? Object.keys(spec.foundations ?? {}).length : 0,
|
|
1152
1186
|
planSlots: spec ? Object.keys(spec.plan ?? {}).length : 0,
|