@elevasis/sdk 1.45.0 → 1.47.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/cli.cjs +36454 -31490
- package/dist/index.d.ts +964 -358
- package/dist/index.js +59 -59
- package/dist/node/index.d.ts +0 -84
- package/dist/node/index.js +2 -2
- package/dist/test-utils/index.d.ts +993 -301
- package/dist/test-utils/index.js +177 -134
- package/dist/worker/index.d.ts +1043 -277
- package/dist/worker/index.js +74 -35
- package/package.json +2 -2
- package/reference/_navigation.md +12 -3
- package/reference/_reference-manifest.json +42 -0
- package/reference/core/exports.mdx +2 -0
- package/reference/packages/core/src/business/README.md +4 -1
- package/reference/packages/core/src/content/README.md +24 -0
- package/reference/packages/core/src/organization-model/README.md +148 -149
- package/reference/packages/core/src/organization-model/readiness/README.md +42 -0
- package/reference/packages/ui/src/features/README.md +28 -28
- package/reference/rules/shared-types.md +21 -0
- package/reference/scaffold/core/organization-graph.mdx +2 -3
- package/reference/scaffold/core/organization-model.mdx +2 -6
- package/reference/scaffold/operations/propagation-pipeline.md +15 -16
- package/reference/scaffold/operations/scaffold-maintenance.md +3 -2
- package/reference/scaffold/operations/workflow-recipes.md +2 -2
- package/reference/scaffold/recipes/customize-crm-actions.md +5 -5
- package/reference/scaffold/recipes/extend-content.md +301 -0
- package/reference/scaffold/recipes/extend-lead-gen.md +14 -16
- package/reference/scaffold/recipes/index.md +4 -1
- package/reference/scaffold/reference/contracts.md +18 -55
- package/reference/scaffold/reference/feature-registry.md +3 -0
- package/reference/scaffold/reference/glossary.md +1 -1
- package/reference/scaffold/ui/customization.md +2 -2
- package/reference/scaffold/ui/feature-shell.mdx +1 -3
- package/reference/sdk/cli-management.mdx +199 -30
- package/reference/sdk/cli.mdx +90 -13
- package/reference/sdk/framework/agent.mdx +6 -0
- package/reference/sdk/platform-tools/adapters-platform.mdx +3 -1
- package/reference/sdk/platform-tools/index.mdx +0 -2
- package/reference/sdk/resources/patterns.mdx +14 -6
- package/reference/ui/exports.mdx +1 -0
package/dist/test-utils/index.js
CHANGED
|
@@ -638,13 +638,13 @@ var init_magic_string_es = __esm({
|
|
|
638
638
|
}
|
|
639
639
|
};
|
|
640
640
|
Chunk = class _Chunk {
|
|
641
|
-
constructor(start, end,
|
|
641
|
+
constructor(start, end, content2) {
|
|
642
642
|
this.start = start;
|
|
643
643
|
this.end = end;
|
|
644
|
-
this.original =
|
|
644
|
+
this.original = content2;
|
|
645
645
|
this.intro = "";
|
|
646
646
|
this.outro = "";
|
|
647
|
-
this.content =
|
|
647
|
+
this.content = content2;
|
|
648
648
|
this.storeName = false;
|
|
649
649
|
this.edited = false;
|
|
650
650
|
{
|
|
@@ -652,11 +652,11 @@ var init_magic_string_es = __esm({
|
|
|
652
652
|
this.next = null;
|
|
653
653
|
}
|
|
654
654
|
}
|
|
655
|
-
appendLeft(
|
|
656
|
-
this.outro +=
|
|
655
|
+
appendLeft(content2) {
|
|
656
|
+
this.outro += content2;
|
|
657
657
|
}
|
|
658
|
-
appendRight(
|
|
659
|
-
this.intro = this.intro +
|
|
658
|
+
appendRight(content2) {
|
|
659
|
+
this.intro = this.intro + content2;
|
|
660
660
|
}
|
|
661
661
|
clone() {
|
|
662
662
|
const chunk = new _Chunk(this.start, this.end, this.original);
|
|
@@ -684,8 +684,8 @@ var init_magic_string_es = __esm({
|
|
|
684
684
|
chunk = chunk.previous;
|
|
685
685
|
}
|
|
686
686
|
}
|
|
687
|
-
edit(
|
|
688
|
-
this.content =
|
|
687
|
+
edit(content2, storeName, contentOnly) {
|
|
688
|
+
this.content = content2;
|
|
689
689
|
if (!contentOnly) {
|
|
690
690
|
this.intro = "";
|
|
691
691
|
this.outro = "";
|
|
@@ -694,11 +694,11 @@ var init_magic_string_es = __esm({
|
|
|
694
694
|
this.edited = true;
|
|
695
695
|
return this;
|
|
696
696
|
}
|
|
697
|
-
prependLeft(
|
|
698
|
-
this.outro =
|
|
697
|
+
prependLeft(content2) {
|
|
698
|
+
this.outro = content2 + this.outro;
|
|
699
699
|
}
|
|
700
|
-
prependRight(
|
|
701
|
-
this.intro =
|
|
700
|
+
prependRight(content2) {
|
|
701
|
+
this.intro = content2 + this.intro;
|
|
702
702
|
}
|
|
703
703
|
reset() {
|
|
704
704
|
this.intro = "";
|
|
@@ -805,10 +805,10 @@ var init_magic_string_es = __esm({
|
|
|
805
805
|
this.rawSegments = this.raw[this.generatedCodeLine] = [];
|
|
806
806
|
this.pending = null;
|
|
807
807
|
}
|
|
808
|
-
addEdit(sourceIndex,
|
|
809
|
-
if (
|
|
810
|
-
const contentLengthMinusOne =
|
|
811
|
-
let contentLineEnd =
|
|
808
|
+
addEdit(sourceIndex, content2, loc, nameIndex) {
|
|
809
|
+
if (content2.length) {
|
|
810
|
+
const contentLengthMinusOne = content2.length - 1;
|
|
811
|
+
let contentLineEnd = content2.indexOf("\n", 0);
|
|
812
812
|
let previousContentLineEnd = -1;
|
|
813
813
|
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
|
814
814
|
const segment2 = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
@@ -820,17 +820,17 @@ var init_magic_string_es = __esm({
|
|
|
820
820
|
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
821
821
|
this.generatedCodeColumn = 0;
|
|
822
822
|
previousContentLineEnd = contentLineEnd;
|
|
823
|
-
contentLineEnd =
|
|
823
|
+
contentLineEnd = content2.indexOf("\n", contentLineEnd + 1);
|
|
824
824
|
}
|
|
825
825
|
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
826
826
|
if (nameIndex >= 0) {
|
|
827
827
|
segment.push(nameIndex);
|
|
828
828
|
}
|
|
829
829
|
this.rawSegments.push(segment);
|
|
830
|
-
this.advance(
|
|
830
|
+
this.advance(content2.slice(previousContentLineEnd + 1));
|
|
831
831
|
} else if (this.pending) {
|
|
832
832
|
this.rawSegments.push(this.pending);
|
|
833
|
-
this.advance(
|
|
833
|
+
this.advance(content2);
|
|
834
834
|
}
|
|
835
835
|
this.pending = null;
|
|
836
836
|
}
|
|
@@ -917,32 +917,32 @@ var init_magic_string_es = __esm({
|
|
|
917
917
|
addSourcemapLocation(char) {
|
|
918
918
|
this.sourcemapLocations.add(char);
|
|
919
919
|
}
|
|
920
|
-
append(
|
|
921
|
-
if (typeof
|
|
922
|
-
this.outro +=
|
|
920
|
+
append(content2) {
|
|
921
|
+
if (typeof content2 !== "string") throw new TypeError("outro content must be a string");
|
|
922
|
+
this.outro += content2;
|
|
923
923
|
return this;
|
|
924
924
|
}
|
|
925
|
-
appendLeft(index2,
|
|
925
|
+
appendLeft(index2, content2) {
|
|
926
926
|
index2 = index2 + this.offset;
|
|
927
|
-
if (typeof
|
|
927
|
+
if (typeof content2 !== "string") throw new TypeError("inserted content must be a string");
|
|
928
928
|
this._split(index2);
|
|
929
929
|
const chunk = this.byEnd[index2];
|
|
930
930
|
if (chunk) {
|
|
931
|
-
chunk.appendLeft(
|
|
931
|
+
chunk.appendLeft(content2);
|
|
932
932
|
} else {
|
|
933
|
-
this.intro +=
|
|
933
|
+
this.intro += content2;
|
|
934
934
|
}
|
|
935
935
|
return this;
|
|
936
936
|
}
|
|
937
|
-
appendRight(index2,
|
|
937
|
+
appendRight(index2, content2) {
|
|
938
938
|
index2 = index2 + this.offset;
|
|
939
|
-
if (typeof
|
|
939
|
+
if (typeof content2 !== "string") throw new TypeError("inserted content must be a string");
|
|
940
940
|
this._split(index2);
|
|
941
941
|
const chunk = this.byStart[index2];
|
|
942
942
|
if (chunk) {
|
|
943
|
-
chunk.appendRight(
|
|
943
|
+
chunk.appendRight(content2);
|
|
944
944
|
} else {
|
|
945
|
-
this.outro +=
|
|
945
|
+
this.outro += content2;
|
|
946
946
|
}
|
|
947
947
|
return this;
|
|
948
948
|
}
|
|
@@ -1096,23 +1096,23 @@ var init_magic_string_es = __esm({
|
|
|
1096
1096
|
"magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)"
|
|
1097
1097
|
);
|
|
1098
1098
|
}
|
|
1099
|
-
insertLeft(index2,
|
|
1099
|
+
insertLeft(index2, content2) {
|
|
1100
1100
|
if (!warned.insertLeft) {
|
|
1101
1101
|
console.warn(
|
|
1102
1102
|
"magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"
|
|
1103
1103
|
);
|
|
1104
1104
|
warned.insertLeft = true;
|
|
1105
1105
|
}
|
|
1106
|
-
return this.appendLeft(index2,
|
|
1106
|
+
return this.appendLeft(index2, content2);
|
|
1107
1107
|
}
|
|
1108
|
-
insertRight(index2,
|
|
1108
|
+
insertRight(index2, content2) {
|
|
1109
1109
|
if (!warned.insertRight) {
|
|
1110
1110
|
console.warn(
|
|
1111
1111
|
"magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"
|
|
1112
1112
|
);
|
|
1113
1113
|
warned.insertRight = true;
|
|
1114
1114
|
}
|
|
1115
|
-
return this.prependRight(index2,
|
|
1115
|
+
return this.prependRight(index2, content2);
|
|
1116
1116
|
}
|
|
1117
1117
|
move(start, end, index2) {
|
|
1118
1118
|
start = start + this.offset;
|
|
@@ -1144,14 +1144,14 @@ var init_magic_string_es = __esm({
|
|
|
1144
1144
|
if (!newRight) this.lastChunk = last;
|
|
1145
1145
|
return this;
|
|
1146
1146
|
}
|
|
1147
|
-
overwrite(start, end,
|
|
1147
|
+
overwrite(start, end, content2, options) {
|
|
1148
1148
|
options = options || {};
|
|
1149
|
-
return this.update(start, end,
|
|
1149
|
+
return this.update(start, end, content2, { ...options, overwrite: !options.contentOnly });
|
|
1150
1150
|
}
|
|
1151
|
-
update(start, end,
|
|
1151
|
+
update(start, end, content2, options) {
|
|
1152
1152
|
start = start + this.offset;
|
|
1153
1153
|
end = end + this.offset;
|
|
1154
|
-
if (typeof
|
|
1154
|
+
if (typeof content2 !== "string") throw new TypeError("replacement content must be a string");
|
|
1155
1155
|
if (this.original.length !== 0) {
|
|
1156
1156
|
while (start < 0) start += this.original.length;
|
|
1157
1157
|
while (end < 0) end += this.original.length;
|
|
@@ -1193,40 +1193,40 @@ var init_magic_string_es = __esm({
|
|
|
1193
1193
|
chunk = chunk.next;
|
|
1194
1194
|
chunk.edit("", false);
|
|
1195
1195
|
}
|
|
1196
|
-
first.edit(
|
|
1196
|
+
first.edit(content2, storeName, !overwrite);
|
|
1197
1197
|
} else {
|
|
1198
|
-
const newChunk = new Chunk(start, end, "").edit(
|
|
1198
|
+
const newChunk = new Chunk(start, end, "").edit(content2, storeName);
|
|
1199
1199
|
last.next = newChunk;
|
|
1200
1200
|
newChunk.previous = last;
|
|
1201
1201
|
}
|
|
1202
1202
|
return this;
|
|
1203
1203
|
}
|
|
1204
|
-
prepend(
|
|
1205
|
-
if (typeof
|
|
1206
|
-
this.intro =
|
|
1204
|
+
prepend(content2) {
|
|
1205
|
+
if (typeof content2 !== "string") throw new TypeError("outro content must be a string");
|
|
1206
|
+
this.intro = content2 + this.intro;
|
|
1207
1207
|
return this;
|
|
1208
1208
|
}
|
|
1209
|
-
prependLeft(index2,
|
|
1209
|
+
prependLeft(index2, content2) {
|
|
1210
1210
|
index2 = index2 + this.offset;
|
|
1211
|
-
if (typeof
|
|
1211
|
+
if (typeof content2 !== "string") throw new TypeError("inserted content must be a string");
|
|
1212
1212
|
this._split(index2);
|
|
1213
1213
|
const chunk = this.byEnd[index2];
|
|
1214
1214
|
if (chunk) {
|
|
1215
|
-
chunk.prependLeft(
|
|
1215
|
+
chunk.prependLeft(content2);
|
|
1216
1216
|
} else {
|
|
1217
|
-
this.intro =
|
|
1217
|
+
this.intro = content2 + this.intro;
|
|
1218
1218
|
}
|
|
1219
1219
|
return this;
|
|
1220
1220
|
}
|
|
1221
|
-
prependRight(index2,
|
|
1221
|
+
prependRight(index2, content2) {
|
|
1222
1222
|
index2 = index2 + this.offset;
|
|
1223
|
-
if (typeof
|
|
1223
|
+
if (typeof content2 !== "string") throw new TypeError("inserted content must be a string");
|
|
1224
1224
|
this._split(index2);
|
|
1225
1225
|
const chunk = this.byStart[index2];
|
|
1226
1226
|
if (chunk) {
|
|
1227
|
-
chunk.prependRight(
|
|
1227
|
+
chunk.prependRight(content2);
|
|
1228
1228
|
} else {
|
|
1229
|
-
this.outro =
|
|
1229
|
+
this.outro = content2 + this.outro;
|
|
1230
1230
|
}
|
|
1231
1231
|
return this;
|
|
1232
1232
|
}
|
|
@@ -4966,8 +4966,8 @@ function preview(text, n2 = 120) {
|
|
|
4966
4966
|
// ../core/src/platform/utils/token-counter.ts
|
|
4967
4967
|
var CHARS_PER_TOKEN = 3.5;
|
|
4968
4968
|
function estimateTokens(text) {
|
|
4969
|
-
const
|
|
4970
|
-
const chars4 =
|
|
4969
|
+
const content2 = typeof text === "string" ? text : JSON.stringify(text);
|
|
4970
|
+
const chars4 = content2.length;
|
|
4971
4971
|
return Math.ceil(chars4 / CHARS_PER_TOKEN);
|
|
4972
4972
|
}
|
|
4973
4973
|
function truncationCharBudget(maxTokens, noticeLength = 0) {
|
|
@@ -5007,7 +5007,7 @@ function buildUntrustedDataPolicy(securityLevel) {
|
|
|
5007
5007
|
}
|
|
5008
5008
|
function buildAgentMessages(systemPrompt, memory, currentInput, securityLevel, conversationHistory = []) {
|
|
5009
5009
|
const policy = buildUntrustedDataPolicy(securityLevel);
|
|
5010
|
-
const historyMessages = conversationHistory.map(({ role, content }) => ({ role, content }));
|
|
5010
|
+
const historyMessages = conversationHistory.map(({ role, content: content2 }) => ({ role, content: content2 }));
|
|
5011
5011
|
if (historyMessages.length > 0) {
|
|
5012
5012
|
historyMessages[historyMessages.length - 1].cacheBreakpoint = true;
|
|
5013
5013
|
}
|
|
@@ -5521,11 +5521,11 @@ function safeStructuralPrefix(raw, cutAt) {
|
|
|
5521
5521
|
const base = stripDanglingTail(raw.slice(0, cutPoint), stack[stack.length - 1] === "}");
|
|
5522
5522
|
return base + [...stack].reverse().join("");
|
|
5523
5523
|
}
|
|
5524
|
-
function truncateContent(
|
|
5525
|
-
const estimated = estimateTokens(
|
|
5526
|
-
if (estimated <= maxTokens) return { content };
|
|
5524
|
+
function truncateContent(content2, maxTokens) {
|
|
5525
|
+
const estimated = estimateTokens(content2);
|
|
5526
|
+
if (estimated <= maxTokens) return { content: content2 };
|
|
5527
5527
|
const cutAt = truncationCharBudget(maxTokens, CLOSING_BRACKET_RESERVE);
|
|
5528
|
-
const safeContent = safeStructuralPrefix(
|
|
5528
|
+
const safeContent = safeStructuralPrefix(content2, cutAt);
|
|
5529
5529
|
const omittedTokens = estimated - maxTokens;
|
|
5530
5530
|
return { content: safeContent, truncated: { omittedTokens } };
|
|
5531
5531
|
}
|
|
@@ -5621,9 +5621,9 @@ async function executeToolCall(iterationContext, action) {
|
|
|
5621
5621
|
const validatedResult = tool.outputSchema.parse(rawResult);
|
|
5622
5622
|
let boundedResult = validatedResult;
|
|
5623
5623
|
if (tool.maxOutputTokens !== void 0) {
|
|
5624
|
-
const { content, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
|
|
5624
|
+
const { content: content2, truncated } = truncateContent(JSON.stringify(validatedResult), tool.maxOutputTokens);
|
|
5625
5625
|
if (truncated) {
|
|
5626
|
-
boundedResult =
|
|
5626
|
+
boundedResult = content2;
|
|
5627
5627
|
}
|
|
5628
5628
|
}
|
|
5629
5629
|
const toolEndTime = Date.now();
|
|
@@ -5932,7 +5932,7 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
5932
5932
|
if (!response.memoryOps) return;
|
|
5933
5933
|
const { memoryOps } = response;
|
|
5934
5934
|
if (memoryOps.set) {
|
|
5935
|
-
for (const [key,
|
|
5935
|
+
for (const [key, content2] of Object.entries(memoryOps.set)) {
|
|
5936
5936
|
if (!validateMemoryKeyOwnership(key, logger, iteration)) {
|
|
5937
5937
|
continue;
|
|
5938
5938
|
}
|
|
@@ -5940,7 +5940,7 @@ async function processMemory(memoryManager, response, logger, iteration) {
|
|
|
5940
5940
|
"memory-set",
|
|
5941
5941
|
iteration,
|
|
5942
5942
|
// Auto-stringify non-string values (arrays, objects, etc.)
|
|
5943
|
-
() => memoryManager.set(key, typeof
|
|
5943
|
+
() => memoryManager.set(key, typeof content2 === "string" ? content2 : JSON.stringify(content2)),
|
|
5944
5944
|
() => `Set: ${key}`
|
|
5945
5945
|
);
|
|
5946
5946
|
}
|
|
@@ -6060,13 +6060,13 @@ var MAX_TOOL_RESULT_TOKENS = 4e3;
|
|
|
6060
6060
|
|
|
6061
6061
|
// ../core/src/execution/engine/agent/memory/manager.ts
|
|
6062
6062
|
var ENVELOPE_FULL_RESULT_WINDOW = 3;
|
|
6063
|
-
function parseIfJson(
|
|
6064
|
-
const trimmed =
|
|
6065
|
-
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return
|
|
6063
|
+
function parseIfJson(content2) {
|
|
6064
|
+
const trimmed = content2.trim();
|
|
6065
|
+
if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) return content2;
|
|
6066
6066
|
try {
|
|
6067
|
-
return JSON.parse(
|
|
6067
|
+
return JSON.parse(content2);
|
|
6068
6068
|
} catch {
|
|
6069
|
-
return
|
|
6069
|
+
return content2;
|
|
6070
6070
|
}
|
|
6071
6071
|
}
|
|
6072
6072
|
function isInTurnScope(entry, currentTurn) {
|
|
@@ -6129,8 +6129,8 @@ var MemoryManager = class {
|
|
|
6129
6129
|
* @param key - Session memory key
|
|
6130
6130
|
* @param content - String content from agent
|
|
6131
6131
|
*/
|
|
6132
|
-
set(key,
|
|
6133
|
-
const entryTokens = estimateTokens(
|
|
6132
|
+
set(key, content2, source = "model") {
|
|
6133
|
+
const entryTokens = estimateTokens(content2);
|
|
6134
6134
|
let truncated;
|
|
6135
6135
|
if (entryTokens > MAX_SINGLE_ENTRY_TOKENS) {
|
|
6136
6136
|
const truncateTime = Date.now();
|
|
@@ -6142,13 +6142,13 @@ var MemoryManager = class {
|
|
|
6142
6142
|
truncateTime,
|
|
6143
6143
|
0
|
|
6144
6144
|
);
|
|
6145
|
-
const result = truncateContent(
|
|
6146
|
-
|
|
6145
|
+
const result = truncateContent(content2, MAX_SINGLE_ENTRY_TOKENS);
|
|
6146
|
+
content2 = result.content;
|
|
6147
6147
|
truncated = result.truncated;
|
|
6148
6148
|
}
|
|
6149
6149
|
this.memory.sessionMemory[key] = {
|
|
6150
6150
|
type: "context",
|
|
6151
|
-
content,
|
|
6151
|
+
content: content2,
|
|
6152
6152
|
timestamp: Date.now(),
|
|
6153
6153
|
turnNumber: null,
|
|
6154
6154
|
// Session memory entries are not turn-specific
|
|
@@ -6158,7 +6158,7 @@ var MemoryManager = class {
|
|
|
6158
6158
|
...truncated && { truncated },
|
|
6159
6159
|
// Screened once, here, instead of by re-scanning the whole envelope on every iteration this
|
|
6160
6160
|
// key gets re-sent for — see `MemoryEntry.warnings`.
|
|
6161
|
-
warnings: sanitizeUserInput(
|
|
6161
|
+
warnings: sanitizeUserInput(content2).warnings
|
|
6162
6162
|
};
|
|
6163
6163
|
}
|
|
6164
6164
|
/**
|
|
@@ -6196,14 +6196,14 @@ var MemoryManager = class {
|
|
|
6196
6196
|
iterationNumber: entry.iterationNumber
|
|
6197
6197
|
});
|
|
6198
6198
|
}
|
|
6199
|
-
let
|
|
6199
|
+
let content2 = entry.content;
|
|
6200
6200
|
let truncated;
|
|
6201
6201
|
if (entry.type === "tool-result" || entry.type === "error") {
|
|
6202
|
-
const before =
|
|
6203
|
-
const result = truncateContent(
|
|
6204
|
-
|
|
6202
|
+
const before = content2;
|
|
6203
|
+
const result = truncateContent(content2, MAX_TOOL_RESULT_TOKENS);
|
|
6204
|
+
content2 = result.content;
|
|
6205
6205
|
truncated = result.truncated;
|
|
6206
|
-
if (
|
|
6206
|
+
if (content2 !== before) {
|
|
6207
6207
|
const truncateTime = Date.now();
|
|
6208
6208
|
this.logger?.action(
|
|
6209
6209
|
"memory-tool-result-truncate",
|
|
@@ -6217,12 +6217,12 @@ var MemoryManager = class {
|
|
|
6217
6217
|
}
|
|
6218
6218
|
this.memory.history.push({
|
|
6219
6219
|
...entry,
|
|
6220
|
-
content,
|
|
6220
|
+
content: content2,
|
|
6221
6221
|
timestamp: Date.now(),
|
|
6222
6222
|
...truncated && { truncated },
|
|
6223
6223
|
// Screened once, here, instead of by re-scanning the whole accumulated envelope on every
|
|
6224
6224
|
// iteration this entry gets re-sent for — see `MemoryEntry.warnings`.
|
|
6225
|
-
warnings: sanitizeUserInput(
|
|
6225
|
+
warnings: sanitizeUserInput(content2).warnings
|
|
6226
6226
|
});
|
|
6227
6227
|
this.autoCompact();
|
|
6228
6228
|
}
|
|
@@ -8147,28 +8147,42 @@ z.object({
|
|
|
8147
8147
|
limit: z.number().int(),
|
|
8148
8148
|
offset: z.number().int()
|
|
8149
8149
|
});
|
|
8150
|
-
var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member"]);
|
|
8150
|
+
var AcqArtifactOwnerKindSchema = z.enum(["company", "contact", "deal", "list", "list_member", "organization"]);
|
|
8151
8151
|
z.object({
|
|
8152
8152
|
ownerKind: AcqArtifactOwnerKindSchema,
|
|
8153
|
-
ownerId: UuidSchema
|
|
8153
|
+
ownerId: UuidSchema.optional()
|
|
8154
8154
|
}).strict();
|
|
8155
|
+
var PipelineIdSchema = z.string().trim().min(1).max(255);
|
|
8155
8156
|
z.object({
|
|
8156
8157
|
ownerKind: AcqArtifactOwnerKindSchema,
|
|
8157
|
-
|
|
8158
|
+
// Nullable + optional: an org-owned artifact (ownerKind: 'organization') has no
|
|
8159
|
+
// single owning entity row. See the comment on AcqArtifactOwnerKindSchema above.
|
|
8160
|
+
ownerId: UuidSchema.nullable().optional(),
|
|
8158
8161
|
kind: z.string().trim().min(1).max(255),
|
|
8159
8162
|
content: z.record(z.string(), z.unknown()),
|
|
8160
|
-
sourceExecutionId: UuidSchema.optional()
|
|
8163
|
+
sourceExecutionId: UuidSchema.optional(),
|
|
8164
|
+
// Nullable + optional: acquisition's own artifacts (audits, proposals, ICP docs) predate the
|
|
8165
|
+
// pipeline concept and have none. `getActiveArtifact` filters on it, so any artifact meant to
|
|
8166
|
+
// be resolvable as "the active document for pipeline X" MUST supply it -- artifacts-platform-tool
|
|
8167
|
+
// .mdx Step 3 defect 1.
|
|
8168
|
+
pipelineId: PipelineIdSchema.nullable().optional()
|
|
8161
8169
|
}).strict();
|
|
8162
8170
|
var AcqArtifactResponseSchema = z.object({
|
|
8163
8171
|
id: z.string(),
|
|
8164
8172
|
organizationId: z.string(),
|
|
8165
8173
|
ownerKind: z.string(),
|
|
8166
|
-
|
|
8174
|
+
// Nullable as of content-pipeline-foundation D14: an org-owned artifact has no owning entity row.
|
|
8175
|
+
// CreateArtifactRequestSchema already accepted a null ownerId; this response schema not doing so
|
|
8176
|
+
// was Step 3 defect 2 -- an org-owned artifact inserted fine and then failed serialization.
|
|
8177
|
+
ownerId: z.string().nullable(),
|
|
8167
8178
|
kind: z.string(),
|
|
8179
|
+
pipelineId: z.string().nullable(),
|
|
8168
8180
|
content: z.record(z.string(), z.unknown()),
|
|
8169
8181
|
sourceExecutionId: z.string().nullable(),
|
|
8170
8182
|
createdBy: z.string().nullable(),
|
|
8171
8183
|
createdAt: z.string(),
|
|
8184
|
+
updatedAt: z.string(),
|
|
8185
|
+
isActive: z.boolean(),
|
|
8172
8186
|
version: z.number().int()
|
|
8173
8187
|
});
|
|
8174
8188
|
z.object({
|
|
@@ -8634,6 +8648,31 @@ createAdapter("list", [
|
|
|
8634
8648
|
"listPendingContactIds"
|
|
8635
8649
|
]);
|
|
8636
8650
|
|
|
8651
|
+
// src/worker/adapters/artifacts.ts
|
|
8652
|
+
createAdapter("artifacts", [
|
|
8653
|
+
"listArtifacts",
|
|
8654
|
+
"createArtifact",
|
|
8655
|
+
"getActive"
|
|
8656
|
+
]);
|
|
8657
|
+
|
|
8658
|
+
// src/worker/adapters/content.ts
|
|
8659
|
+
var METHODS = [
|
|
8660
|
+
"createItem",
|
|
8661
|
+
"getItem",
|
|
8662
|
+
"listItems",
|
|
8663
|
+
"updateItem",
|
|
8664
|
+
"createAttempt",
|
|
8665
|
+
"listAttempts",
|
|
8666
|
+
"updateAttempt",
|
|
8667
|
+
"createSourceAsset",
|
|
8668
|
+
"getSourceAsset",
|
|
8669
|
+
"listSourceAssets",
|
|
8670
|
+
"updateSourceAsset",
|
|
8671
|
+
"createDistribution",
|
|
8672
|
+
"updateDistribution"
|
|
8673
|
+
];
|
|
8674
|
+
createAdapter("content", METHODS);
|
|
8675
|
+
|
|
8637
8676
|
// src/worker/adapters/pdf.ts
|
|
8638
8677
|
createAdapter("pdf", ["render", "renderToBuffer"]);
|
|
8639
8678
|
|
|
@@ -8960,9 +8999,23 @@ function compileOrganizationOntology(model) {
|
|
|
8960
8999
|
addLegacyActionProjections(ontology, diagnostics, sourcesById, model.actions ?? {}, model.entities ?? {});
|
|
8961
9000
|
return { ontology: sortResolvedOntologyIndex(ontology), diagnostics };
|
|
8962
9001
|
}
|
|
9002
|
+
|
|
9003
|
+
// ../core/src/organization-model/readiness/profile-registry.ts
|
|
9004
|
+
var _builtInProfileValidators = /* @__PURE__ */ new Map();
|
|
9005
|
+
function getBuiltInReadinessProfile(profileId) {
|
|
9006
|
+
return _builtInProfileValidators.get(profileId);
|
|
9007
|
+
}
|
|
9008
|
+
var _interfaceMarkerResolvers = /* @__PURE__ */ new Map();
|
|
9009
|
+
function interfaceMarkerKey(systemPath, interfaceKey) {
|
|
9010
|
+
return `${systemPath}::${interfaceKey}`;
|
|
9011
|
+
}
|
|
9012
|
+
function resolveReadinessInterfaceMarker(model, systemPath, interfaceKey) {
|
|
9013
|
+
return _interfaceMarkerResolvers.get(interfaceMarkerKey(systemPath, interfaceKey))?.(model);
|
|
9014
|
+
}
|
|
9015
|
+
|
|
9016
|
+
// ../core/src/organization-model/domains/systems.ts
|
|
8963
9017
|
var SystemKindSchema = z.enum(["product", "operational", "platform", "diagnostic"]).meta({ label: "System kind", color: "blue" });
|
|
8964
9018
|
var SystemLifecycleSchema = z.enum(["draft", "beta", "active", "deprecated", "archived"]).meta({ label: "Lifecycle", color: "teal" });
|
|
8965
|
-
var SystemStatusSchema = z.enum(["active", "deprecated", "archived"]).meta({ label: "Status", color: "teal" });
|
|
8966
9019
|
var SystemIdSchema = ModelIdSchema;
|
|
8967
9020
|
var SystemPathSchema = z.string().trim().min(1).regex(
|
|
8968
9021
|
/^[a-z0-9][a-z0-9-]*(?:\.[a-z0-9][a-z0-9-]*)*$/,
|
|
@@ -8976,8 +9029,7 @@ z.string().trim().min(1).max(200).regex(
|
|
|
8976
9029
|
var SystemUiSchema = z.object({
|
|
8977
9030
|
path: PathSchema,
|
|
8978
9031
|
surfaces: ReferenceIdsSchema,
|
|
8979
|
-
icon: IconNameSchema.optional()
|
|
8980
|
-
order: z.number().int().optional()
|
|
9032
|
+
icon: IconNameSchema.optional()
|
|
8981
9033
|
});
|
|
8982
9034
|
var SystemInterfaceKeySchema = ModelIdSchema;
|
|
8983
9035
|
var SystemInterfaceLifecycleSchema = z.enum(["draft", "active", "disabled", "deprecated", "archived"]).meta({ label: "System interface lifecycle", color: "teal" });
|
|
@@ -9037,14 +9089,11 @@ var SystemApiInterfaceSchema = z.object({
|
|
|
9037
9089
|
*/
|
|
9038
9090
|
readinessContract: SystemApiInterfaceReadinessContractSchema.optional()
|
|
9039
9091
|
}).strict();
|
|
9040
|
-
|
|
9041
|
-
SYSTEM_INTERFACE_READINESS_PROFILES.
|
|
9042
|
-
|
|
9043
|
-
{ profileId, kind: "built-in" }
|
|
9044
|
-
])
|
|
9045
|
-
);
|
|
9092
|
+
function isReservedPlatformProfileId(profileId) {
|
|
9093
|
+
return SYSTEM_INTERFACE_READINESS_PROFILES.includes(profileId);
|
|
9094
|
+
}
|
|
9046
9095
|
function isBuiltInReadinessProfile(profileId) {
|
|
9047
|
-
return
|
|
9096
|
+
return isReservedPlatformProfileId(profileId) || getBuiltInReadinessProfile(profileId) !== void 0;
|
|
9048
9097
|
}
|
|
9049
9098
|
z.object({
|
|
9050
9099
|
systemPath: SystemPathSchema,
|
|
@@ -9076,7 +9125,7 @@ var SystemEntrySchema = z.object({
|
|
|
9076
9125
|
parentSystemId: SystemIdSchema.optional(),
|
|
9077
9126
|
/** Optional UI presence. Systems without UI omit this. */
|
|
9078
9127
|
ui: SystemUiSchema.optional(),
|
|
9079
|
-
/** Canonical lifecycle state.
|
|
9128
|
+
/** Canonical lifecycle state. `beta` is what gates a System to dev-mode viewers. */
|
|
9080
9129
|
lifecycle: SystemLifecycleSchema.optional(),
|
|
9081
9130
|
/** Optional role responsible for this system. */
|
|
9082
9131
|
responsibleRoleId: ModelIdSchema.meta({ ref: "role" }).optional(),
|
|
@@ -9084,14 +9133,10 @@ var SystemEntrySchema = z.object({
|
|
|
9084
9133
|
governedByKnowledge: z.array(ModelIdSchema.meta({ ref: "knowledge" })).default([]).optional(),
|
|
9085
9134
|
/** Optional actions this system exposes or consumes. */
|
|
9086
9135
|
actions: z.array(ActionRefSchema).optional(),
|
|
9087
|
-
/** Optional operational policies that apply to this system. */
|
|
9088
|
-
policies: z.array(ModelIdSchema.meta({ ref: "policy" })).default([]).optional(),
|
|
9089
9136
|
/** Optional goals this system contributes to. */
|
|
9090
9137
|
drivesGoals: z.array(ModelIdSchema.meta({ ref: "goal" })).default([]).optional(),
|
|
9091
9138
|
/** Thin API runtime-boundary marker. Readiness is derived from scoped resources and topology. */
|
|
9092
9139
|
apiInterface: SystemApiInterfaceSchema.optional(),
|
|
9093
|
-
/** @deprecated Use lifecycle. Accepted for one publish cycle. */
|
|
9094
|
-
status: SystemStatusSchema.optional(),
|
|
9095
9140
|
/** @deprecated Use ui.path. Kept for one-cycle Feature compatibility. */
|
|
9096
9141
|
path: PathSchema.optional(),
|
|
9097
9142
|
/** @deprecated Use ui.icon. Kept for one-cycle Feature compatibility. */
|
|
@@ -9100,9 +9145,6 @@ var SystemEntrySchema = z.object({
|
|
|
9100
9145
|
uiPosition: UiPositionSchema.optional(),
|
|
9101
9146
|
/** @deprecated Use lifecycle. */
|
|
9102
9147
|
enabled: z.boolean().optional(),
|
|
9103
|
-
/** @deprecated Use lifecycle: "beta". */
|
|
9104
|
-
devOnly: z.boolean().optional(),
|
|
9105
|
-
requiresAdmin: z.boolean().optional(),
|
|
9106
9148
|
/** Domain-map iteration order. Convention: multiples of 10 (10, 20, 30, ...) to allow easy insertion. */
|
|
9107
9149
|
order: z.number(),
|
|
9108
9150
|
/**
|
|
@@ -9129,29 +9171,13 @@ var SystemEntrySchema = z.object({
|
|
|
9129
9171
|
}).strict().refine((system) => system.label !== void 0 || system.title !== void 0, {
|
|
9130
9172
|
path: ["label"],
|
|
9131
9173
|
message: "System must provide label or title"
|
|
9132
|
-
}).transform(
|
|
9133
|
-
|
|
9134
|
-
|
|
9135
|
-
console.warn("[organization-model] System.status is deprecated; use System.lifecycle instead.");
|
|
9136
|
-
return normalizedSystem.lifecycle === void 0 ? { ...normalizedSystem, lifecycle: normalizedSystem.status } : normalizedSystem;
|
|
9137
|
-
});
|
|
9174
|
+
}).transform(
|
|
9175
|
+
(system) => system.systems !== void 0 && system.subsystems === void 0 ? { ...system, subsystems: system.systems } : system
|
|
9176
|
+
);
|
|
9138
9177
|
z.record(z.string(), SystemEntrySchema).refine((record) => Object.entries(record).every(([key, entry]) => entry.id === key), {
|
|
9139
9178
|
message: "Each system entry id must match its map key"
|
|
9140
9179
|
}).default({});
|
|
9141
9180
|
|
|
9142
|
-
// ../core/src/organization-model/readiness/profile-registry.ts
|
|
9143
|
-
var _builtInProfileValidators = /* @__PURE__ */ new Map();
|
|
9144
|
-
function getBuiltInReadinessProfile(profileId) {
|
|
9145
|
-
return _builtInProfileValidators.get(profileId);
|
|
9146
|
-
}
|
|
9147
|
-
var _interfaceMarkerResolvers = /* @__PURE__ */ new Map();
|
|
9148
|
-
function interfaceMarkerKey(systemPath, interfaceKey) {
|
|
9149
|
-
return `${systemPath}::${interfaceKey}`;
|
|
9150
|
-
}
|
|
9151
|
-
function resolveReadinessInterfaceMarker(model, systemPath, interfaceKey) {
|
|
9152
|
-
return _interfaceMarkerResolvers.get(interfaceMarkerKey(systemPath, interfaceKey))?.(model);
|
|
9153
|
-
}
|
|
9154
|
-
|
|
9155
9181
|
// ../core/src/organization-model/readiness/engine.ts
|
|
9156
9182
|
function addReadinessIssue(issues, family, code, message, details = {}) {
|
|
9157
9183
|
issues.push({
|
|
@@ -9854,14 +9880,12 @@ function addTopologyIssues(issues, orgName, deployment, organizationModel, syste
|
|
|
9854
9880
|
const relationships = organizationModel.topology?.relationships;
|
|
9855
9881
|
if (relationships === void 0) return;
|
|
9856
9882
|
const rolesById = new Set(Object.keys(organizationModel.roles ?? {}));
|
|
9857
|
-
const policiesById = new Set(Object.keys(organizationModel.policies ?? {}));
|
|
9858
9883
|
const triggerIds = new Set(deployment.triggers?.map((trigger) => trigger.resourceId) ?? []);
|
|
9859
9884
|
const humanCheckpointIds = new Set(deployment.humanCheckpoints?.map((checkpoint) => checkpoint.resourceId) ?? []);
|
|
9860
9885
|
const externalResourceIds = new Set(deployment.externalResources?.map((external) => external.resourceId) ?? []);
|
|
9861
9886
|
const topologyRefExists = (ref) => {
|
|
9862
9887
|
if (ref.kind === "system") return systemsById.has(ref.id);
|
|
9863
9888
|
if (ref.kind === "resource") return omResourcesById.has(ref.id);
|
|
9864
|
-
if (ref.kind === "policy") return policiesById.has(ref.id);
|
|
9865
9889
|
if (ref.kind === "role") return rolesById.has(ref.id);
|
|
9866
9890
|
if (ref.kind === "trigger") return triggerIds.has(ref.id);
|
|
9867
9891
|
if (ref.kind === "humanCheckpoint") return humanCheckpointIds.has(ref.id);
|
|
@@ -24273,14 +24297,14 @@ function keyToTestName(key) {
|
|
|
24273
24297
|
}
|
|
24274
24298
|
return key.replace(/ \d+$/, "");
|
|
24275
24299
|
}
|
|
24276
|
-
function getSnapshotData(
|
|
24300
|
+
function getSnapshotData(content2, options) {
|
|
24277
24301
|
const update = options.updateSnapshot;
|
|
24278
24302
|
const data = /* @__PURE__ */ Object.create(null);
|
|
24279
24303
|
let snapshotContents = "";
|
|
24280
24304
|
let dirty = false;
|
|
24281
|
-
if (
|
|
24305
|
+
if (content2 != null) {
|
|
24282
24306
|
try {
|
|
24283
|
-
snapshotContents =
|
|
24307
|
+
snapshotContents = content2;
|
|
24284
24308
|
const populate = new Function("exports", snapshotContents);
|
|
24285
24309
|
populate(data);
|
|
24286
24310
|
} catch {
|
|
@@ -24325,16 +24349,16 @@ function normalizeNewlines(string2) {
|
|
|
24325
24349
|
}
|
|
24326
24350
|
async function saveSnapshotFile(environment, snapshotData, snapshotPath) {
|
|
24327
24351
|
const snapshots = Object.keys(snapshotData).sort(naturalCompare).map((key) => `exports[${printBacktickString(key)}] = ${printBacktickString(normalizeNewlines(snapshotData[key]))};`);
|
|
24328
|
-
const
|
|
24352
|
+
const content2 = `${environment.getHeader()}
|
|
24329
24353
|
|
|
24330
24354
|
${snapshots.join("\n\n")}
|
|
24331
24355
|
`;
|
|
24332
24356
|
const oldContent = await environment.readSnapshotFile(snapshotPath);
|
|
24333
|
-
const skipWriting = oldContent != null && oldContent ===
|
|
24357
|
+
const skipWriting = oldContent != null && oldContent === content2;
|
|
24334
24358
|
if (skipWriting) {
|
|
24335
24359
|
return;
|
|
24336
24360
|
}
|
|
24337
|
-
await environment.saveSnapshotFile(snapshotPath,
|
|
24361
|
+
await environment.saveSnapshotFile(snapshotPath, content2);
|
|
24338
24362
|
}
|
|
24339
24363
|
function deepMergeArray(target = [], source = []) {
|
|
24340
24364
|
const mergedOutput = Array.from(target);
|
|
@@ -24485,8 +24509,8 @@ var SnapshotState = class _SnapshotState {
|
|
|
24485
24509
|
}
|
|
24486
24510
|
static async create(testFilePath, options) {
|
|
24487
24511
|
const snapshotPath = await options.snapshotEnvironment.resolvePath(testFilePath);
|
|
24488
|
-
const
|
|
24489
|
-
return new _SnapshotState(testFilePath, snapshotPath,
|
|
24512
|
+
const content2 = await options.snapshotEnvironment.readSnapshotFile(snapshotPath);
|
|
24513
|
+
return new _SnapshotState(testFilePath, snapshotPath, content2, options);
|
|
24490
24514
|
}
|
|
24491
24515
|
get environment() {
|
|
24492
24516
|
return this._environment;
|
|
@@ -27715,6 +27739,25 @@ var mockList = (overrides) => createMockAdapter(
|
|
|
27715
27739
|
],
|
|
27716
27740
|
overrides
|
|
27717
27741
|
);
|
|
27742
|
+
var mockArtifacts = (overrides) => createMockAdapter(["listArtifacts", "createArtifact", "getActive"], overrides);
|
|
27743
|
+
var mockContent = (overrides) => createMockAdapter(
|
|
27744
|
+
[
|
|
27745
|
+
"createItem",
|
|
27746
|
+
"getItem",
|
|
27747
|
+
"listItems",
|
|
27748
|
+
"updateItem",
|
|
27749
|
+
"createAttempt",
|
|
27750
|
+
"listAttempts",
|
|
27751
|
+
"updateAttempt",
|
|
27752
|
+
"createSourceAsset",
|
|
27753
|
+
"getSourceAsset",
|
|
27754
|
+
"listSourceAssets",
|
|
27755
|
+
"updateSourceAsset",
|
|
27756
|
+
"createDistribution",
|
|
27757
|
+
"updateDistribution"
|
|
27758
|
+
],
|
|
27759
|
+
overrides
|
|
27760
|
+
);
|
|
27718
27761
|
var mockPdf = (overrides) => createMockAdapter(["render", "renderToBuffer"], overrides);
|
|
27719
27762
|
var mockApproval = (overrides) => createMockAdapter(["create", "deleteByMetadata"], overrides);
|
|
27720
27763
|
var mockExecution = (overrides) => createMockAdapter(["trigger", "triggerAsync"], overrides);
|
|
@@ -28097,4 +28140,4 @@ chai/index.js:
|
|
|
28097
28140
|
*)
|
|
28098
28141
|
*/
|
|
28099
28142
|
|
|
28100
|
-
export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
|
|
28143
|
+
export { assertResourceRegistry, createMockAnymailfinder, createMockApify, createMockAttio, createMockDropbox, createMockGmail, createMockGoogleSheets, createMockInstantly, createMockMillionVerifier, createMockResend, createMockSignatureApi, createMockStripe, createMockTomba, mockAcqDb, mockApproval, mockArtifacts, mockContent, mockCrm, mockEmail, mockExecution, mockList, mockLlm, mockNotifications, mockPdf, mockProjects, mockScheduler, mockStorage, runLinearWorkflow, runWorkflow };
|