@taskmagic/apps-strale 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ # apps-strale
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build apps-strale` to build the library.
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@taskmagic/apps-strale",
3
+ "version": "0.0.1",
4
+ "dependencies": {
5
+ "@anthropic-ai/sdk": "0.33.1",
6
+ "@sinclair/typebox": "0.34.11",
7
+ "axios": "1.17.0",
8
+ "axios-retry": "4.4.1",
9
+ "deepmerge-ts": "7.1.0",
10
+ "mime-types": "2.1.35",
11
+ "nanoid": "3.3.8",
12
+ "openai": "4.67.1",
13
+ "replicate": "0.34.1",
14
+ "semver": "7.6.0",
15
+ "zod": "3.25.76",
16
+ "@taskmagic/pieces-common": "0.4.4",
17
+ "@taskmagic/pieces-framework": "0.7.46",
18
+ "@taskmagic/shared": "0.10.171",
19
+ "tslib": "1.14.1"
20
+ },
21
+ "overrides": {
22
+ "cross-spawn": "7.0.6",
23
+ "elliptic": "^6.6.1",
24
+ "fast-xml-parser": "^4.4.1",
25
+ "protobufjs": "^7.5.5",
26
+ "tmp": "^0.2.4",
27
+ "koa": "^2.16.4",
28
+ "picomatch": "^4.0.4",
29
+ "langsmith": "^0.6.0",
30
+ "serialize-javascript": "^6.0.2",
31
+ "elevenlabs": {
32
+ "form-data": "^4.0.4"
33
+ },
34
+ "@tryfabric/martian": {
35
+ "@notionhq/client": "$@notionhq/client"
36
+ },
37
+ "vite": {
38
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
39
+ }
40
+ },
41
+ "resolutions": {
42
+ "rollup": "npm:@rollup/wasm-node@^4.61.1"
43
+ },
44
+ "types": "./src/index.d.ts",
45
+ "main": "./src/index.js",
46
+ "type": "commonjs"
47
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const strale: import("@taskmagic/pieces-framework").Piece<import("@taskmagic/pieces-framework").SecretTextProperty<false>>;
package/src/index.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.strale = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_common_1 = require("@taskmagic/pieces-common");
6
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
7
+ const shared_1 = require("@taskmagic/shared");
8
+ const auth_1 = require("./lib/auth");
9
+ const search_1 = require("./lib/actions/search");
10
+ const execute_1 = require("./lib/actions/execute");
11
+ const balance_1 = require("./lib/actions/balance");
12
+ const trust_profile_1 = require("./lib/actions/trust-profile");
13
+ exports.strale = (0, pieces_framework_1.createPiece)({
14
+ displayName: 'Strale',
15
+ description: 'Trust layer for AI agents. 271 quality-scored API capabilities: company verification across 27 countries, sanctions screening, IBAN/VAT validation, web intelligence, and more. Every result includes a quality score and audit trail.',
16
+ auth: auth_1.straleAuth,
17
+ minimumSupportedRelease: '0.30.0',
18
+ logoUrl: 'https://cdn.activepieces.com/pieces/strale.png',
19
+ authors: ['petterlindstrom79', 'sanket-a11y'],
20
+ categories: [shared_1.PieceCategory.ARTIFICIAL_INTELLIGENCE],
21
+ ai: {
22
+ description: 'Verify and validate business and financial data through Strale trust-scored capabilities: run company verification, sanctions screening, IBAN/VAT validation, and web intelligence lookups by slug, check a capability trust profile before relying on it, and read wallet balance.',
23
+ keywords: [
24
+ 'strale',
25
+ 'company verification',
26
+ 'sanctions check',
27
+ 'iban validation',
28
+ 'vat validation',
29
+ 'compliance',
30
+ 'kyb',
31
+ 'kyc',
32
+ 'web intelligence',
33
+ 'trust score',
34
+ ],
35
+ instructions: 'Use Search Capabilities first to find a capability slug, then pass that slug to Execute Capability to run it. Execute Capability spends wallet balance for paid capabilities and requires an API key; Search and Trust Profile work without a key.',
36
+ },
37
+ actions: [
38
+ search_1.searchCapabilities,
39
+ execute_1.executeCapability,
40
+ balance_1.checkBalance,
41
+ trust_profile_1.trustProfile,
42
+ (0, pieces_common_1.createCustomApiCallAction)({
43
+ baseUrl: () => 'https://api.strale.io',
44
+ auth: auth_1.straleAuth,
45
+ authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
46
+ return ({
47
+ Authorization: `Bearer ${auth}`,
48
+ });
49
+ }),
50
+ }),
51
+ ],
52
+ triggers: [],
53
+ });
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/strale/src/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAqE;AACrE,kEAA0D;AAC1D,8CAAkD;AAClD,qCAAwC;AACxC,iDAA0D;AAC1D,mDAA0D;AAC1D,mDAAqD;AACrD,+DAA2D;AAE9C,QAAA,MAAM,GAAG,IAAA,8BAAW,EAAC;IAChC,WAAW,EAAE,QAAQ;IACrB,WAAW,EACT,wOAAwO;IAC1O,IAAI,EAAE,iBAAU;IAChB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;IAC7C,UAAU,EAAE,CAAC,sBAAa,CAAC,uBAAuB,CAAC;IACnD,EAAE,EAAE;QACF,WAAW,EACT,qRAAqR;QACvR,QAAQ,EAAE;YACR,QAAQ;YACR,sBAAsB;YACtB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,YAAY;YACZ,KAAK;YACL,KAAK;YACL,kBAAkB;YAClB,aAAa;SACd;QACD,YAAY,EACV,oPAAoP;KACvP;IACD,OAAO,EAAE;QACP,2BAAkB;QAClB,2BAAiB;QACjB,sBAAY;QACZ,4BAAY;QACZ,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC,uBAAuB;YACtC,IAAI,EAAE,iBAAU;YAChB,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAAC,OAAA,CAAC;oBAC5B,aAAa,EAAE,UAAU,IAAI,EAAE;iBAChC,CAAC,CAAA;cAAA;SACH,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const checkBalance: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<false>, {}>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkBalance = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ exports.checkBalance = (0, pieces_framework_1.createAction)({
9
+ name: 'check_balance',
10
+ auth: auth_1.straleAuth,
11
+ displayName: 'Check Balance',
12
+ description: 'Returns the current wallet balance in EUR cents and formatted EUR. Use this before executing paid capabilities to verify sufficient funds. Requires an API key.',
13
+ props: {},
14
+ run(context) {
15
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
16
+ const response = yield pieces_common_1.httpClient.sendRequest({
17
+ url: 'https://api.strale.io/v1/wallet/balance',
18
+ method: pieces_common_1.HttpMethod.GET,
19
+ authentication: {
20
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
21
+ token: context.auth,
22
+ },
23
+ });
24
+ const data = response.body;
25
+ return {
26
+ balance_cents: data.balance_cents,
27
+ balance_eur: `EUR ${(data.balance_cents / 100).toFixed(2)}`,
28
+ currency: data.currency,
29
+ };
30
+ });
31
+ },
32
+ });
33
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/strale/src/lib/actions/balance.ts"],"names":[],"mappings":";;;;AAAA,kEAA2D;AAC3D,4DAIkC;AAClC,kCAAqC;AAExB,QAAA,YAAY,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAU;IAChB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,iKAAiK;IACnK,KAAK,EAAE,EAAE;IACH,GAAG,CAAC,OAAO;;YACf,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,GAAG,EAAE,yCAAyC;gBAC9C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,cAAc,EAAE;oBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,OAAO,CAAC,IAAc;iBAC9B;aACF,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAmD,CAAC;YAC1E,OAAO;gBACL,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC3D,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;QACJ,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const executeCapability: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<false>, {
2
+ slug: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ inputs: import("@taskmagic/pieces-framework").JsonProperty<true>;
4
+ max_price_cents: import("@taskmagic/pieces-framework").NumberProperty<false>;
5
+ }>;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeCapability = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ exports.executeCapability = (0, pieces_framework_1.createAction)({
9
+ name: 'execute_capability',
10
+ auth: auth_1.straleAuth,
11
+ displayName: 'Execute Capability',
12
+ description: 'Run any Strale capability by slug. Performs verifications, validations, lookups, and data extraction. Returns structured output with quality score and data provenance. Five free capabilities work without an API key.',
13
+ props: {
14
+ slug: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Capability Slug',
16
+ description: 'The slug of the capability to run (e.g. "iban-validate", "sanctions-check"). Use Search to find slugs.',
17
+ required: true,
18
+ }),
19
+ inputs: pieces_framework_1.Property.Json({
20
+ displayName: 'Input Parameters',
21
+ description: 'Input object matching the capability required fields (e.g. {"iban": "DE89370400440532013000"})',
22
+ required: true,
23
+ defaultValue: {},
24
+ }),
25
+ max_price_cents: pieces_framework_1.Property.Number({
26
+ displayName: 'Max Price (EUR cents)',
27
+ description: 'Maximum price in EUR cents. Default: 200 (2.00 EUR).',
28
+ required: false,
29
+ defaultValue: 200,
30
+ }),
31
+ },
32
+ run(context) {
33
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ const { slug, inputs, max_price_cents } = context.propsValue;
35
+ const response = yield pieces_common_1.httpClient.sendRequest({
36
+ url: 'https://api.strale.io/v1/do',
37
+ method: pieces_common_1.HttpMethod.POST,
38
+ headers: { 'Content-Type': 'application/json' },
39
+ body: {
40
+ capability_slug: slug,
41
+ inputs: typeof inputs === 'string' ? JSON.parse(inputs) : inputs,
42
+ max_price_cents: max_price_cents !== null && max_price_cents !== void 0 ? max_price_cents : 200,
43
+ },
44
+ authentication: {
45
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
46
+ token: context.auth,
47
+ },
48
+ });
49
+ return response.body;
50
+ });
51
+ },
52
+ });
53
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/strale/src/lib/actions/execute.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAIkC;AAClC,kCAAqC;AAExB,QAAA,iBAAiB,GAAG,IAAA,+BAAY,EAAC;IAC5C,IAAI,EAAE,oBAAoB;IAC1B,IAAI,EAAE,iBAAU;IAChB,WAAW,EAAE,oBAAoB;IACjC,WAAW,EACT,yNAAyN;IAC3N,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EACT,wGAAwG;YAC1G,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACpB,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EACT,gGAAgG;YAClG,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,EAAE;SACjB,CAAC;QACF,eAAe,EAAE,2BAAQ,CAAC,MAAM,CAAC;YAC/B,WAAW,EAAE,uBAAuB;YACpC,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,GAAG;SAClB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAE7D,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,GAAG,EAAE,6BAA6B;gBAClC,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE;oBACJ,eAAe,EAAE,IAAI;oBACrB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;oBAChE,eAAe,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,GAAG;iBACxC;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,OAAO,CAAC,IAAc;iBAC9B;aACF,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const searchCapabilities: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<false>, {
2
+ query: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ category: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, false>;
4
+ }>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchCapabilities = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ exports.searchCapabilities = (0, pieces_framework_1.createAction)({
9
+ name: 'search_capabilities',
10
+ auth: auth_1.straleAuth,
11
+ displayName: 'Search Capabilities',
12
+ description: 'Search 271 API capabilities by keyword, category, or natural language query. Returns matching capabilities with slug, description, price, and quality score. No API key required.',
13
+ props: {
14
+ query: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Search Query',
16
+ description: 'Keyword or natural language description (e.g. "validate IBAN", "company data Sweden", "sanctions check")',
17
+ required: true,
18
+ }),
19
+ category: pieces_framework_1.Property.StaticDropdown({
20
+ displayName: 'Category',
21
+ description: 'Filter results by category',
22
+ required: false,
23
+ options: {
24
+ options: [
25
+ { label: 'All Categories', value: '' },
26
+ { label: 'Compliance', value: 'compliance' },
27
+ { label: 'Company Data', value: 'company-data' },
28
+ { label: 'Financial', value: 'financial' },
29
+ { label: 'Validation', value: 'validation' },
30
+ { label: 'Web Intelligence', value: 'web-intelligence' },
31
+ { label: 'Developer Tools', value: 'developer-tools' },
32
+ { label: 'Security', value: 'security' },
33
+ { label: 'Web3', value: 'web3' },
34
+ { label: 'Data Processing', value: 'data-processing' },
35
+ ],
36
+ },
37
+ }),
38
+ },
39
+ run(context) {
40
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
41
+ const { query, category } = context.propsValue;
42
+ const params = new URLSearchParams({ q: query, limit: '10' });
43
+ if (category)
44
+ params.set('category', category);
45
+ const response = yield pieces_common_1.httpClient.sendRequest({
46
+ url: `https://api.strale.io/v1/suggest/typeahead?${params}`,
47
+ method: pieces_common_1.HttpMethod.GET,
48
+ authentication: {
49
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
50
+ token: context.auth,
51
+ },
52
+ });
53
+ return response.body;
54
+ });
55
+ },
56
+ });
57
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/strale/src/lib/actions/search.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAIkC;AAClC,kCAAqC;AAExB,QAAA,kBAAkB,GAAG,IAAA,+BAAY,EAAC;IAC7C,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,iBAAU;IAChB,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACT,mLAAmL;IACrL,KAAK,EAAE;QACL,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,cAAc;YAC3B,WAAW,EACT,0GAA0G;YAC5G,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAChC,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;oBAChD,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC1C,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;oBACxD,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;oBACtD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;oBACxC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;oBAChC,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;iBACvD;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAC/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,IAAI,QAAQ;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,GAAG,EAAE,8CAA8C,MAAM,EAAE;gBAC3D,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,cAAc,EAAE;oBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,OAAO,CAAC,IAAc;iBAC9B;aACF,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const trustProfile: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<false>, {
2
+ slug: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
3
+ type: import("@taskmagic/pieces-framework").StaticDropdownProperty<string, false>;
4
+ }>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trustProfile = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const auth_1 = require("../auth");
8
+ exports.trustProfile = (0, pieces_framework_1.createAction)({
9
+ name: 'trust_profile',
10
+ auth: auth_1.straleAuth,
11
+ displayName: 'Trust Profile',
12
+ description: 'Returns the trust profile for a capability: SQS quality score (0-100), Quality grade (A-F), Reliability grade (A-F), and execution guidance. Use this before relying on a capability for high-stakes decisions. No API key required.',
13
+ props: {
14
+ slug: pieces_framework_1.Property.ShortText({
15
+ displayName: 'Capability Slug',
16
+ description: 'The slug of the capability to check (e.g. "sanctions-check", "iban-validate")',
17
+ required: true,
18
+ }),
19
+ type: pieces_framework_1.Property.StaticDropdown({
20
+ displayName: 'Type',
21
+ description: 'Whether this is a capability or a bundled solution',
22
+ required: false,
23
+ defaultValue: 'capability',
24
+ options: {
25
+ options: [
26
+ { label: 'Capability', value: 'capability' },
27
+ { label: 'Solution', value: 'solution' },
28
+ ],
29
+ },
30
+ }),
31
+ },
32
+ run(context) {
33
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ const { slug, type } = context.propsValue;
35
+ const endpoint = type === 'solution'
36
+ ? `/v1/internal/trust/solutions/${encodeURIComponent(slug)}`
37
+ : `/v1/internal/trust/capabilities/${encodeURIComponent(slug)}`;
38
+ const response = yield pieces_common_1.httpClient.sendRequest({
39
+ url: `https://api.strale.io${endpoint}`,
40
+ method: pieces_common_1.HttpMethod.GET,
41
+ authentication: {
42
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
43
+ token: context.auth,
44
+ },
45
+ });
46
+ return response.body;
47
+ });
48
+ },
49
+ });
50
+ //# sourceMappingURL=trust-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-profile.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/strale/src/lib/actions/trust-profile.ts"],"names":[],"mappings":";;;;AAAA,kEAAqE;AACrE,4DAIkC;AAClC,kCAAqC;AAExB,QAAA,YAAY,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAU;IAChB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,sOAAsO;IACxO,KAAK,EAAE;QACL,IAAI,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EACT,+EAA+E;YACjF,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC5B,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;oBAC5C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;iBACzC;aACF;SACF,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAC1C,MAAM,QAAQ,GACZ,IAAI,KAAK,UAAU;gBACjB,CAAC,CAAC,gCAAgC,kBAAkB,CAAC,IAAI,CAAC,EAAE;gBAC5D,CAAC,CAAC,mCAAmC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,GAAG,EAAE,wBAAwB,QAAQ,EAAE;gBACvC,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,cAAc,EAAE;oBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,OAAO,CAAC,IAAc;iBAC9B;aACF,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const straleAuth: import("@taskmagic/pieces-framework").SecretTextProperty<false>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.straleAuth = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ exports.straleAuth = pieces_framework_1.PieceAuth.SecretText({
8
+ displayName: 'API Key',
9
+ description: 'Your Strale API key (starts with sk_live_). Get one free at https://strale.dev/signup — includes 2.00 EUR trial credits. Some actions (Search, Trust Profile) work without a key.',
10
+ required: false,
11
+ validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
12
+ try {
13
+ yield pieces_common_1.httpClient.sendRequest({
14
+ url: 'https://api.strale.io/v1/wallet/balance',
15
+ method: pieces_common_1.HttpMethod.GET,
16
+ authentication: {
17
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
18
+ token: auth,
19
+ },
20
+ });
21
+ return { valid: true };
22
+ }
23
+ catch (_b) {
24
+ return { valid: false, error: 'Invalid API key.' };
25
+ }
26
+ }),
27
+ });
28
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../packages/pieces/community/strale/src/lib/auth.ts"],"names":[],"mappings":";;;;AAAA,kEAAwD;AACxD,4DAIkC;AAErB,QAAA,UAAU,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC7C,WAAW,EAAE,SAAS;IACtB,WAAW,EACT,mLAAmL;IACrL,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC3B,GAAG,EAAE,yCAAyC;gBAC9C,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,cAAc,EAAE;oBACd,IAAI,EAAE,kCAAkB,CAAC,YAAY;oBACrC,KAAK,EAAE,IAAc;iBACtB;aACF,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACrD,CAAC;IACH,CAAC,CAAA;CACF,CAAC,CAAC"}