Commit Graph
140 Commits
Author SHA1 Message Date
Dmitry Ng e370450dab feat(browser): enhance HTML and MD content handling with warnings for small content and errors for binary URLs
- Updated `getHTML` and `getMD` methods to return warnings for small content instead of errors.
- Implemented checks for binary URLs, returning descriptive errors when such URLs are encountered.
- Added new tests to validate the updated behavior for small and empty content handling.
2026-05-03 00:45:27 +03:00
Dmitry Ng b254ff6f90 refactor(flow_manager): improve error handling for running tasks 2026-05-03 00:43:51 +03:00
Dmitry Ng 75eb8e0f1e fix(aslog): implement TryLock to prevent deadlock in workerMsgUpdater
- Added TryLock mechanism to avoid deadlock situations when reading from the channel while the mutex is held.
- Enhanced timer handling to reset when the mutex is not available, ensuring continuous operation of the stream.
2026-05-03 00:42:17 +03:00
Dmitry Ng c068d86bf0 feat(docker): update Dockerfile and add new vLLM configurations
- Added new provider configurations for vLLM Qwen 3.6 in both thinking and non-thinking modes.
- Updated the Dockerfile to include the new configuration files for vLLM Qwen 3.6 and ensure proper setup for deployment.
2026-05-02 18:57:42 +03:00
Sergey KozyrenkoandCursor 268732f610 feat(file-manager): add subtree selection, open gesture, and parent-dir drop forwarding
- Folder rows now surface a tri-state checkbox derived from descendant selection;
  clicking / shift-clicking / toggling a folder flips the entire subtree in one
  gesture, including descendants of a collapsed folder.
- Files get a new onOpen prop, fired on double-click and Enter; directories keep
  expanding/collapsing. The resources page wires it to the existing download flow.
- Drop on a file row forwards to its parent folder so the whole folder acts as a
  single drop zone (Finder/Explorer semantics), with a shared drag-enter counter
  so highlight stays stable when moving the cursor between sibling rows.
- Extract pure data layer into useFileManagerData and pure selection reducers
  (computeRowClickSelection / computeToggleSelection / computeToggleSelectAll /
  computeDirSelectionState) into file-manager-utils; bundle per-tree row props
  into display / handlers so memoized rows stay reference-stable across parent
  re-renders, keyboard expansion, and selection changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-02 17:24:42 +07:00
Dmitry Ng ba14913c0e refactor: standardize resource ID handling and improve flow file management
- Updated resource ID handling to ensure consistent string coercion for numeric IDs across components.
- Enhanced sorting of resources in the FlowForm to use alphabetical order based on path.
- Improved resource attachment logic in the FlowFilesAttachResourcesDialog to avoid deduplication of descendants.
- Introduced utility functions for converting REST resource entries to a consistent format for Apollo cache.
- Adjusted upload handling to ensure proper type consistency between REST and GraphQL responses.
- Refactored promote functionality to align with updated resource ID handling and improve clarity in parameters.
2026-05-01 16:11:45 +03:00
Dmitry Ng 8830ae7010 fix: update resource handling and API documentation
- Adjusted descriptions in API documentation to clarify paths for uploads, resources, and containers.
- Updated data models to use consistent naming conventions (e.g., `isDir` to `is_dir`, `modifiedAt` to `modified_at`).
- Changed resource ID types from string to uint64 for better consistency across the application.
- Enhanced flow file upload functionality to support batch processing of resource files.
- Removed deprecated code related to resource entry responses in tests.
2026-05-01 16:11:09 +03:00
Dmitry Ng 629c018a68 fix: bug with retrieving resources recursive via graphql 2026-05-01 16:09:06 +03:00
Dmitry Ng b6f7fd7ef8 feat: enhance task and subtask handling with interruption management 2026-05-01 16:05:12 +03:00
Sergey Kozyrenko 3da56244dd feat: integrate user resources into flows and polish file manager
- Replace resources feature mocks with real GraphQL + REST integration
  (Apollo subscriptions-backed cache, dedicated hooks for search, upload,
  copy, move, mkdir, delete, plus conflict / mkdir / copy / move dialogs
  and a shared FileDropZone UI component).
- Let flows attach user resources on creation and in chat messages:
  FlowForm exposes resourceIds as a form field with a multi-select
  dropdown (file/folder icons), wired through createFlow, createAssistant,
  putUserInput and callAssistant mutations.
- Add attach-resources and save-as-resource (promote) dialogs to the
  flow files page; unify drag-and-drop via a shared
  hooks/use-files-drag-and-drop.
- Harden file manager: align skeleton layout (grid + column config) with
  real rows, extract use-file-manager-dnd, add group selection state and
  tree-node accessibility fixes.
- Normalize numeric id/userId from REST /resources/ responses to strings
  so GraphQL ID-typed consumers (zod-validated resource picker) work.
  Marked with TODO(backend) for removal once the REST endpoint matches
  the GraphQL ID scalar.
- Ignore *.tsbuildinfo artifacts.

Made-with: Cursor
2026-05-01 04:34:42 +07:00
Sergey Kozyrenko 0c412cedf9 refactor(flow-files): naming 2026-05-01 04:34:42 +07:00
Sergey Kozyrenko ca747b867a chore: remove unused shadcn AI and crud reference components
Drops `components/ai/file-tree.tsx` and `components/blocks/{crud,skeleton}/*`
reference snippets that were never imported anywhere; the real
file manager lives under `components/file-manager/` and is the only
implementation in use.

Made-with: Cursor
2026-05-01 04:34:41 +07:00
Sergey Kozyrenko f35d2cc0ae refactor(file-manager): polish API, accessibility, and naming
- split monolithic FileManager into FileManagerTreeNode, FileManagerBulkActionsBar, and useFileManagerKeyboardNavigation
- group FileManagerProps columns/search into nested configs and rename visibility booleans from show* to is*Visible per project convention
- replace abbreviations (idx, i, Sep, Item) with full names across components, hooks, and tests
- add ARIA tree-pattern attributes (aria-level, aria-posinset, aria-setsize, aria-multiselectable) and fix aria-hidden hiding the Select-all checkbox
- add labels.formatModified to localize the date column
- make walkTree strictly pure by hiding its internal accumulator
- move side effects out of the setState updater in useFileManagerSelection
- drop redundant stopPropagation in favor of the data-fm-skip-row-click marker

Made-with: Cursor
2026-05-01 04:34:41 +07:00
Sergey Kozyrenko 58f3c09cb0 chore: add shadcn AI and crud reference components
- vendor the shadcn ai/file-tree primitive (recursive collapsible tree with shared expand/select context) for future AI chat surfaces
- vendor the shadcn crud-file-manager and skeleton-file-manager demo blocks as design references; not wired into any route yet

Made-with: Cursor
2026-05-01 04:34:41 +07:00
Sergey Kozyrenko 929ee4e8c2 style: reformat flow-form long lines
- collapse multi-line imports and helpers in flow-form back onto single lines per the active prettier config; no behavioral changes

Made-with: Cursor
2026-05-01 04:34:41 +07:00
Sergey Kozyrenko 2b8d4186c6 feat: support async handlers in ConfirmationDialog
- handleConfirm now accepts () => Promise<void> | void; the dialog awaits the promise before closing
- show a Loader2 spinner on the confirm button while the handler is in flight, and disable both confirm and cancel
- block onOpenChange and outside-clicks while processing so the dialog can't be dismissed mid-action
- caller no longer needs to manage its own loading state for confirm-then-async flows

Made-with: Cursor
2026-05-01 04:34:40 +07:00
Sergey Kozyrenko 52825cadeb refactor: introduce typed axios api wrapper and migrate consumers
- add ApiResponse<T> / ApiSuccessResponse<T> / ApiErrorResponse / ApiHttpError types describing the backend protocol
- expose a typed api wrapper with helper methods (api.get / api.post / api.put / api.delete) that returns ApiResponse<T> directly and accepts per-call AxiosRequestConfig
- add unwrapApiResponse(...) and getApiErrorMessage(...) helpers so callers no longer reimplement success/error branching
- set a sensible default request timeout (30s) on the shared axios instance; long uploads still opt out via { timeout: 0 }
- migrate user-provider and password-change-form from the raw axios instance to the new typed api helpers, dropping their bespoke error-shape interfaces

Made-with: Cursor
2026-05-01 04:34:40 +07:00
Sergey Kozyrenko d390fb1dba refactor: integrate FileManager into flow files page
- replace the inline file tree implementation in flow-files with the new FileManager component
- compose row actions via factory helpers (downloadAction / copyPathAction / deleteAction) instead of bespoke menus
- delegate search highlighting, expand/collapse, multi-select and bulk delete to the shared component; the page now only owns upload, drag-and-drop, pull-from-container and per-file delete confirmation
- switch to the typed axios helpers (api / unwrapApiResponse / getApiErrorMessage) for upload, pull and delete calls

Made-with: Cursor
2026-05-01 04:34:40 +07:00
Sergey Kozyrenko d9416363dd feat: add reusable file manager component
- introduce src/components/file-manager with tree rendering, search highlighting, multi-select (single / toggle / shift-range), keyboard navigation (arrows, Home/End, Space, Cmd+A, Esc) and bulk delete
- expose unified actions[] API with downloadAction / copyPathAction / deleteAction factory helpers instead of separate built-in props
- split orchestration into useFileManagerExpansion and useFileManagerSelection hooks; derive expanded/selected state during render without useEffect, preserving Set identity for memo-friendly downstream
- add ARIA tree semantics (role=tree on the container, treeitem rows, roving tabindex via activeRowPath, aria-expanded/aria-selected)
- pure tree utils: O(1) folder lookup via Map, normalizeRootGroups, dedupeOverlappingPaths, findNodeByPath, plus 37 vitest unit tests
- ship shadcn checkbox primitive (depends on @radix-ui/react-checkbox) which the file manager uses for row and select-all controls

Made-with: Cursor
2026-05-01 04:34:40 +07:00
Sergey Kozyrenko 3002b2bf5e feat: add resourses 2026-05-01 04:34:39 +07:00
Dmitry NgandOctopus 956c11eadc feat: introduce engagement-log/technical-channel language policy across agent prompts
- Replaced ambiguous "user's language" guidance in tools/args.go with explicit engagement-log vs technical-channel markers per field, with strong English-only requirement for vector-store and search-engine queries.
- Added a unified LANGUAGE POLICY block to every agent prompt (primary_agent, assistant, pentester, coder, installer, searcher, memorist, generator, refiner, reporter, enricher), tailored per agent based on its actual tool set.
- Extended template variables and tool access (TerminalToolName, FileToolName) for coder, pentester, installer, memorist, generator, refiner, and enricher to match their runtime tool registrations.
- Fixed inverted UseAgents condition and removed misleading vector-store write references in assistant prompt; corrected MEMORY SYSTEM INTEGRATION for mode-specific tool references.
- Compressed COMPLETION REQUIREMENTS across templates and aligned closing-tool guidance with the channel mapping (engagement-log message vs technical-channel result).

Fixes #285.

Co-Authored-By: Octopus <liyuan851277048@icloud.com>
2026-04-30 15:29:56 +03:00
Dmitry Ng 47044dd1cf Merge pull request #294 from mason5052/codex/issue-289-web-ui-account-guidance
docs: clarify web UI account setup
2026-04-30 12:05:17 +04:00
Dmitry Ng c0035ac130 Merge pull request #293 from mason5052/codex/issue-291-fix-processor-doc-links
docs: fix processor wizard integration links
2026-04-30 12:03:07 +04:00
Dmitry Ng b9ac8fef5f Merge pull request #292 from mason5052/codex/issue-192-assistant-flow-management-docs
docs: explain assistant flow management for active flows
2026-04-30 12:01:12 +04:00
Dmitry Ng 47de4e44e6 docs: update links in configuration and flow execution documents, add directory for proposals 2026-04-30 10:09:03 +03:00
MasonandMason Kim 6257612689 docs: add OSINT integration scenarios (#278)
* docs: add OSINT integration scenarios

* docs: clarify OSINT scenario payloads

* docs: clarify OSINT provider identifiers

* docs: distinguish OSINT provider ids

---------

Co-authored-by: Mason Kim(ZINUS US_SALES) <mkim@zinus.com>
2026-04-30 10:47:08 +04:00
mason5052 4a8c491299 docs: clarify web UI account setup 2026-04-29 11:00:50 -04:00
mason5052 29d5723620 docs: fix processor wizard integration links 2026-04-29 10:58:03 -04:00
Mason Kim(ZINUS US_SALES) 9666cf35ca docs: explain assistant flow management 2026-04-28 19:19:57 -04:00
Dmitry Ng 402dfbe0ee Merge pull request #277 from mason5052/codex/issue-235-evidence-chain-rfc
docs: add evidence chain RFC
2026-04-29 01:35:59 +04:00
Dmitry Ng 425f075a96 Merge pull request #276 from mason5052/codex/issue-71-scope-of-work-template
docs: add scope-of-work pentest template
2026-04-29 01:08:29 +04:00
Dmitry NgandCopilot de6f527e6f Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Dmitry Ng <19asdek91@gmail.com>
2026-04-29 01:07:47 +04:00
Dmitry Ng a8289fcbba Merge pull request #275 from mason5052/codex/issue-69-openvas-custom-image-guide
docs: add OpenVAS custom image guide
2026-04-29 01:05:19 +04:00
Dmitry Ng fb607a8bc7 Merge branch 'feature/next-release' into codex/issue-69-openvas-custom-image-guide
Signed-off-by: Dmitry Ng <19asdek91@gmail.com>
2026-04-29 01:05:07 +04:00
Dmitry Ng 1d6f842bb9 test: add comprehensive coverage for FlowFileService HTTP handlers
- Added table-driven scenarios for all 8 endpoints (Get/Upload/Delete/Download flow files, Pull from container, GetContainerFiles, AddResourcesToFlow, AddResourceFromFlow) covering success paths, all privilege combinations (view/upload/admin/cross-user), error responses (forbidden/not-found/conflict/invalid request), and security checks (path traversal, symlink rejection).
- Introduced reusable test infrastructure: sqlite-backed flows/user_resources schema, fakeDockerClient implementing the full docker.DockerClient interface, flowFileCaptureSubscriptions recording both FlowPublisher and ResourcePublisher events, and helpers for multipart upload bodies and container TAR fixtures.
- Added direct unit tests for shellQuote, parseFlowIDParam, cleanupPendingUploads, and flowScopeForFiles privilege matrix.
- Lifts handler coverage from 0% to 60-90% across the file and total services package coverage from 10.2% to 28.6%.
2026-04-28 22:48:23 +03:00
Dmitry Ng 452a2d51e2 fix: expand ResourceService coverage with comprehensive scenarios
- Restructured single-case tests for List, Mkdir, Download, and CleanupOrphanBlobs into table-driven scenarios.
- Extended Upload, Delete, Copy, and Move scenarios with admin, forbidden, malformed JSON, invalid path, missing source, and trailing-slash hint cases.
- Added dedicated tests for blob deduplication on upload/copy, non-multipart bodies, orphan blob preservation on rollback, and direct deleteOrphanBlob coverage.
- Introduced helpers for parameterized multipart field names, custom UID context, and on-disk blob counting.
2026-04-28 22:02:49 +03:00
Dmitry Ng aa4b70eaba feat: add user resources system and flow integration
- UserResource model with MD5-deduplicated blob storage and virtual path filesystem
- REST API for resource CRUD (upload, mkdir, move, copy, delete, download)
- GraphQL query/mutations with resourceIds support on createFlow, putUserInput, createAssistant, callAssistant
- Resource → flow copy with hierarchy restore; incremental container sync (find missing, copy once)
- FlowWorker.PutResources delegates copy, docker push and flowFileAdded events
- Agent prompts updated with {{.UserFiles}} XML listing of /work/uploads and /work/resources
- Resource subscriptions: resourceAdded/Updated/Deleted
2026-04-28 17:00:17 +03:00
Dmitry Ng 7c4ebda2c2 feat: enhance Docker client with container file operations and API integration
- Added methods for non-recursive directory listing and file stat operations in the Docker client.
- Implemented a new API endpoint to retrieve files from a running container's directory.
- Updated documentation to reflect new file operations and API changes.
- Introduced data structures for container file metadata and integrated them into the flow file service.
- Enhanced flow file management capabilities with improved synchronization between local and container file systems.
2026-04-27 13:19:39 +03:00
Dmitry Ng 72b1c8489e feat: implement flow file management with upload and retrieval capabilities
- Added new endpoints for managing flow files, including listing, uploading, and deleting files within flow workspaces.
- Introduced FlowFile model to represent file metadata.
- Enhanced GraphQL schema to support flow file operations and subscriptions for real-time updates.
- Updated API documentation to reflect new flow file functionalities.
2026-04-27 10:03:42 +03:00
Dmitry Ng 7cdb3a61cb Merge pull request #272 from mason5052/codex/issue-193-flow-file-uploads-v1
feat: add flow-scoped file uploads
2026-04-24 04:03:39 +04:00
Dmitry Ng 5e902ca255 docs: update API tokens section to reflect new naming convention in settings 2026-04-24 03:00:48 +03:00
Dmitry Ng 378db10732 Merge pull request #270 from mason5052/codex/issue-191-settings-coverage
docs: clarify current web settings coverage
2026-04-24 03:52:41 +04:00
Dmitry Ng fadb4dc80e Merge pull request #269 from mason5052/codex/issue-35-capability-boundaries-docs
[codex] docs: clarify current PentAGI capability boundaries
2026-04-24 03:50:05 +04:00
Dmitry Ng 5067e8f5a4 feat: add assistant flow management tools and summarizer cache
- new get_flow_status / stop_flow / submit_flow_input / patch_flow_subtasks tools in assistant executor, backed by FlowWorker callbacks
- flowStatusTool supports 5 detail levels with verbose mode, polling for task readiness, and per-size summarization
- summarizer LRU cache (1000 entries, 4 h TTL, SHA-256 key) on flowProvider to skip redundant LLM calls
- updated assistant.tmpl with full flow management protocol: state reference, decision guide, constraints
- updated flow_execution.md with terminal timeout config, new tools, and cache
2026-04-24 02:37:09 +03:00
Dmitry Ng 172fb8754f Merge pull request #267 from mason5052/codex/issue-74-memory-lifecycle-docs
docs: clarify memory lifecycle across flows
2026-04-22 22:15:23 +04:00
Dmitry Ng b748af5374 docs: reorganize Pentesting Prompt Methodology section in README.md 2026-04-22 21:08:34 +03:00
Dmitry Ng 6919511022 Merge pull request #266 from mason5052/codex/issue-79-pentest-methodology-guide
docs: add pentesting prompt methodology guidance
2026-04-22 21:49:33 +04:00
Dmitry Ng ec449dd414 fix: update troubleshooting instructions for Docker Compose installation 2026-04-22 20:47:53 +03:00
Dmitry Ng 329c9ae1d0 Merge pull request #265 from mason5052/codex/issue-254-compose-check-alignment
fix: align compose checks with docker compose
2026-04-22 21:35:45 +04:00
Dmitry Ng a1b6e9e826 docs: update Assistant mode description in README.md to include sub-agent delegation feature 2026-04-22 20:24:08 +03:00