@zhushanwen/extension-protocol 0.20.0 → 0.22.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/index.js
CHANGED
|
@@ -794,23 +794,349 @@ var SUBAGENT_DIRECTIVE_CUSTOM_TYPE = "subagent-directive";
|
|
|
794
794
|
// src/extensions/subagent-engine/contract.ts
|
|
795
795
|
var SUBAGENTS_ENGINES_FILENAME = "engines.json";
|
|
796
796
|
|
|
797
|
+
// src/extensions/canvas/marker.ts
|
|
798
|
+
var CANVAS_MARKER = "\0TAIJI_CANVAS";
|
|
799
|
+
var CANVAS_ACTIONS = [
|
|
800
|
+
"create",
|
|
801
|
+
"grow",
|
|
802
|
+
"patch",
|
|
803
|
+
"decide-direction",
|
|
804
|
+
"select",
|
|
805
|
+
"transition",
|
|
806
|
+
"comment",
|
|
807
|
+
"comment-respond",
|
|
808
|
+
"review-request",
|
|
809
|
+
"review-append",
|
|
810
|
+
"review-resolve",
|
|
811
|
+
"converge-check",
|
|
812
|
+
"export",
|
|
813
|
+
"dispatch",
|
|
814
|
+
"read",
|
|
815
|
+
"list"
|
|
816
|
+
];
|
|
817
|
+
var CANVAS_MARKER_ACTIONS = [...CANVAS_ACTIONS, "enter"];
|
|
818
|
+
|
|
819
|
+
// src/extensions/canvas/actions.ts
|
|
820
|
+
function isRecord4(v) {
|
|
821
|
+
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
822
|
+
}
|
|
823
|
+
function isOptionalString3(v) {
|
|
824
|
+
return v === void 0 || typeof v === "string";
|
|
825
|
+
}
|
|
826
|
+
function isStringArray2(v) {
|
|
827
|
+
return Array.isArray(v) && v.every((x) => typeof x === "string");
|
|
828
|
+
}
|
|
829
|
+
function isOptionalStringArray(v) {
|
|
830
|
+
return v === void 0 || isStringArray2(v);
|
|
831
|
+
}
|
|
832
|
+
function isOptionalBoolean(v) {
|
|
833
|
+
return v === void 0 || typeof v === "boolean";
|
|
834
|
+
}
|
|
835
|
+
function isStringIn(set, v) {
|
|
836
|
+
return typeof v === "string" && set.includes(v);
|
|
837
|
+
}
|
|
838
|
+
function isOptionalGuarded(guard, v) {
|
|
839
|
+
return v === void 0 || guard(v);
|
|
840
|
+
}
|
|
841
|
+
function isStringField(v, key) {
|
|
842
|
+
return typeof v[key] === "string";
|
|
843
|
+
}
|
|
844
|
+
function requireCanvasId(v) {
|
|
845
|
+
return isStringField(v, "canvasId");
|
|
846
|
+
}
|
|
847
|
+
function isCanvasCreateParams(v) {
|
|
848
|
+
return isRecord4(v) && isOptionalString3(v.name) && typeof v.statement === "string" && isStringArray2(v.criterias) && isStringArray2(v.scopeExclusions);
|
|
849
|
+
}
|
|
850
|
+
var CANVAS_NODE_TYPES = ["question", "option", "argument", "constraint"];
|
|
851
|
+
var CANVAS_EDGE_TYPES = ["decompose", "resolve", "argue", "rebut"];
|
|
852
|
+
var ARGUMENT_POLARITIES = ["support", "object"];
|
|
853
|
+
function isCanvasGrowItem(v) {
|
|
854
|
+
return isRecord4(v) && isStringField(v, "id") && isStringIn(CANVAS_NODE_TYPES, v.type) && isStringField(v, "content") && isStringField(v, "attachTo") && isStringIn(CANVAS_EDGE_TYPES, v.edge) && isOptionalGuarded(isArgumentPolarity, v.edgePolarity) && isOptionalGuarded(isArgumentMateriality, v.materiality) && isOptionalBoolean(v.factVerified) && isOptionalBoolean(v.dispatchable);
|
|
855
|
+
}
|
|
856
|
+
function isCanvasGrowParams(v) {
|
|
857
|
+
return isRecord4(v) && requireCanvasId(v) && Array.isArray(v.batch) && v.batch.every((item) => isCanvasGrowItem(item)) && typeof v.reason === "string";
|
|
858
|
+
}
|
|
859
|
+
function isCanvasPatchParams(v) {
|
|
860
|
+
return isRecord4(v) && requireCanvasId(v) && isStringField(v, "nodeId") && isOptionalString3(v.content) && isOptionalStringArray(v.criterias) && isOptionalBoolean(v.dispatchable) && isOptionalBoolean(v.factVerified) && typeof v.reason === "string";
|
|
861
|
+
}
|
|
862
|
+
function isCanvasDecideDirectionParams(v) {
|
|
863
|
+
return isRecord4(v) && requireCanvasId(v) && isStringIn(["top-down", "bottom-up"], v.direction) && typeof v.reason === "string";
|
|
864
|
+
}
|
|
865
|
+
function isCanvasSelectParams(v) {
|
|
866
|
+
if (!(isRecord4(v) && requireCanvasId(v) && isStringField(v, "questionId") && isStringField(v, "optionId") && typeof v.reason === "string")) {
|
|
867
|
+
return false;
|
|
868
|
+
}
|
|
869
|
+
if (v.replace === void 0) return true;
|
|
870
|
+
return isRecord4(v.replace) && isStringField(v.replace, "fromOptionId");
|
|
871
|
+
}
|
|
872
|
+
var CANVAS_LIFECYCLES = ["draft", "under-review", "passed", "rejected", "shelved"];
|
|
873
|
+
function isCanvasTransitionParams(v) {
|
|
874
|
+
if (!(isRecord4(v) && requireCanvasId(v) && isStringField(v, "nodeId") && typeof v.reason === "string")) {
|
|
875
|
+
return false;
|
|
876
|
+
}
|
|
877
|
+
if (!isStringIn(CANVAS_LIFECYCLES, v.to)) return false;
|
|
878
|
+
if (v.rejection === void 0) return true;
|
|
879
|
+
return isRecord4(v.rejection) && isStringField(v.rejection, "reason") && isOptionalString3(v.rejection.reviveCondition);
|
|
880
|
+
}
|
|
881
|
+
function isCanvasCommentParams(v) {
|
|
882
|
+
return isRecord4(v) && requireCanvasId(v) && isStringField(v, "anchorId") && typeof v.text === "string";
|
|
883
|
+
}
|
|
884
|
+
function isCanvasCommentRespondParams(v) {
|
|
885
|
+
return isRecord4(v) && requireCanvasId(v) && isStringField(v, "commentId") && isStringIn(["adopted", "rebutted"], v.disposition) && typeof v.note === "string";
|
|
886
|
+
}
|
|
887
|
+
function isCanvasReviewRequestParams(v) {
|
|
888
|
+
return isRecord4(v) && requireCanvasId(v) && isOptionalString3(v.scope);
|
|
889
|
+
}
|
|
890
|
+
var REVIEW_DIMENSIONS = ["completeness", "necessity", "support", "authenticity", "conflict", "depth"];
|
|
891
|
+
var REVIEW_SEVERITIES = ["must-fix", "suggestion"];
|
|
892
|
+
var SUPPORT_RATINGS = ["sufficient", "gap", "invalid"];
|
|
893
|
+
function isCanvasReviewEntryInput(v) {
|
|
894
|
+
return isRecord4(v) && isStringField(v, "id") && typeof v.round === "number" && Number.isFinite(v.round) && isStringIn(REVIEW_DIMENSIONS, v.dimension) && isStringIn(REVIEW_SEVERITIES, v.severity) && isStringField(v, "targetId") && typeof v.note === "string" && isReviewSupportShape(v) && isReviewSupportSemantics(v);
|
|
895
|
+
}
|
|
896
|
+
function isReviewSupportShape(v) {
|
|
897
|
+
if (v.supportRating !== void 0 && !isStringIn(SUPPORT_RATINGS, v.supportRating)) return false;
|
|
898
|
+
return v.supportGaps === void 0 || isStringArray2(v.supportGaps);
|
|
899
|
+
}
|
|
900
|
+
function isReviewSupportSemantics(v) {
|
|
901
|
+
if (v.supportGaps === void 0) return v.supportRating !== "gap";
|
|
902
|
+
if (v.supportRating !== "gap") return false;
|
|
903
|
+
return Array.isArray(v.supportGaps) && v.supportGaps.length > 0;
|
|
904
|
+
}
|
|
905
|
+
function isCanvasReviewAppendParams(v) {
|
|
906
|
+
return isRecord4(v) && requireCanvasId(v) && typeof v.round === "number" && Number.isFinite(v.round) && Array.isArray(v.entries) && v.entries.every((entry) => isCanvasReviewEntryInput(entry));
|
|
907
|
+
}
|
|
908
|
+
function isCanvasReviewResolveParams(v) {
|
|
909
|
+
return isRecord4(v) && requireCanvasId(v) && isStringField(v, "entryId") && isStringIn(["accepted", "deferred", "rejected"], v.disposition) && typeof v.note === "string";
|
|
910
|
+
}
|
|
911
|
+
function isCanvasConvergeCheckParams(v) {
|
|
912
|
+
return isRecord4(v) && requireCanvasId(v);
|
|
913
|
+
}
|
|
914
|
+
function isCanvasExportParams(v) {
|
|
915
|
+
if (!(isRecord4(v) && requireCanvasId(v))) return false;
|
|
916
|
+
const target = v.target;
|
|
917
|
+
if (!isRecord4(target)) return false;
|
|
918
|
+
if (target.target === "planning-doc") return true;
|
|
919
|
+
return target.target === "requirement-card" && isStringField(target, "leafId");
|
|
920
|
+
}
|
|
921
|
+
function isCanvasDispatchParams(v) {
|
|
922
|
+
return isRecord4(v) && requireCanvasId(v) && isStringField(v, "nodeId") && isStringField(v, "pointer");
|
|
923
|
+
}
|
|
924
|
+
function isCanvasReadParams(v) {
|
|
925
|
+
return isRecord4(v) && requireCanvasId(v) && isOptionalString3(v.subtree);
|
|
926
|
+
}
|
|
927
|
+
function isCanvasListParams(v) {
|
|
928
|
+
return isRecord4(v);
|
|
929
|
+
}
|
|
930
|
+
function isCanvasEnterParams(v) {
|
|
931
|
+
if (!isRecord4(v)) return false;
|
|
932
|
+
const keys = Object.keys(v);
|
|
933
|
+
return keys.length === 1 && keys[0] === "canvasId" && typeof v.canvasId === "string";
|
|
934
|
+
}
|
|
935
|
+
var MARKER_PARAMS_GUARDS = {
|
|
936
|
+
create: isCanvasCreateParams,
|
|
937
|
+
grow: isCanvasGrowParams,
|
|
938
|
+
patch: isCanvasPatchParams,
|
|
939
|
+
"decide-direction": isCanvasDecideDirectionParams,
|
|
940
|
+
select: isCanvasSelectParams,
|
|
941
|
+
transition: isCanvasTransitionParams,
|
|
942
|
+
comment: isCanvasCommentParams,
|
|
943
|
+
"comment-respond": isCanvasCommentRespondParams,
|
|
944
|
+
"review-request": isCanvasReviewRequestParams,
|
|
945
|
+
"review-append": isCanvasReviewAppendParams,
|
|
946
|
+
"review-resolve": isCanvasReviewResolveParams,
|
|
947
|
+
"converge-check": isCanvasConvergeCheckParams,
|
|
948
|
+
export: isCanvasExportParams,
|
|
949
|
+
dispatch: isCanvasDispatchParams,
|
|
950
|
+
read: isCanvasReadParams,
|
|
951
|
+
list: isCanvasListParams,
|
|
952
|
+
enter: isCanvasEnterParams
|
|
953
|
+
};
|
|
954
|
+
function isCanvasMarkerRequest(v) {
|
|
955
|
+
if (!isRecord4(v)) return false;
|
|
956
|
+
if (!isStringIn(CANVAS_MARKER_ACTIONS, v.action)) return false;
|
|
957
|
+
const action = v.action;
|
|
958
|
+
return MARKER_PARAMS_GUARDS[action](v.params);
|
|
959
|
+
}
|
|
960
|
+
function isArgumentMateriality(v) {
|
|
961
|
+
return isStringIn(["fact", "claim"], v);
|
|
962
|
+
}
|
|
963
|
+
function isArgumentPolarity(v) {
|
|
964
|
+
return isStringIn(ARGUMENT_POLARITIES, v);
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
// src/extensions/canvas/state.ts
|
|
968
|
+
var CANVAS_EVENT_TYPES = [
|
|
969
|
+
"CanvasCreated",
|
|
970
|
+
"GrowthDirectionDecided",
|
|
971
|
+
"NodeCreated",
|
|
972
|
+
"NodeModified",
|
|
973
|
+
"StateTransitioned",
|
|
974
|
+
"OptionSelected",
|
|
975
|
+
"NodeDispatched",
|
|
976
|
+
"CommentAdded",
|
|
977
|
+
"CommentResponded",
|
|
978
|
+
"ReviewRequested",
|
|
979
|
+
"ReviewEntryAppended",
|
|
980
|
+
"ReviewEntryResolved",
|
|
981
|
+
"ConvergenceChecked",
|
|
982
|
+
"CanvasExported",
|
|
983
|
+
"DirtiedPathMarked",
|
|
984
|
+
"ReviewConverged",
|
|
985
|
+
"ReviewMaxRoundsReached",
|
|
986
|
+
"ReviewEscalated"
|
|
987
|
+
];
|
|
988
|
+
var ACTION_EVENT_MAP = {
|
|
989
|
+
create: "CanvasCreated",
|
|
990
|
+
grow: "NodeCreated",
|
|
991
|
+
patch: "NodeModified",
|
|
992
|
+
"decide-direction": "GrowthDirectionDecided",
|
|
993
|
+
select: "OptionSelected",
|
|
994
|
+
transition: "StateTransitioned",
|
|
995
|
+
comment: "CommentAdded",
|
|
996
|
+
"comment-respond": "CommentResponded",
|
|
997
|
+
"review-request": "ReviewRequested",
|
|
998
|
+
"review-append": "ReviewEntryAppended",
|
|
999
|
+
"review-resolve": "ReviewEntryResolved",
|
|
1000
|
+
"converge-check": "ConvergenceChecked",
|
|
1001
|
+
export: "CanvasExported",
|
|
1002
|
+
dispatch: "NodeDispatched"
|
|
1003
|
+
};
|
|
1004
|
+
|
|
1005
|
+
// src/extensions/canvas/errors.ts
|
|
1006
|
+
var CANVAS_ERROR_CODES = [
|
|
1007
|
+
"canvas_not_found",
|
|
1008
|
+
"node_not_found",
|
|
1009
|
+
"invalid_params",
|
|
1010
|
+
"unknown_action",
|
|
1011
|
+
"actor_not_allowed",
|
|
1012
|
+
"forbidden",
|
|
1013
|
+
"selection_conflict",
|
|
1014
|
+
"cycle_detected",
|
|
1015
|
+
"unverified_fact",
|
|
1016
|
+
"dispatch_blocked",
|
|
1017
|
+
"not_converged",
|
|
1018
|
+
"lifecycle_transition_illegal",
|
|
1019
|
+
"entry_ref_missing",
|
|
1020
|
+
"already_resolved",
|
|
1021
|
+
"review_max_rounds",
|
|
1022
|
+
"edge_not_found"
|
|
1023
|
+
];
|
|
1024
|
+
var CANVAS_ERROR_RECOVERY = {
|
|
1025
|
+
canvas_not_found: "\u753B\u5E03\u4E0D\u5B58\u5728\u6216\u5DF2\u88AB\u5220\u9664\uFF1A\u5148\u7ECF canvas_list / canvas.list \u6838\u5BF9\u753B\u5E03 id \u540E\u91CD\u8BD5",
|
|
1026
|
+
node_not_found: "\u76EE\u6807\u8282\u70B9 id \u4E0D\u5B58\u5728\uFF1A\u5148 canvas_read \u53D6\u5F53\u524D\u6001\uFF0C\u6838\u5BF9\u8282\u70B9 id \u540E\u91CD\u8BD5",
|
|
1027
|
+
edge_not_found: "\u76EE\u6807\u8FB9 id \u4E0D\u5B58\u5728\uFF1A\u5148 canvas_read \u53D6\u5F53\u524D\u6001\uFF0C\u6838\u5BF9\u8FB9 id \u540E\u91CD\u8BD5",
|
|
1028
|
+
invalid_params: "\u8BF7\u6C42\u53C2\u6570\u5F62\u72B6\u975E\u6CD5\uFF1A\u5BF9\u7167\u8BE5 action \u7684 params \u5951\u7EA6\u4FEE\u6B63\u5B57\u6BB5\u540E\u91CD\u8BD5",
|
|
1029
|
+
unknown_action: "action \u4E0D\u5728\u8BCD\u8868\uFF1A\u5BF9\u7167 CANVAS_ACTIONS \u8BCD\u8868\u4FEE\u6B63 action \u540D",
|
|
1030
|
+
actor_not_allowed: "\u5F53\u524D\u64CD\u4F5C\u65B9\u65E0\u6B64\u52A8\u4F5C\u6743\u9650\uFF1A\u67E5\u6743\u9650\u77E9\u9635\uFF08\u8BE5\u52A8\u4F5C\u4EC5\u9650\u7279\u5B9A\u64CD\u4F5C\u65B9\uFF09\uFF0C\u6539\u7531\u6709\u6743\u65B9\u6267\u884C",
|
|
1031
|
+
forbidden: "\u753B\u5E03\u4E0D\u5C5E\u4E8E\u5F53\u524D\u4F1A\u8BDD\uFF08\u753B\u5E03\u5F52\u5C5E\u521B\u5EFA\u5B83\u7684\u4F1A\u8BDD\uFF0C\u8DE8\u4F1A\u8BDD\u8BBF\u95EE\u88AB\u62D2\u7EDD\uFF09\uFF1A\u8BF7\u8BA9\u7528\u6237\u5207\u6362\u5230\u753B\u5E03\u5F52\u5C5E\u4F1A\u8BDD\u540E\u91CD\u8BD5\uFF0C\u6216\u7ECF canvas_list \u67E5\u770B\u5F53\u524D\u4F1A\u8BDD\u53EF\u7528\u7684\u753B\u5E03",
|
|
1032
|
+
selection_conflict: "\u8BE5\u95EE\u9898\u5DF2\u6709\u9009\u5B9A\u65B9\u6848\uFF1A\u6362\u9009\u8D70 select \u7684 replace \u53C2\u6570\uFF08\u540C\u4E00\u8C03\u7528\u5185\u8FC1\u79FB\u65E7\u9009\u5B9A\uFF09\u5E76\u9644\u5BF9\u6BD4\u7406\u7531",
|
|
1033
|
+
cycle_detected: "\u8BE5\u8FB9\u4F1A\u4F7F\u4E3B\u5E72\u6210\u73AF\uFF1A\u5206\u89E3/\u89E3\u8FB9\u53EA\u80FD\u6307\u5411\u4E0A\u5C42\u8282\u70B9\u7684\u4E0B\u5C42\uFF0C\u53BB\u6389\u56DE\u8FB9\u540E\u91CD\u8BD5",
|
|
1034
|
+
unverified_fact: "\u672A\u6838\u5B9E\u7684 fact \u8BBA\u636E\u4E0D\u5F97\u4F5C\u4E3A\u901A\u8FC7\u4F9D\u636E\uFF1A\u5148\u8865\u6838\u5B9E\u72B6\u6001\uFF08factVerified\uFF09\u518D\u91CD\u8BD5",
|
|
1035
|
+
dispatch_blocked: "\u6267\u884C\u53F6\u5B50\u987B\u5148\u901A\u8FC7\u5BA1\u67E5\uFF08passed\uFF09\u5E76\u586B\u5199\u4E0B\u6E38\u4EA7\u7269\u6307\u9488\uFF0C\u624D\u80FD\u6D3E\u53D1",
|
|
1036
|
+
not_converged: "\u753B\u5E03\u672A\u6536\u655B\uFF1A\u5148\u5904\u7F6E\u5168\u90E8 must-fix / \u6E05\u7A7A\u5F85\u91CD\u5BA1\u8DEF\u5F84 / \u786E\u8BA4\u6839\u5224\u636E\uFF0C\u518D\u6267\u884C\u6536\u655B\u786E\u8BA4\u6216\u5BFC\u51FA",
|
|
1037
|
+
lifecycle_transition_illegal: "\u72B6\u6001\u673A\u4E0D\u5141\u8BB8\u8BE5\u8F6C\u79FB\uFF1A\u5BF9\u7167\u5408\u6CD5\u8F6C\u79FB\u8868\uFF08rejected/shelved \u987B\u5148\u590D\u6D3B\u4E3A draft\uFF09\uFF0C\u6216\u7559\u7406\u7531\u8D70\u590D\u6D3B\u8DEF\u5F84",
|
|
1038
|
+
entry_ref_missing: "\u62A5\u544A\u6761\u76EE\u5F15\u7528\u7684\u56FE\u5143\u7D20 id \u4E0D\u5B58\u5728\uFF1A\u5148 canvas_read \u6838\u5BF9\u76EE\u6807 id \u540E\u91CD\u8BD5",
|
|
1039
|
+
already_resolved: "\u8BE5\u6761\u76EE\u5DF2\u6709\u5904\u7F6E\u8BB0\u5F55\uFF08\u5148\u767B\u8BB0\u5148\u751F\u6548\uFF09\uFF1A\u6539\u5224\u8D70\u4E0B\u4E00\u8F6E\u5BA1\u67E5\u590D\u5BA1\uFF0C\u6216\u5728 GUI \u4EE5\u65B0\u8F6E\u6B21\u5904\u7F6E",
|
|
1040
|
+
review_max_rounds: "\u5BA1\u67E5\u5DF2\u8FBE\u8F6E\u6B21\u4E0A\u9650\uFF1A\u5347\u7EA7\u88C1\u51B3\uFF08\u6269\u5927\u5BA1\u67E5\u8303\u56F4\u6216\u4FEE\u6539\u5224\u636E\uFF09\u540E\u91CD\u65B0\u53D1\u8D77\u5BA1\u67E5"
|
|
1041
|
+
};
|
|
1042
|
+
function canvasError(code, message) {
|
|
1043
|
+
return { code, message, recover: CANVAS_ERROR_RECOVERY[code] };
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
// src/extensions/canvas/matrix.ts
|
|
1047
|
+
var CANVAS_ACTOR_MATRIX = {
|
|
1048
|
+
create: { user: true, agent: true, review: false },
|
|
1049
|
+
grow: { user: false, agent: true, review: false },
|
|
1050
|
+
patch: { user: true, agent: true, review: false },
|
|
1051
|
+
"decide-direction": { user: true, agent: false, review: false },
|
|
1052
|
+
select: { user: true, agent: true, review: false },
|
|
1053
|
+
transition: { user: true, agent: true, review: false },
|
|
1054
|
+
comment: { user: true, agent: false, review: false },
|
|
1055
|
+
"comment-respond": { user: false, agent: true, review: false },
|
|
1056
|
+
"review-request": { user: true, agent: true, review: false },
|
|
1057
|
+
"review-append": { user: false, agent: false, review: true },
|
|
1058
|
+
"review-resolve": { user: true, agent: true, review: false },
|
|
1059
|
+
"converge-check": { user: true, agent: false, review: false },
|
|
1060
|
+
export: { user: true, agent: true, review: false },
|
|
1061
|
+
dispatch: { user: true, agent: false, review: false },
|
|
1062
|
+
read: { user: true, agent: true, review: true },
|
|
1063
|
+
list: { user: true, agent: true, review: true }
|
|
1064
|
+
};
|
|
1065
|
+
function isActionAllowed(action, actor) {
|
|
1066
|
+
return CANVAS_ACTOR_MATRIX[action][actor];
|
|
1067
|
+
}
|
|
1068
|
+
var TOOL_ACTION_MAP = {
|
|
1069
|
+
canvas_enter: ["create"],
|
|
1070
|
+
canvas_edit: ["grow", "patch", "select", "transition", "comment-respond"],
|
|
1071
|
+
canvas_read: ["read"],
|
|
1072
|
+
canvas_review: ["review-request", "review-append", "review-resolve"],
|
|
1073
|
+
canvas_export: ["export"],
|
|
1074
|
+
canvas_list: ["list"]
|
|
1075
|
+
};
|
|
1076
|
+
var CANVAS_TOOL_NAMES = Object.keys(TOOL_ACTION_MAP);
|
|
1077
|
+
var NON_TOOL_ACTIONS = [
|
|
1078
|
+
{ action: "decide-direction", entry: "gui-only\uFF08\u7528\u6237\u62CD\u677F\uFF1A\u65B9\u5411\u88C1\u51B3\u662F\u7EC8\u88C1\u51B3\u52A8\u4F5C\uFF0Cagent \u4E0D\u5F97\u81EA\u4E3B\uFF09" },
|
|
1079
|
+
{ action: "comment", entry: "gui-only\uFF08\u8BC4\u8BBA = \u7528\u6237\u6CE8\u5165\u8BAE\u9898\uFF1B\u54CD\u5E94\u4E49\u52A1\u65B9\u662F agent\uFF0C\u8D70 comment-respond\uFF09" },
|
|
1080
|
+
{ action: "converge-check", entry: "gui-only\uFF08\u786E\u8BA4\u6536\u655B = \u7528\u6237\u70B9\u51FB\uFF0C\u4E09\u95E8\u7981\u6821\u9A8C\u540E\u7F6E\u7EC8\u6001\uFF09" },
|
|
1081
|
+
{ action: "dispatch", entry: "gui-only\uFF08\u6D3E\u53D1 = \u7528\u6237\u9010\u53F6\u786E\u8BA4 + \u624B\u586B\u4E0B\u6E38\u6307\u9488\uFF0C\u7528\u6237\u62CD\u677F\uFF09" }
|
|
1082
|
+
];
|
|
1083
|
+
function toolOfAction(action) {
|
|
1084
|
+
for (const tool of CANVAS_TOOL_NAMES) {
|
|
1085
|
+
const actions = TOOL_ACTION_MAP[tool];
|
|
1086
|
+
if (actions.includes(action)) return tool;
|
|
1087
|
+
}
|
|
1088
|
+
return void 0;
|
|
1089
|
+
}
|
|
1090
|
+
function allToolActions() {
|
|
1091
|
+
const out = [];
|
|
1092
|
+
for (const tool of CANVAS_TOOL_NAMES) {
|
|
1093
|
+
for (const action of TOOL_ACTION_MAP[tool]) {
|
|
1094
|
+
if (!out.includes(action)) out.push(action);
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
return out;
|
|
1098
|
+
}
|
|
1099
|
+
function allCanvasActions() {
|
|
1100
|
+
return CANVAS_ACTIONS;
|
|
1101
|
+
}
|
|
1102
|
+
|
|
797
1103
|
// src/pending-entries.ts
|
|
798
1104
|
var PENDING_REGISTER_ENTRY_TYPE = "pending:register";
|
|
799
1105
|
var PENDING_UNREGISTER_ENTRY_TYPE = "pending:unregister";
|
|
800
1106
|
function scanPendingEntries(entries) {
|
|
801
|
-
const scan = {
|
|
1107
|
+
const scan = {
|
|
1108
|
+
registerEntries: [],
|
|
1109
|
+
unregisteredIds: /* @__PURE__ */ new Set(),
|
|
1110
|
+
registerTypes: /* @__PURE__ */ new Map(),
|
|
1111
|
+
unregisterStatuses: /* @__PURE__ */ new Map()
|
|
1112
|
+
};
|
|
1113
|
+
const seenRegisterIds = /* @__PURE__ */ new Set();
|
|
802
1114
|
for (const raw of entries) {
|
|
803
1115
|
if (!raw || typeof raw !== "object") continue;
|
|
804
1116
|
const entry = raw;
|
|
1117
|
+
const data = entry.data ?? {};
|
|
805
1118
|
if (entry.customType === PENDING_REGISTER_ENTRY_TYPE) {
|
|
806
|
-
scan.registerEntries.push({ data
|
|
1119
|
+
scan.registerEntries.push({ data });
|
|
1120
|
+
if (typeof data.id === "string" && data.id !== "" && !seenRegisterIds.has(data.id)) {
|
|
1121
|
+
seenRegisterIds.add(data.id);
|
|
1122
|
+
if (typeof data.type === "string") scan.registerTypes.set(data.id, data.type);
|
|
1123
|
+
}
|
|
807
1124
|
} else if (entry.customType === PENDING_UNREGISTER_ENTRY_TYPE) {
|
|
808
|
-
|
|
809
|
-
|
|
1125
|
+
if (typeof data.id === "string") {
|
|
1126
|
+
scan.unregisteredIds.add(data.id);
|
|
1127
|
+
const status = data.status;
|
|
1128
|
+
if (data.id !== "" && typeof status === "string" && MAPPED_PENDING_STATUSES.has(status)) {
|
|
1129
|
+
scan.unregisterStatuses.set(data.id, status);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
810
1132
|
}
|
|
811
1133
|
}
|
|
812
1134
|
return scan;
|
|
813
1135
|
}
|
|
1136
|
+
function scanPendingFields(entries) {
|
|
1137
|
+
const { registerTypes, unregisterStatuses } = scanPendingEntries(entries);
|
|
1138
|
+
return { registerTypes, unregisterStatuses };
|
|
1139
|
+
}
|
|
814
1140
|
function applyPendingDiff(scan) {
|
|
815
1141
|
const active = [];
|
|
816
1142
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -853,21 +1179,33 @@ var REASON_STATUS_MAP = {
|
|
|
853
1179
|
function mapReasonToStatus(reason) {
|
|
854
1180
|
return REASON_STATUS_MAP[reason] ?? "completed";
|
|
855
1181
|
}
|
|
1182
|
+
var MAPPED_PENDING_STATUSES = new Set(Object.values(REASON_STATUS_MAP));
|
|
856
1183
|
export {
|
|
1184
|
+
ACTION_EVENT_MAP,
|
|
857
1185
|
ASK_USER_MARKER,
|
|
858
1186
|
BACKGROUND_TASK_ID_PREFIX,
|
|
859
1187
|
BACKGROUND_TASK_REGISTRY_FILENAME,
|
|
860
1188
|
BACKGROUND_TASK_REGISTRY_VERSION,
|
|
861
1189
|
BASE_TOOL_ENHANCE_DIRNAME,
|
|
1190
|
+
CANVAS_ACTIONS,
|
|
1191
|
+
CANVAS_ACTOR_MATRIX,
|
|
1192
|
+
CANVAS_ERROR_CODES,
|
|
1193
|
+
CANVAS_ERROR_RECOVERY,
|
|
1194
|
+
CANVAS_EVENT_TYPES,
|
|
1195
|
+
CANVAS_MARKER,
|
|
1196
|
+
CANVAS_MARKER_ACTIONS,
|
|
1197
|
+
CANVAS_TOOL_NAMES,
|
|
862
1198
|
GUI_WIDGET_MARKER,
|
|
863
1199
|
HISTORY_LIMIT,
|
|
864
1200
|
INFLIGHT_REPORT_ACK,
|
|
865
1201
|
JOURNAL_REPORT_ACK,
|
|
1202
|
+
MAPPED_PENDING_STATUSES,
|
|
866
1203
|
MAX_TERMINAL_REGISTRY_ENTRIES,
|
|
867
1204
|
MS_PER_DAY,
|
|
868
1205
|
MS_PER_HOUR,
|
|
869
1206
|
MS_PER_MINUTE,
|
|
870
1207
|
MS_PER_SECOND,
|
|
1208
|
+
NON_TOOL_ACTIONS,
|
|
871
1209
|
PENDING_REGISTER_ENTRY_TYPE,
|
|
872
1210
|
PENDING_UNREGISTER_ENTRY_TYPE,
|
|
873
1211
|
PLAN_LIFECYCLE_EVENTS,
|
|
@@ -886,11 +1224,15 @@ export {
|
|
|
886
1224
|
SUBAGENT_INFLIGHT_MARKER,
|
|
887
1225
|
SUBAGENT_JOURNAL_MARKER,
|
|
888
1226
|
TASK_ENTRY_TYPE,
|
|
1227
|
+
TOOL_ACTION_MAP,
|
|
889
1228
|
UI_FORM_MARKER,
|
|
890
1229
|
WORKFLOW_RESULT_CUSTOM_TYPE,
|
|
1230
|
+
allCanvasActions,
|
|
1231
|
+
allToolActions,
|
|
891
1232
|
appendExecutionRecord,
|
|
892
1233
|
applyPendingDiff,
|
|
893
1234
|
callMarkerRpc,
|
|
1235
|
+
canvasError,
|
|
894
1236
|
collectActivePendingIds,
|
|
895
1237
|
dateToOnceCron,
|
|
896
1238
|
derivePhase,
|
|
@@ -905,9 +1247,30 @@ export {
|
|
|
905
1247
|
guiComponent,
|
|
906
1248
|
guiResult,
|
|
907
1249
|
guiSetWidget,
|
|
1250
|
+
isActionAllowed,
|
|
908
1251
|
isActiveBackgroundTaskState,
|
|
1252
|
+
isArgumentMateriality,
|
|
1253
|
+
isArgumentPolarity,
|
|
909
1254
|
isAskUserQuestion,
|
|
910
1255
|
isBackgroundTaskRegistryEntry,
|
|
1256
|
+
isCanvasCommentParams,
|
|
1257
|
+
isCanvasCommentRespondParams,
|
|
1258
|
+
isCanvasConvergeCheckParams,
|
|
1259
|
+
isCanvasCreateParams,
|
|
1260
|
+
isCanvasDecideDirectionParams,
|
|
1261
|
+
isCanvasDispatchParams,
|
|
1262
|
+
isCanvasEnterParams,
|
|
1263
|
+
isCanvasExportParams,
|
|
1264
|
+
isCanvasGrowParams,
|
|
1265
|
+
isCanvasListParams,
|
|
1266
|
+
isCanvasMarkerRequest,
|
|
1267
|
+
isCanvasPatchParams,
|
|
1268
|
+
isCanvasReadParams,
|
|
1269
|
+
isCanvasReviewAppendParams,
|
|
1270
|
+
isCanvasReviewRequestParams,
|
|
1271
|
+
isCanvasReviewResolveParams,
|
|
1272
|
+
isCanvasSelectParams,
|
|
1273
|
+
isCanvasTransitionParams,
|
|
911
1274
|
isChannelErrorResult,
|
|
912
1275
|
isFormAnswers,
|
|
913
1276
|
isFormQuestion,
|
|
@@ -939,8 +1302,10 @@ export {
|
|
|
939
1302
|
readResumeHint,
|
|
940
1303
|
replayFoldEntries,
|
|
941
1304
|
scanPendingEntries,
|
|
1305
|
+
scanPendingFields,
|
|
942
1306
|
setWidgetDual,
|
|
943
1307
|
snapshotToTask,
|
|
1308
|
+
toolOfAction,
|
|
944
1309
|
transition,
|
|
945
1310
|
truncateSelfReview,
|
|
946
1311
|
uiFormInteract,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhushanwen/extension-protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0",
|
|
4
4
|
"description": "Cross-layer pi extension contract package: dual-mode (TUI/GUI) rendering helpers, session/background-task/pending-entries protocols, and shared behavior primitives",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|