@vicoa/cli 1.3.21-win32-x64 → 1.3.21
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/README.md +82 -0
- package/bin/vicoa.js +38 -0
- package/package.json +29 -10
- package/bin/_internal/81d243bd2c585b0f4821__mypyc.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/VCRUNTIME140.dll +0 -0
- package/bin/_internal/VCRUNTIME140_1.dll +0 -0
- package/bin/_internal/_asyncio.pyd +0 -0
- package/bin/_internal/_bz2.pyd +0 -0
- package/bin/_internal/_cffi_backend.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/_ctypes.pyd +0 -0
- package/bin/_internal/_decimal.pyd +0 -0
- package/bin/_internal/_hashlib.pyd +0 -0
- package/bin/_internal/_lzma.pyd +0 -0
- package/bin/_internal/_multiprocessing.pyd +0 -0
- package/bin/_internal/_overlapped.pyd +0 -0
- package/bin/_internal/_queue.pyd +0 -0
- package/bin/_internal/_socket.pyd +0 -0
- package/bin/_internal/_ssl.pyd +0 -0
- package/bin/_internal/_uuid.pyd +0 -0
- package/bin/_internal/_wmi.pyd +0 -0
- package/bin/_internal/_zoneinfo.pyd +0 -0
- package/bin/_internal/aiohttp/_http_parser.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_http_writer.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_websocket/mask.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/aiohttp/_websocket/reader_c.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/api-ms-win-core-console-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-datetime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-debug-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-fibers-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-file-l2-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-handle-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-kernel32-legacy-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-localization-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-memory-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
- package/bin/_internal/api-ms-win-core-profile-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-synch-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-sysinfo-l1-2-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-timezone-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-core-util-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-conio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-convert-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-environment-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-heap-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-locale-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-math-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-process-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-string-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-time-l1-1-0.dll +0 -0
- package/bin/_internal/api-ms-win-crt-utility-l1-1-0.dll +0 -0
- package/bin/_internal/attrs-26.1.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/attrs-26.1.0.dist-info/METADATA +0 -199
- package/bin/_internal/attrs-26.1.0.dist-info/RECORD +0 -55
- package/bin/_internal/attrs-26.1.0.dist-info/WHEEL +0 -4
- package/bin/_internal/attrs-26.1.0.dist-info/licenses/LICENSE +0 -21
- package/bin/_internal/base_library.zip +0 -0
- package/bin/_internal/certifi/cacert.pem +0 -3933
- package/bin/_internal/certifi/py.typed +0 -0
- package/bin/_internal/charset_normalizer/cd.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/charset_normalizer/md.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/click-8.3.3.dist-info/INSTALLER +0 -1
- package/bin/_internal/click-8.3.3.dist-info/METADATA +0 -84
- package/bin/_internal/click-8.3.3.dist-info/RECORD +0 -40
- package/bin/_internal/click-8.3.3.dist-info/WHEEL +0 -4
- package/bin/_internal/click-8.3.3.dist-info/licenses/LICENSE.txt +0 -28
- package/bin/_internal/cryptography/hazmat/bindings/_rust.pyd +0 -0
- package/bin/_internal/cryptography-48.0.0.dist-info/INSTALLER +0 -1
- package/bin/_internal/cryptography-48.0.0.dist-info/METADATA +0 -110
- package/bin/_internal/cryptography-48.0.0.dist-info/RECORD +0 -195
- package/bin/_internal/cryptography-48.0.0.dist-info/WHEEL +0 -4
- package/bin/_internal/cryptography-48.0.0.dist-info/licenses/LICENSE +0 -3
- package/bin/_internal/cryptography-48.0.0.dist-info/licenses/LICENSE.APACHE +0 -202
- package/bin/_internal/cryptography-48.0.0.dist-info/licenses/LICENSE.BSD +0 -27
- package/bin/_internal/cryptography-48.0.0.dist-info/sboms/cryptography-rust.cyclonedx.json +0 -1362
- package/bin/_internal/cryptography-48.0.0.dist-info/sboms/sbom.json +0 -43
- package/bin/_internal/fastmcp-2.9.2.dist-info/INSTALLER +0 -1
- package/bin/_internal/fastmcp-2.9.2.dist-info/METADATA +0 -465
- package/bin/_internal/fastmcp-2.9.2.dist-info/RECORD +0 -149
- package/bin/_internal/fastmcp-2.9.2.dist-info/WHEEL +0 -4
- package/bin/_internal/fastmcp-2.9.2.dist-info/entry_points.txt +0 -2
- package/bin/_internal/fastmcp-2.9.2.dist-info/licenses/LICENSE +0 -201
- package/bin/_internal/frozenlist/_frozenlist.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/integrations/cli_wrappers/IMPORTANT_USE_CASES.md +0 -33
- package/bin/_internal/integrations/github/claude-code-action/CLAUDE.md +0 -136
- package/bin/_internal/integrations/github/claude-code-action/CODE_OF_CONDUCT.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/CONTRIBUTING.md +0 -116
- package/bin/_internal/integrations/github/claude-code-action/LICENSE +0 -21
- package/bin/_internal/integrations/github/claude-code-action/README.md +0 -53
- package/bin/_internal/integrations/github/claude-code-action/ROADMAP.md +0 -20
- package/bin/_internal/integrations/github/claude-code-action/SECURITY.md +0 -15
- package/bin/_internal/integrations/github/claude-code-action/action.yml +0 -294
- package/bin/_internal/integrations/github/claude-code-action/base-action/CLAUDE.md +0 -60
- package/bin/_internal/integrations/github/claude-code-action/base-action/CODE_OF_CONDUCT.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/base-action/CONTRIBUTING.md +0 -136
- package/bin/_internal/integrations/github/claude-code-action/base-action/LICENSE +0 -21
- package/bin/_internal/integrations/github/claude-code-action/base-action/MIRROR_DISCLAIMER.md +0 -11
- package/bin/_internal/integrations/github/claude-code-action/base-action/README.md +0 -521
- package/bin/_internal/integrations/github/claude-code-action/base-action/action.yml +0 -149
- package/bin/_internal/integrations/github/claude-code-action/base-action/bun.lock +0 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/examples/issue-triage.yml +0 -108
- package/bin/_internal/integrations/github/claude-code-action/base-action/package.json +0 -23
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/install-hooks.sh +0 -13
- package/bin/_internal/integrations/github/claude-code-action/base-action/scripts/pre-push +0 -46
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/index.ts +0 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/prepare-prompt.ts +0 -82
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-claude.ts +0 -257
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/run-vicoa.ts +0 -301
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/setup-claude-code-settings.ts +0 -68
- package/bin/_internal/integrations/github/claude-code-action/base-action/src/validate-env.ts +0 -54
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-local.sh +0 -12
- package/bin/_internal/integrations/github/claude-code-action/base-action/test-mcp-local.sh +0 -18
- package/bin/_internal/integrations/github/claude-code-action/base-action/tsconfig.json +0 -30
- package/bin/_internal/integrations/github/claude-code-action/bun.lock +0 -384
- package/bin/_internal/integrations/github/claude-code-action/docs/capabilities-and-limitations.md +0 -33
- package/bin/_internal/integrations/github/claude-code-action/docs/cloud-providers.md +0 -99
- package/bin/_internal/integrations/github/claude-code-action/docs/configuration.md +0 -345
- package/bin/_internal/integrations/github/claude-code-action/docs/custom-automations.md +0 -113
- package/bin/_internal/integrations/github/claude-code-action/docs/experimental.md +0 -128
- package/bin/_internal/integrations/github/claude-code-action/docs/faq.md +0 -205
- package/bin/_internal/integrations/github/claude-code-action/docs/migration-guide.md +0 -261
- package/bin/_internal/integrations/github/claude-code-action/docs/security.md +0 -38
- package/bin/_internal/integrations/github/claude-code-action/docs/setup.md +0 -146
- package/bin/_internal/integrations/github/claude-code-action/docs/usage.md +0 -213
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/auto-fix-ci.yml +0 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci/commands/fix-ci.md +0 -127
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/auto-fix-ci-signed.yml +0 -97
- package/bin/_internal/integrations/github/claude-code-action/examples/auto-fix-ci-signed/commands/fix-ci-signed.md +0 -148
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-deduplication.yml +0 -63
- package/bin/_internal/integrations/github/claude-code-action/examples/issue-triage.yml +0 -75
- package/bin/_internal/integrations/github/claude-code-action/examples/vicoa.yml +0 -75
- package/bin/_internal/integrations/github/claude-code-action/package.json +0 -31
- package/bin/_internal/integrations/github/claude-code-action/scripts/install-hooks.sh +0 -13
- package/bin/_internal/integrations/github/claude-code-action/scripts/pre-commit +0 -46
- package/bin/_internal/integrations/github/claude-code-action/scripts/setup-network-restrictions.sh +0 -123
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/index.ts +0 -799
- package/bin/_internal/integrations/github/claude-code-action/src/create-prompt/types.ts +0 -102
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/collect-inputs.ts +0 -58
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/format-turns.ts +0 -465
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/prepare.ts +0 -98
- package/bin/_internal/integrations/github/claude-code-action/src/entrypoints/update-comment-link.ts +0 -245
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/client.ts +0 -23
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/config.ts +0 -4
- package/bin/_internal/integrations/github/claude-code-action/src/github/api/queries/github.ts +0 -117
- package/bin/_internal/integrations/github/claude-code-action/src/github/context.ts +0 -277
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/fetcher.ts +0 -233
- package/bin/_internal/integrations/github/claude-code-action/src/github/data/formatter.ts +0 -144
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch-cleanup.ts +0 -132
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/branch.ts +0 -163
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comment-logic.ts +0 -203
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/common.ts +0 -33
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/create-initial.ts +0 -111
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-claude-comment.ts +0 -70
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/comments/update-with-branch.ts +0 -57
- package/bin/_internal/integrations/github/claude-code-action/src/github/operations/git-config.ts +0 -62
- package/bin/_internal/integrations/github/claude-code-action/src/github/token.ts +0 -108
- package/bin/_internal/integrations/github/claude-code-action/src/github/types.ts +0 -98
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/image-downloader.ts +0 -246
- package/bin/_internal/integrations/github/claude-code-action/src/github/utils/sanitizer.ts +0 -100
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/actor.ts +0 -64
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/permissions.ts +0 -47
- package/bin/_internal/integrations/github/claude-code-action/src/github/validation/trigger.ts +0 -148
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-actions-server.ts +0 -279
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-comment-server.ts +0 -101
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-file-ops-server.ts +0 -677
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/github-inline-comment-server.ts +0 -184
- package/bin/_internal/integrations/github/claude-code-action/src/mcp/install-mcp-server.ts +0 -201
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/index.ts +0 -152
- package/bin/_internal/integrations/github/claude-code-action/src/modes/agent/parse-tools.ts +0 -22
- package/bin/_internal/integrations/github/claude-code-action/src/modes/detector.ts +0 -66
- package/bin/_internal/integrations/github/claude-code-action/src/modes/registry.ts +0 -54
- package/bin/_internal/integrations/github/claude-code-action/src/modes/tag/index.ts +0 -187
- package/bin/_internal/integrations/github/claude-code-action/src/modes/types.ts +0 -100
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/index.ts +0 -20
- package/bin/_internal/integrations/github/claude-code-action/src/prepare/types.ts +0 -20
- package/bin/_internal/integrations/github/claude-code-action/src/utils/retry.ts +0 -40
- package/bin/_internal/integrations/github/claude-code-action/tsconfig.json +0 -30
- package/bin/_internal/integrations/n8n/LICENSE +0 -21
- package/bin/_internal/integrations/n8n/README.md +0 -298
- package/bin/_internal/integrations/n8n/package-lock.json +0 -2989
- package/bin/_internal/integrations/n8n/package.json +0 -68
- package/bin/_internal/integrations/n8n/src/credentials/OmnaraApi.credentials.ts +0 -52
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.json +0 -35
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/Omnara.node.ts +0 -304
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/index.ts +0 -37
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/send.operation.ts +0 -151
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/message/sendAndWait.operation.ts +0 -252
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/end.operation.ts +0 -56
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/actions/session/index.ts +0 -29
- package/bin/_internal/integrations/n8n/src/nodes/Omnara/vicoa.png +0 -0
- package/bin/_internal/integrations/n8n/src/utils/GenericFunctions.ts +0 -93
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/configureWaitTillDate.ts +0 -42
- package/bin/_internal/integrations/n8n/src/utils/sendAndWait/descriptions.ts +0 -20
- package/bin/_internal/integrations/n8n/src/utils/sendAndWaitWebhook.ts +0 -72
- package/bin/_internal/integrations/n8n/tsconfig.json +0 -20
- package/bin/_internal/jiter/jiter.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/libcrypto-3.dll +0 -0
- package/bin/_internal/libffi-8.dll +0 -0
- package/bin/_internal/libssl-3.dll +0 -0
- package/bin/_internal/mcp-1.9.4.dist-info/INSTALLER +0 -1
- package/bin/_internal/mcp-1.9.4.dist-info/METADATA +0 -939
- package/bin/_internal/mcp-1.9.4.dist-info/RECORD +0 -154
- package/bin/_internal/mcp-1.9.4.dist-info/WHEEL +0 -4
- package/bin/_internal/mcp-1.9.4.dist-info/entry_points.txt +0 -2
- package/bin/_internal/mcp-1.9.4.dist-info/licenses/LICENSE +0 -21
- package/bin/_internal/multidict/_multidict.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/propcache/_helpers_c.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/pydantic_core/_pydantic_core.cp312-win_amd64.pyd +0 -0
- package/bin/_internal/pyexpat.pyd +0 -0
- package/bin/_internal/python3.dll +0 -0
- package/bin/_internal/python312.dll +0 -0
- package/bin/_internal/select.pyd +0 -0
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/INSTALLER +0 -1
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/METADATA +0 -133
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/RECORD +0 -21
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/REQUESTED +0 -0
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/WHEEL +0 -5
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/licenses/LICENSE +0 -73
- package/bin/_internal/setuptools/_vendor/importlib_metadata-8.7.1.dist-info/top_level.txt +0 -1
- package/bin/_internal/setuptools/_vendor/jaraco/text/Lorem ipsum.txt +0 -2
- package/bin/_internal/ucrtbase.dll +0 -0
- package/bin/_internal/unicodedata.pyd +0 -0
- package/bin/_internal/vicoa/_bin/README.md +0 -28
- package/bin/_internal/vicoa-1.3.21.dist-info/INSTALLER +0 -1
- package/bin/_internal/vicoa-1.3.21.dist-info/METADATA +0 -313
- package/bin/_internal/vicoa-1.3.21.dist-info/RECORD +0 -11
- package/bin/_internal/vicoa-1.3.21.dist-info/REQUESTED +0 -0
- package/bin/_internal/vicoa-1.3.21.dist-info/WHEEL +0 -5
- package/bin/_internal/vicoa-1.3.21.dist-info/direct_url.json +0 -1
- package/bin/_internal/vicoa-1.3.21.dist-info/entry_points.txt +0 -2
- package/bin/_internal/vicoa-1.3.21.dist-info/licenses/LICENSE +0 -201
- package/bin/_internal/vicoa-1.3.21.dist-info/top_level.txt +0 -3
- package/bin/_internal/yarl/_quoting_c.cp312-win_amd64.pyd +0 -0
- package/bin/vicoa.exe +0 -0
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "n8n-nodes-vicoa",
|
|
3
|
-
"version": "0.1.6",
|
|
4
|
-
"description": "n8n node for Vicoa - communicate with AI agents",
|
|
5
|
-
"keywords": [
|
|
6
|
-
"n8n",
|
|
7
|
-
"n8n-node",
|
|
8
|
-
"n8n-community-node-package",
|
|
9
|
-
"vicoa",
|
|
10
|
-
"ai",
|
|
11
|
-
"agents",
|
|
12
|
-
"workflow"
|
|
13
|
-
],
|
|
14
|
-
"license": "MIT",
|
|
15
|
-
"homepage": "https://github.com/vicoa-ai/vicoa/tree/main/src/integrations/n8n",
|
|
16
|
-
"author": {
|
|
17
|
-
"name": "Vicoa",
|
|
18
|
-
"email": "hi@vicoa.ai"
|
|
19
|
-
},
|
|
20
|
-
"repository": {
|
|
21
|
-
"type": "git",
|
|
22
|
-
"url": "git+https://github.com/vicoa-ai/vicoa.git",
|
|
23
|
-
"directory": "src/integrations/n8n"
|
|
24
|
-
},
|
|
25
|
-
"main": "dist/index.js",
|
|
26
|
-
"scripts": {
|
|
27
|
-
"build": "tsc && npm run copy-assets",
|
|
28
|
-
"copy-assets": "cp src/nodes/Vicoa/vicoa.png dist/nodes/Vicoa/ && cp src/nodes/Vicoa/Vicoa.node.json dist/nodes/Vicoa/",
|
|
29
|
-
"dev": "tsc --watch",
|
|
30
|
-
"format": "prettier --write .",
|
|
31
|
-
"lint": "eslint . --ext .ts",
|
|
32
|
-
"lint:fix": "eslint . --ext .ts --fix",
|
|
33
|
-
"prepublishOnly": "npm run build"
|
|
34
|
-
},
|
|
35
|
-
"files": [
|
|
36
|
-
"dist",
|
|
37
|
-
"LICENSE"
|
|
38
|
-
],
|
|
39
|
-
"n8n": {
|
|
40
|
-
"n8nNodesApiVersion": 1,
|
|
41
|
-
"credentials": [
|
|
42
|
-
"dist/credentials/VicoaApi.credentials.js"
|
|
43
|
-
],
|
|
44
|
-
"nodes": [
|
|
45
|
-
"dist/nodes/Vicoa/Vicoa.node.js"
|
|
46
|
-
]
|
|
47
|
-
},
|
|
48
|
-
"devDependencies": {
|
|
49
|
-
"@types/node": "^20.10.0",
|
|
50
|
-
"@types/uuid": "^9.0.0",
|
|
51
|
-
"@typescript-eslint/eslint-plugin": "^6.13.0",
|
|
52
|
-
"@typescript-eslint/parser": "^6.13.0",
|
|
53
|
-
"eslint": "^8.54.0",
|
|
54
|
-
"eslint-config-prettier": "^9.0.0",
|
|
55
|
-
"eslint-plugin-prettier": "^5.0.1",
|
|
56
|
-
"prettier": "^3.1.0",
|
|
57
|
-
"typescript": "^5.3.2"
|
|
58
|
-
},
|
|
59
|
-
"dependencies": {
|
|
60
|
-
"uuid": "^9.0.1"
|
|
61
|
-
},
|
|
62
|
-
"peerDependencies": {
|
|
63
|
-
"n8n-workflow": "*"
|
|
64
|
-
},
|
|
65
|
-
"engines": {
|
|
66
|
-
"node": ">=20.15.0"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IAuthenticateGeneric,
|
|
3
|
-
ICredentialTestRequest,
|
|
4
|
-
ICredentialType,
|
|
5
|
-
INodeProperties,
|
|
6
|
-
} from 'n8n-workflow';
|
|
7
|
-
|
|
8
|
-
export class VicoaApi implements ICredentialType {
|
|
9
|
-
name = 'vicoaApi';
|
|
10
|
-
displayName = 'Vicoa API';
|
|
11
|
-
documentationUrl = 'https://github.com/vicoa-ai/vicoa';
|
|
12
|
-
properties: INodeProperties[] = [
|
|
13
|
-
{
|
|
14
|
-
displayName: 'API Key',
|
|
15
|
-
name: 'apiKey',
|
|
16
|
-
type: 'string',
|
|
17
|
-
typeOptions: {
|
|
18
|
-
password: true,
|
|
19
|
-
},
|
|
20
|
-
default: '',
|
|
21
|
-
required: true,
|
|
22
|
-
description: 'Your Vicoa API key. Get it from your Vicoa dashboard.',
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
displayName: 'API URL',
|
|
26
|
-
name: 'serverUrl',
|
|
27
|
-
type: 'string',
|
|
28
|
-
default: 'https://api.vicoa.ai:8443',
|
|
29
|
-
required: true,
|
|
30
|
-
description:
|
|
31
|
-
'The Vicoa API URL (without /api/v1). Use the default unless you have a custom deployment.',
|
|
32
|
-
placeholder: 'https://api.vicoa.ai:8443',
|
|
33
|
-
},
|
|
34
|
-
];
|
|
35
|
-
|
|
36
|
-
authenticate: IAuthenticateGeneric = {
|
|
37
|
-
type: 'generic',
|
|
38
|
-
properties: {
|
|
39
|
-
headers: {
|
|
40
|
-
Authorization: '=Bearer {{$credentials.apiKey}}',
|
|
41
|
-
},
|
|
42
|
-
},
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
test: ICredentialTestRequest = {
|
|
46
|
-
request: {
|
|
47
|
-
baseURL: '={{$credentials.serverUrl}}',
|
|
48
|
-
url: '/api/v1/auth/verify',
|
|
49
|
-
method: 'GET',
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"node": "n8n-nodes-vicoa.vicoa",
|
|
3
|
-
"nodeVersion": "1.0",
|
|
4
|
-
"codexVersion": "1.0",
|
|
5
|
-
"categories": [
|
|
6
|
-
"Communication",
|
|
7
|
-
"Development"
|
|
8
|
-
],
|
|
9
|
-
"resources": {
|
|
10
|
-
"credentialDocumentation": [
|
|
11
|
-
{
|
|
12
|
-
"url": "https://github.com/vicoa-ai/vicoa"
|
|
13
|
-
}
|
|
14
|
-
],
|
|
15
|
-
"primaryDocumentation": [
|
|
16
|
-
{
|
|
17
|
-
"url": "https://github.com/vicoa-ai/vicoa"
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
},
|
|
21
|
-
"subcategories": {
|
|
22
|
-
"Communication": [
|
|
23
|
-
"Chat"
|
|
24
|
-
],
|
|
25
|
-
"Development": [
|
|
26
|
-
"AI"
|
|
27
|
-
]
|
|
28
|
-
},
|
|
29
|
-
"alias": [
|
|
30
|
-
"AI",
|
|
31
|
-
"Agent",
|
|
32
|
-
"Claude",
|
|
33
|
-
"Assistant"
|
|
34
|
-
]
|
|
35
|
-
}
|
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IExecuteFunctions,
|
|
3
|
-
INodeExecutionData,
|
|
4
|
-
INodeType,
|
|
5
|
-
INodeTypeDescription,
|
|
6
|
-
NodeConnectionTypes,
|
|
7
|
-
NodeOperationError,
|
|
8
|
-
SEND_AND_WAIT_OPERATION
|
|
9
|
-
} from 'n8n-workflow';
|
|
10
|
-
|
|
11
|
-
import * as message from './actions/message';
|
|
12
|
-
import * as session from './actions/session';
|
|
13
|
-
import { vicoaSendAndWaitWebhook } from '../../utils/sendAndWaitWebhook';
|
|
14
|
-
import { sendAndWaitWebhooksDescription } from '../../utils/sendAndWait/descriptions';
|
|
15
|
-
import { configureWaitTillDate } from '../../utils/sendAndWait/configureWaitTillDate';
|
|
16
|
-
import { vicoaApiRequest, generateAgentInstanceId, getAgentType } from '../../utils/GenericFunctions';
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export class Vicoa implements INodeType {
|
|
20
|
-
webhook = vicoaSendAndWaitWebhook;
|
|
21
|
-
|
|
22
|
-
description: INodeTypeDescription = {
|
|
23
|
-
displayName: 'Vicoa',
|
|
24
|
-
name: 'vicoa',
|
|
25
|
-
icon: 'file:vicoa.png',
|
|
26
|
-
group: ['transform'],
|
|
27
|
-
version: 1,
|
|
28
|
-
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
|
29
|
-
description:
|
|
30
|
-
'Send messages to users via Vicoa - a web and mobile platform for human-AI communication',
|
|
31
|
-
defaults: {
|
|
32
|
-
name: 'Vicoa',
|
|
33
|
-
},
|
|
34
|
-
inputs: [NodeConnectionTypes.Main],
|
|
35
|
-
outputs: [NodeConnectionTypes.Main],
|
|
36
|
-
webhooks: sendAndWaitWebhooksDescription,
|
|
37
|
-
credentials: [
|
|
38
|
-
{
|
|
39
|
-
name: 'vicoaApi',
|
|
40
|
-
required: true,
|
|
41
|
-
},
|
|
42
|
-
],
|
|
43
|
-
properties: [
|
|
44
|
-
{
|
|
45
|
-
displayName: 'Resource',
|
|
46
|
-
name: 'resource',
|
|
47
|
-
type: 'options',
|
|
48
|
-
noDataExpression: true,
|
|
49
|
-
options: [
|
|
50
|
-
{
|
|
51
|
-
name: 'Message',
|
|
52
|
-
value: 'message',
|
|
53
|
-
description: 'Send messages to Vicoa agents',
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
name: 'Session',
|
|
57
|
-
value: 'session',
|
|
58
|
-
description: 'Manage agent sessions',
|
|
59
|
-
},
|
|
60
|
-
],
|
|
61
|
-
default: 'message',
|
|
62
|
-
},
|
|
63
|
-
...message.descriptions,
|
|
64
|
-
...session.descriptions,
|
|
65
|
-
],
|
|
66
|
-
usableAsTool: true,
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
|
|
70
|
-
const items = this.getInputData();
|
|
71
|
-
const returnData: INodeExecutionData[] = [];
|
|
72
|
-
const resource = this.getNodeParameter('resource', 0) as string;
|
|
73
|
-
const operation = this.getNodeParameter('operation', 0) as string;
|
|
74
|
-
for (let i = 0; i < items.length; i++) {
|
|
75
|
-
try {
|
|
76
|
-
let responseData: INodeExecutionData[] = [];
|
|
77
|
-
if (resource === 'message') {
|
|
78
|
-
if (operation === 'send') {
|
|
79
|
-
responseData = await message.send.execute.call(this, i);
|
|
80
|
-
} else if (operation === SEND_AND_WAIT_OPERATION || operation === 'sendAndWait') {
|
|
81
|
-
// FOLLOWING SLACK PATTERN EXACTLY
|
|
82
|
-
const agentType = getAgentType.call(this, 0);
|
|
83
|
-
const agentInstanceId = generateAgentInstanceId.call(this, 0, agentType);
|
|
84
|
-
const messageContent = this.getNodeParameter('message', 0) as string;
|
|
85
|
-
const options = this.getNodeParameter('options', 0, {}) as any;
|
|
86
|
-
|
|
87
|
-
// Check if sync mode is enabled (for AI Agent compatibility)
|
|
88
|
-
const syncMode = options.syncMode === true;
|
|
89
|
-
|
|
90
|
-
if (syncMode) {
|
|
91
|
-
// Sync mode: Poll for responses instead of using putExecutionToWait
|
|
92
|
-
// This is necessary for AI Agents which don't support async/await properly
|
|
93
|
-
const syncTimeout = options.syncTimeout || 7200; // Default 2 hours
|
|
94
|
-
const pollInterval = options.pollInterval || 5; // Default 5 seconds
|
|
95
|
-
|
|
96
|
-
// Send the message first
|
|
97
|
-
const body: any = {
|
|
98
|
-
agent_instance_id: agentInstanceId,
|
|
99
|
-
agent_type: agentType,
|
|
100
|
-
content: messageContent,
|
|
101
|
-
requires_user_input: true,
|
|
102
|
-
// Don't send webhook URL in sync mode
|
|
103
|
-
message_metadata: {
|
|
104
|
-
sync_mode: true,
|
|
105
|
-
node_id: this.getNode().id,
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
if (options.sendEmail !== undefined) {
|
|
110
|
-
body.send_email = options.sendEmail;
|
|
111
|
-
}
|
|
112
|
-
if (options.sendSms !== undefined) {
|
|
113
|
-
body.send_sms = options.sendSms;
|
|
114
|
-
}
|
|
115
|
-
if (options.sendPush !== undefined) {
|
|
116
|
-
body.send_push = options.sendPush;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
const sendResponse = await vicoaApiRequest.call(
|
|
120
|
-
this,
|
|
121
|
-
'POST',
|
|
122
|
-
'/messages/agent',
|
|
123
|
-
body,
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
const messageId = sendResponse.message_id;
|
|
127
|
-
|
|
128
|
-
// Now poll for responses
|
|
129
|
-
const startTime = Date.now();
|
|
130
|
-
const timeoutMs = syncTimeout * 1000;
|
|
131
|
-
const lastReadMessageId = messageId;
|
|
132
|
-
|
|
133
|
-
while (Date.now() - startTime < timeoutMs) {
|
|
134
|
-
// Wait for poll interval using Date.now()
|
|
135
|
-
// Community nodes must avoid restricted globals
|
|
136
|
-
const pollStart = Date.now();
|
|
137
|
-
const pollMs = pollInterval * 1000;
|
|
138
|
-
while (Date.now() - pollStart < pollMs) {
|
|
139
|
-
// Small delay to avoid blocking
|
|
140
|
-
await new Promise((resolve) => resolve(undefined));
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Check for pending messages
|
|
144
|
-
try {
|
|
145
|
-
const pendingResponse = await vicoaApiRequest.call(
|
|
146
|
-
this,
|
|
147
|
-
'GET',
|
|
148
|
-
'/messages/pending',
|
|
149
|
-
{},
|
|
150
|
-
{
|
|
151
|
-
agent_instance_id: agentInstanceId,
|
|
152
|
-
last_read_message_id: lastReadMessageId,
|
|
153
|
-
},
|
|
154
|
-
);
|
|
155
|
-
|
|
156
|
-
// Check if we got any user messages
|
|
157
|
-
if (pendingResponse.messages && pendingResponse.messages.length > 0) {
|
|
158
|
-
// Return the last user message as the result
|
|
159
|
-
const lastMessage =
|
|
160
|
-
pendingResponse.messages[pendingResponse.messages.length - 1];
|
|
161
|
-
|
|
162
|
-
// Return the response in a format compatible with the workflow
|
|
163
|
-
return [
|
|
164
|
-
[
|
|
165
|
-
{
|
|
166
|
-
json: {
|
|
167
|
-
success: true,
|
|
168
|
-
agent_instance_id: agentInstanceId,
|
|
169
|
-
user_response: lastMessage.content,
|
|
170
|
-
message_id: lastMessage.id,
|
|
171
|
-
response_time: lastMessage.created_at,
|
|
172
|
-
all_responses: pendingResponse.messages.map((m: any) => ({
|
|
173
|
-
content: m.content,
|
|
174
|
-
id: m.id,
|
|
175
|
-
created_at: m.created_at,
|
|
176
|
-
})),
|
|
177
|
-
},
|
|
178
|
-
pairedItem: i,
|
|
179
|
-
},
|
|
180
|
-
],
|
|
181
|
-
];
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// If status is 'stale', continue polling
|
|
185
|
-
if (pendingResponse.status === 'stale') {
|
|
186
|
-
// We might need to re-fetch to get the current state
|
|
187
|
-
// For now, continue polling
|
|
188
|
-
}
|
|
189
|
-
} catch (pollError) {
|
|
190
|
-
// Continue polling on error
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Timeout reached without response
|
|
195
|
-
return [
|
|
196
|
-
[
|
|
197
|
-
{
|
|
198
|
-
json: {
|
|
199
|
-
success: false,
|
|
200
|
-
agent_instance_id: agentInstanceId,
|
|
201
|
-
error: 'Timeout waiting for user response',
|
|
202
|
-
timeout_seconds: syncTimeout,
|
|
203
|
-
},
|
|
204
|
-
pairedItem: i,
|
|
205
|
-
},
|
|
206
|
-
],
|
|
207
|
-
];
|
|
208
|
-
} else {
|
|
209
|
-
// Original async mode with putExecutionToWait
|
|
210
|
-
// Get the webhook URL from n8n's execution context
|
|
211
|
-
// This automatically provides the correct URL for any n8n instance
|
|
212
|
-
const resumeUrl = this.evaluateExpression('{{ $execution?.resumeUrl }}', 0) as string;
|
|
213
|
-
const nodeId = this.evaluateExpression('{{ $nodeId }}', 0) as string;
|
|
214
|
-
const executionId = this.getExecutionId();
|
|
215
|
-
|
|
216
|
-
// Construct the full webhook URL with node ID appended
|
|
217
|
-
const webhookUrl = `${resumeUrl}/${nodeId}`;
|
|
218
|
-
|
|
219
|
-
const body: any = {
|
|
220
|
-
agent_instance_id: agentInstanceId,
|
|
221
|
-
agent_type: agentType,
|
|
222
|
-
content: messageContent,
|
|
223
|
-
requires_user_input: true,
|
|
224
|
-
// Send webhook URL in metadata so Vicoa knows where to send the response
|
|
225
|
-
message_metadata: {
|
|
226
|
-
webhook_url: webhookUrl, // Full URL with execution ID and node ID
|
|
227
|
-
execution_id: executionId,
|
|
228
|
-
node_id: nodeId,
|
|
229
|
-
webhook_type: 'n8n_send_and_wait',
|
|
230
|
-
},
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
if (options.sendEmail !== undefined) {
|
|
234
|
-
body.send_email = options.sendEmail;
|
|
235
|
-
}
|
|
236
|
-
if (options.sendSms !== undefined) {
|
|
237
|
-
body.send_sms = options.sendSms;
|
|
238
|
-
}
|
|
239
|
-
if (options.sendPush !== undefined) {
|
|
240
|
-
body.send_push = options.sendPush;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
// Send message to Vicoa (like Slack sends to chat.postMessage)
|
|
244
|
-
await vicoaApiRequest.call(this, 'POST', '/messages/agent', body);
|
|
245
|
-
|
|
246
|
-
// Configure wait time
|
|
247
|
-
const waitTill = configureWaitTillDate(this, 0);
|
|
248
|
-
|
|
249
|
-
// Put execution to wait
|
|
250
|
-
if (waitTill === 'WAIT_INDEFINITELY') {
|
|
251
|
-
await this.putExecutionToWait(new Date(Date.now() + 365 * 24 * 60 * 60 * 1000));
|
|
252
|
-
} else {
|
|
253
|
-
await this.putExecutionToWait(waitTill as Date);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// Return input data
|
|
257
|
-
return [this.getInputData()];
|
|
258
|
-
}
|
|
259
|
-
} else {
|
|
260
|
-
throw new NodeOperationError(
|
|
261
|
-
this.getNode(),
|
|
262
|
-
`The operation "${operation}" is not supported for resource "${resource}"`,
|
|
263
|
-
{ itemIndex: i },
|
|
264
|
-
);
|
|
265
|
-
}
|
|
266
|
-
} else if (resource === 'session') {
|
|
267
|
-
if (operation === 'end') {
|
|
268
|
-
responseData = await session.end.execute.call(this, i);
|
|
269
|
-
} else {
|
|
270
|
-
throw new NodeOperationError(
|
|
271
|
-
this.getNode(),
|
|
272
|
-
`The operation "${operation}" is not supported for resource "${resource}"`,
|
|
273
|
-
{ itemIndex: i },
|
|
274
|
-
);
|
|
275
|
-
}
|
|
276
|
-
} else {
|
|
277
|
-
throw new NodeOperationError(
|
|
278
|
-
this.getNode(),
|
|
279
|
-
`The resource "${resource}" is not supported`,
|
|
280
|
-
{ itemIndex: i },
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
returnData.push(...responseData);
|
|
285
|
-
} catch (error) {
|
|
286
|
-
if (this.continueOnFail()) {
|
|
287
|
-
returnData.push({
|
|
288
|
-
json: {
|
|
289
|
-
error: error instanceof Error ? error.message : String(error),
|
|
290
|
-
resource,
|
|
291
|
-
operation,
|
|
292
|
-
itemIndex: i,
|
|
293
|
-
},
|
|
294
|
-
pairedItem: i,
|
|
295
|
-
});
|
|
296
|
-
continue;
|
|
297
|
-
}
|
|
298
|
-
throw error;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
return [returnData];
|
|
303
|
-
}
|
|
304
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as send from './send.operation';
|
|
2
|
-
import * as sendAndWait from './sendAndWait.operation';
|
|
3
|
-
|
|
4
|
-
import { INodeProperties } from 'n8n-workflow';
|
|
5
|
-
|
|
6
|
-
export { send, sendAndWait };
|
|
7
|
-
|
|
8
|
-
export const descriptions: INodeProperties[] = [
|
|
9
|
-
{
|
|
10
|
-
displayName: 'Operation',
|
|
11
|
-
name: 'operation',
|
|
12
|
-
type: 'options',
|
|
13
|
-
noDataExpression: true,
|
|
14
|
-
displayOptions: {
|
|
15
|
-
show: {
|
|
16
|
-
resource: ['message'],
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
options: [
|
|
20
|
-
{
|
|
21
|
-
name: 'Send',
|
|
22
|
-
value: 'send',
|
|
23
|
-
description: 'Send a non-blocking message to the user (for status updates, progress reports, or sharing your thought process). Use this when you want to inform the user but do not need their response to continue',
|
|
24
|
-
action: 'Send message',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: 'Send and Wait',
|
|
28
|
-
value: 'sendAndWait',
|
|
29
|
-
description: 'Send a message and wait for the user\'s response (for questions, approvals, or conversations). Use this when you need the user\'s input to proceed with your task',
|
|
30
|
-
action: 'Send message and wait for response',
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
default: 'send',
|
|
34
|
-
},
|
|
35
|
-
...send.sendMessageDescription,
|
|
36
|
-
...sendAndWait.sendAndWaitDescription,
|
|
37
|
-
];
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
IExecuteFunctions,
|
|
3
|
-
INodeExecutionData,
|
|
4
|
-
INodeProperties,
|
|
5
|
-
NodeOperationError,
|
|
6
|
-
} from 'n8n-workflow';
|
|
7
|
-
|
|
8
|
-
import { vicoaApiRequest, formatMessageResponse, generateAgentInstanceId, getAgentType } from '../../../../utils/GenericFunctions';
|
|
9
|
-
|
|
10
|
-
export const sendMessageDescription: INodeProperties[] = [
|
|
11
|
-
{
|
|
12
|
-
displayName: 'Agent Instance ID',
|
|
13
|
-
name: 'agentInstanceId',
|
|
14
|
-
type: 'string',
|
|
15
|
-
default: '',
|
|
16
|
-
required: false,
|
|
17
|
-
displayOptions: {
|
|
18
|
-
show: {
|
|
19
|
-
resource: ['message'],
|
|
20
|
-
operation: ['send'],
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
placeholder: 'e.g. 550e8400-e29b-41d4-a716-446655440000',
|
|
24
|
-
description:
|
|
25
|
-
'A unique UUID for this workflow run. Must be the same across all Vicoa nodes in this workflow. Use webhook data or generate with {{ $uuid() }}. If left empty, a default value will be generated.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
displayName: 'Agent Type',
|
|
29
|
-
name: 'agentType',
|
|
30
|
-
type: 'string',
|
|
31
|
-
default: '',
|
|
32
|
-
required: false,
|
|
33
|
-
displayOptions: {
|
|
34
|
-
show: {
|
|
35
|
-
resource: ['message'],
|
|
36
|
-
operation: ['send'],
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
placeholder: 'e.g. Customer Support',
|
|
40
|
-
description:
|
|
41
|
-
'The name of your agent on Vicoa dashboard. Must be the same across all Vicoa nodes. If left empty, the workflow name will be used as the default.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
displayName: 'Message',
|
|
45
|
-
name: 'message',
|
|
46
|
-
type: 'string',
|
|
47
|
-
default: '',
|
|
48
|
-
required: true,
|
|
49
|
-
typeOptions: {
|
|
50
|
-
rows: 4,
|
|
51
|
-
},
|
|
52
|
-
displayOptions: {
|
|
53
|
-
show: {
|
|
54
|
-
resource: ['message'],
|
|
55
|
-
operation: ['send'],
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
placeholder: 'e.g. Build completed successfully',
|
|
59
|
-
description:
|
|
60
|
-
'Status update or informational message to send to the user. This will appear in their Vicoa web/mobile app. The workflow will continue immediately without waiting for a response.',
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
displayName: 'Additional Options',
|
|
64
|
-
name: 'additionalOptions',
|
|
65
|
-
type: 'collection',
|
|
66
|
-
placeholder: 'Add Option',
|
|
67
|
-
default: {},
|
|
68
|
-
displayOptions: {
|
|
69
|
-
show: {
|
|
70
|
-
resource: ['message'],
|
|
71
|
-
operation: ['send'],
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
options: [
|
|
75
|
-
{
|
|
76
|
-
displayName: 'Send Email Notification',
|
|
77
|
-
name: 'sendEmail',
|
|
78
|
-
type: 'boolean',
|
|
79
|
-
default: false,
|
|
80
|
-
description: 'Whether to send an email notification',
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
displayName: 'Send SMS Notification',
|
|
84
|
-
name: 'sendSms',
|
|
85
|
-
type: 'boolean',
|
|
86
|
-
default: false,
|
|
87
|
-
description: 'Whether to send an SMS notification',
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
displayName: 'Send Push Notification',
|
|
91
|
-
name: 'sendPush',
|
|
92
|
-
type: 'boolean',
|
|
93
|
-
default: false,
|
|
94
|
-
description: 'Whether to send a push notification',
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
},
|
|
98
|
-
];
|
|
99
|
-
|
|
100
|
-
export async function execute(
|
|
101
|
-
this: IExecuteFunctions,
|
|
102
|
-
index: number,
|
|
103
|
-
): Promise<INodeExecutionData[]> {
|
|
104
|
-
|
|
105
|
-
const agentType = getAgentType.call(this, 0);
|
|
106
|
-
const agentInstanceId = generateAgentInstanceId.call(this, 0, agentType);
|
|
107
|
-
|
|
108
|
-
const message = this.getNodeParameter('message', index) as string;
|
|
109
|
-
const additionalOptions = this.getNodeParameter('additionalOptions', index, {}) as any;
|
|
110
|
-
|
|
111
|
-
if (!message) {
|
|
112
|
-
throw new NodeOperationError(this.getNode(), 'Message is required', { itemIndex: index });
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const body: any = {
|
|
116
|
-
agent_instance_id: agentInstanceId,
|
|
117
|
-
agent_type: agentType,
|
|
118
|
-
content: message,
|
|
119
|
-
requires_user_input: false,
|
|
120
|
-
};
|
|
121
|
-
if (additionalOptions.sendEmail !== undefined) {
|
|
122
|
-
body.send_email = additionalOptions.sendEmail;
|
|
123
|
-
}
|
|
124
|
-
if (additionalOptions.sendSms !== undefined) {
|
|
125
|
-
body.send_sms = additionalOptions.sendSms;
|
|
126
|
-
}
|
|
127
|
-
if (additionalOptions.sendPush !== undefined) {
|
|
128
|
-
body.send_push = additionalOptions.sendPush;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
try {
|
|
132
|
-
const response = await vicoaApiRequest.call(this, 'POST', '/messages/agent', body);
|
|
133
|
-
|
|
134
|
-
const result = {
|
|
135
|
-
success: response.success,
|
|
136
|
-
agentInstanceId: response.agent_instance_id,
|
|
137
|
-
messageId: response.message_id,
|
|
138
|
-
queuedUserMessages: response.queued_user_messages
|
|
139
|
-
? response.queued_user_messages.map(formatMessageResponse)
|
|
140
|
-
: [],
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
return [{ json: result }];
|
|
144
|
-
} catch (error) {
|
|
145
|
-
throw new NodeOperationError(
|
|
146
|
-
this.getNode(),
|
|
147
|
-
`Failed to send message: ${error instanceof Error ? error.message : String(error)}`,
|
|
148
|
-
{ itemIndex: index },
|
|
149
|
-
);
|
|
150
|
-
}
|
|
151
|
-
}
|