Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,19 @@

All notable changes to this project will be documented in this file.

## [0.4.7] - 2025-12-27

### 🛠️ Stability & Robustness (PES Agent)
Comment on lines +5 to +7
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The changelog is missing the security hardening changes mentioned in the pull request description. It would be beneficial to add a "Security" section to this changelog entry to document the input sanitization and system prompt guardrail improvements. This ensures the changelog is a complete record of all significant changes in this version.

For example:

### 🔒 Security
- **Prompt Injection Prevention**: Implemented input sanitization for JSON markers to guard against prompt injection attacks.
- **System Prompt Protection**: Added guardrails to the synthesis system prompt to prevent leakage of sensitive instructions.

- **Execution Loop Integrity**: Addressed a critical issue where `item.result` was not being populated if the execution loop terminated due to max iterations or lacked explicit final content.
- **Enhanced Fallback Logic**:
- **Smart Result Capture**: Implemented intelligent fallback to the *last* tool execution result when explicit LLM content is missing.
- **Context Awareness**: Updated context building for synthesis and subsequent steps to utilize tool results when `item.result` is empty, eliminating "undefined" errors in prompts.
- **Stale Content Protection**: Ensured `lastContent` is only updated with meaningful content, preventing empty strings from overriding valid previous outputs.
- **HITL Resumption Fixes**:
- **State Reset**: Fixed a bug where resuming from a suspended state failed to reset `isPaused` and item status, causing the execution loop to skip the resumed task.
- **A2A Integration**: Ensured Agent-to-Agent (A2A) task results are correctly captured and used in the result fallback chain.
- **Regression Testing**: Added `test/pes-agent-result.test.ts` with deep state verification to prevent future regressions in result population and resumption flows.

## [0.4.6] - 2025-12-26

### 🚦 Tool-Aware Execution Framework (TAEF)
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@


# ✨ ART: Agentic Runtime Framework (beta) <img src="https://img.shields.io/badge/Version-v0.4.6-blue" alt="Version 0.4.6">
# ✨ ART: Agentic Runtime Framework (beta) <img src="https://img.shields.io/badge/Version-v0.4.7-blue" alt="Version 0.4.7">

<p align="center">
<img src="docs/art-logo.jpeg" alt="ART Framework Logo" width="200"/>
Expand Down
2 changes: 1 addition & 1 deletion docs/components/assets/hierarchy.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 12 additions & 12 deletions docs/components/classes/A2ATaskSocket.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/ARTError.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/AdapterInstantiationError.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/AgentDiscoveryService.html

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions docs/components/classes/AgentFactory.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/classes/AnthropicAdapter.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/classes/ApiKeyStrategy.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/ApiQueueTimeoutError.html

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions docs/components/classes/AuthManager.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/components/classes/CalculatorTool.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/ConversationSocket.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/components/classes/DeepSeekAdapter.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/components/classes/GeminiAdapter.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/GenericOAuthStrategy.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/classes/GroqAdapter.html

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions docs/components/classes/InMemoryStorageAdapter.html

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions docs/components/classes/IndexedDBStorageAdapter.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/LLMStreamSocket.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/LocalInstanceBusyError.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/LocalProviderConflictError.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/Logger.html

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions docs/components/classes/McpClientController.html

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/components/classes/McpManager.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/McpProxyTool.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/ObservationSocket.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/classes/OllamaAdapter.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/classes/OpenAIAdapter.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/components/classes/OpenRouterAdapter.html

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions docs/components/classes/PESAgent.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/PKCEOAuthStrategy.html

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions docs/components/classes/ProviderManagerImpl.html

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions docs/components/classes/StateManager.html

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions docs/components/classes/SupabaseStorageAdapter.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions docs/components/classes/TaskDelegationService.html

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/components/classes/ToolRegistry.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/TypedSocket.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/UISystem.html

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions docs/components/classes/UnknownProviderError.html

Large diffs are not rendered by default.

34 changes: 17 additions & 17 deletions docs/components/classes/ZyntopiaOAuthStrategy.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/enums/A2ATaskPriority.html

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/components/enums/A2ATaskStatus.html

Large diffs are not rendered by default.

104 changes: 52 additions & 52 deletions docs/components/enums/ErrorCode.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/enums/LogLevel.html

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions docs/components/enums/MessageRole.html

Large diffs are not rendered by default.

16 changes: 8 additions & 8 deletions docs/components/enums/ModelCapability.html

Large diffs are not rendered by default.

40 changes: 20 additions & 20 deletions docs/components/enums/ObservationType.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions docs/components/enums/TodoItemStatus.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/components/functions/createArtInstance.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
</div><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">art</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">createArtInstance</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-5">storage:</span><span class="hl-1"> { </span><span class="hl-5">type:</span><span class="hl-1"> </span><span class="hl-2">&#39;indexedDB&#39;</span><span class="hl-1">, </span><span class="hl-5">dbName:</span><span class="hl-1"> </span><span class="hl-2">&#39;myAgentDb&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">reasoning:</span><span class="hl-1"> { </span><span class="hl-5">provider:</span><span class="hl-1"> </span><span class="hl-2">&#39;openai&#39;</span><span class="hl-1">, </span><span class="hl-5">apiKey:</span><span class="hl-1"> </span><span class="hl-2">&#39;...&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-5">tools:</span><span class="hl-1"> [</span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">CalculatorTool</span><span class="hl-1">()]</span><br/><span class="hl-1">});</span><br/><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">response</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-5">art</span><span class="hl-1">.</span><span class="hl-0">process</span><span class="hl-1">({ </span><span class="hl-5">query:</span><span class="hl-1"> </span><span class="hl-2">&quot;Calculate 5*5&quot;</span><span class="hl-1">, </span><span class="hl-5">threadId:</span><span class="hl-1"> </span><span class="hl-2">&quot;thread1&quot;</span><span class="hl-1"> });</span>
</code><button type="button">Copy</button></pre>

</div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/hashangit/ART/blob/d06039b44058bed1408965572429e0afec31142a/src/core/agent-factory.ts#L358">src/core/agent-factory.ts:358</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">ART Framework API Docs</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
</div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/hashangit/ART/blob/45b3c2fd7980335bcddd7242e2c72a43e33777f7/src/core/agent-factory.ts#L358">src/core/agent-factory.ts:358</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">ART Framework API Docs</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
2 changes: 1 addition & 1 deletion docs/components/functions/generateUUID.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
</div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><p>A randomly generated UUID string (e.g., &quot;f47ac10b-58cc-4372-a567-0e02b2c3d479&quot;).</p>
<div class="tsd-comment tsd-typography"><div class="tsd-tag-remarks"><h4 class="tsd-anchor-link" id="remarks">Remarks<a href="#remarks" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Uses the underlying 'uuid' library's v4 implementation.</p>
</div><div class="tsd-tag-see"><h4 class="tsd-anchor-link" id="see">See<a href="#see" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><p><a href="https://www.npmjs.com/package/uuid">uuid npm package</a></p>
</div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/hashangit/ART/blob/d06039b44058bed1408965572429e0afec31142a/src/utils/uuid.ts#L17">src/utils/uuid.ts:17</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">ART Framework API Docs</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
</div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/hashangit/ART/blob/45b3c2fd7980335bcddd7242e2c72a43e33777f7/src/utils/uuid.ts#L17">src/utils/uuid.ts:17</a></li></ul></aside></div></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">ART Framework API Docs</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
Loading