@datalayer/agent-runtimes 1.5.86 → 1.5.87
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-embed/chunks/{DeckComponent-D4X-rpbh.js → DeckComponent-etBrFG87.js} +1 -1
- package/dist-embed/chunks/{DocumentView-Aird-zRf.js → DocumentView-LE7AJ2BO.js} +1 -1
- package/dist-embed/chunks/{EphemeralDocument-qnhIdhNh.js → EphemeralDocument-YiGgJGkL.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawComponent-C33gsDzG.js → ExcalidrawComponent-C5J8Uqqj.js} +1 -1
- package/dist-embed/chunks/{ExcalidrawModal-DHCo94OE.js → ExcalidrawModal-D3cbhMgF.js} +1 -1
- package/dist-embed/chunks/{JupyterLexicalExtension-Cb2zt9Ki.js → JupyterLexicalExtension-BipHQ8U3.js} +7 -7
- package/dist-embed/chunks/{YouTubePlugin-C0a_9VKl.js → YouTubePlugin-BewlFg9c.js} +1 -1
- package/dist-embed/chunks/{ar-SA-G6X2FPQ2-DS3Xmdel.js → ar-SA-G6X2FPQ2-BgdfqrVp.js} +1 -1
- package/dist-embed/chunks/{az-AZ-76LH7QW2-DIApsK5M.js → az-AZ-76LH7QW2-xUMz4Jqu.js} +1 -1
- package/dist-embed/chunks/{bg-BG-XCXSNQG7-X-aS4Onm.js → bg-BG-XCXSNQG7-UR5Ld32v.js} +1 -1
- package/dist-embed/chunks/{bn-BD-2XOGV67Q-1YCe_Jnl.js → bn-BD-2XOGV67Q-CCNH7olK.js} +1 -1
- package/dist-embed/chunks/{ca-ES-6MX7JW3Y-D26sHSba.js → ca-ES-6MX7JW3Y-DaZb-gMN.js} +1 -1
- package/dist-embed/chunks/{cs-CZ-2BRQDIVT-B5pRYPPF.js → cs-CZ-2BRQDIVT-OaROtN46.js} +1 -1
- package/dist-embed/chunks/{da-DK-5WZEPLOC-BfajxBtH.js → da-DK-5WZEPLOC-DrcoMVce.js} +1 -1
- package/dist-embed/chunks/{de-DE-XR44H4JA-BovBXD5H.js → de-DE-XR44H4JA-b2_lYxS1.js} +1 -1
- package/dist-embed/chunks/{el-GR-BZB4AONW-rLXnfS2l.js → el-GR-BZB4AONW-BOT3RaFd.js} +1 -1
- package/dist-embed/chunks/{es-ES-U4NZUMDT-Do4MvuPW.js → es-ES-U4NZUMDT-BVlxd_yM.js} +1 -1
- package/dist-embed/chunks/{eu-ES-A7QVB2H4-CldbgpdZ.js → eu-ES-A7QVB2H4-BScAWOoO.js} +1 -1
- package/dist-embed/chunks/{fa-IR-HGAKTJCU-C988cp8F.js → fa-IR-HGAKTJCU-Kxnh8bHZ.js} +1 -1
- package/dist-embed/chunks/{fi-FI-Z5N7JZ37-BYmFVIh7.js → fi-FI-Z5N7JZ37-BOmDZi5v.js} +1 -1
- package/dist-embed/chunks/{fr-FR-RHASNOE6-D2Tarz3u.js → fr-FR-RHASNOE6-GOPhqKT4.js} +1 -1
- package/dist-embed/chunks/{gl-ES-HMX3MZ6V-BLuuMSHB.js → gl-ES-HMX3MZ6V-BRZS4fho.js} +1 -1
- package/dist-embed/chunks/{he-IL-6SHJWFNN-CyDIOeVd.js → he-IL-6SHJWFNN-MQEVUj2T.js} +1 -1
- package/dist-embed/chunks/{hi-IN-IWLTKZ5I-DKCduSTz.js → hi-IN-IWLTKZ5I-D_puNbt2.js} +1 -1
- package/dist-embed/chunks/{hu-HU-A5ZG7DT2-CFEUsNFV.js → hu-HU-A5ZG7DT2-VTn7BLHk.js} +1 -1
- package/dist-embed/chunks/{id-ID-SAP4L64H-DJgKxRp8.js → id-ID-SAP4L64H-DDpkcMxl.js} +1 -1
- package/dist-embed/chunks/{index-CaAB7eph.js → index-BnyTIBRs.js} +1 -1
- package/dist-embed/chunks/{index-BvYhxJ42.js → index-D4E_ai6G.js} +1 -1
- package/dist-embed/chunks/{it-IT-JPQ66NNP-CB1iVsAn.js → it-IT-JPQ66NNP-Dmm1oVBi.js} +1 -1
- package/dist-embed/chunks/{ja-JP-DBVTYXUO-BMEokiIe.js → ja-JP-DBVTYXUO-c8yMMjUO.js} +1 -1
- package/dist-embed/chunks/{kaa-6HZHGXH3-NDSx8vED.js → kaa-6HZHGXH3-Cr7KlyI3.js} +1 -1
- package/dist-embed/chunks/{kab-KAB-ZGHBKWFO-CDD0AUe8.js → kab-KAB-ZGHBKWFO-C5lvSze2.js} +1 -1
- package/dist-embed/chunks/{kk-KZ-P5N5QNE5-DiW940Xv.js → kk-KZ-P5N5QNE5-BWzl0srY.js} +1 -1
- package/dist-embed/chunks/{km-KH-HSX4SM5Z-D1yNJSuC.js → km-KH-HSX4SM5Z-D0hsReza.js} +1 -1
- package/dist-embed/chunks/{ko-KR-MTYHY66A-gxN7WKqI.js → ko-KR-MTYHY66A-BG6oRC2d.js} +1 -1
- package/dist-embed/chunks/{ku-TR-6OUDTVRD-AGx6lASh.js → ku-TR-6OUDTVRD-BcZeKYN4.js} +1 -1
- package/dist-embed/chunks/{lt-LT-XHIRWOB4-7aG3WRZ7.js → lt-LT-XHIRWOB4-CDMAwSRa.js} +1 -1
- package/dist-embed/chunks/{lv-LV-5QDEKY6T-kYU1Z9N2.js → lv-LV-5QDEKY6T-D2MZFbM-.js} +1 -1
- package/dist-embed/chunks/{mr-IN-CRQNXWMA-E1I_f_B2.js → mr-IN-CRQNXWMA-C4tnFlhM.js} +1 -1
- package/dist-embed/chunks/{my-MM-5M5IBNSE-BLvme-se.js → my-MM-5M5IBNSE-BeA-YSi-.js} +1 -1
- package/dist-embed/chunks/{nb-NO-T6EIAALU-CQe3vLx-.js → nb-NO-T6EIAALU-PoKJfg4d.js} +1 -1
- package/dist-embed/chunks/{nl-NL-IS3SIHDZ-DQ5lObK-.js → nl-NL-IS3SIHDZ-Cf4_wadm.js} +1 -1
- package/dist-embed/chunks/{nn-NO-6E72VCQL-JwOO_c6b.js → nn-NO-6E72VCQL-xgmyjeCA.js} +1 -1
- package/dist-embed/chunks/{oc-FR-POXYY2M6-OYZJk3Hj.js → oc-FR-POXYY2M6-CdWNnVCw.js} +1 -1
- package/dist-embed/chunks/{pa-IN-N4M65BXN-B7p6nOzS.js → pa-IN-N4M65BXN-QYWCqzud.js} +1 -1
- package/dist-embed/chunks/{percentages-BXMCSKIN-Cz9igCrb.js → percentages-BXMCSKIN-azlLrVPY.js} +3 -3
- package/dist-embed/chunks/{pl-PL-T2D74RX3-DiIfEp3O.js → pl-PL-T2D74RX3-CR9S6Ibc.js} +1 -1
- package/dist-embed/chunks/{pt-BR-5N22H2LF-7rqxomNz.js → pt-BR-5N22H2LF-BdXbK3ya.js} +1 -1
- package/dist-embed/chunks/{pt-PT-UZXXM6DQ-DE-uZxHk.js → pt-PT-UZXXM6DQ-2XA1j-L3.js} +1 -1
- package/dist-embed/chunks/{ro-RO-JPDTUUEW-BlMk-egr.js → ro-RO-JPDTUUEW-BtXn8ZEx.js} +1 -1
- package/dist-embed/chunks/{ru-RU-B4JR7IUQ-caVTslk_.js → ru-RU-B4JR7IUQ-CQX4iIyB.js} +1 -1
- package/dist-embed/chunks/{si-LK-N5RQ5JYF-DT4Sk0wC.js → si-LK-N5RQ5JYF-HKjZkrpb.js} +1 -1
- package/dist-embed/chunks/{sk-SK-C5VTKIMK-DS8_VUwQ.js → sk-SK-C5VTKIMK-D0qjylR3.js} +1 -1
- package/dist-embed/chunks/{sl-SI-NN7IZMDC-Dm37QL2T.js → sl-SI-NN7IZMDC-vxztaOUj.js} +1 -1
- package/dist-embed/chunks/{subset-shared.chunk-ByorZVMF.js → subset-shared.chunk-DEWjD_XG.js} +1 -1
- package/dist-embed/chunks/{subset-worker.chunk-CDbohCL0.js → subset-worker.chunk-DWTibNnY.js} +1 -1
- package/dist-embed/chunks/{sv-SE-XGPEYMSR-Ds2_OJfr.js → sv-SE-XGPEYMSR-N-SacX3h.js} +1 -1
- package/dist-embed/chunks/{ta-IN-2NMHFXQM-DalALtL3.js → ta-IN-2NMHFXQM-9GMEN3M3.js} +1 -1
- package/dist-embed/chunks/{th-TH-HPSO5L25-Db3wq-Mt.js → th-TH-HPSO5L25-CeESdLid.js} +1 -1
- package/dist-embed/chunks/{tr-TR-DEFEU3FU-BwZ2BWFh.js → tr-TR-DEFEU3FU-BjBigRhJ.js} +1 -1
- package/dist-embed/chunks/transformers.web-Br6X7w0a.js +42 -0
- package/dist-embed/chunks/{uk-UA-QMV73CPH-CvvKxEh4.js → uk-UA-QMV73CPH-v4nMobEN.js} +1 -1
- package/dist-embed/chunks/{vi-VN-M7AON7JQ-CWecJG5X.js → vi-VN-M7AON7JQ-D5thvMrO.js} +1 -1
- package/dist-embed/chunks/{zh-CN-LNUGB5OW-Bt8FQMA4.js → zh-CN-LNUGB5OW-Cn3ae1JT.js} +1 -1
- package/dist-embed/chunks/{zh-HK-E62DVLB3-D-aO7Cxy.js → zh-HK-E62DVLB3-OlNuka00.js} +1 -1
- package/dist-embed/chunks/{zh-TW-RAJ6MFWO-DhGr0I8R.js → zh-TW-RAJ6MFWO-DAwaB-Vu.js} +1 -1
- package/dist-embed/datalayer-app-main.js +6 -6
- package/lib/components/cards/ToolApprovalCard.js +5 -2
- package/lib/runtimes/variants.d.ts +10 -8
- package/lib/runtimes/variants.js +14 -9
- package/lib/specs/harnesses.js +11 -3
- package/lib/types/agentspecs.d.ts +2 -0
- package/package.json +1 -1
- package/scripts/codegen/generate_harnesses.py +2 -0
- package/dist-embed/chunks/transformers.web-CLaqP_Vm.js +0 -42
|
@@ -5,7 +5,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
5
5
|
*/
|
|
6
6
|
import { useState } from 'react';
|
|
7
7
|
import { Button, Label, Text } from '@primer/react';
|
|
8
|
-
import { Box } from '@datalayer/primer-addons';
|
|
8
|
+
import { Box, Card } from '@datalayer/primer-addons';
|
|
9
9
|
import { CheckCircleIcon, ChevronDownIcon, EyeClosedIcon, EyeIcon, TrashIcon, XCircleIcon, } from '@primer/octicons-react';
|
|
10
10
|
import { formatRelativeTime } from '@datalayer/core/lib/utils/index.js';
|
|
11
11
|
export const TOOL_APPROVAL_STATUS_CONFIG = {
|
|
@@ -43,7 +43,10 @@ export function ToolApprovalCard({ approval, onApprove, onReject, onToggleRead,
|
|
|
43
43
|
: approval.status === 'pending'
|
|
44
44
|
? ', review pending'
|
|
45
45
|
: `, ${statusDescriptor}`;
|
|
46
|
-
return (
|
|
46
|
+
return (
|
|
47
|
+
// primer-addons' Card, as the other pages' rows: an unread request is the
|
|
48
|
+
// selected one (an accent border on an accent wash).
|
|
49
|
+
_jsx(Card, { border: true, shadow: "none", display: "block", p: 3, selected: !isRead, children: _jsxs(Box, { display: "flex", justifyContent: "space-between", alignItems: "flex-start", gap: 3, children: [_jsxs(Box, { flex: 1, minWidth: 0, children: [_jsxs(Box, { display: "flex", alignItems: "center", gap: 2, mb: 1, flexWrap: "wrap", children: [_jsx(Text, { sx: { fontWeight: 'bold', fontSize: 2 }, children: approval.toolName }), _jsx(Label, { variant: statusConfig.variant, children: statusConfig.label }), _jsx(Label, { variant: riskConfig.variant, children: riskConfig.label }), !isRead && _jsx(Label, { variant: "accent", children: "Unread" })] }), _jsxs(Text, { sx: { color: 'fg.muted', fontSize: 0, display: 'block' }, children: ["Requested by ", approval.requestedBy, ' ', formatRelativeTime(approval.requestedAt), reviewSummary] }), _jsx(Box, { mt: 2, width: "100%", p: 2, borderRadius: 2, border: "1px solid", borderColor: "border.muted", bg: "canvas.subtle", children: _jsxs("details", { open: isDetailsExpanded, children: [_jsx("summary", { onClick: e => {
|
|
47
50
|
e.preventDefault();
|
|
48
51
|
setIsDetailsExpanded(prev => !prev);
|
|
49
52
|
}, style: {
|
|
@@ -36,14 +36,16 @@ export declare const CUSTOM_HARNESS = "custom";
|
|
|
36
36
|
* Why no variant runs an agent on this harness, in a sentence, or undefined
|
|
37
37
|
* when one does.
|
|
38
38
|
*
|
|
39
|
-
* A harness
|
|
40
|
-
* Code, Codex, Gemini CLI
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
39
|
+
* A harness the catalogue offers (`agentspecs/harnesses`, SH-01) — Claude
|
|
40
|
+
* Code, Codex, OpenCode, Gemini CLI — is served by the Datalayer runtime
|
|
41
|
+
* through its ACP adapter (`ACPAgent`, SH-10): the runtime launches the
|
|
42
|
+
* harness as its subprocess, so the runtime's locations run it and the
|
|
43
|
+
* browser, which has no process to launch, does not. Three are refused:
|
|
44
|
+
* `custom`, which names no command in the shared catalogue (an
|
|
45
|
+
* organization's own harness spec names it), a harness the catalogue
|
|
46
|
+
* describes and does not offer (its `unavailable_because` is the sentence),
|
|
47
|
+
* and a harness neither built in nor of the catalogue. Nothing runs such an
|
|
48
|
+
* agent in its place.
|
|
47
49
|
*/
|
|
48
50
|
export declare function unservedHarnessProblem(spec: Pick<Agentspec, 'id' | 'harness'>): string | undefined;
|
|
49
51
|
/**
|
package/lib/runtimes/variants.js
CHANGED
|
@@ -72,14 +72,16 @@ export const CUSTOM_HARNESS = 'custom';
|
|
|
72
72
|
* Why no variant runs an agent on this harness, in a sentence, or undefined
|
|
73
73
|
* when one does.
|
|
74
74
|
*
|
|
75
|
-
* A harness
|
|
76
|
-
* Code, Codex, Gemini CLI
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
75
|
+
* A harness the catalogue offers (`agentspecs/harnesses`, SH-01) — Claude
|
|
76
|
+
* Code, Codex, OpenCode, Gemini CLI — is served by the Datalayer runtime
|
|
77
|
+
* through its ACP adapter (`ACPAgent`, SH-10): the runtime launches the
|
|
78
|
+
* harness as its subprocess, so the runtime's locations run it and the
|
|
79
|
+
* browser, which has no process to launch, does not. Three are refused:
|
|
80
|
+
* `custom`, which names no command in the shared catalogue (an
|
|
81
|
+
* organization's own harness spec names it), a harness the catalogue
|
|
82
|
+
* describes and does not offer (its `unavailable_because` is the sentence),
|
|
83
|
+
* and a harness neither built in nor of the catalogue. Nothing runs such an
|
|
84
|
+
* agent in its place.
|
|
83
85
|
*/
|
|
84
86
|
export function unservedHarnessProblem(spec) {
|
|
85
87
|
const harness = spec.harness ?? '';
|
|
@@ -93,6 +95,9 @@ export function unservedHarnessProblem(spec) {
|
|
|
93
95
|
if (harness === CUSTOM_HARNESS) {
|
|
94
96
|
return `The agent “${spec.id}” runs on the harness “custom”, which names no command: an organization's own harness spec names it, and is never typed into a form.`;
|
|
95
97
|
}
|
|
98
|
+
if (!catalogued.enabled) {
|
|
99
|
+
return `The agent “${spec.id}” runs on the harness “${harness}” (${catalogued.name}), which is not offered: ${catalogued.unavailable_because}`;
|
|
100
|
+
}
|
|
96
101
|
return undefined;
|
|
97
102
|
}
|
|
98
103
|
/**
|
|
@@ -102,7 +107,7 @@ export function unservedHarnessProblem(spec) {
|
|
|
102
107
|
export function isServedCatalogueHarness(harness) {
|
|
103
108
|
return (harness !== CUSTOM_HARNESS &&
|
|
104
109
|
!(harness in HARNESS_BY_SPEC_HARNESS) &&
|
|
105
|
-
getHarness(harness)
|
|
110
|
+
getHarness(harness)?.enabled === true);
|
|
106
111
|
}
|
|
107
112
|
const VARIANT_BY_LEGACY_TARGET = {
|
|
108
113
|
'backend-services': 'cloud-pydanticai',
|
package/lib/specs/harnesses.js
CHANGED
|
@@ -8,6 +8,7 @@ export const CLAUDE_CODE_HARNESS_0_0_1 = {
|
|
|
8
8
|
name: 'Claude Code',
|
|
9
9
|
description: "Anthropic's coding agent, driven over ACP through the Agent Client Protocol project's adapter on the Claude Agent SDK.",
|
|
10
10
|
enabled: true,
|
|
11
|
+
unavailable_because: '',
|
|
11
12
|
tags: ['harness'],
|
|
12
13
|
docs: 'https://github.com/agentclientprotocol/claude-agent-acp',
|
|
13
14
|
acp: {
|
|
@@ -72,6 +73,7 @@ export const CODEX_HARNESS_0_0_1 = {
|
|
|
72
73
|
name: 'Codex',
|
|
73
74
|
description: "OpenAI's coding agent, driven over ACP through the Agent Client Protocol project's adapter, which ships the Codex binary it drives.",
|
|
74
75
|
enabled: true,
|
|
76
|
+
unavailable_because: '',
|
|
75
77
|
tags: ['harness'],
|
|
76
78
|
docs: 'https://github.com/agentclientprotocol/codex-acp',
|
|
77
79
|
acp: {
|
|
@@ -127,6 +129,7 @@ export const CUSTOM_HARNESS_0_0_1 = {
|
|
|
127
129
|
name: 'Custom harness',
|
|
128
130
|
description: "An organization's own ACP agent, its command named by the organization's own harness spec and never typed into a form.",
|
|
129
131
|
enabled: false,
|
|
132
|
+
unavailable_because: '',
|
|
130
133
|
tags: ['harness'],
|
|
131
134
|
docs: '',
|
|
132
135
|
requires: {
|
|
@@ -171,7 +174,8 @@ export const FAST_AGENT_HARNESS_0_0_1 = {
|
|
|
171
174
|
version: '0.0.1',
|
|
172
175
|
name: 'fast-agent',
|
|
173
176
|
description: "llmindset's agent framework served over ACP; each agent it defines is a session mode, with any model provider it is configured with.",
|
|
174
|
-
enabled:
|
|
177
|
+
enabled: false,
|
|
178
|
+
unavailable_because: 'the catalogue offers four harnesses today — Claude Code, Codex, OpenCode and Gemini CLI (28 October 2026); fast-agent is a framework served over ACP, not a coding agent, its adapter is a Python tool the runtime image does not carry, and it has not been drilled on Datalayer.',
|
|
175
179
|
tags: ['harness', 'framework'],
|
|
176
180
|
docs: 'https://github.com/evalstate/fast-agent/blob/main/docs/docs/acp/index.md',
|
|
177
181
|
acp: {
|
|
@@ -227,6 +231,7 @@ export const GEMINI_CLI_HARNESS_0_0_1 = {
|
|
|
227
231
|
name: 'Gemini CLI',
|
|
228
232
|
description: "Google's coding agent, which speaks ACP itself when started with --experimental-acp.",
|
|
229
233
|
enabled: true,
|
|
234
|
+
unavailable_because: '',
|
|
230
235
|
tags: ['harness'],
|
|
231
236
|
docs: 'https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/cli-reference.md',
|
|
232
237
|
acp: {
|
|
@@ -282,7 +287,8 @@ export const GOOSE_HARNESS_0_0_1 = {
|
|
|
282
287
|
version: '0.0.1',
|
|
283
288
|
name: 'goose',
|
|
284
289
|
description: "Block's open agent (now the Agentic AI Foundation's), which speaks ACP itself with goose acp; any model provider it is configured with.",
|
|
285
|
-
enabled:
|
|
290
|
+
enabled: false,
|
|
291
|
+
unavailable_because: 'the catalogue offers four harnesses today — Claude Code, Codex, OpenCode and Gemini CLI (28 October 2026); goose is a binary of its own release, not an npm adapter, the runtime image does not carry it, and it has not been drilled on Datalayer.',
|
|
286
292
|
tags: ['harness'],
|
|
287
293
|
docs: 'https://block.github.io/goose/docs/gdk/acp/',
|
|
288
294
|
acp: {
|
|
@@ -338,6 +344,7 @@ export const OPENCODE_HARNESS_0_0_1 = {
|
|
|
338
344
|
name: 'OpenCode',
|
|
339
345
|
description: "Anomaly's open coding agent, which speaks ACP itself with opencode acp; any model provider it is configured with.",
|
|
340
346
|
enabled: true,
|
|
347
|
+
unavailable_because: '',
|
|
341
348
|
tags: ['harness'],
|
|
342
349
|
docs: 'https://opencode.ai/docs/acp/',
|
|
343
350
|
acp: {
|
|
@@ -392,7 +399,8 @@ export const OPENHANDS_HARNESS_0_0_1 = {
|
|
|
392
399
|
version: '0.0.1',
|
|
393
400
|
name: 'OpenHands',
|
|
394
401
|
description: 'The OpenHands CLI, which speaks ACP itself with openhands acp; any model provider it is configured with.',
|
|
395
|
-
enabled:
|
|
402
|
+
enabled: false,
|
|
403
|
+
unavailable_because: "the catalogue offers four harnesses today — Claude Code, Codex, OpenCode and Gemini CLI (28 October 2026); OpenHands' adapter is a Python tool the runtime image does not carry, and it has not been drilled on Datalayer.",
|
|
396
404
|
tags: ['harness'],
|
|
397
405
|
docs: 'https://docs.openhands.dev/openhands/usage/run-openhands/acp',
|
|
398
406
|
acp: {
|
|
@@ -409,6 +409,8 @@ export interface HarnessSpec {
|
|
|
409
409
|
description: string;
|
|
410
410
|
/** Whether the shared catalogue offers it: `custom` is not. */
|
|
411
411
|
enabled: boolean;
|
|
412
|
+
/** Why it is not offered today, in a sentence said wherever it is named; set when `enabled` is false, and only then. */
|
|
413
|
+
unavailable_because: string;
|
|
412
414
|
tags: string[];
|
|
413
415
|
/** Where its ACP use is documented. */
|
|
414
416
|
docs: string;
|
package/package.json
CHANGED
|
@@ -184,6 +184,7 @@ def generate_python_code(specs: list[dict[str, Any]]) -> str:
|
|
|
184
184
|
f" name={_s(spec['name'])},",
|
|
185
185
|
f" description={_s(spec.get('description'))},",
|
|
186
186
|
f" enabled={bool(spec.get('enabled', True))},",
|
|
187
|
+
f" unavailable_because={_s(spec.get('unavailable_because'))},",
|
|
187
188
|
f" tags={json.dumps(list(spec.get('tags') or []))},",
|
|
188
189
|
f" docs={_s(spec.get('docs'))},",
|
|
189
190
|
]
|
|
@@ -316,6 +317,7 @@ def generate_typescript_code(
|
|
|
316
317
|
f" name: {_t(spec['name'])},",
|
|
317
318
|
f" description: {_t(spec.get('description'))},",
|
|
318
319
|
f" enabled: {json.dumps(bool(spec.get('enabled', True)))},",
|
|
320
|
+
f" unavailable_because: {_t(spec.get('unavailable_because'))},",
|
|
319
321
|
f" tags: {json.dumps(list(spec.get('tags') or []))},",
|
|
320
322
|
f" docs: {_t(spec.get('docs'))},",
|
|
321
323
|
]
|