@agent-native/core 0.51.7 → 0.51.8
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/skills.d.ts +13 -0
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +255 -24
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/assistant-ui-recovery.d.ts.map +1 -1
- package/dist/client/assistant-ui-recovery.js +15 -12
- package/dist/client/assistant-ui-recovery.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-ui-recovery.d.ts","sourceRoot":"","sources":["../../src/client/assistant-ui-recovery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,+BAA+B,GAChC,kCAAkC,GAClC,qCAAqC,GACrC,kCAAkC,CAAC;AAEvC,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,OAAO,GACb,+BAA+B,GAAG,IAAI,CAcxC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpE;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3E;AAED,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,KAAK,uCAAuC,GAAG;IAC7C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;CACV,CAAC;AAIF,qBAAa,kCAAmC,SAAQ,KAAK,CAAC,SAAS,CACrE,uCAAuC,EACvC,uCAAuC,CACxC;IACC,KAAK,EAAE,uCAAuC,CAI5C;IAEF,OAAO,CAAC,UAAU,CAA8C;IAEhE,OAAO,CAAC,iBAAiB;IASzB,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,uCAAuC,CAAC;IAMnD,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"assistant-ui-recovery.d.ts","sourceRoot":"","sources":["../../src/client/assistant-ui-recovery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,KAAK,+BAA+B,GAChC,kCAAkC,GAClC,qCAAqC,GACrC,kCAAkC,CAAC;AAEvC,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,OAAO,GACb,+BAA+B,GAAG,IAAI,CAcxC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpE;AAED,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE3E;AAED,KAAK,uCAAuC,GAAG;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,KAAK,uCAAuC,GAAG;IAC7C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;CACV,CAAC;AAIF,qBAAa,kCAAmC,SAAQ,KAAK,CAAC,SAAS,CACrE,uCAAuC,EACvC,uCAAuC,CACxC;IACC,KAAK,EAAE,uCAAuC,CAI5C;IAEF,OAAO,CAAC,UAAU,CAA8C;IAEhE,OAAO,CAAC,iBAAiB;IASzB,MAAM,CAAC,wBAAwB,CAC7B,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,uCAAuC,CAAC;IAMnD,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS;IA0CvD,kBAAkB,CAChB,SAAS,EAAE,uCAAuC,EAClD,SAAS,EAAE,uCAAuC;IA2BpD,oBAAoB;IAMpB,MAAM;CAoBP;AAED,wBAAgB,iCAAiC,CAAC,EAChD,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CASA"}
|
|
@@ -46,21 +46,24 @@ export class AssistantUiStaleIndexErrorBoundary extends React.Component {
|
|
|
46
46
|
const retryCount = this.state.recovery?.signature === signature
|
|
47
47
|
? this.state.recovery.retryCount + 1
|
|
48
48
|
: 1;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
49
|
+
const retryBudgetExceeded = retryCount > MAX_ASSISTANT_UI_RECOVERABLE_RETRIES;
|
|
50
|
+
if (retryBudgetExceeded) {
|
|
51
|
+
captureError(error, {
|
|
52
|
+
tags: {
|
|
53
|
+
component: this.props.componentName ?? "AssistantChat",
|
|
54
|
+
recoverable,
|
|
55
|
+
},
|
|
56
|
+
extra: {
|
|
57
|
+
resetKey: this.props.resetKey,
|
|
58
|
+
retryCount,
|
|
59
|
+
componentStack: info.componentStack,
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
}
|
|
60
63
|
this.setState({
|
|
61
64
|
recovery: { signature, retryCount },
|
|
62
65
|
});
|
|
63
|
-
if (
|
|
66
|
+
if (retryBudgetExceeded)
|
|
64
67
|
return;
|
|
65
68
|
if (this.retryTimer)
|
|
66
69
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant-ui-recovery.js","sourceRoot":"","sources":["../../src/client/assistant-ui-recovery.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C,MAAM,UAAU,qCAAqC,CACnD,KAAc;IAEd,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC7E,IACE,4DAA4D,CAAC,IAAI,CAAC,OAAO,CAAC,EAC1E,CAAC;QACD,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvD,OAAO,qCAAqC,CAAC;IAC/C,CAAC;IACD,IAAI,uDAAuD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAc;IACzD,OAAO,CACL,qCAAqC,CAAC,KAAK,CAAC;QAC5C,kCAAkC,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,KAAc;IAChE,OAAO,qCAAqC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAC/D,CAAC;AAiBD,MAAM,oCAAoC,GAAG,CAAC,CAAC;AAE/C,MAAM,OAAO,kCAAmC,SAAQ,KAAK,CAAC,SAG7D;IACC,KAAK,GAA4C;QAC/C,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,IAAI;KACf,CAAC;IAEM,UAAU,GAAyC,IAAI,CAAC;IAExD,iBAAiB,CACvB,IAAqC,EACrC,KAAc;QAEd,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,wBAAwB,CAC7B,KAAc;QAEd,OAAO;YACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACvE,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,KAAc,EAAE,IAAqB;QACrD,MAAM,WAAW,GAAG,qCAAqC,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW;YAAE,OAAO;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC7D,MAAM,UAAU,GACd,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS;YAC1C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC;YACpC,CAAC,CAAC,CAAC,CAAC;QAER,YAAY,CAAC,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"assistant-ui-recovery.js","sourceRoot":"","sources":["../../src/client/assistant-ui-recovery.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { captureError } from \"./analytics.js\";\n\ntype AssistantUiRecoverableErrorKind =\n | \"assistant-ui-stale-message-index\"\n | \"assistant-ui-duplicate-resource-key\"\n | \"assistant-ui-react-fiber-unmount\";\n\nexport function assistantUiRecoverableRenderErrorKind(\n error: unknown,\n): AssistantUiRecoverableErrorKind | null {\n const message = error instanceof Error ? error.message : String(error ?? \"\");\n if (\n /^tapClientLookup: Index \\d+ out of bounds \\(length: \\d+\\)$/.test(message)\n ) {\n return \"assistant-ui-stale-message-index\";\n }\n if (/^Duplicate key .+ in tapResources$/.test(message)) {\n return \"assistant-ui-duplicate-resource-key\";\n }\n if (/^Tried to unmount a fiber that is already unmounted\\b/.test(message)) {\n return \"assistant-ui-react-fiber-unmount\";\n }\n return null;\n}\n\nexport function isAssistantUiStaleIndexError(error: unknown): boolean {\n return (\n assistantUiRecoverableRenderErrorKind(error) ===\n \"assistant-ui-stale-message-index\"\n );\n}\n\nexport function isAssistantUiRecoverableRenderError(error: unknown): boolean {\n return assistantUiRecoverableRenderErrorKind(error) !== null;\n}\n\ntype AssistantUiStaleIndexErrorBoundaryProps = {\n resetKey: string;\n componentName?: string;\n children: React.ReactNode;\n};\n\ntype AssistantUiStaleIndexErrorBoundaryState = {\n error: Error | null;\n retryToken: number;\n recovery: {\n signature: string;\n retryCount: number;\n } | null;\n};\n\nconst MAX_ASSISTANT_UI_RECOVERABLE_RETRIES = 2;\n\nexport class AssistantUiStaleIndexErrorBoundary extends React.Component<\n AssistantUiStaleIndexErrorBoundaryProps,\n AssistantUiStaleIndexErrorBoundaryState\n> {\n state: AssistantUiStaleIndexErrorBoundaryState = {\n error: null,\n retryToken: 0,\n recovery: null,\n };\n\n private retryTimer: ReturnType<typeof setTimeout> | null = null;\n\n private recoverySignature(\n kind: AssistantUiRecoverableErrorKind,\n error: unknown,\n ): string {\n const message =\n error instanceof Error ? error.message : String(error ?? \"\");\n return `${this.props.resetKey}:${kind}:${message}`;\n }\n\n static getDerivedStateFromError(\n error: unknown,\n ): Partial<AssistantUiStaleIndexErrorBoundaryState> {\n return {\n error: error instanceof Error ? error : new Error(String(error ?? \"\")),\n };\n }\n\n componentDidCatch(error: unknown, info: React.ErrorInfo) {\n const recoverable = assistantUiRecoverableRenderErrorKind(error);\n if (!recoverable) return;\n const signature = this.recoverySignature(recoverable, error);\n const retryCount =\n this.state.recovery?.signature === signature\n ? this.state.recovery.retryCount + 1\n : 1;\n\n const retryBudgetExceeded =\n retryCount > MAX_ASSISTANT_UI_RECOVERABLE_RETRIES;\n if (retryBudgetExceeded) {\n captureError(error, {\n tags: {\n component: this.props.componentName ?? \"AssistantChat\",\n recoverable,\n },\n extra: {\n resetKey: this.props.resetKey,\n retryCount,\n componentStack: info.componentStack,\n },\n });\n }\n\n this.setState({\n recovery: { signature, retryCount },\n });\n if (retryBudgetExceeded) return;\n\n if (this.retryTimer) return;\n this.retryTimer = setTimeout(() => {\n this.retryTimer = null;\n this.setState((state) => {\n if (!state.error || !isAssistantUiRecoverableRenderError(state.error)) {\n return null;\n }\n return { error: null, retryToken: state.retryToken + 1 };\n });\n }, 0);\n }\n\n componentDidUpdate(\n prevProps: AssistantUiStaleIndexErrorBoundaryProps,\n prevState: AssistantUiStaleIndexErrorBoundaryState,\n ) {\n if (prevProps.resetKey !== this.props.resetKey) {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n this.retryTimer = null;\n }\n if (\n this.state.error &&\n isAssistantUiRecoverableRenderError(this.state.error)\n ) {\n this.setState((state) => ({\n error: null,\n retryToken: state.retryToken + 1,\n recovery: null,\n }));\n } else if (this.state.recovery) {\n this.setState({ recovery: null });\n }\n return;\n }\n\n if (prevState.error && !this.state.error && this.state.recovery) {\n this.setState({ recovery: null });\n }\n }\n\n componentWillUnmount() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n\n render() {\n if (this.state.error) {\n if (!isAssistantUiRecoverableRenderError(this.state.error)) {\n throw this.state.error;\n }\n if (\n this.state.recovery &&\n this.state.recovery.retryCount > MAX_ASSISTANT_UI_RECOVERABLE_RETRIES\n ) {\n throw this.state.error;\n }\n return null;\n }\n\n return (\n <React.Fragment key={`${this.props.resetKey}:${this.state.retryToken}`}>\n {this.props.children}\n </React.Fragment>\n );\n }\n}\n\nexport function AssistantMessageListErrorBoundary({\n resetKey,\n children,\n}: {\n resetKey: string;\n children: React.ReactNode;\n}) {\n return (\n <AssistantUiStaleIndexErrorBoundary\n resetKey={resetKey}\n componentName=\"AssistantMessageList\"\n >\n {children}\n </AssistantUiStaleIndexErrorBoundary>\n );\n}\n"]}
|